您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
【2025】破解百度网盘下载限制,百度文库下载限制,完全免费下载。联系作者/用户QQ群: 882776749
// ==UserScript== // @name 破解百度网盘/百度文库下载限制 // @namespace tools // @version 2.1.0 // @author 大角牛软件科技 // @description 【2025】破解百度网盘下载限制,百度文库下载限制,完全免费下载。联系作者/用户QQ群: 882776749 // @license AGPL v3 // @icon https://u2233.vip/favicon.ico // @match *://pan.baidu.com/* // @match *://www.sse.com.cn/assortment/options/date* // @match *://www.zhipin.com/* // @match *://wenku.baidu.com/* // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.prod.js // @require data:application/javascript,%3Bwindow.Vue%20%3D%20Vue%3B // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/index.full.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js // @require data:application/javascript,%3Bwindow.echarts%20%3D%20echarts%3B // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/system.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/extras/named-register.min.js // @require data:application/javascript,%3B(typeof%20System!%3D'undefined')%26%26(System%3Dnew%20System.constructor())%3B // @resource ElementPlus https://cdn.jsdelivr.net/npm/[email protected]/dist/index.css // @connect dl-test.infiniteworlds.com.cn // @connect wan.baidu.com // @connect localhost // @connect u2233.vip // @grant GM_addStyle // @grant GM_deleteValue // @grant GM_getResourceText // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant unsafeWindow // @noframes // ==/UserScript== (t=>{if(typeof GM_addStyle=="function"){GM_addStyle(t);return}const a=document.createElement("style");a.textContent=t,document.head.append(a)})(' #cd-nav[data-v-9c557335]{position:fixed;bottom:10%;right:10%;z-index:999999999999999}ul[data-v-9c557335],li[data-v-9c557335]{list-style:none;-webkit-user-select:none;user-select:none}.btnBox[data-v-9c557335]{display:flex!important;gap:10px 0;flex-direction:row-reverse}#cd-nav ul[data-v-9c557335]{width:90%;width:400px;position:absolute;margin:0;padding:0;right:0;bottom:0;border-radius:.25em;box-shadow:#959da533 0 8px 24px;background:#fff;visibility:hidden;overflow:hidden;z-index:1;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%;-webkit-transition:-webkit-transform .3s,visibility 0s .3s;-moz-transition:-moz-transform .3s,visibility 0s .3s;transition:transform .3s,visibility 0s .3s}#cd-nav ul li[data-v-9c557335]{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex}#cd-nav ul.is-visible[data-v-9c557335]{visibility:visible;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1);-webkit-transition:-webkit-transform .3s,visibility 0s 0s;-moz-transition:-moz-transform .3s,visibility 0s 0s;transition:transform .3s,visibility 0s 0s}#cd-nav ul.is-visible li[data-v-9c557335]:nth-child(1){-webkit-animation:cd-slide-in-9c557335 .2s;-moz-animation:cd-slide-in-9c557335 .2s;animation:cd-slide-in-9c557335 .2s}#cd-nav ul.is-visible li[data-v-9c557335]:nth-child(2){-webkit-animation:cd-slide-in-9c557335 .3s;-moz-animation:cd-slide-in-9c557335 .3s;animation:cd-slide-in-9c557335 .3s}#cd-nav ul.is-visible li[data-v-9c557335]:nth-child(3){-webkit-animation:cd-slide-in-9c557335 .4s;-moz-animation:cd-slide-in-9c557335 .4s;animation:cd-slide-in-9c557335 .4s}#cd-nav ul.is-visible li[data-v-9c557335]:nth-child(4){-webkit-animation:cd-slide-in-9c557335 .5s;-moz-animation:cd-slide-in-9c557335 .5s;animation:cd-slide-in-9c557335 .5s}#cd-nav ul.is-visible li[data-v-9c557335]:nth-child(5){-webkit-animation:cd-slide-in-9c557335 .6s;-moz-animation:cd-slide-in-9c557335 .6s;animation:cd-slide-in-9c557335 .6s}#cd-nav li>div[data-v-9c557335]{display:block;padding:20px;border-bottom:1px solid #eff2f6;cursor:pointer;box-sizing:border-box;font-size:14px}#cd-nav li>div[data-v-9c557335]:first-child{flex:0 0 250px}#cd-nav li>div[data-v-9c557335]:last-child{flex:1}#cd-nav li:last-child div[data-v-9c557335]{border-bottom:none}.cd-nav-trigger[data-v-9c557335]{position:absolute;bottom:0;right:0;width:44px;height:44px;background:#f56c6c;border-radius:.25em;box-shadow:#959da533 0 8px 24px;overflow:hidden;text-indent:100%;white-space:nowrap;z-index:2;cursor:pointer}.cd-nav-trigger span[data-v-9c557335]{position:absolute;display:block;width:20px;height:2px;background:#fff;top:50%;margin-top:-1px;left:50%;margin-left:-10px;-webkit-transition:background .3s;-moz-transition:background .3s;transition:background .3s}.cd-nav-trigger span[data-v-9c557335]:before,.cd-nav-trigger span[data-v-9c557335]:after{content:"";position:absolute;left:0;background:inherit;width:100%;height:100%;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .3s,background 0s;-moz-transition:-moz-transform .3s,background 0s;transition:transform .3s,background 0s}.cd-nav-trigger span[data-v-9c557335]:before{top:-6px;-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}.cd-nav-trigger span[data-v-9c557335]:after{bottom:-6px;-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}.cd-nav-trigger.menu-is-open[data-v-9c557335]{box-shadow:none}.cd-nav-trigger.menu-is-open span[data-v-9c557335]{background:#e84a6400}.cd-nav-trigger.menu-is-open span[data-v-9c557335]:before,.cd-nav-trigger.menu-is-open span[data-v-9c557335]:after{background:#fff}.cd-nav-trigger.menu-is-open span[data-v-9c557335]:before{top:0;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}.cd-nav-trigger.menu-is-open span[data-v-9c557335]:after{bottom:0;-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}@-webkit-keyframes cd-slide-in-9c557335{0%{-webkit-transform:translateX(100px)}to{-webkit-transform:translateY(0)}}@-moz-keyframes cd-slide-in-9c557335{0%{-moz-transform:translateX(100px)}to{-moz-transform:translateY(0)}}@keyframes cd-slide-in-9c557335{0%{-webkit-transform:translateX(100px);-moz-transform:translateX(100px);-ms-transform:translateX(100px);-o-transform:translateX(100px);transform:translate(100px)}to{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}}.el-drawer__header{margin-bottom:0!important}body{font-size:14px!important}a{text-decoration:none!important}:where(*,*:before,*:after){box-sizing:border-box}:where(html){-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;line-height:1.15}:where(body){margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:where(img,picture,video,canvas,svg,iframe,embed,object){display:block}:where(img,svg){height:auto}:where(iframe){border:0}:where(input,button,textarea,select){font:inherit;color:inherit}:where(button,[type=button],[type=reset],[type=submit]){-webkit-appearance:button}:where(textarea){resize:vertical}:where(fieldset){min-width:0;margin:0;padding:.35em .75em .625em;border:1px solid #a9a9a9}:where(legend){padding:0}:where(progress){vertical-align:baseline}:where(ol,ul){list-style:none;margin:0;padding:0}:where(blockquote,q){quotes:none}:where(blockquote:before,blockquote:after,q:before,q:after){content:"";content:none}:where(table){border-collapse:collapse;border-spacing:0}:where(th,td){padding:0;text-align:left}:where(main,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section){display:block}:where(summary){display:list-item}:where(template,[hidden]){display:none}:where(:focus-visible){outline:2px solid Highlight;outline-offset:2px}:where(:focus:not(:focus-visible)){outline:0}:where(html){color-scheme:light dark}:where(html){scrollbar-width:thin;scrollbar-color:#888 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-track{background:transparent}:where(iframe){width:100%;height:auto}.content[data-v-f8630f3e]{flex:1;box-sizing:border-box;background-color:#fff}.header[data-v-f8630f3e]{text-align:center;margin-bottom:10px;padding:20px;background:linear-gradient(120deg,#a1c4fd,#c2e9fb);box-shadow:0 4px 6px #0000001a}.header h1[data-v-f8630f3e]{margin:0;color:#2c3e50;font-size:28px}.header p[data-v-f8630f3e]{margin:10px 0 0;color:#7f8c8d;font-size:16px}.task-list[data-v-f8630f3e]{display:grid;padding:10px;box-sizing:border-box;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:14px;margin-top:20px}.task-card[data-v-f8630f3e]{background:#fff;border-radius:12px;box-shadow:0 4px 15px #0000001a;padding:14px;transition:all .3s ease;border-left:5px solid #3498db}.task-card[data-v-f8630f3e]:hover{transform:translateY(-5px);box-shadow:0 8px 25px #00000026}.task-card.processing[data-v-f8630f3e]{border-left-color:#f39c12}.task-card.completed[data-v-f8630f3e]{border-left-color:#27ae60}.task-card.error[data-v-f8630f3e]{border-left-color:#e74c3c}.task-title[data-v-f8630f3e]{font-size:16px;font-weight:600;margin:0 0 10px;color:#2c3e50;display:flex;justify-content:space-between;align-items:center}.task-module[data-v-f8630f3e]{background-color:#ecf0f1;color:#7f8c8d;padding:3px 8px;border-radius:12px;font-size:12px;font-weight:400}.task-info[data-v-f8630f3e]{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:15px 0}.info-item[data-v-f8630f3e]{font-size:14px}.info-label[data-v-f8630f3e]{color:#7f8c8d;font-weight:500}.info-value[data-v-f8630f3e]{color:#2c3e50;font-weight:600;margin-top:8px;word-break:break-all}.task-status[data-v-f8630f3e]{padding:8px 12px;border-radius:20px;font-size:13px;font-weight:500;text-align:center;margin-top:10px}.status-pending[data-v-f8630f3e]{background-color:#f8f9fa;color:#6c757d}.status-processing[data-v-f8630f3e]{background-color:#fff3cd;color:#856404}.status-completed[data-v-f8630f3e]{background-color:#d4edda;color:#155724}.status-error[data-v-f8630f3e]{background-color:#f8d7da;color:#721c24}.progress-bar[data-v-f8630f3e]{height:8px;background-color:#ecf0f1;border-radius:4px;margin:15px 0;overflow:hidden}.progress-fill[data-v-f8630f3e]{height:100%;background:linear-gradient(90deg,#3498db,#2ecc71);border-radius:4px;transition:width .3s ease}.loading[data-v-f8630f3e]{text-align:center;padding:40px;color:#7f8c8d}.loading-spinner[data-v-f8630f3e]{border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;width:40px;height:40px;animation:spin-f8630f3e 1s linear infinite;margin:0 auto 20px}@keyframes spin-f8630f3e{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state[data-v-f8630f3e]{text-align:center;padding:60px 20px;color:#7f8c8d}.empty-state i[data-v-f8630f3e]{font-size:48px;margin-bottom:20px;display:block}#el[data-v-f8630f3e]{display:flex;justify-content:space-between}.data-analysis-tool[data-v-3be403ae]{background:#fff;margin-top:40px}.date-selector[data-v-3be403ae]{display:flex;justify-content:center;gap:10px;align-items:center;margin-bottom:20px}.cache-info[data-v-3be403ae]{font-size:14px;color:#666;margin-bottom:8px}.loading-info[data-v-3be403ae]{text-align:center;margin:20px 0}.charts-container[data-v-3be403ae]{display:grid;grid-template-columns:repeat(1,1fr);gap:20px}.chart-wrapper[data-v-3be403ae]{background:#fff;padding:15px;border-radius:4px;box-shadow:0 2px 4px #0000001a}.chart-title[data-v-3be403ae]{font-weight:700;margin-bottom:10px}.chart-container[data-v-3be403ae]{height:350px;background:#f9f9f9;margin-bottom:10px}.chart-time-slider[data-v-3be403ae]{padding:0 10px}@media (max-width: 1600px){.charts-container[data-v-3be403ae]{grid-template-columns:repeat(1,1fr)}}@media (max-width: 1200px){.charts-container[data-v-3be403ae]{grid-template-columns:repeat(1,1fr)}}@media (max-width: 768px){.charts-container[data-v-3be403ae]{grid-template-columns:1fr}.date-selector[data-v-3be403ae]{flex-direction:column;align-items:flex-start}} '); System.addImportMap({ imports: {"vue":"user:vue","element-plus":"user:element-plus","echarts":"user:echarts"} }); System.set("user:vue", (()=>{const _=Vue;('default' in _)||(_.default=_);return _})()); System.set("user:element-plus", (()=>{const _=ElementPlus;('default' in _)||(_.default=_);return _})()); System.set("user:echarts", (()=>{const _=echarts;('default' in _)||(_.default=_);return _})()); System.register("./__entry.js", ['./__monkey.entry-DzHbnFBR.js'], (function (exports, module) { 'use strict'; return { setters: [null], execute: (function () { }) }; })); System.register("./__monkey.entry-DzHbnFBR.js", ['vue', 'element-plus'], (function (exports, module) { 'use strict'; var createApp, resolveComponent, createElementBlock, openBlock, createVNode, createBlock, createCommentVNode, resolveDynamicComponent, createElementVNode, normalizeClass, Fragment, renderList, withCtx, createTextVNode, toDisplayString, ElementPlus, ElMessage; return { setters: [module => { createApp = module.createApp; resolveComponent = module.resolveComponent; createElementBlock = module.createElementBlock; openBlock = module.openBlock; createVNode = module.createVNode; createBlock = module.createBlock; createCommentVNode = module.createCommentVNode; resolveDynamicComponent = module.resolveDynamicComponent; createElementVNode = module.createElementVNode; normalizeClass = module.normalizeClass; Fragment = module.Fragment; renderList = module.renderList; withCtx = module.withCtx; createTextVNode = module.createTextVNode; toDisplayString = module.toDisplayString; }, module => { ElementPlus = module.default; ElMessage = module.ElMessage; }], execute: (function () { const scriptRel = /* @__PURE__ */ function detectScriptRel() { const relList = typeof document !== "undefined" && document.createElement("link").relList; return relList && relList.supports && relList.supports("modulepreload") ? "modulepreload" : "preload"; }(); const assetsURL = function(dep) { return "/" + dep; }; const seen = {}; const __vitePreload = function preload(baseModule, deps, importerUrl) { let promise = Promise.resolve(); if (deps && deps.length > 0) { let allSettled = function(promises$2) { return Promise.all(promises$2.map((p$1) => Promise.resolve(p$1).then((value$1) => ({ status: "fulfilled", value: value$1 }), (reason) => ({ status: "rejected", reason })))); }; document.getElementsByTagName("link"); const cspNonceMeta = document.querySelector("meta[property=csp-nonce]"); const cspNonce = cspNonceMeta?.nonce || cspNonceMeta?.getAttribute("nonce"); promise = allSettled(deps.map((dep) => { dep = assetsURL(dep); if (dep in seen) return; seen[dep] = true; const isCss = dep.endsWith(".css"); const cssSelector = isCss ? '[rel="stylesheet"]' : ""; if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) return; const link = document.createElement("link"); link.rel = isCss ? "stylesheet" : scriptRel; if (!isCss) link.as = "script"; link.crossOrigin = ""; link.href = dep; if (cspNonce) link.setAttribute("nonce", cspNonce); document.head.appendChild(link); if (isCss) return new Promise((res, rej) => { link.addEventListener("load", res); link.addEventListener("error", () => rej(/* @__PURE__ */ new Error(`Unable to preload CSS for ${dep}`))); }); })); } function handlePreloadError(err$2) { const e$1 = new Event("vite:preloadError", { cancelable: true }); e$1.payload = err$2; window.dispatchEvent(e$1); if (!e$1.defaultPrevented) throw err$2; } return promise.then((res) => { for (const item of res || []) { if (item.status !== "rejected") continue; handlePreloadError(item.reason); } return baseModule().catch(handlePreloadError); }); }; const _export_sfc = exports("_", (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }); const _sfc_main$1 = { name: "HamburgerMenu", props: { menuItems: { type: Array, required: true, default: () => [] } }, data() { return { menuOpen: false, isHidden: false }; }, methods: { toggleMenu() { this.menuOpen = !this.menuOpen; }, onItemClick(index) { this.$emit("itemClick", index); }, btnClickEvent(index1, index2) { this.$emit("btnClickEvent", { index1, index2 }); } } }; const _hoisted_1 = { id: "cd-nav", class: "is-fixed" }; const _hoisted_2 = { key: 0, class: "btnBox" }; const _hoisted_3 = ["onClick"]; function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { const _component_el_link = resolveComponent("el-link"); return openBlock(), createElementBlock("div", _hoisted_1, [ createElementVNode("a", { class: normalizeClass(["cd-nav-trigger", { "menu-is-open": $data.menuOpen }]), onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleMenu && $options.toggleMenu(...args)) }, _cache[1] || (_cache[1] = [ createElementVNode("span", null, null, -1) ]), 2), createElementVNode("ul", { class: normalizeClass(["has-transitions", "is-hidden", { "is-visible": $data.menuOpen }]) }, [ (openBlock(true), createElementBlock(Fragment, null, renderList($props.menuItems, (item, index) => { return openBlock(), createElementBlock("li", { key: index }, [ createElementVNode("div", null, [ createVNode(_component_el_link, { type: "primary", disabled: item.disabled, onClick: ($event) => $options.onItemClick(index) }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.text), 1) ]), _: 2 }, 1032, ["disabled", "onClick"]) ]), item.btns && item.btns.length ? (openBlock(), createElementBlock("div", _hoisted_2, [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.btns, (btn, index2) => { return openBlock(), createElementBlock("div", { key: index2, onClick: ($event) => $options.btnClickEvent(index, index2) }, [ createVNode(_component_el_link, { type: "warning" }, { default: withCtx(() => [ createTextVNode(toDisplayString(btn.text), 1) ]), _: 2 }, 1024) ], 8, _hoisted_3); }), 128)) ])) : createCommentVNode("", true) ]); }), 128)) ], 2) ]); } const HamburgerMenu = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-9c557335"]]); const _sfc_main = { name: "App", components: { HamburgerMenu }, data() { return { currentComponent: null, config: { text: { callme: "请全屏截图并发给管理员", error: "出现异常!" } } }; }, computed: { tingConfig() { return $tingConfig || { qq: "882776749" }; }, menuItems() { let that = this; let items = [ // logo制作 // https://www.logomaker.com.cn/guide#/generate?title=%E5%A4%A7%E8%A7%92%E7%89%9B&slogan=Big%20Horn%20Bull&brand_true_slogan=&industry_id=139&industry_tag=&industry_keyword=%E8%BD%AF%E4%BB%B6%E5%BA%94%E7%94%A8&sceneSelect=b&source=new&preview_dialog=true { text: "百度文库 | 下载当前文档", disabled: !window.location.href.includes("wenku.baidu.com/view"), click() { let url = window.location.href; url = encodeURIComponent(url); window.open(`https://u2233.vip/BDWK/index.html?url=${url}`); document.getElementsByClassName("cd-nav-trigger")[0].click(); }, btns: [ { text: "💡 使用教程", click: () => { window.open("https://u2233.vip/BDWK/word.html", "_blank"); } } ] }, { text: "百度网盘 | 领取极速下载卷", disabled: !window.location.href.includes("pan.baidu.com"), async click() { $createVerifyCodeModal(async () => { const component = await __vitePreload(() => module.import('./index-C6Br58wp-CNrm4cDA.js'), void 0 ); that.currentComponent = component.default; that.$nextTick(() => { that.$refs.dynamicComponent.open(); }); }); document.getElementsByClassName("cd-nav-trigger")[0].click(); }, btns: [ { text: "💡 使用教程", click: () => { window.open("https://u2233.vip/BDWP/word.html", "_blank"); } } ] }, { text: "BOOS直聘 | 抓取数据", disabled: !window.location.href.includes("zhipin.com/web/geek/jobs"), async click() { $createVerifyCodeModal(async (captcha) => { const capStatus = await $httpRequest({ url: `https://dl-test.infiniteworlds.com.cn/TING/checkCaptcha?captcha=${captcha}` }); if (capStatus.data.code != 0) { ElMessage.warning(capStatus.data.message); return; } const component = await __vitePreload(() => module.import('./index-BUsTNQud-vB6-WEWk.js'), void 0 ); that.currentComponent = component.default; that.$nextTick(() => { if (that.$refs.dynamicComponent && typeof that.$refs.dynamicComponent.open === "function") { that.$refs.dynamicComponent.open(); } }); }); document.getElementsByClassName("cd-nav-trigger")[0].click(); }, btns: [ { text: "💡 使用教程", click: () => { window.open("https://u2233.vip/BOSS/word.html", "_blank"); } } ] }, { text: `点击联系开发者/QQ群(${this.tingConfig.qq})`, click() { window.open( `https://jq.qq.com/?_wv=1027&k=${this.tingConfig.qq}`, "_blank" ); } } ]; return items.sort((a, b) => { const aHasDisabled = "disabled" in a; const bHasDisabled = "disabled" in b; if (!aHasDisabled && bHasDisabled) return 1; if (aHasDisabled && !bHasDisabled) return -1; if (!aHasDisabled && !bHasDisabled) return 0; return (a.disabled ? 1 : 0) - (b.disabled ? 1 : 0); }); } }, methods: { // 操作按钮点击事件 btnClickEvent({ index1, index2 }) { this.menuItems[index1].btns[index2].click(); }, // 上海证券数据分析 async ShangHaiZhengQuan() { const component = await __vitePreload(() => module.import('./index-D_oBu48O-BWn9ZtuK.js'), void 0 ); const pageContent = document.querySelector(".page_content"); const appContainer2 = document.createElement("div"); appContainer2.style.position = "relative"; appContainer2.style.margin = "0 0 50px 0"; pageContent.appendChild(appContainer2); createApp(component.default).mount(appContainer2); }, async itemClick(index) { try { this.menuItems[index].click(); } catch (error) { ElMessage.warning( `${this.config.text.error} ${this.config.text.callme} :${error}` ); } } } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_HamburgerMenu = resolveComponent("HamburgerMenu"); return openBlock(), createElementBlock("div", null, [ createVNode(_component_HamburgerMenu, { "menu-items": $options.menuItems, onItemClick: $options.itemClick, onBtnClickEvent: $options.btnClickEvent }, null, 8, ["menu-items", "onItemClick", "onBtnClickEvent"]), $data.currentComponent ? (openBlock(), createBlock(resolveDynamicComponent($data.currentComponent), { key: 0, ref: "dynamicComponent" }, null, 512)) : createCommentVNode("", true) ]); } const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); const cssLoader = (e) => { const t = GM_getResourceText(e); return GM_addStyle(t), t; }; cssLoader("ElementPlus"); var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)(); var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)(); var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)(); const apis = { GM_xmlhttpRequest: _GM_xmlhttpRequest, GM_setValue: _GM_setValue, GM_getValue: _GM_getValue }; Object.keys(apis).forEach((key) => { window[key] = apis[key]; if (typeof unsafeWindow !== "undefined") { unsafeWindow[key] = apis[key]; } }); const appContainer = document.createElement("div"); document.body.appendChild(appContainer); function initApp() { if (window.$tingConfig) { createApp(App).use(ElementPlus).mount(appContainer); return; } const script = document.createElement("script"); script.src = "https://u2233.vip/static/js/public.js"; script.async = true; script.crossOrigin = "anonymous"; script.onload = () => { createApp(App).use(ElementPlus).mount(appContainer); }; script.onerror = (error) => { createApp(App).use(ElementPlus).mount(appContainer); }; document.head.appendChild(script); } initApp(); }) }; })); System.register("./index-C6Br58wp-CNrm4cDA.js", ['element-plus', 'vue', './__monkey.entry-DzHbnFBR.js'], (function (exports, module) { 'use strict'; var ElMessage, resolveComponent, createBlock, openBlock, withCtx, createElementVNode, createElementBlock, Fragment, renderList, normalizeClass, createCommentVNode, toDisplayString, normalizeStyle, _export_sfc; return { setters: [module => { ElMessage = module.ElMessage; }, module => { resolveComponent = module.resolveComponent; createBlock = module.createBlock; openBlock = module.openBlock; withCtx = module.withCtx; createElementVNode = module.createElementVNode; createElementBlock = module.createElementBlock; Fragment = module.Fragment; renderList = module.renderList; normalizeClass = module.normalizeClass; createCommentVNode = module.createCommentVNode; toDisplayString = module.toDisplayString; normalizeStyle = module.normalizeStyle; }, module => { _export_sfc = module._; }], execute: (function () { const config = $baiDuYunLingJuanConfig; window.addEventListener("message", (e) => { if (e.data.type === "start") { start(); } }); async function start(obj) { const tasks = await getAllTask(); Promise.all( tasks.map((item) => getOneDownload(item.selectGameParams, item)) ).then(); } async function getAllTask() { const channelArr = config.channelArr; const promises = channelArr.map( (channel) => new Promise((resolve) => { $httpRequest({ method: "GET", url: `https://wan.baidu.com/gameapi?action=bonus_pan_task_list&channel=${channel}`, headers: { "Content-Type": "application/json" } }).then((response) => { resolve(response.data); }); }) ); const task_result = await Promise.all(promises); const taskOneWei = []; task_result.forEach((item) => { if (item.errorNo === 0 && item.result && item.result.data) { item.result.data.forEach((task) => { if (Array.isArray(task.data)) { taskOneWei.push(...task.data); } }); } }); const taskMianFei = taskOneWei.filter( (item) => config.taskModules.includes(item.taskModule) ); const taskReal = taskMianFei.map((item) => { let selectGame = getRandomItem(item.taskGames); return { ...item, selectGame, selectGameParams: { ...url2obj(selectGame.gameUrl) } }; }); send_message({ type: "task_result", taskReal }); return taskReal; } async function getOneDownload({ gameId, taskId, activityId }, task) { const sendApi = (params) => { $httpRequest({ method: "GET", url: `https://wan.baidu.com/gameapi?${obj2url(params)}`, headers: { "Content-Type": "application/json" } }).then(async (response) => { const data = response.data; if (data.errorNo === 110503 || data.result && data.result.data && data.result.data.remainingTaskTime === 0) { await setStorage(getId(taskId), 0); return send_message({ type: "task_status_update", taskId: params.taskId, status: `completed`, progress: 100 }); } if (data.errorNo !== 0) { return send_message({ type: "task_status_update", taskId: params.taskId, errorNo: data.errorNo, status: `error`, progress: 40, errorMessage: `${data.message}(请刷新页面 或 重新登录 )` }); } if (data.result && data.result.data && data.result.data.remainingTaskTime) { let finiTime = task.eachTaskNeedPlayTimeSecs - data.result.data.remainingTaskTime; send_message({ type: "task_status_update", taskId: params.taskId, status: `processing`, needTime: task.eachTaskNeedPlayTimeSecs - finiTime, progress: parseInt( finiTime / task.eachTaskNeedPlayTimeSecs * 100 ) }); await setStorage(getId(taskId), data.result.data.remainingTaskTime); } if (data.result && data.result.data && data.result.data.nextReportInterval) { setTimeout(() => { sendApi({ ...params, isFirstReport: 0 }); }, 10 * 1e3); } }); }; sendApi({ gameId, isFirstReport: await getStorage(getId(taskId)) ? 0 : 1, taskId, activityId, action: "bonus_task_game_play_report" }); } function send_message(data) { window.postMessage({ type: data.type, data }); } function getId(taskId) { var date = /* @__PURE__ */ new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); return year + "_" + month + "_" + day + "_" + taskId; } function getRandomItem(arr) { return arr[Math.floor(Math.random() * arr.length)]; } function url2obj(url) { var obj = {}; var arr = url.split("?")[1].split("&"); for (var i = 0; i < arr.length; i++) { var item = arr[i].split("="); if (item[0].trim()) { obj[item[0]] = item[1]; } } return obj; } function obj2url(obj) { var url = ""; for (var key in obj) { url += key + "=" + obj[key] + "&"; } return url.substring(0, url.length - 1); } function setStorage(key, value) { return new Promise((resolve) => { GM_setValue(key, value); resolve(); }); } function getStorage(key) { return new Promise((resolve) => { resolve(GM_getValue(key, null)); }); } const _sfc_main = { name: "BaiDuYunLingJuan", data() { return { drawer: false, tasks: [], loading: false }; }, methods: { open() { this.drawer = true; if (this.tasks.length == 0) { this.handleStartTask(); } }, handleStartTask() { this.loading = true; window.postMessage({ type: "start" }, "*"); }, handleMessage(event) { let eventData = event.data; if (eventData.type === "task_result") { this.tasks = eventData.data.taskReal.map((task) => ({ ...task, status: "pending", progress: 0 })); this.loading = false; } if (event.data.type === "task_status_update") { const taskIndex = this.tasks.findIndex((task) => { return +task?.taskId === +eventData.data.taskId; }); if (taskIndex !== -1) { this.tasks[taskIndex] = { ...this.tasks[taskIndex], ...eventData.data }; if (eventData.data.errorNo === 110008) { ElMessage({ message: `请登录【百度网盘网页版】后再领取下载卷`, duration: 5e3, type: "warning" }); } } else { console.log(`找不到:${taskIndex}`); } } }, init() { window.addEventListener("message", this.handleMessage); } }, mounted() { this.init(); }, beforeUnmount() { window.removeEventListener("message", this.handleMessage); } }; const _hoisted_1 = { id: "el" }; const _hoisted_2 = { class: "content" }; const _hoisted_3 = { key: 0, class: "loading" }; const _hoisted_4 = { key: 1, class: "empty-state" }; const _hoisted_5 = { key: 2, class: "task-list" }; const _hoisted_6 = { class: "task-title" }; const _hoisted_7 = { class: "task-module" }; const _hoisted_8 = { class: "task-info" }; const _hoisted_9 = { class: "info-item" }; const _hoisted_10 = { class: "info-value" }; const _hoisted_11 = { class: "info-item" }; const _hoisted_12 = { class: "info-value" }; const _hoisted_13 = { key: 0, class: "progress-bar" }; const _hoisted_14 = { key: 0 }; const _hoisted_15 = { key: 1 }; const _hoisted_16 = { key: 2 }; const _hoisted_17 = { key: 3 }; const _hoisted_18 = { key: 4 }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_el_drawer = resolveComponent("el-drawer"); return openBlock(), createBlock(_component_el_drawer, { modelValue: $data.drawer, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.drawer = $event), direction: "ltr", title: "百度下载卷领取助手", size: "60%" }, { default: withCtx(() => [ createElementVNode("div", _hoisted_1, [ createElementVNode("div", _hoisted_2, [ $data.loading ? (openBlock(), createElementBlock("div", _hoisted_3, _cache[1] || (_cache[1] = [ createElementVNode("div", { class: "loading-spinner" }, null, -1), createElementVNode("p", null, "正在加载可用下载卷...", -1) ]))) : $data.tasks.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_4, _cache[2] || (_cache[2] = [ createElementVNode("div", null, "📋", -1), createElementVNode("h3", null, "暂无进行中任务,点击开始领取", -1) ]))) : (openBlock(), createElementBlock("div", _hoisted_5, [ (openBlock(true), createElementBlock(Fragment, null, renderList($data.tasks, (task, index2) => { return openBlock(), createElementBlock("div", { key: index2, class: normalizeClass(["task-card", { processing: task.status === "processing", completed: task.status === "completed", error: task.status === "error" }]) }, [ createElementVNode("div", _hoisted_6, [ createElementVNode("span", null, "极速下载卷 #" + toDisplayString(index2 + 1), 1), createElementVNode("span", _hoisted_7, toDisplayString(task.taskModule || "未知模块"), 1) ]), createElementVNode("div", _hoisted_8, [ createElementVNode("div", _hoisted_9, [ _cache[3] || (_cache[3] = createElementVNode("div", { class: "info-label" }, "程序ID", -1)), createElementVNode("div", _hoisted_10, toDisplayString(task.selectGameParams?.gameId || "N/A"), 1) ]), createElementVNode("div", _hoisted_11, [ _cache[4] || (_cache[4] = createElementVNode("div", { class: "info-label" }, "任务ID", -1)), createElementVNode("div", _hoisted_12, toDisplayString(index2 + 1), 1) ]) ]), task.progress ? (openBlock(), createElementBlock("div", _hoisted_13, [ createElementVNode("div", { class: "progress-fill", style: normalizeStyle({ width: task.progress + "%" }) }, null, 4) ])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(["task-status", { "status-pending": task.status === "pending", "status-processing": task.status === "processing", "status-completed": task.status === "completed", "status-error": task.status === "error" }]) }, [ task.status === "pending" ? (openBlock(), createElementBlock("span", _hoisted_14, "等待领取")) : task.status === "processing" ? (openBlock(), createElementBlock("span", _hoisted_15, "领取中... " + toDisplayString(task.progress) + "%", 1)) : task.status === "completed" ? (openBlock(), createElementBlock("span", _hoisted_16, "✅ 已领取,明天再来吧~")) : task.status === "error" ? (openBlock(), createElementBlock("span", _hoisted_17, "❌ 错误: " + toDisplayString(task.errorMessage), 1)) : (openBlock(), createElementBlock("span", _hoisted_18, "未知状态")) ], 2) ], 2); }), 128)) ])), _cache[5] || (_cache[5] = createElementVNode("p", { style: { "color": "orange", "text-align": "center", "margin-top": "20px" } }, " 领劵过程中请勿刷新页面,可能影响领卷。可以点击黑色区域,切到后台运行 ", -1)) ]) ]) ]), _: 1 }, 8, ["modelValue"]); } const index = exports("default", /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-f8630f3e"]])); }) }; })); System.register("./index-BUsTNQud-vB6-WEWk.js", ['element-plus', 'vue', './__monkey.entry-DzHbnFBR.js'], (function (exports, module) { 'use strict'; var ElMessage, resolveComponent, createBlock, openBlock, withCtx, createElementVNode, createVNode, createElementBlock, createTextVNode, toDisplayString, Fragment, renderList, _export_sfc; return { setters: [module => { ElMessage = module.ElMessage; }, module => { resolveComponent = module.resolveComponent; createBlock = module.createBlock; openBlock = module.openBlock; withCtx = module.withCtx; createElementVNode = module.createElementVNode; createVNode = module.createVNode; createElementBlock = module.createElementBlock; createTextVNode = module.createTextVNode; toDisplayString = module.toDisplayString; Fragment = module.Fragment; renderList = module.renderList; }, module => { _export_sfc = module._; }], execute: (function () { const _sfc_main = { name: "BossXiaZaiGongZuo", data() { return { drawer: false, jobs: [], currentPage: 1, pageSize: 10, downloading: false, autoDetect: false, autoDetectTimer: null }; }, computed: { totalPages() { return Math.ceil(this.jobs.length / this.pageSize); }, paginatedJobs() { const start = (this.currentPage - 1) * this.pageSize; const end = start + this.pageSize; return this.jobs.slice(start, end); } }, methods: { open() { this.drawer = true; }, // 切换自动检测 toggleAutoDetect() { this.autoDetect = !this.autoDetect; if (this.autoDetect) { ElMessage.success("已开启自动爬取岗位功能"); this.getJobs(); this.autoDetectTimer = setInterval(() => { this.getJobs(); }, 3e3); } else { this.stopInterval(); ElMessage.info("已暂停爬取岗位功能"); } }, stopInterval() { if (this.autoDetectTimer) { clearInterval(this.autoDetectTimer); this.autoDetectTimer = null; } }, // 爬取工作 getJobs() { try { const jobContainer = document.querySelector( "#wrap > div.page-jobs-main" ); if (!jobContainer) { if (this.autoDetect) { console.log("未找到岗位列表容器"); } else { ElMessage.error( "未找到岗位列表容器,请确保在BOSS直聘岗位搜索页面使用" ); } return; } const vueInstance = jobContainer.__vue__; if (!vueInstance || !vueInstance.jobList) { if (this.autoDetect) { console.log("无法爬取岗位数据"); } else { ElMessage.error("无法爬取岗位数据,请刷新页面后重试"); } return; } const rawJobs = vueInstance.jobList || []; console.log("原始岗位数据:", rawJobs); const formattedJobs = rawJobs.map((job) => { return { jobId: job.jobId, encryptJobId: job.encryptJobId, jobName: job.jobName, brandName: job.brandName, salaryDesc: job.salaryDesc, jobLabels: job.jobLabels || [], skills: job.skills || [], areaDistrict: job.areaDistrict, jobExperience: job.jobExperience, jobDegree: job.jobDegree, cityName: job.cityName, brandLogo: job.brandLogo, brandStageName: job.brandStageName, brandIndustry: job.brandIndustry, brandScaleName: job.brandScaleName, bossName: job.bossName, bossTitle: job.bossTitle, bossAvatar: job.bossAvatar, goldHunter: job.goldHunter, jobUrl: `https://www.zhipin.com/job_detail/${job.encryptJobId}.html`, securityId: job.securityId, lid: job.lid }; }); const uniqueJobs = []; const jobIds = /* @__PURE__ */ new Set(); formattedJobs.forEach((job) => { if (!jobIds.has(job.encryptJobId)) { jobIds.add(job.encryptJobId); uniqueJobs.push(job); } }); if (this.jobs.length === uniqueJobs.length) { ElMessage({ message: "当前页面没有数据了~", type: "success", duration: 5e3 }); this.autoDetect = false; this.stopInterval(); return; } this.jobs = uniqueJobs; if (this.autoDetect) { ElMessage.success(`自动检测: 爬取到 ${uniqueJobs.length} 个岗位信息`); window.scrollTo({ top: document.body.scrollHeight, behavior: "smooth" }); } else { ElMessage({ message: `成功爬取到 ${uniqueJobs.length} 个岗位信息`, type: "success" }); } } catch (error) { console.error("爬取岗位信息失败:", error); if (!this.autoDetect) { ElMessage.error("爬取岗位信息失败: " + error.message); } } }, // 下载所有岗位 async downloadAll() { if (this.jobs.length === 0) { ElMessage.warning("没有岗位信息可下载"); return; } this.downloading = true; try { this.exportToCSV(this.jobs); ElMessage({ message: `成功下载 ${this.jobs.length} 个岗位信息`, type: "success" }); } catch (error) { console.error("下载失败:", error); ElMessage.error("下载失败: " + error.message); } finally { this.downloading = false; } }, // 导出为CSV - 优化大数据量处理 exportToCSV(jobsData) { const headers = [ "职位名称", "公司名称", "薪资", "城市", "地区", "经验要求", "学历要求", "技能要求", "标签", "公司行业", "公司规模", "HR姓名", "HR职位", "职位链接" ]; const chunkSize = 1e3; const chunks = []; for (let i = 0; i < jobsData.length; i += chunkSize) { chunks.push(jobsData.slice(i, i + chunkSize)); } const csvChunks = chunks.map((chunk) => { return chunk.map( (job) => [ `"${this.escapeCSVField(job.jobName || "")}"`, `"${this.escapeCSVField(job.brandName || "")}"`, `"${this.escapeCSVField(job.salaryDesc || "")}"`, `"${this.escapeCSVField(job.cityName || "")}"`, `"${this.escapeCSVField(job.areaDistrict || "")}"`, `"${this.escapeCSVField(job.jobExperience || "")}"`, `"${this.escapeCSVField(job.jobDegree || "")}"`, `"${this.escapeCSVField((job.skills || []).join("|"))}"`, `"${this.escapeCSVField((job.jobLabels || []).join("|"))}"`, `"${this.escapeCSVField(job.brandIndustry || "")}"`, `"${this.escapeCSVField(job.brandScaleName || "")}"`, `"${this.escapeCSVField(job.bossName || "")}"`, `"${this.escapeCSVField(job.bossTitle || "")}"`, `"${this.escapeCSVField(job.jobUrl || "")}"` ].join(",") ); }); const csvContent = [headers.join(","), ...csvChunks.flat()].join("\n"); const blob = new Blob(["\uFEFF" + csvContent], { type: "text/csv;charset=utf-8;" }); const url = URL.createObjectURL(blob); const link = document.createElement("a"); link.setAttribute("href", url); link.setAttribute( "download", `BOSS岗位信息_${(/* @__PURE__ */ new Date()).toISOString().slice(0, 10)}.csv` ); link.style.visibility = "hidden"; document.body.appendChild(link); link.click(); document.body.removeChild(link); }, // CSV字段转义 escapeCSVField(field) { if (typeof field !== "string") return field; return field.replace(/"/g, '""'); }, // 处理分页变化 handleCurrentChange(page) { this.currentPage = page; } }, beforeDestroy() { if (this.autoDetectTimer) { clearInterval(this.autoDetectTimer); } } }; const _hoisted_1 = { style: { "margin-bottom": "20px" } }; const _hoisted_2 = { key: 0 }; const _hoisted_3 = { style: { "display": "flex", "flex-wrap": "wrap", "gap": "4px" } }; const _hoisted_4 = { style: { "display": "flex", "flex-wrap": "wrap", "gap": "4px" } }; const _hoisted_5 = { style: { "margin-top": "20px", "display": "flex", "justify-content": "space-between", "align-items": "center" } }; const _hoisted_6 = { key: 1 }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_el_button = resolveComponent("el-button"); const _component_el_alert = resolveComponent("el-alert"); const _component_el_table_column = resolveComponent("el-table-column"); const _component_el_link = resolveComponent("el-link"); const _component_el_tag = resolveComponent("el-tag"); const _component_el_table = resolveComponent("el-table"); const _component_el_pagination = resolveComponent("el-pagination"); const _component_el_drawer = resolveComponent("el-drawer"); return openBlock(), createBlock(_component_el_drawer, { modelValue: $data.drawer, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.drawer = $event), direction: "ttb", title: "BOSS岗位信息下载工具", size: "80%" }, { default: withCtx(() => [ createElementVNode("div", _hoisted_1, [ createVNode(_component_el_button, { onClick: $options.toggleAutoDetect, type: $data.autoDetect ? "danger" : "primary" }, { default: withCtx(() => [ createTextVNode(toDisplayString($data.autoDetect ? "暂停爬取" : "爬取【当前页】岗位"), 1) ]), _: 1 }, 8, ["onClick", "type"]), createVNode(_component_el_button, { onClick: $options.downloadAll, type: "success", loading: $data.downloading, disabled: $data.jobs.length === 0, style: { "margin-left": "20px" } }, { default: withCtx(() => [ createTextVNode(toDisplayString($data.downloading ? "下载中..." : `下载全部岗位 (${$data.jobs.length}个)`), 1) ]), _: 1 }, 8, ["onClick", "loading", "disabled"]) ]), createVNode(_component_el_alert, { type: "error", description: "本插件仅用于学习和技术研究目的,不得用于任何商业用途。使用本插件产生的任何后果均由使用者自行承担,开发者不承担任何责任。", "show-icon": "", style: { "margin-bottom": "20px" }, closable: "" }), $data.jobs.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2, [ createVNode(_component_el_alert, { title: `共爬取到 ${$data.jobs.length} 个岗位信息,当前显示第 ${$data.currentPage} 页,共 ${$options.totalPages} 页`, type: "success", "show-icon": "", style: { "margin-bottom": "20px" } }, null, 8, ["title"]), createVNode(_component_el_table, { data: $options.paginatedJobs, height: "500", style: { "width": "100%" }, border: "" }, { default: withCtx(() => [ createVNode(_component_el_table_column, { type: "index", label: "#", width: "60" }, { default: withCtx((scope) => [ createTextVNode(toDisplayString(($data.currentPage - 1) * $data.pageSize + scope.$index + 1), 1) ]), _: 1 }), createVNode(_component_el_table_column, { prop: "jobName", label: "职位名称", "min-width": "150" }, { default: withCtx((scope) => [ createVNode(_component_el_link, { href: scope.row.jobUrl, target: "_blank", type: "primary" }, { default: withCtx(() => [ createTextVNode(toDisplayString(scope.row.jobName), 1) ]), _: 2 }, 1032, ["href"]) ]), _: 1 }), createVNode(_component_el_table_column, { prop: "brandName", label: "公司名称", "min-width": "120" }), createVNode(_component_el_table_column, { prop: "salaryDesc", label: "薪资", width: "100" }), createVNode(_component_el_table_column, { prop: "skills", label: "技能要求", "min-width": "200" }, { default: withCtx((scope) => [ createElementVNode("div", _hoisted_3, [ (openBlock(true), createElementBlock(Fragment, null, renderList(scope.row.skills, (skill) => { return openBlock(), createBlock(_component_el_tag, { key: skill, size: "small" }, { default: withCtx(() => [ createTextVNode(toDisplayString(skill), 1) ]), _: 2 }, 1024); }), 128)) ]) ]), _: 1 }), createVNode(_component_el_table_column, { prop: "jobLabels", label: "标签", "min-width": "150" }, { default: withCtx((scope) => [ createElementVNode("div", _hoisted_4, [ (openBlock(true), createElementBlock(Fragment, null, renderList(scope.row.jobLabels, (tag) => { return openBlock(), createBlock(_component_el_tag, { key: tag, size: "small" }, { default: withCtx(() => [ createTextVNode(toDisplayString(tag), 1) ]), _: 2 }, 1024); }), 128)) ]) ]), _: 1 }), createVNode(_component_el_table_column, { prop: "areaDistrict", label: "地区", width: "100" }), createVNode(_component_el_table_column, { prop: "jobExperience", label: "经验要求", width: "100" }), createVNode(_component_el_table_column, { prop: "jobDegree", label: "学历要求", width: "100" }) ]), _: 1 }, 8, ["data"]), createElementVNode("div", _hoisted_5, [ createVNode(_component_el_pagination, { "current-page": $data.currentPage, "page-size": $data.pageSize, total: $data.jobs.length, layout: "prev, pager, next, jumper", background: "", style: { "margin": "0 auto" }, onCurrentChange: $options.handleCurrentChange }, null, 8, ["current-page", "page-size", "total", "onCurrentChange"]) ]) ])) : (openBlock(), createElementBlock("div", _hoisted_6, [ createVNode(_component_el_alert, { title: "暂无岗位信息,点击上方按钮开始爬取岗位信息", type: "info", "show-icon": "" }) ])) ]), _: 1 }, 8, ["modelValue"]); } const index = exports("default", /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]])); }) }; })); System.register("./index-D_oBu48O-BWn9ZtuK.js", ['vue', 'element-plus', 'echarts', './__monkey.entry-DzHbnFBR.js'], (function (exports, module) { 'use strict'; var ref, onMounted, onBeforeUnmount, nextTick, createElementBlock, openBlock, Fragment, createVNode, createElementVNode, unref, withCtx, createCommentVNode, createBlock, createTextVNode, toDisplayString, renderList, ElMessage, ElDivider, ElDatePicker, ElCheckbox, ElButton, ElProgress, ElCard, echarts, _export_sfc; return { setters: [module => { ref = module.ref; onMounted = module.onMounted; onBeforeUnmount = module.onBeforeUnmount; nextTick = module.nextTick; createElementBlock = module.createElementBlock; openBlock = module.openBlock; Fragment = module.Fragment; createVNode = module.createVNode; createElementVNode = module.createElementVNode; unref = module.unref; withCtx = module.withCtx; createCommentVNode = module.createCommentVNode; createBlock = module.createBlock; createTextVNode = module.createTextVNode; toDisplayString = module.toDisplayString; renderList = module.renderList; }, module => { ElMessage = module.ElMessage; ElDivider = module.ElDivider; ElDatePicker = module.ElDatePicker; ElCheckbox = module.ElCheckbox; ElButton = module.ElButton; ElProgress = module.ElProgress; ElCard = module.ElCard; }, module => { echarts = module; }, module => { _export_sfc = module._; }], execute: (function () { const _hoisted_1 = { class: "data-analysis-tool" }; const _hoisted_2 = { class: "tool-header" }; const _hoisted_3 = { class: "date-selector" }; const _hoisted_4 = { style: { "display": "flex", "align-items": "center", "gap": "14px" } }; const _hoisted_5 = { key: 0, class: "cache-info" }; const _hoisted_6 = { key: 0, class: "loading-info" }; const _hoisted_7 = { key: 1, class: "charts-container" }; const _hoisted_8 = ["id"]; const LOG_PREFIX = "[SSE-Data-Tool]"; const _sfc_main = { __name: "index", setup(__props) { const markFourthWednesday = ref(false); const markThirdFriday = ref(false); const datePickerKey = ref(0); const dateRange = ref([]); const loading = ref(true); const daysToFetch = ref(0); const estimatedTime = ref(0); const progressPercentage = ref(0); const cacheStartDate = ref(""); const cacheEndDate = ref(""); const cachedDaysCount = ref(0); const chartData = ref({}); const chartInstances = ref({}); const chartConfigs = [ { title: "合约数量", field: "CONTRACT_VOLUME", type: "line" }, { title: "总成交额(万元)", field: "TOTAL_MONEY", type: "line" }, { title: "总成交量(张)", field: "TOTAL_VOLUME", type: "line" }, { title: "认购成交量(张)", field: "CALL_VOLUME", type: "line" }, { title: "认沽成交量(张)", field: "PUT_VOLUME", type: "line" }, { title: "认沽/认购(%)", field: "CP_RATE", type: "line" }, { title: "未平仓合约总数", field: "LEAVES_QTY", type: "line" }, { title: "未平仓认购合约数", field: "LEAVES_CALL_QTY", type: "line" }, { title: "未平仓认沽合约数", field: "LEAVES_PUT_QTY", type: "line" }, { title: "持仓量", field: "CCL", type: "line" }, { title: "成交量", field: "CJL", type: "line" }, { title: "净认购成交量", field: "rgjrg", type: "line" }, { title: "净认购认沽成交比率", field: "rgjrg2", type: "line" }, { title: "净未平仓认购张数", field: "cclrgjrg", type: "line" }, { title: "未平仓认购认沽净比率", field: "cclrgjrg2", type: "line" }, { title: "上证50ETF(认购成交量和认沽成交量)", dataType: "duibi", duibi_SECURITY_CODE: "510050", duibi_fields: [ { field: "CALL_VOLUME", name: "认购成交量" }, { field: "PUT_VOLUME", name: "认沽成交量" } ], type: "line" }, { title: "上证50ETF(未平仓认购合约数和未平仓认沽合约数)", dataType: "duibi", duibi_SECURITY_CODE: "510050", duibi_fields: [ { field: "LEAVES_CALL_QTY", name: "未平仓认购合约数" }, { field: "LEAVES_PUT_QTY", name: "未平仓认沽合约数" } ], type: "line" }, { title: "沪深300ETF(认购成交量和认沽成交量)", dataType: "duibi", duibi_SECURITY_CODE: "510300", duibi_fields: [ { field: "CALL_VOLUME", name: "认购成交量" }, { field: "PUT_VOLUME", name: "认沽成交量" } ], type: "line" }, { title: "沪深300ETF(未平仓认购合约数和未平仓认沽合约数)", dataType: "duibi", duibi_SECURITY_CODE: "510300", duibi_fields: [ { field: "LEAVES_CALL_QTY", name: "未平仓认购合约数" }, { field: "LEAVES_PUT_QTY", name: "未平仓认沽合约数" } ], type: "line" }, { title: "中证500ETF(认购成交量和认沽成交量)", dataType: "duibi", duibi_SECURITY_CODE: "510500", duibi_fields: [ { field: "CALL_VOLUME", name: "认购成交量" }, { field: "PUT_VOLUME", name: "认沽成交量" } ], type: "line" }, { title: "中证500ETF(未平仓认购合约数和未平仓认沽合约数)", dataType: "duibi", duibi_SECURITY_CODE: "510500", duibi_fields: [ { field: "LEAVES_CALL_QTY", name: "未平仓认购合约数" }, { field: "LEAVES_PUT_QTY", name: "未平仓认沽合约数" } ], type: "line" }, { title: "科创50ETF(认购成交量和认沽成交量)", dataType: "duibi", duibi_SECURITY_CODE: "588000", duibi_fields: [ { field: "CALL_VOLUME", name: "认购成交量" }, { field: "PUT_VOLUME", name: "认沽成交量" } ], type: "line" }, { title: "科创50ETF(未平仓认购合约数和未平仓认沽合约数)", dataType: "duibi", duibi_SECURITY_CODE: "588000", duibi_fields: [ { field: "LEAVES_CALL_QTY", name: "未平仓认购合约数" }, { field: "LEAVES_PUT_QTY", name: "未平仓认沽合约数" } ], type: "line" }, { title: "科创板50ETF(认购成交量和认沽成交量)", dataType: "duibi", duibi_SECURITY_CODE: "588080", duibi_fields: [ { field: "CALL_VOLUME", name: "认购成交量" }, { field: "PUT_VOLUME", name: "认沽成交量" } ], type: "line" }, { title: "科创板50ETF(未平仓认购合约数和未平仓认沽合约数)", dataType: "duibi", duibi_SECURITY_CODE: "588080", duibi_fields: [ { field: "LEAVES_CALL_QTY", name: "未平仓认购合约数" }, { field: "LEAVES_PUT_QTY", name: "未平仓认沽合约数" } ], type: "line" } ]; onMounted(async () => { initDateRange(); await loadCacheInfo(); let id = setInterval(() => { try { if (getJSONP) { loadData(); clearInterval(id); } } catch (error) { } }, 500); }); onBeforeUnmount(() => { Object.values(chartInstances.value).forEach((chart) => { if (chart && typeof chart.dispose === "function") { chart.dispose(); } }); }); const processChartData = async () => { const startDate = new Date(dateRange.value[0]); const endDate = new Date(dateRange.value[1]); const currentDate = new Date(startDate); const allData = []; while (currentDate <= endDate) { const dateStr = currentDate.toISOString().split("T")[0]; const data = await getCachedData(dateStr); if (data && data.result && data.result.length > 0) { allData.push({ date: dateStr, data }); } currentDate.setDate(currentDate.getDate() + 1); } chartConfigs.forEach((config, index2) => { const seriesData = {}; allData.forEach((item) => { item.data.result.forEach((etf) => { if (config.dataType === "duibi") { if (config.duibi_SECURITY_CODE === etf.SECURITY_CODE) { config.duibi_fields.forEach((fieldItem) => { !seriesData[fieldItem.name] && (seriesData[fieldItem.name] = []); let value2 = etf[fieldItem.field].toString().replace(/,/g, ""); seriesData[fieldItem.name].push({ date: item.date, value: value2 }); }); } return; } const etfName = etf.SECURITY_ABBR; let value = 0; if (config.field in etf) { const rawValue = etf[config.field]; value = parseFloat(rawValue.toString().replace(/,/g, "")) || 0; } else if (config.field === "CCL") { const a = parseFloat(etf.LEAVES_CALL_QTY.toString().replace(/,/g, "")) || 0; const b = parseFloat(etf.LEAVES_PUT_QTY.toString().replace(/,/g, "")) || 0; value = b > 0 ? a / b * 100 : 0; } else if (config.field === "CJL") { const a = parseFloat(etf.PUT_VOLUME.toString().replace(/,/g, "")) || 0; const b = parseFloat(etf.CALL_VOLUME.toString().replace(/,/g, "")) || 0; value = b > 0 ? a / b * 100 : 0; } else if (config.field === "rgjrg") { const a = parseFloat(etf.CALL_VOLUME.toString().replace(/,/g, "")) || 0; const b = parseFloat(etf.PUT_VOLUME.toString().replace(/,/g, "")) || 0; value = a - b; } else if (config.field === "rgjrg2") { const a = parseFloat(etf.CALL_VOLUME.toString().replace(/,/g, "")) || 0; const b = parseFloat(etf.PUT_VOLUME.toString().replace(/,/g, "")) || 0; const c = a - b; const d = a + b; value = d > 0 ? c / d * 100 : 0; } else if (config.field === "cclrgjrg") { const a = parseFloat(etf.LEAVES_CALL_QTY.toString().replace(/,/g, "")) || 0; const b = parseFloat(etf.LEAVES_PUT_QTY.toString().replace(/,/g, "")) || 0; value = a - b; } else if (config.field === "cclrgjrg2") { const a = parseFloat(etf.LEAVES_CALL_QTY.toString().replace(/,/g, "")) || 0; const b = parseFloat(etf.LEAVES_PUT_QTY.toString().replace(/,/g, "")) || 0; const c = a - b; const d = a + b; value = d > 0 ? c / d * 100 : 0; } if (!seriesData[etfName]) { seriesData[etfName] = []; } seriesData[etfName].push({ date: item.date, value }); }); }); chartData.value[index2] = seriesData; }); await nextTick(); renderCharts(); }; const renderCharts = () => { const colorPalette = [ "#409EFF", "#67C23A", "#E6A23C", "#F56C6C", "#909399", "#34C759", "#007AFF", "#AF52DE", "#FF9500", "#5856D6" ]; const day3 = []; const day5 = []; if (dateRange.value && dateRange.value.length === 2) { const startDate = new Date(dateRange.value[0]); const endDate = new Date(dateRange.value[1]); const currentDate = new Date(startDate); while (currentDate <= endDate) { let timeStr = currentDate.toISOString().split("T")[0]; if (isNthWeekWeekday(timeStr, 4, 3)) { day3.push(timeStr); } else if (isNthWeekWeekday(timeStr, 3, 5)) { day5.push(timeStr); } currentDate.setDate(currentDate.getDate() + 1); } } chartConfigs.forEach((config, index2) => { const seriesData = chartData.value[index2]; if (seriesData) { const chartDom = document.getElementById(`chart-${index2}`); if (!chartDom) { console.warn(`${LOG_PREFIX} 未找到图表容器: chart-${index2}`); return; } if (chartInstances.value[index2]) { chartInstances.value[index2].dispose(); } const chart = echarts.init(chartDom); chartInstances.value[index2] = chart; const series = []; let colorIndex = 0; Object.keys(seriesData).forEach((etfName, index3) => { const data = seriesData[etfName]; const values = data.map((item) => item.value); let markLine = null; if (index3 === 0 && markFourthWednesday.value) { markLine = { silent: true, symbol: "none", label: { show: false, fontSize: 100 }, lineStyle: { color: "#0066FF", width: 1, type: "solid" }, data: day5.map((d) => { return { xAxis: d }; }) }; } if (index3 === 1 && markThirdFriday.value) { markLine = { silent: true, symbol: "none", label: { show: false, fontSize: 100 }, lineStyle: { color: "#FF4D00", width: 1, // 实线 type: "solid" }, data: day3.map((d) => { return { xAxis: d }; }) }; } series.push({ name: etfName, type: "line", data: values, smooth: true, lineStyle: { width: 2 }, itemStyle: { color: colorPalette[colorIndex % colorPalette.length] }, areaStyle: { opacity: 0.1 }, markLine }); colorIndex++; }); const option = { title: { textStyle: { fontSize: 14, fontWeight: "normal" }, padding: [0, 0, 0, 0] }, tooltip: { trigger: "axis", formatter: function(params) { let tooltip = params[0].name + "<br/>"; params.forEach((param) => { tooltip += `${param.seriesName}: ${param.value.toLocaleString()}<br/>`; }); return tooltip; } }, legend: { type: "scroll", bottom: 30, textStyle: { fontSize: 10 } }, xAxis: { type: "category", data: series.length > 0 ? series[0].data.map( (_, i) => Object.values(seriesData)[0][i].date ) : [], axisLabel: { fontSize: 10 } }, yAxis: { type: "value", axisLabel: { fontSize: 10, formatter: function(value) { return value.toLocaleString(); } } }, series, grid: { left: "6%", right: "6%", top: "6%", bottom: "20%" }, dataZoom: [ { type: "inside", start: 0, end: 100 }, { type: "slider", start: 0, end: 100, height: 15, bottom: 10 } ] }; chart.setOption(option); } }); }; const onMarkingChange = () => { if (!loading.value) { renderCharts(); } }; const loadData = async () => { loading.value = true; progressPercentage.value = 0; if (!dateRange.value || dateRange.value.length !== 2) { ElMessage.warning("请选择日期范围"); return; } await calculateDaysToFetch(); const startDate = new Date(dateRange.value[0]); const endDate = new Date(dateRange.value[1]); const currentDate = new Date(startDate); let processedDays = 0; while (currentDate <= endDate) { try { const dateStr = currentDate.toISOString().split("T")[0]; await fetchOrLoadData(dateStr); processedDays++; progressPercentage.value = Math.round( processedDays / daysToFetch.value * 100 ); currentDate.setDate(currentDate.getDate() + 1); } catch (error) { console.error(`${LOG_PREFIX} 处理数据时出错:`, error); } } await sleep(200); loading.value = false; ElMessage.success("数据加载完成"); await loadCacheInfo(); await processChartData(); }; const fetchOrLoadData = async (dateStr) => { if ([6, 0].includes(new Date(dateStr).getDay())) { return { result: [] }; } let data = await getCachedData(dateStr); if (!data) { data = await fetchData(dateStr); if (data && data.result && data.result.length) { await cacheData(dateStr, data); } await sleep(Math.random() * 1e3 + 1e3); } return data; }; const fetchData = (date) => { return new Promise((resolve, reject) => { getJSONP({ type: "post", url: "//query.sse.com.cn/commonQuery.do", data: { jsonCallBack: "jsonpCallback96937715", isPagination: true, sqlId: "COMMON_SSE_ZQPZ_YSP_QQ_SJTJ_MRTJ_CX", tradeDate: date.replaceAll("-", ""), "pageHelp.pageSize": 25, "pageHelp.cacheSize": 1, "pageHelp.pageNo": 1, "pageHelp.beginPage": 1, "pageHelp.endPage": 1, _: Date.now() }, successCallback: function(data) { resolve(data); }, errCallback: function() { reject({}); } }); }); }; const initDateRange = () => { const end = /* @__PURE__ */ new Date(); const start = /* @__PURE__ */ new Date(); start.setDate(start.getDate() - 30); dateRange.value = [ start.toISOString().split("T")[0], end.toISOString().split("T")[0] ]; nextTick(() => { datePickerKey.value += 1; }); }; const disabledDate = (time) => { const start = /* @__PURE__ */ new Date("2023-07-17"); const end = /* @__PURE__ */ new Date(); return time.getTime() < start.getTime() || time.getTime() > end.getTime(); }; const onDateRangeChange = () => { calculateDaysToFetch(); }; const clearCache = () => { if (confirm("确定要清除缓存吗?")) { GM_deleteValue("sse_data_cache"); ElMessage.success("清除缓存成功"); } }; const cacheData = async (date, data) => { const cache = await GM_getValue("sse_data_cache", {}); cache[date] = data; await GM_setValue("sse_data_cache", cache); }; const getCachedData = async (date) => { const cache = await GM_getValue("sse_data_cache", {}); const data = cache[date]; return data; }; const getAllCachedData = async () => { const cache = await GM_getValue("sse_data_cache", {}); return cache; }; const loadCacheInfo = async () => { const cache = await getAllCachedData(); const dates = Object.keys(cache).sort(); if (dates.length > 0) { cacheStartDate.value = dates[0]; cacheEndDate.value = dates[dates.length - 1]; cachedDaysCount.value = dates.length; } else { cacheStartDate.value = ""; cacheEndDate.value = ""; cachedDaysCount.value = 0; } }; const calculateDaysToFetch = async () => { if (!dateRange.value || dateRange.value.length !== 2) { console.log(`${LOG_PREFIX} 日期范围不完整,跳过计算`); return; } const startDate = new Date(dateRange.value[0]); const endDate = new Date(dateRange.value[1]); let days = 0; const currentDate = new Date(startDate); let time = 0; while (currentDate <= endDate) { const dateStr = currentDate.toISOString().split("T")[0]; const cachedData = await getCachedData(dateStr); days++; cachedData ? time += 0.01 : time += 1.5; currentDate.setDate(currentDate.getDate() + 1); } daysToFetch.value = days; estimatedTime.value = Math.ceil(time); }; const sleep = (ms) => { return new Promise((resolve) => setTimeout(resolve, ms)); }; function isNthWeekWeekday(date2, occurrence, dayOfWeek) { const date = new Date(date2); if (!(date instanceof Date) || isNaN(date)) { throw new Error("Invalid date"); } if (occurrence < 1 || occurrence > 5) { throw new Error("Occurrence must be between 1 and 5"); } if (dayOfWeek < 0 || dayOfWeek > 6) { throw new Error("Day of week must be between 0 (Sunday) and 6 (Saturday)"); } const targetMonth = date.getMonth(); const targetYear = date.getFullYear(); const firstDayOfMonth = new Date(targetYear, targetMonth, 1); const firstDayWeekday = firstDayOfMonth.getDay(); let firstOccurrenceDate = 1 + (dayOfWeek - firstDayWeekday + 7) % 7; const targetDateNumber = firstOccurrenceDate + (occurrence - 1) * 7; const targetNthDayOfWeek = new Date( targetYear, targetMonth, targetDateNumber ); return targetNthDayOfWeek.getDate() === date.getDate() && targetNthDayOfWeek.getMonth() === date.getMonth() && targetNthDayOfWeek.getFullYear() === date.getFullYear(); } return (_ctx, _cache) => { return openBlock(), createElementBlock(Fragment, null, [ createVNode(unref(ElDivider), { "content-position": "center" }, { default: withCtx(() => _cache[3] || (_cache[3] = [ createElementVNode("h2", null, "数据分析", -1) ])), _: 1, __: [3] }), createElementVNode("div", _hoisted_1, [ createElementVNode("div", _hoisted_2, [ createElementVNode("div", _hoisted_3, [ createElementVNode("div", _hoisted_4, [ (openBlock(), createBlock(unref(ElDatePicker), { modelValue: dateRange.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => dateRange.value = $event), key: datePickerKey.value, disabled: loading.value, type: "daterange", "range-separator": "至", "start-placeholder": "开始日期", "disabled-date": disabledDate, "end-placeholder": "结束日期", "value-format": "YYYY-MM-DD", onChange: onDateRangeChange, size: "large" }, null, 8, ["modelValue", "disabled"])), createVNode(unref(ElCheckbox), { modelValue: markFourthWednesday.value, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => markFourthWednesday.value = $event), style: { "margin": "0" }, disabled: loading.value, onChange: onMarkingChange, size: "large", border: "" }, { default: withCtx(() => _cache[4] || (_cache[4] = [ createElementVNode("span", { style: { "color": "#0066ff" } }, "标记第三周周五", -1) ])), _: 1, __: [4] }, 8, ["modelValue", "disabled"]), createVNode(unref(ElCheckbox), { modelValue: markThirdFriday.value, "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => markThirdFriday.value = $event), style: { "margin": "0" }, disabled: loading.value, onChange: onMarkingChange, size: "large", border: "" }, { default: withCtx(() => _cache[5] || (_cache[5] = [ createElementVNode("span", { style: { "color": "#ff4d00" } }, "标记第四周周三", -1) ])), _: 1, __: [5] }, 8, ["modelValue", "disabled"]), createVNode(unref(ElButton), { type: "primary", onClick: loadData, size: "large", disabled: loading.value }, { default: withCtx(() => [ createTextVNode(toDisplayString(loading.value ? "加载中..." : "加载数据"), 1) ]), _: 1 }, 8, ["disabled"]), createVNode(unref(ElButton), { onClick: clearCache, type: "danger", size: "large", style: { "margin": "0" }, disabled: loading.value }, { default: withCtx(() => _cache[6] || (_cache[6] = [ createTextVNode("清除缓存", -1) ])), _: 1, __: [6] }, 8, ["disabled"]) ]) ]), cacheStartDate.value && cacheEndDate.value ? (openBlock(), createElementBlock("div", _hoisted_5, " 缓存数据范围: " + toDisplayString(cacheStartDate.value) + " 至 " + toDisplayString(cacheEndDate.value) + " 缓存天数: " + toDisplayString(cachedDaysCount.value), 1)) : createCommentVNode("", true) ]), loading.value ? (openBlock(), createElementBlock("div", _hoisted_6, [ createElementVNode("div", null, " 需要获取 " + toDisplayString(daysToFetch.value) + " 天数据,预计需要 " + toDisplayString(estimatedTime.value) + " 秒 ", 1), createVNode(unref(ElProgress), { percentage: progressPercentage.value }, null, 8, ["percentage"]) ])) : createCommentVNode("", true), !loading.value ? (openBlock(), createElementBlock("div", _hoisted_7, [ (openBlock(), createElementBlock(Fragment, null, renderList(chartConfigs, (chart, index2) => { return createVNode(unref(ElCard), { key: index2 }, { header: withCtx(() => [ createTextVNode(toDisplayString(chart.title), 1) ]), default: withCtx(() => [ createElementVNode("div", { class: "chart-container", id: "chart-" + index2 }, null, 8, _hoisted_8) ]), _: 2 }, 1024); }), 64)) ])) : createCommentVNode("", true) ]) ], 64); }; } }; const index = exports("default", /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3be403ae"]])); }) }; })); System.import("./__entry.js", "./");