diff --git a/VERSION b/VERSION index 9578e94..a6c8cf7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.28 +0.3.29 diff --git a/source_clean/frontend-src/dist-vite/assets/AdminDashboard-DAzBQti_.js b/source_clean/frontend-src/dist-vite/assets/AdminDashboard-CClHfarr.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/AdminDashboard-DAzBQti_.js rename to source_clean/frontend-src/dist-vite/assets/AdminDashboard-CClHfarr.js index 838bc14..214d44e 100644 --- a/source_clean/frontend-src/dist-vite/assets/AdminDashboard-DAzBQti_.js +++ b/source_clean/frontend-src/dist-vite/assets/AdminDashboard-CClHfarr.js @@ -1,4 +1,4 @@ -import{x as qu,m as $_,h as Ce,B as Hg,d as q_,o as K_,a as Tt,c as Nt,K as ml,L as _l,b as Q,F as Vr,r as Gr,f as $t,w as qt,e as Oe,v as Ka,j as Hr,i as Q_,t as wt,n as Nc,y as Ei,l as zc,p as J_,E as j_,u as t1}from"./index-DLC2deeT.js";import{a as e1,h as r1,c as i1,i as n1,j as a1,t as o1,_ as s1}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import l1 from"./CloudConfig-BaEpQpQM.js";import u1 from"./SystemConfig-CswhThiW.js";import f1 from"./SaveRecords-vmMvuvLS.js";import"./index-Bn7NwETH.js";import"./CloudBadge-BhaCxKyo.js";/*! ***************************************************************************** +import{x as qu,m as $_,h as Ce,B as Hg,d as q_,o as K_,a as Tt,c as Nt,K as ml,L as _l,b as Q,F as Vr,r as Gr,f as $t,w as qt,e as Oe,v as Ka,j as Hr,i as Q_,t as wt,n as Nc,y as Ei,l as zc,p as J_,E as j_,u as t1}from"./index-Bsy0LTRb.js";import{a as e1,h as r1,c as i1,i as n1,j as a1,t as o1,_ as s1}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import l1 from"./CloudConfig-DIBXz7ib.js";import u1 from"./SystemConfig-BpnPsiXS.js";import f1 from"./SaveRecords-D4vANRRO.js";import"./index-Bn7NwETH.js";import"./CloudBadge-BQbzCPM-.js";/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any diff --git a/source_clean/frontend/assets/AdminLayout-BgjUguyQ.js b/source_clean/frontend-src/dist-vite/assets/AdminLayout-miuzOi4K.js similarity index 98% rename from source_clean/frontend/assets/AdminLayout-BgjUguyQ.js rename to source_clean/frontend-src/dist-vite/assets/AdminLayout-miuzOi4K.js index cbb6aa5..af2f6be 100644 --- a/source_clean/frontend/assets/AdminLayout-BgjUguyQ.js +++ b/source_clean/frontend-src/dist-vite/assets/AdminLayout-miuzOi4K.js @@ -1 +1 @@ -import{d as B,o as N,a as V,c as I,b as n,t as c,f as e,w as t,h as g,v as y,j as u,k as r,C as M,l,D as T,G as j,H as q,I as z,J as A,u as D,z as H}from"./index-DLC2deeT.js";import{a as L,_ as R}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const E={class:"admin-layout"},G={class:"admin-sidebar"},J={class:"sidebar-brand"},W={class:"sidebar-brand-text"},F={class:"sidebar-version"},K={class:"admin-content"},O={class:"content-header"},P={class:"content-breadcrumb"},Q={class:"breadcrumb-current"},U={class:"content-actions"},X={class:"content-body"},Y=B({__name:"AdminLayout",setup(Z){const d=D(),f=H(),m=g(""),_=g(""),b={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","save-records":"转存日志"},p=y(()=>{const o=f.name;return o==="admin-cloud-configs"?"cloud-configs-toggle":o==="admin-cleanup"?"cloud-configs-cleanup":o==="admin-system"?f.query.section||"sys-site":o==="admin-save-records"?"save-records":"dashboard"}),x=y(()=>b[p.value]||"仪表盘");function w(o){o==="dashboard"?d.push("/admin/dashboard"):o==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):o==="cloud-configs-cleanup"?d.push("/admin/cleanup"):o.startsWith("sys-")?d.push({path:"/admin/system",query:{section:o}}):o==="save-records"?d.push("/admin/save-records"):o==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function h(){d.push("/")}return N(async()=>{try{const o=await L();m.value=o.site_name||""}catch{}try{const s=await(await fetch("/health")).json();_.value=s.version}catch{}}),(o,s)=>{const i=u("el-icon"),a=u("el-menu-item"),v=u("el-sub-menu"),C=u("el-menu"),k=u("el-button"),S=u("router-view");return V(),I("div",E,[n("aside",G,[n("div",J,[s[1]||(s[1]=n("div",{class:"sidebar-logo"},"☁️",-1)),n("div",W,[n("h2",null,c(m.value||"CloudSearch"),1),s[0]||(s[0]=n("p",null,"管理控制台",-1))])]),e(C,{"default-active":p.value,class:"sidebar-menu",onSelect:w},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=n("span",null,"仪表盘",-1))]),_:1}),e(v,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=n("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(v,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=n("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(q))]),_:1}),s[13]||(s[13]=n("span",null,"转存日志",-1))]),_:1}),s[15]||(s[15]=n("div",{class:"sidebar-spacer"},null,-1)),n("div",F,"v"+c(_.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(z))]),_:1}),s[14]||(s[14]=n("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),n("div",K,[n("header",O,[n("div",P,[n("span",Q,c(x.value),1)]),n("div",U,[e(k,{text:"",size:"small",onClick:h},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[16]||(s[16]=l(" 返回前台 ",-1))]),_:1})])]),n("main",X,[e(S)])])])}}}),es=R(Y,[["__scopeId","data-v-647abf08"]]);export{es as default}; +import{d as B,o as N,a as V,c as I,b as n,t as c,f as e,w as t,h as g,v as y,j as u,k as r,C as M,l,D as T,G as j,H as q,I as z,J as A,u as D,z as H}from"./index-Bsy0LTRb.js";import{a as L,_ as R}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const E={class:"admin-layout"},G={class:"admin-sidebar"},J={class:"sidebar-brand"},W={class:"sidebar-brand-text"},F={class:"sidebar-version"},K={class:"admin-content"},O={class:"content-header"},P={class:"content-breadcrumb"},Q={class:"breadcrumb-current"},U={class:"content-actions"},X={class:"content-body"},Y=B({__name:"AdminLayout",setup(Z){const d=D(),f=H(),m=g(""),_=g(""),b={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","save-records":"转存日志"},p=y(()=>{const o=f.name;return o==="admin-cloud-configs"?"cloud-configs-toggle":o==="admin-cleanup"?"cloud-configs-cleanup":o==="admin-system"?f.query.section||"sys-site":o==="admin-save-records"?"save-records":"dashboard"}),x=y(()=>b[p.value]||"仪表盘");function w(o){o==="dashboard"?d.push("/admin/dashboard"):o==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):o==="cloud-configs-cleanup"?d.push("/admin/cleanup"):o.startsWith("sys-")?d.push({path:"/admin/system",query:{section:o}}):o==="save-records"?d.push("/admin/save-records"):o==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function h(){d.push("/")}return N(async()=>{try{const o=await L();m.value=o.site_name||""}catch{}try{const s=await(await fetch("/health")).json();_.value=s.version}catch{}}),(o,s)=>{const i=u("el-icon"),a=u("el-menu-item"),v=u("el-sub-menu"),C=u("el-menu"),k=u("el-button"),S=u("router-view");return V(),I("div",E,[n("aside",G,[n("div",J,[s[1]||(s[1]=n("div",{class:"sidebar-logo"},"☁️",-1)),n("div",W,[n("h2",null,c(m.value||"CloudSearch"),1),s[0]||(s[0]=n("p",null,"管理控制台",-1))])]),e(C,{"default-active":p.value,class:"sidebar-menu",onSelect:w},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=n("span",null,"仪表盘",-1))]),_:1}),e(v,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=n("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(v,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=n("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(q))]),_:1}),s[13]||(s[13]=n("span",null,"转存日志",-1))]),_:1}),s[15]||(s[15]=n("div",{class:"sidebar-spacer"},null,-1)),n("div",F,"v"+c(_.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(z))]),_:1}),s[14]||(s[14]=n("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),n("div",K,[n("header",O,[n("div",P,[n("span",Q,c(x.value),1)]),n("div",U,[e(k,{text:"",size:"small",onClick:h},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[16]||(s[16]=l(" 返回前台 ",-1))]),_:1})])]),n("main",X,[e(S)])])])}}}),es=R(Y,[["__scopeId","data-v-647abf08"]]);export{es as default}; diff --git a/source_clean/frontend/assets/AdminLogin-VVxvaZnt.js b/source_clean/frontend-src/dist-vite/assets/AdminLogin-CnuINV9I.js similarity index 94% rename from source_clean/frontend/assets/AdminLogin-VVxvaZnt.js rename to source_clean/frontend-src/dist-vite/assets/AdminLogin-CnuINV9I.js index 3333756..95d52d2 100644 --- a/source_clean/frontend/assets/AdminLogin-VVxvaZnt.js +++ b/source_clean/frontend-src/dist-vite/assets/AdminLogin-CnuINV9I.js @@ -1 +1 @@ -import{d as k,o as C,a as w,c as y,b as a,t as m,f as t,w as i,g as x,e as L,h as d,j as p,l as N,i as S,E as B}from"./index-DLC2deeT.js";import{a as E,d as M,_ as U}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const j={class:"admin-login-page"},q={class:"login-card"},A={class:"login-brand"},I={class:"login-title"},K={key:0,class:"error-msg"},R={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const f=d(),u=d(!1),c=d(""),g=d(""),v=d("");E().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=f.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await M(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return w(),y("div",j,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",q,[a("div",A,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",I,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:f,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=_=>s.username=_),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=_=>s.password=_),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(w(),y("p",K,m(c.value),1)):L("",!0),a("p",R,"CloudSearch v"+m(v.value),1)])])}}}),G=U(z,[["__scopeId","data-v-bd0b6672"]]);export{G as default}; +import{d as k,o as C,a as w,c as y,b as a,t as m,f as t,w as i,g as x,e as L,h as d,j as p,l as N,i as S,E as B}from"./index-Bsy0LTRb.js";import{a as E,d as M,_ as U}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const j={class:"admin-login-page"},q={class:"login-card"},A={class:"login-brand"},I={class:"login-title"},K={key:0,class:"error-msg"},R={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const f=d(),u=d(!1),c=d(""),g=d(""),v=d("");E().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=f.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await M(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return w(),y("div",j,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",q,[a("div",A,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",I,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:f,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=_=>s.username=_),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=_=>s.password=_),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(w(),y("p",K,m(c.value),1)):L("",!0),a("p",R,"CloudSearch v"+m(v.value),1)])])}}}),G=U(z,[["__scopeId","data-v-bd0b6672"]]);export{G as default}; diff --git a/source_clean/frontend/assets/Cleanup-B77x7c3T.js b/source_clean/frontend-src/dist-vite/assets/Cleanup-B_lvCL8b.js similarity index 99% rename from source_clean/frontend/assets/Cleanup-B77x7c3T.js rename to source_clean/frontend-src/dist-vite/assets/Cleanup-B_lvCL8b.js index 5912c57..e4b88b1 100644 --- a/source_clean/frontend/assets/Cleanup-B77x7c3T.js +++ b/source_clean/frontend-src/dist-vite/assets/Cleanup-B_lvCL8b.js @@ -1 +1 @@ -import{d as X,o as Y,a as _,c as f,f as a,w as u,j as p,i as Z,b as t,F as ee,r as le,y as N,l as m,t as v,e as g,g as ae,h as y,v as r,E as d}from"./index-DLC2deeT.js";import{k as te,p as se,r as ne,v as oe,_ as ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ie={class:"cleanup-section"},re={class:"cleanup-grid"},pe={class:"cleanup-group"},de={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap"}},ce={style:{display:"flex","align-items":"center",gap:"10px"}},_e={style:{width:"100%"}},me={key:0,style:{display:"flex",gap:"6px","flex-wrap":"wrap","margin-bottom":"6px"}},fe={style:{display:"flex",gap:"6px"}},ve={class:"cleanup-group"},ge={style:{display:"flex","align-items":"center",gap:"8px"}},ye={style:{display:"flex","align-items":"center",gap:"8px"}},he={style:{display:"flex","align-items":"center",gap:"8px"}},be={style:{display:"flex","align-items":"center",gap:"8px"}},xe={class:"cleanup-group"},we={class:"cleanup-group"},Ve={class:"cleanup-actions"},Ce={class:"cleanup-actions-buttons"},Se={key:0,class:"cleanup-info"},ke={key:0,style:{"margin-left":"12px"}},ze=X({__name:"Cleanup",setup(Ne){const s=Z({}),h=y(!1),b=y(!1),z=y(!1),D=r(()=>String(s.cleanup_last_run||"")),T=r(()=>{const l=String(s.cleanup_last_stats||"");if(!l)return"";try{const e=JSON.parse(l),n=[];return e.filesTrashed>0&&n.push(`移入回收站 ${e.filesTrashed} 个文件夹`),e.logsDeleted>0&&n.push(`删除 ${e.logsDeleted} 条日志`),e.trashEmptied&&n.push("已清空回收站"),e.errors>0&&n.push(`⚠️ ${e.errors} 个错误`),n.join(" / ")||"无操作"}catch{return""}}),U=r({get:()=>String(s.cleanup_enabled)==="true",set:l=>{s.cleanup_enabled=l?"true":"false"}}),E=r({get:()=>String(s.cleanup_empty_trash)!=="false",set:l=>{s.cleanup_empty_trash=l?"true":"false"}}),R=r({get:()=>Number(s.cleanup_file_retention_days??7),set:l=>{s.cleanup_file_retention_days=l}}),B=r({get:()=>Number(s.cleanup_log_retention_days??30),set:l=>{s.cleanup_log_retention_days=l}}),x=r({get:()=>String(s.cleanup_space_threshold_enabled)==="true",set:l=>{s.cleanup_space_threshold_enabled=l?"true":"false"}}),M=r({get:()=>Number(s.cleanup_space_threshold_percent??90),set:l=>{s.cleanup_space_threshold_percent=l}}),W=r({get:()=>Number(s.cleanup_space_threshold_delete_percent??10),set:l=>{s.cleanup_space_threshold_delete_percent=l}}),$=r({get:()=>String(s.save_reuse_enabled)!=="false",set:l=>{s.save_reuse_enabled=l?"true":"false"}}),c=y([]),w=y("");function L(){try{const l=String(s.cleanup_whitelist_dirs||"[]");c.value=JSON.parse(l)}catch{c.value=[]}}function F(){const l=w.value.trim();if(l){if(c.value.includes(l)){d.warning("该目录已在白名单中");return}c.value.push(l),w.value=""}}function P(l){c.value.splice(l,1)}const I=r({get:()=>Number(s.cleanup_verify_interval??30),set:l=>{s.cleanup_verify_interval=l}}),J=r({get:()=>Number(s.storage_refresh_interval??180),set:l=>{s.storage_refresh_interval=l}});async function O(){try{const l=await te();for(const e of l)s[e.key]=e.value;L()}catch(l){console.error("加载清理配置失败",l)}}async function A(){var l,e;z.value=!0;try{const i=["cleanup_enabled","cleanup_file_retention_days","cleanup_log_retention_days","cleanup_empty_trash","cleanup_space_threshold_enabled","cleanup_space_threshold_percent","cleanup_space_threshold_delete_percent","save_reuse_enabled","cleanup_verify_interval","storage_refresh_interval"].map(V=>({key:V,value:String(s[V]??"")}));i.push({key:"cleanup_whitelist_dirs",value:JSON.stringify(c.value)}),await se(i),d.success("清理配置已保存")}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"保存失败")}finally{z.value=!1}}async function q(){var l,e;h.value=!0;try{const n=await ne();n.success?d.success(n.message):d.warning(n.message),await O()}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清理失败")}finally{h.value=!1}}async function G(){var l,e;b.value=!0;try{const n=await oe();n.success?d.success(n.message):d.warning(n.message)}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清空回收站失败")}finally{b.value=!1}}return Y(()=>{O()}),(l,e)=>{const n=p("el-switch"),i=p("el-form-item"),V=p("el-tag"),H=p("el-input"),C=p("el-button"),S=p("el-form"),k=p("el-input-number"),j=p("el-slider"),Q=p("el-card");return _(),f("div",ie,[a(Q,{class:"config-card"},{header:u(()=>[...e[11]||(e[11]=[t("span",null,"🧹 存储清理",-1)])]),default:u(()=>[t("div",re,[t("div",pe,[e[15]||(e[15]=t("div",{class:"cleanup-group-label"},"⏱ 基础清理策略",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"自动清理"},{default:u(()=>[t("div",de,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),size:"small"},null,8,["modelValue"]),e[12]||(e[12]=t("span",{class:"cleanup-hint"},"每天自动检查一次,删除过期日志、移入回收站文件",-1))])]),_:1}),a(i,{label:"清空回收站"},{default:u(()=>[t("div",ce,[a(n,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),size:"small"},null,8,["modelValue"]),e[13]||(e[13]=t("span",{class:"cleanup-hint"},"清理时一并清空各网盘回收站",-1))])]),_:1}),a(i,{label:"白名单目录"},{default:u(()=>[t("div",_e,[c.value.length?(_(),f("div",me,[(_(!0),f(ee,null,le(c.value,(o,K)=>(_(),N(V,{key:K,closable:"",size:"small",onClose:De=>P(K)},{default:u(()=>[m(v(o),1)]),_:2},1032,["onClose"]))),128))])):g("",!0),t("div",fe,[a(H,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),placeholder:"输入目录名",size:"small",style:{width:"160px"},onKeyup:ae(F,["enter"])},null,8,["modelValue"]),a(C,{type:"primary",size:"small",onClick:F},{default:u(()=>[...e[14]||(e[14]=[m("添加",-1)])]),_:1})])])]),_:1})]),_:1})]),t("div",ve,[e[20]||(e[20]=t("div",{class:"cleanup-group-label"},"📦 保留设置",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"文件保留"},{default:u(()=>[t("div",ge,[a(k,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=o=>R.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[16]||(e[16]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"日志保留"},{default:u(()=>[t("div",ye,[a(k,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=o=>B.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[17]||(e[17]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"Cookie检测"},{default:u(()=>[t("div",he,[a(k,{modelValue:I.value,"onUpdate:modelValue":e[5]||(e[5]=o=>I.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[18]||(e[18]=t("span",null,"分钟",-1))])]),_:1}),a(i,{label:"空间校准"},{default:u(()=>[t("div",be,[a(k,{modelValue:J.value,"onUpdate:modelValue":e[6]||(e[6]=o=>J.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[19]||(e[19]=t("span",null,"分钟",-1))])]),_:1})]),_:1})]),t("div",xe,[e[22]||(e[22]=t("div",{class:"cleanup-group-label"},"📊 空间阈值自动清理",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"启用"},{default:u(()=>[a(n,{modelValue:x.value,"onUpdate:modelValue":e[7]||(e[7]=o=>x.value=o),size:"small"},null,8,["modelValue"]),e[21]||(e[21]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"已用空间超过阈值时,按比例删除最旧的转存文件",-1))]),_:1}),x.value?(_(),N(i,{key:0,label:"使用阈值"},{default:u(()=>[a(j,{modelValue:M.value,"onUpdate:modelValue":e[8]||(e[8]=o=>M.value=o),min:50,max:99,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0),x.value?(_(),N(i,{key:1,label:"删除比例"},{default:u(()=>[a(j,{modelValue:W.value,"onUpdate:modelValue":e[9]||(e[9]=o=>W.value=o),min:5,max:50,step:5,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0)]),_:1})]),t("div",we,[e[24]||(e[24]=t("div",{class:"cleanup-group-label"},"🔗 分享链接复用",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"复用"},{default:u(()=>[a(n,{modelValue:$.value,"onUpdate:modelValue":e[10]||(e[10]=o=>$.value=o),size:"small"},null,8,["modelValue"]),e[23]||(e[23]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"相同原始链接不再重复转存,复用已有分享链接(会自动验证原链接有效性;60秒内重复请求直接返回已有链接)",-1))]),_:1})]),_:1})])]),t("div",Ve,[t("div",Ce,[a(C,{type:"primary",loading:z.value,onClick:A},{default:u(()=>[...e[25]||(e[25]=[m("💾 保存清理配置",-1)])]),_:1},8,["loading"]),a(C,{type:"danger",loading:h.value,onClick:q},{default:u(()=>[m(v(h.value?"清理中...":"🗑️ 立即清理"),1)]),_:1},8,["loading"]),a(C,{type:"warning",loading:b.value,onClick:G},{default:u(()=>[m(v(b.value?"清空中...":"🧹 清空回收站"),1)]),_:1},8,["loading"])]),D.value?(_(),f("div",Se,[m(" ⏰ 上次清理:"+v(D.value)+" ",1),T.value?(_(),f("span",ke,"📊 "+v(T.value),1)):g("",!0)])):g("",!0)])]),_:1})])}}}),Ee=ue(ze,[["__scopeId","data-v-dfd5abc7"]]);export{Ee as default}; +import{d as X,o as Y,a as _,c as f,f as a,w as u,j as p,i as Z,b as t,F as ee,r as le,y as N,l as m,t as v,e as g,g as ae,h as y,v as r,E as d}from"./index-Bsy0LTRb.js";import{k as te,p as se,r as ne,v as oe,_ as ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ie={class:"cleanup-section"},re={class:"cleanup-grid"},pe={class:"cleanup-group"},de={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap"}},ce={style:{display:"flex","align-items":"center",gap:"10px"}},_e={style:{width:"100%"}},me={key:0,style:{display:"flex",gap:"6px","flex-wrap":"wrap","margin-bottom":"6px"}},fe={style:{display:"flex",gap:"6px"}},ve={class:"cleanup-group"},ge={style:{display:"flex","align-items":"center",gap:"8px"}},ye={style:{display:"flex","align-items":"center",gap:"8px"}},he={style:{display:"flex","align-items":"center",gap:"8px"}},be={style:{display:"flex","align-items":"center",gap:"8px"}},xe={class:"cleanup-group"},we={class:"cleanup-group"},Ve={class:"cleanup-actions"},Ce={class:"cleanup-actions-buttons"},Se={key:0,class:"cleanup-info"},ke={key:0,style:{"margin-left":"12px"}},ze=X({__name:"Cleanup",setup(Ne){const s=Z({}),h=y(!1),b=y(!1),z=y(!1),D=r(()=>String(s.cleanup_last_run||"")),T=r(()=>{const l=String(s.cleanup_last_stats||"");if(!l)return"";try{const e=JSON.parse(l),n=[];return e.filesTrashed>0&&n.push(`移入回收站 ${e.filesTrashed} 个文件夹`),e.logsDeleted>0&&n.push(`删除 ${e.logsDeleted} 条日志`),e.trashEmptied&&n.push("已清空回收站"),e.errors>0&&n.push(`⚠️ ${e.errors} 个错误`),n.join(" / ")||"无操作"}catch{return""}}),U=r({get:()=>String(s.cleanup_enabled)==="true",set:l=>{s.cleanup_enabled=l?"true":"false"}}),E=r({get:()=>String(s.cleanup_empty_trash)!=="false",set:l=>{s.cleanup_empty_trash=l?"true":"false"}}),R=r({get:()=>Number(s.cleanup_file_retention_days??7),set:l=>{s.cleanup_file_retention_days=l}}),B=r({get:()=>Number(s.cleanup_log_retention_days??30),set:l=>{s.cleanup_log_retention_days=l}}),x=r({get:()=>String(s.cleanup_space_threshold_enabled)==="true",set:l=>{s.cleanup_space_threshold_enabled=l?"true":"false"}}),M=r({get:()=>Number(s.cleanup_space_threshold_percent??90),set:l=>{s.cleanup_space_threshold_percent=l}}),W=r({get:()=>Number(s.cleanup_space_threshold_delete_percent??10),set:l=>{s.cleanup_space_threshold_delete_percent=l}}),$=r({get:()=>String(s.save_reuse_enabled)!=="false",set:l=>{s.save_reuse_enabled=l?"true":"false"}}),c=y([]),w=y("");function L(){try{const l=String(s.cleanup_whitelist_dirs||"[]");c.value=JSON.parse(l)}catch{c.value=[]}}function F(){const l=w.value.trim();if(l){if(c.value.includes(l)){d.warning("该目录已在白名单中");return}c.value.push(l),w.value=""}}function P(l){c.value.splice(l,1)}const I=r({get:()=>Number(s.cleanup_verify_interval??30),set:l=>{s.cleanup_verify_interval=l}}),J=r({get:()=>Number(s.storage_refresh_interval??180),set:l=>{s.storage_refresh_interval=l}});async function O(){try{const l=await te();for(const e of l)s[e.key]=e.value;L()}catch(l){console.error("加载清理配置失败",l)}}async function A(){var l,e;z.value=!0;try{const i=["cleanup_enabled","cleanup_file_retention_days","cleanup_log_retention_days","cleanup_empty_trash","cleanup_space_threshold_enabled","cleanup_space_threshold_percent","cleanup_space_threshold_delete_percent","save_reuse_enabled","cleanup_verify_interval","storage_refresh_interval"].map(V=>({key:V,value:String(s[V]??"")}));i.push({key:"cleanup_whitelist_dirs",value:JSON.stringify(c.value)}),await se(i),d.success("清理配置已保存")}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"保存失败")}finally{z.value=!1}}async function q(){var l,e;h.value=!0;try{const n=await ne();n.success?d.success(n.message):d.warning(n.message),await O()}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清理失败")}finally{h.value=!1}}async function G(){var l,e;b.value=!0;try{const n=await oe();n.success?d.success(n.message):d.warning(n.message)}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清空回收站失败")}finally{b.value=!1}}return Y(()=>{O()}),(l,e)=>{const n=p("el-switch"),i=p("el-form-item"),V=p("el-tag"),H=p("el-input"),C=p("el-button"),S=p("el-form"),k=p("el-input-number"),j=p("el-slider"),Q=p("el-card");return _(),f("div",ie,[a(Q,{class:"config-card"},{header:u(()=>[...e[11]||(e[11]=[t("span",null,"🧹 存储清理",-1)])]),default:u(()=>[t("div",re,[t("div",pe,[e[15]||(e[15]=t("div",{class:"cleanup-group-label"},"⏱ 基础清理策略",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"自动清理"},{default:u(()=>[t("div",de,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),size:"small"},null,8,["modelValue"]),e[12]||(e[12]=t("span",{class:"cleanup-hint"},"每天自动检查一次,删除过期日志、移入回收站文件",-1))])]),_:1}),a(i,{label:"清空回收站"},{default:u(()=>[t("div",ce,[a(n,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),size:"small"},null,8,["modelValue"]),e[13]||(e[13]=t("span",{class:"cleanup-hint"},"清理时一并清空各网盘回收站",-1))])]),_:1}),a(i,{label:"白名单目录"},{default:u(()=>[t("div",_e,[c.value.length?(_(),f("div",me,[(_(!0),f(ee,null,le(c.value,(o,K)=>(_(),N(V,{key:K,closable:"",size:"small",onClose:De=>P(K)},{default:u(()=>[m(v(o),1)]),_:2},1032,["onClose"]))),128))])):g("",!0),t("div",fe,[a(H,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),placeholder:"输入目录名",size:"small",style:{width:"160px"},onKeyup:ae(F,["enter"])},null,8,["modelValue"]),a(C,{type:"primary",size:"small",onClick:F},{default:u(()=>[...e[14]||(e[14]=[m("添加",-1)])]),_:1})])])]),_:1})]),_:1})]),t("div",ve,[e[20]||(e[20]=t("div",{class:"cleanup-group-label"},"📦 保留设置",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"文件保留"},{default:u(()=>[t("div",ge,[a(k,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=o=>R.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[16]||(e[16]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"日志保留"},{default:u(()=>[t("div",ye,[a(k,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=o=>B.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[17]||(e[17]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"Cookie检测"},{default:u(()=>[t("div",he,[a(k,{modelValue:I.value,"onUpdate:modelValue":e[5]||(e[5]=o=>I.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[18]||(e[18]=t("span",null,"分钟",-1))])]),_:1}),a(i,{label:"空间校准"},{default:u(()=>[t("div",be,[a(k,{modelValue:J.value,"onUpdate:modelValue":e[6]||(e[6]=o=>J.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[19]||(e[19]=t("span",null,"分钟",-1))])]),_:1})]),_:1})]),t("div",xe,[e[22]||(e[22]=t("div",{class:"cleanup-group-label"},"📊 空间阈值自动清理",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"启用"},{default:u(()=>[a(n,{modelValue:x.value,"onUpdate:modelValue":e[7]||(e[7]=o=>x.value=o),size:"small"},null,8,["modelValue"]),e[21]||(e[21]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"已用空间超过阈值时,按比例删除最旧的转存文件",-1))]),_:1}),x.value?(_(),N(i,{key:0,label:"使用阈值"},{default:u(()=>[a(j,{modelValue:M.value,"onUpdate:modelValue":e[8]||(e[8]=o=>M.value=o),min:50,max:99,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0),x.value?(_(),N(i,{key:1,label:"删除比例"},{default:u(()=>[a(j,{modelValue:W.value,"onUpdate:modelValue":e[9]||(e[9]=o=>W.value=o),min:5,max:50,step:5,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0)]),_:1})]),t("div",we,[e[24]||(e[24]=t("div",{class:"cleanup-group-label"},"🔗 分享链接复用",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"复用"},{default:u(()=>[a(n,{modelValue:$.value,"onUpdate:modelValue":e[10]||(e[10]=o=>$.value=o),size:"small"},null,8,["modelValue"]),e[23]||(e[23]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"相同原始链接不再重复转存,复用已有分享链接(会自动验证原链接有效性;60秒内重复请求直接返回已有链接)",-1))]),_:1})]),_:1})])]),t("div",Ve,[t("div",Ce,[a(C,{type:"primary",loading:z.value,onClick:A},{default:u(()=>[...e[25]||(e[25]=[m("💾 保存清理配置",-1)])]),_:1},8,["loading"]),a(C,{type:"danger",loading:h.value,onClick:q},{default:u(()=>[m(v(h.value?"清理中...":"🗑️ 立即清理"),1)]),_:1},8,["loading"]),a(C,{type:"warning",loading:b.value,onClick:G},{default:u(()=>[m(v(b.value?"清空中...":"🧹 清空回收站"),1)]),_:1},8,["loading"])]),D.value?(_(),f("div",Se,[m(" ⏰ 上次清理:"+v(D.value)+" ",1),T.value?(_(),f("span",ke,"📊 "+v(T.value),1)):g("",!0)])):g("",!0)])]),_:1})])}}}),Ee=ue(ze,[["__scopeId","data-v-dfd5abc7"]]);export{Ee as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/CloudBadge-BhaCxKyo.js b/source_clean/frontend-src/dist-vite/assets/CloudBadge-BQbzCPM-.js similarity index 78% rename from source_clean/frontend-src/dist-vite/assets/CloudBadge-BhaCxKyo.js rename to source_clean/frontend-src/dist-vite/assets/CloudBadge-BQbzCPM-.js index 125f241..d32c138 100644 --- a/source_clean/frontend-src/dist-vite/assets/CloudBadge-BhaCxKyo.js +++ b/source_clean/frontend-src/dist-vite/assets/CloudBadge-BQbzCPM-.js @@ -1 +1 @@ -import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d as l,a as t,c,p as d,k as o,e as r,l as u,t as m}from"./index-DLC2deeT.js";import{_}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const p=["src"],i=l({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(C,y)=>(t(),c("span",{class:"cloud-badge",style:d({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(t(),c("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,p)):r("",!0),u(" "+m(o(n)[e.cloud_type]),1)],4))}}),L=_(i,[["__scopeId","data-v-9106805f"]]);export{L as C}; +import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d as l,a as t,c,p as d,k as o,e as r,l as u,t as m}from"./index-Bsy0LTRb.js";import{_}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const p=["src"],i=l({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(C,y)=>(t(),c("span",{class:"cloud-badge",style:d({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(t(),c("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,p)):r("",!0),u(" "+m(o(n)[e.cloud_type]),1)],4))}}),L=_(i,[["__scopeId","data-v-9106805f"]]);export{L as C}; diff --git a/source_clean/frontend-src/dist-vite/assets/CloudConfig-BaEpQpQM.js b/source_clean/frontend-src/dist-vite/assets/CloudConfig-DIBXz7ib.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/CloudConfig-BaEpQpQM.js rename to source_clean/frontend-src/dist-vite/assets/CloudConfig-DIBXz7ib.js index 9412161..1285465 100644 --- a/source_clean/frontend-src/dist-vite/assets/CloudConfig-BaEpQpQM.js +++ b/source_clean/frontend-src/dist-vite/assets/CloudConfig-DIBXz7ib.js @@ -1,4 +1,4 @@ -import{d as ke,o as L,m as ve,E as _,a as c,c as k,f as n,w as a,b as r,h as C,j as p,i as be,F as R,r as K,t as v,y as g,l as d,e as A,k as Ce,M as he,p as xe,n as H,K as Be,L as Te,v as h}from"./index-DLC2deeT.js";import{a as x}from"./index-Bn7NwETH.js";import{c as we,k as Fe,h as Ne,l as G,t as Ve,u as P,m as ze,n as Se,o as $e,_ as Ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import{C as De}from"./CloudBadge-BhaCxKyo.js";const Ie={class:"cloud-config"},Me={class:"cloud-toggle-grid"},Oe=["src"],qe={class:"cloud-label"},Ee={class:"toolbar"},Le={key:0,class:"nickname-text"},Re={key:0,class:"promotion-text"},Ke={key:0,class:"uid-cell"},Ae={key:0,class:"verifying"},He={key:0,class:"storage-cell"},Ge={class:"storage-bar-wrap"},Pe={class:"storage-text"},je={class:"storage-used"},Je={class:"storage-total"},Qe={class:"storage-free"},We={key:0,class:"save-count"},Xe={style:{"line-height":"1.6"}},Ye={class:"cookie-tips-header"},Ze={class:"cookie-tips-title"},et=["innerHTML"],tt=ke({__name:"CloudConfig",setup(ot){const z=C([]),D=C(),F=C([]),B=C(!1),T=C(!1),b=C(null),l=be({cloud_type:"",nickname:"",promotion_account:"",is_transfer_enabled:!1,cookie:"",_verifying:!1,_storageUsed:"",_storageTotal:""}),j=h(()=>({cloud_type:[{required:!0,message:"请选择网盘类型",trigger:"change"}],nickname:[{required:!1,message:"请填写昵称(区分多个同类型网盘)",trigger:"blur"}],promotion_account:[{required:!0,message:"请填写推广平台及账号",trigger:"blur"}]})),J=h(()=>Object.entries(x)),Q=h(()=>{if(!l.cloud_type)return"请先选择网盘类型";const t=l.cloud_type;return t==="quark"||t==="baidu"?`请输入 ${x[t]||t} 的完整 Cookie`:b.value?"留空则保持原有":"输入完整 Cookie"}),W=h(()=>x[l.cloud_type]||l.cloud_type||""),X=h(()=>{const t=l.cloud_type;return t?{quark:`
  • 在电脑上打开 pan.quark.cn 并登录你的夸克账号
  • +import{d as ke,o as L,m as ve,E as _,a as c,c as k,f as n,w as a,b as r,h as C,j as p,i as be,F as R,r as K,t as v,y as g,l as d,e as A,k as Ce,M as he,p as xe,n as H,K as Be,L as Te,v as h}from"./index-Bsy0LTRb.js";import{a as x}from"./index-Bn7NwETH.js";import{c as we,k as Fe,h as Ne,l as G,t as Ve,u as P,m as ze,n as Se,o as $e,_ as Ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import{C as De}from"./CloudBadge-BQbzCPM-.js";const Ie={class:"cloud-config"},Me={class:"cloud-toggle-grid"},Oe=["src"],qe={class:"cloud-label"},Ee={class:"toolbar"},Le={key:0,class:"nickname-text"},Re={key:0,class:"promotion-text"},Ke={key:0,class:"uid-cell"},Ae={key:0,class:"verifying"},He={key:0,class:"storage-cell"},Ge={class:"storage-bar-wrap"},Pe={class:"storage-text"},je={class:"storage-used"},Je={class:"storage-total"},Qe={class:"storage-free"},We={key:0,class:"save-count"},Xe={style:{"line-height":"1.6"}},Ye={class:"cookie-tips-header"},Ze={class:"cookie-tips-title"},et=["innerHTML"],tt=ke({__name:"CloudConfig",setup(ot){const z=C([]),D=C(),F=C([]),B=C(!1),T=C(!1),b=C(null),l=be({cloud_type:"",nickname:"",promotion_account:"",is_transfer_enabled:!1,cookie:"",_verifying:!1,_storageUsed:"",_storageTotal:""}),j=h(()=>({cloud_type:[{required:!0,message:"请选择网盘类型",trigger:"change"}],nickname:[{required:!1,message:"请填写昵称(区分多个同类型网盘)",trigger:"blur"}],promotion_account:[{required:!0,message:"请填写推广平台及账号",trigger:"blur"}]})),J=h(()=>Object.entries(x)),Q=h(()=>{if(!l.cloud_type)return"请先选择网盘类型";const t=l.cloud_type;return t==="quark"||t==="baidu"?`请输入 ${x[t]||t} 的完整 Cookie`:b.value?"留空则保持原有":"输入完整 Cookie"}),W=h(()=>x[l.cloud_type]||l.cloud_type||""),X=h(()=>{const t=l.cloud_type;return t?{quark:`
  • 在电脑上打开 pan.quark.cn 并登录你的夸克账号
  • F12 打开开发者工具 → 切换到 网络 (Network) 选项卡
  • 刷新页面,在请求列表中点击任意一个请求(如 account/info
  • 在右侧 请求头 (Request Headers) 中找到 Cookie 字段
  • diff --git a/source_clean/frontend-src/dist-vite/assets/HomePage-DxF2bBIi.js b/source_clean/frontend-src/dist-vite/assets/HomePage-v6ufhhLl.js similarity index 98% rename from source_clean/frontend-src/dist-vite/assets/HomePage-DxF2bBIi.js rename to source_clean/frontend-src/dist-vite/assets/HomePage-v6ufhhLl.js index cd92cbb..bc53ff5 100644 --- a/source_clean/frontend-src/dist-vite/assets/HomePage-DxF2bBIi.js +++ b/source_clean/frontend-src/dist-vite/assets/HomePage-v6ufhhLl.js @@ -1 +1 @@ -import{d as Q,o as G,a as n,c as a,b as o,F as w,t as c,e as h,f as p,w as f,g as W,r as D,h as l,i as M,j as x,u as Y,k as J,s as X,l as R,n as I}from"./index-DLC2deeT.js";import{g as Z,a as ee,_ as te}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const se={class:"home-page"},oe={class:"hero-section"},ne=["src","alt"],ae={key:1,class:"logo-text"},ie={class:"search-box"},ce={key:1,class:"quote-section"},le={class:"quote-text"},re={class:"quote-author"},ue={class:"content-section"},de={key:0,class:"rankings-grid"},_e={class:"panel-header"},he={class:"panel-title"},pe={class:"panel-tabs"},ve=["onClick"],ge=["onClick"],fe={class:"panel-body"},me=["onClick"],ye={class:"rank-name"},ke={class:"rank-cnt"},Ce=["onClick"],be={class:"panel-footer"},we={key:0},xe={key:1},Ie={key:2},qe={key:3},Se={class:"footer-time"},Ae={key:0,class:"site-footer"},Te={class:"footer-inner"},Ne={class:"footer-actions"},E=8,Ve=Q({__name:"HomePage",setup($e){const q=Y(),m=l(""),u=l([]),d=M({}),_=M({}),v=l(""),y=l(""),k=l(""),S=l(!1),C=l(""),A=l(""),T=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","三人行,必有我师焉。","学而不思则罔,思而不学则殆。","博学之,审问之,慎思之,明辨之,笃行之。","千里之行,始于足下。","不积跬步,无以至千里。","知之为知之,不知为不知,是知也。","工欲善其事,必先利其器。","玉不琢,不成器;人不学,不知道。","学以致用,知行合一。","学海无涯,勤作舟。","书山有路,勤为径。","宝剑锋从磨砺出,梅花香自苦寒来。","锲而不舍,金石可镂。","业精于勤,荒于嬉。","读书破万卷,下笔如有神。","路漫漫其修远兮,吾将上下而求索。","采菊东篱下,悠然见南山。","海内存知己,天涯若比邻。","长风破浪会有时,直挂云帆济沧海。","会当凌绝顶,一览众山小。","山重水复疑无路,柳暗花明又一村。"],N=l(""),F={movie:"🎬",western_movie:"🎥",western_tv:"🌍",donghua:"🐉",global_anime:"🌐",tv:"📺",niche:"💎",hotsite:"🏆"};function L(e){return F[e]||"📋"}function O(e){const t=[];if(e.rating&&t.push(`⭐${e.rating}`),e.searchCount>0){const i=e.searchCount;i>=1e8?t.push(`${(i/1e8).toFixed(1)}亿`):i>=1e4?t.push(`${(i/1e4).toFixed(0)}万`):t.push(String(i))}return t.join(" ")||""}function V(e){return(_[e.category]||"hot")==="hot"?e.hot||[]:e.newest||[]}function U(e){const t=V(e);return d[e.category]?t:t.slice(0,E)}function H(e){return V(e).length>E&&!d[e.category]}function P(e){d[e]=!0}function $(e,t){_[e]=t,d[e]=!1}function j(){window.open("/disclaimer/","_blank")}G(async()=>{const e=T[Math.floor(Math.random()*T.length)];C.value=e,A.value="古籍经典";try{const[t,i]=await Promise.all([Z(),ee()]);t.fetchedAt?(N.value=t.fetchedAt,u.value=t.categories||[]):u.value=Array.isArray(t)?t:[];for(const g of u.value)_[g.category]="hot",d[g.category]=!1;i.site_logo&&(v.value=i.site_logo),i.site_name&&(y.value=i.site_name),i.site_disclaimer&&(k.value=i.site_disclaimer),S.value=!0}catch(t){console.error("加载首页数据失败",t)}});function z(){const e=m.value.trim();e&&q.push("/search?q="+encodeURIComponent(e))}function K(e){q.push("/search?q="+encodeURIComponent(e))}return(e,t)=>{const i=x("el-icon"),g=x("el-input"),B=x("el-button");return n(),a("div",se,[o("div",oe,[S.value?(n(),a(w,{key:0},[v.value?(n(),a("img",{key:0,src:v.value,alt:y.value||"CloudSearch",class:"logo-img",onError:t[0]||(t[0]=s=>{s.target.style.display="none",v.value=""})},null,40,ne)):(n(),a("div",ae,c(y.value||"CloudSearch"),1))],64)):h("",!0),o("div",ie,[p(g,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=s=>m.value=s),placeholder:"搜索网盘资源,或粘贴视频/网盘链接...",size:"large",clearable:"",onKeyup:W(z,["enter"])},{prefix:f(()=>[p(i,null,{default:f(()=>[p(J(X))]),_:1})]),_:1},8,["modelValue"]),p(B,{type:"primary",size:"large",onClick:z,class:"search-btn"},{default:f(()=>[...t[2]||(t[2]=[R(" 搜 索 ",-1)])]),_:1})]),C.value?(n(),a("div",ce,[o("span",le,"「 "+c(C.value)+" 」",1),o("span",re,"---"+c(A.value),1)])):h("",!0)]),o("div",ue,[u.value.length>0?(n(),a("div",de,[(n(!0),a(w,null,D(u.value,s=>(n(),a("div",{key:s.category,class:"rank-panel"},[o("div",_e,[o("span",he,c(L(s.category))+" "+c(s.label),1),o("div",pe,[o("span",{class:I(["panel-tab",{active:_[s.category]==="hot"}]),onClick:r=>$(s.category,"hot")},"热榜",10,ve),o("span",{class:I(["panel-tab",{active:_[s.category]==="newest"}]),onClick:r=>$(s.category,"newest")},"最新",10,ge)])]),o("div",fe,[(n(!0),a(w,null,D(U(s),(r,b)=>(n(),a("div",{key:s.category+"-"+b,class:"rank-item",onClick:ze=>K(r.keyword)},[o("span",{class:I(["rank-idx",{"top-three":b<3}])},c(b+1),3),o("span",ye,c(r.keyword),1),o("span",ke,c(O(r)),1)],8,me))),128)),H(s)?(n(),a("div",{key:0,class:"rank-expand",onClick:r=>P(s.category)}," 展开全部 ▼ ",8,Ce)):h("",!0)]),o("div",be,[s.category==="hotsite"?(n(),a("span",we,"基于本站搜索数据")):s.category==="donghua"||s.category==="global_anime"?(n(),a("span",xe,"数据来源:Bilibili")):s.category==="movie"||s.category==="tv"?(n(),a("span",Ie,"数据来源:百度")):(n(),a("span",qe,"数据来源:TMDB")),o("span",Se,c(N.value),1)])]))),128))])):h("",!0)]),k.value?(n(),a("div",Ae,[o("div",Te,c(k.value),1),o("div",Ne,[p(B,{class:"footer-disclaimer-btn",size:"small",onClick:j},{default:f(()=>[...t[3]||(t[3]=[R("📜 免责声明",-1)])]),_:1})])])):h("",!0)])}}}),Me=te(Ve,[["__scopeId","data-v-c48c836b"]]);export{Me as default}; +import{d as Q,o as G,a as n,c as a,b as o,F as w,t as c,e as h,f as p,w as f,g as W,r as D,h as l,i as M,j as x,u as Y,k as J,s as X,l as R,n as I}from"./index-Bsy0LTRb.js";import{g as Z,a as ee,_ as te}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const se={class:"home-page"},oe={class:"hero-section"},ne=["src","alt"],ae={key:1,class:"logo-text"},ie={class:"search-box"},ce={key:1,class:"quote-section"},le={class:"quote-text"},re={class:"quote-author"},ue={class:"content-section"},de={key:0,class:"rankings-grid"},_e={class:"panel-header"},he={class:"panel-title"},pe={class:"panel-tabs"},ve=["onClick"],ge=["onClick"],fe={class:"panel-body"},me=["onClick"],ye={class:"rank-name"},ke={class:"rank-cnt"},Ce=["onClick"],be={class:"panel-footer"},we={key:0},xe={key:1},Ie={key:2},qe={key:3},Se={class:"footer-time"},Ae={key:0,class:"site-footer"},Te={class:"footer-inner"},Ne={class:"footer-actions"},E=8,Ve=Q({__name:"HomePage",setup($e){const q=Y(),m=l(""),u=l([]),d=M({}),_=M({}),v=l(""),y=l(""),k=l(""),S=l(!1),C=l(""),A=l(""),T=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","三人行,必有我师焉。","学而不思则罔,思而不学则殆。","博学之,审问之,慎思之,明辨之,笃行之。","千里之行,始于足下。","不积跬步,无以至千里。","知之为知之,不知为不知,是知也。","工欲善其事,必先利其器。","玉不琢,不成器;人不学,不知道。","学以致用,知行合一。","学海无涯,勤作舟。","书山有路,勤为径。","宝剑锋从磨砺出,梅花香自苦寒来。","锲而不舍,金石可镂。","业精于勤,荒于嬉。","读书破万卷,下笔如有神。","路漫漫其修远兮,吾将上下而求索。","采菊东篱下,悠然见南山。","海内存知己,天涯若比邻。","长风破浪会有时,直挂云帆济沧海。","会当凌绝顶,一览众山小。","山重水复疑无路,柳暗花明又一村。"],N=l(""),F={movie:"🎬",western_movie:"🎥",western_tv:"🌍",donghua:"🐉",global_anime:"🌐",tv:"📺",niche:"💎",hotsite:"🏆"};function L(e){return F[e]||"📋"}function O(e){const t=[];if(e.rating&&t.push(`⭐${e.rating}`),e.searchCount>0){const i=e.searchCount;i>=1e8?t.push(`${(i/1e8).toFixed(1)}亿`):i>=1e4?t.push(`${(i/1e4).toFixed(0)}万`):t.push(String(i))}return t.join(" ")||""}function V(e){return(_[e.category]||"hot")==="hot"?e.hot||[]:e.newest||[]}function U(e){const t=V(e);return d[e.category]?t:t.slice(0,E)}function H(e){return V(e).length>E&&!d[e.category]}function P(e){d[e]=!0}function $(e,t){_[e]=t,d[e]=!1}function j(){window.open("/disclaimer/","_blank")}G(async()=>{const e=T[Math.floor(Math.random()*T.length)];C.value=e,A.value="古籍经典";try{const[t,i]=await Promise.all([Z(),ee()]);t.fetchedAt?(N.value=t.fetchedAt,u.value=t.categories||[]):u.value=Array.isArray(t)?t:[];for(const g of u.value)_[g.category]="hot",d[g.category]=!1;i.site_logo&&(v.value=i.site_logo),i.site_name&&(y.value=i.site_name),i.site_disclaimer&&(k.value=i.site_disclaimer),S.value=!0}catch(t){console.error("加载首页数据失败",t)}});function z(){const e=m.value.trim();e&&q.push("/search?q="+encodeURIComponent(e))}function K(e){q.push("/search?q="+encodeURIComponent(e))}return(e,t)=>{const i=x("el-icon"),g=x("el-input"),B=x("el-button");return n(),a("div",se,[o("div",oe,[S.value?(n(),a(w,{key:0},[v.value?(n(),a("img",{key:0,src:v.value,alt:y.value||"CloudSearch",class:"logo-img",onError:t[0]||(t[0]=s=>{s.target.style.display="none",v.value=""})},null,40,ne)):(n(),a("div",ae,c(y.value||"CloudSearch"),1))],64)):h("",!0),o("div",ie,[p(g,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=s=>m.value=s),placeholder:"搜索网盘资源,或粘贴视频/网盘链接...",size:"large",clearable:"",onKeyup:W(z,["enter"])},{prefix:f(()=>[p(i,null,{default:f(()=>[p(J(X))]),_:1})]),_:1},8,["modelValue"]),p(B,{type:"primary",size:"large",onClick:z,class:"search-btn"},{default:f(()=>[...t[2]||(t[2]=[R(" 搜 索 ",-1)])]),_:1})]),C.value?(n(),a("div",ce,[o("span",le,"「 "+c(C.value)+" 」",1),o("span",re,"---"+c(A.value),1)])):h("",!0)]),o("div",ue,[u.value.length>0?(n(),a("div",de,[(n(!0),a(w,null,D(u.value,s=>(n(),a("div",{key:s.category,class:"rank-panel"},[o("div",_e,[o("span",he,c(L(s.category))+" "+c(s.label),1),o("div",pe,[o("span",{class:I(["panel-tab",{active:_[s.category]==="hot"}]),onClick:r=>$(s.category,"hot")},"热榜",10,ve),o("span",{class:I(["panel-tab",{active:_[s.category]==="newest"}]),onClick:r=>$(s.category,"newest")},"最新",10,ge)])]),o("div",fe,[(n(!0),a(w,null,D(U(s),(r,b)=>(n(),a("div",{key:s.category+"-"+b,class:"rank-item",onClick:ze=>K(r.keyword)},[o("span",{class:I(["rank-idx",{"top-three":b<3}])},c(b+1),3),o("span",ye,c(r.keyword),1),o("span",ke,c(O(r)),1)],8,me))),128)),H(s)?(n(),a("div",{key:0,class:"rank-expand",onClick:r=>P(s.category)}," 展开全部 ▼ ",8,Ce)):h("",!0)]),o("div",be,[s.category==="hotsite"?(n(),a("span",we,"基于本站搜索数据")):s.category==="donghua"||s.category==="global_anime"?(n(),a("span",xe,"数据来源:Bilibili")):s.category==="movie"||s.category==="tv"?(n(),a("span",Ie,"数据来源:百度")):(n(),a("span",qe,"数据来源:TMDB")),o("span",Se,c(N.value),1)])]))),128))])):h("",!0)]),k.value?(n(),a("div",Ae,[o("div",Te,c(k.value),1),o("div",Ne,[p(B,{class:"footer-disclaimer-btn",size:"small",onClick:j},{default:f(()=>[...t[3]||(t[3]=[R("📜 免责声明",-1)])]),_:1})])])):h("",!0)])}}}),Me=te(Ve,[["__scopeId","data-v-c48c836b"]]);export{Me as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/ResultDetail-CxVMp_nk.js b/source_clean/frontend-src/dist-vite/assets/ResultDetail-B6n5vSIJ.js similarity index 98% rename from source_clean/frontend-src/dist-vite/assets/ResultDetail-CxVMp_nk.js rename to source_clean/frontend-src/dist-vite/assets/ResultDetail-B6n5vSIJ.js index 5424135..ab26f3c 100644 --- a/source_clean/frontend-src/dist-vite/assets/ResultDetail-CxVMp_nk.js +++ b/source_clean/frontend-src/dist-vite/assets/ResultDetail-B6n5vSIJ.js @@ -1 +1 @@ -import{d as U,h as i,o as N,a,c,f as o,w as n,F as j,r as H,y as w,k as G,j as f,b as l,t as r,e as g,z as J,l as p,E as D}from"./index-DLC2deeT.js";import{C as K}from"./CloudBadge-BhaCxKyo.js";import{a as Q}from"./index-Bn7NwETH.js";import{h as W,_ as T,q as X,f as Y,e as Z}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ee={class:"cloud-select"},le=U({__name:"CloudSelect",props:{modelValue:{}},emits:["select","update:modelValue"],setup(R,{emit:E}){const V=R,t=E,s=i(V.modelValue),C=i([]);N(async()=>{try{C.value=await W()}catch(v){console.error("获取网盘配置失败",v)}});function m(v){t("select",v),t("update:modelValue",v)}return(v,y)=>{const b=f("el-option"),h=f("el-select");return a(),c("div",ee,[o(h,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=_=>s.value=_),placeholder:"选择目标网盘",onChange:m},{default:n(()=>[(a(!0),c(j,null,H(C.value,_=>(a(),w(b,{key:_.cloud_type,label:_.nickname||G(Q)[_.cloud_type],value:_.cloud_type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])}}}),te=T(le,[["__scopeId","data-v-098423df"]]),se={class:"result-detail-page"},ae={class:"detail-container"},oe={key:0,class:"loading-state"},ne={key:1,class:"detail-card"},ie={class:"detail-header"},ue={class:"detail-cover"},de=["src","alt"],re={class:"detail-info"},ce={class:"detail-meta"},ve={key:0,class:"detail-desc"},_e={class:"detail-actions"},pe={key:2,class:"detail-card"},fe={class:"detail-video"},me={class:"video-preview"},ye=["src","alt"],ge={class:"video-info"},he={key:0,class:"video-author"},ke={class:"video-platform"},Ve={key:1,class:"detail-desc"},Ce={class:"detail-actions"},we={key:0,class:"video-player-wrapper"},be=["src"],Se={class:"save-dialog-content"},xe={class:"save-file-name"},De={class:"result-dialog-content"},Ee={class:"share-link-box"},Le={class:"share-link-row"},Re=U({__name:"ResultDetail",setup(R){const E=J(),V=i(!1),t=i(null),s=i(null),C=i(!1),m=i(!1),v=i(!1),y=i(""),b=i(!1),h=i(!1),_=i(null),S=i("");N(async()=>{const u=E.params.id;if(u){V.value=!0;try{const e=await X(u);e.intent==="SEARCH"&&e.results.length>0?t.value=e.results[0]:e.intent==="VIDEO_PARSE"&&e.results.length>0&&(s.value=e.results[0])}catch(e){console.error("获取详情失败",e)}finally{V.value=!1}}});function B(){b.value=!!s.value,m.value=!0}function $(){C.value=!0}function A(u){y.value=u}async function I(){if(!y.value){D.warning("请选择目标网盘");return}v.value=!0;try{let u;if(b.value&&s.value)u=await Y({video_url:s.value.video_url,title:s.value.title,target_cloud:y.value});else if(t.value)u=await Z({type:"search",source:t.value,target_cloud:y.value});else return;_.value=u,S.value=u.share_url,m.value=!1,h.value=!0}catch(u){console.error("保存失败",u),D.error("保存失败")}finally{v.value=!1}}async function q(){try{await navigator.clipboard.writeText(S.value),D.success("链接已复制到剪贴板")}catch{D.warning("复制失败,请手动复制")}}return(u,e)=>{const F=f("el-skeleton"),L=f("el-tag"),k=f("el-button"),M=f("el-empty"),z=f("el-dialog"),O=f("el-alert"),P=f("el-input");return a(),c("div",se,[l("div",ae,[V.value?(a(),c("div",oe,[o(F,{rows:6,animated:""})])):t.value?(a(),c("div",ne,[l("div",ie,[l("div",ue,[l("img",{src:t.value.cover,alt:t.value.title},null,8,de),o(K,{cloud_type:t.value.cloud_type},null,8,["cloud_type"])]),l("div",re,[l("h1",null,r(t.value.title),1),l("div",ce,[t.value.file_size?(a(),w(L,{key:0},{default:n(()=>[p("📦 "+r(t.value.file_size),1)]),_:1})):g("",!0),t.value.update_time?(a(),w(L,{key:1},{default:n(()=>[p("🕐 "+r(t.value.update_time),1)]),_:1})):g("",!0),t.value.source?(a(),w(L,{key:2},{default:n(()=>[p("📂 "+r(t.value.source),1)]),_:1})):g("",!0)]),t.value.description?(a(),c("p",ve,r(t.value.description),1)):g("",!0)])]),l("div",_e,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[5]||(e[5]=[p(" 📥 保存到网盘 ",-1)])]),_:1})])])):s.value?(a(),c("div",pe,[l("div",fe,[l("div",me,[l("img",{src:s.value.cover,alt:s.value.title},null,8,ye),l("div",{class:"play-overlay",onClick:$},[...e[6]||(e[6]=[l("div",{class:"play-btn"},"▶ 播放",-1)])])]),l("div",ge,[l("h1",null,r(s.value.title),1),s.value.author?(a(),c("p",he,"👤 "+r(s.value.author),1)):g("",!0),l("p",ke,"📺 "+r(s.value.platform),1),s.value.description?(a(),c("p",Ve,r(s.value.description),1)):g("",!0)])]),l("div",Ce,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[7]||(e[7]=[p(" 📥 保存到云盘 ",-1)])]),_:1})]),C.value?(a(),c("div",we,[l("video",{src:s.value.video_url,controls:"",autoplay:"",class:"video-player"},null,8,be)])):g("",!0)])):(a(),w(M,{key:3,description:"未找到该资源"}))]),o(z,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=d=>m.value=d),title:"保存到网盘",width:"420px"},{footer:n(()=>[o(k,{onClick:e[0]||(e[0]=d=>m.value=!1)},{default:n(()=>[...e[8]||(e[8]=[p("取消",-1)])]),_:1}),o(k,{type:"primary",loading:v.value,onClick:I},{default:n(()=>[...e[9]||(e[9]=[p("确认保存",-1)])]),_:1},8,["loading"])]),default:n(()=>{var d,x;return[l("div",Se,[l("p",xe,"📄 "+r(((d=t.value)==null?void 0:d.title)||((x=s.value)==null?void 0:x.title)),1),o(te,{onSelect:A})])]}),_:1},8,["modelValue"]),o(z,{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=d=>h.value=d),title:"保存成功",width:"420px"},{footer:n(()=>[o(k,{type:"primary",onClick:e[3]||(e[3]=d=>h.value=!1)},{default:n(()=>[...e[12]||(e[12]=[p("关闭",-1)])]),_:1})]),default:n(()=>{var d;return[l("div",De,[o(O,{type:"success",title:((d=_.value)==null?void 0:d.message)||"保存成功","show-icon":"",closable:!1},null,8,["title"]),l("div",Ee,[e[11]||(e[11]=l("p",{class:"share-label"},"分享链接:",-1)),l("div",Le,[o(P,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=x=>S.value=x),readonly:""},null,8,["modelValue"]),o(k,{onClick:q},{default:n(()=>[...e[10]||(e[10]=[p("复制",-1)])]),_:1})])])])]}),_:1},8,["modelValue"])])}}}),Te=T(Re,[["__scopeId","data-v-755e2105"]]);export{Te as default}; +import{d as U,h as i,o as N,a,c,f as o,w as n,F as j,r as H,y as w,k as G,j as f,b as l,t as r,e as g,z as J,l as p,E as D}from"./index-Bsy0LTRb.js";import{C as K}from"./CloudBadge-BQbzCPM-.js";import{a as Q}from"./index-Bn7NwETH.js";import{h as W,_ as T,q as X,f as Y,e as Z}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ee={class:"cloud-select"},le=U({__name:"CloudSelect",props:{modelValue:{}},emits:["select","update:modelValue"],setup(R,{emit:E}){const V=R,t=E,s=i(V.modelValue),C=i([]);N(async()=>{try{C.value=await W()}catch(v){console.error("获取网盘配置失败",v)}});function m(v){t("select",v),t("update:modelValue",v)}return(v,y)=>{const b=f("el-option"),h=f("el-select");return a(),c("div",ee,[o(h,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=_=>s.value=_),placeholder:"选择目标网盘",onChange:m},{default:n(()=>[(a(!0),c(j,null,H(C.value,_=>(a(),w(b,{key:_.cloud_type,label:_.nickname||G(Q)[_.cloud_type],value:_.cloud_type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])}}}),te=T(le,[["__scopeId","data-v-098423df"]]),se={class:"result-detail-page"},ae={class:"detail-container"},oe={key:0,class:"loading-state"},ne={key:1,class:"detail-card"},ie={class:"detail-header"},ue={class:"detail-cover"},de=["src","alt"],re={class:"detail-info"},ce={class:"detail-meta"},ve={key:0,class:"detail-desc"},_e={class:"detail-actions"},pe={key:2,class:"detail-card"},fe={class:"detail-video"},me={class:"video-preview"},ye=["src","alt"],ge={class:"video-info"},he={key:0,class:"video-author"},ke={class:"video-platform"},Ve={key:1,class:"detail-desc"},Ce={class:"detail-actions"},we={key:0,class:"video-player-wrapper"},be=["src"],Se={class:"save-dialog-content"},xe={class:"save-file-name"},De={class:"result-dialog-content"},Ee={class:"share-link-box"},Le={class:"share-link-row"},Re=U({__name:"ResultDetail",setup(R){const E=J(),V=i(!1),t=i(null),s=i(null),C=i(!1),m=i(!1),v=i(!1),y=i(""),b=i(!1),h=i(!1),_=i(null),S=i("");N(async()=>{const u=E.params.id;if(u){V.value=!0;try{const e=await X(u);e.intent==="SEARCH"&&e.results.length>0?t.value=e.results[0]:e.intent==="VIDEO_PARSE"&&e.results.length>0&&(s.value=e.results[0])}catch(e){console.error("获取详情失败",e)}finally{V.value=!1}}});function B(){b.value=!!s.value,m.value=!0}function $(){C.value=!0}function A(u){y.value=u}async function I(){if(!y.value){D.warning("请选择目标网盘");return}v.value=!0;try{let u;if(b.value&&s.value)u=await Y({video_url:s.value.video_url,title:s.value.title,target_cloud:y.value});else if(t.value)u=await Z({type:"search",source:t.value,target_cloud:y.value});else return;_.value=u,S.value=u.share_url,m.value=!1,h.value=!0}catch(u){console.error("保存失败",u),D.error("保存失败")}finally{v.value=!1}}async function q(){try{await navigator.clipboard.writeText(S.value),D.success("链接已复制到剪贴板")}catch{D.warning("复制失败,请手动复制")}}return(u,e)=>{const F=f("el-skeleton"),L=f("el-tag"),k=f("el-button"),M=f("el-empty"),z=f("el-dialog"),O=f("el-alert"),P=f("el-input");return a(),c("div",se,[l("div",ae,[V.value?(a(),c("div",oe,[o(F,{rows:6,animated:""})])):t.value?(a(),c("div",ne,[l("div",ie,[l("div",ue,[l("img",{src:t.value.cover,alt:t.value.title},null,8,de),o(K,{cloud_type:t.value.cloud_type},null,8,["cloud_type"])]),l("div",re,[l("h1",null,r(t.value.title),1),l("div",ce,[t.value.file_size?(a(),w(L,{key:0},{default:n(()=>[p("📦 "+r(t.value.file_size),1)]),_:1})):g("",!0),t.value.update_time?(a(),w(L,{key:1},{default:n(()=>[p("🕐 "+r(t.value.update_time),1)]),_:1})):g("",!0),t.value.source?(a(),w(L,{key:2},{default:n(()=>[p("📂 "+r(t.value.source),1)]),_:1})):g("",!0)]),t.value.description?(a(),c("p",ve,r(t.value.description),1)):g("",!0)])]),l("div",_e,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[5]||(e[5]=[p(" 📥 保存到网盘 ",-1)])]),_:1})])])):s.value?(a(),c("div",pe,[l("div",fe,[l("div",me,[l("img",{src:s.value.cover,alt:s.value.title},null,8,ye),l("div",{class:"play-overlay",onClick:$},[...e[6]||(e[6]=[l("div",{class:"play-btn"},"▶ 播放",-1)])])]),l("div",ge,[l("h1",null,r(s.value.title),1),s.value.author?(a(),c("p",he,"👤 "+r(s.value.author),1)):g("",!0),l("p",ke,"📺 "+r(s.value.platform),1),s.value.description?(a(),c("p",Ve,r(s.value.description),1)):g("",!0)])]),l("div",Ce,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[7]||(e[7]=[p(" 📥 保存到云盘 ",-1)])]),_:1})]),C.value?(a(),c("div",we,[l("video",{src:s.value.video_url,controls:"",autoplay:"",class:"video-player"},null,8,be)])):g("",!0)])):(a(),w(M,{key:3,description:"未找到该资源"}))]),o(z,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=d=>m.value=d),title:"保存到网盘",width:"420px"},{footer:n(()=>[o(k,{onClick:e[0]||(e[0]=d=>m.value=!1)},{default:n(()=>[...e[8]||(e[8]=[p("取消",-1)])]),_:1}),o(k,{type:"primary",loading:v.value,onClick:I},{default:n(()=>[...e[9]||(e[9]=[p("确认保存",-1)])]),_:1},8,["loading"])]),default:n(()=>{var d,x;return[l("div",Se,[l("p",xe,"📄 "+r(((d=t.value)==null?void 0:d.title)||((x=s.value)==null?void 0:x.title)),1),o(te,{onSelect:A})])]}),_:1},8,["modelValue"]),o(z,{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=d=>h.value=d),title:"保存成功",width:"420px"},{footer:n(()=>[o(k,{type:"primary",onClick:e[3]||(e[3]=d=>h.value=!1)},{default:n(()=>[...e[12]||(e[12]=[p("关闭",-1)])]),_:1})]),default:n(()=>{var d;return[l("div",De,[o(O,{type:"success",title:((d=_.value)==null?void 0:d.message)||"保存成功","show-icon":"",closable:!1},null,8,["title"]),l("div",Ee,[e[11]||(e[11]=l("p",{class:"share-label"},"分享链接:",-1)),l("div",Le,[o(P,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=x=>S.value=x),readonly:""},null,8,["modelValue"]),o(k,{onClick:q},{default:n(()=>[...e[10]||(e[10]=[p("复制",-1)])]),_:1})])])])]}),_:1},8,["modelValue"])])}}}),Te=T(Re,[["__scopeId","data-v-755e2105"]]);export{Te as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/SaveRecords-vmMvuvLS.js b/source_clean/frontend-src/dist-vite/assets/SaveRecords-D4vANRRO.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/SaveRecords-vmMvuvLS.js rename to source_clean/frontend-src/dist-vite/assets/SaveRecords-D4vANRRO.js index 8223929..5c57d6b 100644 --- a/source_clean/frontend-src/dist-vite/assets/SaveRecords-vmMvuvLS.js +++ b/source_clean/frontend-src/dist-vite/assets/SaveRecords-D4vANRRO.js @@ -1 +1 @@ -import{d as Ce,o as xe,a as u,c as r,b as a,f as l,w as d,F as Z,r as q,g as De,t as n,l as g,e as _,h as p,j as m,y as ee,n as M,k as R,s as Se,K as we,O as ze,P as Ne,E as te,Q as Te}from"./index-DLC2deeT.js";import{c as Be,j as $e,_ as Me}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const Fe={class:"save-records"},Ve={class:"toolbar"},Ee={class:"toolbar-row"},He={class:"filter-group"},je={style:{display:"inline-flex",alignItems:"center",gap:"6px"}},Ie=["src"],Le={class:"time-btns"},Ye=["onClick"],Ae={class:"toolbar-actions"},Ge={class:"record-count"},Ke={key:0,class:"save-summary"},Re={class:"summary-item summary-all"},Ue={class:"summary-item summary-success"},Pe={class:"summary-item summary-reused"},Je={class:"summary-item summary-failed"},Oe={key:0,class:"summary-item summary-rate"},Qe={class:"el-table-wrap"},Xe={class:"expand-detail"},We={class:"detail-row"},Ze={class:"detail-cell",style:{flex:"2"}},qe=["href"],et={key:0,class:"detail-cell"},tt={class:"detail-code"},at={key:1,class:"detail-cell"},st={key:2,class:"detail-cell"},lt={key:3,class:"detail-cell"},nt={class:"detail-row"},ot={key:0,class:"detail-cell"},it={key:1,class:"detail-cell"},dt={class:"detail-code"},ut={key:2,class:"detail-cell"},rt={class:"detail-code"},ct={class:"detail-row"},_t={key:0,class:"detail-cell",style:{flex:"2"}},pt=["href"],gt={key:1,class:"detail-cell"},ft={class:"detail-cell"},mt={key:0,class:"detail-row"},vt={class:"detail-cell"},ht={class:"detail-code"},yt={key:0,class:"detail-cell"},bt={class:"detail-code"},kt={class:"detail-cell"},Ct={class:"detail-code"},xt={key:1,class:"detail-row"},Dt={class:"detail-cell detail-full"},St={class:"detail-error"},wt={key:2,class:"detail-row"},zt={class:"detail-cell detail-full"},Nt={class:"detail-error"},Tt=["title"],Bt=["src"],$t=["title"],Mt={key:0,class:"loc-badge"},Ft={key:1,class:"no-data"},Vt=["title"],Et={key:1,class:"err-msg"},Ht={key:2,class:"reuse-msg"},jt={key:3,class:"no-data"},It={class:"action-cell"},Lt={key:1,class:"pagination-wrap"},Yt={class:"pagination-info"},At='',Gt=Ce({__name:"SaveRecords",setup(Kt){const U=p([]),k=p(0),C=p(1),x=p(20),F=p(!1),S=p(""),w=p(""),z=p(""),V=p("today"),E=p(""),H=p(""),N=p(null),j=p([]),v=p(null),ae=[{key:"today",label:"今日"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"lastMonth",label:"上月"}],I=p({});async function se(){try{const s=await Be(),e={};for(const o of s.types)e[o.type]={label:o.label,icon:o.icon};I.value=e}catch{}}function L(s){var e;return((e=I.value[s])==null?void 0:e.label)||s}function P(s){var e;return((e=I.value[s])==null?void 0:e.icon)||At}function le(s){const e=new Set;s.forEach(i=>{i.source_type&&e.add(i.source_type)});const o=new Set(j.value);e.forEach(i=>{o.has(i)||j.value.push(i)})}function Y(s){const e=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0");return`${e}-${o}-${i}`}function J(s){if(!s)return"-";let e=s;/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)&&(e=e.replace(" ","T")+"+08:00");const o=new Date(e);if(isNaN(o.getTime()))return s;const i=c=>String(c).padStart(2,"0");return`${o.getFullYear()}-${i(o.getMonth()+1)}-${i(o.getDate())} ${i(o.getHours())}:${i(o.getMinutes())}:${i(o.getSeconds())}`}function O(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"-"}function Q(s){return s?s>3e4?"dur-slow":s>1e4?"dur-warn":"dur-fast":""}function ne(s){return s.length>50?s.slice(0,50)+"…":s}function oe(s){return s==="success"?"转存成功":s==="reused"?"♻️ 复用已有分享链接":"转存失败"}function ie(s){return s==="success"?"status-ok":s==="reused"?"status-reuse":"status-fail"}function de(s){return s==="success"?"✓":s==="reused"?"♻️":"✗"}const ue={Anhui:"安徽",Beijing:"北京",Chongqing:"重庆",Fujian:"福建",Gansu:"甘肃",Guangdong:"广东",Guangxi:"广西",Guizhou:"贵州",Hainan:"海南",Hebei:"河北",Henan:"河南",Heilongjiang:"黑龙江",Hubei:"湖北",Hunan:"湖南","Inner Mongolia":"内蒙古",Jiangsu:"江苏",Jiangxi:"江西",Jilin:"吉林",Liaoning:"辽宁",Ningxia:"宁夏",Qinghai:"青海",Shaanxi:"陕西",Shandong:"山东",Shanghai:"上海",Shanxi:"山西",Sichuan:"四川",Tianjin:"天津",Tibet:"西藏",Xinjiang:"新疆",Yunnan:"云南",Zhejiang:"浙江","Hong Kong":"香港",Macau:"澳门",Taiwan:"台湾",Changsha:"长沙",Hefei:"合肥",Fuzhou:"福州",Lanzhou:"兰州",Guangzhou:"广州",Nanning:"南宁",Guiyang:"贵阳",Haikou:"海口",Shijiazhuang:"石家庄",Zhengzhou:"郑州",Harbin:"哈尔滨",Wuhan:"武汉",Nanjing:"南京",Nanchang:"南昌",Changchun:"长春",Shenyang:"沈阳",Yinchuan:"银川",Xining:"西宁","Xi'an":"西安",Jinan:"济南",Taiyuan:"太原",Chengdu:"成都",Shenzhen:"深圳",Hangzhou:"杭州",Suzhou:"苏州",Wuxi:"无锡",Ningbo:"宁波",Dongguan:"东莞",Foshan:"佛山",Zhuhai:"珠海",Qingdao:"青岛",Dalian:"大连",Xiamen:"厦门",Kunming:"昆明",Lhasa:"拉萨",Urumqi:"乌鲁木齐",Linyi:"临沂",Wenzhou:"温州",Quanzhou:"泉州"},re={"China Telecom":"中国电信","China Mobile":"中国移动","China Unicom":"中国联通",Chinanet:"中国电信",ChinaNet:"中国电信",CMNET:"中国移动","CNC Group":"中国联通",unicom:"中国联通",telecom:"中国电信",mobile:"中国移动","China Education and Research Network":"教育网",CERNET:"教育网","China Networks":"中国网络",China163:"中国电信","CHINANET BACKBONE":"中国电信","Tencent Cloud":"腾讯云","Alibaba Cloud":"阿里云",Aliyun:"阿里云","Huawei Cloud":"华为云",Baidu:"百度","Beijing Baidu":"百度"};function X(s){return s.replace(/^(中国|China)\s*/i,"").split(/\s+/).filter(Boolean).map(i=>ue[i]||re[i]||i).join(" ")}function ce({row:s}){return s.status==="failed"?"row-failed":""}async function _e(s){try{await navigator.clipboard.writeText(s),te.success("已复制到剪贴板")}catch{const e=document.createElement("textarea");e.value=s,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),te.success("已复制到剪贴板")}}function pe(s){window.open(s,"_blank")}function ge(s,e){}function T(s){V.value=s,N.value=null;const e=new Date,o=e.getFullYear(),i=e.getMonth();let c,f;switch(s){case"today":c=new Date(o,i,e.getDate()),f=c;break;case"week":{const D=e.getDay();c=new Date(o,i,e.getDate()+(D===0?-6:1-D)),f=e;break}case"month":c=new Date(o,i,1),f=e;break;case"lastMonth":c=new Date(o,i-1,1),f=new Date(o,i,0);break;default:c=new Date(o,i,e.getDate()),f=c}E.value=Y(c);const A=new Date(f.getFullYear(),f.getMonth(),f.getDate()+1);H.value=Y(A),y(1)}function fe(s){if(s&&s.length===2){V.value="",E.value=s[0];const e=new Date(s[1]);e.setDate(e.getDate()+1),H.value=Y(e),y(1)}else T("today")}function me(){S.value="",w.value="",z.value="",N.value=null,T("today")}async function y(s=1){F.value=!0;try{C.value=s;const e=S.value||void 0,o=w.value||void 0,i=z.value||void 0,c=await $e(s,x.value,E.value,H.value,e,o,i);U.value=c.records,k.value=c.total,v.value=c.summary||null,le(c.records)}catch(e){console.error("加载转存记录失败",e)}finally{F.value=!1}}return xe(()=>{T("today"),se()}),(s,e)=>{const o=m("el-option"),i=m("el-select"),c=m("el-date-picker"),f=m("el-icon"),A=m("el-input"),D=m("el-button"),W=m("el-tag"),h=m("el-table-column"),B=m("el-tooltip"),ve=m("el-table"),he=m("el-card"),ye=m("el-pagination"),be=Te("loading");return u(),r("div",Fe,[a("div",Ve,[a("div",Ee,[a("div",He,[l(i,{modelValue:S.value,"onUpdate:modelValue":e[0]||(e[0]=t=>S.value=t),placeholder:"状态",clearable:"",style:{width:"100px"},onChange:e[1]||(e[1]=t=>y(1))},{default:d(()=>[l(o,{label:"全部状态",value:""}),l(o,{label:"✓ 成功",value:"success"}),l(o,{label:"♻️ 复用",value:"reused"}),l(o,{label:"✗ 失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=t=>w.value=t),placeholder:"网盘",clearable:"",style:{width:"100px"},onChange:e[3]||(e[3]=t=>y(1))},{default:d(()=>[l(o,{label:"全部网盘",value:""}),(u(!0),r(Z,null,q(j.value,t=>(u(),ee(o,{key:t,label:L(t),value:t},{default:d(()=>[a("span",je,[a("img",{src:P(t),style:{width:"16px",height:"16px"}},null,8,Ie),g(" "+n(L(t)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),a("div",Le,[(u(),r(Z,null,q(ae,t=>a("button",{key:t.key,class:M(["time-btn",{active:V.value===t.key}]),onClick:b=>T(t.key)},n(t.label),11,Ye)),64))]),l(c,{modelValue:N.value,"onUpdate:modelValue":e[4]||(e[4]=t=>N.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"220px"},onChange:fe},null,8,["modelValue"]),l(A,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),placeholder:"搜索资源名称…",clearable:"",style:{width:"180px"},onClear:e[6]||(e[6]=t=>y(1)),onKeyup:e[7]||(e[7]=De(t=>y(1),["enter"]))},{prefix:d(()=>[l(f,null,{default:d(()=>[l(R(Se))]),_:1})]),_:1},8,["modelValue"])]),a("div",Ae,[l(D,{size:"small",onClick:me},{default:d(()=>[...e[11]||(e[11]=[g("重置筛选",-1)])]),_:1}),a("span",Ge,"共 "+n(k.value)+" 条",1)])])]),v.value?(u(),r("div",Ke,[a("span",Re,[e[12]||(e[12]=g("📊 共 ",-1)),a("strong",null,n(v.value.total),1),e[13]||(e[13]=g(" 条",-1))]),e[18]||(e[18]=a("span",{class:"summary-divider"},"|",-1)),a("span",Ue,[e[14]||(e[14]=g("✅ 成功 ",-1)),a("strong",null,n(v.value.success),1)]),a("span",Pe,[e[15]||(e[15]=g("♻️ 复用 ",-1)),a("strong",null,n(v.value.reused),1)]),a("span",Je,[e[16]||(e[16]=g("❌ 失败 ",-1)),a("strong",null,n(v.value.failed),1)]),v.value.total>0?(u(),r("span",Oe,[e[17]||(e[17]=g(" 成功率 ",-1)),a("strong",null,n(((v.value.success+v.value.reused)/v.value.total*100).toFixed(1))+"%",1)])):_("",!0)])):_("",!0),l(he,{shadow:"never",class:"save-table-card"},{header:d(()=>[...e[19]||(e[19]=[a("span",null,"📋 转存日志列表",-1)])]),default:d(()=>[a("div",Qe,[we((u(),ee(ve,{data:U.value,stripe:"",style:{width:"100%"},"empty-text":"暂无转存记录",onExpandChange:ge,"row-class-name":ce},{default:d(()=>[l(h,{type:"expand",width:"36"},{default:d(({row:t})=>[a("div",Xe,[a("div",We,[a("div",Ze,[e[20]||(e[20]=a("span",{class:"detail-label"},"原始链接",-1)),a("a",{href:t.source_url,target:"_blank",class:"detail-link"},n(t.source_url),9,qe)]),t.file_size?(u(),r("div",et,[e[21]||(e[21]=a("span",{class:"detail-label"},"文件大小",-1)),a("code",tt,n(t.file_size?function(b){if(b==null||b==="")return"-";var G=typeof b=="string"?parseInt(b,10):b;if(!G||G<=0)return"-";for(var ke=["B","KB","MB","GB","TB"],$=0,K=G;K>=1024&&$<4;)K/=1024,$++;return K.toFixed($===0?0:2)+" "+ke[$]}(t.file_size):"-"),1)])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",at,[e[23]||(e[23]=a("span",{class:"detail-label"},"文件夹",-1)),a("span",null,[a("strong",null,n(t.folder_count||0),1),e[22]||(e[22]=g(" 个",-1))])])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",st,[e[25]||(e[25]=a("span",{class:"detail-label"},"文件",-1)),a("span",null,[a("strong",null,n(t.file_count||0),1),e[24]||(e[24]=g(" 个",-1))])])):_("",!0),t.status==="reused"?(u(),r("div",lt,[...e[26]||(e[26]=[a("span",{class:"detail-label"},"复用方式",-1),a("span",{class:"reuse-msg"},"♻️ 直接使用已有分享链接,无需实际转存",-1)])])):_("",!0)]),a("div",nt,[t.config_nickname?(u(),r("div",ot,[e[27]||(e[27]=a("span",{class:"detail-label"},"使用账号",-1)),l(W,{size:"small",type:"success",effect:"plain"},{default:d(()=>[g(n(t.config_nickname),1)]),_:2},1024)])):_("",!0),t.original_folder_name?(u(),r("div",it,[e[28]||(e[28]=a("span",{class:"detail-label"},"原始文件夹名",-1)),a("code",dt,n(t.original_folder_name),1)])):_("",!0),t.folder_name?(u(),r("div",ut,[e[29]||(e[29]=a("span",{class:"detail-label"},"转存文件夹",-1)),a("code",rt,n(t.folder_name),1)])):_("",!0)]),a("div",ct,[t.share_url?(u(),r("div",_t,[e[30]||(e[30]=a("span",{class:"detail-label"},"分享链接",-1)),a("a",{href:t.share_url,target:"_blank",class:"detail-link"},n(t.share_url),9,pt)])):_("",!0),t.share_pwd?(u(),r("div",gt,[e[31]||(e[31]=a("span",{class:"detail-label"},"分享密码",-1)),l(W,{size:"small",type:"warning"},{default:d(()=>[g(n(t.share_pwd),1)]),_:2},1024)])):_("",!0),a("div",ft,[e[32]||(e[32]=a("span",{class:"detail-label"},"耗时",-1)),a("span",{class:M(["detail-duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)])]),t.ip_address?(u(),r("div",mt,[a("div",vt,[e[33]||(e[33]=a("span",{class:"detail-label"},"IP 地址",-1)),a("code",ht,n(t.ip_address),1)]),t.ip_location?(u(),r("div",yt,[e[34]||(e[34]=a("span",{class:"detail-label"},"归属地",-1)),a("code",bt,n(X(t.ip_location)),1)])):_("",!0),a("div",kt,[e[35]||(e[35]=a("span",{class:"detail-label"},"时间",-1)),a("code",Ct,n(J(t.created_at)),1)])])):_("",!0),t.status==="failed"&&t.error_message?(u(),r("div",xt,[a("div",Dt,[e[36]||(e[36]=a("span",{class:"detail-label"},"错误信息",-1)),a("pre",St,n(t.error_message.includes(" | ")?t.error_message.split(" | ")[1]:t.error_message.split(" | ")[0]),1)])])):_("",!0),t.status==="failed"&&t.error_message&&t.error_message.includes(" | ")?(u(),r("div",wt,[a("div",zt,[e[37]||(e[37]=a("span",{class:"detail-label"},"友好提示",-1)),a("pre",Nt,n(t.error_message.split(" | ")[0]),1)])])):_("",!0)])]),_:1}),l(h,{label:"序号",width:"68",align:"center"},{default:d(({$index:t})=>[g(n((C.value-1)*x.value+t+1),1)]),_:1}),l(h,{label:"时间",width:"140"},{default:d(({row:t})=>[a("span",{title:t.created_at},n(J(t.created_at)),9,Tt)]),_:1}),l(h,{label:"网盘",width:"70",align:"center"},{default:d(({row:t})=>[l(B,{content:L(t.source_type),placement:"top"},{default:d(()=>[a("img",{src:P(t.source_type),style:{width:"22px",height:"22px",cursor:"default"}},null,8,Bt)]),_:2},1032,["content"])]),_:1}),l(h,{label:"状态",width:"72",align:"center"},{default:d(({row:t})=>[l(B,{content:oe(t.status),placement:"top"},{default:d(()=>[a("span",{class:M(["status-badge",ie(t.status)])},n(de(t.status)),3)]),_:2},1032,["content"])]),_:1}),l(h,{label:"资源名称","min-width":"160","show-overflow-tooltip":""},{default:d(({row:t})=>[a("span",{title:t.source_title||""},n(t.source_title||"-"),9,$t)]),_:1}),l(h,{label:"耗时",width:"85",align:"center"},{default:d(({row:t})=>[a("span",{class:M(["duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)]),_:1}),l(h,{label:"归属地","min-width":"130","show-overflow-tooltip":""},{default:d(({row:t})=>[t.ip_location?(u(),r("span",Mt,n(X(t.ip_location)),1)):(u(),r("span",Ft,"-"))]),_:1}),l(h,{label:"备注","min-width":"200","show-overflow-tooltip":""},{default:d(({row:t})=>[t.status==="failed"&&t.error_message?(u(),r("span",{key:0,class:"err-msg",title:t.error_message},n(ne(t.error_message)),9,Vt)):t.status==="failed"?(u(),r("span",Et,"失败")):t.status==="reused"?(u(),r("span",Ht,"♻️ 复用已有链接")):(u(),r("span",jt,"-"))]),_:1}),l(h,{label:"操作",width:"80",fixed:"right",align:"center"},{default:d(({row:t})=>[a("div",It,[l(B,{content:"复制分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>_e(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(ze))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024),l(B,{content:"打开分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>pe(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(Ne))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024)])]),_:1})]),_:1},8,["data"])),[[be,F.value]])])]),_:1}),k.value>0?(u(),r("div",Lt,[a("div",Yt," 第 "+n((C.value-1)*x.value+1)+"-"+n(Math.min(C.value*x.value,k.value))+" 条,共 "+n(k.value)+" 条 ",1),l(ye,{"current-page":C.value,"onUpdate:currentPage":e[8]||(e[8]=t=>C.value=t),"page-size":x.value,"onUpdate:pageSize":e[9]||(e[9]=t=>x.value=t),total:k.value,"page-sizes":[15,20,30,50,100],layout:"sizes, prev, pager, next, jumper",onCurrentChange:y,onSizeChange:e[10]||(e[10]=t=>y(1))},null,8,["current-page","page-size","total"])])):_("",!0)])}}}),Pt=Me(Gt,[["__scopeId","data-v-ccd92f86"]]);export{Pt as default}; +import{d as Ce,o as xe,a as u,c as r,b as a,f as l,w as d,F as Z,r as q,g as De,t as n,l as g,e as _,h as p,j as m,y as ee,n as M,k as R,s as Se,K as we,O as ze,P as Ne,E as te,Q as Te}from"./index-Bsy0LTRb.js";import{c as Be,j as $e,_ as Me}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const Fe={class:"save-records"},Ve={class:"toolbar"},Ee={class:"toolbar-row"},He={class:"filter-group"},je={style:{display:"inline-flex",alignItems:"center",gap:"6px"}},Ie=["src"],Le={class:"time-btns"},Ye=["onClick"],Ae={class:"toolbar-actions"},Ge={class:"record-count"},Ke={key:0,class:"save-summary"},Re={class:"summary-item summary-all"},Ue={class:"summary-item summary-success"},Pe={class:"summary-item summary-reused"},Je={class:"summary-item summary-failed"},Oe={key:0,class:"summary-item summary-rate"},Qe={class:"el-table-wrap"},Xe={class:"expand-detail"},We={class:"detail-row"},Ze={class:"detail-cell",style:{flex:"2"}},qe=["href"],et={key:0,class:"detail-cell"},tt={class:"detail-code"},at={key:1,class:"detail-cell"},st={key:2,class:"detail-cell"},lt={key:3,class:"detail-cell"},nt={class:"detail-row"},ot={key:0,class:"detail-cell"},it={key:1,class:"detail-cell"},dt={class:"detail-code"},ut={key:2,class:"detail-cell"},rt={class:"detail-code"},ct={class:"detail-row"},_t={key:0,class:"detail-cell",style:{flex:"2"}},pt=["href"],gt={key:1,class:"detail-cell"},ft={class:"detail-cell"},mt={key:0,class:"detail-row"},vt={class:"detail-cell"},ht={class:"detail-code"},yt={key:0,class:"detail-cell"},bt={class:"detail-code"},kt={class:"detail-cell"},Ct={class:"detail-code"},xt={key:1,class:"detail-row"},Dt={class:"detail-cell detail-full"},St={class:"detail-error"},wt={key:2,class:"detail-row"},zt={class:"detail-cell detail-full"},Nt={class:"detail-error"},Tt=["title"],Bt=["src"],$t=["title"],Mt={key:0,class:"loc-badge"},Ft={key:1,class:"no-data"},Vt=["title"],Et={key:1,class:"err-msg"},Ht={key:2,class:"reuse-msg"},jt={key:3,class:"no-data"},It={class:"action-cell"},Lt={key:1,class:"pagination-wrap"},Yt={class:"pagination-info"},At='',Gt=Ce({__name:"SaveRecords",setup(Kt){const U=p([]),k=p(0),C=p(1),x=p(20),F=p(!1),S=p(""),w=p(""),z=p(""),V=p("today"),E=p(""),H=p(""),N=p(null),j=p([]),v=p(null),ae=[{key:"today",label:"今日"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"lastMonth",label:"上月"}],I=p({});async function se(){try{const s=await Be(),e={};for(const o of s.types)e[o.type]={label:o.label,icon:o.icon};I.value=e}catch{}}function L(s){var e;return((e=I.value[s])==null?void 0:e.label)||s}function P(s){var e;return((e=I.value[s])==null?void 0:e.icon)||At}function le(s){const e=new Set;s.forEach(i=>{i.source_type&&e.add(i.source_type)});const o=new Set(j.value);e.forEach(i=>{o.has(i)||j.value.push(i)})}function Y(s){const e=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0");return`${e}-${o}-${i}`}function J(s){if(!s)return"-";let e=s;/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)&&(e=e.replace(" ","T")+"+08:00");const o=new Date(e);if(isNaN(o.getTime()))return s;const i=c=>String(c).padStart(2,"0");return`${o.getFullYear()}-${i(o.getMonth()+1)}-${i(o.getDate())} ${i(o.getHours())}:${i(o.getMinutes())}:${i(o.getSeconds())}`}function O(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"-"}function Q(s){return s?s>3e4?"dur-slow":s>1e4?"dur-warn":"dur-fast":""}function ne(s){return s.length>50?s.slice(0,50)+"…":s}function oe(s){return s==="success"?"转存成功":s==="reused"?"♻️ 复用已有分享链接":"转存失败"}function ie(s){return s==="success"?"status-ok":s==="reused"?"status-reuse":"status-fail"}function de(s){return s==="success"?"✓":s==="reused"?"♻️":"✗"}const ue={Anhui:"安徽",Beijing:"北京",Chongqing:"重庆",Fujian:"福建",Gansu:"甘肃",Guangdong:"广东",Guangxi:"广西",Guizhou:"贵州",Hainan:"海南",Hebei:"河北",Henan:"河南",Heilongjiang:"黑龙江",Hubei:"湖北",Hunan:"湖南","Inner Mongolia":"内蒙古",Jiangsu:"江苏",Jiangxi:"江西",Jilin:"吉林",Liaoning:"辽宁",Ningxia:"宁夏",Qinghai:"青海",Shaanxi:"陕西",Shandong:"山东",Shanghai:"上海",Shanxi:"山西",Sichuan:"四川",Tianjin:"天津",Tibet:"西藏",Xinjiang:"新疆",Yunnan:"云南",Zhejiang:"浙江","Hong Kong":"香港",Macau:"澳门",Taiwan:"台湾",Changsha:"长沙",Hefei:"合肥",Fuzhou:"福州",Lanzhou:"兰州",Guangzhou:"广州",Nanning:"南宁",Guiyang:"贵阳",Haikou:"海口",Shijiazhuang:"石家庄",Zhengzhou:"郑州",Harbin:"哈尔滨",Wuhan:"武汉",Nanjing:"南京",Nanchang:"南昌",Changchun:"长春",Shenyang:"沈阳",Yinchuan:"银川",Xining:"西宁","Xi'an":"西安",Jinan:"济南",Taiyuan:"太原",Chengdu:"成都",Shenzhen:"深圳",Hangzhou:"杭州",Suzhou:"苏州",Wuxi:"无锡",Ningbo:"宁波",Dongguan:"东莞",Foshan:"佛山",Zhuhai:"珠海",Qingdao:"青岛",Dalian:"大连",Xiamen:"厦门",Kunming:"昆明",Lhasa:"拉萨",Urumqi:"乌鲁木齐",Linyi:"临沂",Wenzhou:"温州",Quanzhou:"泉州"},re={"China Telecom":"中国电信","China Mobile":"中国移动","China Unicom":"中国联通",Chinanet:"中国电信",ChinaNet:"中国电信",CMNET:"中国移动","CNC Group":"中国联通",unicom:"中国联通",telecom:"中国电信",mobile:"中国移动","China Education and Research Network":"教育网",CERNET:"教育网","China Networks":"中国网络",China163:"中国电信","CHINANET BACKBONE":"中国电信","Tencent Cloud":"腾讯云","Alibaba Cloud":"阿里云",Aliyun:"阿里云","Huawei Cloud":"华为云",Baidu:"百度","Beijing Baidu":"百度"};function X(s){return s.replace(/^(中国|China)\s*/i,"").split(/\s+/).filter(Boolean).map(i=>ue[i]||re[i]||i).join(" ")}function ce({row:s}){return s.status==="failed"?"row-failed":""}async function _e(s){try{await navigator.clipboard.writeText(s),te.success("已复制到剪贴板")}catch{const e=document.createElement("textarea");e.value=s,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),te.success("已复制到剪贴板")}}function pe(s){window.open(s,"_blank")}function ge(s,e){}function T(s){V.value=s,N.value=null;const e=new Date,o=e.getFullYear(),i=e.getMonth();let c,f;switch(s){case"today":c=new Date(o,i,e.getDate()),f=c;break;case"week":{const D=e.getDay();c=new Date(o,i,e.getDate()+(D===0?-6:1-D)),f=e;break}case"month":c=new Date(o,i,1),f=e;break;case"lastMonth":c=new Date(o,i-1,1),f=new Date(o,i,0);break;default:c=new Date(o,i,e.getDate()),f=c}E.value=Y(c);const A=new Date(f.getFullYear(),f.getMonth(),f.getDate()+1);H.value=Y(A),y(1)}function fe(s){if(s&&s.length===2){V.value="",E.value=s[0];const e=new Date(s[1]);e.setDate(e.getDate()+1),H.value=Y(e),y(1)}else T("today")}function me(){S.value="",w.value="",z.value="",N.value=null,T("today")}async function y(s=1){F.value=!0;try{C.value=s;const e=S.value||void 0,o=w.value||void 0,i=z.value||void 0,c=await $e(s,x.value,E.value,H.value,e,o,i);U.value=c.records,k.value=c.total,v.value=c.summary||null,le(c.records)}catch(e){console.error("加载转存记录失败",e)}finally{F.value=!1}}return xe(()=>{T("today"),se()}),(s,e)=>{const o=m("el-option"),i=m("el-select"),c=m("el-date-picker"),f=m("el-icon"),A=m("el-input"),D=m("el-button"),W=m("el-tag"),h=m("el-table-column"),B=m("el-tooltip"),ve=m("el-table"),he=m("el-card"),ye=m("el-pagination"),be=Te("loading");return u(),r("div",Fe,[a("div",Ve,[a("div",Ee,[a("div",He,[l(i,{modelValue:S.value,"onUpdate:modelValue":e[0]||(e[0]=t=>S.value=t),placeholder:"状态",clearable:"",style:{width:"100px"},onChange:e[1]||(e[1]=t=>y(1))},{default:d(()=>[l(o,{label:"全部状态",value:""}),l(o,{label:"✓ 成功",value:"success"}),l(o,{label:"♻️ 复用",value:"reused"}),l(o,{label:"✗ 失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=t=>w.value=t),placeholder:"网盘",clearable:"",style:{width:"100px"},onChange:e[3]||(e[3]=t=>y(1))},{default:d(()=>[l(o,{label:"全部网盘",value:""}),(u(!0),r(Z,null,q(j.value,t=>(u(),ee(o,{key:t,label:L(t),value:t},{default:d(()=>[a("span",je,[a("img",{src:P(t),style:{width:"16px",height:"16px"}},null,8,Ie),g(" "+n(L(t)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),a("div",Le,[(u(),r(Z,null,q(ae,t=>a("button",{key:t.key,class:M(["time-btn",{active:V.value===t.key}]),onClick:b=>T(t.key)},n(t.label),11,Ye)),64))]),l(c,{modelValue:N.value,"onUpdate:modelValue":e[4]||(e[4]=t=>N.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"220px"},onChange:fe},null,8,["modelValue"]),l(A,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),placeholder:"搜索资源名称…",clearable:"",style:{width:"180px"},onClear:e[6]||(e[6]=t=>y(1)),onKeyup:e[7]||(e[7]=De(t=>y(1),["enter"]))},{prefix:d(()=>[l(f,null,{default:d(()=>[l(R(Se))]),_:1})]),_:1},8,["modelValue"])]),a("div",Ae,[l(D,{size:"small",onClick:me},{default:d(()=>[...e[11]||(e[11]=[g("重置筛选",-1)])]),_:1}),a("span",Ge,"共 "+n(k.value)+" 条",1)])])]),v.value?(u(),r("div",Ke,[a("span",Re,[e[12]||(e[12]=g("📊 共 ",-1)),a("strong",null,n(v.value.total),1),e[13]||(e[13]=g(" 条",-1))]),e[18]||(e[18]=a("span",{class:"summary-divider"},"|",-1)),a("span",Ue,[e[14]||(e[14]=g("✅ 成功 ",-1)),a("strong",null,n(v.value.success),1)]),a("span",Pe,[e[15]||(e[15]=g("♻️ 复用 ",-1)),a("strong",null,n(v.value.reused),1)]),a("span",Je,[e[16]||(e[16]=g("❌ 失败 ",-1)),a("strong",null,n(v.value.failed),1)]),v.value.total>0?(u(),r("span",Oe,[e[17]||(e[17]=g(" 成功率 ",-1)),a("strong",null,n(((v.value.success+v.value.reused)/v.value.total*100).toFixed(1))+"%",1)])):_("",!0)])):_("",!0),l(he,{shadow:"never",class:"save-table-card"},{header:d(()=>[...e[19]||(e[19]=[a("span",null,"📋 转存日志列表",-1)])]),default:d(()=>[a("div",Qe,[we((u(),ee(ve,{data:U.value,stripe:"",style:{width:"100%"},"empty-text":"暂无转存记录",onExpandChange:ge,"row-class-name":ce},{default:d(()=>[l(h,{type:"expand",width:"36"},{default:d(({row:t})=>[a("div",Xe,[a("div",We,[a("div",Ze,[e[20]||(e[20]=a("span",{class:"detail-label"},"原始链接",-1)),a("a",{href:t.source_url,target:"_blank",class:"detail-link"},n(t.source_url),9,qe)]),t.file_size?(u(),r("div",et,[e[21]||(e[21]=a("span",{class:"detail-label"},"文件大小",-1)),a("code",tt,n(t.file_size?function(b){if(b==null||b==="")return"-";var G=typeof b=="string"?parseInt(b,10):b;if(!G||G<=0)return"-";for(var ke=["B","KB","MB","GB","TB"],$=0,K=G;K>=1024&&$<4;)K/=1024,$++;return K.toFixed($===0?0:2)+" "+ke[$]}(t.file_size):"-"),1)])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",at,[e[23]||(e[23]=a("span",{class:"detail-label"},"文件夹",-1)),a("span",null,[a("strong",null,n(t.folder_count||0),1),e[22]||(e[22]=g(" 个",-1))])])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",st,[e[25]||(e[25]=a("span",{class:"detail-label"},"文件",-1)),a("span",null,[a("strong",null,n(t.file_count||0),1),e[24]||(e[24]=g(" 个",-1))])])):_("",!0),t.status==="reused"?(u(),r("div",lt,[...e[26]||(e[26]=[a("span",{class:"detail-label"},"复用方式",-1),a("span",{class:"reuse-msg"},"♻️ 直接使用已有分享链接,无需实际转存",-1)])])):_("",!0)]),a("div",nt,[t.config_nickname?(u(),r("div",ot,[e[27]||(e[27]=a("span",{class:"detail-label"},"使用账号",-1)),l(W,{size:"small",type:"success",effect:"plain"},{default:d(()=>[g(n(t.config_nickname),1)]),_:2},1024)])):_("",!0),t.original_folder_name?(u(),r("div",it,[e[28]||(e[28]=a("span",{class:"detail-label"},"原始文件夹名",-1)),a("code",dt,n(t.original_folder_name),1)])):_("",!0),t.folder_name?(u(),r("div",ut,[e[29]||(e[29]=a("span",{class:"detail-label"},"转存文件夹",-1)),a("code",rt,n(t.folder_name),1)])):_("",!0)]),a("div",ct,[t.share_url?(u(),r("div",_t,[e[30]||(e[30]=a("span",{class:"detail-label"},"分享链接",-1)),a("a",{href:t.share_url,target:"_blank",class:"detail-link"},n(t.share_url),9,pt)])):_("",!0),t.share_pwd?(u(),r("div",gt,[e[31]||(e[31]=a("span",{class:"detail-label"},"分享密码",-1)),l(W,{size:"small",type:"warning"},{default:d(()=>[g(n(t.share_pwd),1)]),_:2},1024)])):_("",!0),a("div",ft,[e[32]||(e[32]=a("span",{class:"detail-label"},"耗时",-1)),a("span",{class:M(["detail-duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)])]),t.ip_address?(u(),r("div",mt,[a("div",vt,[e[33]||(e[33]=a("span",{class:"detail-label"},"IP 地址",-1)),a("code",ht,n(t.ip_address),1)]),t.ip_location?(u(),r("div",yt,[e[34]||(e[34]=a("span",{class:"detail-label"},"归属地",-1)),a("code",bt,n(X(t.ip_location)),1)])):_("",!0),a("div",kt,[e[35]||(e[35]=a("span",{class:"detail-label"},"时间",-1)),a("code",Ct,n(J(t.created_at)),1)])])):_("",!0),t.status==="failed"&&t.error_message?(u(),r("div",xt,[a("div",Dt,[e[36]||(e[36]=a("span",{class:"detail-label"},"错误信息",-1)),a("pre",St,n(t.error_message.includes(" | ")?t.error_message.split(" | ")[1]:t.error_message.split(" | ")[0]),1)])])):_("",!0),t.status==="failed"&&t.error_message&&t.error_message.includes(" | ")?(u(),r("div",wt,[a("div",zt,[e[37]||(e[37]=a("span",{class:"detail-label"},"友好提示",-1)),a("pre",Nt,n(t.error_message.split(" | ")[0]),1)])])):_("",!0)])]),_:1}),l(h,{label:"序号",width:"68",align:"center"},{default:d(({$index:t})=>[g(n((C.value-1)*x.value+t+1),1)]),_:1}),l(h,{label:"时间",width:"140"},{default:d(({row:t})=>[a("span",{title:t.created_at},n(J(t.created_at)),9,Tt)]),_:1}),l(h,{label:"网盘",width:"70",align:"center"},{default:d(({row:t})=>[l(B,{content:L(t.source_type),placement:"top"},{default:d(()=>[a("img",{src:P(t.source_type),style:{width:"22px",height:"22px",cursor:"default"}},null,8,Bt)]),_:2},1032,["content"])]),_:1}),l(h,{label:"状态",width:"72",align:"center"},{default:d(({row:t})=>[l(B,{content:oe(t.status),placement:"top"},{default:d(()=>[a("span",{class:M(["status-badge",ie(t.status)])},n(de(t.status)),3)]),_:2},1032,["content"])]),_:1}),l(h,{label:"资源名称","min-width":"160","show-overflow-tooltip":""},{default:d(({row:t})=>[a("span",{title:t.source_title||""},n(t.source_title||"-"),9,$t)]),_:1}),l(h,{label:"耗时",width:"85",align:"center"},{default:d(({row:t})=>[a("span",{class:M(["duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)]),_:1}),l(h,{label:"归属地","min-width":"130","show-overflow-tooltip":""},{default:d(({row:t})=>[t.ip_location?(u(),r("span",Mt,n(X(t.ip_location)),1)):(u(),r("span",Ft,"-"))]),_:1}),l(h,{label:"备注","min-width":"200","show-overflow-tooltip":""},{default:d(({row:t})=>[t.status==="failed"&&t.error_message?(u(),r("span",{key:0,class:"err-msg",title:t.error_message},n(ne(t.error_message)),9,Vt)):t.status==="failed"?(u(),r("span",Et,"失败")):t.status==="reused"?(u(),r("span",Ht,"♻️ 复用已有链接")):(u(),r("span",jt,"-"))]),_:1}),l(h,{label:"操作",width:"80",fixed:"right",align:"center"},{default:d(({row:t})=>[a("div",It,[l(B,{content:"复制分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>_e(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(ze))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024),l(B,{content:"打开分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>pe(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(Ne))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024)])]),_:1})]),_:1},8,["data"])),[[be,F.value]])])]),_:1}),k.value>0?(u(),r("div",Lt,[a("div",Yt," 第 "+n((C.value-1)*x.value+1)+"-"+n(Math.min(C.value*x.value,k.value))+" 条,共 "+n(k.value)+" 条 ",1),l(ye,{"current-page":C.value,"onUpdate:currentPage":e[8]||(e[8]=t=>C.value=t),"page-size":x.value,"onUpdate:pageSize":e[9]||(e[9]=t=>x.value=t),total:k.value,"page-sizes":[15,20,30,50,100],layout:"sizes, prev, pager, next, jumper",onCurrentChange:y,onSizeChange:e[10]||(e[10]=t=>y(1))},null,8,["current-page","page-size","total"])])):_("",!0)])}}}),Pt=Me(Gt,[["__scopeId","data-v-ccd92f86"]]);export{Pt as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/SearchResult-CSy9PDwp.js b/source_clean/frontend-src/dist-vite/assets/SearchResult-C7oFJn97.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/SearchResult-CSy9PDwp.js rename to source_clean/frontend-src/dist-vite/assets/SearchResult-C7oFJn97.js index fe13085..0901662 100644 --- a/source_clean/frontend-src/dist-vite/assets/SearchResult-CSy9PDwp.js +++ b/source_clean/frontend-src/dist-vite/assets/SearchResult-C7oFJn97.js @@ -1,4 +1,4 @@ -import{d as ht,o as nn,m as qn,a as d,c as f,n as we,b as g,p as ut,t as m,k as Oe,e as R,F as $,r as oe,q as Gt,h as E,v as J,x as Qt,f as z,w as K,g as Xt,y as Me,l as G,z as Hn,j as le,s as Kn,A as On,i as xn,E as Re,u as Jn,B as Wn}from"./index-DLC2deeT.js";import{C as sn,a as Ae,b as on}from"./index-Bn7NwETH.js";import{_ as vt,b as Yn,s as jn,c as Gn,d as Qn,q as Xn,e as Zn,f as $n}from"./_plugin-vue_export-helper-1Z-znrfZ.js";var Ne={},es=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},an={},se={};let pt;const ts=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];se.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};se.getSymbolTotalCodewords=function(t){return ts[t]};se.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};se.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=t};se.isKanjiModeEnabled=function(){return typeof pt<"u"};se.toSJIS=function(t){return pt(t)};var We={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+a)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(We);function ln(){this.buffer=[],this.length=0}ln.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let a=0;a>>t-a-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var ns=ln;function Le(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Le.prototype.set=function(e,t,a,s){const n=e*this.size+t;this.data[n]=a,s&&(this.reservedBit[n]=!0)};Le.prototype.get=function(e,t){return this.data[e*this.size+t]};Le.prototype.xor=function(e,t,a){this.data[e*this.size+t]^=a};Le.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var ss=Le,rn={};(function(e){const t=se.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,i=[o-7];for(let u=1;u=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let r=0,i=0,u=0,v=null,h=null;for(let D=0;D=5&&(r+=t.N1+(i-5)),v=y,i=1),y=n.get(T,D),y===h?u++:(u>=5&&(r+=t.N1+(u-5)),h=y,u=1)}i>=5&&(r+=t.N1+(i-5)),u>=5&&(r+=t.N1+(u-5))}return r},e.getPenaltyN2=function(n){const o=n.size;let r=0;for(let i=0;i=10&&(i===1488||i===93)&&r++,u=u<<1&2047|n.get(h,v),h>=10&&(u===1488||u===93)&&r++}return r*t.N3},e.getPenaltyN4=function(n){let o=0;const r=n.data.length;for(let u=0;u=0;){const r=o[0];for(let u=0;u0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var as=mt,gn={},ve={},yt={};yt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var re={};const hn="[0-9]+",ls="[A-Z $%*+\\-./:]+";let Pe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Pe=Pe.replace(/u/g,"\\u");const rs="(?:(?![A-Z0-9 $%*+\\-./:]|"+Pe+`)(?:.|[\r +import{d as ht,o as nn,m as qn,a as d,c as f,n as we,b as g,p as ut,t as m,k as Oe,e as R,F as $,r as oe,q as Gt,h as E,v as J,x as Qt,f as z,w as K,g as Xt,y as Me,l as G,z as Hn,j as le,s as Kn,A as On,i as xn,E as Re,u as Jn,B as Wn}from"./index-Bsy0LTRb.js";import{C as sn,a as Ae,b as on}from"./index-Bn7NwETH.js";import{_ as vt,b as Yn,s as jn,c as Gn,d as Qn,q as Xn,e as Zn,f as $n}from"./_plugin-vue_export-helper-1Z-znrfZ.js";var Ne={},es=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},an={},se={};let pt;const ts=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];se.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};se.getSymbolTotalCodewords=function(t){return ts[t]};se.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};se.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=t};se.isKanjiModeEnabled=function(){return typeof pt<"u"};se.toSJIS=function(t){return pt(t)};var We={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+a)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(We);function ln(){this.buffer=[],this.length=0}ln.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let a=0;a>>t-a-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var ns=ln;function Le(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Le.prototype.set=function(e,t,a,s){const n=e*this.size+t;this.data[n]=a,s&&(this.reservedBit[n]=!0)};Le.prototype.get=function(e,t){return this.data[e*this.size+t]};Le.prototype.xor=function(e,t,a){this.data[e*this.size+t]^=a};Le.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var ss=Le,rn={};(function(e){const t=se.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,i=[o-7];for(let u=1;u=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let r=0,i=0,u=0,v=null,h=null;for(let D=0;D=5&&(r+=t.N1+(i-5)),v=y,i=1),y=n.get(T,D),y===h?u++:(u>=5&&(r+=t.N1+(u-5)),h=y,u=1)}i>=5&&(r+=t.N1+(i-5)),u>=5&&(r+=t.N1+(u-5))}return r},e.getPenaltyN2=function(n){const o=n.size;let r=0;for(let i=0;i=10&&(i===1488||i===93)&&r++,u=u<<1&2047|n.get(h,v),h>=10&&(u===1488||u===93)&&r++}return r*t.N3},e.getPenaltyN4=function(n){let o=0;const r=n.data.length;for(let u=0;u=0;){const r=o[0];for(let u=0;u0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var as=mt,gn={},ve={},yt={};yt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var re={};const hn="[0-9]+",ls="[A-Z $%*+\\-./:]+";let Pe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Pe=Pe.replace(/u/g,"\\u");const rs="(?:(?![A-Z0-9 $%*+\\-./:]|"+Pe+`)(?:.|[\r ]))+`;re.KANJI=new RegExp(Pe,"g");re.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");re.BYTE=new RegExp(rs,"g");re.NUMERIC=new RegExp(hn,"g");re.ALPHANUMERIC=new RegExp(ls,"g");const is=new RegExp("^"+Pe+"$"),us=new RegExp("^"+hn+"$"),cs=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");re.testKanji=function(t){return is.test(t)};re.testNumeric=function(t){return us.test(t)};re.testAlphanumeric=function(t){return cs.test(t)};(function(e){const t=yt,a=re;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,r){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?o.ccBits[0]:r<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return a.testNumeric(o)?e.NUMERIC:a.testAlphanumeric(o)?e.ALPHANUMERIC:a.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function s(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}e.from=function(o,r){if(e.isValid(o))return o;try{return s(o)}catch{return r}}})(ve);(function(e){const t=se,a=Ye,s=We,n=ve,o=yt,r=7973,i=t.getBCHDigit(r);function u(T,y,M){for(let I=1;I<=40;I++)if(y<=e.getCapacity(I,M,T))return I}function v(T,y){return n.getCharCountIndicator(T,y)+4}function h(T,y){let M=0;return T.forEach(function(I){const F=v(I.mode,y);M+=F+I.getBitsLength()}),M}function D(T,y){for(let M=1;M<=40;M++)if(h(T,M)<=e.getCapacity(M,y,n.MIXED))return M}e.from=function(y,M){return o.isValid(y)?parseInt(y,10):M},e.getCapacity=function(y,M,I){if(!o.isValid(y))throw new Error("Invalid QR Code version");typeof I>"u"&&(I=n.BYTE);const F=t.getSymbolTotalCodewords(y),_=a.getTotalCodewordsCount(y,M),C=(F-_)*8;if(I===n.MIXED)return C;const w=C-v(I,y);switch(I){case n.NUMERIC:return Math.floor(w/10*3);case n.ALPHANUMERIC:return Math.floor(w/11*2);case n.KANJI:return Math.floor(w/13);case n.BYTE:default:return Math.floor(w/8)}},e.getBestVersionForData=function(y,M){let I;const F=s.from(M,s.M);if(Array.isArray(y)){if(y.length>1)return D(y,F);if(y.length===0)return 1;I=y[0]}else I=y;return u(I.mode,I.getLength(),F)},e.getEncodedBits=function(y){if(!o.isValid(y)||y<7)throw new Error("Invalid QR Code version");let M=y<<12;for(;t.getBCHDigit(M)-i>=0;)M^=r<=0;)n^=pn<0&&(s=this.data.substr(a),n=parseInt(s,10),t.put(n,o*3+1))};var gs=ke;const hs=ve,st=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function be(e){this.mode=hs.ALPHANUMERIC,this.data=e}be.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};be.prototype.getLength=function(){return this.data.length};be.prototype.getBitsLength=function(){return be.getBitsLength(this.data.length)};be.prototype.write=function(t){let a;for(a=0;a+2<=this.data.length;a+=2){let s=st.indexOf(this.data[a])*45;s+=st.indexOf(this.data[a+1]),t.put(s,11)}this.data.length%2&&t.put(st.indexOf(this.data[a]),6)};var vs=be;const ps=ve;function Ce(e){this.mode=ps.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Ce.getBitsLength=function(t){return t*8};Ce.prototype.getLength=function(){return this.data.length};Ce.prototype.getBitsLength=function(){return Ce.getBitsLength(this.data.length)};Ce.prototype.write=function(e){for(let t=0,a=this.data.length;t=33088&&a<=40956)a-=33088;else if(a>=57408&&a<=60351)a-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` Make sure your charset is UTF-8`);a=(a>>>8&255)*192+(a&255),e.put(a,13)}};var ws=Ee,yn={exports:{}};(function(e){var t={single_source_shortest_paths:function(a,s,n){var o={},r={};r[s]=0;var i=t.PriorityQueue.make();i.push(s,0);for(var u,v,h,D,T,y,M,I,F;!i.empty();){u=i.pop(),v=u.value,D=u.cost,T=a[v]||{};for(h in T)T.hasOwnProperty(h)&&(y=T[h],M=D+y,I=r[h],F=typeof r[h]>"u",(F||I>M)&&(r[h]=M,i.push(h,M),o[h]=v))}if(typeof n<"u"&&typeof r[n]>"u"){var _=["Could not find a path from ",s," to ",n,"."].join("");throw new Error(_)}return o},extract_shortest_path_from_predecessor_list:function(a,s){for(var n=[],o=s;o;)n.push(o),a[o],o=a[o];return n.reverse(),n},find_path:function(a,s,n){var o=t.single_source_shortest_paths(a,s,n);return t.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(a){var s=t.PriorityQueue,n={},o;a=a||{};for(o in s)s.hasOwnProperty(o)&&(n[o]=s[o]);return n.queue=[],n.sorter=a.sorter||s.default_sorter,n},default_sorter:function(a,s){return a.cost-s.cost},push:function(a,s){var n={value:a,cost:s};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(yn);var ks=yn.exports;(function(e){const t=ve,a=gs,s=vs,n=ms,o=ws,r=re,i=se,u=ks;function v(_){return unescape(encodeURIComponent(_)).length}function h(_,C,w){const k=[];let L;for(;(L=_.exec(w))!==null;)k.push({data:L[0],index:L.index,mode:C,length:L[0].length});return k}function D(_){const C=h(r.NUMERIC,t.NUMERIC,_),w=h(r.ALPHANUMERIC,t.ALPHANUMERIC,_);let k,L;return i.isKanjiModeEnabled()?(k=h(r.BYTE,t.BYTE,_),L=h(r.KANJI,t.KANJI,_)):(k=h(r.BYTE_KANJI,t.BYTE,_),L=[]),C.concat(w,k,L).sort(function(V,b){return V.index-b.index}).map(function(V){return{data:V.data,mode:V.mode,length:V.length}})}function T(_,C){switch(C){case t.NUMERIC:return a.getBitsLength(_);case t.ALPHANUMERIC:return s.getBitsLength(_);case t.KANJI:return o.getBitsLength(_);case t.BYTE:return n.getBitsLength(_)}}function y(_){return _.reduce(function(C,w){const k=C.length-1>=0?C[C.length-1]:null;return k&&k.mode===w.mode?(C[C.length-1].data+=w.data,C):(C.push(w),C)},[])}function M(_){const C=[];for(let w=0;w<_.length;w++){const k=_[w];switch(k.mode){case t.NUMERIC:C.push([k,{data:k.data,mode:t.ALPHANUMERIC,length:k.length},{data:k.data,mode:t.BYTE,length:k.length}]);break;case t.ALPHANUMERIC:C.push([k,{data:k.data,mode:t.BYTE,length:k.length}]);break;case t.KANJI:C.push([k,{data:k.data,mode:t.BYTE,length:v(k.data)}]);break;case t.BYTE:C.push([{data:k.data,mode:t.BYTE,length:v(k.data)}])}}return C}function I(_,C){const w={},k={start:{}};let L=["start"];for(let B=0;B<_.length;B++){const V=_[B],b=[];for(let P=0;P=0&&i<=6&&(u===0||u===6)||u>=0&&u<=6&&(i===0||i===6)||i>=2&&i<=4&&u>=2&&u<=4?e.set(o+i,r+u,!0,!0):e.set(o+i,r+u,!1,!0))}}function As(e){const t=e.size;for(let a=8;a>i&1)===1,e.set(n,o,r,!0),e.set(o,n,r,!0)}function lt(e,t,a){const s=e.size,n=Bs.getEncodedBits(t,a);let o,r;for(o=0;o<15;o++)r=(n>>o&1)===1,o<6?e.set(o,8,r,!0):o<8?e.set(o+1,8,r,!0):e.set(s-15+o,8,r,!0),o<8?e.set(8,s-o-1,r,!0):o<9?e.set(8,15-o-1+1,r,!0):e.set(8,15-o-1,r,!0);e.set(s-8,8,1,!0)}function Ns(e,t){const a=e.size;let s=-1,n=a-1,o=7,r=0;for(let i=a-1;i>0;i-=2)for(i===6&&i--;;){for(let u=0;u<2;u++)if(!e.isReserved(n,i-u)){let v=!1;r>>o&1)===1),e.set(n,i-u,v),o--,o===-1&&(r++,o=7)}if(n+=s,n<0||a<=n){n-=s,s=-s;break}}}function Ls(e,t,a){const s=new bs;a.forEach(function(u){s.put(u.mode.bit,4),s.put(u.getLength(),Ms.getCharCountIndicator(u.mode,e)),u.write(s)});const n=Ge.getSymbolTotalCodewords(e),o=ft.getTotalCodewordsCount(e,t),r=(n-o)*8;for(s.getLengthInBits()+4<=r&&s.put(0,4);s.getLengthInBits()%8!==0;)s.putBit(0);const i=(r-s.getLengthInBits())/8;for(let u=0;uQe.section||Xe.query.section||""),he=y(),ve=y([]),r=Y({}),N=y([]),Q=y(""),F=y([]),X=y(""),D=y([]),Z=y(""),K=y([]),ee=y(""),le=y(""),G=y([]),ce=y(!1),ye=y(!1),R=Y({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),Ce=y(!0),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),de=y(!1),T=y(null),Pe=y(!0),re=y(!1),ge=H({get:()=>String(r.search_proxy_enabled)==="true",set:s=>{r.search_proxy_enabled=s?"true":"false"}}),Se=H({get:()=>String(r.pansou_web_enabled)==="true",set:s=>{r.pansou_web_enabled=s?"true":"false"}}),Ue=H({get:()=>String(r.search_all_channels)==="true",set:s=>{r.search_all_channels=s?"true":"false"}}),ze=H({get:()=>String(r.auto_update_enabled)==="true",set:s=>{r.auto_update_enabled=s?"true":"false"}}),C=Y({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),_e=y(!1),be=y(!1),Te=y(""),xe=y(!1),je=y("");async function Ze(){try{const s=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Object.assign(C,e)}}catch{}}async function el(){try{const s=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();e.date&&(je.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function ll(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...C})})}catch{}}async function tl(){_e.value=!0;try{const s=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Te.value=e.content,xe.value=!0}}finally{_e.value=!1}}async function sl(){be.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?f.success("测试报告已发送到全局通知通道"):f.error("发送失败")}catch{f.error("发送失败")}finally{be.value=!1}}const Ie=y([]),$=y({}),we=y(!1),Oe=y([]);async function al(){try{const s=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!s.ok)return;const e=await s.json(),o=Array.isArray(e)?[...new Set(e.map(i=>i.promotion_account||"").filter(Boolean))]:[];Oe.value=o}catch{}}const m=Y({id:null,account:"",channel:"",channelParams:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}});function ol(){m.channelParams={}}const nl=H(()=>{var e;const s={};for(const[o,i]of Object.entries($.value))(e=v.channels[o])!=null&&e._enabled&&(s[o]=i);return s}),v=Y({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},eventTemplates:{on_save_success:{title:"✅ 转存成功",content:`**{cloud_type}** · {nickname} +文件: {file_name} +大小: {file_size} +耗时: {duration}s +链接: {share_url}`},on_save_fail:{title:"❌ 转存连续失败 {fail_count} 次",content:`**{cloud_type}** · {nickname} +连续失败次数: {fail_count} +最后失败: {error_message} +请检查网盘状态`},on_cookie_expire:{title:"⚠️ Cookie 已过期",content:`**{cloud_type}** · {nickname} +Cookie 已过期或失效,请重新登录 +最后操作: {share_url}`},on_cleanup:{title:"🧹 清理完成",content:`**{cloud_type}** · {nickname} +清理完成 +释放空间: {freed_space}`}}});function il(s){var e,o,i,k;if(s){m.id=s.id,m.account=s.account;const u=s.notify_config||{},b=Object.keys(u.channels||{});m.channel=b[0]||"",m.channelParams=b[0]?u.channels[b[0]]||{}:{},m.events={on_save_success:((e=u.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((o=u.events)==null?void 0:o.on_save_fail)!==!1,on_cookie_expire:((i=u.events)==null?void 0:i.on_cookie_expire)!==!1,on_cleanup:((k=u.events)==null?void 0:k.on_cleanup)===!0}}else m.id=null,m.account="",m.channel="",m.channelParams={},m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function dl(){m.id=null,m.account="",m.channel="",m.channelParams={},m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function ue(s,e){return((s.notify_config||{}).events||{})[e]===!0}async function rl(){if(!m.account){f.warning("请填写推广账号");return}we.value=!0;try{const s={account:m.account,notify_config:{channels:{},events:m.events}},e={};m.channel&&(e[m.channel]={...m.channelParams}),s.notify_config.channels=e,m.id?await fetch("/api/admin/push-users/"+m.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)});const o=!!m.id;m.id=null,m.account="",m.channel="",m.channelParams={},m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},f.success(o?"推送用户已更新":"推送用户已添加"),await ke()}catch(s){f.error(s.message||"保存失败")}finally{we.value=!1}}async function ke(){try{const s=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});s.ok&&(Ie.value=await s.json())}catch(s){console.error("Failed to load push users",s)}}async function ul(){try{$.value=await at()}catch(s){console.error("Failed to load providers",s)}}async function pl(s){try{await fetch("/api/admin/push-users/"+s.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),f.success("已删除"),await ke()}catch(e){f.error(e.message||"删除失败")}}function Ae(s){var o;return((o=s.notify_config)==null?void 0:o.channels)||{}}function fl(s){var e;return((e=$.value[s])==null?void 0:e.label)||s}function ml(s){return Object.keys(Ae(s)).length>0}function vl(s){var u;const e=((u=s.notify_config)==null?void 0:u.channels)||{},o=Object.keys(e);if(o.length===0)return"";const i=e[o[0]]||{},k=[];for(const[b,P]of Object.entries(i))if(P&&typeof P=="string"){const w=b.includes("token")||b.includes("key")||b.includes("secret")||b.includes("password")?P.substring(0,4)+"***":P.length>20?P.substring(0,20)+"...":P;k.push(w)}return k.join(" | ")}function cl(){const s={};for(const[e,o]of Object.entries($.value)){s[e]={_enabled:!1,_testing:!1};for(const i of o.params||[])s[e][i.key]=i.default||""}v.channels=s,v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function yl(){try{const o=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(i=>i.key==="global_notify_config");if(o&&o.value)try{const i=JSON.parse(o.value),k=i.channels||{};for(const[u,b]of Object.entries(k))if(v.channels[u]){v.channels[u]._enabled=!0;for(const[P,w]of Object.entries(b))v.channels[u][P]=w}if(i.events&&(v.events.on_save_success=i.events.on_save_success!==!1,v.events.on_save_fail=i.events.on_save_fail!==!1,v.events.on_cookie_expire=i.events.on_cookie_expire!==!1,v.events.on_cleanup=i.events.on_cleanup===!0),i.eventTemplates)for(const[u,b]of Object.entries(i.eventTemplates))v.eventTemplates[u]=b}catch{}}catch{}}const pe=y(!1),B=y(""),gl=H(()=>({on_save_success:"转存成功",on_save_fail:"转存失败",on_cookie_expire:"Cookie过期",on_cleanup:"清理完成"})[B.value]||"");function fe(s){B.value=s,pe.value=!0,v.eventTemplates[s]||(v.eventTemplates[s]={title:"",content:""})}async function _l(s){const e=v.channels[s];if(!(!e||!e._enabled)){e._testing=!0;try{const o=await nt(s);o.success?f.success(o.message):f.error(o.message)}catch(o){f.error(o.message||"测试失败")}finally{e._testing=!1}}}const j=Y({oldPassword:"",newPassword:"",confirmPassword:""}),bl={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"新密码至少需要6个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认新密码",trigger:"blur"},{validator:(s,e,o)=>{e!==j.newPassword?o(new Error("两次输入的密码不一致")):o()},trigger:"blur"}]};Yl(async()=>{try{ve.value=await tt();for(const u of ve.value)r[u.key]=u.value;const s=String(r.title_filter_rules||"");N.value=s.split(` +`).filter(u=>u.trim());const e=String(r.link_invalid_keywords||"");F.value=e.split(` +`).filter(u=>u.trim());const o=String(r.quark_ad_keywords||"");D.value=o.split(` +`).filter(u=>u.trim());const i=String(r.quark_warning_folder_names||"");K.value=i.split(` +`).filter(u=>u.trim());const k=String(r.quark_sus_extensions||"");G.value=k.split(` +`).filter(u=>u.trim())}catch{f.error("加载系统配置失败")}try{const s=await st();Object.assign(R,s)}catch{R.db_size="无法读取"}finally{Ce.value=!1}Ve(),await ul(),cl(),await yl(),ke(),Ze(),el(),al()}),Ql($,()=>{for(const[s,e]of Object.entries($.value))if(!v.channels[s]){v.channels[s]={_enabled:!1,_testing:!1};for(const o of e.params||[])v.channels[s][o.key]=o.default||""}});async function xl(){var e,o;const s=String(r.redis_url||"redis://redis:6379");se.value=!0;try{const i=await it(s);i.ok?f.success(`✅ Redis 连接成功 — ${i.info}`):f.error(`❌ Redis 连接失败 — ${i.info}`)}catch(i){f.error(((o=(e=i.response)==null?void 0:e.data)==null?void 0:o.error)||"测试请求失败")}finally{se.value=!1}}async function Ve(){Pe.value=!0;try{const s=localStorage.getItem("admin_token"),e={};s&&(e.Authorization="Bearer "+s);const o=await fetch("/api/admin/pansou-info",{headers:e});if(!o.ok)throw new Error("HTTP "+o.status);const i=await o.json();T.value=i}catch{T.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{Pe.value=!1}}async function wl(){re.value=!0;try{const s=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};s&&(e.Authorization="Bearer "+s);const i=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();i.ok?(f.success("✅ PanSou 已更新并重启"),setTimeout(()=>Ve(),3e3)):f.error("❌ 更新失败 — "+(i.error||"未知错误"))}catch(s){f.error(s.message||"更新请求失败")}finally{re.value=!1}}async function kl(){var s,e;ae.value=!0;try{const o=await te({type:"pansou",url:String(r.pansou_url||"")});o.ok?(Ve(),f.success(`✅ PanSou 连接成功 — ${o.info}`)):f.error(`❌ PanSou 连接失败 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function Vl(){var s,e;oe.value=!0;try{const o=await te({type:"video_parser",url:String(r.video_parser_url||"")});o.ok?f.success(`✅ 视频解析服务连接成功 — ${o.info}`):f.error(`❌ 视频解析服务连接失败 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function hl(){var s,e;ne.value=!0;try{const o=await te({type:"tmdb",token:String(r.tmdb_api_token||"")});o.ok?f.success(`✅ TMDB 令牌有效 — ${o.info}`):f.error(`❌ TMDB 连接失败 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function Cl(){var s,e;ie.value=!0;try{const o=await te({type:"proxy",url:String(r.search_proxy_url||"")});o.ok?f.success(`✅ 搜索代理可用 — ${o.info}`):f.error(`❌ 搜索代理不可用 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}async function Pl(){var s,e;de.value=!0;try{const o=String(r.ip_geo_api_url||"");if(!o){f.warning("请先输入 IP 归属地查询 API 地址");return}const i=await te({type:"ip_geo",url:o});i.ok?f.success("✅ IP 归属地接口可用 — "+i.info):f.error("❌ IP 归属地接口不可用 — "+i.info)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{de.value=!1}}function Sl(){const s=Q.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)N.value.includes(i)||(N.value.push(i),o++);Q.value="",Re(),o>0?f.success(`已添加 ${o} 条规则`):f.info("所有规则已存在")}function Ul(s){N.value.splice(s,1),Re()}function zl(s){return s.startsWith("#")?"info":s.startsWith("/")&&(s.endsWith("/")||s.endsWith("/g")||s.endsWith("/i")||s.endsWith("/gi"))?"warning":""}function Re(){r.title_filter_rules=N.value.join(` +`)}function Tl(){const s=X.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)F.value.includes(i)||(F.value.push(i),o++);X.value="",$e(),o>0?f.success(`已添加 ${o} 个关键词`):f.info("所有关键词已存在")}function jl(s){F.value.splice(s,1),$e()}function $e(){r.link_invalid_keywords=F.value.join(` +`)}function Il(){const s=Z.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)D.value.includes(i)||(D.value.push(i),o++);Z.value="",Be(),o>0?f.success():f.info("所有关键词已存在")}function Ol(s){D.value.splice(s,1),Be()}function Be(){r.quark_ad_keywords=D.value.join(` +`)}function Al(){const s=ee.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)K.value.includes(i)||(K.value.push(i),o++);ee.value="",Ee(),o>0?f.success():f.info("所有文件夹名已存在")}function Rl(s){K.value.splice(s,1),Ee()}function Ee(){r.quark_warning_folder_names=K.value.join(` +`)}function $l(){const s=le.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim().toLowerCase().replace(/^\./,"")).filter(i=>i);let o=0;for(const i of e)G.value.includes(i)||(G.value.push(i),o++);le.value="",Le(),o>0?f.success("已添加 ${added} 个后缀"):f.info("所有后缀已存在")}function Bl(s){G.value.splice(s,1),Le()}function Le(){r.quark_sus_extensions=G.value.join(` +`)}async function El(){var s,e;ce.value=!0;try{const o={};for(const[k,u]of Object.entries(v.channels))if(u._enabled){const b={};for(const[P,w]of Object.entries(u))!P.startsWith("_")&&w!==""&&(b[P]=String(w));Object.keys(b).length>0&&(o[k]=b)}const i=ve.value.map(k=>({key:k.key,value:String(r[k.key]??k.value)}));await ll(),i.push({key:"global_notify_config",value:JSON.stringify({channels:o,events:v.events,eventTemplates:v.eventTemplates})}),await ot(i),f.success("配置已保存")}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"保存失败")}finally{ce.value=!1}}async function Ll(){var e,o,i;if(await((e=he.value)==null?void 0:e.validate().catch(()=>!1))){ye.value=!0;try{const k=await dt(j.oldPassword,j.newPassword);k.success?(f.success("✅ 密码修改成功,下次登录请使用新密码"),j.oldPassword="",j.newPassword="",j.confirmPassword=""):f.error(k.message)}catch(k){f.error(((i=(o=k.response)==null?void 0:o.data)==null?void 0:i.error)||"密码修改失败")}finally{ye.value=!1}}}const Ne=y();function Nl(){var s;(s=Ne.value)==null||s.click()}async function Fl(s){var i,k,u;const e=s.target,o=(i=e.files)==null?void 0:i[0];if(o){if(!o.type.startsWith("image/")){f.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(o.size>2*1024*1024){f.error("图片大小不能超过 2MB"),e.value="";return}try{const b=await rt(o);b.success?(r.site_logo=b.url,f.success("✅ LOGO 已上传并生效")):f.error(b.message)}catch(b){f.error(((u=(k=b.response)==null?void 0:k.data)==null?void 0:u.error)||"上传失败")}e.value=""}}async function Dl(){try{r.site_logo="",await ut("site_logo",""),f.success("已移除 LOGO")}catch{f.error("移除失败")}}return(s,e)=>{const o=h("el-input"),i=h("el-form-item"),k=h("el-icon"),u=h("el-button"),b=h("el-form"),P=h("el-card"),w=h("el-switch"),E=h("el-divider"),Fe=h("el-radio"),Kl=h("el-radio-group"),J=h("el-input-number"),S=h("el-tag"),Gl=h("el-collapse-item"),Wl=h("el-collapse"),De=h("el-option"),Ke=h("el-select"),W=h("el-table-column"),ql=h("el-popconfirm"),Ml=h("el-table"),Hl=h("el-time-picker"),Ge=h("el-dialog");return p(),g("div",ft,[q(t(P,{id:"section-sys-site"},{header:n(()=>[...e[56]||(e[56]=[l("span",null,"🌐 网站设置",-1)])]),default:n(()=>[t(b,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"网站名称"},{default:n(()=>[t(o,{modelValue:r.site_name,"onUpdate:modelValue":e[0]||(e[0]=a=>r.site_name=a),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[57]||(e[57]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),t(i,{label:"网站 LOGO"},{default:n(()=>[l("div",mt,[l("div",vt,[t(u,{type:"primary",onClick:Nl},{icon:n(()=>[t(k,null,{default:n(()=>[t(He(Xl))]),_:1})]),default:n(()=>[e[58]||(e[58]=d(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:Ne,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Fl},null,544),e[59]||(e[59]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 推荐 "),l("strong",null,"320×60"),d(" 或宽比例(如 4:1),JPEG/PNG/WebP,最大 2MB。"),l("br"),d(" LOGO 同时也作为搜索结果无封面图时的兜底图使用。 ")],-1))]),r.site_logo?(p(),g("div",ct,[l("img",{src:String(r.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=a=>a.target.style.display="none")},null,40,yt),t(u,{size:"small",type:"danger",plain:"",onClick:Dl},{default:n(()=>[...e[60]||(e[60]=[d("移除",-1)])]),_:1})])):L("",!0)])]),_:1}),t(i,{label:"底部免责声明"},{default:n(()=>[t(o,{modelValue:r.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=a=>r.site_disclaimer=a),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[61]||(e[61]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),t(i,{label:"滚动通知文字"},{default:n(()=>[t(o,{modelValue:r.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=a=>r.site_marquee=a),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),t(i,{label:"系统时区"},{default:n(()=>[t(o,{modelValue:r.timezone,"onUpdate:modelValue":e[4]||(e[4]=a=>r.timezone=a),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[M,!z.value||z.value==="sys-site"]]),q(t(P,{id:"section-sys-services"},{header:n(()=>[...e[64]||(e[64]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:n(()=>[t(b,{"label-width":"180px","label-position":"left"},{default:n(()=>{var a,c,x,A,We,qe;return[t(i,{label:"PanSou 搜索引擎地址"},{default:n(()=>{var U,Me;return[l("div",gt,[t(o,{modelValue:r.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=me=>r.pansou_url=me),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ae.value,onClick:kl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),t(u,{type:"warning",loading:re.value,onClick:wl,size:"default",style:{width:"130px"},disabled:!((U=T.value)!=null&&U.hasUpdate)},{default:n(()=>{var me;return[d(_(re.value?"更新中...":(me=T.value)!=null&&me.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Me=T.value)!=null&&Me.latestVersion?(p(),g("span",_t,_(T.value.latestVersion),1)):L("",!0)]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",bt,[l("div",xt,[l("div",{class:Je(["db-stat-value",((a=T.value)==null?void 0:a.status)==="connected"?"text-success":"text-warning"])},_(((c=T.value)==null?void 0:c.status)==="connected"?"已连接":T.value?"未连接":"-"),3),e[66]||(e[66]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",wt,[l("div",kt,_(((x=T.value)==null?void 0:x.channelCount)??"-"),1),e[67]||(e[67]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",Vt,[l("div",ht,_(((A=T.value)==null?void 0:A.pluginCount)??"-"),1),e[68]||(e[68]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",Ct,[l("div",Pt,_(((We=T.value)==null?void 0:We.diskCount)??"-"),1),e[69]||(e[69]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",St,[l("div",Ut,_(((qe=T.value)==null?void 0:qe.version)||"-"),1),e[70]||(e[70]=l("div",{class:"db-stat-label"},"版本",-1))])]),t(i,{label:"PanSou Web 端访问"},{default:n(()=>[t(w,{modelValue:Se.value,"onUpdate:modelValue":e[6]||(e[6]=U=>Se.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[71]||(e[71]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 开启后可通过 "),l("code",null,"/pansou/"),d(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),t(i,{label:"启用代理"},{default:n(()=>[t(w,{modelValue:ge.value,"onUpdate:modelValue":e[7]||(e[7]=U=>ge.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[72]||(e[72]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),ge.value?(p(),V(i,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:n(()=>[l("div",zt,[t(o,{modelValue:r.search_proxy_url,"onUpdate:modelValue":e[8]||(e[8]=U=>r.search_proxy_url=U),placeholder:"http://127.0.0.1:7890",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ie.value,onClick:Cl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(ie.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[73]||(e[73]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):L("",!0),t(i,{label:"视频解析服务地址"},{default:n(()=>[l("div",Tt,[t(o,{modelValue:r.video_parser_url,"onUpdate:modelValue":e[9]||(e[9]=U=>r.video_parser_url=U),placeholder:"http://video-parser:3001",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:oe.value,onClick:Vl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(oe.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[74]||(e[74]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),t(i,{label:"TMDB 读取令牌"},{default:n(()=>[l("div",jt,[t(o,{modelValue:r.tmdb_api_token,"onUpdate:modelValue":e[10]||(e[10]=U=>r.tmdb_api_token=U),type:"password","show-password":"",placeholder:"输入 TMDB API 读取令牌(Bearer Token)",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ne.value,onClick:hl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(ne.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[75]||(e[75]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" 用于搜索 TMDB 获取评分、导演、演员等完整内容信息。 "),l("a",{href:"https://www.themoviedb.org/settings/api",target:"_blank",rel:"noopener",style:{color:"var(--primary-color)"}},"获取令牌 →")],-1))]),_:1}),t(i,{label:"IP 归属地查询"},{default:n(()=>[l("div",It,[t(o,{modelValue:r.ip_geo_api_url,"onUpdate:modelValue":e[11]||(e[11]=U=>r.ip_geo_api_url=U),placeholder:"https://cn.apihz.cn/api/ip/chaapi.php?id=xxx&key=***&ip={ip}&td=0",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:de.value,onClick:Pl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(de.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[76]||(e[76]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),d(" 会被替换为实际 IP。 ")],-1)),e[77]||(e[77]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),t(E,{"content-position":"left"},{default:n(()=>[...e[78]||(e[78]=[d("Redis 缓存",-1)])]),_:1}),t(i,{label:"Redis 连接地址"},{default:n(()=>[l("div",Ot,[t(o,{modelValue:r.redis_url,"onUpdate:modelValue":e[12]||(e[12]=U=>r.redis_url=U),placeholder:"redis://:***@172.17.0.1:6379",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",size:"default",loading:se.value,onClick:xl,style:{width:"100px"}},{default:n(()=>[d(_(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[79]||(e[79]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" Redis 用于缓存搜索验证结果,提升响应速度。"),l("br"),l("strong",null,"带密码格式:"),l("code",null,"redis://:你的密码@地址:6379"),l("br"),d(" 修改后保存配置即可生效,无需重启。"),l("strong",null,"切换 Redis 只会清空缓存,不影响任何重要数据。")],-1))]),_:1})]}),_:1}),Ce.value?(p(),g("div",At,[t(k,{class:"is-loading",size:20},{default:n(()=>[t(He(Zl))]),_:1}),e[80]||(e[80]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(p(),g("div",Rt,[l("div",$t,[l("div",{class:Je(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},_(R.redis_status),3),e[81]||(e[81]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",Bt,[l("div",Et,_(R.db_size),1),e[82]||(e[82]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",Lt,[l("div",Nt,_(R.save_records),1),e[83]||(e[83]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Ft,[l("div",Dt,_(R.search_stats),1),e[84]||(e[84]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",Kt,[l("div",Gt,_(R.cloud_configs),1),e[85]||(e[85]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Wt,[l("div",qt,_(R.content_cache),1),e[86]||(e[86]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[M,!z.value||z.value==="sys-services"]]),q(t(P,{id:"section-sys-strategy"},{header:n(()=>[...e[87]||(e[87]=[l("span",null,"🔧 性能配置",-1)])]),default:n(()=>[l("div",Mt,[t(E,{"content-position":"left"},{default:n(()=>[...e[88]||(e[88]=[d("搜索结果返回方式",-1)])]),_:1}),l("div",Ht,[l("div",Jt,[e[89]||(e[89]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),t(w,{modelValue:r.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=a=>r.link_validation_enabled=a),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Yt,[l("div",Qt,[e[93]||(e[93]=l("span",{class:"field-label"},"搜索结果方式",-1)),t(Kl,{modelValue:r.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=a=>r.search_strategy=a)},{default:n(()=>[t(Fe,{value:"wait_all"},{default:n(()=>[...e[91]||(e[91]=[d("等待全部结果后展示",-1)])]),_:1}),t(Fe,{value:"stream_channel"},{default:n(()=>[...e[92]||(e[92]=[d("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),t(E,{"content-position":"left"},{default:n(()=>[...e[95]||(e[95]=[d("搜索策略",-1)])]),_:1}),l("div",Xt,[l("div",Zt,[l("div",es,[e[96]||(e[96]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),t(w,{modelValue:Ue.value,"onUpdate:modelValue":e[15]||(e[15]=a=>Ue.value=a),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[97]||(e[97]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",ls,[l("div",ts,[e[98]||(e[98]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),t(J,{modelValue:r.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=a=>r.search_result_limit=a),min:1,max:100},null,8,["modelValue"])]),e[99]||(e[99]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",ss,[l("div",as,[e[100]||(e[100]=l("span",{class:"field-label"},"验证并发数",-1)),t(J,{modelValue:r.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=a=>r.validation_concurrency=a),min:1,max:50},null,8,["modelValue"])]),e[101]||(e[101]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",os,[l("div",ns,[e[102]||(e[102]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=a=>r.validation_cache_ttl_valid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[103]||(e[103]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",is,[l("div",ds,[e[104]||(e[104]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=a=>r.validation_cache_ttl_invalid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",rs,[l("div",us,[e[106]||(e[106]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),t(J,{modelValue:r.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=a=>r.validation_timeout=a),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[107]||(e[107]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),t(E,{"content-position":"left"},{default:n(()=>[...e[108]||(e[108]=[d("链接检测配置",-1)])]),_:1}),l("div",ps,[e[110]||(e[110]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",fs,[t(o,{modelValue:Q.value,"onUpdate:modelValue":e[21]||(e[21]=a=>Q.value=a),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Sl,disabled:!Q.value.trim()},{default:n(()=>[...e[109]||(e[109]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),N.value.length>0?(p(),g("div",ms,[(p(!0),g(I,null,O(N.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:zl(a),"disable-transitions":!1,onClose:x=>Ul(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["type","onClose"]))),128))])):(p(),g("div",vs,"暂无过滤规则")),e[111]||(e[111]=l("div",{class:"filter-rule-help"},[l("div",{class:"help-title"},"📖 规则说明"),l("div",{class:"help-row"},[l("code",null,"# 注释内容"),d(" — "),l("code",null,"#"),d(" 后必须跟"),l("strong",null,"空格"),d("才会被识别为注释,单纯的 "),l("code",null,"#动漫"),d(" 会被当作要移除的文本")]),l("div",{class:"help-row"},[l("code",null,"/正则表达式/标志"),d(" — 正则匹配,匹配到的内容会被删除。如 "),l("code",null,"/^\\\\d+[、,.\\\\s]/"),d(" 去掉开头的序号")]),l("div",{class:"help-row"},[l("code",null,"纯文本"),d(" — 直接写要移除的文字(支持 emoji),凡是标题中含有的都会被删除")])],-1))]),l("div",cs,[e[113]||(e[113]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",ys,[t(o,{modelValue:X.value,"onUpdate:modelValue":e[22]||(e[22]=a=>X.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Tl,disabled:!X.value.trim()},{default:n(()=>[...e[112]||(e[112]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[114]||(e[114]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),F.value.length>0?(p(),g("div",gs,[(p(!0),g(I,null,O(F.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:x=>jl(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",_s,"暂无失效关键词,所有链接将默认判为有效"))]),t(E,{"content-position":"left"},{default:n(()=>[...e[115]||(e[115]=[d("夸克网盘转存清理",-1)])]),_:1}),l("div",bs,[e[117]||(e[117]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",xs,[t(o,{modelValue:Z.value,"onUpdate:modelValue":e[23]||(e[23]=a=>Z.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Il,disabled:!Z.value.trim()},{default:n(()=>[...e[116]||(e[116]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[118]||(e[118]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),D.value.length>0?(p(),g("div",ws,[(p(!0),g(I,null,O(D.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"warning","disable-transitions":!1,onClose:x=>Ol(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",ks,"暂未配置广告关键词,不会进行广告清理"))]),l("div",Vs,[e[120]||(e[120]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",hs,[t(o,{modelValue:ee.value,"onUpdate:modelValue":e[24]||(e[24]=a=>ee.value=a),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Al,disabled:!ee.value.trim()},{default:n(()=>[...e[119]||(e[119]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[121]||(e[121]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),K.value.length>0?(p(),g("div",Cs,[(p(!0),g(I,null,O(K.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"info","disable-transitions":!1,onClose:x=>Rl(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",Ps,"暂未配置警示文件夹"))]),l("div",Ss,[e[123]||(e[123]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",Us,[t(o,{modelValue:le.value,"onUpdate:modelValue":e[25]||(e[25]=a=>le.value=a),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:$l,disabled:!le.value.trim()},{default:n(()=>[...e[122]||(e[122]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[124]||(e[124]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),G.value.length>0?(p(),g("div",zs,[(p(!0),g(I,null,O(G.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:x=>Bl(c)},{default:n(()=>[d("."+_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",Ts,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[M,!z.value||z.value==="sys-strategy"]]),q(t(P,{id:"section-sys-password"},{header:n(()=>[...e[125]||(e[125]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:n(()=>[t(b,{ref_key:"passwordFormRef",ref:he,model:j,rules:bl,"label-width":"120px","label-position":"left"},{default:n(()=>[t(i,{label:"原密码",prop:"oldPassword"},{default:n(()=>[t(o,{modelValue:j.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=a=>j.oldPassword=a),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"新密码",prop:"newPassword"},{default:n(()=>[t(o,{modelValue:j.newPassword,"onUpdate:modelValue":e[27]||(e[27]=a=>j.newPassword=a),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"确认新密码",prop:"confirmPassword"},{default:n(()=>[t(o,{modelValue:j.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=a=>j.confirmPassword=a),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,null,{default:n(()=>[t(u,{type:"primary",loading:ye.value,onClick:Ll},{default:n(()=>[...e[126]||(e[126]=[d("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[M,!z.value||z.value==="sys-password"]]),q(t(P,{id:"section-sys-notify"},{header:n(()=>[...e[127]||(e[127]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:n(()=>[t(Wl,{"model-value":["global"]},{default:n(()=>[t(Gl,{title:"全局推送(管理员兜底)",name:"global"},{default:n(()=>[l("div",js,[t(b,{"label-width":"140px","label-position":"left"},{default:n(()=>[l("div",Is,[(p(!0),g(I,null,O($.value,(a,c)=>(p(),g("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",Os,[t(w,{modelValue:v.channels[c]._enabled,"onUpdate:modelValue":x=>v.channels[c]._enabled=x,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,_(a.label),1),v.channels[c]._enabled?(p(),V(u,{key:0,size:"small",text:"",type:"primary",onClick:x=>_l(c),loading:v.channels[c]._testing},{default:n(()=>[...e[128]||(e[128]=[d("测试",-1)])]),_:1},8,["onClick","loading"])):L("",!0)]),v.channels[c]._enabled?(p(),g("div",As,[(p(!0),g(I,null,O(a.params,x=>(p(),V(i,{key:x.key,label:x.label,style:{"margin-bottom":"6px"}},{default:n(()=>[x.type==="password"?(p(),V(o,{key:0,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A,type:"password","show-password":"",placeholder:x.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):x.type==="switch"?(p(),V(w,{key:1,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A},null,8,["modelValue","onUpdate:modelValue"])):x.type==="number"?(p(),V(J,{key:2,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(p(),V(o,{key:3,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A,placeholder:x.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):L("",!0)]))),128))]),t(E,{"content-position":"left"},{default:n(()=>[...e[129]||(e[129]=[d("全局事件开关",-1)])]),_:1}),l("div",Rs,[l("div",$s,[t(w,{modelValue:v.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=a=>v.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[30]||(e[30]=a=>fe("on_save_success"))},{default:n(()=>[...e[130]||(e[130]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Bs,[t(w,{modelValue:v.events.on_save_fail,"onUpdate:modelValue":e[31]||(e[31]=a=>v.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[32]||(e[32]=a=>fe("on_save_fail"))},{default:n(()=>[...e[131]||(e[131]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Es,[t(w,{modelValue:v.events.on_cookie_expire,"onUpdate:modelValue":e[33]||(e[33]=a=>v.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[34]||(e[34]=a=>fe("on_cookie_expire"))},{default:n(()=>[...e[132]||(e[132]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Ls,[t(w,{modelValue:v.events.on_cleanup,"onUpdate:modelValue":e[35]||(e[35]=a=>v.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[36]||(e[36]=a=>fe("on_cleanup"))},{default:n(()=>[...e[133]||(e[133]=[d("✏️ 编辑模板",-1)])]),_:1})])]),e[134]||(e[134]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1))]),_:1})])]),_:1})]),_:1}),e[144]||(e[144]=d()),t(E,{"content-position":"left"},{default:n(()=>[...e[135]||(e[135]=[d("添加推送用户",-1)])]),_:1}),l("div",Ns,[l("div",Fs,[t(Ke,{modelValue:m.account,"onUpdate:modelValue":e[37]||(e[37]=a=>m.account=a),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:n(()=>[(p(!0),g(I,null,O(Oe.value,a=>(p(),V(De,{key:a,label:a,value:a},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(Ke,{modelValue:m.channel,"onUpdate:modelValue":e[38]||(e[38]=a=>m.channel=a),clearable:"",placeholder:"选择消息频道",style:{width:"220px"},onChange:ol},{default:n(()=>[(p(!0),g(I,null,O(nl.value,(a,c)=>(p(),V(De,{key:c,label:a.label,value:c},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),m.channel&&$.value[m.channel]?(p(!0),g(I,{key:0},O($.value[m.channel].params,a=>(p(),g("div",{key:a.key,style:{display:"inline-flex","align-items":"center",gap:"4px"}},[l("span",Ds,_(a.label)+":",1),a.type==="password"?(p(),V(o,{key:0,modelValue:m.channelParams[a.key],"onUpdate:modelValue":c=>m.channelParams[a.key]=c,type:"password","show-password":"",placeholder:a.placeholder||a.label,style:{width:"200px"},size:"small"},null,8,["modelValue","onUpdate:modelValue","placeholder"])):(p(),V(o,{key:1,modelValue:m.channelParams[a.key],"onUpdate:modelValue":c=>m.channelParams[a.key]=c,placeholder:a.placeholder||a.label,style:{width:"200px"},size:"small"},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]))),128)):L("",!0),l("div",Ks,[t(w,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[39]||(e[39]=a=>m.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(w,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[40]||(e[40]=a=>m.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(w,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[41]||(e[41]=a=>m.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(w,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[42]||(e[42]=a=>m.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"])]),t(u,{type:"primary",size:"small",loading:we.value,onClick:rl},{default:n(()=>[d(_(m.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),m.id?(p(),V(u,{key:1,size:"small",onClick:dl},{default:n(()=>[...e[136]||(e[136]=[d("取消编辑",-1)])]),_:1})):L("",!0)])]),t(E,{"content-position":"left"},{default:n(()=>[...e[137]||(e[137]=[d("推送用户列表",-1)])]),_:1}),t(Ml,{data:Ie.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:n(()=>[t(W,{prop:"account",label:"推广账号","min-width":"140"}),t(W,{label:"转存成功",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_success")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[138]||(e[138]=[d("✔",-1)])]),_:1})):(p(),g("span",Gs,"—"))]),_:1}),t(W,{label:"转存失败",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_fail")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[139]||(e[139]=[d("✔",-1)])]),_:1})):(p(),g("span",Ws,"—"))]),_:1}),t(W,{label:"Cookie过期",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cookie_expire")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[140]||(e[140]=[d("✔",-1)])]),_:1})):(p(),g("span",qs,"—"))]),_:1}),t(W,{label:"清理完成",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cleanup")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[141]||(e[141]=[d("✔",-1)])]),_:1})):(p(),g("span",Ms,"—"))]),_:1}),t(W,{label:"消息频道","min-width":"180"},{default:n(({row:a})=>[ml(a)?(p(),g(I,{key:0},[(p(!0),g(I,null,O(Ae(a),(c,x)=>(p(),V(S,{key:x,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:n(()=>[d(_(fl(x)),1)]),_:2},1024))),128)),l("span",Hs,_(vl(a)),1)],64)):(p(),g("span",Js,"走全局推送"))]),_:1}),t(W,{label:"操作",width:"180",fixed:"right"},{default:n(({row:a})=>[t(u,{text:"",type:"primary",size:"small",onClick:c=>il(a)},{default:n(()=>[...e[142]||(e[142]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(ql,{title:"确定删除该推送用户?",onConfirm:c=>pl(a)},{reference:n(()=>[t(u,{text:"",type:"danger",size:"small"},{default:n(()=>[...e[143]||(e[143]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[M,!z.value||z.value==="sys-notify"]]),q(t(P,{id:"section-sys-daily-report"},{header:n(()=>[l("div",Ys,[e[147]||(e[147]=l("span",null,"📊 每日汇报",-1)),l("div",null,[t(u,{size:"small",loading:_e.value,onClick:tl},{default:n(()=>[...e[145]||(e[145]=[d("📋 预览",-1)])]),_:1},8,["loading"]),t(u,{size:"small",type:"primary",loading:be.value,onClick:sl},{default:n(()=>[...e[146]||(e[146]=[d("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:n(()=>[t(b,{"label-width":"140px","label-position":"left"},{default:n(()=>[t(i,{label:"启用每日汇报"},{default:n(()=>[t(w,{modelValue:C.enabled,"onUpdate:modelValue":e[43]||(e[43]=a=>C.enabled=a),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),t(i,{label:"发送时间"},{default:n(()=>[t(Hl,{modelValue:C.time,"onUpdate:modelValue":e[44]||(e[44]=a=>C.time=a),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!C.enabled},null,8,["modelValue","disabled"]),e[148]||(e[148]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),t(i,{label:"报告内容"},{default:n(()=>[l("div",Qs,[t(w,{modelValue:C.includeSearch,"onUpdate:modelValue":e[45]||(e[45]=a=>C.includeSearch=a),"active-text":"搜索统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(w,{modelValue:C.includeSaves,"onUpdate:modelValue":e[46]||(e[46]=a=>C.includeSaves=a),"active-text":"转存统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(w,{modelValue:C.includeStorage,"onUpdate:modelValue":e[47]||(e[47]=a=>C.includeStorage=a),"active-text":"网盘容量",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(w,{modelValue:C.includeUsers,"onUpdate:modelValue":e[48]||(e[48]=a=>C.includeUsers=a),"active-text":"用户数",disabled:!C.enabled},null,8,["modelValue","disabled"])])]),_:1}),t(i,{label:"上次发送"},{default:n(()=>[l("span",null,_(je.value||"从未发送"),1)]),_:1})]),_:1}),t(Ge,{modelValue:xe.value,"onUpdate:modelValue":e[49]||(e[49]=a=>xe.value=a),title:"📊 每日汇报预览",width:"600px"},{default:n(()=>[l("div",Xs,_(Te.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[M,!z.value||z.value==="sys-daily-report"]]),q(t(P,{id:"section-sys-maintenance"},{header:n(()=>[...e[149]||(e[149]=[l("span",null,"🔄 系统维护",-1)])]),default:n(()=>[e[154]||(e[154]=d()),t(b,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"自动更新镜像"},{default:n(()=>[t(w,{modelValue:ze.value,"onUpdate:modelValue":e[50]||(e[50]=a=>ze.value=a),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[150]||(e[150]=d()),e[151]||(e[151]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[152]||(e[152]=d()),e[153]||(e[153]=l("div",{class:"form-tip",style:{color:"var(--(--el-color-warning,#e6a23c))"}}," 当前需手动在服务器执行:docker-compose -f /opt/CloudSearch/docker-compose.yml pull && docker-compose -f /opt/CloudSearch/docker-compose.yml up -d ",-1))]),_:1})]),_:1})]),_:1},512),[[M,!z.value||z.value==="sys-maintenance"]]),t(Ge,{modelValue:pe.value,"onUpdate:modelValue":e[54]||(e[54]=a=>pe.value=a),title:"✏️ 编辑消息模板 — "+gl.value,width:"560px",onClose:e[55]||(e[55]=a=>B.value="")},{footer:n(()=>[t(u,{onClick:e[53]||(e[53]=a=>pe.value=!1)},{default:n(()=>[...e[175]||(e[175]=[d("关闭",-1)])]),_:1})]),default:n(()=>[l("div",Zs,[e[164]||(e[164]=d(" 可用变量:",-1)),e[165]||(e[165]=l("br",null,null,-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[155]||(e[155]=[d("{cloud_type}",-1)])]),_:1}),e[166]||(e[166]=d(" 网盘类型 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[156]||(e[156]=[d("{nickname}",-1)])]),_:1}),e[167]||(e[167]=d(" 网盘昵称 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[157]||(e[157]=[d("{file_name}",-1)])]),_:1}),e[168]||(e[168]=d(" 文件名 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[158]||(e[158]=[d("{file_size}",-1)])]),_:1}),e[169]||(e[169]=d(" 文件大小 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[159]||(e[159]=[d("{duration}",-1)])]),_:1}),e[170]||(e[170]=d(" 耗时 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[160]||(e[160]=[d("{share_url}",-1)])]),_:1}),e[171]||(e[171]=d(" 分享链接 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[161]||(e[161]=[d("{fail_count}",-1)])]),_:1}),e[172]||(e[172]=d(" 连续失败次数 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[162]||(e[162]=[d("{error_message}",-1)])]),_:1}),e[173]||(e[173]=d(" 错误信息 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[163]||(e[163]=[d("{freed_space}",-1)])]),_:1}),e[174]||(e[174]=d(" 释放空间 ",-1))]),B.value&&v.eventTemplates[B.value]?(p(),V(b,{key:0,"label-width":"60px"},{default:n(()=>[t(i,{label:"标题"},{default:n(()=>[t(o,{modelValue:v.eventTemplates[B.value].title,"onUpdate:modelValue":e[51]||(e[51]=a=>v.eventTemplates[B.value].title=a),placeholder:"消息标题"},null,8,["modelValue"])]),_:1}),t(i,{label:"内容"},{default:n(()=>[t(o,{modelValue:v.eventTemplates[B.value].content,"onUpdate:modelValue":e[52]||(e[52]=a=>v.eventTemplates[B.value].content=a),type:"textarea",rows:5,placeholder:"消息正文,支持 Markdown 和 {变量}"},null,8,["modelValue"])]),_:1})]),_:1})):L("",!0)]),_:1},8,["modelValue","title"]),l("div",ea,[t(u,{type:"primary",size:"large",loading:ce.value,onClick:El},{default:n(()=>[...e[176]||(e[176]=[d(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),aa=pt(la,[["__scopeId","data-v-fd21d202"]]);export{aa as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/SystemConfig-CswhThiW.js b/source_clean/frontend-src/dist-vite/assets/SystemConfig-CswhThiW.js deleted file mode 100644 index 4f8f8c3..0000000 --- a/source_clean/frontend-src/dist-vite/assets/SystemConfig-CswhThiW.js +++ /dev/null @@ -1,27 +0,0 @@ -import{d as Ml,o as Hl,E as p,x as Jl,a as f,c as g,K as q,L as M,f as t,w as n,b as l,v as H,h as y,i as Y,j as V,l as d,k as He,N as Yl,e as E,t as b,n as Je,y as h,M as Ql,F as O,r as A,z as Xl,u as Zl}from"./index-DLC2deeT.js";import{k as et,w as lt,x as tt,p as st,y as at,z as ot,A as te,B as nt,C as it,D as dt,_ as rt}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ut={class:"system-config"},pt={class:"fallback-upload-wrap"},ft={class:"fallback-upload-row"},mt={key:0,class:"fallback-preview"},vt=["src"],ct={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},yt={key:0,style:{"font-size":"11px",color:"#e6a23c","white-space":"nowrap"}},gt={class:"pansou-status-grid"},_t={class:"db-stat-item"},bt={class:"db-stat-item"},xt={class:"db-stat-value"},wt={class:"db-stat-item"},kt={class:"db-stat-value"},Vt={class:"db-stat-item"},ht={class:"db-stat-value"},Ct={class:"db-stat-item"},St={class:"db-stat-value"},Ut={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Pt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},zt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Tt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},jt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},It={key:0,style:{"text-align":"center",padding:"16px"}},Ot={key:1,class:"db-status-grid"},At={class:"db-stat-item"},Rt={class:"db-stat-item"},$t={class:"db-stat-value"},Bt={class:"db-stat-item"},Et={class:"db-stat-value"},Lt={class:"db-stat-item"},Nt={class:"db-stat-value"},Ft={class:"db-stat-item"},Dt={class:"db-stat-value"},Gt={class:"db-stat-item"},Kt={class:"db-stat-value"},Wt={class:"strategy-section"},qt={class:"field-block"},Mt={class:"field-label-row"},Ht={class:"field-block"},Jt={class:"field-label-row"},Yt={class:"strategy-grid"},Qt={class:"grid-cell"},Xt={class:"field-label-row"},Zt={class:"grid-cell"},es={class:"field-label-row"},ls={class:"grid-cell"},ts={class:"field-label-row"},ss={class:"grid-cell"},as={class:"field-label-row"},os={class:"grid-cell"},ns={class:"field-label-row"},is={class:"grid-cell"},ds={class:"field-label-row"},rs={class:"field-block"},us={style:{display:"flex",gap:"8px","align-items":"stretch"}},ps={key:0,class:"tag-list"},fs={key:1,class:"tag-empty"},ms={class:"field-block"},vs={style:{display:"flex",gap:"8px","align-items":"stretch"}},cs={key:0,class:"tag-list"},ys={key:1,class:"tag-empty"},gs={class:"field-block"},_s={style:{display:"flex",gap:"8px","align-items":"stretch"}},bs={key:0,class:"tag-list"},xs={key:1,class:"tag-empty"},ws={class:"field-block"},ks={style:{display:"flex",gap:"8px","align-items":"stretch"}},Vs={key:0,class:"tag-list"},hs={key:1,class:"tag-empty"},Cs={class:"field-block"},Ss={style:{display:"flex",gap:"8px","align-items":"stretch"}},Us={key:0,class:"tag-list"},Ps={key:1,class:"tag-empty"},zs={class:"strategy-section"},Ts={style:{display:"grid","grid-template-columns":"repeat(2,1fr)",gap:"8px"}},js={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"6px"}},Is={key:0},Os={style:{display:"flex","flex-direction":"column",gap:"6px"}},As={style:{display:"flex","align-items":"center",gap:"8px"}},Rs={style:{display:"flex","align-items":"center",gap:"8px"}},$s={style:{display:"flex","align-items":"center",gap:"8px"}},Bs={style:{display:"flex","align-items":"center",gap:"8px"}},Es={style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"12px 16px","margin-bottom":"16px"}},Ls={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Ns={key:1,style:{color:"#ccc"}},Fs={key:1,style:{color:"#ccc"}},Ds={key:1,style:{color:"#ccc"}},Gs={key:1,style:{color:"#ccc"}},Ks={key:0,style:{color:"#909399","font-size":"12px"}},Ws={style:{display:"flex","align-items":"center","justify-content":"space-between"}},qs={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ms={style:{"white-space":"pre-wrap","font-family":"monospace",background:"var(--el-fill-color-light)",padding:"16px","border-radius":"8px","max-height":"500px","overflow-y":"auto"}},Hs={style:{"margin-bottom":"10px","font-size":"12px",color:"var(--el-text-color-secondary)","line-height":"2"}},Js={class:"save-bar"},Ys=Ml({__name:"SystemConfig",props:{section:{}},setup(Ye){const Qe=Ye,Xe=Xl();Zl();const P=H(()=>Qe.section||Xe.query.section||""),he=y(),ve=y([]),r=Y({}),L=y([]),Q=y(""),N=y([]),X=y(""),F=y([]),Z=y(""),D=y([]),ee=y(""),le=y(""),G=y([]),ce=y(!1),ye=y(!1),R=Y({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),Ce=y(!0),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),de=y(!1),z=y(null),Se=y(!0),re=y(!1),ge=H({get:()=>String(r.search_proxy_enabled)==="true",set:s=>{r.search_proxy_enabled=s?"true":"false"}}),Ue=H({get:()=>String(r.pansou_web_enabled)==="true",set:s=>{r.pansou_web_enabled=s?"true":"false"}}),Pe=H({get:()=>String(r.search_all_channels)==="true",set:s=>{r.search_all_channels=s?"true":"false"}}),ze=H({get:()=>String(r.auto_update_enabled)==="true",set:s=>{r.auto_update_enabled=s?"true":"false"}}),C=Y({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),_e=y(!1),be=y(!1),Te=y(""),xe=y(!1),je=y("");async function Ze(){try{const s=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Object.assign(C,e)}}catch{}}async function el(){try{const s=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();e.date&&(je.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function ll(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...C})})}catch{}}async function tl(){_e.value=!0;try{const s=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Te.value=e.content,xe.value=!0}}finally{_e.value=!1}}async function sl(){be.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?p.success("测试报告已发送到全局通知通道"):p.error("发送失败")}catch{p.error("发送失败")}finally{be.value=!1}}const Ie=y([]),K=y({}),we=y(!1),Oe=y([]);async function al(){try{const s=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!s.ok)return;const e=await s.json(),o=Array.isArray(e)?[...new Set(e.map(i=>i.promotion_account||"").filter(Boolean))]:[];Oe.value=o}catch{}}const c=Y({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ol=H(()=>{var e;const s={};for(const[o,i]of Object.entries(K.value))(e=m.channels[o])!=null&&e._enabled&&(s[o]=i);return s}),m=Y({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},eventTemplates:{on_save_success:{title:"✅ 转存成功",content:`**{cloud_type}** · {nickname} -文件: {file_name} -大小: {file_size} -耗时: {duration}s -链接: {share_url}`},on_save_fail:{title:"❌ 转存连续失败 {fail_count} 次",content:`**{cloud_type}** · {nickname} -连续失败次数: {fail_count} -最后失败: {error_message} -请检查网盘状态`},on_cookie_expire:{title:"⚠️ Cookie 已过期",content:`**{cloud_type}** · {nickname} -Cookie 已过期或失效,请重新登录 -最后操作: {share_url}`},on_cleanup:{title:"🧹 清理完成",content:`**{cloud_type}** · {nickname} -清理完成 -释放空间: {freed_space}`}}});function nl(s){var e,o,i,w;if(s){c.id=s.id,c.account=s.account;const u=s.notify_config||{};c.channels=Object.keys(u.channels||{}),c.events={on_save_success:((e=u.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((o=u.events)==null?void 0:o.on_save_fail)!==!1,on_cookie_expire:((i=u.events)==null?void 0:i.on_cookie_expire)!==!1,on_cleanup:((w=u.events)==null?void 0:w.on_cleanup)===!0}}else c.id=null,c.account="",c.channels=[],c.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function il(){c.id=null,c.account="",c.channels=[],c.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function ue(s,e){return((s.notify_config||{}).events||{})[e]===!0}async function dl(){if(!c.account){p.warning("请填写推广账号");return}we.value=!0;try{const s={account:c.account,notify_config:{channels:{},events:c.events}},e={};for(const i of c.channels)e[i]={};s.notify_config.channels=e,c.id?await fetch("/api/admin/push-users/"+c.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)});const o=!!c.id;c.id=null,c.account="",c.channels=[],c.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},p.success(o?"推送用户已更新":"推送用户已添加"),await ke()}catch(s){p.error(s.message||"保存失败")}finally{we.value=!1}}async function ke(){try{const s=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});s.ok&&(Ie.value=await s.json())}catch(s){console.error("Failed to load push users",s)}}async function rl(){try{K.value=await tt()}catch(s){console.error("Failed to load providers",s)}}async function ul(s){try{await fetch("/api/admin/push-users/"+s.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),p.success("已删除"),await ke()}catch(e){p.error(e.message||"删除失败")}}function Ae(s){var o;return((o=s.notify_config)==null?void 0:o.channels)||{}}function pl(s){var e;return((e=K.value[s])==null?void 0:e.label)||s}function fl(s){return Object.keys(Ae(s)).length>0}function ml(){const s={};for(const[e,o]of Object.entries(K.value)){s[e]={_enabled:!1,_testing:!1};for(const i of o.params||[])s[e][i.key]=i.default||""}m.channels=s,m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function vl(){try{const o=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(i=>i.key==="global_notify_config");if(o&&o.value)try{const i=JSON.parse(o.value),w=i.channels||{};for(const[u,k]of Object.entries(w))if(m.channels[u]){m.channels[u]._enabled=!0;for(const[j,x]of Object.entries(k))m.channels[u][j]=x}if(i.events&&(m.events.on_save_success=i.events.on_save_success!==!1,m.events.on_save_fail=i.events.on_save_fail!==!1,m.events.on_cookie_expire=i.events.on_cookie_expire!==!1,m.events.on_cleanup=i.events.on_cleanup===!0),i.eventTemplates)for(const[u,k]of Object.entries(i.eventTemplates))m.eventTemplates[u]=k}catch{}}catch{}}const pe=y(!1),$=y(""),cl=H(()=>({on_save_success:"转存成功",on_save_fail:"转存失败",on_cookie_expire:"Cookie过期",on_cleanup:"清理完成"})[$.value]||"");function fe(s){$.value=s,pe.value=!0,m.eventTemplates[s]||(m.eventTemplates[s]={title:"",content:""})}async function yl(s){const e=m.channels[s];if(!(!e||!e._enabled)){e._testing=!0;try{const o=await at(s);o.success?p.success(o.message):p.error(o.message)}catch(o){p.error(o.message||"测试失败")}finally{e._testing=!1}}}const T=Y({oldPassword:"",newPassword:"",confirmPassword:""}),gl={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"新密码至少需要6个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认新密码",trigger:"blur"},{validator:(s,e,o)=>{e!==T.newPassword?o(new Error("两次输入的密码不一致")):o()},trigger:"blur"}]};Hl(async()=>{try{ve.value=await et();for(const u of ve.value)r[u.key]=u.value;const s=String(r.title_filter_rules||"");L.value=s.split(` -`).filter(u=>u.trim());const e=String(r.link_invalid_keywords||"");N.value=e.split(` -`).filter(u=>u.trim());const o=String(r.quark_ad_keywords||"");F.value=o.split(` -`).filter(u=>u.trim());const i=String(r.quark_warning_folder_names||"");D.value=i.split(` -`).filter(u=>u.trim());const w=String(r.quark_sus_extensions||"");G.value=w.split(` -`).filter(u=>u.trim())}catch{p.error("加载系统配置失败")}try{const s=await lt();Object.assign(R,s)}catch{R.db_size="无法读取"}finally{Ce.value=!1}Ve(),await rl(),ml(),await vl(),ke(),Ze(),el(),al()}),Jl(K,()=>{for(const[s,e]of Object.entries(K.value))if(!m.channels[s]){m.channels[s]={_enabled:!1,_testing:!1};for(const o of e.params||[])m.channels[s][o.key]=o.default||""}});async function _l(){var e,o;const s=String(r.redis_url||"redis://redis:6379");se.value=!0;try{const i=await ot(s);i.ok?p.success(`✅ Redis 连接成功 — ${i.info}`):p.error(`❌ Redis 连接失败 — ${i.info}`)}catch(i){p.error(((o=(e=i.response)==null?void 0:e.data)==null?void 0:o.error)||"测试请求失败")}finally{se.value=!1}}async function Ve(){Se.value=!0;try{const s=localStorage.getItem("admin_token"),e={};s&&(e.Authorization="Bearer "+s);const o=await fetch("/api/admin/pansou-info",{headers:e});if(!o.ok)throw new Error("HTTP "+o.status);const i=await o.json();z.value=i}catch{z.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{Se.value=!1}}async function bl(){re.value=!0;try{const s=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};s&&(e.Authorization="Bearer "+s);const i=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();i.ok?(p.success("✅ PanSou 已更新并重启"),setTimeout(()=>Ve(),3e3)):p.error("❌ 更新失败 — "+(i.error||"未知错误"))}catch(s){p.error(s.message||"更新请求失败")}finally{re.value=!1}}async function xl(){var s,e;ae.value=!0;try{const o=await te({type:"pansou",url:String(r.pansou_url||"")});o.ok?(Ve(),p.success(`✅ PanSou 连接成功 — ${o.info}`)):p.error(`❌ PanSou 连接失败 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function wl(){var s,e;oe.value=!0;try{const o=await te({type:"video_parser",url:String(r.video_parser_url||"")});o.ok?p.success(`✅ 视频解析服务连接成功 — ${o.info}`):p.error(`❌ 视频解析服务连接失败 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function kl(){var s,e;ne.value=!0;try{const o=await te({type:"tmdb",token:String(r.tmdb_api_token||"")});o.ok?p.success(`✅ TMDB 令牌有效 — ${o.info}`):p.error(`❌ TMDB 连接失败 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function Vl(){var s,e;ie.value=!0;try{const o=await te({type:"proxy",url:String(r.search_proxy_url||"")});o.ok?p.success(`✅ 搜索代理可用 — ${o.info}`):p.error(`❌ 搜索代理不可用 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}async function hl(){var s,e;de.value=!0;try{const o=String(r.ip_geo_api_url||"");if(!o){p.warning("请先输入 IP 归属地查询 API 地址");return}const i=await te({type:"ip_geo",url:o});i.ok?p.success("✅ IP 归属地接口可用 — "+i.info):p.error("❌ IP 归属地接口不可用 — "+i.info)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{de.value=!1}}function Cl(){const s=Q.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)L.value.includes(i)||(L.value.push(i),o++);Q.value="",Re(),o>0?p.success(`已添加 ${o} 条规则`):p.info("所有规则已存在")}function Sl(s){L.value.splice(s,1),Re()}function Ul(s){return s.startsWith("#")?"info":s.startsWith("/")&&(s.endsWith("/")||s.endsWith("/g")||s.endsWith("/i")||s.endsWith("/gi"))?"warning":""}function Re(){r.title_filter_rules=L.value.join(` -`)}function Pl(){const s=X.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)N.value.includes(i)||(N.value.push(i),o++);X.value="",$e(),o>0?p.success(`已添加 ${o} 个关键词`):p.info("所有关键词已存在")}function zl(s){N.value.splice(s,1),$e()}function $e(){r.link_invalid_keywords=N.value.join(` -`)}function Tl(){const s=Z.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)F.value.includes(i)||(F.value.push(i),o++);Z.value="",Be(),o>0?p.success():p.info("所有关键词已存在")}function jl(s){F.value.splice(s,1),Be()}function Be(){r.quark_ad_keywords=F.value.join(` -`)}function Il(){const s=ee.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)D.value.includes(i)||(D.value.push(i),o++);ee.value="",Ee(),o>0?p.success():p.info("所有文件夹名已存在")}function Ol(s){D.value.splice(s,1),Ee()}function Ee(){r.quark_warning_folder_names=D.value.join(` -`)}function Al(){const s=le.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim().toLowerCase().replace(/^\./,"")).filter(i=>i);let o=0;for(const i of e)G.value.includes(i)||(G.value.push(i),o++);le.value="",Le(),o>0?p.success("已添加 ${added} 个后缀"):p.info("所有后缀已存在")}function Rl(s){G.value.splice(s,1),Le()}function Le(){r.quark_sus_extensions=G.value.join(` -`)}async function $l(){var s,e;ce.value=!0;try{const o={};for(const[w,u]of Object.entries(m.channels))if(u._enabled){const k={};for(const[j,x]of Object.entries(u))!j.startsWith("_")&&x!==""&&(k[j]=String(x));Object.keys(k).length>0&&(o[w]=k)}const i=ve.value.map(w=>({key:w.key,value:String(r[w.key]??w.value)}));await ll(),i.push({key:"global_notify_config",value:JSON.stringify({channels:o,events:m.events,eventTemplates:m.eventTemplates})}),await st(i),p.success("配置已保存")}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"保存失败")}finally{ce.value=!1}}async function Bl(){var e,o,i;if(await((e=he.value)==null?void 0:e.validate().catch(()=>!1))){ye.value=!0;try{const w=await nt(T.oldPassword,T.newPassword);w.success?(p.success("✅ 密码修改成功,下次登录请使用新密码"),T.oldPassword="",T.newPassword="",T.confirmPassword=""):p.error(w.message)}catch(w){p.error(((i=(o=w.response)==null?void 0:o.data)==null?void 0:i.error)||"密码修改失败")}finally{ye.value=!1}}}const Ne=y();function El(){var s;(s=Ne.value)==null||s.click()}async function Ll(s){var i,w,u;const e=s.target,o=(i=e.files)==null?void 0:i[0];if(o){if(!o.type.startsWith("image/")){p.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(o.size>2*1024*1024){p.error("图片大小不能超过 2MB"),e.value="";return}try{const k=await it(o);k.success?(r.site_logo=k.url,p.success("✅ LOGO 已上传并生效")):p.error(k.message)}catch(k){p.error(((u=(w=k.response)==null?void 0:w.data)==null?void 0:u.error)||"上传失败")}e.value=""}}async function Nl(){try{r.site_logo="",await dt("site_logo",""),p.success("已移除 LOGO")}catch{p.error("移除失败")}}return(s,e)=>{const o=V("el-input"),i=V("el-form-item"),w=V("el-icon"),u=V("el-button"),k=V("el-form"),j=V("el-card"),x=V("el-switch"),B=V("el-divider"),Fe=V("el-radio"),Fl=V("el-radio-group"),J=V("el-input-number"),S=V("el-tag"),Dl=V("el-collapse-item"),Gl=V("el-collapse"),De=V("el-option"),Ge=V("el-select"),W=V("el-table-column"),Kl=V("el-popconfirm"),Wl=V("el-table"),ql=V("el-time-picker"),Ke=V("el-dialog");return f(),g("div",ut,[q(t(j,{id:"section-sys-site"},{header:n(()=>[...e[56]||(e[56]=[l("span",null,"🌐 网站设置",-1)])]),default:n(()=>[t(k,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"网站名称"},{default:n(()=>[t(o,{modelValue:r.site_name,"onUpdate:modelValue":e[0]||(e[0]=a=>r.site_name=a),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[57]||(e[57]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),t(i,{label:"网站 LOGO"},{default:n(()=>[l("div",pt,[l("div",ft,[t(u,{type:"primary",onClick:El},{icon:n(()=>[t(w,null,{default:n(()=>[t(He(Yl))]),_:1})]),default:n(()=>[e[58]||(e[58]=d(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:Ne,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Ll},null,544),e[59]||(e[59]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 推荐 "),l("strong",null,"320×60"),d(" 或宽比例(如 4:1),JPEG/PNG/WebP,最大 2MB。"),l("br"),d(" LOGO 同时也作为搜索结果无封面图时的兜底图使用。 ")],-1))]),r.site_logo?(f(),g("div",mt,[l("img",{src:String(r.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=a=>a.target.style.display="none")},null,40,vt),t(u,{size:"small",type:"danger",plain:"",onClick:Nl},{default:n(()=>[...e[60]||(e[60]=[d("移除",-1)])]),_:1})])):E("",!0)])]),_:1}),t(i,{label:"底部免责声明"},{default:n(()=>[t(o,{modelValue:r.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=a=>r.site_disclaimer=a),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[61]||(e[61]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),t(i,{label:"滚动通知文字"},{default:n(()=>[t(o,{modelValue:r.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=a=>r.site_marquee=a),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),t(i,{label:"系统时区"},{default:n(()=>[t(o,{modelValue:r.timezone,"onUpdate:modelValue":e[4]||(e[4]=a=>r.timezone=a),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[M,!P.value||P.value==="sys-site"]]),q(t(j,{id:"section-sys-services"},{header:n(()=>[...e[64]||(e[64]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:n(()=>[t(k,{"label-width":"180px","label-position":"left"},{default:n(()=>{var a,v,_,I,We,qe;return[t(i,{label:"PanSou 搜索引擎地址"},{default:n(()=>{var U,Me;return[l("div",ct,[t(o,{modelValue:r.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=me=>r.pansou_url=me),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ae.value,onClick:xl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),t(u,{type:"warning",loading:re.value,onClick:bl,size:"default",style:{width:"130px"},disabled:!((U=z.value)!=null&&U.hasUpdate)},{default:n(()=>{var me;return[d(b(re.value?"更新中...":(me=z.value)!=null&&me.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Me=z.value)!=null&&Me.latestVersion?(f(),g("span",yt,b(z.value.latestVersion),1)):E("",!0)]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",gt,[l("div",_t,[l("div",{class:Je(["db-stat-value",((a=z.value)==null?void 0:a.status)==="connected"?"text-success":"text-warning"])},b(((v=z.value)==null?void 0:v.status)==="connected"?"已连接":z.value?"未连接":"-"),3),e[66]||(e[66]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",bt,[l("div",xt,b(((_=z.value)==null?void 0:_.channelCount)??"-"),1),e[67]||(e[67]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",wt,[l("div",kt,b(((I=z.value)==null?void 0:I.pluginCount)??"-"),1),e[68]||(e[68]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",Vt,[l("div",ht,b(((We=z.value)==null?void 0:We.diskCount)??"-"),1),e[69]||(e[69]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",Ct,[l("div",St,b(((qe=z.value)==null?void 0:qe.version)||"-"),1),e[70]||(e[70]=l("div",{class:"db-stat-label"},"版本",-1))])]),t(i,{label:"PanSou Web 端访问"},{default:n(()=>[t(x,{modelValue:Ue.value,"onUpdate:modelValue":e[6]||(e[6]=U=>Ue.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[71]||(e[71]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 开启后可通过 "),l("code",null,"/pansou/"),d(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),t(i,{label:"启用代理"},{default:n(()=>[t(x,{modelValue:ge.value,"onUpdate:modelValue":e[7]||(e[7]=U=>ge.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[72]||(e[72]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),ge.value?(f(),h(i,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:n(()=>[l("div",Ut,[t(o,{modelValue:r.search_proxy_url,"onUpdate:modelValue":e[8]||(e[8]=U=>r.search_proxy_url=U),placeholder:"http://127.0.0.1:7890",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ie.value,onClick:Vl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(ie.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[73]||(e[73]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):E("",!0),t(i,{label:"视频解析服务地址"},{default:n(()=>[l("div",Pt,[t(o,{modelValue:r.video_parser_url,"onUpdate:modelValue":e[9]||(e[9]=U=>r.video_parser_url=U),placeholder:"http://video-parser:3001",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:oe.value,onClick:wl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(oe.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[74]||(e[74]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),t(i,{label:"TMDB 读取令牌"},{default:n(()=>[l("div",zt,[t(o,{modelValue:r.tmdb_api_token,"onUpdate:modelValue":e[10]||(e[10]=U=>r.tmdb_api_token=U),type:"password","show-password":"",placeholder:"输入 TMDB API 读取令牌(Bearer Token)",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ne.value,onClick:kl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(ne.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[75]||(e[75]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" 用于搜索 TMDB 获取评分、导演、演员等完整内容信息。 "),l("a",{href:"https://www.themoviedb.org/settings/api",target:"_blank",rel:"noopener",style:{color:"var(--primary-color)"}},"获取令牌 →")],-1))]),_:1}),t(i,{label:"IP 归属地查询"},{default:n(()=>[l("div",Tt,[t(o,{modelValue:r.ip_geo_api_url,"onUpdate:modelValue":e[11]||(e[11]=U=>r.ip_geo_api_url=U),placeholder:"https://cn.apihz.cn/api/ip/chaapi.php?id=xxx&key=***&ip={ip}&td=0",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:de.value,onClick:hl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(de.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[76]||(e[76]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),d(" 会被替换为实际 IP。 ")],-1)),e[77]||(e[77]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),t(B,{"content-position":"left"},{default:n(()=>[...e[78]||(e[78]=[d("Redis 缓存",-1)])]),_:1}),t(i,{label:"Redis 连接地址"},{default:n(()=>[l("div",jt,[t(o,{modelValue:r.redis_url,"onUpdate:modelValue":e[12]||(e[12]=U=>r.redis_url=U),placeholder:"redis://:***@172.17.0.1:6379",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",size:"default",loading:se.value,onClick:_l,style:{width:"100px"}},{default:n(()=>[d(b(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[79]||(e[79]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" Redis 用于缓存搜索验证结果,提升响应速度。"),l("br"),l("strong",null,"带密码格式:"),l("code",null,"redis://:你的密码@地址:6379"),l("br"),d(" 修改后保存配置即可生效,无需重启。"),l("strong",null,"切换 Redis 只会清空缓存,不影响任何重要数据。")],-1))]),_:1})]}),_:1}),Ce.value?(f(),g("div",It,[t(w,{class:"is-loading",size:20},{default:n(()=>[t(He(Ql))]),_:1}),e[80]||(e[80]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(f(),g("div",Ot,[l("div",At,[l("div",{class:Je(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},b(R.redis_status),3),e[81]||(e[81]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",Rt,[l("div",$t,b(R.db_size),1),e[82]||(e[82]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",Bt,[l("div",Et,b(R.save_records),1),e[83]||(e[83]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Lt,[l("div",Nt,b(R.search_stats),1),e[84]||(e[84]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",Ft,[l("div",Dt,b(R.cloud_configs),1),e[85]||(e[85]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Gt,[l("div",Kt,b(R.content_cache),1),e[86]||(e[86]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[M,!P.value||P.value==="sys-services"]]),q(t(j,{id:"section-sys-strategy"},{header:n(()=>[...e[87]||(e[87]=[l("span",null,"🔧 性能配置",-1)])]),default:n(()=>[l("div",Wt,[t(B,{"content-position":"left"},{default:n(()=>[...e[88]||(e[88]=[d("搜索结果返回方式",-1)])]),_:1}),l("div",qt,[l("div",Mt,[e[89]||(e[89]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),t(x,{modelValue:r.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=a=>r.link_validation_enabled=a),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Ht,[l("div",Jt,[e[93]||(e[93]=l("span",{class:"field-label"},"搜索结果方式",-1)),t(Fl,{modelValue:r.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=a=>r.search_strategy=a)},{default:n(()=>[t(Fe,{value:"wait_all"},{default:n(()=>[...e[91]||(e[91]=[d("等待全部结果后展示",-1)])]),_:1}),t(Fe,{value:"stream_channel"},{default:n(()=>[...e[92]||(e[92]=[d("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),t(B,{"content-position":"left"},{default:n(()=>[...e[95]||(e[95]=[d("搜索策略",-1)])]),_:1}),l("div",Yt,[l("div",Qt,[l("div",Xt,[e[96]||(e[96]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),t(x,{modelValue:Pe.value,"onUpdate:modelValue":e[15]||(e[15]=a=>Pe.value=a),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[97]||(e[97]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",Zt,[l("div",es,[e[98]||(e[98]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),t(J,{modelValue:r.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=a=>r.search_result_limit=a),min:1,max:100},null,8,["modelValue"])]),e[99]||(e[99]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",ls,[l("div",ts,[e[100]||(e[100]=l("span",{class:"field-label"},"验证并发数",-1)),t(J,{modelValue:r.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=a=>r.validation_concurrency=a),min:1,max:50},null,8,["modelValue"])]),e[101]||(e[101]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",ss,[l("div",as,[e[102]||(e[102]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=a=>r.validation_cache_ttl_valid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[103]||(e[103]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",os,[l("div",ns,[e[104]||(e[104]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=a=>r.validation_cache_ttl_invalid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",is,[l("div",ds,[e[106]||(e[106]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),t(J,{modelValue:r.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=a=>r.validation_timeout=a),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[107]||(e[107]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),t(B,{"content-position":"left"},{default:n(()=>[...e[108]||(e[108]=[d("链接检测配置",-1)])]),_:1}),l("div",rs,[e[110]||(e[110]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",us,[t(o,{modelValue:Q.value,"onUpdate:modelValue":e[21]||(e[21]=a=>Q.value=a),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Cl,disabled:!Q.value.trim()},{default:n(()=>[...e[109]||(e[109]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),L.value.length>0?(f(),g("div",ps,[(f(!0),g(O,null,A(L.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:Ul(a),"disable-transitions":!1,onClose:_=>Sl(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["type","onClose"]))),128))])):(f(),g("div",fs,"暂无过滤规则")),e[111]||(e[111]=l("div",{class:"filter-rule-help"},[l("div",{class:"help-title"},"📖 规则说明"),l("div",{class:"help-row"},[l("code",null,"# 注释内容"),d(" — "),l("code",null,"#"),d(" 后必须跟"),l("strong",null,"空格"),d("才会被识别为注释,单纯的 "),l("code",null,"#动漫"),d(" 会被当作要移除的文本")]),l("div",{class:"help-row"},[l("code",null,"/正则表达式/标志"),d(" — 正则匹配,匹配到的内容会被删除。如 "),l("code",null,"/^\\\\d+[、,.\\\\s]/"),d(" 去掉开头的序号")]),l("div",{class:"help-row"},[l("code",null,"纯文本"),d(" — 直接写要移除的文字(支持 emoji),凡是标题中含有的都会被删除")])],-1))]),l("div",ms,[e[113]||(e[113]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",vs,[t(o,{modelValue:X.value,"onUpdate:modelValue":e[22]||(e[22]=a=>X.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Pl,disabled:!X.value.trim()},{default:n(()=>[...e[112]||(e[112]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[114]||(e[114]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),N.value.length>0?(f(),g("div",cs,[(f(!0),g(O,null,A(N.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"danger","disable-transitions":!1,onClose:_=>zl(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",ys,"暂无失效关键词,所有链接将默认判为有效"))]),t(B,{"content-position":"left"},{default:n(()=>[...e[115]||(e[115]=[d("夸克网盘转存清理",-1)])]),_:1}),l("div",gs,[e[117]||(e[117]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",_s,[t(o,{modelValue:Z.value,"onUpdate:modelValue":e[23]||(e[23]=a=>Z.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Tl,disabled:!Z.value.trim()},{default:n(()=>[...e[116]||(e[116]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[118]||(e[118]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),F.value.length>0?(f(),g("div",bs,[(f(!0),g(O,null,A(F.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"warning","disable-transitions":!1,onClose:_=>jl(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",xs,"暂未配置广告关键词,不会进行广告清理"))]),l("div",ws,[e[120]||(e[120]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",ks,[t(o,{modelValue:ee.value,"onUpdate:modelValue":e[24]||(e[24]=a=>ee.value=a),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Il,disabled:!ee.value.trim()},{default:n(()=>[...e[119]||(e[119]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[121]||(e[121]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),D.value.length>0?(f(),g("div",Vs,[(f(!0),g(O,null,A(D.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"info","disable-transitions":!1,onClose:_=>Ol(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",hs,"暂未配置警示文件夹"))]),l("div",Cs,[e[123]||(e[123]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",Ss,[t(o,{modelValue:le.value,"onUpdate:modelValue":e[25]||(e[25]=a=>le.value=a),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Al,disabled:!le.value.trim()},{default:n(()=>[...e[122]||(e[122]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[124]||(e[124]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),G.value.length>0?(f(),g("div",Us,[(f(!0),g(O,null,A(G.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"danger","disable-transitions":!1,onClose:_=>Rl(v)},{default:n(()=>[d("."+b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",Ps,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[M,!P.value||P.value==="sys-strategy"]]),q(t(j,{id:"section-sys-password"},{header:n(()=>[...e[125]||(e[125]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:n(()=>[t(k,{ref_key:"passwordFormRef",ref:he,model:T,rules:gl,"label-width":"120px","label-position":"left"},{default:n(()=>[t(i,{label:"原密码",prop:"oldPassword"},{default:n(()=>[t(o,{modelValue:T.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=a=>T.oldPassword=a),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"新密码",prop:"newPassword"},{default:n(()=>[t(o,{modelValue:T.newPassword,"onUpdate:modelValue":e[27]||(e[27]=a=>T.newPassword=a),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"确认新密码",prop:"confirmPassword"},{default:n(()=>[t(o,{modelValue:T.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=a=>T.confirmPassword=a),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,null,{default:n(()=>[t(u,{type:"primary",loading:ye.value,onClick:Bl},{default:n(()=>[...e[126]||(e[126]=[d("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[M,!P.value||P.value==="sys-password"]]),q(t(j,{id:"section-sys-notify"},{header:n(()=>[...e[127]||(e[127]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:n(()=>[t(Gl,{"model-value":["global"]},{default:n(()=>[t(Dl,{title:"全局推送(管理员兜底)",name:"global"},{default:n(()=>[l("div",zs,[t(k,{"label-width":"140px","label-position":"left"},{default:n(()=>[l("div",Ts,[(f(!0),g(O,null,A(K.value,(a,v)=>(f(),g("div",{key:v,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",js,[t(x,{modelValue:m.channels[v]._enabled,"onUpdate:modelValue":_=>m.channels[v]._enabled=_,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,b(a.label),1),m.channels[v]._enabled?(f(),h(u,{key:0,size:"small",text:"",type:"primary",onClick:_=>yl(v),loading:m.channels[v]._testing},{default:n(()=>[...e[128]||(e[128]=[d("测试",-1)])]),_:1},8,["onClick","loading"])):E("",!0)]),m.channels[v]._enabled?(f(),g("div",Is,[(f(!0),g(O,null,A(a.params,_=>(f(),h(i,{key:_.key,label:_.label,style:{"margin-bottom":"6px"}},{default:n(()=>[_.type==="password"?(f(),h(o,{key:0,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I,type:"password","show-password":"",placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):_.type==="switch"?(f(),h(x,{key:1,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I},null,8,["modelValue","onUpdate:modelValue"])):_.type==="number"?(f(),h(J,{key:2,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(f(),h(o,{key:3,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I,placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):E("",!0)]))),128))]),t(B,{"content-position":"left"},{default:n(()=>[...e[129]||(e[129]=[d("全局事件开关",-1)])]),_:1}),l("div",Os,[l("div",As,[t(x,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=a=>m.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[30]||(e[30]=a=>fe("on_save_success"))},{default:n(()=>[...e[130]||(e[130]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Rs,[t(x,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[31]||(e[31]=a=>m.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[32]||(e[32]=a=>fe("on_save_fail"))},{default:n(()=>[...e[131]||(e[131]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",$s,[t(x,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[33]||(e[33]=a=>m.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[34]||(e[34]=a=>fe("on_cookie_expire"))},{default:n(()=>[...e[132]||(e[132]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Bs,[t(x,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[35]||(e[35]=a=>m.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[36]||(e[36]=a=>fe("on_cleanup"))},{default:n(()=>[...e[133]||(e[133]=[d("✏️ 编辑模板",-1)])]),_:1})])]),e[134]||(e[134]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1))]),_:1})])]),_:1})]),_:1}),e[144]||(e[144]=d()),t(B,{"content-position":"left"},{default:n(()=>[...e[135]||(e[135]=[d("添加推送用户",-1)])]),_:1}),l("div",Es,[l("div",Ls,[t(Ge,{modelValue:c.account,"onUpdate:modelValue":e[37]||(e[37]=a=>c.account=a),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:n(()=>[(f(!0),g(O,null,A(Oe.value,a=>(f(),h(De,{key:a,label:a,value:a},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(Ge,{modelValue:c.channels,"onUpdate:modelValue":e[38]||(e[38]=a=>c.channels=a),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择您所需的消息频道",style:{width:"260px"}},{default:n(()=>[(f(!0),g(O,null,A(ol.value,(a,v)=>(f(),h(De,{key:v,label:a.label,value:v},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(x,{modelValue:c.events.on_save_success,"onUpdate:modelValue":e[39]||(e[39]=a=>c.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(x,{modelValue:c.events.on_save_fail,"onUpdate:modelValue":e[40]||(e[40]=a=>c.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(x,{modelValue:c.events.on_cookie_expire,"onUpdate:modelValue":e[41]||(e[41]=a=>c.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(x,{modelValue:c.events.on_cleanup,"onUpdate:modelValue":e[42]||(e[42]=a=>c.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"]),t(u,{type:"primary",size:"small",loading:we.value,onClick:dl},{default:n(()=>[d(b(c.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),c.id?(f(),h(u,{key:0,size:"small",onClick:il},{default:n(()=>[...e[136]||(e[136]=[d("取消编辑",-1)])]),_:1})):E("",!0)])]),t(B,{"content-position":"left"},{default:n(()=>[...e[137]||(e[137]=[d("推送用户列表",-1)])]),_:1}),t(Wl,{data:Ie.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:n(()=>[t(W,{prop:"account",label:"推广账号","min-width":"140"}),t(W,{label:"转存成功",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_success")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[138]||(e[138]=[d("✔",-1)])]),_:1})):(f(),g("span",Ns,"—"))]),_:1}),t(W,{label:"转存失败",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_fail")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[139]||(e[139]=[d("✔",-1)])]),_:1})):(f(),g("span",Fs,"—"))]),_:1}),t(W,{label:"Cookie过期",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cookie_expire")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[140]||(e[140]=[d("✔",-1)])]),_:1})):(f(),g("span",Ds,"—"))]),_:1}),t(W,{label:"清理完成",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cleanup")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[141]||(e[141]=[d("✔",-1)])]),_:1})):(f(),g("span",Gs,"—"))]),_:1}),t(W,{label:"已启用的通道","min-width":"220"},{default:n(({row:a})=>[(f(!0),g(O,null,A(Ae(a),(v,_)=>(f(),h(S,{key:_,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:n(()=>[d(b(pl(_)),1)]),_:2},1024))),128)),fl(a)?E("",!0):(f(),g("span",Ks,"走全局推送"))]),_:1}),t(W,{label:"操作",width:"180",fixed:"right"},{default:n(({row:a})=>[t(u,{text:"",type:"primary",size:"small",onClick:v=>nl(a)},{default:n(()=>[...e[142]||(e[142]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(Kl,{title:"确定删除该推送用户?",onConfirm:v=>ul(a)},{reference:n(()=>[t(u,{text:"",type:"danger",size:"small"},{default:n(()=>[...e[143]||(e[143]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[M,!P.value||P.value==="sys-notify"]]),q(t(j,{id:"section-sys-daily-report"},{header:n(()=>[l("div",Ws,[e[147]||(e[147]=l("span",null,"📊 每日汇报",-1)),l("div",null,[t(u,{size:"small",loading:_e.value,onClick:tl},{default:n(()=>[...e[145]||(e[145]=[d("📋 预览",-1)])]),_:1},8,["loading"]),t(u,{size:"small",type:"primary",loading:be.value,onClick:sl},{default:n(()=>[...e[146]||(e[146]=[d("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:n(()=>[t(k,{"label-width":"140px","label-position":"left"},{default:n(()=>[t(i,{label:"启用每日汇报"},{default:n(()=>[t(x,{modelValue:C.enabled,"onUpdate:modelValue":e[43]||(e[43]=a=>C.enabled=a),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),t(i,{label:"发送时间"},{default:n(()=>[t(ql,{modelValue:C.time,"onUpdate:modelValue":e[44]||(e[44]=a=>C.time=a),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!C.enabled},null,8,["modelValue","disabled"]),e[148]||(e[148]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),t(i,{label:"报告内容"},{default:n(()=>[l("div",qs,[t(x,{modelValue:C.includeSearch,"onUpdate:modelValue":e[45]||(e[45]=a=>C.includeSearch=a),"active-text":"搜索统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(x,{modelValue:C.includeSaves,"onUpdate:modelValue":e[46]||(e[46]=a=>C.includeSaves=a),"active-text":"转存统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(x,{modelValue:C.includeStorage,"onUpdate:modelValue":e[47]||(e[47]=a=>C.includeStorage=a),"active-text":"网盘容量",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(x,{modelValue:C.includeUsers,"onUpdate:modelValue":e[48]||(e[48]=a=>C.includeUsers=a),"active-text":"用户数",disabled:!C.enabled},null,8,["modelValue","disabled"])])]),_:1}),t(i,{label:"上次发送"},{default:n(()=>[l("span",null,b(je.value||"从未发送"),1)]),_:1})]),_:1}),t(Ke,{modelValue:xe.value,"onUpdate:modelValue":e[49]||(e[49]=a=>xe.value=a),title:"📊 每日汇报预览",width:"600px"},{default:n(()=>[l("div",Ms,b(Te.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[M,!P.value||P.value==="sys-daily-report"]]),q(t(j,{id:"section-sys-maintenance"},{header:n(()=>[...e[149]||(e[149]=[l("span",null,"🔄 系统维护",-1)])]),default:n(()=>[e[154]||(e[154]=d()),t(k,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"自动更新镜像"},{default:n(()=>[t(x,{modelValue:ze.value,"onUpdate:modelValue":e[50]||(e[50]=a=>ze.value=a),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[150]||(e[150]=d()),e[151]||(e[151]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[152]||(e[152]=d()),e[153]||(e[153]=l("div",{class:"form-tip",style:{color:"var(--(--el-color-warning,#e6a23c))"}}," 当前需手动在服务器执行:docker-compose -f /opt/CloudSearch/docker-compose.yml pull && docker-compose -f /opt/CloudSearch/docker-compose.yml up -d ",-1))]),_:1})]),_:1})]),_:1},512),[[M,!P.value||P.value==="sys-maintenance"]]),t(Ke,{modelValue:pe.value,"onUpdate:modelValue":e[54]||(e[54]=a=>pe.value=a),title:"✏️ 编辑消息模板 — "+cl.value,width:"560px",onClose:e[55]||(e[55]=a=>$.value="")},{footer:n(()=>[t(u,{onClick:e[53]||(e[53]=a=>pe.value=!1)},{default:n(()=>[...e[175]||(e[175]=[d("关闭",-1)])]),_:1})]),default:n(()=>[l("div",Hs,[e[164]||(e[164]=d(" 可用变量:",-1)),e[165]||(e[165]=l("br",null,null,-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[155]||(e[155]=[d("{cloud_type}",-1)])]),_:1}),e[166]||(e[166]=d(" 网盘类型(夸克/百度/阿里) ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[156]||(e[156]=[d("{nickname}",-1)])]),_:1}),e[167]||(e[167]=d(" 网盘昵称 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[157]||(e[157]=[d("{file_name}",-1)])]),_:1}),e[168]||(e[168]=d(" 文件名 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[158]||(e[158]=[d("{file_size}",-1)])]),_:1}),e[169]||(e[169]=d(" 文件大小 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[159]||(e[159]=[d("{duration}",-1)])]),_:1}),e[170]||(e[170]=d(" 耗时(秒) ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[160]||(e[160]=[d("{share_url}",-1)])]),_:1}),e[171]||(e[171]=d(" 分享链接 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[161]||(e[161]=[d("{fail_count}",-1)])]),_:1}),e[172]||(e[172]=d(" 连续失败次数 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[162]||(e[162]=[d("{error_message}",-1)])]),_:1}),e[173]||(e[173]=d(" 错误信息 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[163]||(e[163]=[d("{freed_space}",-1)])]),_:1}),e[174]||(e[174]=d(" 释放空间 ",-1))]),$.value&&m.eventTemplates[$.value]?(f(),h(k,{key:0,"label-width":"60px"},{default:n(()=>[t(i,{label:"标题"},{default:n(()=>[t(o,{modelValue:m.eventTemplates[$.value].title,"onUpdate:modelValue":e[51]||(e[51]=a=>m.eventTemplates[$.value].title=a),placeholder:"消息标题,支持 {变量}"},null,8,["modelValue"])]),_:1}),t(i,{label:"内容"},{default:n(()=>[t(o,{modelValue:m.eventTemplates[$.value].content,"onUpdate:modelValue":e[52]||(e[52]=a=>m.eventTemplates[$.value].content=a),type:"textarea",rows:5,placeholder:"消息正文,支持 Markdown 和 {变量}"},null,8,["modelValue"])]),_:1})]),_:1})):E("",!0)]),_:1},8,["modelValue","title"]),l("div",Js,[t(u,{type:"primary",size:"large",loading:ce.value,onClick:$l},{default:n(()=>[...e[176]||(e[176]=[d(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),Zs=rt(Ys,[["__scopeId","data-v-2832ee1e"]]);export{Zs as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/SystemConfig-D8srBqxJ.css b/source_clean/frontend-src/dist-vite/assets/SystemConfig-D8srBqxJ.css new file mode 100644 index 0000000..a4290cc --- /dev/null +++ b/source_clean/frontend-src/dist-vite/assets/SystemConfig-D8srBqxJ.css @@ -0,0 +1 @@ +.el-card[data-v-fd21d202]{margin-bottom:20px}.el-card[data-v-fd21d202] .el-card__header{font-weight:600;font-size:15px}[data-v-fd21d202] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-fd21d202]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-fd21d202]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-fd21d202]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-fd21d202]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-fd21d202]{max-width:100%;height:auto;max-height:120px;border-radius:8px;border:1px solid var(--border-color);background:#f0f0f0;object-fit:contain}.strategy-grid[data-v-fd21d202]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-fd21d202]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-fd21d202]{padding:0 4px}.field-block[data-v-fd21d202]{margin:12px 0}.field-label-row[data-v-fd21d202]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-fd21d202]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-fd21d202]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-fd21d202]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-fd21d202]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-fd21d202]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-fd21d202]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-fd21d202]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-fd21d202]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-fd21d202]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-fd21d202]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-fd21d202]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-fd21d202]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-fd21d202]:first-child{margin-top:0}.help-row[data-v-fd21d202]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-fd21d202]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-fd21d202]{background:#1e1e1e;color:#d4d4d4;padding:10px 14px;border-radius:6px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;margin:6px 0 0;font-family:monospace}.help-preview-row[data-v-fd21d202]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-fd21d202]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-fd21d202]{color:#e74c3c}.help-preview-filtered[data-v-fd21d202]{color:#27ae60;font-weight:500}.filter-input-row[data-v-fd21d202]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-fd21d202]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-fd21d202]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-fd21d202]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-fd21d202]{background:#f8f9fa;border-radius:10px;padding:16px 12px;text-align:center;border:1px solid #eee;transition:transform .15s,box-shadow .15s}.db-stat-item[data-v-fd21d202]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-fd21d202]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-fd21d202]{color:#67c23a}.db-stat-value.text-warning[data-v-fd21d202]{color:#e6a23c}.db-stat-label[data-v-fd21d202]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-fd21d202]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-fd21d202]{grid-template-columns:1fr}}.pansou-status-grid[data-v-fd21d202]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-fd21d202]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-fd21d202]{background:#67c23a}.dot-err[data-v-fd21d202]{background:#f56c6c} diff --git a/source_clean/frontend-src/dist-vite/assets/SystemConfig-Rongk90P.css b/source_clean/frontend-src/dist-vite/assets/SystemConfig-Rongk90P.css deleted file mode 100644 index 26f52eb..0000000 --- a/source_clean/frontend-src/dist-vite/assets/SystemConfig-Rongk90P.css +++ /dev/null @@ -1 +0,0 @@ -.el-card[data-v-2832ee1e]{margin-bottom:20px}.el-card[data-v-2832ee1e] .el-card__header{font-weight:600;font-size:15px}[data-v-2832ee1e] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-2832ee1e]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-2832ee1e]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-2832ee1e]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-2832ee1e]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-2832ee1e]{max-width:100%;height:auto;max-height:120px;border-radius:8px;border:1px solid var(--border-color);background:#f0f0f0;object-fit:contain}.strategy-grid[data-v-2832ee1e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-2832ee1e]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-2832ee1e]{padding:0 4px}.field-block[data-v-2832ee1e]{margin:12px 0}.field-label-row[data-v-2832ee1e]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-2832ee1e]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-2832ee1e]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-2832ee1e]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-2832ee1e]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-2832ee1e]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-2832ee1e]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-2832ee1e]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-2832ee1e]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-2832ee1e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-2832ee1e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-2832ee1e]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-2832ee1e]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-2832ee1e]:first-child{margin-top:0}.help-row[data-v-2832ee1e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-2832ee1e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-2832ee1e]{background:#1e1e1e;color:#d4d4d4;padding:10px 14px;border-radius:6px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;margin:6px 0 0;font-family:monospace}.help-preview-row[data-v-2832ee1e]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-2832ee1e]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-2832ee1e]{color:#e74c3c}.help-preview-filtered[data-v-2832ee1e]{color:#27ae60;font-weight:500}.filter-input-row[data-v-2832ee1e]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-2832ee1e]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-2832ee1e]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-2832ee1e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-2832ee1e]{background:#f8f9fa;border-radius:10px;padding:16px 12px;text-align:center;border:1px solid #eee;transition:transform .15s,box-shadow .15s}.db-stat-item[data-v-2832ee1e]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-2832ee1e]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-2832ee1e]{color:#67c23a}.db-stat-value.text-warning[data-v-2832ee1e]{color:#e6a23c}.db-stat-label[data-v-2832ee1e]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-2832ee1e]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-2832ee1e]{grid-template-columns:1fr}}.pansou-status-grid[data-v-2832ee1e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-2832ee1e]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-2832ee1e]{background:#67c23a}.dot-err[data-v-2832ee1e]{background:#f56c6c} diff --git a/source_clean/frontend-src/dist-vite/assets/index-DLC2deeT.js b/source_clean/frontend-src/dist-vite/assets/index-Bsy0LTRb.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/index-DLC2deeT.js rename to source_clean/frontend-src/dist-vite/assets/index-Bsy0LTRb.js index 121274f..6026abf 100644 --- a/source_clean/frontend-src/dist-vite/assets/index-DLC2deeT.js +++ b/source_clean/frontend-src/dist-vite/assets/index-Bsy0LTRb.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-DxF2bBIi.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-CSy9PDwp.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-CxVMp_nk.js","assets/CloudBadge-BhaCxKyo.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-VVxvaZnt.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-BgjUguyQ.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-DAzBQti_.js","assets/CloudConfig-BaEpQpQM.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-CswhThiW.js","assets/SystemConfig-Rongk90P.css","assets/SaveRecords-vmMvuvLS.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-B77x7c3T.js","assets/Cleanup-Cq_o1Z9e.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-v6ufhhLl.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-C7oFJn97.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-B6n5vSIJ.js","assets/CloudBadge-BQbzCPM-.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-CnuINV9I.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-miuzOi4K.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-CClHfarr.js","assets/CloudConfig-DIBXz7ib.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-BpnPsiXS.js","assets/SystemConfig-D8srBqxJ.css","assets/SaveRecords-D4vANRRO.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-B_lvCL8b.js","assets/Cleanup-Cq_o1Z9e.css"])))=>i.map(i=>d[i]); (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const s of l.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&a(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();/** * @vue/shared v3.5.33 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -89,4 +89,4 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:a,curr * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let kJ=()=>location.protocol+"//"+location.host;function zE(e,t){const{pathname:n,search:a,hash:o}=t,l=e.indexOf("#");if(l>-1){let s=o.includes(e.slice(l))?e.slice(l).length:1,r=o.slice(s);return r[0]!=="/"&&(r="/"+r),h0(r,"")}return h0(n,e)+a+o}function EJ(e,t,n,a){let o=[],l=[],s=null;const r=({state:p})=>{const g=zE(e,location),v=n.value,h=t.value;let m=0;if(p){if(n.value=g,t.value=p,s&&s===v){s=null;return}m=h?p.position-h.position:0}else a(g);o.forEach(y=>{y(n.value,v,{delta:m,type:mv.pop,direction:m?m>0?qf.forward:qf.back:qf.unknown})})};function u(){s=n.value}function c(p){o.push(p);const g=()=>{const v=o.indexOf(p);v>-1&&o.splice(v,1)};return l.push(g),g}function d(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Zt({},p.state,{scroll:Yd()}),"")}}function f(){for(const p of l)p();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",d),document.removeEventListener("visibilitychange",d)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",d),document.addEventListener("visibilitychange",d),{pauseListeners:u,listen:c,destroy:f}}function w0(e,t,n,a=!1,o=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:o?Yd():null}}function xJ(e){const{history:t,location:n}=window,a={value:zE(e,n)},o={value:t.state};o.value||l(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(u,c,d){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+u:kJ()+e+u;try{t[d?"replaceState":"pushState"](c,"",p),o.value=c}catch(g){console.error(g),n[d?"replace":"assign"](p)}}function s(u,c){l(u,Zt({},t.state,w0(o.value.back,u,o.value.forward,!0),c,{position:o.value.position}),!0),a.value=u}function r(u,c){const d=Zt({},o.value,t.state,{forward:u,scroll:Yd()});l(d.current,d,!0),l(u,Zt({},w0(a.value,u,null),{position:d.position+1},c),!1),a.value=u}return{location:a,state:o,push:r,replace:s}}function TJ(e){e=uJ(e);const t=xJ(e),n=EJ(e,t.state,t.location,t.replace);function a(l,s=!0){s||n.pauseListeners(),history.go(l)}const o=Zt({location:"",base:e,go:a,createHref:dJ.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let us=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Rn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Rn||{});const $J={type:us.Static,value:""},OJ=/[a-zA-Z0-9_]/;function NJ(e){if(!e)return[[]];if(e==="/")return[[$J]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=Rn.Static,a=n;const o=[];let l;function s(){l&&o.push(l),l=[]}let r=0,u,c="",d="";function f(){c&&(n===Rn.Static?l.push({type:us.Static,value:c}):n===Rn.Param||n===Rn.ParamRegExp||n===Rn.ParamRegExpEnd?(l.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),l.push({type:us.Param,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=u}for(;rt.length?t.length===1&&t[0]===aa.Static+aa.Segment?1:-1:0}function HE(e,t){let n=0;const a=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const PJ={strict:!1,end:!0,sensitive:!1};function AJ(e,t,n){const a=IJ(NJ(e.path),n),o=Zt(a,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function LJ(e,t){const n=[],a=new Map;t=v0(PJ,t);function o(f){return a.get(f)}function l(f,p,g){const v=!g,h=E0(f);h.aliasOf=g&&g.record;const m=v0(t,f),y=[h];if("alias"in f){const C=typeof f.alias=="string"?[f.alias]:f.alias;for(const k of C)y.push(E0(Zt({},h,{components:g?g.record.components:h.components,path:k,aliasOf:g?g.record:h})))}let b,w;for(const C of y){const{path:k}=C;if(p&&k[0]!=="/"){const E=p.record.path,T=E[E.length-1]==="/"?"":"/";C.path=p.record.path+(k&&T+k)}if(b=AJ(C,p,m),g?g.alias.push(b):(w=w||b,w!==b&&w.alias.push(b),v&&f.name&&!x0(b)&&s(f.name)),KE(b)&&u(b),h.children){const E=h.children;for(let T=0;T{s(w)}:yi}function s(f){if(BE(f)){const p=a.get(f);p&&(a.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(s),p.alias.forEach(s))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&a.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function r(){return n}function u(f){const p=BJ(f,n);n.splice(p,0,f),f.record.name&&!x0(f)&&a.set(f.record.name,f)}function c(f,p){let g,v={},h,m;if("name"in f&&f.name){if(g=a.get(f.name),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f});m=g.record.name,v=Zt(k0(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),f.params&&k0(f.params,g.keys.map(w=>w.name))),h=g.stringify(v)}else if(f.path!=null)h=f.path,g=n.find(w=>w.re.test(h)),g&&(v=g.parse(h),m=g.record.name);else{if(g=p.name?a.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f,currentLocation:p});m=g.record.name,v=Zt({},p.params,f.params),h=g.stringify(v)}const y=[];let b=g;for(;b;)y.unshift(b.record),b=b.parent;return{name:m,path:h,params:v,matched:y,meta:VJ(y)}}e.forEach(f=>l(f));function d(){n.length=0,a.clear()}return{addRoute:l,resolve:c,removeRoute:s,clearRoutes:d,getRoutes:r,getRecordMatcher:o}}function k0(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function E0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:DJ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function DJ(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function x0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function VJ(e){return e.reduce((t,n)=>Zt(t,n.meta),{})}function BJ(e,t){let n=0,a=t.length;for(;n!==a;){const l=n+a>>1;HE(e,t[l])<0?a=l:n=l+1}const o=FJ(e);return o&&(a=t.lastIndexOf(o,a-1)),a}function FJ(e){let t=e;for(;t=t.parent;)if(KE(t)&&HE(e,t)===0)return t}function KE({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function T0(e){const t=_e(qd),n=_e(Mm),a=S(()=>{const u=i(e.to);return t.resolve(u)}),o=S(()=>{const{matched:u}=a.value,{length:c}=u,d=u[c-1],f=n.matched;if(!d||!f.length)return-1;const p=f.findIndex(xr.bind(null,d));if(p>-1)return p;const g=$0(u[c-2]);return c>1&&$0(d)===g&&f[f.length-1].path!==g?f.findIndex(xr.bind(null,u[c-2])):p}),l=S(()=>o.value>-1&&jJ(n.params,a.value.params)),s=S(()=>o.value>-1&&o.value===n.matched.length-1&&VE(n.params,a.value.params));function r(u={}){if(WJ(u)){const c=t[i(e.replace)?"replace":"push"](i(e.to)).catch(yi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:S(()=>a.value.href),isActive:l,isExactActive:s,navigate:r}}function zJ(e){return e.length===1?e[0]:e}const HJ=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:T0,setup(e,{slots:t}){const n=Rt(T0(e)),{options:a}=_e(qd),o=S(()=>({[O0(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[O0(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&zJ(t.default(n));return e.custom?l:Ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),KJ=HJ;function WJ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jJ(e,t){for(const n in t){const a=t[n],o=e[n];if(typeof a=="string"){if(a!==o)return!1}else if(!Ja(o)||o.length!==a.length||a.some((l,s)=>l.valueOf()!==o[s].valueOf()))return!1}return!0}function $0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const O0=(e,t,n)=>e??t??n,UJ=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=_e(yv),o=S(()=>e.route||a.value),l=_e(b0,0),s=S(()=>{let c=i(l);const{matched:d}=o.value;let f;for(;(f=d[c])&&!f.components;)c++;return c}),r=S(()=>o.value.matched[s.value]);bt(b0,S(()=>s.value+1)),bt(CJ,r),bt(yv,o);const u=A();return fe(()=>[u.value,r.value,e.name],([c,d,f],[p,g,v])=>{d&&(d.instances[f]=c,g&&g!==d&&c&&c===p&&(d.leaveGuards.size||(d.leaveGuards=g.leaveGuards),d.updateGuards.size||(d.updateGuards=g.updateGuards))),c&&d&&(!g||!xr(d,g)||!p)&&(d.enterCallbacks[f]||[]).forEach(h=>h(c))},{flush:"post"}),()=>{const c=o.value,d=e.name,f=r.value,p=f&&f.components[d];if(!p)return N0(n.default,{Component:p,route:c});const g=f.props[d],v=g?g===!0?c.params:typeof g=="function"?g(c):g:null,m=Ye(p,Zt({},v,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[d]=null)},ref:u}));return N0(n.default,{Component:m,route:c})||m}}});function N0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const YJ=UJ;function qJ(e){const t=LJ(e.routes,e),n=e.parseQuery||bJ,a=e.stringifyQuery||y0,o=e.history,l=Xr(),s=Xr(),r=Xr(),u=Wt(gl);let c=gl;Ys&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Uf.bind(null,te=>""+te),f=Uf.bind(null,nJ),p=Uf.bind(null,qi);function g(te,de){let se,Y;return BE(te)?(se=t.getRecordMatcher(te),Y=de):Y=te,t.addRoute(Y,se)}function v(te){const de=t.getRecordMatcher(te);de&&t.removeRoute(de)}function h(){return t.getRoutes().map(te=>te.record)}function m(te){return!!t.getRecordMatcher(te)}function y(te,de){if(de=Zt({},de||u.value),typeof te=="string"){const oe=Yf(n,te,de.path),ce=t.resolve({path:oe.path},de),ge=o.createHref(oe.fullPath);return Zt(oe,ce,{params:p(ce.params),hash:qi(oe.hash),redirectedFrom:void 0,href:ge})}let se;if(te.path!=null)se=Zt({},te,{path:Yf(n,te.path,de.path).path});else{const oe=Zt({},te.params);for(const ce in oe)oe[ce]==null&&delete oe[ce];se=Zt({},te,{params:f(oe)}),de.params=f(de.params)}const Y=t.resolve(se,de),G=te.hash||"";Y.params=d(p(Y.params));const V=lJ(a,Zt({},te,{hash:QZ(G),path:Y.path})),Z=o.createHref(V);return Zt({fullPath:V,hash:G,query:a===y0?wJ(te.query):te.query||{}},Y,{redirectedFrom:void 0,href:Z})}function b(te){return typeof te=="string"?Yf(n,te,u.value.path):Zt({},te)}function w(te,de){if(c!==te)return Tr(wn.NAVIGATION_CANCELLED,{from:de,to:te})}function C(te){return T(te)}function k(te){return C(Zt(b(te),{replace:!0}))}function E(te,de){const se=te.matched[te.matched.length-1];if(se&&se.redirect){const{redirect:Y}=se;let G=typeof Y=="function"?Y(te,de):Y;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=b(G):{path:G},G.params={}),Zt({query:te.query,hash:te.hash,params:G.path!=null?{}:te.params},G)}}function T(te,de){const se=c=y(te),Y=u.value,G=te.state,V=te.force,Z=te.replace===!0,oe=E(se,Y);if(oe)return T(Zt(b(oe),{state:typeof oe=="object"?Zt({},G,oe.state):G,force:V,replace:Z}),de||se);const ce=se;ce.redirectedFrom=de;let ge;return!V&&sJ(a,Y,se)&&(ge=Tr(wn.NAVIGATION_DUPLICATED,{to:ce,from:Y}),H(Y,Y,!0,!1)),(ge?Promise.resolve(ge):O(ce,Y)).catch(me=>Do(me)?Do(me,wn.NAVIGATION_GUARD_REDIRECT)?me:z(me):I(me,ce,Y)).then(me=>{if(me){if(Do(me,wn.NAVIGATION_GUARD_REDIRECT))return T(Zt({replace:Z},b(me.to),{state:typeof me.to=="object"?Zt({},G,me.to.state):G,force:V}),de||ce)}else me=P(ce,Y,!0,Z,G);return _(ce,Y,me),me})}function $(te,de){const se=w(te,de);return se?Promise.reject(se):Promise.resolve()}function N(te){const de=Q.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(te):te()}function O(te,de){let se;const[Y,G,V]=SJ(te,de);se=Gf(Y.reverse(),"beforeRouteLeave",te,de);for(const oe of Y)oe.leaveGuards.forEach(ce=>{se.push(El(ce,te,de))});const Z=$.bind(null,te,de);return se.push(Z),ue(se).then(()=>{se=[];for(const oe of l.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).then(()=>{se=Gf(G,"beforeRouteUpdate",te,de);for(const oe of G)oe.updateGuards.forEach(ce=>{se.push(El(ce,te,de))});return se.push(Z),ue(se)}).then(()=>{se=[];for(const oe of V)if(oe.beforeEnter)if(Ja(oe.beforeEnter))for(const ce of oe.beforeEnter)se.push(El(ce,te,de));else se.push(El(oe.beforeEnter,te,de));return se.push(Z),ue(se)}).then(()=>(te.matched.forEach(oe=>oe.enterCallbacks={}),se=Gf(V,"beforeRouteEnter",te,de,N),se.push(Z),ue(se))).then(()=>{se=[];for(const oe of s.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).catch(oe=>Do(oe,wn.NAVIGATION_CANCELLED)?oe:Promise.reject(oe))}function _(te,de,se){r.list().forEach(Y=>N(()=>Y(te,de,se)))}function P(te,de,se,Y,G){const V=w(te,de);if(V)return V;const Z=de===gl,oe=Ys?history.state:{};se&&(Y||Z?o.replace(te.fullPath,Zt({scroll:Z&&oe&&oe.scroll},G)):o.push(te.fullPath,G)),u.value=te,H(te,de,se,Z),z()}let D;function W(){D||(D=o.listen((te,de,se)=>{if(!ee.listening)return;const Y=y(te),G=E(Y,ee.currentRoute.value);if(G){T(Zt(G,{replace:!0,force:!0}),Y).catch(yi);return}c=Y;const V=u.value;Ys&&vJ(g0(V.fullPath,se.delta),Yd()),O(Y,V).catch(Z=>Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_CANCELLED)?Z:Do(Z,wn.NAVIGATION_GUARD_REDIRECT)?(T(Zt(b(Z.to),{force:!0}),Y).then(oe=>{Do(oe,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&!se.delta&&se.type===mv.pop&&o.go(-1,!1)}).catch(yi),Promise.reject()):(se.delta&&o.go(-se.delta,!1),I(Z,Y,V))).then(Z=>{Z=Z||P(Y,V,!1),Z&&(se.delta&&!Do(Z,wn.NAVIGATION_CANCELLED)?o.go(-se.delta,!1):se.type===mv.pop&&Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),_(Y,V,Z)}).catch(yi)}))}let U=Xr(),F=Xr(),R;function I(te,de,se){z(te);const Y=F.list();return Y.length?Y.forEach(G=>G(te,de,se)):console.error(te),Promise.reject(te)}function L(){return R&&u.value!==gl?Promise.resolve():new Promise((te,de)=>{U.add([te,de])})}function z(te){return R||(R=!te,W(),U.list().forEach(([de,se])=>te?se(te):de()),U.reset()),te}function H(te,de,se,Y){const{scrollBehavior:G}=e;if(!Ys||!G)return Promise.resolve();const V=!se&&hJ(g0(te.fullPath,0))||(Y||!se)&&history.state&&history.state.scroll||null;return Ae().then(()=>G(te,de,V)).then(Z=>Z&&pJ(Z)).catch(Z=>I(Z,te,de))}const K=te=>o.go(te);let q;const Q=new Set,ee={currentRoute:u,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:h,resolve:y,options:e,push:C,replace:k,go:K,back:()=>K(-1),forward:()=>K(1),beforeEach:l.add,beforeResolve:s.add,afterEach:r.add,onError:F.add,isReady:L,install(te){te.component("RouterLink",KJ),te.component("RouterView",YJ),te.config.globalProperties.$router=ee,Object.defineProperty(te.config.globalProperties,"$route",{enumerable:!0,get:()=>i(u)}),Ys&&!q&&u.value===gl&&(q=!0,C(o.location).catch(Y=>{}));const de={};for(const Y in gl)Object.defineProperty(de,Y,{get:()=>u.value[Y],enumerable:!0});te.provide(qd,ee),te.provide(Mm,rd(de)),te.provide(yv,u);const se=te.unmount;Q.add(te),te.unmount=function(){Q.delete(te),Q.size<1&&(c=gl,D&&D(),D=null,u.value=gl,q=!1,R=!1),se()}}};function ue(te){return te.reduce((de,se)=>de.then(()=>N(se)),Promise.resolve())}return ee}function oQ(){return _e(qd)}function lQ(e){return _e(Mm)}const GJ=[{path:"/",name:"home",component:()=>io(()=>import("./HomePage-DxF2bBIi.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-CSy9PDwp.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-CxVMp_nk.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-VVxvaZnt.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-BgjUguyQ.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-DAzBQti_.js"),__vite__mapDeps([14,1,15,4,7,8,16,17,18,19,20,21]))},{path:"cloud-configs",name:"admin-cloud-configs",component:()=>io(()=>import("./CloudConfig-BaEpQpQM.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-B77x7c3T.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-CswhThiW.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-vmMvuvLS.js"),__vite__mapDeps([19,1,20]))}]}],WE=qJ({history:TJ(),routes:GJ});WE.beforeEach((e,t,n)=>{const a=localStorage.getItem("admin_token");e.meta.requiresAuth&&!a?n("/admin/login"):n()});const Gd=lw(FZ);Gd.use(y$());Gd.use(WE);Gd.use(VZ);Gd.mount("#app");export{vP as A,Ae as B,ZJ as C,XJ as D,iZ as E,He as F,eQ as G,JJ as H,tQ as I,al as J,dt as K,Nt as L,Oo as M,aQ as N,QJ as O,nQ as P,Pv as Q,x as a,j as b,B as c,ie as d,le as e,J as f,en as g,A as h,Rt as i,Ot as j,i as k,St as l,$r as m,M as n,mt as o,je as p,Xe as q,Ct as r,QP as s,ke as t,oQ as u,S as v,ne as w,fe as x,re as y,lQ as z}; + */let kJ=()=>location.protocol+"//"+location.host;function zE(e,t){const{pathname:n,search:a,hash:o}=t,l=e.indexOf("#");if(l>-1){let s=o.includes(e.slice(l))?e.slice(l).length:1,r=o.slice(s);return r[0]!=="/"&&(r="/"+r),h0(r,"")}return h0(n,e)+a+o}function EJ(e,t,n,a){let o=[],l=[],s=null;const r=({state:p})=>{const g=zE(e,location),v=n.value,h=t.value;let m=0;if(p){if(n.value=g,t.value=p,s&&s===v){s=null;return}m=h?p.position-h.position:0}else a(g);o.forEach(y=>{y(n.value,v,{delta:m,type:mv.pop,direction:m?m>0?qf.forward:qf.back:qf.unknown})})};function u(){s=n.value}function c(p){o.push(p);const g=()=>{const v=o.indexOf(p);v>-1&&o.splice(v,1)};return l.push(g),g}function d(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Zt({},p.state,{scroll:Yd()}),"")}}function f(){for(const p of l)p();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",d),document.removeEventListener("visibilitychange",d)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",d),document.addEventListener("visibilitychange",d),{pauseListeners:u,listen:c,destroy:f}}function w0(e,t,n,a=!1,o=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:o?Yd():null}}function xJ(e){const{history:t,location:n}=window,a={value:zE(e,n)},o={value:t.state};o.value||l(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(u,c,d){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+u:kJ()+e+u;try{t[d?"replaceState":"pushState"](c,"",p),o.value=c}catch(g){console.error(g),n[d?"replace":"assign"](p)}}function s(u,c){l(u,Zt({},t.state,w0(o.value.back,u,o.value.forward,!0),c,{position:o.value.position}),!0),a.value=u}function r(u,c){const d=Zt({},o.value,t.state,{forward:u,scroll:Yd()});l(d.current,d,!0),l(u,Zt({},w0(a.value,u,null),{position:d.position+1},c),!1),a.value=u}return{location:a,state:o,push:r,replace:s}}function TJ(e){e=uJ(e);const t=xJ(e),n=EJ(e,t.state,t.location,t.replace);function a(l,s=!0){s||n.pauseListeners(),history.go(l)}const o=Zt({location:"",base:e,go:a,createHref:dJ.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let us=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Rn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Rn||{});const $J={type:us.Static,value:""},OJ=/[a-zA-Z0-9_]/;function NJ(e){if(!e)return[[]];if(e==="/")return[[$J]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=Rn.Static,a=n;const o=[];let l;function s(){l&&o.push(l),l=[]}let r=0,u,c="",d="";function f(){c&&(n===Rn.Static?l.push({type:us.Static,value:c}):n===Rn.Param||n===Rn.ParamRegExp||n===Rn.ParamRegExpEnd?(l.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),l.push({type:us.Param,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=u}for(;rt.length?t.length===1&&t[0]===aa.Static+aa.Segment?1:-1:0}function HE(e,t){let n=0;const a=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const PJ={strict:!1,end:!0,sensitive:!1};function AJ(e,t,n){const a=IJ(NJ(e.path),n),o=Zt(a,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function LJ(e,t){const n=[],a=new Map;t=v0(PJ,t);function o(f){return a.get(f)}function l(f,p,g){const v=!g,h=E0(f);h.aliasOf=g&&g.record;const m=v0(t,f),y=[h];if("alias"in f){const C=typeof f.alias=="string"?[f.alias]:f.alias;for(const k of C)y.push(E0(Zt({},h,{components:g?g.record.components:h.components,path:k,aliasOf:g?g.record:h})))}let b,w;for(const C of y){const{path:k}=C;if(p&&k[0]!=="/"){const E=p.record.path,T=E[E.length-1]==="/"?"":"/";C.path=p.record.path+(k&&T+k)}if(b=AJ(C,p,m),g?g.alias.push(b):(w=w||b,w!==b&&w.alias.push(b),v&&f.name&&!x0(b)&&s(f.name)),KE(b)&&u(b),h.children){const E=h.children;for(let T=0;T{s(w)}:yi}function s(f){if(BE(f)){const p=a.get(f);p&&(a.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(s),p.alias.forEach(s))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&a.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function r(){return n}function u(f){const p=BJ(f,n);n.splice(p,0,f),f.record.name&&!x0(f)&&a.set(f.record.name,f)}function c(f,p){let g,v={},h,m;if("name"in f&&f.name){if(g=a.get(f.name),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f});m=g.record.name,v=Zt(k0(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),f.params&&k0(f.params,g.keys.map(w=>w.name))),h=g.stringify(v)}else if(f.path!=null)h=f.path,g=n.find(w=>w.re.test(h)),g&&(v=g.parse(h),m=g.record.name);else{if(g=p.name?a.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f,currentLocation:p});m=g.record.name,v=Zt({},p.params,f.params),h=g.stringify(v)}const y=[];let b=g;for(;b;)y.unshift(b.record),b=b.parent;return{name:m,path:h,params:v,matched:y,meta:VJ(y)}}e.forEach(f=>l(f));function d(){n.length=0,a.clear()}return{addRoute:l,resolve:c,removeRoute:s,clearRoutes:d,getRoutes:r,getRecordMatcher:o}}function k0(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function E0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:DJ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function DJ(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function x0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function VJ(e){return e.reduce((t,n)=>Zt(t,n.meta),{})}function BJ(e,t){let n=0,a=t.length;for(;n!==a;){const l=n+a>>1;HE(e,t[l])<0?a=l:n=l+1}const o=FJ(e);return o&&(a=t.lastIndexOf(o,a-1)),a}function FJ(e){let t=e;for(;t=t.parent;)if(KE(t)&&HE(e,t)===0)return t}function KE({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function T0(e){const t=_e(qd),n=_e(Mm),a=S(()=>{const u=i(e.to);return t.resolve(u)}),o=S(()=>{const{matched:u}=a.value,{length:c}=u,d=u[c-1],f=n.matched;if(!d||!f.length)return-1;const p=f.findIndex(xr.bind(null,d));if(p>-1)return p;const g=$0(u[c-2]);return c>1&&$0(d)===g&&f[f.length-1].path!==g?f.findIndex(xr.bind(null,u[c-2])):p}),l=S(()=>o.value>-1&&jJ(n.params,a.value.params)),s=S(()=>o.value>-1&&o.value===n.matched.length-1&&VE(n.params,a.value.params));function r(u={}){if(WJ(u)){const c=t[i(e.replace)?"replace":"push"](i(e.to)).catch(yi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:S(()=>a.value.href),isActive:l,isExactActive:s,navigate:r}}function zJ(e){return e.length===1?e[0]:e}const HJ=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:T0,setup(e,{slots:t}){const n=Rt(T0(e)),{options:a}=_e(qd),o=S(()=>({[O0(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[O0(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&zJ(t.default(n));return e.custom?l:Ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),KJ=HJ;function WJ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jJ(e,t){for(const n in t){const a=t[n],o=e[n];if(typeof a=="string"){if(a!==o)return!1}else if(!Ja(o)||o.length!==a.length||a.some((l,s)=>l.valueOf()!==o[s].valueOf()))return!1}return!0}function $0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const O0=(e,t,n)=>e??t??n,UJ=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=_e(yv),o=S(()=>e.route||a.value),l=_e(b0,0),s=S(()=>{let c=i(l);const{matched:d}=o.value;let f;for(;(f=d[c])&&!f.components;)c++;return c}),r=S(()=>o.value.matched[s.value]);bt(b0,S(()=>s.value+1)),bt(CJ,r),bt(yv,o);const u=A();return fe(()=>[u.value,r.value,e.name],([c,d,f],[p,g,v])=>{d&&(d.instances[f]=c,g&&g!==d&&c&&c===p&&(d.leaveGuards.size||(d.leaveGuards=g.leaveGuards),d.updateGuards.size||(d.updateGuards=g.updateGuards))),c&&d&&(!g||!xr(d,g)||!p)&&(d.enterCallbacks[f]||[]).forEach(h=>h(c))},{flush:"post"}),()=>{const c=o.value,d=e.name,f=r.value,p=f&&f.components[d];if(!p)return N0(n.default,{Component:p,route:c});const g=f.props[d],v=g?g===!0?c.params:typeof g=="function"?g(c):g:null,m=Ye(p,Zt({},v,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[d]=null)},ref:u}));return N0(n.default,{Component:m,route:c})||m}}});function N0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const YJ=UJ;function qJ(e){const t=LJ(e.routes,e),n=e.parseQuery||bJ,a=e.stringifyQuery||y0,o=e.history,l=Xr(),s=Xr(),r=Xr(),u=Wt(gl);let c=gl;Ys&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Uf.bind(null,te=>""+te),f=Uf.bind(null,nJ),p=Uf.bind(null,qi);function g(te,de){let se,Y;return BE(te)?(se=t.getRecordMatcher(te),Y=de):Y=te,t.addRoute(Y,se)}function v(te){const de=t.getRecordMatcher(te);de&&t.removeRoute(de)}function h(){return t.getRoutes().map(te=>te.record)}function m(te){return!!t.getRecordMatcher(te)}function y(te,de){if(de=Zt({},de||u.value),typeof te=="string"){const oe=Yf(n,te,de.path),ce=t.resolve({path:oe.path},de),ge=o.createHref(oe.fullPath);return Zt(oe,ce,{params:p(ce.params),hash:qi(oe.hash),redirectedFrom:void 0,href:ge})}let se;if(te.path!=null)se=Zt({},te,{path:Yf(n,te.path,de.path).path});else{const oe=Zt({},te.params);for(const ce in oe)oe[ce]==null&&delete oe[ce];se=Zt({},te,{params:f(oe)}),de.params=f(de.params)}const Y=t.resolve(se,de),G=te.hash||"";Y.params=d(p(Y.params));const V=lJ(a,Zt({},te,{hash:QZ(G),path:Y.path})),Z=o.createHref(V);return Zt({fullPath:V,hash:G,query:a===y0?wJ(te.query):te.query||{}},Y,{redirectedFrom:void 0,href:Z})}function b(te){return typeof te=="string"?Yf(n,te,u.value.path):Zt({},te)}function w(te,de){if(c!==te)return Tr(wn.NAVIGATION_CANCELLED,{from:de,to:te})}function C(te){return T(te)}function k(te){return C(Zt(b(te),{replace:!0}))}function E(te,de){const se=te.matched[te.matched.length-1];if(se&&se.redirect){const{redirect:Y}=se;let G=typeof Y=="function"?Y(te,de):Y;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=b(G):{path:G},G.params={}),Zt({query:te.query,hash:te.hash,params:G.path!=null?{}:te.params},G)}}function T(te,de){const se=c=y(te),Y=u.value,G=te.state,V=te.force,Z=te.replace===!0,oe=E(se,Y);if(oe)return T(Zt(b(oe),{state:typeof oe=="object"?Zt({},G,oe.state):G,force:V,replace:Z}),de||se);const ce=se;ce.redirectedFrom=de;let ge;return!V&&sJ(a,Y,se)&&(ge=Tr(wn.NAVIGATION_DUPLICATED,{to:ce,from:Y}),H(Y,Y,!0,!1)),(ge?Promise.resolve(ge):O(ce,Y)).catch(me=>Do(me)?Do(me,wn.NAVIGATION_GUARD_REDIRECT)?me:z(me):I(me,ce,Y)).then(me=>{if(me){if(Do(me,wn.NAVIGATION_GUARD_REDIRECT))return T(Zt({replace:Z},b(me.to),{state:typeof me.to=="object"?Zt({},G,me.to.state):G,force:V}),de||ce)}else me=P(ce,Y,!0,Z,G);return _(ce,Y,me),me})}function $(te,de){const se=w(te,de);return se?Promise.reject(se):Promise.resolve()}function N(te){const de=Q.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(te):te()}function O(te,de){let se;const[Y,G,V]=SJ(te,de);se=Gf(Y.reverse(),"beforeRouteLeave",te,de);for(const oe of Y)oe.leaveGuards.forEach(ce=>{se.push(El(ce,te,de))});const Z=$.bind(null,te,de);return se.push(Z),ue(se).then(()=>{se=[];for(const oe of l.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).then(()=>{se=Gf(G,"beforeRouteUpdate",te,de);for(const oe of G)oe.updateGuards.forEach(ce=>{se.push(El(ce,te,de))});return se.push(Z),ue(se)}).then(()=>{se=[];for(const oe of V)if(oe.beforeEnter)if(Ja(oe.beforeEnter))for(const ce of oe.beforeEnter)se.push(El(ce,te,de));else se.push(El(oe.beforeEnter,te,de));return se.push(Z),ue(se)}).then(()=>(te.matched.forEach(oe=>oe.enterCallbacks={}),se=Gf(V,"beforeRouteEnter",te,de,N),se.push(Z),ue(se))).then(()=>{se=[];for(const oe of s.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).catch(oe=>Do(oe,wn.NAVIGATION_CANCELLED)?oe:Promise.reject(oe))}function _(te,de,se){r.list().forEach(Y=>N(()=>Y(te,de,se)))}function P(te,de,se,Y,G){const V=w(te,de);if(V)return V;const Z=de===gl,oe=Ys?history.state:{};se&&(Y||Z?o.replace(te.fullPath,Zt({scroll:Z&&oe&&oe.scroll},G)):o.push(te.fullPath,G)),u.value=te,H(te,de,se,Z),z()}let D;function W(){D||(D=o.listen((te,de,se)=>{if(!ee.listening)return;const Y=y(te),G=E(Y,ee.currentRoute.value);if(G){T(Zt(G,{replace:!0,force:!0}),Y).catch(yi);return}c=Y;const V=u.value;Ys&&vJ(g0(V.fullPath,se.delta),Yd()),O(Y,V).catch(Z=>Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_CANCELLED)?Z:Do(Z,wn.NAVIGATION_GUARD_REDIRECT)?(T(Zt(b(Z.to),{force:!0}),Y).then(oe=>{Do(oe,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&!se.delta&&se.type===mv.pop&&o.go(-1,!1)}).catch(yi),Promise.reject()):(se.delta&&o.go(-se.delta,!1),I(Z,Y,V))).then(Z=>{Z=Z||P(Y,V,!1),Z&&(se.delta&&!Do(Z,wn.NAVIGATION_CANCELLED)?o.go(-se.delta,!1):se.type===mv.pop&&Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),_(Y,V,Z)}).catch(yi)}))}let U=Xr(),F=Xr(),R;function I(te,de,se){z(te);const Y=F.list();return Y.length?Y.forEach(G=>G(te,de,se)):console.error(te),Promise.reject(te)}function L(){return R&&u.value!==gl?Promise.resolve():new Promise((te,de)=>{U.add([te,de])})}function z(te){return R||(R=!te,W(),U.list().forEach(([de,se])=>te?se(te):de()),U.reset()),te}function H(te,de,se,Y){const{scrollBehavior:G}=e;if(!Ys||!G)return Promise.resolve();const V=!se&&hJ(g0(te.fullPath,0))||(Y||!se)&&history.state&&history.state.scroll||null;return Ae().then(()=>G(te,de,V)).then(Z=>Z&&pJ(Z)).catch(Z=>I(Z,te,de))}const K=te=>o.go(te);let q;const Q=new Set,ee={currentRoute:u,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:h,resolve:y,options:e,push:C,replace:k,go:K,back:()=>K(-1),forward:()=>K(1),beforeEach:l.add,beforeResolve:s.add,afterEach:r.add,onError:F.add,isReady:L,install(te){te.component("RouterLink",KJ),te.component("RouterView",YJ),te.config.globalProperties.$router=ee,Object.defineProperty(te.config.globalProperties,"$route",{enumerable:!0,get:()=>i(u)}),Ys&&!q&&u.value===gl&&(q=!0,C(o.location).catch(Y=>{}));const de={};for(const Y in gl)Object.defineProperty(de,Y,{get:()=>u.value[Y],enumerable:!0});te.provide(qd,ee),te.provide(Mm,rd(de)),te.provide(yv,u);const se=te.unmount;Q.add(te),te.unmount=function(){Q.delete(te),Q.size<1&&(c=gl,D&&D(),D=null,u.value=gl,q=!1,R=!1),se()}}};function ue(te){return te.reduce((de,se)=>de.then(()=>N(se)),Promise.resolve())}return ee}function oQ(){return _e(qd)}function lQ(e){return _e(Mm)}const GJ=[{path:"/",name:"home",component:()=>io(()=>import("./HomePage-v6ufhhLl.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-C7oFJn97.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-B6n5vSIJ.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-CnuINV9I.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-miuzOi4K.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-CClHfarr.js"),__vite__mapDeps([14,1,15,4,7,8,16,17,18,19,20,21]))},{path:"cloud-configs",name:"admin-cloud-configs",component:()=>io(()=>import("./CloudConfig-DIBXz7ib.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-B_lvCL8b.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-BpnPsiXS.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-D4vANRRO.js"),__vite__mapDeps([19,1,20]))}]}],WE=qJ({history:TJ(),routes:GJ});WE.beforeEach((e,t,n)=>{const a=localStorage.getItem("admin_token");e.meta.requiresAuth&&!a?n("/admin/login"):n()});const Gd=lw(FZ);Gd.use(y$());Gd.use(WE);Gd.use(VZ);Gd.mount("#app");export{vP as A,Ae as B,ZJ as C,XJ as D,iZ as E,He as F,eQ as G,JJ as H,tQ as I,al as J,dt as K,Nt as L,Oo as M,aQ as N,QJ as O,nQ as P,Pv as Q,x as a,j as b,B as c,ie as d,le as e,J as f,en as g,A as h,Rt as i,Ot as j,i as k,St as l,$r as m,M as n,mt as o,je as p,Xe as q,Ct as r,QP as s,ke as t,oQ as u,S as v,ne as w,fe as x,re as y,lQ as z}; diff --git a/source_clean/frontend-src/dist-vite/index.html b/source_clean/frontend-src/dist-vite/index.html index ac7deea..fbb2a19 100644 --- a/source_clean/frontend-src/dist-vite/index.html +++ b/source_clean/frontend-src/dist-vite/index.html @@ -21,7 +21,7 @@ } })(); - + diff --git a/source_clean/frontend-src/src/pages/admin/SystemConfig.vue b/source_clean/frontend-src/src/pages/admin/SystemConfig.vue index c704e0f..8fe46ae 100644 --- a/source_clean/frontend-src/src/pages/admin/SystemConfig.vue +++ b/source_clean/frontend-src/src/pages/admin/SystemConfig.vue @@ -558,7 +558,7 @@ /> - + - - - - + + + +
    + + + + +
    {{ pushUserForm.id ? '更新' : '确认添加' }} 取消编辑 @@ -605,10 +627,13 @@ - + @@ -675,11 +700,11 @@
    可用变量:
    - {cloud_type} 网盘类型(夸克/百度/阿里) + {cloud_type} 网盘类型 {nickname} 网盘昵称 {file_name} 文件名 {file_size} 文件大小 - {duration} 耗时(秒) + {duration} 耗时 {share_url} 分享链接 {fail_count} 连续失败次数 {error_message} 错误信息 @@ -687,7 +712,7 @@
    - + @@ -887,7 +912,8 @@ async function loadPushUserAccountOptions() { const pushUserForm = reactive({ id: null, account: '', - channels: [], + channel: '', + channelParams: {} as Record, events: { on_save_success: true, on_save_fail: true, @@ -895,6 +921,10 @@ const pushUserForm = reactive({ on_cleanup: false, }, }) +function onPushUserChannelChange() { + // Reset params when channel changes + pushUserForm.channelParams = {} +} // Only show channels that are enabled in global notification settings const enabledNotifyProviders = computed(() => { @@ -934,7 +964,9 @@ function editPushUser(row?: any) { pushUserForm.id = row.id pushUserForm.account = row.account const nc = row.notify_config || {} - pushUserForm.channels = Object.keys(nc.channels || {}) + const chKeys = Object.keys(nc.channels || {}) + pushUserForm.channel = chKeys[0] || '' + pushUserForm.channelParams = chKeys[0] ? (nc.channels[chKeys[0]] || {}) : {} pushUserForm.events = { on_save_success: nc.events?.on_save_success !== false, on_save_fail: nc.events?.on_save_fail !== false, @@ -944,7 +976,8 @@ function editPushUser(row?: any) { } else { pushUserForm.id = null pushUserForm.account = '' - pushUserForm.channels = [] + pushUserForm.channel = '' + pushUserForm.channelParams = {} pushUserForm.events = { on_save_success: true, on_save_fail: true, on_cookie_expire: true, on_cleanup: false } } } @@ -952,7 +985,8 @@ function editPushUser(row?: any) { function cancelEditPushUser() { pushUserForm.id = null pushUserForm.account = '' - pushUserForm.channels = [] + pushUserForm.channel = '' + pushUserForm.channelParams = {} pushUserForm.events = { on_save_success: true, on_save_fail: true, on_cookie_expire: true, on_cleanup: false } } @@ -973,10 +1007,10 @@ async function savePushUser() { account: pushUserForm.account, notify_config: { channels: {}, events: pushUserForm.events }, } - // Build channels from selected keys (no params — use global config at push time) + // Build channel with params const ch: Record = {} - for (const key of pushUserForm.channels) { - ch[key] = {} + if (pushUserForm.channel) { + ch[pushUserForm.channel] = { ...pushUserForm.channelParams } } payload.notify_config.channels = ch if (pushUserForm.id) { @@ -995,7 +1029,8 @@ async function savePushUser() { const isUpdate = !!pushUserForm.id pushUserForm.id = null pushUserForm.account = '' - pushUserForm.channels = [] + pushUserForm.channel = '' + pushUserForm.channelParams = {} pushUserForm.events = { on_save_success: true, on_save_fail: true, on_cookie_expire: true, on_cleanup: false } ElMessage.success(isUpdate ? '推送用户已更新' : '推送用户已添加') await loadPushUsers() @@ -1052,6 +1087,22 @@ function getProviderLabel(key: string): string { function hasEnabledChannels(row: any): boolean { return Object.keys(getEnabledChannels(row)).length > 0 } +function getChannelParamsSummary(row: any): string { + const ch = row.notify_config?.channels || {} + const keys = Object.keys(ch) + if (keys.length === 0) return '' + const params = ch[keys[0]] || {} + const parts: string[] = [] + for (const [k, v] of Object.entries(params)) { + if (v && typeof v === 'string') { + const masked = k.includes('token') || k.includes('key') || k.includes('secret') || k.includes('password') + ? (v as string).substring(0, 4) + '***' + : (v as string).length > 20 ? (v as string).substring(0, 20) + '...' : v + parts.push(masked) + } + } + return parts.join(' | ') +} // ==================== End Push User Notifications ==================== diff --git a/source_clean/frontend/assets/AdminDashboard-DAzBQti_.js b/source_clean/frontend/assets/AdminDashboard-CClHfarr.js similarity index 99% rename from source_clean/frontend/assets/AdminDashboard-DAzBQti_.js rename to source_clean/frontend/assets/AdminDashboard-CClHfarr.js index 838bc14..214d44e 100644 --- a/source_clean/frontend/assets/AdminDashboard-DAzBQti_.js +++ b/source_clean/frontend/assets/AdminDashboard-CClHfarr.js @@ -1,4 +1,4 @@ -import{x as qu,m as $_,h as Ce,B as Hg,d as q_,o as K_,a as Tt,c as Nt,K as ml,L as _l,b as Q,F as Vr,r as Gr,f as $t,w as qt,e as Oe,v as Ka,j as Hr,i as Q_,t as wt,n as Nc,y as Ei,l as zc,p as J_,E as j_,u as t1}from"./index-DLC2deeT.js";import{a as e1,h as r1,c as i1,i as n1,j as a1,t as o1,_ as s1}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import l1 from"./CloudConfig-BaEpQpQM.js";import u1 from"./SystemConfig-CswhThiW.js";import f1 from"./SaveRecords-vmMvuvLS.js";import"./index-Bn7NwETH.js";import"./CloudBadge-BhaCxKyo.js";/*! ***************************************************************************** +import{x as qu,m as $_,h as Ce,B as Hg,d as q_,o as K_,a as Tt,c as Nt,K as ml,L as _l,b as Q,F as Vr,r as Gr,f as $t,w as qt,e as Oe,v as Ka,j as Hr,i as Q_,t as wt,n as Nc,y as Ei,l as zc,p as J_,E as j_,u as t1}from"./index-Bsy0LTRb.js";import{a as e1,h as r1,c as i1,i as n1,j as a1,t as o1,_ as s1}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import l1 from"./CloudConfig-DIBXz7ib.js";import u1 from"./SystemConfig-BpnPsiXS.js";import f1 from"./SaveRecords-D4vANRRO.js";import"./index-Bn7NwETH.js";import"./CloudBadge-BQbzCPM-.js";/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any diff --git a/source_clean/frontend-src/dist-vite/assets/AdminLayout-BgjUguyQ.js b/source_clean/frontend/assets/AdminLayout-miuzOi4K.js similarity index 98% rename from source_clean/frontend-src/dist-vite/assets/AdminLayout-BgjUguyQ.js rename to source_clean/frontend/assets/AdminLayout-miuzOi4K.js index cbb6aa5..af2f6be 100644 --- a/source_clean/frontend-src/dist-vite/assets/AdminLayout-BgjUguyQ.js +++ b/source_clean/frontend/assets/AdminLayout-miuzOi4K.js @@ -1 +1 @@ -import{d as B,o as N,a as V,c as I,b as n,t as c,f as e,w as t,h as g,v as y,j as u,k as r,C as M,l,D as T,G as j,H as q,I as z,J as A,u as D,z as H}from"./index-DLC2deeT.js";import{a as L,_ as R}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const E={class:"admin-layout"},G={class:"admin-sidebar"},J={class:"sidebar-brand"},W={class:"sidebar-brand-text"},F={class:"sidebar-version"},K={class:"admin-content"},O={class:"content-header"},P={class:"content-breadcrumb"},Q={class:"breadcrumb-current"},U={class:"content-actions"},X={class:"content-body"},Y=B({__name:"AdminLayout",setup(Z){const d=D(),f=H(),m=g(""),_=g(""),b={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","save-records":"转存日志"},p=y(()=>{const o=f.name;return o==="admin-cloud-configs"?"cloud-configs-toggle":o==="admin-cleanup"?"cloud-configs-cleanup":o==="admin-system"?f.query.section||"sys-site":o==="admin-save-records"?"save-records":"dashboard"}),x=y(()=>b[p.value]||"仪表盘");function w(o){o==="dashboard"?d.push("/admin/dashboard"):o==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):o==="cloud-configs-cleanup"?d.push("/admin/cleanup"):o.startsWith("sys-")?d.push({path:"/admin/system",query:{section:o}}):o==="save-records"?d.push("/admin/save-records"):o==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function h(){d.push("/")}return N(async()=>{try{const o=await L();m.value=o.site_name||""}catch{}try{const s=await(await fetch("/health")).json();_.value=s.version}catch{}}),(o,s)=>{const i=u("el-icon"),a=u("el-menu-item"),v=u("el-sub-menu"),C=u("el-menu"),k=u("el-button"),S=u("router-view");return V(),I("div",E,[n("aside",G,[n("div",J,[s[1]||(s[1]=n("div",{class:"sidebar-logo"},"☁️",-1)),n("div",W,[n("h2",null,c(m.value||"CloudSearch"),1),s[0]||(s[0]=n("p",null,"管理控制台",-1))])]),e(C,{"default-active":p.value,class:"sidebar-menu",onSelect:w},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=n("span",null,"仪表盘",-1))]),_:1}),e(v,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=n("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(v,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=n("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(q))]),_:1}),s[13]||(s[13]=n("span",null,"转存日志",-1))]),_:1}),s[15]||(s[15]=n("div",{class:"sidebar-spacer"},null,-1)),n("div",F,"v"+c(_.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(z))]),_:1}),s[14]||(s[14]=n("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),n("div",K,[n("header",O,[n("div",P,[n("span",Q,c(x.value),1)]),n("div",U,[e(k,{text:"",size:"small",onClick:h},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[16]||(s[16]=l(" 返回前台 ",-1))]),_:1})])]),n("main",X,[e(S)])])])}}}),es=R(Y,[["__scopeId","data-v-647abf08"]]);export{es as default}; +import{d as B,o as N,a as V,c as I,b as n,t as c,f as e,w as t,h as g,v as y,j as u,k as r,C as M,l,D as T,G as j,H as q,I as z,J as A,u as D,z as H}from"./index-Bsy0LTRb.js";import{a as L,_ as R}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const E={class:"admin-layout"},G={class:"admin-sidebar"},J={class:"sidebar-brand"},W={class:"sidebar-brand-text"},F={class:"sidebar-version"},K={class:"admin-content"},O={class:"content-header"},P={class:"content-breadcrumb"},Q={class:"breadcrumb-current"},U={class:"content-actions"},X={class:"content-body"},Y=B({__name:"AdminLayout",setup(Z){const d=D(),f=H(),m=g(""),_=g(""),b={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","save-records":"转存日志"},p=y(()=>{const o=f.name;return o==="admin-cloud-configs"?"cloud-configs-toggle":o==="admin-cleanup"?"cloud-configs-cleanup":o==="admin-system"?f.query.section||"sys-site":o==="admin-save-records"?"save-records":"dashboard"}),x=y(()=>b[p.value]||"仪表盘");function w(o){o==="dashboard"?d.push("/admin/dashboard"):o==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):o==="cloud-configs-cleanup"?d.push("/admin/cleanup"):o.startsWith("sys-")?d.push({path:"/admin/system",query:{section:o}}):o==="save-records"?d.push("/admin/save-records"):o==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function h(){d.push("/")}return N(async()=>{try{const o=await L();m.value=o.site_name||""}catch{}try{const s=await(await fetch("/health")).json();_.value=s.version}catch{}}),(o,s)=>{const i=u("el-icon"),a=u("el-menu-item"),v=u("el-sub-menu"),C=u("el-menu"),k=u("el-button"),S=u("router-view");return V(),I("div",E,[n("aside",G,[n("div",J,[s[1]||(s[1]=n("div",{class:"sidebar-logo"},"☁️",-1)),n("div",W,[n("h2",null,c(m.value||"CloudSearch"),1),s[0]||(s[0]=n("p",null,"管理控制台",-1))])]),e(C,{"default-active":p.value,class:"sidebar-menu",onSelect:w},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=n("span",null,"仪表盘",-1))]),_:1}),e(v,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=n("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(v,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=n("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(q))]),_:1}),s[13]||(s[13]=n("span",null,"转存日志",-1))]),_:1}),s[15]||(s[15]=n("div",{class:"sidebar-spacer"},null,-1)),n("div",F,"v"+c(_.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(z))]),_:1}),s[14]||(s[14]=n("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),n("div",K,[n("header",O,[n("div",P,[n("span",Q,c(x.value),1)]),n("div",U,[e(k,{text:"",size:"small",onClick:h},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[16]||(s[16]=l(" 返回前台 ",-1))]),_:1})])]),n("main",X,[e(S)])])])}}}),es=R(Y,[["__scopeId","data-v-647abf08"]]);export{es as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/AdminLogin-VVxvaZnt.js b/source_clean/frontend/assets/AdminLogin-CnuINV9I.js similarity index 94% rename from source_clean/frontend-src/dist-vite/assets/AdminLogin-VVxvaZnt.js rename to source_clean/frontend/assets/AdminLogin-CnuINV9I.js index 3333756..95d52d2 100644 --- a/source_clean/frontend-src/dist-vite/assets/AdminLogin-VVxvaZnt.js +++ b/source_clean/frontend/assets/AdminLogin-CnuINV9I.js @@ -1 +1 @@ -import{d as k,o as C,a as w,c as y,b as a,t as m,f as t,w as i,g as x,e as L,h as d,j as p,l as N,i as S,E as B}from"./index-DLC2deeT.js";import{a as E,d as M,_ as U}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const j={class:"admin-login-page"},q={class:"login-card"},A={class:"login-brand"},I={class:"login-title"},K={key:0,class:"error-msg"},R={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const f=d(),u=d(!1),c=d(""),g=d(""),v=d("");E().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=f.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await M(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return w(),y("div",j,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",q,[a("div",A,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",I,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:f,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=_=>s.username=_),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=_=>s.password=_),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(w(),y("p",K,m(c.value),1)):L("",!0),a("p",R,"CloudSearch v"+m(v.value),1)])])}}}),G=U(z,[["__scopeId","data-v-bd0b6672"]]);export{G as default}; +import{d as k,o as C,a as w,c as y,b as a,t as m,f as t,w as i,g as x,e as L,h as d,j as p,l as N,i as S,E as B}from"./index-Bsy0LTRb.js";import{a as E,d as M,_ as U}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const j={class:"admin-login-page"},q={class:"login-card"},A={class:"login-brand"},I={class:"login-title"},K={key:0,class:"error-msg"},R={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const f=d(),u=d(!1),c=d(""),g=d(""),v=d("");E().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=f.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await M(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return w(),y("div",j,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",q,[a("div",A,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",I,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:f,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=_=>s.username=_),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=_=>s.password=_),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(w(),y("p",K,m(c.value),1)):L("",!0),a("p",R,"CloudSearch v"+m(v.value),1)])])}}}),G=U(z,[["__scopeId","data-v-bd0b6672"]]);export{G as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/Cleanup-B77x7c3T.js b/source_clean/frontend/assets/Cleanup-B_lvCL8b.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/Cleanup-B77x7c3T.js rename to source_clean/frontend/assets/Cleanup-B_lvCL8b.js index 5912c57..e4b88b1 100644 --- a/source_clean/frontend-src/dist-vite/assets/Cleanup-B77x7c3T.js +++ b/source_clean/frontend/assets/Cleanup-B_lvCL8b.js @@ -1 +1 @@ -import{d as X,o as Y,a as _,c as f,f as a,w as u,j as p,i as Z,b as t,F as ee,r as le,y as N,l as m,t as v,e as g,g as ae,h as y,v as r,E as d}from"./index-DLC2deeT.js";import{k as te,p as se,r as ne,v as oe,_ as ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ie={class:"cleanup-section"},re={class:"cleanup-grid"},pe={class:"cleanup-group"},de={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap"}},ce={style:{display:"flex","align-items":"center",gap:"10px"}},_e={style:{width:"100%"}},me={key:0,style:{display:"flex",gap:"6px","flex-wrap":"wrap","margin-bottom":"6px"}},fe={style:{display:"flex",gap:"6px"}},ve={class:"cleanup-group"},ge={style:{display:"flex","align-items":"center",gap:"8px"}},ye={style:{display:"flex","align-items":"center",gap:"8px"}},he={style:{display:"flex","align-items":"center",gap:"8px"}},be={style:{display:"flex","align-items":"center",gap:"8px"}},xe={class:"cleanup-group"},we={class:"cleanup-group"},Ve={class:"cleanup-actions"},Ce={class:"cleanup-actions-buttons"},Se={key:0,class:"cleanup-info"},ke={key:0,style:{"margin-left":"12px"}},ze=X({__name:"Cleanup",setup(Ne){const s=Z({}),h=y(!1),b=y(!1),z=y(!1),D=r(()=>String(s.cleanup_last_run||"")),T=r(()=>{const l=String(s.cleanup_last_stats||"");if(!l)return"";try{const e=JSON.parse(l),n=[];return e.filesTrashed>0&&n.push(`移入回收站 ${e.filesTrashed} 个文件夹`),e.logsDeleted>0&&n.push(`删除 ${e.logsDeleted} 条日志`),e.trashEmptied&&n.push("已清空回收站"),e.errors>0&&n.push(`⚠️ ${e.errors} 个错误`),n.join(" / ")||"无操作"}catch{return""}}),U=r({get:()=>String(s.cleanup_enabled)==="true",set:l=>{s.cleanup_enabled=l?"true":"false"}}),E=r({get:()=>String(s.cleanup_empty_trash)!=="false",set:l=>{s.cleanup_empty_trash=l?"true":"false"}}),R=r({get:()=>Number(s.cleanup_file_retention_days??7),set:l=>{s.cleanup_file_retention_days=l}}),B=r({get:()=>Number(s.cleanup_log_retention_days??30),set:l=>{s.cleanup_log_retention_days=l}}),x=r({get:()=>String(s.cleanup_space_threshold_enabled)==="true",set:l=>{s.cleanup_space_threshold_enabled=l?"true":"false"}}),M=r({get:()=>Number(s.cleanup_space_threshold_percent??90),set:l=>{s.cleanup_space_threshold_percent=l}}),W=r({get:()=>Number(s.cleanup_space_threshold_delete_percent??10),set:l=>{s.cleanup_space_threshold_delete_percent=l}}),$=r({get:()=>String(s.save_reuse_enabled)!=="false",set:l=>{s.save_reuse_enabled=l?"true":"false"}}),c=y([]),w=y("");function L(){try{const l=String(s.cleanup_whitelist_dirs||"[]");c.value=JSON.parse(l)}catch{c.value=[]}}function F(){const l=w.value.trim();if(l){if(c.value.includes(l)){d.warning("该目录已在白名单中");return}c.value.push(l),w.value=""}}function P(l){c.value.splice(l,1)}const I=r({get:()=>Number(s.cleanup_verify_interval??30),set:l=>{s.cleanup_verify_interval=l}}),J=r({get:()=>Number(s.storage_refresh_interval??180),set:l=>{s.storage_refresh_interval=l}});async function O(){try{const l=await te();for(const e of l)s[e.key]=e.value;L()}catch(l){console.error("加载清理配置失败",l)}}async function A(){var l,e;z.value=!0;try{const i=["cleanup_enabled","cleanup_file_retention_days","cleanup_log_retention_days","cleanup_empty_trash","cleanup_space_threshold_enabled","cleanup_space_threshold_percent","cleanup_space_threshold_delete_percent","save_reuse_enabled","cleanup_verify_interval","storage_refresh_interval"].map(V=>({key:V,value:String(s[V]??"")}));i.push({key:"cleanup_whitelist_dirs",value:JSON.stringify(c.value)}),await se(i),d.success("清理配置已保存")}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"保存失败")}finally{z.value=!1}}async function q(){var l,e;h.value=!0;try{const n=await ne();n.success?d.success(n.message):d.warning(n.message),await O()}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清理失败")}finally{h.value=!1}}async function G(){var l,e;b.value=!0;try{const n=await oe();n.success?d.success(n.message):d.warning(n.message)}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清空回收站失败")}finally{b.value=!1}}return Y(()=>{O()}),(l,e)=>{const n=p("el-switch"),i=p("el-form-item"),V=p("el-tag"),H=p("el-input"),C=p("el-button"),S=p("el-form"),k=p("el-input-number"),j=p("el-slider"),Q=p("el-card");return _(),f("div",ie,[a(Q,{class:"config-card"},{header:u(()=>[...e[11]||(e[11]=[t("span",null,"🧹 存储清理",-1)])]),default:u(()=>[t("div",re,[t("div",pe,[e[15]||(e[15]=t("div",{class:"cleanup-group-label"},"⏱ 基础清理策略",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"自动清理"},{default:u(()=>[t("div",de,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),size:"small"},null,8,["modelValue"]),e[12]||(e[12]=t("span",{class:"cleanup-hint"},"每天自动检查一次,删除过期日志、移入回收站文件",-1))])]),_:1}),a(i,{label:"清空回收站"},{default:u(()=>[t("div",ce,[a(n,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),size:"small"},null,8,["modelValue"]),e[13]||(e[13]=t("span",{class:"cleanup-hint"},"清理时一并清空各网盘回收站",-1))])]),_:1}),a(i,{label:"白名单目录"},{default:u(()=>[t("div",_e,[c.value.length?(_(),f("div",me,[(_(!0),f(ee,null,le(c.value,(o,K)=>(_(),N(V,{key:K,closable:"",size:"small",onClose:De=>P(K)},{default:u(()=>[m(v(o),1)]),_:2},1032,["onClose"]))),128))])):g("",!0),t("div",fe,[a(H,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),placeholder:"输入目录名",size:"small",style:{width:"160px"},onKeyup:ae(F,["enter"])},null,8,["modelValue"]),a(C,{type:"primary",size:"small",onClick:F},{default:u(()=>[...e[14]||(e[14]=[m("添加",-1)])]),_:1})])])]),_:1})]),_:1})]),t("div",ve,[e[20]||(e[20]=t("div",{class:"cleanup-group-label"},"📦 保留设置",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"文件保留"},{default:u(()=>[t("div",ge,[a(k,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=o=>R.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[16]||(e[16]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"日志保留"},{default:u(()=>[t("div",ye,[a(k,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=o=>B.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[17]||(e[17]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"Cookie检测"},{default:u(()=>[t("div",he,[a(k,{modelValue:I.value,"onUpdate:modelValue":e[5]||(e[5]=o=>I.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[18]||(e[18]=t("span",null,"分钟",-1))])]),_:1}),a(i,{label:"空间校准"},{default:u(()=>[t("div",be,[a(k,{modelValue:J.value,"onUpdate:modelValue":e[6]||(e[6]=o=>J.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[19]||(e[19]=t("span",null,"分钟",-1))])]),_:1})]),_:1})]),t("div",xe,[e[22]||(e[22]=t("div",{class:"cleanup-group-label"},"📊 空间阈值自动清理",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"启用"},{default:u(()=>[a(n,{modelValue:x.value,"onUpdate:modelValue":e[7]||(e[7]=o=>x.value=o),size:"small"},null,8,["modelValue"]),e[21]||(e[21]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"已用空间超过阈值时,按比例删除最旧的转存文件",-1))]),_:1}),x.value?(_(),N(i,{key:0,label:"使用阈值"},{default:u(()=>[a(j,{modelValue:M.value,"onUpdate:modelValue":e[8]||(e[8]=o=>M.value=o),min:50,max:99,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0),x.value?(_(),N(i,{key:1,label:"删除比例"},{default:u(()=>[a(j,{modelValue:W.value,"onUpdate:modelValue":e[9]||(e[9]=o=>W.value=o),min:5,max:50,step:5,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0)]),_:1})]),t("div",we,[e[24]||(e[24]=t("div",{class:"cleanup-group-label"},"🔗 分享链接复用",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"复用"},{default:u(()=>[a(n,{modelValue:$.value,"onUpdate:modelValue":e[10]||(e[10]=o=>$.value=o),size:"small"},null,8,["modelValue"]),e[23]||(e[23]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"相同原始链接不再重复转存,复用已有分享链接(会自动验证原链接有效性;60秒内重复请求直接返回已有链接)",-1))]),_:1})]),_:1})])]),t("div",Ve,[t("div",Ce,[a(C,{type:"primary",loading:z.value,onClick:A},{default:u(()=>[...e[25]||(e[25]=[m("💾 保存清理配置",-1)])]),_:1},8,["loading"]),a(C,{type:"danger",loading:h.value,onClick:q},{default:u(()=>[m(v(h.value?"清理中...":"🗑️ 立即清理"),1)]),_:1},8,["loading"]),a(C,{type:"warning",loading:b.value,onClick:G},{default:u(()=>[m(v(b.value?"清空中...":"🧹 清空回收站"),1)]),_:1},8,["loading"])]),D.value?(_(),f("div",Se,[m(" ⏰ 上次清理:"+v(D.value)+" ",1),T.value?(_(),f("span",ke,"📊 "+v(T.value),1)):g("",!0)])):g("",!0)])]),_:1})])}}}),Ee=ue(ze,[["__scopeId","data-v-dfd5abc7"]]);export{Ee as default}; +import{d as X,o as Y,a as _,c as f,f as a,w as u,j as p,i as Z,b as t,F as ee,r as le,y as N,l as m,t as v,e as g,g as ae,h as y,v as r,E as d}from"./index-Bsy0LTRb.js";import{k as te,p as se,r as ne,v as oe,_ as ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ie={class:"cleanup-section"},re={class:"cleanup-grid"},pe={class:"cleanup-group"},de={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap"}},ce={style:{display:"flex","align-items":"center",gap:"10px"}},_e={style:{width:"100%"}},me={key:0,style:{display:"flex",gap:"6px","flex-wrap":"wrap","margin-bottom":"6px"}},fe={style:{display:"flex",gap:"6px"}},ve={class:"cleanup-group"},ge={style:{display:"flex","align-items":"center",gap:"8px"}},ye={style:{display:"flex","align-items":"center",gap:"8px"}},he={style:{display:"flex","align-items":"center",gap:"8px"}},be={style:{display:"flex","align-items":"center",gap:"8px"}},xe={class:"cleanup-group"},we={class:"cleanup-group"},Ve={class:"cleanup-actions"},Ce={class:"cleanup-actions-buttons"},Se={key:0,class:"cleanup-info"},ke={key:0,style:{"margin-left":"12px"}},ze=X({__name:"Cleanup",setup(Ne){const s=Z({}),h=y(!1),b=y(!1),z=y(!1),D=r(()=>String(s.cleanup_last_run||"")),T=r(()=>{const l=String(s.cleanup_last_stats||"");if(!l)return"";try{const e=JSON.parse(l),n=[];return e.filesTrashed>0&&n.push(`移入回收站 ${e.filesTrashed} 个文件夹`),e.logsDeleted>0&&n.push(`删除 ${e.logsDeleted} 条日志`),e.trashEmptied&&n.push("已清空回收站"),e.errors>0&&n.push(`⚠️ ${e.errors} 个错误`),n.join(" / ")||"无操作"}catch{return""}}),U=r({get:()=>String(s.cleanup_enabled)==="true",set:l=>{s.cleanup_enabled=l?"true":"false"}}),E=r({get:()=>String(s.cleanup_empty_trash)!=="false",set:l=>{s.cleanup_empty_trash=l?"true":"false"}}),R=r({get:()=>Number(s.cleanup_file_retention_days??7),set:l=>{s.cleanup_file_retention_days=l}}),B=r({get:()=>Number(s.cleanup_log_retention_days??30),set:l=>{s.cleanup_log_retention_days=l}}),x=r({get:()=>String(s.cleanup_space_threshold_enabled)==="true",set:l=>{s.cleanup_space_threshold_enabled=l?"true":"false"}}),M=r({get:()=>Number(s.cleanup_space_threshold_percent??90),set:l=>{s.cleanup_space_threshold_percent=l}}),W=r({get:()=>Number(s.cleanup_space_threshold_delete_percent??10),set:l=>{s.cleanup_space_threshold_delete_percent=l}}),$=r({get:()=>String(s.save_reuse_enabled)!=="false",set:l=>{s.save_reuse_enabled=l?"true":"false"}}),c=y([]),w=y("");function L(){try{const l=String(s.cleanup_whitelist_dirs||"[]");c.value=JSON.parse(l)}catch{c.value=[]}}function F(){const l=w.value.trim();if(l){if(c.value.includes(l)){d.warning("该目录已在白名单中");return}c.value.push(l),w.value=""}}function P(l){c.value.splice(l,1)}const I=r({get:()=>Number(s.cleanup_verify_interval??30),set:l=>{s.cleanup_verify_interval=l}}),J=r({get:()=>Number(s.storage_refresh_interval??180),set:l=>{s.storage_refresh_interval=l}});async function O(){try{const l=await te();for(const e of l)s[e.key]=e.value;L()}catch(l){console.error("加载清理配置失败",l)}}async function A(){var l,e;z.value=!0;try{const i=["cleanup_enabled","cleanup_file_retention_days","cleanup_log_retention_days","cleanup_empty_trash","cleanup_space_threshold_enabled","cleanup_space_threshold_percent","cleanup_space_threshold_delete_percent","save_reuse_enabled","cleanup_verify_interval","storage_refresh_interval"].map(V=>({key:V,value:String(s[V]??"")}));i.push({key:"cleanup_whitelist_dirs",value:JSON.stringify(c.value)}),await se(i),d.success("清理配置已保存")}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"保存失败")}finally{z.value=!1}}async function q(){var l,e;h.value=!0;try{const n=await ne();n.success?d.success(n.message):d.warning(n.message),await O()}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清理失败")}finally{h.value=!1}}async function G(){var l,e;b.value=!0;try{const n=await oe();n.success?d.success(n.message):d.warning(n.message)}catch(n){d.error(((e=(l=n.response)==null?void 0:l.data)==null?void 0:e.error)||"清空回收站失败")}finally{b.value=!1}}return Y(()=>{O()}),(l,e)=>{const n=p("el-switch"),i=p("el-form-item"),V=p("el-tag"),H=p("el-input"),C=p("el-button"),S=p("el-form"),k=p("el-input-number"),j=p("el-slider"),Q=p("el-card");return _(),f("div",ie,[a(Q,{class:"config-card"},{header:u(()=>[...e[11]||(e[11]=[t("span",null,"🧹 存储清理",-1)])]),default:u(()=>[t("div",re,[t("div",pe,[e[15]||(e[15]=t("div",{class:"cleanup-group-label"},"⏱ 基础清理策略",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"自动清理"},{default:u(()=>[t("div",de,[a(n,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=o=>U.value=o),size:"small"},null,8,["modelValue"]),e[12]||(e[12]=t("span",{class:"cleanup-hint"},"每天自动检查一次,删除过期日志、移入回收站文件",-1))])]),_:1}),a(i,{label:"清空回收站"},{default:u(()=>[t("div",ce,[a(n,{modelValue:E.value,"onUpdate:modelValue":e[1]||(e[1]=o=>E.value=o),size:"small"},null,8,["modelValue"]),e[13]||(e[13]=t("span",{class:"cleanup-hint"},"清理时一并清空各网盘回收站",-1))])]),_:1}),a(i,{label:"白名单目录"},{default:u(()=>[t("div",_e,[c.value.length?(_(),f("div",me,[(_(!0),f(ee,null,le(c.value,(o,K)=>(_(),N(V,{key:K,closable:"",size:"small",onClose:De=>P(K)},{default:u(()=>[m(v(o),1)]),_:2},1032,["onClose"]))),128))])):g("",!0),t("div",fe,[a(H,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=o=>w.value=o),placeholder:"输入目录名",size:"small",style:{width:"160px"},onKeyup:ae(F,["enter"])},null,8,["modelValue"]),a(C,{type:"primary",size:"small",onClick:F},{default:u(()=>[...e[14]||(e[14]=[m("添加",-1)])]),_:1})])])]),_:1})]),_:1})]),t("div",ve,[e[20]||(e[20]=t("div",{class:"cleanup-group-label"},"📦 保留设置",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"文件保留"},{default:u(()=>[t("div",ge,[a(k,{modelValue:R.value,"onUpdate:modelValue":e[3]||(e[3]=o=>R.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[16]||(e[16]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"日志保留"},{default:u(()=>[t("div",ye,[a(k,{modelValue:B.value,"onUpdate:modelValue":e[4]||(e[4]=o=>B.value=o),min:1,max:365,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[17]||(e[17]=t("span",null,"天",-1))])]),_:1}),a(i,{label:"Cookie检测"},{default:u(()=>[t("div",he,[a(k,{modelValue:I.value,"onUpdate:modelValue":e[5]||(e[5]=o=>I.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[18]||(e[18]=t("span",null,"分钟",-1))])]),_:1}),a(i,{label:"空间校准"},{default:u(()=>[t("div",be,[a(k,{modelValue:J.value,"onUpdate:modelValue":e[6]||(e[6]=o=>J.value=o),min:5,max:1440,step:5,style:{width:"100px"},size:"small"},null,8,["modelValue"]),e[19]||(e[19]=t("span",null,"分钟",-1))])]),_:1})]),_:1})]),t("div",xe,[e[22]||(e[22]=t("div",{class:"cleanup-group-label"},"📊 空间阈值自动清理",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"启用"},{default:u(()=>[a(n,{modelValue:x.value,"onUpdate:modelValue":e[7]||(e[7]=o=>x.value=o),size:"small"},null,8,["modelValue"]),e[21]||(e[21]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"已用空间超过阈值时,按比例删除最旧的转存文件",-1))]),_:1}),x.value?(_(),N(i,{key:0,label:"使用阈值"},{default:u(()=>[a(j,{modelValue:M.value,"onUpdate:modelValue":e[8]||(e[8]=o=>M.value=o),min:50,max:99,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0),x.value?(_(),N(i,{key:1,label:"删除比例"},{default:u(()=>[a(j,{modelValue:W.value,"onUpdate:modelValue":e[9]||(e[9]=o=>W.value=o),min:5,max:50,step:5,style:{width:"140px"},"show-input":"",size:"small"},null,8,["modelValue"])]),_:1})):g("",!0)]),_:1})]),t("div",we,[e[24]||(e[24]=t("div",{class:"cleanup-group-label"},"🔗 分享链接复用",-1)),a(S,{"label-width":"120px","label-position":"left",size:"small"},{default:u(()=>[a(i,{label:"复用"},{default:u(()=>[a(n,{modelValue:$.value,"onUpdate:modelValue":e[10]||(e[10]=o=>$.value=o),size:"small"},null,8,["modelValue"]),e[23]||(e[23]=t("span",{class:"cleanup-hint",style:{"margin-left":"8px"}},"相同原始链接不再重复转存,复用已有分享链接(会自动验证原链接有效性;60秒内重复请求直接返回已有链接)",-1))]),_:1})]),_:1})])]),t("div",Ve,[t("div",Ce,[a(C,{type:"primary",loading:z.value,onClick:A},{default:u(()=>[...e[25]||(e[25]=[m("💾 保存清理配置",-1)])]),_:1},8,["loading"]),a(C,{type:"danger",loading:h.value,onClick:q},{default:u(()=>[m(v(h.value?"清理中...":"🗑️ 立即清理"),1)]),_:1},8,["loading"]),a(C,{type:"warning",loading:b.value,onClick:G},{default:u(()=>[m(v(b.value?"清空中...":"🧹 清空回收站"),1)]),_:1},8,["loading"])]),D.value?(_(),f("div",Se,[m(" ⏰ 上次清理:"+v(D.value)+" ",1),T.value?(_(),f("span",ke,"📊 "+v(T.value),1)):g("",!0)])):g("",!0)])]),_:1})])}}}),Ee=ue(ze,[["__scopeId","data-v-dfd5abc7"]]);export{Ee as default}; diff --git a/source_clean/frontend/assets/CloudBadge-BhaCxKyo.js b/source_clean/frontend/assets/CloudBadge-BQbzCPM-.js similarity index 78% rename from source_clean/frontend/assets/CloudBadge-BhaCxKyo.js rename to source_clean/frontend/assets/CloudBadge-BQbzCPM-.js index 125f241..d32c138 100644 --- a/source_clean/frontend/assets/CloudBadge-BhaCxKyo.js +++ b/source_clean/frontend/assets/CloudBadge-BQbzCPM-.js @@ -1 +1 @@ -import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d as l,a as t,c,p as d,k as o,e as r,l as u,t as m}from"./index-DLC2deeT.js";import{_}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const p=["src"],i=l({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(C,y)=>(t(),c("span",{class:"cloud-badge",style:d({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(t(),c("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,p)):r("",!0),u(" "+m(o(n)[e.cloud_type]),1)],4))}}),L=_(i,[["__scopeId","data-v-9106805f"]]);export{L as C}; +import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d as l,a as t,c,p as d,k as o,e as r,l as u,t as m}from"./index-Bsy0LTRb.js";import{_}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const p=["src"],i=l({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(C,y)=>(t(),c("span",{class:"cloud-badge",style:d({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(t(),c("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,p)):r("",!0),u(" "+m(o(n)[e.cloud_type]),1)],4))}}),L=_(i,[["__scopeId","data-v-9106805f"]]);export{L as C}; diff --git a/source_clean/frontend/assets/CloudConfig-BaEpQpQM.js b/source_clean/frontend/assets/CloudConfig-DIBXz7ib.js similarity index 99% rename from source_clean/frontend/assets/CloudConfig-BaEpQpQM.js rename to source_clean/frontend/assets/CloudConfig-DIBXz7ib.js index 9412161..1285465 100644 --- a/source_clean/frontend/assets/CloudConfig-BaEpQpQM.js +++ b/source_clean/frontend/assets/CloudConfig-DIBXz7ib.js @@ -1,4 +1,4 @@ -import{d as ke,o as L,m as ve,E as _,a as c,c as k,f as n,w as a,b as r,h as C,j as p,i as be,F as R,r as K,t as v,y as g,l as d,e as A,k as Ce,M as he,p as xe,n as H,K as Be,L as Te,v as h}from"./index-DLC2deeT.js";import{a as x}from"./index-Bn7NwETH.js";import{c as we,k as Fe,h as Ne,l as G,t as Ve,u as P,m as ze,n as Se,o as $e,_ as Ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import{C as De}from"./CloudBadge-BhaCxKyo.js";const Ie={class:"cloud-config"},Me={class:"cloud-toggle-grid"},Oe=["src"],qe={class:"cloud-label"},Ee={class:"toolbar"},Le={key:0,class:"nickname-text"},Re={key:0,class:"promotion-text"},Ke={key:0,class:"uid-cell"},Ae={key:0,class:"verifying"},He={key:0,class:"storage-cell"},Ge={class:"storage-bar-wrap"},Pe={class:"storage-text"},je={class:"storage-used"},Je={class:"storage-total"},Qe={class:"storage-free"},We={key:0,class:"save-count"},Xe={style:{"line-height":"1.6"}},Ye={class:"cookie-tips-header"},Ze={class:"cookie-tips-title"},et=["innerHTML"],tt=ke({__name:"CloudConfig",setup(ot){const z=C([]),D=C(),F=C([]),B=C(!1),T=C(!1),b=C(null),l=be({cloud_type:"",nickname:"",promotion_account:"",is_transfer_enabled:!1,cookie:"",_verifying:!1,_storageUsed:"",_storageTotal:""}),j=h(()=>({cloud_type:[{required:!0,message:"请选择网盘类型",trigger:"change"}],nickname:[{required:!1,message:"请填写昵称(区分多个同类型网盘)",trigger:"blur"}],promotion_account:[{required:!0,message:"请填写推广平台及账号",trigger:"blur"}]})),J=h(()=>Object.entries(x)),Q=h(()=>{if(!l.cloud_type)return"请先选择网盘类型";const t=l.cloud_type;return t==="quark"||t==="baidu"?`请输入 ${x[t]||t} 的完整 Cookie`:b.value?"留空则保持原有":"输入完整 Cookie"}),W=h(()=>x[l.cloud_type]||l.cloud_type||""),X=h(()=>{const t=l.cloud_type;return t?{quark:`
  • 在电脑上打开 pan.quark.cn 并登录你的夸克账号
  • +import{d as ke,o as L,m as ve,E as _,a as c,c as k,f as n,w as a,b as r,h as C,j as p,i as be,F as R,r as K,t as v,y as g,l as d,e as A,k as Ce,M as he,p as xe,n as H,K as Be,L as Te,v as h}from"./index-Bsy0LTRb.js";import{a as x}from"./index-Bn7NwETH.js";import{c as we,k as Fe,h as Ne,l as G,t as Ve,u as P,m as ze,n as Se,o as $e,_ as Ue}from"./_plugin-vue_export-helper-1Z-znrfZ.js";import{C as De}from"./CloudBadge-BQbzCPM-.js";const Ie={class:"cloud-config"},Me={class:"cloud-toggle-grid"},Oe=["src"],qe={class:"cloud-label"},Ee={class:"toolbar"},Le={key:0,class:"nickname-text"},Re={key:0,class:"promotion-text"},Ke={key:0,class:"uid-cell"},Ae={key:0,class:"verifying"},He={key:0,class:"storage-cell"},Ge={class:"storage-bar-wrap"},Pe={class:"storage-text"},je={class:"storage-used"},Je={class:"storage-total"},Qe={class:"storage-free"},We={key:0,class:"save-count"},Xe={style:{"line-height":"1.6"}},Ye={class:"cookie-tips-header"},Ze={class:"cookie-tips-title"},et=["innerHTML"],tt=ke({__name:"CloudConfig",setup(ot){const z=C([]),D=C(),F=C([]),B=C(!1),T=C(!1),b=C(null),l=be({cloud_type:"",nickname:"",promotion_account:"",is_transfer_enabled:!1,cookie:"",_verifying:!1,_storageUsed:"",_storageTotal:""}),j=h(()=>({cloud_type:[{required:!0,message:"请选择网盘类型",trigger:"change"}],nickname:[{required:!1,message:"请填写昵称(区分多个同类型网盘)",trigger:"blur"}],promotion_account:[{required:!0,message:"请填写推广平台及账号",trigger:"blur"}]})),J=h(()=>Object.entries(x)),Q=h(()=>{if(!l.cloud_type)return"请先选择网盘类型";const t=l.cloud_type;return t==="quark"||t==="baidu"?`请输入 ${x[t]||t} 的完整 Cookie`:b.value?"留空则保持原有":"输入完整 Cookie"}),W=h(()=>x[l.cloud_type]||l.cloud_type||""),X=h(()=>{const t=l.cloud_type;return t?{quark:`
  • 在电脑上打开 pan.quark.cn 并登录你的夸克账号
  • F12 打开开发者工具 → 切换到 网络 (Network) 选项卡
  • 刷新页面,在请求列表中点击任意一个请求(如 account/info
  • 在右侧 请求头 (Request Headers) 中找到 Cookie 字段
  • diff --git a/source_clean/frontend/assets/HomePage-DxF2bBIi.js b/source_clean/frontend/assets/HomePage-v6ufhhLl.js similarity index 98% rename from source_clean/frontend/assets/HomePage-DxF2bBIi.js rename to source_clean/frontend/assets/HomePage-v6ufhhLl.js index cd92cbb..bc53ff5 100644 --- a/source_clean/frontend/assets/HomePage-DxF2bBIi.js +++ b/source_clean/frontend/assets/HomePage-v6ufhhLl.js @@ -1 +1 @@ -import{d as Q,o as G,a as n,c as a,b as o,F as w,t as c,e as h,f as p,w as f,g as W,r as D,h as l,i as M,j as x,u as Y,k as J,s as X,l as R,n as I}from"./index-DLC2deeT.js";import{g as Z,a as ee,_ as te}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const se={class:"home-page"},oe={class:"hero-section"},ne=["src","alt"],ae={key:1,class:"logo-text"},ie={class:"search-box"},ce={key:1,class:"quote-section"},le={class:"quote-text"},re={class:"quote-author"},ue={class:"content-section"},de={key:0,class:"rankings-grid"},_e={class:"panel-header"},he={class:"panel-title"},pe={class:"panel-tabs"},ve=["onClick"],ge=["onClick"],fe={class:"panel-body"},me=["onClick"],ye={class:"rank-name"},ke={class:"rank-cnt"},Ce=["onClick"],be={class:"panel-footer"},we={key:0},xe={key:1},Ie={key:2},qe={key:3},Se={class:"footer-time"},Ae={key:0,class:"site-footer"},Te={class:"footer-inner"},Ne={class:"footer-actions"},E=8,Ve=Q({__name:"HomePage",setup($e){const q=Y(),m=l(""),u=l([]),d=M({}),_=M({}),v=l(""),y=l(""),k=l(""),S=l(!1),C=l(""),A=l(""),T=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","三人行,必有我师焉。","学而不思则罔,思而不学则殆。","博学之,审问之,慎思之,明辨之,笃行之。","千里之行,始于足下。","不积跬步,无以至千里。","知之为知之,不知为不知,是知也。","工欲善其事,必先利其器。","玉不琢,不成器;人不学,不知道。","学以致用,知行合一。","学海无涯,勤作舟。","书山有路,勤为径。","宝剑锋从磨砺出,梅花香自苦寒来。","锲而不舍,金石可镂。","业精于勤,荒于嬉。","读书破万卷,下笔如有神。","路漫漫其修远兮,吾将上下而求索。","采菊东篱下,悠然见南山。","海内存知己,天涯若比邻。","长风破浪会有时,直挂云帆济沧海。","会当凌绝顶,一览众山小。","山重水复疑无路,柳暗花明又一村。"],N=l(""),F={movie:"🎬",western_movie:"🎥",western_tv:"🌍",donghua:"🐉",global_anime:"🌐",tv:"📺",niche:"💎",hotsite:"🏆"};function L(e){return F[e]||"📋"}function O(e){const t=[];if(e.rating&&t.push(`⭐${e.rating}`),e.searchCount>0){const i=e.searchCount;i>=1e8?t.push(`${(i/1e8).toFixed(1)}亿`):i>=1e4?t.push(`${(i/1e4).toFixed(0)}万`):t.push(String(i))}return t.join(" ")||""}function V(e){return(_[e.category]||"hot")==="hot"?e.hot||[]:e.newest||[]}function U(e){const t=V(e);return d[e.category]?t:t.slice(0,E)}function H(e){return V(e).length>E&&!d[e.category]}function P(e){d[e]=!0}function $(e,t){_[e]=t,d[e]=!1}function j(){window.open("/disclaimer/","_blank")}G(async()=>{const e=T[Math.floor(Math.random()*T.length)];C.value=e,A.value="古籍经典";try{const[t,i]=await Promise.all([Z(),ee()]);t.fetchedAt?(N.value=t.fetchedAt,u.value=t.categories||[]):u.value=Array.isArray(t)?t:[];for(const g of u.value)_[g.category]="hot",d[g.category]=!1;i.site_logo&&(v.value=i.site_logo),i.site_name&&(y.value=i.site_name),i.site_disclaimer&&(k.value=i.site_disclaimer),S.value=!0}catch(t){console.error("加载首页数据失败",t)}});function z(){const e=m.value.trim();e&&q.push("/search?q="+encodeURIComponent(e))}function K(e){q.push("/search?q="+encodeURIComponent(e))}return(e,t)=>{const i=x("el-icon"),g=x("el-input"),B=x("el-button");return n(),a("div",se,[o("div",oe,[S.value?(n(),a(w,{key:0},[v.value?(n(),a("img",{key:0,src:v.value,alt:y.value||"CloudSearch",class:"logo-img",onError:t[0]||(t[0]=s=>{s.target.style.display="none",v.value=""})},null,40,ne)):(n(),a("div",ae,c(y.value||"CloudSearch"),1))],64)):h("",!0),o("div",ie,[p(g,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=s=>m.value=s),placeholder:"搜索网盘资源,或粘贴视频/网盘链接...",size:"large",clearable:"",onKeyup:W(z,["enter"])},{prefix:f(()=>[p(i,null,{default:f(()=>[p(J(X))]),_:1})]),_:1},8,["modelValue"]),p(B,{type:"primary",size:"large",onClick:z,class:"search-btn"},{default:f(()=>[...t[2]||(t[2]=[R(" 搜 索 ",-1)])]),_:1})]),C.value?(n(),a("div",ce,[o("span",le,"「 "+c(C.value)+" 」",1),o("span",re,"---"+c(A.value),1)])):h("",!0)]),o("div",ue,[u.value.length>0?(n(),a("div",de,[(n(!0),a(w,null,D(u.value,s=>(n(),a("div",{key:s.category,class:"rank-panel"},[o("div",_e,[o("span",he,c(L(s.category))+" "+c(s.label),1),o("div",pe,[o("span",{class:I(["panel-tab",{active:_[s.category]==="hot"}]),onClick:r=>$(s.category,"hot")},"热榜",10,ve),o("span",{class:I(["panel-tab",{active:_[s.category]==="newest"}]),onClick:r=>$(s.category,"newest")},"最新",10,ge)])]),o("div",fe,[(n(!0),a(w,null,D(U(s),(r,b)=>(n(),a("div",{key:s.category+"-"+b,class:"rank-item",onClick:ze=>K(r.keyword)},[o("span",{class:I(["rank-idx",{"top-three":b<3}])},c(b+1),3),o("span",ye,c(r.keyword),1),o("span",ke,c(O(r)),1)],8,me))),128)),H(s)?(n(),a("div",{key:0,class:"rank-expand",onClick:r=>P(s.category)}," 展开全部 ▼ ",8,Ce)):h("",!0)]),o("div",be,[s.category==="hotsite"?(n(),a("span",we,"基于本站搜索数据")):s.category==="donghua"||s.category==="global_anime"?(n(),a("span",xe,"数据来源:Bilibili")):s.category==="movie"||s.category==="tv"?(n(),a("span",Ie,"数据来源:百度")):(n(),a("span",qe,"数据来源:TMDB")),o("span",Se,c(N.value),1)])]))),128))])):h("",!0)]),k.value?(n(),a("div",Ae,[o("div",Te,c(k.value),1),o("div",Ne,[p(B,{class:"footer-disclaimer-btn",size:"small",onClick:j},{default:f(()=>[...t[3]||(t[3]=[R("📜 免责声明",-1)])]),_:1})])])):h("",!0)])}}}),Me=te(Ve,[["__scopeId","data-v-c48c836b"]]);export{Me as default}; +import{d as Q,o as G,a as n,c as a,b as o,F as w,t as c,e as h,f as p,w as f,g as W,r as D,h as l,i as M,j as x,u as Y,k as J,s as X,l as R,n as I}from"./index-Bsy0LTRb.js";import{g as Z,a as ee,_ as te}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const se={class:"home-page"},oe={class:"hero-section"},ne=["src","alt"],ae={key:1,class:"logo-text"},ie={class:"search-box"},ce={key:1,class:"quote-section"},le={class:"quote-text"},re={class:"quote-author"},ue={class:"content-section"},de={key:0,class:"rankings-grid"},_e={class:"panel-header"},he={class:"panel-title"},pe={class:"panel-tabs"},ve=["onClick"],ge=["onClick"],fe={class:"panel-body"},me=["onClick"],ye={class:"rank-name"},ke={class:"rank-cnt"},Ce=["onClick"],be={class:"panel-footer"},we={key:0},xe={key:1},Ie={key:2},qe={key:3},Se={class:"footer-time"},Ae={key:0,class:"site-footer"},Te={class:"footer-inner"},Ne={class:"footer-actions"},E=8,Ve=Q({__name:"HomePage",setup($e){const q=Y(),m=l(""),u=l([]),d=M({}),_=M({}),v=l(""),y=l(""),k=l(""),S=l(!1),C=l(""),A=l(""),T=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","三人行,必有我师焉。","学而不思则罔,思而不学则殆。","博学之,审问之,慎思之,明辨之,笃行之。","千里之行,始于足下。","不积跬步,无以至千里。","知之为知之,不知为不知,是知也。","工欲善其事,必先利其器。","玉不琢,不成器;人不学,不知道。","学以致用,知行合一。","学海无涯,勤作舟。","书山有路,勤为径。","宝剑锋从磨砺出,梅花香自苦寒来。","锲而不舍,金石可镂。","业精于勤,荒于嬉。","读书破万卷,下笔如有神。","路漫漫其修远兮,吾将上下而求索。","采菊东篱下,悠然见南山。","海内存知己,天涯若比邻。","长风破浪会有时,直挂云帆济沧海。","会当凌绝顶,一览众山小。","山重水复疑无路,柳暗花明又一村。"],N=l(""),F={movie:"🎬",western_movie:"🎥",western_tv:"🌍",donghua:"🐉",global_anime:"🌐",tv:"📺",niche:"💎",hotsite:"🏆"};function L(e){return F[e]||"📋"}function O(e){const t=[];if(e.rating&&t.push(`⭐${e.rating}`),e.searchCount>0){const i=e.searchCount;i>=1e8?t.push(`${(i/1e8).toFixed(1)}亿`):i>=1e4?t.push(`${(i/1e4).toFixed(0)}万`):t.push(String(i))}return t.join(" ")||""}function V(e){return(_[e.category]||"hot")==="hot"?e.hot||[]:e.newest||[]}function U(e){const t=V(e);return d[e.category]?t:t.slice(0,E)}function H(e){return V(e).length>E&&!d[e.category]}function P(e){d[e]=!0}function $(e,t){_[e]=t,d[e]=!1}function j(){window.open("/disclaimer/","_blank")}G(async()=>{const e=T[Math.floor(Math.random()*T.length)];C.value=e,A.value="古籍经典";try{const[t,i]=await Promise.all([Z(),ee()]);t.fetchedAt?(N.value=t.fetchedAt,u.value=t.categories||[]):u.value=Array.isArray(t)?t:[];for(const g of u.value)_[g.category]="hot",d[g.category]=!1;i.site_logo&&(v.value=i.site_logo),i.site_name&&(y.value=i.site_name),i.site_disclaimer&&(k.value=i.site_disclaimer),S.value=!0}catch(t){console.error("加载首页数据失败",t)}});function z(){const e=m.value.trim();e&&q.push("/search?q="+encodeURIComponent(e))}function K(e){q.push("/search?q="+encodeURIComponent(e))}return(e,t)=>{const i=x("el-icon"),g=x("el-input"),B=x("el-button");return n(),a("div",se,[o("div",oe,[S.value?(n(),a(w,{key:0},[v.value?(n(),a("img",{key:0,src:v.value,alt:y.value||"CloudSearch",class:"logo-img",onError:t[0]||(t[0]=s=>{s.target.style.display="none",v.value=""})},null,40,ne)):(n(),a("div",ae,c(y.value||"CloudSearch"),1))],64)):h("",!0),o("div",ie,[p(g,{modelValue:m.value,"onUpdate:modelValue":t[1]||(t[1]=s=>m.value=s),placeholder:"搜索网盘资源,或粘贴视频/网盘链接...",size:"large",clearable:"",onKeyup:W(z,["enter"])},{prefix:f(()=>[p(i,null,{default:f(()=>[p(J(X))]),_:1})]),_:1},8,["modelValue"]),p(B,{type:"primary",size:"large",onClick:z,class:"search-btn"},{default:f(()=>[...t[2]||(t[2]=[R(" 搜 索 ",-1)])]),_:1})]),C.value?(n(),a("div",ce,[o("span",le,"「 "+c(C.value)+" 」",1),o("span",re,"---"+c(A.value),1)])):h("",!0)]),o("div",ue,[u.value.length>0?(n(),a("div",de,[(n(!0),a(w,null,D(u.value,s=>(n(),a("div",{key:s.category,class:"rank-panel"},[o("div",_e,[o("span",he,c(L(s.category))+" "+c(s.label),1),o("div",pe,[o("span",{class:I(["panel-tab",{active:_[s.category]==="hot"}]),onClick:r=>$(s.category,"hot")},"热榜",10,ve),o("span",{class:I(["panel-tab",{active:_[s.category]==="newest"}]),onClick:r=>$(s.category,"newest")},"最新",10,ge)])]),o("div",fe,[(n(!0),a(w,null,D(U(s),(r,b)=>(n(),a("div",{key:s.category+"-"+b,class:"rank-item",onClick:ze=>K(r.keyword)},[o("span",{class:I(["rank-idx",{"top-three":b<3}])},c(b+1),3),o("span",ye,c(r.keyword),1),o("span",ke,c(O(r)),1)],8,me))),128)),H(s)?(n(),a("div",{key:0,class:"rank-expand",onClick:r=>P(s.category)}," 展开全部 ▼ ",8,Ce)):h("",!0)]),o("div",be,[s.category==="hotsite"?(n(),a("span",we,"基于本站搜索数据")):s.category==="donghua"||s.category==="global_anime"?(n(),a("span",xe,"数据来源:Bilibili")):s.category==="movie"||s.category==="tv"?(n(),a("span",Ie,"数据来源:百度")):(n(),a("span",qe,"数据来源:TMDB")),o("span",Se,c(N.value),1)])]))),128))])):h("",!0)]),k.value?(n(),a("div",Ae,[o("div",Te,c(k.value),1),o("div",Ne,[p(B,{class:"footer-disclaimer-btn",size:"small",onClick:j},{default:f(()=>[...t[3]||(t[3]=[R("📜 免责声明",-1)])]),_:1})])])):h("",!0)])}}}),Me=te(Ve,[["__scopeId","data-v-c48c836b"]]);export{Me as default}; diff --git a/source_clean/frontend/assets/ResultDetail-CxVMp_nk.js b/source_clean/frontend/assets/ResultDetail-B6n5vSIJ.js similarity index 98% rename from source_clean/frontend/assets/ResultDetail-CxVMp_nk.js rename to source_clean/frontend/assets/ResultDetail-B6n5vSIJ.js index 5424135..ab26f3c 100644 --- a/source_clean/frontend/assets/ResultDetail-CxVMp_nk.js +++ b/source_clean/frontend/assets/ResultDetail-B6n5vSIJ.js @@ -1 +1 @@ -import{d as U,h as i,o as N,a,c,f as o,w as n,F as j,r as H,y as w,k as G,j as f,b as l,t as r,e as g,z as J,l as p,E as D}from"./index-DLC2deeT.js";import{C as K}from"./CloudBadge-BhaCxKyo.js";import{a as Q}from"./index-Bn7NwETH.js";import{h as W,_ as T,q as X,f as Y,e as Z}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ee={class:"cloud-select"},le=U({__name:"CloudSelect",props:{modelValue:{}},emits:["select","update:modelValue"],setup(R,{emit:E}){const V=R,t=E,s=i(V.modelValue),C=i([]);N(async()=>{try{C.value=await W()}catch(v){console.error("获取网盘配置失败",v)}});function m(v){t("select",v),t("update:modelValue",v)}return(v,y)=>{const b=f("el-option"),h=f("el-select");return a(),c("div",ee,[o(h,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=_=>s.value=_),placeholder:"选择目标网盘",onChange:m},{default:n(()=>[(a(!0),c(j,null,H(C.value,_=>(a(),w(b,{key:_.cloud_type,label:_.nickname||G(Q)[_.cloud_type],value:_.cloud_type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])}}}),te=T(le,[["__scopeId","data-v-098423df"]]),se={class:"result-detail-page"},ae={class:"detail-container"},oe={key:0,class:"loading-state"},ne={key:1,class:"detail-card"},ie={class:"detail-header"},ue={class:"detail-cover"},de=["src","alt"],re={class:"detail-info"},ce={class:"detail-meta"},ve={key:0,class:"detail-desc"},_e={class:"detail-actions"},pe={key:2,class:"detail-card"},fe={class:"detail-video"},me={class:"video-preview"},ye=["src","alt"],ge={class:"video-info"},he={key:0,class:"video-author"},ke={class:"video-platform"},Ve={key:1,class:"detail-desc"},Ce={class:"detail-actions"},we={key:0,class:"video-player-wrapper"},be=["src"],Se={class:"save-dialog-content"},xe={class:"save-file-name"},De={class:"result-dialog-content"},Ee={class:"share-link-box"},Le={class:"share-link-row"},Re=U({__name:"ResultDetail",setup(R){const E=J(),V=i(!1),t=i(null),s=i(null),C=i(!1),m=i(!1),v=i(!1),y=i(""),b=i(!1),h=i(!1),_=i(null),S=i("");N(async()=>{const u=E.params.id;if(u){V.value=!0;try{const e=await X(u);e.intent==="SEARCH"&&e.results.length>0?t.value=e.results[0]:e.intent==="VIDEO_PARSE"&&e.results.length>0&&(s.value=e.results[0])}catch(e){console.error("获取详情失败",e)}finally{V.value=!1}}});function B(){b.value=!!s.value,m.value=!0}function $(){C.value=!0}function A(u){y.value=u}async function I(){if(!y.value){D.warning("请选择目标网盘");return}v.value=!0;try{let u;if(b.value&&s.value)u=await Y({video_url:s.value.video_url,title:s.value.title,target_cloud:y.value});else if(t.value)u=await Z({type:"search",source:t.value,target_cloud:y.value});else return;_.value=u,S.value=u.share_url,m.value=!1,h.value=!0}catch(u){console.error("保存失败",u),D.error("保存失败")}finally{v.value=!1}}async function q(){try{await navigator.clipboard.writeText(S.value),D.success("链接已复制到剪贴板")}catch{D.warning("复制失败,请手动复制")}}return(u,e)=>{const F=f("el-skeleton"),L=f("el-tag"),k=f("el-button"),M=f("el-empty"),z=f("el-dialog"),O=f("el-alert"),P=f("el-input");return a(),c("div",se,[l("div",ae,[V.value?(a(),c("div",oe,[o(F,{rows:6,animated:""})])):t.value?(a(),c("div",ne,[l("div",ie,[l("div",ue,[l("img",{src:t.value.cover,alt:t.value.title},null,8,de),o(K,{cloud_type:t.value.cloud_type},null,8,["cloud_type"])]),l("div",re,[l("h1",null,r(t.value.title),1),l("div",ce,[t.value.file_size?(a(),w(L,{key:0},{default:n(()=>[p("📦 "+r(t.value.file_size),1)]),_:1})):g("",!0),t.value.update_time?(a(),w(L,{key:1},{default:n(()=>[p("🕐 "+r(t.value.update_time),1)]),_:1})):g("",!0),t.value.source?(a(),w(L,{key:2},{default:n(()=>[p("📂 "+r(t.value.source),1)]),_:1})):g("",!0)]),t.value.description?(a(),c("p",ve,r(t.value.description),1)):g("",!0)])]),l("div",_e,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[5]||(e[5]=[p(" 📥 保存到网盘 ",-1)])]),_:1})])])):s.value?(a(),c("div",pe,[l("div",fe,[l("div",me,[l("img",{src:s.value.cover,alt:s.value.title},null,8,ye),l("div",{class:"play-overlay",onClick:$},[...e[6]||(e[6]=[l("div",{class:"play-btn"},"▶ 播放",-1)])])]),l("div",ge,[l("h1",null,r(s.value.title),1),s.value.author?(a(),c("p",he,"👤 "+r(s.value.author),1)):g("",!0),l("p",ke,"📺 "+r(s.value.platform),1),s.value.description?(a(),c("p",Ve,r(s.value.description),1)):g("",!0)])]),l("div",Ce,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[7]||(e[7]=[p(" 📥 保存到云盘 ",-1)])]),_:1})]),C.value?(a(),c("div",we,[l("video",{src:s.value.video_url,controls:"",autoplay:"",class:"video-player"},null,8,be)])):g("",!0)])):(a(),w(M,{key:3,description:"未找到该资源"}))]),o(z,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=d=>m.value=d),title:"保存到网盘",width:"420px"},{footer:n(()=>[o(k,{onClick:e[0]||(e[0]=d=>m.value=!1)},{default:n(()=>[...e[8]||(e[8]=[p("取消",-1)])]),_:1}),o(k,{type:"primary",loading:v.value,onClick:I},{default:n(()=>[...e[9]||(e[9]=[p("确认保存",-1)])]),_:1},8,["loading"])]),default:n(()=>{var d,x;return[l("div",Se,[l("p",xe,"📄 "+r(((d=t.value)==null?void 0:d.title)||((x=s.value)==null?void 0:x.title)),1),o(te,{onSelect:A})])]}),_:1},8,["modelValue"]),o(z,{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=d=>h.value=d),title:"保存成功",width:"420px"},{footer:n(()=>[o(k,{type:"primary",onClick:e[3]||(e[3]=d=>h.value=!1)},{default:n(()=>[...e[12]||(e[12]=[p("关闭",-1)])]),_:1})]),default:n(()=>{var d;return[l("div",De,[o(O,{type:"success",title:((d=_.value)==null?void 0:d.message)||"保存成功","show-icon":"",closable:!1},null,8,["title"]),l("div",Ee,[e[11]||(e[11]=l("p",{class:"share-label"},"分享链接:",-1)),l("div",Le,[o(P,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=x=>S.value=x),readonly:""},null,8,["modelValue"]),o(k,{onClick:q},{default:n(()=>[...e[10]||(e[10]=[p("复制",-1)])]),_:1})])])])]}),_:1},8,["modelValue"])])}}}),Te=T(Re,[["__scopeId","data-v-755e2105"]]);export{Te as default}; +import{d as U,h as i,o as N,a,c,f as o,w as n,F as j,r as H,y as w,k as G,j as f,b as l,t as r,e as g,z as J,l as p,E as D}from"./index-Bsy0LTRb.js";import{C as K}from"./CloudBadge-BQbzCPM-.js";import{a as Q}from"./index-Bn7NwETH.js";import{h as W,_ as T,q as X,f as Y,e as Z}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ee={class:"cloud-select"},le=U({__name:"CloudSelect",props:{modelValue:{}},emits:["select","update:modelValue"],setup(R,{emit:E}){const V=R,t=E,s=i(V.modelValue),C=i([]);N(async()=>{try{C.value=await W()}catch(v){console.error("获取网盘配置失败",v)}});function m(v){t("select",v),t("update:modelValue",v)}return(v,y)=>{const b=f("el-option"),h=f("el-select");return a(),c("div",ee,[o(h,{modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=_=>s.value=_),placeholder:"选择目标网盘",onChange:m},{default:n(()=>[(a(!0),c(j,null,H(C.value,_=>(a(),w(b,{key:_.cloud_type,label:_.nickname||G(Q)[_.cloud_type],value:_.cloud_type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])}}}),te=T(le,[["__scopeId","data-v-098423df"]]),se={class:"result-detail-page"},ae={class:"detail-container"},oe={key:0,class:"loading-state"},ne={key:1,class:"detail-card"},ie={class:"detail-header"},ue={class:"detail-cover"},de=["src","alt"],re={class:"detail-info"},ce={class:"detail-meta"},ve={key:0,class:"detail-desc"},_e={class:"detail-actions"},pe={key:2,class:"detail-card"},fe={class:"detail-video"},me={class:"video-preview"},ye=["src","alt"],ge={class:"video-info"},he={key:0,class:"video-author"},ke={class:"video-platform"},Ve={key:1,class:"detail-desc"},Ce={class:"detail-actions"},we={key:0,class:"video-player-wrapper"},be=["src"],Se={class:"save-dialog-content"},xe={class:"save-file-name"},De={class:"result-dialog-content"},Ee={class:"share-link-box"},Le={class:"share-link-row"},Re=U({__name:"ResultDetail",setup(R){const E=J(),V=i(!1),t=i(null),s=i(null),C=i(!1),m=i(!1),v=i(!1),y=i(""),b=i(!1),h=i(!1),_=i(null),S=i("");N(async()=>{const u=E.params.id;if(u){V.value=!0;try{const e=await X(u);e.intent==="SEARCH"&&e.results.length>0?t.value=e.results[0]:e.intent==="VIDEO_PARSE"&&e.results.length>0&&(s.value=e.results[0])}catch(e){console.error("获取详情失败",e)}finally{V.value=!1}}});function B(){b.value=!!s.value,m.value=!0}function $(){C.value=!0}function A(u){y.value=u}async function I(){if(!y.value){D.warning("请选择目标网盘");return}v.value=!0;try{let u;if(b.value&&s.value)u=await Y({video_url:s.value.video_url,title:s.value.title,target_cloud:y.value});else if(t.value)u=await Z({type:"search",source:t.value,target_cloud:y.value});else return;_.value=u,S.value=u.share_url,m.value=!1,h.value=!0}catch(u){console.error("保存失败",u),D.error("保存失败")}finally{v.value=!1}}async function q(){try{await navigator.clipboard.writeText(S.value),D.success("链接已复制到剪贴板")}catch{D.warning("复制失败,请手动复制")}}return(u,e)=>{const F=f("el-skeleton"),L=f("el-tag"),k=f("el-button"),M=f("el-empty"),z=f("el-dialog"),O=f("el-alert"),P=f("el-input");return a(),c("div",se,[l("div",ae,[V.value?(a(),c("div",oe,[o(F,{rows:6,animated:""})])):t.value?(a(),c("div",ne,[l("div",ie,[l("div",ue,[l("img",{src:t.value.cover,alt:t.value.title},null,8,de),o(K,{cloud_type:t.value.cloud_type},null,8,["cloud_type"])]),l("div",re,[l("h1",null,r(t.value.title),1),l("div",ce,[t.value.file_size?(a(),w(L,{key:0},{default:n(()=>[p("📦 "+r(t.value.file_size),1)]),_:1})):g("",!0),t.value.update_time?(a(),w(L,{key:1},{default:n(()=>[p("🕐 "+r(t.value.update_time),1)]),_:1})):g("",!0),t.value.source?(a(),w(L,{key:2},{default:n(()=>[p("📂 "+r(t.value.source),1)]),_:1})):g("",!0)]),t.value.description?(a(),c("p",ve,r(t.value.description),1)):g("",!0)])]),l("div",_e,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[5]||(e[5]=[p(" 📥 保存到网盘 ",-1)])]),_:1})])])):s.value?(a(),c("div",pe,[l("div",fe,[l("div",me,[l("img",{src:s.value.cover,alt:s.value.title},null,8,ye),l("div",{class:"play-overlay",onClick:$},[...e[6]||(e[6]=[l("div",{class:"play-btn"},"▶ 播放",-1)])])]),l("div",ge,[l("h1",null,r(s.value.title),1),s.value.author?(a(),c("p",he,"👤 "+r(s.value.author),1)):g("",!0),l("p",ke,"📺 "+r(s.value.platform),1),s.value.description?(a(),c("p",Ve,r(s.value.description),1)):g("",!0)])]),l("div",Ce,[o(k,{type:"primary",size:"large",onClick:B},{default:n(()=>[...e[7]||(e[7]=[p(" 📥 保存到云盘 ",-1)])]),_:1})]),C.value?(a(),c("div",we,[l("video",{src:s.value.video_url,controls:"",autoplay:"",class:"video-player"},null,8,be)])):g("",!0)])):(a(),w(M,{key:3,description:"未找到该资源"}))]),o(z,{modelValue:m.value,"onUpdate:modelValue":e[1]||(e[1]=d=>m.value=d),title:"保存到网盘",width:"420px"},{footer:n(()=>[o(k,{onClick:e[0]||(e[0]=d=>m.value=!1)},{default:n(()=>[...e[8]||(e[8]=[p("取消",-1)])]),_:1}),o(k,{type:"primary",loading:v.value,onClick:I},{default:n(()=>[...e[9]||(e[9]=[p("确认保存",-1)])]),_:1},8,["loading"])]),default:n(()=>{var d,x;return[l("div",Se,[l("p",xe,"📄 "+r(((d=t.value)==null?void 0:d.title)||((x=s.value)==null?void 0:x.title)),1),o(te,{onSelect:A})])]}),_:1},8,["modelValue"]),o(z,{modelValue:h.value,"onUpdate:modelValue":e[4]||(e[4]=d=>h.value=d),title:"保存成功",width:"420px"},{footer:n(()=>[o(k,{type:"primary",onClick:e[3]||(e[3]=d=>h.value=!1)},{default:n(()=>[...e[12]||(e[12]=[p("关闭",-1)])]),_:1})]),default:n(()=>{var d;return[l("div",De,[o(O,{type:"success",title:((d=_.value)==null?void 0:d.message)||"保存成功","show-icon":"",closable:!1},null,8,["title"]),l("div",Ee,[e[11]||(e[11]=l("p",{class:"share-label"},"分享链接:",-1)),l("div",Le,[o(P,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=x=>S.value=x),readonly:""},null,8,["modelValue"]),o(k,{onClick:q},{default:n(()=>[...e[10]||(e[10]=[p("复制",-1)])]),_:1})])])])]}),_:1},8,["modelValue"])])}}}),Te=T(Re,[["__scopeId","data-v-755e2105"]]);export{Te as default}; diff --git a/source_clean/frontend/assets/SaveRecords-vmMvuvLS.js b/source_clean/frontend/assets/SaveRecords-D4vANRRO.js similarity index 99% rename from source_clean/frontend/assets/SaveRecords-vmMvuvLS.js rename to source_clean/frontend/assets/SaveRecords-D4vANRRO.js index 8223929..5c57d6b 100644 --- a/source_clean/frontend/assets/SaveRecords-vmMvuvLS.js +++ b/source_clean/frontend/assets/SaveRecords-D4vANRRO.js @@ -1 +1 @@ -import{d as Ce,o as xe,a as u,c as r,b as a,f as l,w as d,F as Z,r as q,g as De,t as n,l as g,e as _,h as p,j as m,y as ee,n as M,k as R,s as Se,K as we,O as ze,P as Ne,E as te,Q as Te}from"./index-DLC2deeT.js";import{c as Be,j as $e,_ as Me}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const Fe={class:"save-records"},Ve={class:"toolbar"},Ee={class:"toolbar-row"},He={class:"filter-group"},je={style:{display:"inline-flex",alignItems:"center",gap:"6px"}},Ie=["src"],Le={class:"time-btns"},Ye=["onClick"],Ae={class:"toolbar-actions"},Ge={class:"record-count"},Ke={key:0,class:"save-summary"},Re={class:"summary-item summary-all"},Ue={class:"summary-item summary-success"},Pe={class:"summary-item summary-reused"},Je={class:"summary-item summary-failed"},Oe={key:0,class:"summary-item summary-rate"},Qe={class:"el-table-wrap"},Xe={class:"expand-detail"},We={class:"detail-row"},Ze={class:"detail-cell",style:{flex:"2"}},qe=["href"],et={key:0,class:"detail-cell"},tt={class:"detail-code"},at={key:1,class:"detail-cell"},st={key:2,class:"detail-cell"},lt={key:3,class:"detail-cell"},nt={class:"detail-row"},ot={key:0,class:"detail-cell"},it={key:1,class:"detail-cell"},dt={class:"detail-code"},ut={key:2,class:"detail-cell"},rt={class:"detail-code"},ct={class:"detail-row"},_t={key:0,class:"detail-cell",style:{flex:"2"}},pt=["href"],gt={key:1,class:"detail-cell"},ft={class:"detail-cell"},mt={key:0,class:"detail-row"},vt={class:"detail-cell"},ht={class:"detail-code"},yt={key:0,class:"detail-cell"},bt={class:"detail-code"},kt={class:"detail-cell"},Ct={class:"detail-code"},xt={key:1,class:"detail-row"},Dt={class:"detail-cell detail-full"},St={class:"detail-error"},wt={key:2,class:"detail-row"},zt={class:"detail-cell detail-full"},Nt={class:"detail-error"},Tt=["title"],Bt=["src"],$t=["title"],Mt={key:0,class:"loc-badge"},Ft={key:1,class:"no-data"},Vt=["title"],Et={key:1,class:"err-msg"},Ht={key:2,class:"reuse-msg"},jt={key:3,class:"no-data"},It={class:"action-cell"},Lt={key:1,class:"pagination-wrap"},Yt={class:"pagination-info"},At='',Gt=Ce({__name:"SaveRecords",setup(Kt){const U=p([]),k=p(0),C=p(1),x=p(20),F=p(!1),S=p(""),w=p(""),z=p(""),V=p("today"),E=p(""),H=p(""),N=p(null),j=p([]),v=p(null),ae=[{key:"today",label:"今日"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"lastMonth",label:"上月"}],I=p({});async function se(){try{const s=await Be(),e={};for(const o of s.types)e[o.type]={label:o.label,icon:o.icon};I.value=e}catch{}}function L(s){var e;return((e=I.value[s])==null?void 0:e.label)||s}function P(s){var e;return((e=I.value[s])==null?void 0:e.icon)||At}function le(s){const e=new Set;s.forEach(i=>{i.source_type&&e.add(i.source_type)});const o=new Set(j.value);e.forEach(i=>{o.has(i)||j.value.push(i)})}function Y(s){const e=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0");return`${e}-${o}-${i}`}function J(s){if(!s)return"-";let e=s;/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)&&(e=e.replace(" ","T")+"+08:00");const o=new Date(e);if(isNaN(o.getTime()))return s;const i=c=>String(c).padStart(2,"0");return`${o.getFullYear()}-${i(o.getMonth()+1)}-${i(o.getDate())} ${i(o.getHours())}:${i(o.getMinutes())}:${i(o.getSeconds())}`}function O(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"-"}function Q(s){return s?s>3e4?"dur-slow":s>1e4?"dur-warn":"dur-fast":""}function ne(s){return s.length>50?s.slice(0,50)+"…":s}function oe(s){return s==="success"?"转存成功":s==="reused"?"♻️ 复用已有分享链接":"转存失败"}function ie(s){return s==="success"?"status-ok":s==="reused"?"status-reuse":"status-fail"}function de(s){return s==="success"?"✓":s==="reused"?"♻️":"✗"}const ue={Anhui:"安徽",Beijing:"北京",Chongqing:"重庆",Fujian:"福建",Gansu:"甘肃",Guangdong:"广东",Guangxi:"广西",Guizhou:"贵州",Hainan:"海南",Hebei:"河北",Henan:"河南",Heilongjiang:"黑龙江",Hubei:"湖北",Hunan:"湖南","Inner Mongolia":"内蒙古",Jiangsu:"江苏",Jiangxi:"江西",Jilin:"吉林",Liaoning:"辽宁",Ningxia:"宁夏",Qinghai:"青海",Shaanxi:"陕西",Shandong:"山东",Shanghai:"上海",Shanxi:"山西",Sichuan:"四川",Tianjin:"天津",Tibet:"西藏",Xinjiang:"新疆",Yunnan:"云南",Zhejiang:"浙江","Hong Kong":"香港",Macau:"澳门",Taiwan:"台湾",Changsha:"长沙",Hefei:"合肥",Fuzhou:"福州",Lanzhou:"兰州",Guangzhou:"广州",Nanning:"南宁",Guiyang:"贵阳",Haikou:"海口",Shijiazhuang:"石家庄",Zhengzhou:"郑州",Harbin:"哈尔滨",Wuhan:"武汉",Nanjing:"南京",Nanchang:"南昌",Changchun:"长春",Shenyang:"沈阳",Yinchuan:"银川",Xining:"西宁","Xi'an":"西安",Jinan:"济南",Taiyuan:"太原",Chengdu:"成都",Shenzhen:"深圳",Hangzhou:"杭州",Suzhou:"苏州",Wuxi:"无锡",Ningbo:"宁波",Dongguan:"东莞",Foshan:"佛山",Zhuhai:"珠海",Qingdao:"青岛",Dalian:"大连",Xiamen:"厦门",Kunming:"昆明",Lhasa:"拉萨",Urumqi:"乌鲁木齐",Linyi:"临沂",Wenzhou:"温州",Quanzhou:"泉州"},re={"China Telecom":"中国电信","China Mobile":"中国移动","China Unicom":"中国联通",Chinanet:"中国电信",ChinaNet:"中国电信",CMNET:"中国移动","CNC Group":"中国联通",unicom:"中国联通",telecom:"中国电信",mobile:"中国移动","China Education and Research Network":"教育网",CERNET:"教育网","China Networks":"中国网络",China163:"中国电信","CHINANET BACKBONE":"中国电信","Tencent Cloud":"腾讯云","Alibaba Cloud":"阿里云",Aliyun:"阿里云","Huawei Cloud":"华为云",Baidu:"百度","Beijing Baidu":"百度"};function X(s){return s.replace(/^(中国|China)\s*/i,"").split(/\s+/).filter(Boolean).map(i=>ue[i]||re[i]||i).join(" ")}function ce({row:s}){return s.status==="failed"?"row-failed":""}async function _e(s){try{await navigator.clipboard.writeText(s),te.success("已复制到剪贴板")}catch{const e=document.createElement("textarea");e.value=s,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),te.success("已复制到剪贴板")}}function pe(s){window.open(s,"_blank")}function ge(s,e){}function T(s){V.value=s,N.value=null;const e=new Date,o=e.getFullYear(),i=e.getMonth();let c,f;switch(s){case"today":c=new Date(o,i,e.getDate()),f=c;break;case"week":{const D=e.getDay();c=new Date(o,i,e.getDate()+(D===0?-6:1-D)),f=e;break}case"month":c=new Date(o,i,1),f=e;break;case"lastMonth":c=new Date(o,i-1,1),f=new Date(o,i,0);break;default:c=new Date(o,i,e.getDate()),f=c}E.value=Y(c);const A=new Date(f.getFullYear(),f.getMonth(),f.getDate()+1);H.value=Y(A),y(1)}function fe(s){if(s&&s.length===2){V.value="",E.value=s[0];const e=new Date(s[1]);e.setDate(e.getDate()+1),H.value=Y(e),y(1)}else T("today")}function me(){S.value="",w.value="",z.value="",N.value=null,T("today")}async function y(s=1){F.value=!0;try{C.value=s;const e=S.value||void 0,o=w.value||void 0,i=z.value||void 0,c=await $e(s,x.value,E.value,H.value,e,o,i);U.value=c.records,k.value=c.total,v.value=c.summary||null,le(c.records)}catch(e){console.error("加载转存记录失败",e)}finally{F.value=!1}}return xe(()=>{T("today"),se()}),(s,e)=>{const o=m("el-option"),i=m("el-select"),c=m("el-date-picker"),f=m("el-icon"),A=m("el-input"),D=m("el-button"),W=m("el-tag"),h=m("el-table-column"),B=m("el-tooltip"),ve=m("el-table"),he=m("el-card"),ye=m("el-pagination"),be=Te("loading");return u(),r("div",Fe,[a("div",Ve,[a("div",Ee,[a("div",He,[l(i,{modelValue:S.value,"onUpdate:modelValue":e[0]||(e[0]=t=>S.value=t),placeholder:"状态",clearable:"",style:{width:"100px"},onChange:e[1]||(e[1]=t=>y(1))},{default:d(()=>[l(o,{label:"全部状态",value:""}),l(o,{label:"✓ 成功",value:"success"}),l(o,{label:"♻️ 复用",value:"reused"}),l(o,{label:"✗ 失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=t=>w.value=t),placeholder:"网盘",clearable:"",style:{width:"100px"},onChange:e[3]||(e[3]=t=>y(1))},{default:d(()=>[l(o,{label:"全部网盘",value:""}),(u(!0),r(Z,null,q(j.value,t=>(u(),ee(o,{key:t,label:L(t),value:t},{default:d(()=>[a("span",je,[a("img",{src:P(t),style:{width:"16px",height:"16px"}},null,8,Ie),g(" "+n(L(t)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),a("div",Le,[(u(),r(Z,null,q(ae,t=>a("button",{key:t.key,class:M(["time-btn",{active:V.value===t.key}]),onClick:b=>T(t.key)},n(t.label),11,Ye)),64))]),l(c,{modelValue:N.value,"onUpdate:modelValue":e[4]||(e[4]=t=>N.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"220px"},onChange:fe},null,8,["modelValue"]),l(A,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),placeholder:"搜索资源名称…",clearable:"",style:{width:"180px"},onClear:e[6]||(e[6]=t=>y(1)),onKeyup:e[7]||(e[7]=De(t=>y(1),["enter"]))},{prefix:d(()=>[l(f,null,{default:d(()=>[l(R(Se))]),_:1})]),_:1},8,["modelValue"])]),a("div",Ae,[l(D,{size:"small",onClick:me},{default:d(()=>[...e[11]||(e[11]=[g("重置筛选",-1)])]),_:1}),a("span",Ge,"共 "+n(k.value)+" 条",1)])])]),v.value?(u(),r("div",Ke,[a("span",Re,[e[12]||(e[12]=g("📊 共 ",-1)),a("strong",null,n(v.value.total),1),e[13]||(e[13]=g(" 条",-1))]),e[18]||(e[18]=a("span",{class:"summary-divider"},"|",-1)),a("span",Ue,[e[14]||(e[14]=g("✅ 成功 ",-1)),a("strong",null,n(v.value.success),1)]),a("span",Pe,[e[15]||(e[15]=g("♻️ 复用 ",-1)),a("strong",null,n(v.value.reused),1)]),a("span",Je,[e[16]||(e[16]=g("❌ 失败 ",-1)),a("strong",null,n(v.value.failed),1)]),v.value.total>0?(u(),r("span",Oe,[e[17]||(e[17]=g(" 成功率 ",-1)),a("strong",null,n(((v.value.success+v.value.reused)/v.value.total*100).toFixed(1))+"%",1)])):_("",!0)])):_("",!0),l(he,{shadow:"never",class:"save-table-card"},{header:d(()=>[...e[19]||(e[19]=[a("span",null,"📋 转存日志列表",-1)])]),default:d(()=>[a("div",Qe,[we((u(),ee(ve,{data:U.value,stripe:"",style:{width:"100%"},"empty-text":"暂无转存记录",onExpandChange:ge,"row-class-name":ce},{default:d(()=>[l(h,{type:"expand",width:"36"},{default:d(({row:t})=>[a("div",Xe,[a("div",We,[a("div",Ze,[e[20]||(e[20]=a("span",{class:"detail-label"},"原始链接",-1)),a("a",{href:t.source_url,target:"_blank",class:"detail-link"},n(t.source_url),9,qe)]),t.file_size?(u(),r("div",et,[e[21]||(e[21]=a("span",{class:"detail-label"},"文件大小",-1)),a("code",tt,n(t.file_size?function(b){if(b==null||b==="")return"-";var G=typeof b=="string"?parseInt(b,10):b;if(!G||G<=0)return"-";for(var ke=["B","KB","MB","GB","TB"],$=0,K=G;K>=1024&&$<4;)K/=1024,$++;return K.toFixed($===0?0:2)+" "+ke[$]}(t.file_size):"-"),1)])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",at,[e[23]||(e[23]=a("span",{class:"detail-label"},"文件夹",-1)),a("span",null,[a("strong",null,n(t.folder_count||0),1),e[22]||(e[22]=g(" 个",-1))])])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",st,[e[25]||(e[25]=a("span",{class:"detail-label"},"文件",-1)),a("span",null,[a("strong",null,n(t.file_count||0),1),e[24]||(e[24]=g(" 个",-1))])])):_("",!0),t.status==="reused"?(u(),r("div",lt,[...e[26]||(e[26]=[a("span",{class:"detail-label"},"复用方式",-1),a("span",{class:"reuse-msg"},"♻️ 直接使用已有分享链接,无需实际转存",-1)])])):_("",!0)]),a("div",nt,[t.config_nickname?(u(),r("div",ot,[e[27]||(e[27]=a("span",{class:"detail-label"},"使用账号",-1)),l(W,{size:"small",type:"success",effect:"plain"},{default:d(()=>[g(n(t.config_nickname),1)]),_:2},1024)])):_("",!0),t.original_folder_name?(u(),r("div",it,[e[28]||(e[28]=a("span",{class:"detail-label"},"原始文件夹名",-1)),a("code",dt,n(t.original_folder_name),1)])):_("",!0),t.folder_name?(u(),r("div",ut,[e[29]||(e[29]=a("span",{class:"detail-label"},"转存文件夹",-1)),a("code",rt,n(t.folder_name),1)])):_("",!0)]),a("div",ct,[t.share_url?(u(),r("div",_t,[e[30]||(e[30]=a("span",{class:"detail-label"},"分享链接",-1)),a("a",{href:t.share_url,target:"_blank",class:"detail-link"},n(t.share_url),9,pt)])):_("",!0),t.share_pwd?(u(),r("div",gt,[e[31]||(e[31]=a("span",{class:"detail-label"},"分享密码",-1)),l(W,{size:"small",type:"warning"},{default:d(()=>[g(n(t.share_pwd),1)]),_:2},1024)])):_("",!0),a("div",ft,[e[32]||(e[32]=a("span",{class:"detail-label"},"耗时",-1)),a("span",{class:M(["detail-duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)])]),t.ip_address?(u(),r("div",mt,[a("div",vt,[e[33]||(e[33]=a("span",{class:"detail-label"},"IP 地址",-1)),a("code",ht,n(t.ip_address),1)]),t.ip_location?(u(),r("div",yt,[e[34]||(e[34]=a("span",{class:"detail-label"},"归属地",-1)),a("code",bt,n(X(t.ip_location)),1)])):_("",!0),a("div",kt,[e[35]||(e[35]=a("span",{class:"detail-label"},"时间",-1)),a("code",Ct,n(J(t.created_at)),1)])])):_("",!0),t.status==="failed"&&t.error_message?(u(),r("div",xt,[a("div",Dt,[e[36]||(e[36]=a("span",{class:"detail-label"},"错误信息",-1)),a("pre",St,n(t.error_message.includes(" | ")?t.error_message.split(" | ")[1]:t.error_message.split(" | ")[0]),1)])])):_("",!0),t.status==="failed"&&t.error_message&&t.error_message.includes(" | ")?(u(),r("div",wt,[a("div",zt,[e[37]||(e[37]=a("span",{class:"detail-label"},"友好提示",-1)),a("pre",Nt,n(t.error_message.split(" | ")[0]),1)])])):_("",!0)])]),_:1}),l(h,{label:"序号",width:"68",align:"center"},{default:d(({$index:t})=>[g(n((C.value-1)*x.value+t+1),1)]),_:1}),l(h,{label:"时间",width:"140"},{default:d(({row:t})=>[a("span",{title:t.created_at},n(J(t.created_at)),9,Tt)]),_:1}),l(h,{label:"网盘",width:"70",align:"center"},{default:d(({row:t})=>[l(B,{content:L(t.source_type),placement:"top"},{default:d(()=>[a("img",{src:P(t.source_type),style:{width:"22px",height:"22px",cursor:"default"}},null,8,Bt)]),_:2},1032,["content"])]),_:1}),l(h,{label:"状态",width:"72",align:"center"},{default:d(({row:t})=>[l(B,{content:oe(t.status),placement:"top"},{default:d(()=>[a("span",{class:M(["status-badge",ie(t.status)])},n(de(t.status)),3)]),_:2},1032,["content"])]),_:1}),l(h,{label:"资源名称","min-width":"160","show-overflow-tooltip":""},{default:d(({row:t})=>[a("span",{title:t.source_title||""},n(t.source_title||"-"),9,$t)]),_:1}),l(h,{label:"耗时",width:"85",align:"center"},{default:d(({row:t})=>[a("span",{class:M(["duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)]),_:1}),l(h,{label:"归属地","min-width":"130","show-overflow-tooltip":""},{default:d(({row:t})=>[t.ip_location?(u(),r("span",Mt,n(X(t.ip_location)),1)):(u(),r("span",Ft,"-"))]),_:1}),l(h,{label:"备注","min-width":"200","show-overflow-tooltip":""},{default:d(({row:t})=>[t.status==="failed"&&t.error_message?(u(),r("span",{key:0,class:"err-msg",title:t.error_message},n(ne(t.error_message)),9,Vt)):t.status==="failed"?(u(),r("span",Et,"失败")):t.status==="reused"?(u(),r("span",Ht,"♻️ 复用已有链接")):(u(),r("span",jt,"-"))]),_:1}),l(h,{label:"操作",width:"80",fixed:"right",align:"center"},{default:d(({row:t})=>[a("div",It,[l(B,{content:"复制分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>_e(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(ze))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024),l(B,{content:"打开分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>pe(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(Ne))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024)])]),_:1})]),_:1},8,["data"])),[[be,F.value]])])]),_:1}),k.value>0?(u(),r("div",Lt,[a("div",Yt," 第 "+n((C.value-1)*x.value+1)+"-"+n(Math.min(C.value*x.value,k.value))+" 条,共 "+n(k.value)+" 条 ",1),l(ye,{"current-page":C.value,"onUpdate:currentPage":e[8]||(e[8]=t=>C.value=t),"page-size":x.value,"onUpdate:pageSize":e[9]||(e[9]=t=>x.value=t),total:k.value,"page-sizes":[15,20,30,50,100],layout:"sizes, prev, pager, next, jumper",onCurrentChange:y,onSizeChange:e[10]||(e[10]=t=>y(1))},null,8,["current-page","page-size","total"])])):_("",!0)])}}}),Pt=Me(Gt,[["__scopeId","data-v-ccd92f86"]]);export{Pt as default}; +import{d as Ce,o as xe,a as u,c as r,b as a,f as l,w as d,F as Z,r as q,g as De,t as n,l as g,e as _,h as p,j as m,y as ee,n as M,k as R,s as Se,K as we,O as ze,P as Ne,E as te,Q as Te}from"./index-Bsy0LTRb.js";import{c as Be,j as $e,_ as Me}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const Fe={class:"save-records"},Ve={class:"toolbar"},Ee={class:"toolbar-row"},He={class:"filter-group"},je={style:{display:"inline-flex",alignItems:"center",gap:"6px"}},Ie=["src"],Le={class:"time-btns"},Ye=["onClick"],Ae={class:"toolbar-actions"},Ge={class:"record-count"},Ke={key:0,class:"save-summary"},Re={class:"summary-item summary-all"},Ue={class:"summary-item summary-success"},Pe={class:"summary-item summary-reused"},Je={class:"summary-item summary-failed"},Oe={key:0,class:"summary-item summary-rate"},Qe={class:"el-table-wrap"},Xe={class:"expand-detail"},We={class:"detail-row"},Ze={class:"detail-cell",style:{flex:"2"}},qe=["href"],et={key:0,class:"detail-cell"},tt={class:"detail-code"},at={key:1,class:"detail-cell"},st={key:2,class:"detail-cell"},lt={key:3,class:"detail-cell"},nt={class:"detail-row"},ot={key:0,class:"detail-cell"},it={key:1,class:"detail-cell"},dt={class:"detail-code"},ut={key:2,class:"detail-cell"},rt={class:"detail-code"},ct={class:"detail-row"},_t={key:0,class:"detail-cell",style:{flex:"2"}},pt=["href"],gt={key:1,class:"detail-cell"},ft={class:"detail-cell"},mt={key:0,class:"detail-row"},vt={class:"detail-cell"},ht={class:"detail-code"},yt={key:0,class:"detail-cell"},bt={class:"detail-code"},kt={class:"detail-cell"},Ct={class:"detail-code"},xt={key:1,class:"detail-row"},Dt={class:"detail-cell detail-full"},St={class:"detail-error"},wt={key:2,class:"detail-row"},zt={class:"detail-cell detail-full"},Nt={class:"detail-error"},Tt=["title"],Bt=["src"],$t=["title"],Mt={key:0,class:"loc-badge"},Ft={key:1,class:"no-data"},Vt=["title"],Et={key:1,class:"err-msg"},Ht={key:2,class:"reuse-msg"},jt={key:3,class:"no-data"},It={class:"action-cell"},Lt={key:1,class:"pagination-wrap"},Yt={class:"pagination-info"},At='',Gt=Ce({__name:"SaveRecords",setup(Kt){const U=p([]),k=p(0),C=p(1),x=p(20),F=p(!1),S=p(""),w=p(""),z=p(""),V=p("today"),E=p(""),H=p(""),N=p(null),j=p([]),v=p(null),ae=[{key:"today",label:"今日"},{key:"week",label:"本周"},{key:"month",label:"本月"},{key:"lastMonth",label:"上月"}],I=p({});async function se(){try{const s=await Be(),e={};for(const o of s.types)e[o.type]={label:o.label,icon:o.icon};I.value=e}catch{}}function L(s){var e;return((e=I.value[s])==null?void 0:e.label)||s}function P(s){var e;return((e=I.value[s])==null?void 0:e.icon)||At}function le(s){const e=new Set;s.forEach(i=>{i.source_type&&e.add(i.source_type)});const o=new Set(j.value);e.forEach(i=>{o.has(i)||j.value.push(i)})}function Y(s){const e=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),i=String(s.getDate()).padStart(2,"0");return`${e}-${o}-${i}`}function J(s){if(!s)return"-";let e=s;/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)&&(e=e.replace(" ","T")+"+08:00");const o=new Date(e);if(isNaN(o.getTime()))return s;const i=c=>String(c).padStart(2,"0");return`${o.getFullYear()}-${i(o.getMonth()+1)}-${i(o.getDate())} ${i(o.getHours())}:${i(o.getMinutes())}:${i(o.getSeconds())}`}function O(s){return s?s<1e3?`${s}ms`:`${(s/1e3).toFixed(1)}s`:"-"}function Q(s){return s?s>3e4?"dur-slow":s>1e4?"dur-warn":"dur-fast":""}function ne(s){return s.length>50?s.slice(0,50)+"…":s}function oe(s){return s==="success"?"转存成功":s==="reused"?"♻️ 复用已有分享链接":"转存失败"}function ie(s){return s==="success"?"status-ok":s==="reused"?"status-reuse":"status-fail"}function de(s){return s==="success"?"✓":s==="reused"?"♻️":"✗"}const ue={Anhui:"安徽",Beijing:"北京",Chongqing:"重庆",Fujian:"福建",Gansu:"甘肃",Guangdong:"广东",Guangxi:"广西",Guizhou:"贵州",Hainan:"海南",Hebei:"河北",Henan:"河南",Heilongjiang:"黑龙江",Hubei:"湖北",Hunan:"湖南","Inner Mongolia":"内蒙古",Jiangsu:"江苏",Jiangxi:"江西",Jilin:"吉林",Liaoning:"辽宁",Ningxia:"宁夏",Qinghai:"青海",Shaanxi:"陕西",Shandong:"山东",Shanghai:"上海",Shanxi:"山西",Sichuan:"四川",Tianjin:"天津",Tibet:"西藏",Xinjiang:"新疆",Yunnan:"云南",Zhejiang:"浙江","Hong Kong":"香港",Macau:"澳门",Taiwan:"台湾",Changsha:"长沙",Hefei:"合肥",Fuzhou:"福州",Lanzhou:"兰州",Guangzhou:"广州",Nanning:"南宁",Guiyang:"贵阳",Haikou:"海口",Shijiazhuang:"石家庄",Zhengzhou:"郑州",Harbin:"哈尔滨",Wuhan:"武汉",Nanjing:"南京",Nanchang:"南昌",Changchun:"长春",Shenyang:"沈阳",Yinchuan:"银川",Xining:"西宁","Xi'an":"西安",Jinan:"济南",Taiyuan:"太原",Chengdu:"成都",Shenzhen:"深圳",Hangzhou:"杭州",Suzhou:"苏州",Wuxi:"无锡",Ningbo:"宁波",Dongguan:"东莞",Foshan:"佛山",Zhuhai:"珠海",Qingdao:"青岛",Dalian:"大连",Xiamen:"厦门",Kunming:"昆明",Lhasa:"拉萨",Urumqi:"乌鲁木齐",Linyi:"临沂",Wenzhou:"温州",Quanzhou:"泉州"},re={"China Telecom":"中国电信","China Mobile":"中国移动","China Unicom":"中国联通",Chinanet:"中国电信",ChinaNet:"中国电信",CMNET:"中国移动","CNC Group":"中国联通",unicom:"中国联通",telecom:"中国电信",mobile:"中国移动","China Education and Research Network":"教育网",CERNET:"教育网","China Networks":"中国网络",China163:"中国电信","CHINANET BACKBONE":"中国电信","Tencent Cloud":"腾讯云","Alibaba Cloud":"阿里云",Aliyun:"阿里云","Huawei Cloud":"华为云",Baidu:"百度","Beijing Baidu":"百度"};function X(s){return s.replace(/^(中国|China)\s*/i,"").split(/\s+/).filter(Boolean).map(i=>ue[i]||re[i]||i).join(" ")}function ce({row:s}){return s.status==="failed"?"row-failed":""}async function _e(s){try{await navigator.clipboard.writeText(s),te.success("已复制到剪贴板")}catch{const e=document.createElement("textarea");e.value=s,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),te.success("已复制到剪贴板")}}function pe(s){window.open(s,"_blank")}function ge(s,e){}function T(s){V.value=s,N.value=null;const e=new Date,o=e.getFullYear(),i=e.getMonth();let c,f;switch(s){case"today":c=new Date(o,i,e.getDate()),f=c;break;case"week":{const D=e.getDay();c=new Date(o,i,e.getDate()+(D===0?-6:1-D)),f=e;break}case"month":c=new Date(o,i,1),f=e;break;case"lastMonth":c=new Date(o,i-1,1),f=new Date(o,i,0);break;default:c=new Date(o,i,e.getDate()),f=c}E.value=Y(c);const A=new Date(f.getFullYear(),f.getMonth(),f.getDate()+1);H.value=Y(A),y(1)}function fe(s){if(s&&s.length===2){V.value="",E.value=s[0];const e=new Date(s[1]);e.setDate(e.getDate()+1),H.value=Y(e),y(1)}else T("today")}function me(){S.value="",w.value="",z.value="",N.value=null,T("today")}async function y(s=1){F.value=!0;try{C.value=s;const e=S.value||void 0,o=w.value||void 0,i=z.value||void 0,c=await $e(s,x.value,E.value,H.value,e,o,i);U.value=c.records,k.value=c.total,v.value=c.summary||null,le(c.records)}catch(e){console.error("加载转存记录失败",e)}finally{F.value=!1}}return xe(()=>{T("today"),se()}),(s,e)=>{const o=m("el-option"),i=m("el-select"),c=m("el-date-picker"),f=m("el-icon"),A=m("el-input"),D=m("el-button"),W=m("el-tag"),h=m("el-table-column"),B=m("el-tooltip"),ve=m("el-table"),he=m("el-card"),ye=m("el-pagination"),be=Te("loading");return u(),r("div",Fe,[a("div",Ve,[a("div",Ee,[a("div",He,[l(i,{modelValue:S.value,"onUpdate:modelValue":e[0]||(e[0]=t=>S.value=t),placeholder:"状态",clearable:"",style:{width:"100px"},onChange:e[1]||(e[1]=t=>y(1))},{default:d(()=>[l(o,{label:"全部状态",value:""}),l(o,{label:"✓ 成功",value:"success"}),l(o,{label:"♻️ 复用",value:"reused"}),l(o,{label:"✗ 失败",value:"failed"})]),_:1},8,["modelValue"]),l(i,{modelValue:w.value,"onUpdate:modelValue":e[2]||(e[2]=t=>w.value=t),placeholder:"网盘",clearable:"",style:{width:"100px"},onChange:e[3]||(e[3]=t=>y(1))},{default:d(()=>[l(o,{label:"全部网盘",value:""}),(u(!0),r(Z,null,q(j.value,t=>(u(),ee(o,{key:t,label:L(t),value:t},{default:d(()=>[a("span",je,[a("img",{src:P(t),style:{width:"16px",height:"16px"}},null,8,Ie),g(" "+n(L(t)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"]),a("div",Le,[(u(),r(Z,null,q(ae,t=>a("button",{key:t.key,class:M(["time-btn",{active:V.value===t.key}]),onClick:b=>T(t.key)},n(t.label),11,Ye)),64))]),l(c,{modelValue:N.value,"onUpdate:modelValue":e[4]||(e[4]=t=>N.value=t),type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期","value-format":"YYYY-MM-DD",style:{width:"220px"},onChange:fe},null,8,["modelValue"]),l(A,{modelValue:z.value,"onUpdate:modelValue":e[5]||(e[5]=t=>z.value=t),placeholder:"搜索资源名称…",clearable:"",style:{width:"180px"},onClear:e[6]||(e[6]=t=>y(1)),onKeyup:e[7]||(e[7]=De(t=>y(1),["enter"]))},{prefix:d(()=>[l(f,null,{default:d(()=>[l(R(Se))]),_:1})]),_:1},8,["modelValue"])]),a("div",Ae,[l(D,{size:"small",onClick:me},{default:d(()=>[...e[11]||(e[11]=[g("重置筛选",-1)])]),_:1}),a("span",Ge,"共 "+n(k.value)+" 条",1)])])]),v.value?(u(),r("div",Ke,[a("span",Re,[e[12]||(e[12]=g("📊 共 ",-1)),a("strong",null,n(v.value.total),1),e[13]||(e[13]=g(" 条",-1))]),e[18]||(e[18]=a("span",{class:"summary-divider"},"|",-1)),a("span",Ue,[e[14]||(e[14]=g("✅ 成功 ",-1)),a("strong",null,n(v.value.success),1)]),a("span",Pe,[e[15]||(e[15]=g("♻️ 复用 ",-1)),a("strong",null,n(v.value.reused),1)]),a("span",Je,[e[16]||(e[16]=g("❌ 失败 ",-1)),a("strong",null,n(v.value.failed),1)]),v.value.total>0?(u(),r("span",Oe,[e[17]||(e[17]=g(" 成功率 ",-1)),a("strong",null,n(((v.value.success+v.value.reused)/v.value.total*100).toFixed(1))+"%",1)])):_("",!0)])):_("",!0),l(he,{shadow:"never",class:"save-table-card"},{header:d(()=>[...e[19]||(e[19]=[a("span",null,"📋 转存日志列表",-1)])]),default:d(()=>[a("div",Qe,[we((u(),ee(ve,{data:U.value,stripe:"",style:{width:"100%"},"empty-text":"暂无转存记录",onExpandChange:ge,"row-class-name":ce},{default:d(()=>[l(h,{type:"expand",width:"36"},{default:d(({row:t})=>[a("div",Xe,[a("div",We,[a("div",Ze,[e[20]||(e[20]=a("span",{class:"detail-label"},"原始链接",-1)),a("a",{href:t.source_url,target:"_blank",class:"detail-link"},n(t.source_url),9,qe)]),t.file_size?(u(),r("div",et,[e[21]||(e[21]=a("span",{class:"detail-label"},"文件大小",-1)),a("code",tt,n(t.file_size?function(b){if(b==null||b==="")return"-";var G=typeof b=="string"?parseInt(b,10):b;if(!G||G<=0)return"-";for(var ke=["B","KB","MB","GB","TB"],$=0,K=G;K>=1024&&$<4;)K/=1024,$++;return K.toFixed($===0?0:2)+" "+ke[$]}(t.file_size):"-"),1)])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",at,[e[23]||(e[23]=a("span",{class:"detail-label"},"文件夹",-1)),a("span",null,[a("strong",null,n(t.folder_count||0),1),e[22]||(e[22]=g(" 个",-1))])])):_("",!0),t.status!=="reused"&&(t.folder_count>0||t.file_count>0)?(u(),r("div",st,[e[25]||(e[25]=a("span",{class:"detail-label"},"文件",-1)),a("span",null,[a("strong",null,n(t.file_count||0),1),e[24]||(e[24]=g(" 个",-1))])])):_("",!0),t.status==="reused"?(u(),r("div",lt,[...e[26]||(e[26]=[a("span",{class:"detail-label"},"复用方式",-1),a("span",{class:"reuse-msg"},"♻️ 直接使用已有分享链接,无需实际转存",-1)])])):_("",!0)]),a("div",nt,[t.config_nickname?(u(),r("div",ot,[e[27]||(e[27]=a("span",{class:"detail-label"},"使用账号",-1)),l(W,{size:"small",type:"success",effect:"plain"},{default:d(()=>[g(n(t.config_nickname),1)]),_:2},1024)])):_("",!0),t.original_folder_name?(u(),r("div",it,[e[28]||(e[28]=a("span",{class:"detail-label"},"原始文件夹名",-1)),a("code",dt,n(t.original_folder_name),1)])):_("",!0),t.folder_name?(u(),r("div",ut,[e[29]||(e[29]=a("span",{class:"detail-label"},"转存文件夹",-1)),a("code",rt,n(t.folder_name),1)])):_("",!0)]),a("div",ct,[t.share_url?(u(),r("div",_t,[e[30]||(e[30]=a("span",{class:"detail-label"},"分享链接",-1)),a("a",{href:t.share_url,target:"_blank",class:"detail-link"},n(t.share_url),9,pt)])):_("",!0),t.share_pwd?(u(),r("div",gt,[e[31]||(e[31]=a("span",{class:"detail-label"},"分享密码",-1)),l(W,{size:"small",type:"warning"},{default:d(()=>[g(n(t.share_pwd),1)]),_:2},1024)])):_("",!0),a("div",ft,[e[32]||(e[32]=a("span",{class:"detail-label"},"耗时",-1)),a("span",{class:M(["detail-duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)])]),t.ip_address?(u(),r("div",mt,[a("div",vt,[e[33]||(e[33]=a("span",{class:"detail-label"},"IP 地址",-1)),a("code",ht,n(t.ip_address),1)]),t.ip_location?(u(),r("div",yt,[e[34]||(e[34]=a("span",{class:"detail-label"},"归属地",-1)),a("code",bt,n(X(t.ip_location)),1)])):_("",!0),a("div",kt,[e[35]||(e[35]=a("span",{class:"detail-label"},"时间",-1)),a("code",Ct,n(J(t.created_at)),1)])])):_("",!0),t.status==="failed"&&t.error_message?(u(),r("div",xt,[a("div",Dt,[e[36]||(e[36]=a("span",{class:"detail-label"},"错误信息",-1)),a("pre",St,n(t.error_message.includes(" | ")?t.error_message.split(" | ")[1]:t.error_message.split(" | ")[0]),1)])])):_("",!0),t.status==="failed"&&t.error_message&&t.error_message.includes(" | ")?(u(),r("div",wt,[a("div",zt,[e[37]||(e[37]=a("span",{class:"detail-label"},"友好提示",-1)),a("pre",Nt,n(t.error_message.split(" | ")[0]),1)])])):_("",!0)])]),_:1}),l(h,{label:"序号",width:"68",align:"center"},{default:d(({$index:t})=>[g(n((C.value-1)*x.value+t+1),1)]),_:1}),l(h,{label:"时间",width:"140"},{default:d(({row:t})=>[a("span",{title:t.created_at},n(J(t.created_at)),9,Tt)]),_:1}),l(h,{label:"网盘",width:"70",align:"center"},{default:d(({row:t})=>[l(B,{content:L(t.source_type),placement:"top"},{default:d(()=>[a("img",{src:P(t.source_type),style:{width:"22px",height:"22px",cursor:"default"}},null,8,Bt)]),_:2},1032,["content"])]),_:1}),l(h,{label:"状态",width:"72",align:"center"},{default:d(({row:t})=>[l(B,{content:oe(t.status),placement:"top"},{default:d(()=>[a("span",{class:M(["status-badge",ie(t.status)])},n(de(t.status)),3)]),_:2},1032,["content"])]),_:1}),l(h,{label:"资源名称","min-width":"160","show-overflow-tooltip":""},{default:d(({row:t})=>[a("span",{title:t.source_title||""},n(t.source_title||"-"),9,$t)]),_:1}),l(h,{label:"耗时",width:"85",align:"center"},{default:d(({row:t})=>[a("span",{class:M(["duration",Q(t.duration_ms)])},n(O(t.duration_ms)),3)]),_:1}),l(h,{label:"归属地","min-width":"130","show-overflow-tooltip":""},{default:d(({row:t})=>[t.ip_location?(u(),r("span",Mt,n(X(t.ip_location)),1)):(u(),r("span",Ft,"-"))]),_:1}),l(h,{label:"备注","min-width":"200","show-overflow-tooltip":""},{default:d(({row:t})=>[t.status==="failed"&&t.error_message?(u(),r("span",{key:0,class:"err-msg",title:t.error_message},n(ne(t.error_message)),9,Vt)):t.status==="failed"?(u(),r("span",Et,"失败")):t.status==="reused"?(u(),r("span",Ht,"♻️ 复用已有链接")):(u(),r("span",jt,"-"))]),_:1}),l(h,{label:"操作",width:"80",fixed:"right",align:"center"},{default:d(({row:t})=>[a("div",It,[l(B,{content:"复制分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>_e(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(ze))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024),l(B,{content:"打开分享链接",placement:"top"},{default:d(()=>[l(D,{size:"small",circle:"",text:"",disabled:!t.share_url,onClick:b=>pe(t.share_url)},{default:d(()=>[l(f,null,{default:d(()=>[l(R(Ne))]),_:1})]),_:1},8,["disabled","onClick"])]),_:2},1024)])]),_:1})]),_:1},8,["data"])),[[be,F.value]])])]),_:1}),k.value>0?(u(),r("div",Lt,[a("div",Yt," 第 "+n((C.value-1)*x.value+1)+"-"+n(Math.min(C.value*x.value,k.value))+" 条,共 "+n(k.value)+" 条 ",1),l(ye,{"current-page":C.value,"onUpdate:currentPage":e[8]||(e[8]=t=>C.value=t),"page-size":x.value,"onUpdate:pageSize":e[9]||(e[9]=t=>x.value=t),total:k.value,"page-sizes":[15,20,30,50,100],layout:"sizes, prev, pager, next, jumper",onCurrentChange:y,onSizeChange:e[10]||(e[10]=t=>y(1))},null,8,["current-page","page-size","total"])])):_("",!0)])}}}),Pt=Me(Gt,[["__scopeId","data-v-ccd92f86"]]);export{Pt as default}; diff --git a/source_clean/frontend/assets/SearchResult-CSy9PDwp.js b/source_clean/frontend/assets/SearchResult-C7oFJn97.js similarity index 99% rename from source_clean/frontend/assets/SearchResult-CSy9PDwp.js rename to source_clean/frontend/assets/SearchResult-C7oFJn97.js index fe13085..0901662 100644 --- a/source_clean/frontend/assets/SearchResult-CSy9PDwp.js +++ b/source_clean/frontend/assets/SearchResult-C7oFJn97.js @@ -1,4 +1,4 @@ -import{d as ht,o as nn,m as qn,a as d,c as f,n as we,b as g,p as ut,t as m,k as Oe,e as R,F as $,r as oe,q as Gt,h as E,v as J,x as Qt,f as z,w as K,g as Xt,y as Me,l as G,z as Hn,j as le,s as Kn,A as On,i as xn,E as Re,u as Jn,B as Wn}from"./index-DLC2deeT.js";import{C as sn,a as Ae,b as on}from"./index-Bn7NwETH.js";import{_ as vt,b as Yn,s as jn,c as Gn,d as Qn,q as Xn,e as Zn,f as $n}from"./_plugin-vue_export-helper-1Z-znrfZ.js";var Ne={},es=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},an={},se={};let pt;const ts=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];se.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};se.getSymbolTotalCodewords=function(t){return ts[t]};se.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};se.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=t};se.isKanjiModeEnabled=function(){return typeof pt<"u"};se.toSJIS=function(t){return pt(t)};var We={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+a)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(We);function ln(){this.buffer=[],this.length=0}ln.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let a=0;a>>t-a-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var ns=ln;function Le(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Le.prototype.set=function(e,t,a,s){const n=e*this.size+t;this.data[n]=a,s&&(this.reservedBit[n]=!0)};Le.prototype.get=function(e,t){return this.data[e*this.size+t]};Le.prototype.xor=function(e,t,a){this.data[e*this.size+t]^=a};Le.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var ss=Le,rn={};(function(e){const t=se.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,i=[o-7];for(let u=1;u=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let r=0,i=0,u=0,v=null,h=null;for(let D=0;D=5&&(r+=t.N1+(i-5)),v=y,i=1),y=n.get(T,D),y===h?u++:(u>=5&&(r+=t.N1+(u-5)),h=y,u=1)}i>=5&&(r+=t.N1+(i-5)),u>=5&&(r+=t.N1+(u-5))}return r},e.getPenaltyN2=function(n){const o=n.size;let r=0;for(let i=0;i=10&&(i===1488||i===93)&&r++,u=u<<1&2047|n.get(h,v),h>=10&&(u===1488||u===93)&&r++}return r*t.N3},e.getPenaltyN4=function(n){let o=0;const r=n.data.length;for(let u=0;u=0;){const r=o[0];for(let u=0;u0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var as=mt,gn={},ve={},yt={};yt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var re={};const hn="[0-9]+",ls="[A-Z $%*+\\-./:]+";let Pe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Pe=Pe.replace(/u/g,"\\u");const rs="(?:(?![A-Z0-9 $%*+\\-./:]|"+Pe+`)(?:.|[\r +import{d as ht,o as nn,m as qn,a as d,c as f,n as we,b as g,p as ut,t as m,k as Oe,e as R,F as $,r as oe,q as Gt,h as E,v as J,x as Qt,f as z,w as K,g as Xt,y as Me,l as G,z as Hn,j as le,s as Kn,A as On,i as xn,E as Re,u as Jn,B as Wn}from"./index-Bsy0LTRb.js";import{C as sn,a as Ae,b as on}from"./index-Bn7NwETH.js";import{_ as vt,b as Yn,s as jn,c as Gn,d as Qn,q as Xn,e as Zn,f as $n}from"./_plugin-vue_export-helper-1Z-znrfZ.js";var Ne={},es=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},an={},se={};let pt;const ts=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];se.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};se.getSymbolTotalCodewords=function(t){return ts[t]};se.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};se.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');pt=t};se.isKanjiModeEnabled=function(){return typeof pt<"u"};se.toSJIS=function(t){return pt(t)};var We={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(a){if(typeof a!="string")throw new Error("Param is not a string");switch(a.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+a)}}e.isValid=function(s){return s&&typeof s.bit<"u"&&s.bit>=0&&s.bit<4},e.from=function(s,n){if(e.isValid(s))return s;try{return t(s)}catch{return n}}})(We);function ln(){this.buffer=[],this.length=0}ln.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let a=0;a>>t-a-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var ns=ln;function Le(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}Le.prototype.set=function(e,t,a,s){const n=e*this.size+t;this.data[n]=a,s&&(this.reservedBit[n]=!0)};Le.prototype.get=function(e,t){return this.data[e*this.size+t]};Le.prototype.xor=function(e,t,a){this.data[e*this.size+t]^=a};Le.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var ss=Le,rn={};(function(e){const t=se.getSymbolSize;e.getRowColCoords=function(s){if(s===1)return[];const n=Math.floor(s/7)+2,o=t(s),r=o===145?26:Math.ceil((o-13)/(2*n-2))*2,i=[o-7];for(let u=1;u=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let r=0,i=0,u=0,v=null,h=null;for(let D=0;D=5&&(r+=t.N1+(i-5)),v=y,i=1),y=n.get(T,D),y===h?u++:(u>=5&&(r+=t.N1+(u-5)),h=y,u=1)}i>=5&&(r+=t.N1+(i-5)),u>=5&&(r+=t.N1+(u-5))}return r},e.getPenaltyN2=function(n){const o=n.size;let r=0;for(let i=0;i=10&&(i===1488||i===93)&&r++,u=u<<1&2047|n.get(h,v),h>=10&&(u===1488||u===93)&&r++}return r*t.N3},e.getPenaltyN4=function(n){let o=0;const r=n.data.length;for(let u=0;u=0;){const r=o[0];for(let u=0;u0){const o=new Uint8Array(this.degree);return o.set(s,n),o}return s};var as=mt,gn={},ve={},yt={};yt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var re={};const hn="[0-9]+",ls="[A-Z $%*+\\-./:]+";let Pe="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Pe=Pe.replace(/u/g,"\\u");const rs="(?:(?![A-Z0-9 $%*+\\-./:]|"+Pe+`)(?:.|[\r ]))+`;re.KANJI=new RegExp(Pe,"g");re.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");re.BYTE=new RegExp(rs,"g");re.NUMERIC=new RegExp(hn,"g");re.ALPHANUMERIC=new RegExp(ls,"g");const is=new RegExp("^"+Pe+"$"),us=new RegExp("^"+hn+"$"),cs=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");re.testKanji=function(t){return is.test(t)};re.testNumeric=function(t){return us.test(t)};re.testAlphanumeric=function(t){return cs.test(t)};(function(e){const t=yt,a=re;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,r){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(r))throw new Error("Invalid version: "+r);return r>=1&&r<10?o.ccBits[0]:r<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return a.testNumeric(o)?e.NUMERIC:a.testAlphanumeric(o)?e.ALPHANUMERIC:a.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function s(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}e.from=function(o,r){if(e.isValid(o))return o;try{return s(o)}catch{return r}}})(ve);(function(e){const t=se,a=Ye,s=We,n=ve,o=yt,r=7973,i=t.getBCHDigit(r);function u(T,y,M){for(let I=1;I<=40;I++)if(y<=e.getCapacity(I,M,T))return I}function v(T,y){return n.getCharCountIndicator(T,y)+4}function h(T,y){let M=0;return T.forEach(function(I){const F=v(I.mode,y);M+=F+I.getBitsLength()}),M}function D(T,y){for(let M=1;M<=40;M++)if(h(T,M)<=e.getCapacity(M,y,n.MIXED))return M}e.from=function(y,M){return o.isValid(y)?parseInt(y,10):M},e.getCapacity=function(y,M,I){if(!o.isValid(y))throw new Error("Invalid QR Code version");typeof I>"u"&&(I=n.BYTE);const F=t.getSymbolTotalCodewords(y),_=a.getTotalCodewordsCount(y,M),C=(F-_)*8;if(I===n.MIXED)return C;const w=C-v(I,y);switch(I){case n.NUMERIC:return Math.floor(w/10*3);case n.ALPHANUMERIC:return Math.floor(w/11*2);case n.KANJI:return Math.floor(w/13);case n.BYTE:default:return Math.floor(w/8)}},e.getBestVersionForData=function(y,M){let I;const F=s.from(M,s.M);if(Array.isArray(y)){if(y.length>1)return D(y,F);if(y.length===0)return 1;I=y[0]}else I=y;return u(I.mode,I.getLength(),F)},e.getEncodedBits=function(y){if(!o.isValid(y)||y<7)throw new Error("Invalid QR Code version");let M=y<<12;for(;t.getBCHDigit(M)-i>=0;)M^=r<=0;)n^=pn<0&&(s=this.data.substr(a),n=parseInt(s,10),t.put(n,o*3+1))};var gs=ke;const hs=ve,st=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function be(e){this.mode=hs.ALPHANUMERIC,this.data=e}be.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};be.prototype.getLength=function(){return this.data.length};be.prototype.getBitsLength=function(){return be.getBitsLength(this.data.length)};be.prototype.write=function(t){let a;for(a=0;a+2<=this.data.length;a+=2){let s=st.indexOf(this.data[a])*45;s+=st.indexOf(this.data[a+1]),t.put(s,11)}this.data.length%2&&t.put(st.indexOf(this.data[a]),6)};var vs=be;const ps=ve;function Ce(e){this.mode=ps.BYTE,typeof e=="string"?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}Ce.getBitsLength=function(t){return t*8};Ce.prototype.getLength=function(){return this.data.length};Ce.prototype.getBitsLength=function(){return Ce.getBitsLength(this.data.length)};Ce.prototype.write=function(e){for(let t=0,a=this.data.length;t=33088&&a<=40956)a-=33088;else if(a>=57408&&a<=60351)a-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+` Make sure your charset is UTF-8`);a=(a>>>8&255)*192+(a&255),e.put(a,13)}};var ws=Ee,yn={exports:{}};(function(e){var t={single_source_shortest_paths:function(a,s,n){var o={},r={};r[s]=0;var i=t.PriorityQueue.make();i.push(s,0);for(var u,v,h,D,T,y,M,I,F;!i.empty();){u=i.pop(),v=u.value,D=u.cost,T=a[v]||{};for(h in T)T.hasOwnProperty(h)&&(y=T[h],M=D+y,I=r[h],F=typeof r[h]>"u",(F||I>M)&&(r[h]=M,i.push(h,M),o[h]=v))}if(typeof n<"u"&&typeof r[n]>"u"){var _=["Could not find a path from ",s," to ",n,"."].join("");throw new Error(_)}return o},extract_shortest_path_from_predecessor_list:function(a,s){for(var n=[],o=s;o;)n.push(o),a[o],o=a[o];return n.reverse(),n},find_path:function(a,s,n){var o=t.single_source_shortest_paths(a,s,n);return t.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(a){var s=t.PriorityQueue,n={},o;a=a||{};for(o in s)s.hasOwnProperty(o)&&(n[o]=s[o]);return n.queue=[],n.sorter=a.sorter||s.default_sorter,n},default_sorter:function(a,s){return a.cost-s.cost},push:function(a,s){var n={value:a,cost:s};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(yn);var ks=yn.exports;(function(e){const t=ve,a=gs,s=vs,n=ms,o=ws,r=re,i=se,u=ks;function v(_){return unescape(encodeURIComponent(_)).length}function h(_,C,w){const k=[];let L;for(;(L=_.exec(w))!==null;)k.push({data:L[0],index:L.index,mode:C,length:L[0].length});return k}function D(_){const C=h(r.NUMERIC,t.NUMERIC,_),w=h(r.ALPHANUMERIC,t.ALPHANUMERIC,_);let k,L;return i.isKanjiModeEnabled()?(k=h(r.BYTE,t.BYTE,_),L=h(r.KANJI,t.KANJI,_)):(k=h(r.BYTE_KANJI,t.BYTE,_),L=[]),C.concat(w,k,L).sort(function(V,b){return V.index-b.index}).map(function(V){return{data:V.data,mode:V.mode,length:V.length}})}function T(_,C){switch(C){case t.NUMERIC:return a.getBitsLength(_);case t.ALPHANUMERIC:return s.getBitsLength(_);case t.KANJI:return o.getBitsLength(_);case t.BYTE:return n.getBitsLength(_)}}function y(_){return _.reduce(function(C,w){const k=C.length-1>=0?C[C.length-1]:null;return k&&k.mode===w.mode?(C[C.length-1].data+=w.data,C):(C.push(w),C)},[])}function M(_){const C=[];for(let w=0;w<_.length;w++){const k=_[w];switch(k.mode){case t.NUMERIC:C.push([k,{data:k.data,mode:t.ALPHANUMERIC,length:k.length},{data:k.data,mode:t.BYTE,length:k.length}]);break;case t.ALPHANUMERIC:C.push([k,{data:k.data,mode:t.BYTE,length:k.length}]);break;case t.KANJI:C.push([k,{data:k.data,mode:t.BYTE,length:v(k.data)}]);break;case t.BYTE:C.push([{data:k.data,mode:t.BYTE,length:v(k.data)}])}}return C}function I(_,C){const w={},k={start:{}};let L=["start"];for(let B=0;B<_.length;B++){const V=_[B],b=[];for(let P=0;P=0&&i<=6&&(u===0||u===6)||u>=0&&u<=6&&(i===0||i===6)||i>=2&&i<=4&&u>=2&&u<=4?e.set(o+i,r+u,!0,!0):e.set(o+i,r+u,!1,!0))}}function As(e){const t=e.size;for(let a=8;a>i&1)===1,e.set(n,o,r,!0),e.set(o,n,r,!0)}function lt(e,t,a){const s=e.size,n=Bs.getEncodedBits(t,a);let o,r;for(o=0;o<15;o++)r=(n>>o&1)===1,o<6?e.set(o,8,r,!0):o<8?e.set(o+1,8,r,!0):e.set(s-15+o,8,r,!0),o<8?e.set(8,s-o-1,r,!0):o<9?e.set(8,15-o-1+1,r,!0):e.set(8,15-o-1,r,!0);e.set(s-8,8,1,!0)}function Ns(e,t){const a=e.size;let s=-1,n=a-1,o=7,r=0;for(let i=a-1;i>0;i-=2)for(i===6&&i--;;){for(let u=0;u<2;u++)if(!e.isReserved(n,i-u)){let v=!1;r>>o&1)===1),e.set(n,i-u,v),o--,o===-1&&(r++,o=7)}if(n+=s,n<0||a<=n){n-=s,s=-s;break}}}function Ls(e,t,a){const s=new bs;a.forEach(function(u){s.put(u.mode.bit,4),s.put(u.getLength(),Ms.getCharCountIndicator(u.mode,e)),u.write(s)});const n=Ge.getSymbolTotalCodewords(e),o=ft.getTotalCodewordsCount(e,t),r=(n-o)*8;for(s.getLengthInBits()+4<=r&&s.put(0,4);s.getLengthInBits()%8!==0;)s.putBit(0);const i=(r-s.getLengthInBits())/8;for(let u=0;uQe.section||Xe.query.section||""),he=y(),ve=y([]),r=Y({}),N=y([]),Q=y(""),F=y([]),X=y(""),D=y([]),Z=y(""),K=y([]),ee=y(""),le=y(""),G=y([]),ce=y(!1),ye=y(!1),R=Y({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),Ce=y(!0),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),de=y(!1),T=y(null),Pe=y(!0),re=y(!1),ge=H({get:()=>String(r.search_proxy_enabled)==="true",set:s=>{r.search_proxy_enabled=s?"true":"false"}}),Se=H({get:()=>String(r.pansou_web_enabled)==="true",set:s=>{r.pansou_web_enabled=s?"true":"false"}}),Ue=H({get:()=>String(r.search_all_channels)==="true",set:s=>{r.search_all_channels=s?"true":"false"}}),ze=H({get:()=>String(r.auto_update_enabled)==="true",set:s=>{r.auto_update_enabled=s?"true":"false"}}),C=Y({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),_e=y(!1),be=y(!1),Te=y(""),xe=y(!1),je=y("");async function Ze(){try{const s=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Object.assign(C,e)}}catch{}}async function el(){try{const s=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();e.date&&(je.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function ll(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...C})})}catch{}}async function tl(){_e.value=!0;try{const s=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Te.value=e.content,xe.value=!0}}finally{_e.value=!1}}async function sl(){be.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?f.success("测试报告已发送到全局通知通道"):f.error("发送失败")}catch{f.error("发送失败")}finally{be.value=!1}}const Ie=y([]),$=y({}),we=y(!1),Oe=y([]);async function al(){try{const s=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!s.ok)return;const e=await s.json(),o=Array.isArray(e)?[...new Set(e.map(i=>i.promotion_account||"").filter(Boolean))]:[];Oe.value=o}catch{}}const m=Y({id:null,account:"",channel:"",channelParams:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}});function ol(){m.channelParams={}}const nl=H(()=>{var e;const s={};for(const[o,i]of Object.entries($.value))(e=v.channels[o])!=null&&e._enabled&&(s[o]=i);return s}),v=Y({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},eventTemplates:{on_save_success:{title:"✅ 转存成功",content:`**{cloud_type}** · {nickname} +文件: {file_name} +大小: {file_size} +耗时: {duration}s +链接: {share_url}`},on_save_fail:{title:"❌ 转存连续失败 {fail_count} 次",content:`**{cloud_type}** · {nickname} +连续失败次数: {fail_count} +最后失败: {error_message} +请检查网盘状态`},on_cookie_expire:{title:"⚠️ Cookie 已过期",content:`**{cloud_type}** · {nickname} +Cookie 已过期或失效,请重新登录 +最后操作: {share_url}`},on_cleanup:{title:"🧹 清理完成",content:`**{cloud_type}** · {nickname} +清理完成 +释放空间: {freed_space}`}}});function il(s){var e,o,i,k;if(s){m.id=s.id,m.account=s.account;const u=s.notify_config||{},b=Object.keys(u.channels||{});m.channel=b[0]||"",m.channelParams=b[0]?u.channels[b[0]]||{}:{},m.events={on_save_success:((e=u.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((o=u.events)==null?void 0:o.on_save_fail)!==!1,on_cookie_expire:((i=u.events)==null?void 0:i.on_cookie_expire)!==!1,on_cleanup:((k=u.events)==null?void 0:k.on_cleanup)===!0}}else m.id=null,m.account="",m.channel="",m.channelParams={},m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function dl(){m.id=null,m.account="",m.channel="",m.channelParams={},m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function ue(s,e){return((s.notify_config||{}).events||{})[e]===!0}async function rl(){if(!m.account){f.warning("请填写推广账号");return}we.value=!0;try{const s={account:m.account,notify_config:{channels:{},events:m.events}},e={};m.channel&&(e[m.channel]={...m.channelParams}),s.notify_config.channels=e,m.id?await fetch("/api/admin/push-users/"+m.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)});const o=!!m.id;m.id=null,m.account="",m.channel="",m.channelParams={},m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},f.success(o?"推送用户已更新":"推送用户已添加"),await ke()}catch(s){f.error(s.message||"保存失败")}finally{we.value=!1}}async function ke(){try{const s=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});s.ok&&(Ie.value=await s.json())}catch(s){console.error("Failed to load push users",s)}}async function ul(){try{$.value=await at()}catch(s){console.error("Failed to load providers",s)}}async function pl(s){try{await fetch("/api/admin/push-users/"+s.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),f.success("已删除"),await ke()}catch(e){f.error(e.message||"删除失败")}}function Ae(s){var o;return((o=s.notify_config)==null?void 0:o.channels)||{}}function fl(s){var e;return((e=$.value[s])==null?void 0:e.label)||s}function ml(s){return Object.keys(Ae(s)).length>0}function vl(s){var u;const e=((u=s.notify_config)==null?void 0:u.channels)||{},o=Object.keys(e);if(o.length===0)return"";const i=e[o[0]]||{},k=[];for(const[b,P]of Object.entries(i))if(P&&typeof P=="string"){const w=b.includes("token")||b.includes("key")||b.includes("secret")||b.includes("password")?P.substring(0,4)+"***":P.length>20?P.substring(0,20)+"...":P;k.push(w)}return k.join(" | ")}function cl(){const s={};for(const[e,o]of Object.entries($.value)){s[e]={_enabled:!1,_testing:!1};for(const i of o.params||[])s[e][i.key]=i.default||""}v.channels=s,v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function yl(){try{const o=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(i=>i.key==="global_notify_config");if(o&&o.value)try{const i=JSON.parse(o.value),k=i.channels||{};for(const[u,b]of Object.entries(k))if(v.channels[u]){v.channels[u]._enabled=!0;for(const[P,w]of Object.entries(b))v.channels[u][P]=w}if(i.events&&(v.events.on_save_success=i.events.on_save_success!==!1,v.events.on_save_fail=i.events.on_save_fail!==!1,v.events.on_cookie_expire=i.events.on_cookie_expire!==!1,v.events.on_cleanup=i.events.on_cleanup===!0),i.eventTemplates)for(const[u,b]of Object.entries(i.eventTemplates))v.eventTemplates[u]=b}catch{}}catch{}}const pe=y(!1),B=y(""),gl=H(()=>({on_save_success:"转存成功",on_save_fail:"转存失败",on_cookie_expire:"Cookie过期",on_cleanup:"清理完成"})[B.value]||"");function fe(s){B.value=s,pe.value=!0,v.eventTemplates[s]||(v.eventTemplates[s]={title:"",content:""})}async function _l(s){const e=v.channels[s];if(!(!e||!e._enabled)){e._testing=!0;try{const o=await nt(s);o.success?f.success(o.message):f.error(o.message)}catch(o){f.error(o.message||"测试失败")}finally{e._testing=!1}}}const j=Y({oldPassword:"",newPassword:"",confirmPassword:""}),bl={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"新密码至少需要6个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认新密码",trigger:"blur"},{validator:(s,e,o)=>{e!==j.newPassword?o(new Error("两次输入的密码不一致")):o()},trigger:"blur"}]};Yl(async()=>{try{ve.value=await tt();for(const u of ve.value)r[u.key]=u.value;const s=String(r.title_filter_rules||"");N.value=s.split(` +`).filter(u=>u.trim());const e=String(r.link_invalid_keywords||"");F.value=e.split(` +`).filter(u=>u.trim());const o=String(r.quark_ad_keywords||"");D.value=o.split(` +`).filter(u=>u.trim());const i=String(r.quark_warning_folder_names||"");K.value=i.split(` +`).filter(u=>u.trim());const k=String(r.quark_sus_extensions||"");G.value=k.split(` +`).filter(u=>u.trim())}catch{f.error("加载系统配置失败")}try{const s=await st();Object.assign(R,s)}catch{R.db_size="无法读取"}finally{Ce.value=!1}Ve(),await ul(),cl(),await yl(),ke(),Ze(),el(),al()}),Ql($,()=>{for(const[s,e]of Object.entries($.value))if(!v.channels[s]){v.channels[s]={_enabled:!1,_testing:!1};for(const o of e.params||[])v.channels[s][o.key]=o.default||""}});async function xl(){var e,o;const s=String(r.redis_url||"redis://redis:6379");se.value=!0;try{const i=await it(s);i.ok?f.success(`✅ Redis 连接成功 — ${i.info}`):f.error(`❌ Redis 连接失败 — ${i.info}`)}catch(i){f.error(((o=(e=i.response)==null?void 0:e.data)==null?void 0:o.error)||"测试请求失败")}finally{se.value=!1}}async function Ve(){Pe.value=!0;try{const s=localStorage.getItem("admin_token"),e={};s&&(e.Authorization="Bearer "+s);const o=await fetch("/api/admin/pansou-info",{headers:e});if(!o.ok)throw new Error("HTTP "+o.status);const i=await o.json();T.value=i}catch{T.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{Pe.value=!1}}async function wl(){re.value=!0;try{const s=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};s&&(e.Authorization="Bearer "+s);const i=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();i.ok?(f.success("✅ PanSou 已更新并重启"),setTimeout(()=>Ve(),3e3)):f.error("❌ 更新失败 — "+(i.error||"未知错误"))}catch(s){f.error(s.message||"更新请求失败")}finally{re.value=!1}}async function kl(){var s,e;ae.value=!0;try{const o=await te({type:"pansou",url:String(r.pansou_url||"")});o.ok?(Ve(),f.success(`✅ PanSou 连接成功 — ${o.info}`)):f.error(`❌ PanSou 连接失败 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function Vl(){var s,e;oe.value=!0;try{const o=await te({type:"video_parser",url:String(r.video_parser_url||"")});o.ok?f.success(`✅ 视频解析服务连接成功 — ${o.info}`):f.error(`❌ 视频解析服务连接失败 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function hl(){var s,e;ne.value=!0;try{const o=await te({type:"tmdb",token:String(r.tmdb_api_token||"")});o.ok?f.success(`✅ TMDB 令牌有效 — ${o.info}`):f.error(`❌ TMDB 连接失败 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function Cl(){var s,e;ie.value=!0;try{const o=await te({type:"proxy",url:String(r.search_proxy_url||"")});o.ok?f.success(`✅ 搜索代理可用 — ${o.info}`):f.error(`❌ 搜索代理不可用 — ${o.info}`)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}async function Pl(){var s,e;de.value=!0;try{const o=String(r.ip_geo_api_url||"");if(!o){f.warning("请先输入 IP 归属地查询 API 地址");return}const i=await te({type:"ip_geo",url:o});i.ok?f.success("✅ IP 归属地接口可用 — "+i.info):f.error("❌ IP 归属地接口不可用 — "+i.info)}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{de.value=!1}}function Sl(){const s=Q.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)N.value.includes(i)||(N.value.push(i),o++);Q.value="",Re(),o>0?f.success(`已添加 ${o} 条规则`):f.info("所有规则已存在")}function Ul(s){N.value.splice(s,1),Re()}function zl(s){return s.startsWith("#")?"info":s.startsWith("/")&&(s.endsWith("/")||s.endsWith("/g")||s.endsWith("/i")||s.endsWith("/gi"))?"warning":""}function Re(){r.title_filter_rules=N.value.join(` +`)}function Tl(){const s=X.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)F.value.includes(i)||(F.value.push(i),o++);X.value="",$e(),o>0?f.success(`已添加 ${o} 个关键词`):f.info("所有关键词已存在")}function jl(s){F.value.splice(s,1),$e()}function $e(){r.link_invalid_keywords=F.value.join(` +`)}function Il(){const s=Z.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)D.value.includes(i)||(D.value.push(i),o++);Z.value="",Be(),o>0?f.success():f.info("所有关键词已存在")}function Ol(s){D.value.splice(s,1),Be()}function Be(){r.quark_ad_keywords=D.value.join(` +`)}function Al(){const s=ee.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)K.value.includes(i)||(K.value.push(i),o++);ee.value="",Ee(),o>0?f.success():f.info("所有文件夹名已存在")}function Rl(s){K.value.splice(s,1),Ee()}function Ee(){r.quark_warning_folder_names=K.value.join(` +`)}function $l(){const s=le.value.trim();if(!s)return;const e=s.split(` +`).map(i=>i.trim().toLowerCase().replace(/^\./,"")).filter(i=>i);let o=0;for(const i of e)G.value.includes(i)||(G.value.push(i),o++);le.value="",Le(),o>0?f.success("已添加 ${added} 个后缀"):f.info("所有后缀已存在")}function Bl(s){G.value.splice(s,1),Le()}function Le(){r.quark_sus_extensions=G.value.join(` +`)}async function El(){var s,e;ce.value=!0;try{const o={};for(const[k,u]of Object.entries(v.channels))if(u._enabled){const b={};for(const[P,w]of Object.entries(u))!P.startsWith("_")&&w!==""&&(b[P]=String(w));Object.keys(b).length>0&&(o[k]=b)}const i=ve.value.map(k=>({key:k.key,value:String(r[k.key]??k.value)}));await ll(),i.push({key:"global_notify_config",value:JSON.stringify({channels:o,events:v.events,eventTemplates:v.eventTemplates})}),await ot(i),f.success("配置已保存")}catch(o){f.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"保存失败")}finally{ce.value=!1}}async function Ll(){var e,o,i;if(await((e=he.value)==null?void 0:e.validate().catch(()=>!1))){ye.value=!0;try{const k=await dt(j.oldPassword,j.newPassword);k.success?(f.success("✅ 密码修改成功,下次登录请使用新密码"),j.oldPassword="",j.newPassword="",j.confirmPassword=""):f.error(k.message)}catch(k){f.error(((i=(o=k.response)==null?void 0:o.data)==null?void 0:i.error)||"密码修改失败")}finally{ye.value=!1}}}const Ne=y();function Nl(){var s;(s=Ne.value)==null||s.click()}async function Fl(s){var i,k,u;const e=s.target,o=(i=e.files)==null?void 0:i[0];if(o){if(!o.type.startsWith("image/")){f.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(o.size>2*1024*1024){f.error("图片大小不能超过 2MB"),e.value="";return}try{const b=await rt(o);b.success?(r.site_logo=b.url,f.success("✅ LOGO 已上传并生效")):f.error(b.message)}catch(b){f.error(((u=(k=b.response)==null?void 0:k.data)==null?void 0:u.error)||"上传失败")}e.value=""}}async function Dl(){try{r.site_logo="",await ut("site_logo",""),f.success("已移除 LOGO")}catch{f.error("移除失败")}}return(s,e)=>{const o=h("el-input"),i=h("el-form-item"),k=h("el-icon"),u=h("el-button"),b=h("el-form"),P=h("el-card"),w=h("el-switch"),E=h("el-divider"),Fe=h("el-radio"),Kl=h("el-radio-group"),J=h("el-input-number"),S=h("el-tag"),Gl=h("el-collapse-item"),Wl=h("el-collapse"),De=h("el-option"),Ke=h("el-select"),W=h("el-table-column"),ql=h("el-popconfirm"),Ml=h("el-table"),Hl=h("el-time-picker"),Ge=h("el-dialog");return p(),g("div",ft,[q(t(P,{id:"section-sys-site"},{header:n(()=>[...e[56]||(e[56]=[l("span",null,"🌐 网站设置",-1)])]),default:n(()=>[t(b,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"网站名称"},{default:n(()=>[t(o,{modelValue:r.site_name,"onUpdate:modelValue":e[0]||(e[0]=a=>r.site_name=a),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[57]||(e[57]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),t(i,{label:"网站 LOGO"},{default:n(()=>[l("div",mt,[l("div",vt,[t(u,{type:"primary",onClick:Nl},{icon:n(()=>[t(k,null,{default:n(()=>[t(He(Xl))]),_:1})]),default:n(()=>[e[58]||(e[58]=d(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:Ne,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Fl},null,544),e[59]||(e[59]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 推荐 "),l("strong",null,"320×60"),d(" 或宽比例(如 4:1),JPEG/PNG/WebP,最大 2MB。"),l("br"),d(" LOGO 同时也作为搜索结果无封面图时的兜底图使用。 ")],-1))]),r.site_logo?(p(),g("div",ct,[l("img",{src:String(r.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=a=>a.target.style.display="none")},null,40,yt),t(u,{size:"small",type:"danger",plain:"",onClick:Dl},{default:n(()=>[...e[60]||(e[60]=[d("移除",-1)])]),_:1})])):L("",!0)])]),_:1}),t(i,{label:"底部免责声明"},{default:n(()=>[t(o,{modelValue:r.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=a=>r.site_disclaimer=a),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[61]||(e[61]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),t(i,{label:"滚动通知文字"},{default:n(()=>[t(o,{modelValue:r.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=a=>r.site_marquee=a),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),t(i,{label:"系统时区"},{default:n(()=>[t(o,{modelValue:r.timezone,"onUpdate:modelValue":e[4]||(e[4]=a=>r.timezone=a),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[M,!z.value||z.value==="sys-site"]]),q(t(P,{id:"section-sys-services"},{header:n(()=>[...e[64]||(e[64]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:n(()=>[t(b,{"label-width":"180px","label-position":"left"},{default:n(()=>{var a,c,x,A,We,qe;return[t(i,{label:"PanSou 搜索引擎地址"},{default:n(()=>{var U,Me;return[l("div",gt,[t(o,{modelValue:r.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=me=>r.pansou_url=me),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ae.value,onClick:kl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),t(u,{type:"warning",loading:re.value,onClick:wl,size:"default",style:{width:"130px"},disabled:!((U=T.value)!=null&&U.hasUpdate)},{default:n(()=>{var me;return[d(_(re.value?"更新中...":(me=T.value)!=null&&me.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Me=T.value)!=null&&Me.latestVersion?(p(),g("span",_t,_(T.value.latestVersion),1)):L("",!0)]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",bt,[l("div",xt,[l("div",{class:Je(["db-stat-value",((a=T.value)==null?void 0:a.status)==="connected"?"text-success":"text-warning"])},_(((c=T.value)==null?void 0:c.status)==="connected"?"已连接":T.value?"未连接":"-"),3),e[66]||(e[66]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",wt,[l("div",kt,_(((x=T.value)==null?void 0:x.channelCount)??"-"),1),e[67]||(e[67]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",Vt,[l("div",ht,_(((A=T.value)==null?void 0:A.pluginCount)??"-"),1),e[68]||(e[68]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",Ct,[l("div",Pt,_(((We=T.value)==null?void 0:We.diskCount)??"-"),1),e[69]||(e[69]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",St,[l("div",Ut,_(((qe=T.value)==null?void 0:qe.version)||"-"),1),e[70]||(e[70]=l("div",{class:"db-stat-label"},"版本",-1))])]),t(i,{label:"PanSou Web 端访问"},{default:n(()=>[t(w,{modelValue:Se.value,"onUpdate:modelValue":e[6]||(e[6]=U=>Se.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[71]||(e[71]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 开启后可通过 "),l("code",null,"/pansou/"),d(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),t(i,{label:"启用代理"},{default:n(()=>[t(w,{modelValue:ge.value,"onUpdate:modelValue":e[7]||(e[7]=U=>ge.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[72]||(e[72]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),ge.value?(p(),V(i,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:n(()=>[l("div",zt,[t(o,{modelValue:r.search_proxy_url,"onUpdate:modelValue":e[8]||(e[8]=U=>r.search_proxy_url=U),placeholder:"http://127.0.0.1:7890",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ie.value,onClick:Cl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(ie.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[73]||(e[73]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):L("",!0),t(i,{label:"视频解析服务地址"},{default:n(()=>[l("div",Tt,[t(o,{modelValue:r.video_parser_url,"onUpdate:modelValue":e[9]||(e[9]=U=>r.video_parser_url=U),placeholder:"http://video-parser:3001",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:oe.value,onClick:Vl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(oe.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[74]||(e[74]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),t(i,{label:"TMDB 读取令牌"},{default:n(()=>[l("div",jt,[t(o,{modelValue:r.tmdb_api_token,"onUpdate:modelValue":e[10]||(e[10]=U=>r.tmdb_api_token=U),type:"password","show-password":"",placeholder:"输入 TMDB API 读取令牌(Bearer Token)",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ne.value,onClick:hl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(ne.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[75]||(e[75]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" 用于搜索 TMDB 获取评分、导演、演员等完整内容信息。 "),l("a",{href:"https://www.themoviedb.org/settings/api",target:"_blank",rel:"noopener",style:{color:"var(--primary-color)"}},"获取令牌 →")],-1))]),_:1}),t(i,{label:"IP 归属地查询"},{default:n(()=>[l("div",It,[t(o,{modelValue:r.ip_geo_api_url,"onUpdate:modelValue":e[11]||(e[11]=U=>r.ip_geo_api_url=U),placeholder:"https://cn.apihz.cn/api/ip/chaapi.php?id=xxx&key=***&ip={ip}&td=0",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:de.value,onClick:Pl,size:"default",style:{width:"100px"}},{default:n(()=>[d(_(de.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[76]||(e[76]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),d(" 会被替换为实际 IP。 ")],-1)),e[77]||(e[77]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),t(E,{"content-position":"left"},{default:n(()=>[...e[78]||(e[78]=[d("Redis 缓存",-1)])]),_:1}),t(i,{label:"Redis 连接地址"},{default:n(()=>[l("div",Ot,[t(o,{modelValue:r.redis_url,"onUpdate:modelValue":e[12]||(e[12]=U=>r.redis_url=U),placeholder:"redis://:***@172.17.0.1:6379",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",size:"default",loading:se.value,onClick:xl,style:{width:"100px"}},{default:n(()=>[d(_(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[79]||(e[79]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" Redis 用于缓存搜索验证结果,提升响应速度。"),l("br"),l("strong",null,"带密码格式:"),l("code",null,"redis://:你的密码@地址:6379"),l("br"),d(" 修改后保存配置即可生效,无需重启。"),l("strong",null,"切换 Redis 只会清空缓存,不影响任何重要数据。")],-1))]),_:1})]}),_:1}),Ce.value?(p(),g("div",At,[t(k,{class:"is-loading",size:20},{default:n(()=>[t(He(Zl))]),_:1}),e[80]||(e[80]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(p(),g("div",Rt,[l("div",$t,[l("div",{class:Je(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},_(R.redis_status),3),e[81]||(e[81]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",Bt,[l("div",Et,_(R.db_size),1),e[82]||(e[82]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",Lt,[l("div",Nt,_(R.save_records),1),e[83]||(e[83]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Ft,[l("div",Dt,_(R.search_stats),1),e[84]||(e[84]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",Kt,[l("div",Gt,_(R.cloud_configs),1),e[85]||(e[85]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Wt,[l("div",qt,_(R.content_cache),1),e[86]||(e[86]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[M,!z.value||z.value==="sys-services"]]),q(t(P,{id:"section-sys-strategy"},{header:n(()=>[...e[87]||(e[87]=[l("span",null,"🔧 性能配置",-1)])]),default:n(()=>[l("div",Mt,[t(E,{"content-position":"left"},{default:n(()=>[...e[88]||(e[88]=[d("搜索结果返回方式",-1)])]),_:1}),l("div",Ht,[l("div",Jt,[e[89]||(e[89]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),t(w,{modelValue:r.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=a=>r.link_validation_enabled=a),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Yt,[l("div",Qt,[e[93]||(e[93]=l("span",{class:"field-label"},"搜索结果方式",-1)),t(Kl,{modelValue:r.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=a=>r.search_strategy=a)},{default:n(()=>[t(Fe,{value:"wait_all"},{default:n(()=>[...e[91]||(e[91]=[d("等待全部结果后展示",-1)])]),_:1}),t(Fe,{value:"stream_channel"},{default:n(()=>[...e[92]||(e[92]=[d("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),t(E,{"content-position":"left"},{default:n(()=>[...e[95]||(e[95]=[d("搜索策略",-1)])]),_:1}),l("div",Xt,[l("div",Zt,[l("div",es,[e[96]||(e[96]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),t(w,{modelValue:Ue.value,"onUpdate:modelValue":e[15]||(e[15]=a=>Ue.value=a),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[97]||(e[97]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",ls,[l("div",ts,[e[98]||(e[98]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),t(J,{modelValue:r.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=a=>r.search_result_limit=a),min:1,max:100},null,8,["modelValue"])]),e[99]||(e[99]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",ss,[l("div",as,[e[100]||(e[100]=l("span",{class:"field-label"},"验证并发数",-1)),t(J,{modelValue:r.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=a=>r.validation_concurrency=a),min:1,max:50},null,8,["modelValue"])]),e[101]||(e[101]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",os,[l("div",ns,[e[102]||(e[102]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=a=>r.validation_cache_ttl_valid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[103]||(e[103]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",is,[l("div",ds,[e[104]||(e[104]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=a=>r.validation_cache_ttl_invalid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",rs,[l("div",us,[e[106]||(e[106]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),t(J,{modelValue:r.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=a=>r.validation_timeout=a),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[107]||(e[107]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),t(E,{"content-position":"left"},{default:n(()=>[...e[108]||(e[108]=[d("链接检测配置",-1)])]),_:1}),l("div",ps,[e[110]||(e[110]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",fs,[t(o,{modelValue:Q.value,"onUpdate:modelValue":e[21]||(e[21]=a=>Q.value=a),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Sl,disabled:!Q.value.trim()},{default:n(()=>[...e[109]||(e[109]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),N.value.length>0?(p(),g("div",ms,[(p(!0),g(I,null,O(N.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:zl(a),"disable-transitions":!1,onClose:x=>Ul(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["type","onClose"]))),128))])):(p(),g("div",vs,"暂无过滤规则")),e[111]||(e[111]=l("div",{class:"filter-rule-help"},[l("div",{class:"help-title"},"📖 规则说明"),l("div",{class:"help-row"},[l("code",null,"# 注释内容"),d(" — "),l("code",null,"#"),d(" 后必须跟"),l("strong",null,"空格"),d("才会被识别为注释,单纯的 "),l("code",null,"#动漫"),d(" 会被当作要移除的文本")]),l("div",{class:"help-row"},[l("code",null,"/正则表达式/标志"),d(" — 正则匹配,匹配到的内容会被删除。如 "),l("code",null,"/^\\\\d+[、,.\\\\s]/"),d(" 去掉开头的序号")]),l("div",{class:"help-row"},[l("code",null,"纯文本"),d(" — 直接写要移除的文字(支持 emoji),凡是标题中含有的都会被删除")])],-1))]),l("div",cs,[e[113]||(e[113]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",ys,[t(o,{modelValue:X.value,"onUpdate:modelValue":e[22]||(e[22]=a=>X.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Tl,disabled:!X.value.trim()},{default:n(()=>[...e[112]||(e[112]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[114]||(e[114]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),F.value.length>0?(p(),g("div",gs,[(p(!0),g(I,null,O(F.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:x=>jl(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",_s,"暂无失效关键词,所有链接将默认判为有效"))]),t(E,{"content-position":"left"},{default:n(()=>[...e[115]||(e[115]=[d("夸克网盘转存清理",-1)])]),_:1}),l("div",bs,[e[117]||(e[117]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",xs,[t(o,{modelValue:Z.value,"onUpdate:modelValue":e[23]||(e[23]=a=>Z.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Il,disabled:!Z.value.trim()},{default:n(()=>[...e[116]||(e[116]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[118]||(e[118]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),D.value.length>0?(p(),g("div",ws,[(p(!0),g(I,null,O(D.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"warning","disable-transitions":!1,onClose:x=>Ol(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",ks,"暂未配置广告关键词,不会进行广告清理"))]),l("div",Vs,[e[120]||(e[120]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",hs,[t(o,{modelValue:ee.value,"onUpdate:modelValue":e[24]||(e[24]=a=>ee.value=a),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Al,disabled:!ee.value.trim()},{default:n(()=>[...e[119]||(e[119]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[121]||(e[121]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),K.value.length>0?(p(),g("div",Cs,[(p(!0),g(I,null,O(K.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"info","disable-transitions":!1,onClose:x=>Rl(c)},{default:n(()=>[d(_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",Ps,"暂未配置警示文件夹"))]),l("div",Ss,[e[123]||(e[123]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",Us,[t(o,{modelValue:le.value,"onUpdate:modelValue":e[25]||(e[25]=a=>le.value=a),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:$l,disabled:!le.value.trim()},{default:n(()=>[...e[122]||(e[122]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[124]||(e[124]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),G.value.length>0?(p(),g("div",zs,[(p(!0),g(I,null,O(G.value,(a,c)=>(p(),V(S,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:x=>Bl(c)},{default:n(()=>[d("."+_(a),1)]),_:2},1032,["onClose"]))),128))])):(p(),g("div",Ts,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[M,!z.value||z.value==="sys-strategy"]]),q(t(P,{id:"section-sys-password"},{header:n(()=>[...e[125]||(e[125]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:n(()=>[t(b,{ref_key:"passwordFormRef",ref:he,model:j,rules:bl,"label-width":"120px","label-position":"left"},{default:n(()=>[t(i,{label:"原密码",prop:"oldPassword"},{default:n(()=>[t(o,{modelValue:j.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=a=>j.oldPassword=a),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"新密码",prop:"newPassword"},{default:n(()=>[t(o,{modelValue:j.newPassword,"onUpdate:modelValue":e[27]||(e[27]=a=>j.newPassword=a),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"确认新密码",prop:"confirmPassword"},{default:n(()=>[t(o,{modelValue:j.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=a=>j.confirmPassword=a),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,null,{default:n(()=>[t(u,{type:"primary",loading:ye.value,onClick:Ll},{default:n(()=>[...e[126]||(e[126]=[d("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[M,!z.value||z.value==="sys-password"]]),q(t(P,{id:"section-sys-notify"},{header:n(()=>[...e[127]||(e[127]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:n(()=>[t(Wl,{"model-value":["global"]},{default:n(()=>[t(Gl,{title:"全局推送(管理员兜底)",name:"global"},{default:n(()=>[l("div",js,[t(b,{"label-width":"140px","label-position":"left"},{default:n(()=>[l("div",Is,[(p(!0),g(I,null,O($.value,(a,c)=>(p(),g("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",Os,[t(w,{modelValue:v.channels[c]._enabled,"onUpdate:modelValue":x=>v.channels[c]._enabled=x,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,_(a.label),1),v.channels[c]._enabled?(p(),V(u,{key:0,size:"small",text:"",type:"primary",onClick:x=>_l(c),loading:v.channels[c]._testing},{default:n(()=>[...e[128]||(e[128]=[d("测试",-1)])]),_:1},8,["onClick","loading"])):L("",!0)]),v.channels[c]._enabled?(p(),g("div",As,[(p(!0),g(I,null,O(a.params,x=>(p(),V(i,{key:x.key,label:x.label,style:{"margin-bottom":"6px"}},{default:n(()=>[x.type==="password"?(p(),V(o,{key:0,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A,type:"password","show-password":"",placeholder:x.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):x.type==="switch"?(p(),V(w,{key:1,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A},null,8,["modelValue","onUpdate:modelValue"])):x.type==="number"?(p(),V(J,{key:2,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(p(),V(o,{key:3,modelValue:v.channels[c][x.key],"onUpdate:modelValue":A=>v.channels[c][x.key]=A,placeholder:x.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):L("",!0)]))),128))]),t(E,{"content-position":"left"},{default:n(()=>[...e[129]||(e[129]=[d("全局事件开关",-1)])]),_:1}),l("div",Rs,[l("div",$s,[t(w,{modelValue:v.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=a=>v.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[30]||(e[30]=a=>fe("on_save_success"))},{default:n(()=>[...e[130]||(e[130]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Bs,[t(w,{modelValue:v.events.on_save_fail,"onUpdate:modelValue":e[31]||(e[31]=a=>v.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[32]||(e[32]=a=>fe("on_save_fail"))},{default:n(()=>[...e[131]||(e[131]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Es,[t(w,{modelValue:v.events.on_cookie_expire,"onUpdate:modelValue":e[33]||(e[33]=a=>v.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[34]||(e[34]=a=>fe("on_cookie_expire"))},{default:n(()=>[...e[132]||(e[132]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Ls,[t(w,{modelValue:v.events.on_cleanup,"onUpdate:modelValue":e[35]||(e[35]=a=>v.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[36]||(e[36]=a=>fe("on_cleanup"))},{default:n(()=>[...e[133]||(e[133]=[d("✏️ 编辑模板",-1)])]),_:1})])]),e[134]||(e[134]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1))]),_:1})])]),_:1})]),_:1}),e[144]||(e[144]=d()),t(E,{"content-position":"left"},{default:n(()=>[...e[135]||(e[135]=[d("添加推送用户",-1)])]),_:1}),l("div",Ns,[l("div",Fs,[t(Ke,{modelValue:m.account,"onUpdate:modelValue":e[37]||(e[37]=a=>m.account=a),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:n(()=>[(p(!0),g(I,null,O(Oe.value,a=>(p(),V(De,{key:a,label:a,value:a},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(Ke,{modelValue:m.channel,"onUpdate:modelValue":e[38]||(e[38]=a=>m.channel=a),clearable:"",placeholder:"选择消息频道",style:{width:"220px"},onChange:ol},{default:n(()=>[(p(!0),g(I,null,O(nl.value,(a,c)=>(p(),V(De,{key:c,label:a.label,value:c},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),m.channel&&$.value[m.channel]?(p(!0),g(I,{key:0},O($.value[m.channel].params,a=>(p(),g("div",{key:a.key,style:{display:"inline-flex","align-items":"center",gap:"4px"}},[l("span",Ds,_(a.label)+":",1),a.type==="password"?(p(),V(o,{key:0,modelValue:m.channelParams[a.key],"onUpdate:modelValue":c=>m.channelParams[a.key]=c,type:"password","show-password":"",placeholder:a.placeholder||a.label,style:{width:"200px"},size:"small"},null,8,["modelValue","onUpdate:modelValue","placeholder"])):(p(),V(o,{key:1,modelValue:m.channelParams[a.key],"onUpdate:modelValue":c=>m.channelParams[a.key]=c,placeholder:a.placeholder||a.label,style:{width:"200px"},size:"small"},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]))),128)):L("",!0),l("div",Ks,[t(w,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[39]||(e[39]=a=>m.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(w,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[40]||(e[40]=a=>m.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(w,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[41]||(e[41]=a=>m.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(w,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[42]||(e[42]=a=>m.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"])]),t(u,{type:"primary",size:"small",loading:we.value,onClick:rl},{default:n(()=>[d(_(m.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),m.id?(p(),V(u,{key:1,size:"small",onClick:dl},{default:n(()=>[...e[136]||(e[136]=[d("取消编辑",-1)])]),_:1})):L("",!0)])]),t(E,{"content-position":"left"},{default:n(()=>[...e[137]||(e[137]=[d("推送用户列表",-1)])]),_:1}),t(Ml,{data:Ie.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:n(()=>[t(W,{prop:"account",label:"推广账号","min-width":"140"}),t(W,{label:"转存成功",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_success")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[138]||(e[138]=[d("✔",-1)])]),_:1})):(p(),g("span",Gs,"—"))]),_:1}),t(W,{label:"转存失败",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_fail")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[139]||(e[139]=[d("✔",-1)])]),_:1})):(p(),g("span",Ws,"—"))]),_:1}),t(W,{label:"Cookie过期",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cookie_expire")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[140]||(e[140]=[d("✔",-1)])]),_:1})):(p(),g("span",qs,"—"))]),_:1}),t(W,{label:"清理完成",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cleanup")?(p(),V(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[141]||(e[141]=[d("✔",-1)])]),_:1})):(p(),g("span",Ms,"—"))]),_:1}),t(W,{label:"消息频道","min-width":"180"},{default:n(({row:a})=>[ml(a)?(p(),g(I,{key:0},[(p(!0),g(I,null,O(Ae(a),(c,x)=>(p(),V(S,{key:x,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:n(()=>[d(_(fl(x)),1)]),_:2},1024))),128)),l("span",Hs,_(vl(a)),1)],64)):(p(),g("span",Js,"走全局推送"))]),_:1}),t(W,{label:"操作",width:"180",fixed:"right"},{default:n(({row:a})=>[t(u,{text:"",type:"primary",size:"small",onClick:c=>il(a)},{default:n(()=>[...e[142]||(e[142]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(ql,{title:"确定删除该推送用户?",onConfirm:c=>pl(a)},{reference:n(()=>[t(u,{text:"",type:"danger",size:"small"},{default:n(()=>[...e[143]||(e[143]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[M,!z.value||z.value==="sys-notify"]]),q(t(P,{id:"section-sys-daily-report"},{header:n(()=>[l("div",Ys,[e[147]||(e[147]=l("span",null,"📊 每日汇报",-1)),l("div",null,[t(u,{size:"small",loading:_e.value,onClick:tl},{default:n(()=>[...e[145]||(e[145]=[d("📋 预览",-1)])]),_:1},8,["loading"]),t(u,{size:"small",type:"primary",loading:be.value,onClick:sl},{default:n(()=>[...e[146]||(e[146]=[d("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:n(()=>[t(b,{"label-width":"140px","label-position":"left"},{default:n(()=>[t(i,{label:"启用每日汇报"},{default:n(()=>[t(w,{modelValue:C.enabled,"onUpdate:modelValue":e[43]||(e[43]=a=>C.enabled=a),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),t(i,{label:"发送时间"},{default:n(()=>[t(Hl,{modelValue:C.time,"onUpdate:modelValue":e[44]||(e[44]=a=>C.time=a),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!C.enabled},null,8,["modelValue","disabled"]),e[148]||(e[148]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),t(i,{label:"报告内容"},{default:n(()=>[l("div",Qs,[t(w,{modelValue:C.includeSearch,"onUpdate:modelValue":e[45]||(e[45]=a=>C.includeSearch=a),"active-text":"搜索统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(w,{modelValue:C.includeSaves,"onUpdate:modelValue":e[46]||(e[46]=a=>C.includeSaves=a),"active-text":"转存统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(w,{modelValue:C.includeStorage,"onUpdate:modelValue":e[47]||(e[47]=a=>C.includeStorage=a),"active-text":"网盘容量",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(w,{modelValue:C.includeUsers,"onUpdate:modelValue":e[48]||(e[48]=a=>C.includeUsers=a),"active-text":"用户数",disabled:!C.enabled},null,8,["modelValue","disabled"])])]),_:1}),t(i,{label:"上次发送"},{default:n(()=>[l("span",null,_(je.value||"从未发送"),1)]),_:1})]),_:1}),t(Ge,{modelValue:xe.value,"onUpdate:modelValue":e[49]||(e[49]=a=>xe.value=a),title:"📊 每日汇报预览",width:"600px"},{default:n(()=>[l("div",Xs,_(Te.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[M,!z.value||z.value==="sys-daily-report"]]),q(t(P,{id:"section-sys-maintenance"},{header:n(()=>[...e[149]||(e[149]=[l("span",null,"🔄 系统维护",-1)])]),default:n(()=>[e[154]||(e[154]=d()),t(b,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"自动更新镜像"},{default:n(()=>[t(w,{modelValue:ze.value,"onUpdate:modelValue":e[50]||(e[50]=a=>ze.value=a),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[150]||(e[150]=d()),e[151]||(e[151]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[152]||(e[152]=d()),e[153]||(e[153]=l("div",{class:"form-tip",style:{color:"var(--(--el-color-warning,#e6a23c))"}}," 当前需手动在服务器执行:docker-compose -f /opt/CloudSearch/docker-compose.yml pull && docker-compose -f /opt/CloudSearch/docker-compose.yml up -d ",-1))]),_:1})]),_:1})]),_:1},512),[[M,!z.value||z.value==="sys-maintenance"]]),t(Ge,{modelValue:pe.value,"onUpdate:modelValue":e[54]||(e[54]=a=>pe.value=a),title:"✏️ 编辑消息模板 — "+gl.value,width:"560px",onClose:e[55]||(e[55]=a=>B.value="")},{footer:n(()=>[t(u,{onClick:e[53]||(e[53]=a=>pe.value=!1)},{default:n(()=>[...e[175]||(e[175]=[d("关闭",-1)])]),_:1})]),default:n(()=>[l("div",Zs,[e[164]||(e[164]=d(" 可用变量:",-1)),e[165]||(e[165]=l("br",null,null,-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[155]||(e[155]=[d("{cloud_type}",-1)])]),_:1}),e[166]||(e[166]=d(" 网盘类型 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[156]||(e[156]=[d("{nickname}",-1)])]),_:1}),e[167]||(e[167]=d(" 网盘昵称 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[157]||(e[157]=[d("{file_name}",-1)])]),_:1}),e[168]||(e[168]=d(" 文件名 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[158]||(e[158]=[d("{file_size}",-1)])]),_:1}),e[169]||(e[169]=d(" 文件大小 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[159]||(e[159]=[d("{duration}",-1)])]),_:1}),e[170]||(e[170]=d(" 耗时 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[160]||(e[160]=[d("{share_url}",-1)])]),_:1}),e[171]||(e[171]=d(" 分享链接 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[161]||(e[161]=[d("{fail_count}",-1)])]),_:1}),e[172]||(e[172]=d(" 连续失败次数 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[162]||(e[162]=[d("{error_message}",-1)])]),_:1}),e[173]||(e[173]=d(" 错误信息 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[163]||(e[163]=[d("{freed_space}",-1)])]),_:1}),e[174]||(e[174]=d(" 释放空间 ",-1))]),B.value&&v.eventTemplates[B.value]?(p(),V(b,{key:0,"label-width":"60px"},{default:n(()=>[t(i,{label:"标题"},{default:n(()=>[t(o,{modelValue:v.eventTemplates[B.value].title,"onUpdate:modelValue":e[51]||(e[51]=a=>v.eventTemplates[B.value].title=a),placeholder:"消息标题"},null,8,["modelValue"])]),_:1}),t(i,{label:"内容"},{default:n(()=>[t(o,{modelValue:v.eventTemplates[B.value].content,"onUpdate:modelValue":e[52]||(e[52]=a=>v.eventTemplates[B.value].content=a),type:"textarea",rows:5,placeholder:"消息正文,支持 Markdown 和 {变量}"},null,8,["modelValue"])]),_:1})]),_:1})):L("",!0)]),_:1},8,["modelValue","title"]),l("div",ea,[t(u,{type:"primary",size:"large",loading:ce.value,onClick:El},{default:n(()=>[...e[176]||(e[176]=[d(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),aa=pt(la,[["__scopeId","data-v-fd21d202"]]);export{aa as default}; diff --git a/source_clean/frontend/assets/SystemConfig-CswhThiW.js b/source_clean/frontend/assets/SystemConfig-CswhThiW.js deleted file mode 100644 index 4f8f8c3..0000000 --- a/source_clean/frontend/assets/SystemConfig-CswhThiW.js +++ /dev/null @@ -1,27 +0,0 @@ -import{d as Ml,o as Hl,E as p,x as Jl,a as f,c as g,K as q,L as M,f as t,w as n,b as l,v as H,h as y,i as Y,j as V,l as d,k as He,N as Yl,e as E,t as b,n as Je,y as h,M as Ql,F as O,r as A,z as Xl,u as Zl}from"./index-DLC2deeT.js";import{k as et,w as lt,x as tt,p as st,y as at,z as ot,A as te,B as nt,C as it,D as dt,_ as rt}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const ut={class:"system-config"},pt={class:"fallback-upload-wrap"},ft={class:"fallback-upload-row"},mt={key:0,class:"fallback-preview"},vt=["src"],ct={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},yt={key:0,style:{"font-size":"11px",color:"#e6a23c","white-space":"nowrap"}},gt={class:"pansou-status-grid"},_t={class:"db-stat-item"},bt={class:"db-stat-item"},xt={class:"db-stat-value"},wt={class:"db-stat-item"},kt={class:"db-stat-value"},Vt={class:"db-stat-item"},ht={class:"db-stat-value"},Ct={class:"db-stat-item"},St={class:"db-stat-value"},Ut={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Pt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},zt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Tt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},jt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},It={key:0,style:{"text-align":"center",padding:"16px"}},Ot={key:1,class:"db-status-grid"},At={class:"db-stat-item"},Rt={class:"db-stat-item"},$t={class:"db-stat-value"},Bt={class:"db-stat-item"},Et={class:"db-stat-value"},Lt={class:"db-stat-item"},Nt={class:"db-stat-value"},Ft={class:"db-stat-item"},Dt={class:"db-stat-value"},Gt={class:"db-stat-item"},Kt={class:"db-stat-value"},Wt={class:"strategy-section"},qt={class:"field-block"},Mt={class:"field-label-row"},Ht={class:"field-block"},Jt={class:"field-label-row"},Yt={class:"strategy-grid"},Qt={class:"grid-cell"},Xt={class:"field-label-row"},Zt={class:"grid-cell"},es={class:"field-label-row"},ls={class:"grid-cell"},ts={class:"field-label-row"},ss={class:"grid-cell"},as={class:"field-label-row"},os={class:"grid-cell"},ns={class:"field-label-row"},is={class:"grid-cell"},ds={class:"field-label-row"},rs={class:"field-block"},us={style:{display:"flex",gap:"8px","align-items":"stretch"}},ps={key:0,class:"tag-list"},fs={key:1,class:"tag-empty"},ms={class:"field-block"},vs={style:{display:"flex",gap:"8px","align-items":"stretch"}},cs={key:0,class:"tag-list"},ys={key:1,class:"tag-empty"},gs={class:"field-block"},_s={style:{display:"flex",gap:"8px","align-items":"stretch"}},bs={key:0,class:"tag-list"},xs={key:1,class:"tag-empty"},ws={class:"field-block"},ks={style:{display:"flex",gap:"8px","align-items":"stretch"}},Vs={key:0,class:"tag-list"},hs={key:1,class:"tag-empty"},Cs={class:"field-block"},Ss={style:{display:"flex",gap:"8px","align-items":"stretch"}},Us={key:0,class:"tag-list"},Ps={key:1,class:"tag-empty"},zs={class:"strategy-section"},Ts={style:{display:"grid","grid-template-columns":"repeat(2,1fr)",gap:"8px"}},js={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"6px"}},Is={key:0},Os={style:{display:"flex","flex-direction":"column",gap:"6px"}},As={style:{display:"flex","align-items":"center",gap:"8px"}},Rs={style:{display:"flex","align-items":"center",gap:"8px"}},$s={style:{display:"flex","align-items":"center",gap:"8px"}},Bs={style:{display:"flex","align-items":"center",gap:"8px"}},Es={style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"12px 16px","margin-bottom":"16px"}},Ls={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Ns={key:1,style:{color:"#ccc"}},Fs={key:1,style:{color:"#ccc"}},Ds={key:1,style:{color:"#ccc"}},Gs={key:1,style:{color:"#ccc"}},Ks={key:0,style:{color:"#909399","font-size":"12px"}},Ws={style:{display:"flex","align-items":"center","justify-content":"space-between"}},qs={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ms={style:{"white-space":"pre-wrap","font-family":"monospace",background:"var(--el-fill-color-light)",padding:"16px","border-radius":"8px","max-height":"500px","overflow-y":"auto"}},Hs={style:{"margin-bottom":"10px","font-size":"12px",color:"var(--el-text-color-secondary)","line-height":"2"}},Js={class:"save-bar"},Ys=Ml({__name:"SystemConfig",props:{section:{}},setup(Ye){const Qe=Ye,Xe=Xl();Zl();const P=H(()=>Qe.section||Xe.query.section||""),he=y(),ve=y([]),r=Y({}),L=y([]),Q=y(""),N=y([]),X=y(""),F=y([]),Z=y(""),D=y([]),ee=y(""),le=y(""),G=y([]),ce=y(!1),ye=y(!1),R=Y({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),Ce=y(!0),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),de=y(!1),z=y(null),Se=y(!0),re=y(!1),ge=H({get:()=>String(r.search_proxy_enabled)==="true",set:s=>{r.search_proxy_enabled=s?"true":"false"}}),Ue=H({get:()=>String(r.pansou_web_enabled)==="true",set:s=>{r.pansou_web_enabled=s?"true":"false"}}),Pe=H({get:()=>String(r.search_all_channels)==="true",set:s=>{r.search_all_channels=s?"true":"false"}}),ze=H({get:()=>String(r.auto_update_enabled)==="true",set:s=>{r.auto_update_enabled=s?"true":"false"}}),C=Y({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),_e=y(!1),be=y(!1),Te=y(""),xe=y(!1),je=y("");async function Ze(){try{const s=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Object.assign(C,e)}}catch{}}async function el(){try{const s=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();e.date&&(je.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function ll(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...C})})}catch{}}async function tl(){_e.value=!0;try{const s=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(s.ok){const e=await s.json();Te.value=e.content,xe.value=!0}}finally{_e.value=!1}}async function sl(){be.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?p.success("测试报告已发送到全局通知通道"):p.error("发送失败")}catch{p.error("发送失败")}finally{be.value=!1}}const Ie=y([]),K=y({}),we=y(!1),Oe=y([]);async function al(){try{const s=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!s.ok)return;const e=await s.json(),o=Array.isArray(e)?[...new Set(e.map(i=>i.promotion_account||"").filter(Boolean))]:[];Oe.value=o}catch{}}const c=Y({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ol=H(()=>{var e;const s={};for(const[o,i]of Object.entries(K.value))(e=m.channels[o])!=null&&e._enabled&&(s[o]=i);return s}),m=Y({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},eventTemplates:{on_save_success:{title:"✅ 转存成功",content:`**{cloud_type}** · {nickname} -文件: {file_name} -大小: {file_size} -耗时: {duration}s -链接: {share_url}`},on_save_fail:{title:"❌ 转存连续失败 {fail_count} 次",content:`**{cloud_type}** · {nickname} -连续失败次数: {fail_count} -最后失败: {error_message} -请检查网盘状态`},on_cookie_expire:{title:"⚠️ Cookie 已过期",content:`**{cloud_type}** · {nickname} -Cookie 已过期或失效,请重新登录 -最后操作: {share_url}`},on_cleanup:{title:"🧹 清理完成",content:`**{cloud_type}** · {nickname} -清理完成 -释放空间: {freed_space}`}}});function nl(s){var e,o,i,w;if(s){c.id=s.id,c.account=s.account;const u=s.notify_config||{};c.channels=Object.keys(u.channels||{}),c.events={on_save_success:((e=u.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((o=u.events)==null?void 0:o.on_save_fail)!==!1,on_cookie_expire:((i=u.events)==null?void 0:i.on_cookie_expire)!==!1,on_cleanup:((w=u.events)==null?void 0:w.on_cleanup)===!0}}else c.id=null,c.account="",c.channels=[],c.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function il(){c.id=null,c.account="",c.channels=[],c.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function ue(s,e){return((s.notify_config||{}).events||{})[e]===!0}async function dl(){if(!c.account){p.warning("请填写推广账号");return}we.value=!0;try{const s={account:c.account,notify_config:{channels:{},events:c.events}},e={};for(const i of c.channels)e[i]={};s.notify_config.channels=e,c.id?await fetch("/api/admin/push-users/"+c.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(s)});const o=!!c.id;c.id=null,c.account="",c.channels=[],c.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},p.success(o?"推送用户已更新":"推送用户已添加"),await ke()}catch(s){p.error(s.message||"保存失败")}finally{we.value=!1}}async function ke(){try{const s=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});s.ok&&(Ie.value=await s.json())}catch(s){console.error("Failed to load push users",s)}}async function rl(){try{K.value=await tt()}catch(s){console.error("Failed to load providers",s)}}async function ul(s){try{await fetch("/api/admin/push-users/"+s.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),p.success("已删除"),await ke()}catch(e){p.error(e.message||"删除失败")}}function Ae(s){var o;return((o=s.notify_config)==null?void 0:o.channels)||{}}function pl(s){var e;return((e=K.value[s])==null?void 0:e.label)||s}function fl(s){return Object.keys(Ae(s)).length>0}function ml(){const s={};for(const[e,o]of Object.entries(K.value)){s[e]={_enabled:!1,_testing:!1};for(const i of o.params||[])s[e][i.key]=i.default||""}m.channels=s,m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function vl(){try{const o=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(i=>i.key==="global_notify_config");if(o&&o.value)try{const i=JSON.parse(o.value),w=i.channels||{};for(const[u,k]of Object.entries(w))if(m.channels[u]){m.channels[u]._enabled=!0;for(const[j,x]of Object.entries(k))m.channels[u][j]=x}if(i.events&&(m.events.on_save_success=i.events.on_save_success!==!1,m.events.on_save_fail=i.events.on_save_fail!==!1,m.events.on_cookie_expire=i.events.on_cookie_expire!==!1,m.events.on_cleanup=i.events.on_cleanup===!0),i.eventTemplates)for(const[u,k]of Object.entries(i.eventTemplates))m.eventTemplates[u]=k}catch{}}catch{}}const pe=y(!1),$=y(""),cl=H(()=>({on_save_success:"转存成功",on_save_fail:"转存失败",on_cookie_expire:"Cookie过期",on_cleanup:"清理完成"})[$.value]||"");function fe(s){$.value=s,pe.value=!0,m.eventTemplates[s]||(m.eventTemplates[s]={title:"",content:""})}async function yl(s){const e=m.channels[s];if(!(!e||!e._enabled)){e._testing=!0;try{const o=await at(s);o.success?p.success(o.message):p.error(o.message)}catch(o){p.error(o.message||"测试失败")}finally{e._testing=!1}}}const T=Y({oldPassword:"",newPassword:"",confirmPassword:""}),gl={oldPassword:[{required:!0,message:"请输入原密码",trigger:"blur"}],newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:6,message:"新密码至少需要6个字符",trigger:"blur"}],confirmPassword:[{required:!0,message:"请确认新密码",trigger:"blur"},{validator:(s,e,o)=>{e!==T.newPassword?o(new Error("两次输入的密码不一致")):o()},trigger:"blur"}]};Hl(async()=>{try{ve.value=await et();for(const u of ve.value)r[u.key]=u.value;const s=String(r.title_filter_rules||"");L.value=s.split(` -`).filter(u=>u.trim());const e=String(r.link_invalid_keywords||"");N.value=e.split(` -`).filter(u=>u.trim());const o=String(r.quark_ad_keywords||"");F.value=o.split(` -`).filter(u=>u.trim());const i=String(r.quark_warning_folder_names||"");D.value=i.split(` -`).filter(u=>u.trim());const w=String(r.quark_sus_extensions||"");G.value=w.split(` -`).filter(u=>u.trim())}catch{p.error("加载系统配置失败")}try{const s=await lt();Object.assign(R,s)}catch{R.db_size="无法读取"}finally{Ce.value=!1}Ve(),await rl(),ml(),await vl(),ke(),Ze(),el(),al()}),Jl(K,()=>{for(const[s,e]of Object.entries(K.value))if(!m.channels[s]){m.channels[s]={_enabled:!1,_testing:!1};for(const o of e.params||[])m.channels[s][o.key]=o.default||""}});async function _l(){var e,o;const s=String(r.redis_url||"redis://redis:6379");se.value=!0;try{const i=await ot(s);i.ok?p.success(`✅ Redis 连接成功 — ${i.info}`):p.error(`❌ Redis 连接失败 — ${i.info}`)}catch(i){p.error(((o=(e=i.response)==null?void 0:e.data)==null?void 0:o.error)||"测试请求失败")}finally{se.value=!1}}async function Ve(){Se.value=!0;try{const s=localStorage.getItem("admin_token"),e={};s&&(e.Authorization="Bearer "+s);const o=await fetch("/api/admin/pansou-info",{headers:e});if(!o.ok)throw new Error("HTTP "+o.status);const i=await o.json();z.value=i}catch{z.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{Se.value=!1}}async function bl(){re.value=!0;try{const s=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};s&&(e.Authorization="Bearer "+s);const i=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();i.ok?(p.success("✅ PanSou 已更新并重启"),setTimeout(()=>Ve(),3e3)):p.error("❌ 更新失败 — "+(i.error||"未知错误"))}catch(s){p.error(s.message||"更新请求失败")}finally{re.value=!1}}async function xl(){var s,e;ae.value=!0;try{const o=await te({type:"pansou",url:String(r.pansou_url||"")});o.ok?(Ve(),p.success(`✅ PanSou 连接成功 — ${o.info}`)):p.error(`❌ PanSou 连接失败 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function wl(){var s,e;oe.value=!0;try{const o=await te({type:"video_parser",url:String(r.video_parser_url||"")});o.ok?p.success(`✅ 视频解析服务连接成功 — ${o.info}`):p.error(`❌ 视频解析服务连接失败 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function kl(){var s,e;ne.value=!0;try{const o=await te({type:"tmdb",token:String(r.tmdb_api_token||"")});o.ok?p.success(`✅ TMDB 令牌有效 — ${o.info}`):p.error(`❌ TMDB 连接失败 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function Vl(){var s,e;ie.value=!0;try{const o=await te({type:"proxy",url:String(r.search_proxy_url||"")});o.ok?p.success(`✅ 搜索代理可用 — ${o.info}`):p.error(`❌ 搜索代理不可用 — ${o.info}`)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}async function hl(){var s,e;de.value=!0;try{const o=String(r.ip_geo_api_url||"");if(!o){p.warning("请先输入 IP 归属地查询 API 地址");return}const i=await te({type:"ip_geo",url:o});i.ok?p.success("✅ IP 归属地接口可用 — "+i.info):p.error("❌ IP 归属地接口不可用 — "+i.info)}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"测试请求失败")}finally{de.value=!1}}function Cl(){const s=Q.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)L.value.includes(i)||(L.value.push(i),o++);Q.value="",Re(),o>0?p.success(`已添加 ${o} 条规则`):p.info("所有规则已存在")}function Sl(s){L.value.splice(s,1),Re()}function Ul(s){return s.startsWith("#")?"info":s.startsWith("/")&&(s.endsWith("/")||s.endsWith("/g")||s.endsWith("/i")||s.endsWith("/gi"))?"warning":""}function Re(){r.title_filter_rules=L.value.join(` -`)}function Pl(){const s=X.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)N.value.includes(i)||(N.value.push(i),o++);X.value="",$e(),o>0?p.success(`已添加 ${o} 个关键词`):p.info("所有关键词已存在")}function zl(s){N.value.splice(s,1),$e()}function $e(){r.link_invalid_keywords=N.value.join(` -`)}function Tl(){const s=Z.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)F.value.includes(i)||(F.value.push(i),o++);Z.value="",Be(),o>0?p.success():p.info("所有关键词已存在")}function jl(s){F.value.splice(s,1),Be()}function Be(){r.quark_ad_keywords=F.value.join(` -`)}function Il(){const s=ee.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim()).filter(i=>i);let o=0;for(const i of e)D.value.includes(i)||(D.value.push(i),o++);ee.value="",Ee(),o>0?p.success():p.info("所有文件夹名已存在")}function Ol(s){D.value.splice(s,1),Ee()}function Ee(){r.quark_warning_folder_names=D.value.join(` -`)}function Al(){const s=le.value.trim();if(!s)return;const e=s.split(` -`).map(i=>i.trim().toLowerCase().replace(/^\./,"")).filter(i=>i);let o=0;for(const i of e)G.value.includes(i)||(G.value.push(i),o++);le.value="",Le(),o>0?p.success("已添加 ${added} 个后缀"):p.info("所有后缀已存在")}function Rl(s){G.value.splice(s,1),Le()}function Le(){r.quark_sus_extensions=G.value.join(` -`)}async function $l(){var s,e;ce.value=!0;try{const o={};for(const[w,u]of Object.entries(m.channels))if(u._enabled){const k={};for(const[j,x]of Object.entries(u))!j.startsWith("_")&&x!==""&&(k[j]=String(x));Object.keys(k).length>0&&(o[w]=k)}const i=ve.value.map(w=>({key:w.key,value:String(r[w.key]??w.value)}));await ll(),i.push({key:"global_notify_config",value:JSON.stringify({channels:o,events:m.events,eventTemplates:m.eventTemplates})}),await st(i),p.success("配置已保存")}catch(o){p.error(((e=(s=o.response)==null?void 0:s.data)==null?void 0:e.error)||"保存失败")}finally{ce.value=!1}}async function Bl(){var e,o,i;if(await((e=he.value)==null?void 0:e.validate().catch(()=>!1))){ye.value=!0;try{const w=await nt(T.oldPassword,T.newPassword);w.success?(p.success("✅ 密码修改成功,下次登录请使用新密码"),T.oldPassword="",T.newPassword="",T.confirmPassword=""):p.error(w.message)}catch(w){p.error(((i=(o=w.response)==null?void 0:o.data)==null?void 0:i.error)||"密码修改失败")}finally{ye.value=!1}}}const Ne=y();function El(){var s;(s=Ne.value)==null||s.click()}async function Ll(s){var i,w,u;const e=s.target,o=(i=e.files)==null?void 0:i[0];if(o){if(!o.type.startsWith("image/")){p.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(o.size>2*1024*1024){p.error("图片大小不能超过 2MB"),e.value="";return}try{const k=await it(o);k.success?(r.site_logo=k.url,p.success("✅ LOGO 已上传并生效")):p.error(k.message)}catch(k){p.error(((u=(w=k.response)==null?void 0:w.data)==null?void 0:u.error)||"上传失败")}e.value=""}}async function Nl(){try{r.site_logo="",await dt("site_logo",""),p.success("已移除 LOGO")}catch{p.error("移除失败")}}return(s,e)=>{const o=V("el-input"),i=V("el-form-item"),w=V("el-icon"),u=V("el-button"),k=V("el-form"),j=V("el-card"),x=V("el-switch"),B=V("el-divider"),Fe=V("el-radio"),Fl=V("el-radio-group"),J=V("el-input-number"),S=V("el-tag"),Dl=V("el-collapse-item"),Gl=V("el-collapse"),De=V("el-option"),Ge=V("el-select"),W=V("el-table-column"),Kl=V("el-popconfirm"),Wl=V("el-table"),ql=V("el-time-picker"),Ke=V("el-dialog");return f(),g("div",ut,[q(t(j,{id:"section-sys-site"},{header:n(()=>[...e[56]||(e[56]=[l("span",null,"🌐 网站设置",-1)])]),default:n(()=>[t(k,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"网站名称"},{default:n(()=>[t(o,{modelValue:r.site_name,"onUpdate:modelValue":e[0]||(e[0]=a=>r.site_name=a),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[57]||(e[57]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),t(i,{label:"网站 LOGO"},{default:n(()=>[l("div",pt,[l("div",ft,[t(u,{type:"primary",onClick:El},{icon:n(()=>[t(w,null,{default:n(()=>[t(He(Yl))]),_:1})]),default:n(()=>[e[58]||(e[58]=d(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:Ne,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Ll},null,544),e[59]||(e[59]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 推荐 "),l("strong",null,"320×60"),d(" 或宽比例(如 4:1),JPEG/PNG/WebP,最大 2MB。"),l("br"),d(" LOGO 同时也作为搜索结果无封面图时的兜底图使用。 ")],-1))]),r.site_logo?(f(),g("div",mt,[l("img",{src:String(r.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=a=>a.target.style.display="none")},null,40,vt),t(u,{size:"small",type:"danger",plain:"",onClick:Nl},{default:n(()=>[...e[60]||(e[60]=[d("移除",-1)])]),_:1})])):E("",!0)])]),_:1}),t(i,{label:"底部免责声明"},{default:n(()=>[t(o,{modelValue:r.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=a=>r.site_disclaimer=a),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[61]||(e[61]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),t(i,{label:"滚动通知文字"},{default:n(()=>[t(o,{modelValue:r.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=a=>r.site_marquee=a),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),t(i,{label:"系统时区"},{default:n(()=>[t(o,{modelValue:r.timezone,"onUpdate:modelValue":e[4]||(e[4]=a=>r.timezone=a),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[M,!P.value||P.value==="sys-site"]]),q(t(j,{id:"section-sys-services"},{header:n(()=>[...e[64]||(e[64]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:n(()=>[t(k,{"label-width":"180px","label-position":"left"},{default:n(()=>{var a,v,_,I,We,qe;return[t(i,{label:"PanSou 搜索引擎地址"},{default:n(()=>{var U,Me;return[l("div",ct,[t(o,{modelValue:r.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=me=>r.pansou_url=me),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ae.value,onClick:xl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),t(u,{type:"warning",loading:re.value,onClick:bl,size:"default",style:{width:"130px"},disabled:!((U=z.value)!=null&&U.hasUpdate)},{default:n(()=>{var me;return[d(b(re.value?"更新中...":(me=z.value)!=null&&me.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Me=z.value)!=null&&Me.latestVersion?(f(),g("span",yt,b(z.value.latestVersion),1)):E("",!0)]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",gt,[l("div",_t,[l("div",{class:Je(["db-stat-value",((a=z.value)==null?void 0:a.status)==="connected"?"text-success":"text-warning"])},b(((v=z.value)==null?void 0:v.status)==="connected"?"已连接":z.value?"未连接":"-"),3),e[66]||(e[66]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",bt,[l("div",xt,b(((_=z.value)==null?void 0:_.channelCount)??"-"),1),e[67]||(e[67]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",wt,[l("div",kt,b(((I=z.value)==null?void 0:I.pluginCount)??"-"),1),e[68]||(e[68]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",Vt,[l("div",ht,b(((We=z.value)==null?void 0:We.diskCount)??"-"),1),e[69]||(e[69]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",Ct,[l("div",St,b(((qe=z.value)==null?void 0:qe.version)||"-"),1),e[70]||(e[70]=l("div",{class:"db-stat-label"},"版本",-1))])]),t(i,{label:"PanSou Web 端访问"},{default:n(()=>[t(x,{modelValue:Ue.value,"onUpdate:modelValue":e[6]||(e[6]=U=>Ue.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[71]||(e[71]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 开启后可通过 "),l("code",null,"/pansou/"),d(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),t(i,{label:"启用代理"},{default:n(()=>[t(x,{modelValue:ge.value,"onUpdate:modelValue":e[7]||(e[7]=U=>ge.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[72]||(e[72]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),ge.value?(f(),h(i,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:n(()=>[l("div",Ut,[t(o,{modelValue:r.search_proxy_url,"onUpdate:modelValue":e[8]||(e[8]=U=>r.search_proxy_url=U),placeholder:"http://127.0.0.1:7890",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ie.value,onClick:Vl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(ie.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[73]||(e[73]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):E("",!0),t(i,{label:"视频解析服务地址"},{default:n(()=>[l("div",Pt,[t(o,{modelValue:r.video_parser_url,"onUpdate:modelValue":e[9]||(e[9]=U=>r.video_parser_url=U),placeholder:"http://video-parser:3001",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:oe.value,onClick:wl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(oe.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[74]||(e[74]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),t(i,{label:"TMDB 读取令牌"},{default:n(()=>[l("div",zt,[t(o,{modelValue:r.tmdb_api_token,"onUpdate:modelValue":e[10]||(e[10]=U=>r.tmdb_api_token=U),type:"password","show-password":"",placeholder:"输入 TMDB API 读取令牌(Bearer Token)",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:ne.value,onClick:kl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(ne.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[75]||(e[75]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" 用于搜索 TMDB 获取评分、导演、演员等完整内容信息。 "),l("a",{href:"https://www.themoviedb.org/settings/api",target:"_blank",rel:"noopener",style:{color:"var(--primary-color)"}},"获取令牌 →")],-1))]),_:1}),t(i,{label:"IP 归属地查询"},{default:n(()=>[l("div",Tt,[t(o,{modelValue:r.ip_geo_api_url,"onUpdate:modelValue":e[11]||(e[11]=U=>r.ip_geo_api_url=U),placeholder:"https://cn.apihz.cn/api/ip/chaapi.php?id=xxx&key=***&ip={ip}&td=0",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",loading:de.value,onClick:hl,size:"default",style:{width:"100px"}},{default:n(()=>[d(b(de.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[76]||(e[76]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),d(" 会被替换为实际 IP。 ")],-1)),e[77]||(e[77]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),t(B,{"content-position":"left"},{default:n(()=>[...e[78]||(e[78]=[d("Redis 缓存",-1)])]),_:1}),t(i,{label:"Redis 连接地址"},{default:n(()=>[l("div",jt,[t(o,{modelValue:r.redis_url,"onUpdate:modelValue":e[12]||(e[12]=U=>r.redis_url=U),placeholder:"redis://:***@172.17.0.1:6379",style:{"max-width":"360px"}},null,8,["modelValue"]),t(u,{type:"primary",size:"default",loading:se.value,onClick:_l,style:{width:"100px"}},{default:n(()=>[d(b(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[79]||(e[79]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" Redis 用于缓存搜索验证结果,提升响应速度。"),l("br"),l("strong",null,"带密码格式:"),l("code",null,"redis://:你的密码@地址:6379"),l("br"),d(" 修改后保存配置即可生效,无需重启。"),l("strong",null,"切换 Redis 只会清空缓存,不影响任何重要数据。")],-1))]),_:1})]}),_:1}),Ce.value?(f(),g("div",It,[t(w,{class:"is-loading",size:20},{default:n(()=>[t(He(Ql))]),_:1}),e[80]||(e[80]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(f(),g("div",Ot,[l("div",At,[l("div",{class:Je(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},b(R.redis_status),3),e[81]||(e[81]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",Rt,[l("div",$t,b(R.db_size),1),e[82]||(e[82]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",Bt,[l("div",Et,b(R.save_records),1),e[83]||(e[83]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Lt,[l("div",Nt,b(R.search_stats),1),e[84]||(e[84]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",Ft,[l("div",Dt,b(R.cloud_configs),1),e[85]||(e[85]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Gt,[l("div",Kt,b(R.content_cache),1),e[86]||(e[86]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[M,!P.value||P.value==="sys-services"]]),q(t(j,{id:"section-sys-strategy"},{header:n(()=>[...e[87]||(e[87]=[l("span",null,"🔧 性能配置",-1)])]),default:n(()=>[l("div",Wt,[t(B,{"content-position":"left"},{default:n(()=>[...e[88]||(e[88]=[d("搜索结果返回方式",-1)])]),_:1}),l("div",qt,[l("div",Mt,[e[89]||(e[89]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),t(x,{modelValue:r.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=a=>r.link_validation_enabled=a),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Ht,[l("div",Jt,[e[93]||(e[93]=l("span",{class:"field-label"},"搜索结果方式",-1)),t(Fl,{modelValue:r.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=a=>r.search_strategy=a)},{default:n(()=>[t(Fe,{value:"wait_all"},{default:n(()=>[...e[91]||(e[91]=[d("等待全部结果后展示",-1)])]),_:1}),t(Fe,{value:"stream_channel"},{default:n(()=>[...e[92]||(e[92]=[d("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),t(B,{"content-position":"left"},{default:n(()=>[...e[95]||(e[95]=[d("搜索策略",-1)])]),_:1}),l("div",Yt,[l("div",Qt,[l("div",Xt,[e[96]||(e[96]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),t(x,{modelValue:Pe.value,"onUpdate:modelValue":e[15]||(e[15]=a=>Pe.value=a),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[97]||(e[97]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",Zt,[l("div",es,[e[98]||(e[98]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),t(J,{modelValue:r.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=a=>r.search_result_limit=a),min:1,max:100},null,8,["modelValue"])]),e[99]||(e[99]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",ls,[l("div",ts,[e[100]||(e[100]=l("span",{class:"field-label"},"验证并发数",-1)),t(J,{modelValue:r.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=a=>r.validation_concurrency=a),min:1,max:50},null,8,["modelValue"])]),e[101]||(e[101]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",ss,[l("div",as,[e[102]||(e[102]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=a=>r.validation_cache_ttl_valid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[103]||(e[103]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",os,[l("div",ns,[e[104]||(e[104]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),t(J,{modelValue:r.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=a=>r.validation_cache_ttl_invalid=a),min:60,max:86400,step:60},null,8,["modelValue"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",is,[l("div",ds,[e[106]||(e[106]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),t(J,{modelValue:r.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=a=>r.validation_timeout=a),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[107]||(e[107]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),t(B,{"content-position":"left"},{default:n(()=>[...e[108]||(e[108]=[d("链接检测配置",-1)])]),_:1}),l("div",rs,[e[110]||(e[110]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",us,[t(o,{modelValue:Q.value,"onUpdate:modelValue":e[21]||(e[21]=a=>Q.value=a),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Cl,disabled:!Q.value.trim()},{default:n(()=>[...e[109]||(e[109]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),L.value.length>0?(f(),g("div",ps,[(f(!0),g(O,null,A(L.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:Ul(a),"disable-transitions":!1,onClose:_=>Sl(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["type","onClose"]))),128))])):(f(),g("div",fs,"暂无过滤规则")),e[111]||(e[111]=l("div",{class:"filter-rule-help"},[l("div",{class:"help-title"},"📖 规则说明"),l("div",{class:"help-row"},[l("code",null,"# 注释内容"),d(" — "),l("code",null,"#"),d(" 后必须跟"),l("strong",null,"空格"),d("才会被识别为注释,单纯的 "),l("code",null,"#动漫"),d(" 会被当作要移除的文本")]),l("div",{class:"help-row"},[l("code",null,"/正则表达式/标志"),d(" — 正则匹配,匹配到的内容会被删除。如 "),l("code",null,"/^\\\\d+[、,.\\\\s]/"),d(" 去掉开头的序号")]),l("div",{class:"help-row"},[l("code",null,"纯文本"),d(" — 直接写要移除的文字(支持 emoji),凡是标题中含有的都会被删除")])],-1))]),l("div",ms,[e[113]||(e[113]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",vs,[t(o,{modelValue:X.value,"onUpdate:modelValue":e[22]||(e[22]=a=>X.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Pl,disabled:!X.value.trim()},{default:n(()=>[...e[112]||(e[112]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[114]||(e[114]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),N.value.length>0?(f(),g("div",cs,[(f(!0),g(O,null,A(N.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"danger","disable-transitions":!1,onClose:_=>zl(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",ys,"暂无失效关键词,所有链接将默认判为有效"))]),t(B,{"content-position":"left"},{default:n(()=>[...e[115]||(e[115]=[d("夸克网盘转存清理",-1)])]),_:1}),l("div",gs,[e[117]||(e[117]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",_s,[t(o,{modelValue:Z.value,"onUpdate:modelValue":e[23]||(e[23]=a=>Z.value=a),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Tl,disabled:!Z.value.trim()},{default:n(()=>[...e[116]||(e[116]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[118]||(e[118]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),F.value.length>0?(f(),g("div",bs,[(f(!0),g(O,null,A(F.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"warning","disable-transitions":!1,onClose:_=>jl(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",xs,"暂未配置广告关键词,不会进行广告清理"))]),l("div",ws,[e[120]||(e[120]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",ks,[t(o,{modelValue:ee.value,"onUpdate:modelValue":e[24]||(e[24]=a=>ee.value=a),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"primary",onClick:Il,disabled:!ee.value.trim()},{default:n(()=>[...e[119]||(e[119]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[121]||(e[121]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),D.value.length>0?(f(),g("div",Vs,[(f(!0),g(O,null,A(D.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"info","disable-transitions":!1,onClose:_=>Ol(v)},{default:n(()=>[d(b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",hs,"暂未配置警示文件夹"))]),l("div",Cs,[e[123]||(e[123]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",Ss,[t(o,{modelValue:le.value,"onUpdate:modelValue":e[25]||(e[25]=a=>le.value=a),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),t(u,{type:"danger",onClick:Al,disabled:!le.value.trim()},{default:n(()=>[...e[122]||(e[122]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[124]||(e[124]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),G.value.length>0?(f(),g("div",Us,[(f(!0),g(O,null,A(G.value,(a,v)=>(f(),h(S,{key:v,closable:"",type:"danger","disable-transitions":!1,onClose:_=>Rl(v)},{default:n(()=>[d("."+b(a),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",Ps,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[M,!P.value||P.value==="sys-strategy"]]),q(t(j,{id:"section-sys-password"},{header:n(()=>[...e[125]||(e[125]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:n(()=>[t(k,{ref_key:"passwordFormRef",ref:he,model:T,rules:gl,"label-width":"120px","label-position":"left"},{default:n(()=>[t(i,{label:"原密码",prop:"oldPassword"},{default:n(()=>[t(o,{modelValue:T.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=a=>T.oldPassword=a),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"新密码",prop:"newPassword"},{default:n(()=>[t(o,{modelValue:T.newPassword,"onUpdate:modelValue":e[27]||(e[27]=a=>T.newPassword=a),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,{label:"确认新密码",prop:"confirmPassword"},{default:n(()=>[t(o,{modelValue:T.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=a=>T.confirmPassword=a),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),t(i,null,{default:n(()=>[t(u,{type:"primary",loading:ye.value,onClick:Bl},{default:n(()=>[...e[126]||(e[126]=[d("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[M,!P.value||P.value==="sys-password"]]),q(t(j,{id:"section-sys-notify"},{header:n(()=>[...e[127]||(e[127]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:n(()=>[t(Gl,{"model-value":["global"]},{default:n(()=>[t(Dl,{title:"全局推送(管理员兜底)",name:"global"},{default:n(()=>[l("div",zs,[t(k,{"label-width":"140px","label-position":"left"},{default:n(()=>[l("div",Ts,[(f(!0),g(O,null,A(K.value,(a,v)=>(f(),g("div",{key:v,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",js,[t(x,{modelValue:m.channels[v]._enabled,"onUpdate:modelValue":_=>m.channels[v]._enabled=_,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,b(a.label),1),m.channels[v]._enabled?(f(),h(u,{key:0,size:"small",text:"",type:"primary",onClick:_=>yl(v),loading:m.channels[v]._testing},{default:n(()=>[...e[128]||(e[128]=[d("测试",-1)])]),_:1},8,["onClick","loading"])):E("",!0)]),m.channels[v]._enabled?(f(),g("div",Is,[(f(!0),g(O,null,A(a.params,_=>(f(),h(i,{key:_.key,label:_.label,style:{"margin-bottom":"6px"}},{default:n(()=>[_.type==="password"?(f(),h(o,{key:0,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I,type:"password","show-password":"",placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):_.type==="switch"?(f(),h(x,{key:1,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I},null,8,["modelValue","onUpdate:modelValue"])):_.type==="number"?(f(),h(J,{key:2,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(f(),h(o,{key:3,modelValue:m.channels[v][_.key],"onUpdate:modelValue":I=>m.channels[v][_.key]=I,placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):E("",!0)]))),128))]),t(B,{"content-position":"left"},{default:n(()=>[...e[129]||(e[129]=[d("全局事件开关",-1)])]),_:1}),l("div",Os,[l("div",As,[t(x,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=a=>m.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[30]||(e[30]=a=>fe("on_save_success"))},{default:n(()=>[...e[130]||(e[130]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Rs,[t(x,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[31]||(e[31]=a=>m.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[32]||(e[32]=a=>fe("on_save_fail"))},{default:n(()=>[...e[131]||(e[131]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",$s,[t(x,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[33]||(e[33]=a=>m.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[34]||(e[34]=a=>fe("on_cookie_expire"))},{default:n(()=>[...e[132]||(e[132]=[d("✏️ 编辑模板",-1)])]),_:1})]),l("div",Bs,[t(x,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[35]||(e[35]=a=>m.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"]),t(u,{size:"small",text:"",type:"primary",onClick:e[36]||(e[36]=a=>fe("on_cleanup"))},{default:n(()=>[...e[133]||(e[133]=[d("✏️ 编辑模板",-1)])]),_:1})])]),e[134]||(e[134]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1))]),_:1})])]),_:1})]),_:1}),e[144]||(e[144]=d()),t(B,{"content-position":"left"},{default:n(()=>[...e[135]||(e[135]=[d("添加推送用户",-1)])]),_:1}),l("div",Es,[l("div",Ls,[t(Ge,{modelValue:c.account,"onUpdate:modelValue":e[37]||(e[37]=a=>c.account=a),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:n(()=>[(f(!0),g(O,null,A(Oe.value,a=>(f(),h(De,{key:a,label:a,value:a},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(Ge,{modelValue:c.channels,"onUpdate:modelValue":e[38]||(e[38]=a=>c.channels=a),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择您所需的消息频道",style:{width:"260px"}},{default:n(()=>[(f(!0),g(O,null,A(ol.value,(a,v)=>(f(),h(De,{key:v,label:a.label,value:v},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(x,{modelValue:c.events.on_save_success,"onUpdate:modelValue":e[39]||(e[39]=a=>c.events.on_save_success=a),"active-text":"转存成功"},null,8,["modelValue"]),t(x,{modelValue:c.events.on_save_fail,"onUpdate:modelValue":e[40]||(e[40]=a=>c.events.on_save_fail=a),"active-text":"转存失败"},null,8,["modelValue"]),t(x,{modelValue:c.events.on_cookie_expire,"onUpdate:modelValue":e[41]||(e[41]=a=>c.events.on_cookie_expire=a),"active-text":"Cookie过期"},null,8,["modelValue"]),t(x,{modelValue:c.events.on_cleanup,"onUpdate:modelValue":e[42]||(e[42]=a=>c.events.on_cleanup=a),"active-text":"清理完成"},null,8,["modelValue"]),t(u,{type:"primary",size:"small",loading:we.value,onClick:dl},{default:n(()=>[d(b(c.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),c.id?(f(),h(u,{key:0,size:"small",onClick:il},{default:n(()=>[...e[136]||(e[136]=[d("取消编辑",-1)])]),_:1})):E("",!0)])]),t(B,{"content-position":"left"},{default:n(()=>[...e[137]||(e[137]=[d("推送用户列表",-1)])]),_:1}),t(Wl,{data:Ie.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:n(()=>[t(W,{prop:"account",label:"推广账号","min-width":"140"}),t(W,{label:"转存成功",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_success")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[138]||(e[138]=[d("✔",-1)])]),_:1})):(f(),g("span",Ns,"—"))]),_:1}),t(W,{label:"转存失败",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_save_fail")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[139]||(e[139]=[d("✔",-1)])]),_:1})):(f(),g("span",Fs,"—"))]),_:1}),t(W,{label:"Cookie过期",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cookie_expire")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[140]||(e[140]=[d("✔",-1)])]),_:1})):(f(),g("span",Ds,"—"))]),_:1}),t(W,{label:"清理完成",width:"90",align:"center"},{default:n(({row:a})=>[ue(a,"on_cleanup")?(f(),h(S,{key:0,type:"success",size:"small"},{default:n(()=>[...e[141]||(e[141]=[d("✔",-1)])]),_:1})):(f(),g("span",Gs,"—"))]),_:1}),t(W,{label:"已启用的通道","min-width":"220"},{default:n(({row:a})=>[(f(!0),g(O,null,A(Ae(a),(v,_)=>(f(),h(S,{key:_,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:n(()=>[d(b(pl(_)),1)]),_:2},1024))),128)),fl(a)?E("",!0):(f(),g("span",Ks,"走全局推送"))]),_:1}),t(W,{label:"操作",width:"180",fixed:"right"},{default:n(({row:a})=>[t(u,{text:"",type:"primary",size:"small",onClick:v=>nl(a)},{default:n(()=>[...e[142]||(e[142]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(Kl,{title:"确定删除该推送用户?",onConfirm:v=>ul(a)},{reference:n(()=>[t(u,{text:"",type:"danger",size:"small"},{default:n(()=>[...e[143]||(e[143]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[M,!P.value||P.value==="sys-notify"]]),q(t(j,{id:"section-sys-daily-report"},{header:n(()=>[l("div",Ws,[e[147]||(e[147]=l("span",null,"📊 每日汇报",-1)),l("div",null,[t(u,{size:"small",loading:_e.value,onClick:tl},{default:n(()=>[...e[145]||(e[145]=[d("📋 预览",-1)])]),_:1},8,["loading"]),t(u,{size:"small",type:"primary",loading:be.value,onClick:sl},{default:n(()=>[...e[146]||(e[146]=[d("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:n(()=>[t(k,{"label-width":"140px","label-position":"left"},{default:n(()=>[t(i,{label:"启用每日汇报"},{default:n(()=>[t(x,{modelValue:C.enabled,"onUpdate:modelValue":e[43]||(e[43]=a=>C.enabled=a),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),t(i,{label:"发送时间"},{default:n(()=>[t(ql,{modelValue:C.time,"onUpdate:modelValue":e[44]||(e[44]=a=>C.time=a),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!C.enabled},null,8,["modelValue","disabled"]),e[148]||(e[148]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),t(i,{label:"报告内容"},{default:n(()=>[l("div",qs,[t(x,{modelValue:C.includeSearch,"onUpdate:modelValue":e[45]||(e[45]=a=>C.includeSearch=a),"active-text":"搜索统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(x,{modelValue:C.includeSaves,"onUpdate:modelValue":e[46]||(e[46]=a=>C.includeSaves=a),"active-text":"转存统计",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(x,{modelValue:C.includeStorage,"onUpdate:modelValue":e[47]||(e[47]=a=>C.includeStorage=a),"active-text":"网盘容量",disabled:!C.enabled},null,8,["modelValue","disabled"]),t(x,{modelValue:C.includeUsers,"onUpdate:modelValue":e[48]||(e[48]=a=>C.includeUsers=a),"active-text":"用户数",disabled:!C.enabled},null,8,["modelValue","disabled"])])]),_:1}),t(i,{label:"上次发送"},{default:n(()=>[l("span",null,b(je.value||"从未发送"),1)]),_:1})]),_:1}),t(Ke,{modelValue:xe.value,"onUpdate:modelValue":e[49]||(e[49]=a=>xe.value=a),title:"📊 每日汇报预览",width:"600px"},{default:n(()=>[l("div",Ms,b(Te.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[M,!P.value||P.value==="sys-daily-report"]]),q(t(j,{id:"section-sys-maintenance"},{header:n(()=>[...e[149]||(e[149]=[l("span",null,"🔄 系统维护",-1)])]),default:n(()=>[e[154]||(e[154]=d()),t(k,{"label-width":"180px","label-position":"left"},{default:n(()=>[t(i,{label:"自动更新镜像"},{default:n(()=>[t(x,{modelValue:ze.value,"onUpdate:modelValue":e[50]||(e[50]=a=>ze.value=a),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[150]||(e[150]=d()),e[151]||(e[151]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[152]||(e[152]=d()),e[153]||(e[153]=l("div",{class:"form-tip",style:{color:"var(--(--el-color-warning,#e6a23c))"}}," 当前需手动在服务器执行:docker-compose -f /opt/CloudSearch/docker-compose.yml pull && docker-compose -f /opt/CloudSearch/docker-compose.yml up -d ",-1))]),_:1})]),_:1})]),_:1},512),[[M,!P.value||P.value==="sys-maintenance"]]),t(Ke,{modelValue:pe.value,"onUpdate:modelValue":e[54]||(e[54]=a=>pe.value=a),title:"✏️ 编辑消息模板 — "+cl.value,width:"560px",onClose:e[55]||(e[55]=a=>$.value="")},{footer:n(()=>[t(u,{onClick:e[53]||(e[53]=a=>pe.value=!1)},{default:n(()=>[...e[175]||(e[175]=[d("关闭",-1)])]),_:1})]),default:n(()=>[l("div",Hs,[e[164]||(e[164]=d(" 可用变量:",-1)),e[165]||(e[165]=l("br",null,null,-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[155]||(e[155]=[d("{cloud_type}",-1)])]),_:1}),e[166]||(e[166]=d(" 网盘类型(夸克/百度/阿里) ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[156]||(e[156]=[d("{nickname}",-1)])]),_:1}),e[167]||(e[167]=d(" 网盘昵称 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[157]||(e[157]=[d("{file_name}",-1)])]),_:1}),e[168]||(e[168]=d(" 文件名 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[158]||(e[158]=[d("{file_size}",-1)])]),_:1}),e[169]||(e[169]=d(" 文件大小 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[159]||(e[159]=[d("{duration}",-1)])]),_:1}),e[170]||(e[170]=d(" 耗时(秒) ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[160]||(e[160]=[d("{share_url}",-1)])]),_:1}),e[171]||(e[171]=d(" 分享链接 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[161]||(e[161]=[d("{fail_count}",-1)])]),_:1}),e[172]||(e[172]=d(" 连续失败次数 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[162]||(e[162]=[d("{error_message}",-1)])]),_:1}),e[173]||(e[173]=d(" 错误信息 ",-1)),t(S,{size:"small",style:{margin:"2px"}},{default:n(()=>[...e[163]||(e[163]=[d("{freed_space}",-1)])]),_:1}),e[174]||(e[174]=d(" 释放空间 ",-1))]),$.value&&m.eventTemplates[$.value]?(f(),h(k,{key:0,"label-width":"60px"},{default:n(()=>[t(i,{label:"标题"},{default:n(()=>[t(o,{modelValue:m.eventTemplates[$.value].title,"onUpdate:modelValue":e[51]||(e[51]=a=>m.eventTemplates[$.value].title=a),placeholder:"消息标题,支持 {变量}"},null,8,["modelValue"])]),_:1}),t(i,{label:"内容"},{default:n(()=>[t(o,{modelValue:m.eventTemplates[$.value].content,"onUpdate:modelValue":e[52]||(e[52]=a=>m.eventTemplates[$.value].content=a),type:"textarea",rows:5,placeholder:"消息正文,支持 Markdown 和 {变量}"},null,8,["modelValue"])]),_:1})]),_:1})):E("",!0)]),_:1},8,["modelValue","title"]),l("div",Js,[t(u,{type:"primary",size:"large",loading:ce.value,onClick:$l},{default:n(()=>[...e[176]||(e[176]=[d(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),Zs=rt(Ys,[["__scopeId","data-v-2832ee1e"]]);export{Zs as default}; diff --git a/source_clean/frontend/assets/SystemConfig-D8srBqxJ.css b/source_clean/frontend/assets/SystemConfig-D8srBqxJ.css new file mode 100644 index 0000000..a4290cc --- /dev/null +++ b/source_clean/frontend/assets/SystemConfig-D8srBqxJ.css @@ -0,0 +1 @@ +.el-card[data-v-fd21d202]{margin-bottom:20px}.el-card[data-v-fd21d202] .el-card__header{font-weight:600;font-size:15px}[data-v-fd21d202] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-fd21d202]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-fd21d202]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-fd21d202]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-fd21d202]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-fd21d202]{max-width:100%;height:auto;max-height:120px;border-radius:8px;border:1px solid var(--border-color);background:#f0f0f0;object-fit:contain}.strategy-grid[data-v-fd21d202]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-fd21d202]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-fd21d202]{padding:0 4px}.field-block[data-v-fd21d202]{margin:12px 0}.field-label-row[data-v-fd21d202]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-fd21d202]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-fd21d202]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-fd21d202]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-fd21d202]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-fd21d202]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-fd21d202]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-fd21d202]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-fd21d202]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-fd21d202]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-fd21d202]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-fd21d202]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-fd21d202]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-fd21d202]:first-child{margin-top:0}.help-row[data-v-fd21d202]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-fd21d202]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-fd21d202]{background:#1e1e1e;color:#d4d4d4;padding:10px 14px;border-radius:6px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;margin:6px 0 0;font-family:monospace}.help-preview-row[data-v-fd21d202]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-fd21d202]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-fd21d202]{color:#e74c3c}.help-preview-filtered[data-v-fd21d202]{color:#27ae60;font-weight:500}.filter-input-row[data-v-fd21d202]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-fd21d202]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-fd21d202]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-fd21d202]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-fd21d202]{background:#f8f9fa;border-radius:10px;padding:16px 12px;text-align:center;border:1px solid #eee;transition:transform .15s,box-shadow .15s}.db-stat-item[data-v-fd21d202]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-fd21d202]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-fd21d202]{color:#67c23a}.db-stat-value.text-warning[data-v-fd21d202]{color:#e6a23c}.db-stat-label[data-v-fd21d202]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-fd21d202]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-fd21d202]{grid-template-columns:1fr}}.pansou-status-grid[data-v-fd21d202]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-fd21d202]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-fd21d202]{background:#67c23a}.dot-err[data-v-fd21d202]{background:#f56c6c} diff --git a/source_clean/frontend/assets/SystemConfig-Rongk90P.css b/source_clean/frontend/assets/SystemConfig-Rongk90P.css deleted file mode 100644 index 26f52eb..0000000 --- a/source_clean/frontend/assets/SystemConfig-Rongk90P.css +++ /dev/null @@ -1 +0,0 @@ -.el-card[data-v-2832ee1e]{margin-bottom:20px}.el-card[data-v-2832ee1e] .el-card__header{font-weight:600;font-size:15px}[data-v-2832ee1e] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-2832ee1e]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-2832ee1e]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-2832ee1e]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-2832ee1e]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-2832ee1e]{max-width:100%;height:auto;max-height:120px;border-radius:8px;border:1px solid var(--border-color);background:#f0f0f0;object-fit:contain}.strategy-grid[data-v-2832ee1e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-2832ee1e]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-2832ee1e]{padding:0 4px}.field-block[data-v-2832ee1e]{margin:12px 0}.field-label-row[data-v-2832ee1e]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-2832ee1e]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-2832ee1e]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-2832ee1e]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-2832ee1e]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-2832ee1e]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-2832ee1e]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-2832ee1e]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-2832ee1e]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-2832ee1e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-2832ee1e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-2832ee1e]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-2832ee1e]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-2832ee1e]:first-child{margin-top:0}.help-row[data-v-2832ee1e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-2832ee1e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-2832ee1e]{background:#1e1e1e;color:#d4d4d4;padding:10px 14px;border-radius:6px;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre;margin:6px 0 0;font-family:monospace}.help-preview-row[data-v-2832ee1e]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-2832ee1e]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-2832ee1e]{color:#e74c3c}.help-preview-filtered[data-v-2832ee1e]{color:#27ae60;font-weight:500}.filter-input-row[data-v-2832ee1e]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-2832ee1e]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-2832ee1e]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-2832ee1e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-2832ee1e]{background:#f8f9fa;border-radius:10px;padding:16px 12px;text-align:center;border:1px solid #eee;transition:transform .15s,box-shadow .15s}.db-stat-item[data-v-2832ee1e]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-2832ee1e]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-2832ee1e]{color:#67c23a}.db-stat-value.text-warning[data-v-2832ee1e]{color:#e6a23c}.db-stat-label[data-v-2832ee1e]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-2832ee1e]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-2832ee1e]{grid-template-columns:1fr}}.pansou-status-grid[data-v-2832ee1e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-2832ee1e]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-2832ee1e]{background:#67c23a}.dot-err[data-v-2832ee1e]{background:#f56c6c} diff --git a/source_clean/frontend/assets/index-DLC2deeT.js b/source_clean/frontend/assets/index-Bsy0LTRb.js similarity index 99% rename from source_clean/frontend/assets/index-DLC2deeT.js rename to source_clean/frontend/assets/index-Bsy0LTRb.js index 121274f..6026abf 100644 --- a/source_clean/frontend/assets/index-DLC2deeT.js +++ b/source_clean/frontend/assets/index-Bsy0LTRb.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-DxF2bBIi.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-CSy9PDwp.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-CxVMp_nk.js","assets/CloudBadge-BhaCxKyo.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-VVxvaZnt.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-BgjUguyQ.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-DAzBQti_.js","assets/CloudConfig-BaEpQpQM.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-CswhThiW.js","assets/SystemConfig-Rongk90P.css","assets/SaveRecords-vmMvuvLS.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-B77x7c3T.js","assets/Cleanup-Cq_o1Z9e.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-v6ufhhLl.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-C7oFJn97.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-B6n5vSIJ.js","assets/CloudBadge-BQbzCPM-.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-CnuINV9I.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-miuzOi4K.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-CClHfarr.js","assets/CloudConfig-DIBXz7ib.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-BpnPsiXS.js","assets/SystemConfig-D8srBqxJ.css","assets/SaveRecords-D4vANRRO.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-B_lvCL8b.js","assets/Cleanup-Cq_o1Z9e.css"])))=>i.map(i=>d[i]); (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))a(o);new MutationObserver(o=>{for(const l of o)if(l.type==="childList")for(const s of l.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&a(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const l={};return o.integrity&&(l.integrity=o.integrity),o.referrerPolicy&&(l.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?l.credentials="include":o.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function a(o){if(o.ep)return;o.ep=!0;const l=n(o);fetch(o.href,l)}})();/** * @vue/shared v3.5.33 * (c) 2018-present Yuxi (Evan) You and Vue contributors @@ -89,4 +89,4 @@ usage: app.provide(ZINDEX_INJECTION_KEY, { current: 0 })`),{initialZIndex:a,curr * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let kJ=()=>location.protocol+"//"+location.host;function zE(e,t){const{pathname:n,search:a,hash:o}=t,l=e.indexOf("#");if(l>-1){let s=o.includes(e.slice(l))?e.slice(l).length:1,r=o.slice(s);return r[0]!=="/"&&(r="/"+r),h0(r,"")}return h0(n,e)+a+o}function EJ(e,t,n,a){let o=[],l=[],s=null;const r=({state:p})=>{const g=zE(e,location),v=n.value,h=t.value;let m=0;if(p){if(n.value=g,t.value=p,s&&s===v){s=null;return}m=h?p.position-h.position:0}else a(g);o.forEach(y=>{y(n.value,v,{delta:m,type:mv.pop,direction:m?m>0?qf.forward:qf.back:qf.unknown})})};function u(){s=n.value}function c(p){o.push(p);const g=()=>{const v=o.indexOf(p);v>-1&&o.splice(v,1)};return l.push(g),g}function d(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Zt({},p.state,{scroll:Yd()}),"")}}function f(){for(const p of l)p();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",d),document.removeEventListener("visibilitychange",d)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",d),document.addEventListener("visibilitychange",d),{pauseListeners:u,listen:c,destroy:f}}function w0(e,t,n,a=!1,o=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:o?Yd():null}}function xJ(e){const{history:t,location:n}=window,a={value:zE(e,n)},o={value:t.state};o.value||l(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(u,c,d){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+u:kJ()+e+u;try{t[d?"replaceState":"pushState"](c,"",p),o.value=c}catch(g){console.error(g),n[d?"replace":"assign"](p)}}function s(u,c){l(u,Zt({},t.state,w0(o.value.back,u,o.value.forward,!0),c,{position:o.value.position}),!0),a.value=u}function r(u,c){const d=Zt({},o.value,t.state,{forward:u,scroll:Yd()});l(d.current,d,!0),l(u,Zt({},w0(a.value,u,null),{position:d.position+1},c),!1),a.value=u}return{location:a,state:o,push:r,replace:s}}function TJ(e){e=uJ(e);const t=xJ(e),n=EJ(e,t.state,t.location,t.replace);function a(l,s=!0){s||n.pauseListeners(),history.go(l)}const o=Zt({location:"",base:e,go:a,createHref:dJ.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let us=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Rn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Rn||{});const $J={type:us.Static,value:""},OJ=/[a-zA-Z0-9_]/;function NJ(e){if(!e)return[[]];if(e==="/")return[[$J]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=Rn.Static,a=n;const o=[];let l;function s(){l&&o.push(l),l=[]}let r=0,u,c="",d="";function f(){c&&(n===Rn.Static?l.push({type:us.Static,value:c}):n===Rn.Param||n===Rn.ParamRegExp||n===Rn.ParamRegExpEnd?(l.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),l.push({type:us.Param,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=u}for(;rt.length?t.length===1&&t[0]===aa.Static+aa.Segment?1:-1:0}function HE(e,t){let n=0;const a=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const PJ={strict:!1,end:!0,sensitive:!1};function AJ(e,t,n){const a=IJ(NJ(e.path),n),o=Zt(a,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function LJ(e,t){const n=[],a=new Map;t=v0(PJ,t);function o(f){return a.get(f)}function l(f,p,g){const v=!g,h=E0(f);h.aliasOf=g&&g.record;const m=v0(t,f),y=[h];if("alias"in f){const C=typeof f.alias=="string"?[f.alias]:f.alias;for(const k of C)y.push(E0(Zt({},h,{components:g?g.record.components:h.components,path:k,aliasOf:g?g.record:h})))}let b,w;for(const C of y){const{path:k}=C;if(p&&k[0]!=="/"){const E=p.record.path,T=E[E.length-1]==="/"?"":"/";C.path=p.record.path+(k&&T+k)}if(b=AJ(C,p,m),g?g.alias.push(b):(w=w||b,w!==b&&w.alias.push(b),v&&f.name&&!x0(b)&&s(f.name)),KE(b)&&u(b),h.children){const E=h.children;for(let T=0;T{s(w)}:yi}function s(f){if(BE(f)){const p=a.get(f);p&&(a.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(s),p.alias.forEach(s))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&a.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function r(){return n}function u(f){const p=BJ(f,n);n.splice(p,0,f),f.record.name&&!x0(f)&&a.set(f.record.name,f)}function c(f,p){let g,v={},h,m;if("name"in f&&f.name){if(g=a.get(f.name),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f});m=g.record.name,v=Zt(k0(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),f.params&&k0(f.params,g.keys.map(w=>w.name))),h=g.stringify(v)}else if(f.path!=null)h=f.path,g=n.find(w=>w.re.test(h)),g&&(v=g.parse(h),m=g.record.name);else{if(g=p.name?a.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f,currentLocation:p});m=g.record.name,v=Zt({},p.params,f.params),h=g.stringify(v)}const y=[];let b=g;for(;b;)y.unshift(b.record),b=b.parent;return{name:m,path:h,params:v,matched:y,meta:VJ(y)}}e.forEach(f=>l(f));function d(){n.length=0,a.clear()}return{addRoute:l,resolve:c,removeRoute:s,clearRoutes:d,getRoutes:r,getRecordMatcher:o}}function k0(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function E0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:DJ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function DJ(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function x0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function VJ(e){return e.reduce((t,n)=>Zt(t,n.meta),{})}function BJ(e,t){let n=0,a=t.length;for(;n!==a;){const l=n+a>>1;HE(e,t[l])<0?a=l:n=l+1}const o=FJ(e);return o&&(a=t.lastIndexOf(o,a-1)),a}function FJ(e){let t=e;for(;t=t.parent;)if(KE(t)&&HE(e,t)===0)return t}function KE({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function T0(e){const t=_e(qd),n=_e(Mm),a=S(()=>{const u=i(e.to);return t.resolve(u)}),o=S(()=>{const{matched:u}=a.value,{length:c}=u,d=u[c-1],f=n.matched;if(!d||!f.length)return-1;const p=f.findIndex(xr.bind(null,d));if(p>-1)return p;const g=$0(u[c-2]);return c>1&&$0(d)===g&&f[f.length-1].path!==g?f.findIndex(xr.bind(null,u[c-2])):p}),l=S(()=>o.value>-1&&jJ(n.params,a.value.params)),s=S(()=>o.value>-1&&o.value===n.matched.length-1&&VE(n.params,a.value.params));function r(u={}){if(WJ(u)){const c=t[i(e.replace)?"replace":"push"](i(e.to)).catch(yi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:S(()=>a.value.href),isActive:l,isExactActive:s,navigate:r}}function zJ(e){return e.length===1?e[0]:e}const HJ=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:T0,setup(e,{slots:t}){const n=Rt(T0(e)),{options:a}=_e(qd),o=S(()=>({[O0(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[O0(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&zJ(t.default(n));return e.custom?l:Ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),KJ=HJ;function WJ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jJ(e,t){for(const n in t){const a=t[n],o=e[n];if(typeof a=="string"){if(a!==o)return!1}else if(!Ja(o)||o.length!==a.length||a.some((l,s)=>l.valueOf()!==o[s].valueOf()))return!1}return!0}function $0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const O0=(e,t,n)=>e??t??n,UJ=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=_e(yv),o=S(()=>e.route||a.value),l=_e(b0,0),s=S(()=>{let c=i(l);const{matched:d}=o.value;let f;for(;(f=d[c])&&!f.components;)c++;return c}),r=S(()=>o.value.matched[s.value]);bt(b0,S(()=>s.value+1)),bt(CJ,r),bt(yv,o);const u=A();return fe(()=>[u.value,r.value,e.name],([c,d,f],[p,g,v])=>{d&&(d.instances[f]=c,g&&g!==d&&c&&c===p&&(d.leaveGuards.size||(d.leaveGuards=g.leaveGuards),d.updateGuards.size||(d.updateGuards=g.updateGuards))),c&&d&&(!g||!xr(d,g)||!p)&&(d.enterCallbacks[f]||[]).forEach(h=>h(c))},{flush:"post"}),()=>{const c=o.value,d=e.name,f=r.value,p=f&&f.components[d];if(!p)return N0(n.default,{Component:p,route:c});const g=f.props[d],v=g?g===!0?c.params:typeof g=="function"?g(c):g:null,m=Ye(p,Zt({},v,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[d]=null)},ref:u}));return N0(n.default,{Component:m,route:c})||m}}});function N0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const YJ=UJ;function qJ(e){const t=LJ(e.routes,e),n=e.parseQuery||bJ,a=e.stringifyQuery||y0,o=e.history,l=Xr(),s=Xr(),r=Xr(),u=Wt(gl);let c=gl;Ys&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Uf.bind(null,te=>""+te),f=Uf.bind(null,nJ),p=Uf.bind(null,qi);function g(te,de){let se,Y;return BE(te)?(se=t.getRecordMatcher(te),Y=de):Y=te,t.addRoute(Y,se)}function v(te){const de=t.getRecordMatcher(te);de&&t.removeRoute(de)}function h(){return t.getRoutes().map(te=>te.record)}function m(te){return!!t.getRecordMatcher(te)}function y(te,de){if(de=Zt({},de||u.value),typeof te=="string"){const oe=Yf(n,te,de.path),ce=t.resolve({path:oe.path},de),ge=o.createHref(oe.fullPath);return Zt(oe,ce,{params:p(ce.params),hash:qi(oe.hash),redirectedFrom:void 0,href:ge})}let se;if(te.path!=null)se=Zt({},te,{path:Yf(n,te.path,de.path).path});else{const oe=Zt({},te.params);for(const ce in oe)oe[ce]==null&&delete oe[ce];se=Zt({},te,{params:f(oe)}),de.params=f(de.params)}const Y=t.resolve(se,de),G=te.hash||"";Y.params=d(p(Y.params));const V=lJ(a,Zt({},te,{hash:QZ(G),path:Y.path})),Z=o.createHref(V);return Zt({fullPath:V,hash:G,query:a===y0?wJ(te.query):te.query||{}},Y,{redirectedFrom:void 0,href:Z})}function b(te){return typeof te=="string"?Yf(n,te,u.value.path):Zt({},te)}function w(te,de){if(c!==te)return Tr(wn.NAVIGATION_CANCELLED,{from:de,to:te})}function C(te){return T(te)}function k(te){return C(Zt(b(te),{replace:!0}))}function E(te,de){const se=te.matched[te.matched.length-1];if(se&&se.redirect){const{redirect:Y}=se;let G=typeof Y=="function"?Y(te,de):Y;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=b(G):{path:G},G.params={}),Zt({query:te.query,hash:te.hash,params:G.path!=null?{}:te.params},G)}}function T(te,de){const se=c=y(te),Y=u.value,G=te.state,V=te.force,Z=te.replace===!0,oe=E(se,Y);if(oe)return T(Zt(b(oe),{state:typeof oe=="object"?Zt({},G,oe.state):G,force:V,replace:Z}),de||se);const ce=se;ce.redirectedFrom=de;let ge;return!V&&sJ(a,Y,se)&&(ge=Tr(wn.NAVIGATION_DUPLICATED,{to:ce,from:Y}),H(Y,Y,!0,!1)),(ge?Promise.resolve(ge):O(ce,Y)).catch(me=>Do(me)?Do(me,wn.NAVIGATION_GUARD_REDIRECT)?me:z(me):I(me,ce,Y)).then(me=>{if(me){if(Do(me,wn.NAVIGATION_GUARD_REDIRECT))return T(Zt({replace:Z},b(me.to),{state:typeof me.to=="object"?Zt({},G,me.to.state):G,force:V}),de||ce)}else me=P(ce,Y,!0,Z,G);return _(ce,Y,me),me})}function $(te,de){const se=w(te,de);return se?Promise.reject(se):Promise.resolve()}function N(te){const de=Q.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(te):te()}function O(te,de){let se;const[Y,G,V]=SJ(te,de);se=Gf(Y.reverse(),"beforeRouteLeave",te,de);for(const oe of Y)oe.leaveGuards.forEach(ce=>{se.push(El(ce,te,de))});const Z=$.bind(null,te,de);return se.push(Z),ue(se).then(()=>{se=[];for(const oe of l.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).then(()=>{se=Gf(G,"beforeRouteUpdate",te,de);for(const oe of G)oe.updateGuards.forEach(ce=>{se.push(El(ce,te,de))});return se.push(Z),ue(se)}).then(()=>{se=[];for(const oe of V)if(oe.beforeEnter)if(Ja(oe.beforeEnter))for(const ce of oe.beforeEnter)se.push(El(ce,te,de));else se.push(El(oe.beforeEnter,te,de));return se.push(Z),ue(se)}).then(()=>(te.matched.forEach(oe=>oe.enterCallbacks={}),se=Gf(V,"beforeRouteEnter",te,de,N),se.push(Z),ue(se))).then(()=>{se=[];for(const oe of s.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).catch(oe=>Do(oe,wn.NAVIGATION_CANCELLED)?oe:Promise.reject(oe))}function _(te,de,se){r.list().forEach(Y=>N(()=>Y(te,de,se)))}function P(te,de,se,Y,G){const V=w(te,de);if(V)return V;const Z=de===gl,oe=Ys?history.state:{};se&&(Y||Z?o.replace(te.fullPath,Zt({scroll:Z&&oe&&oe.scroll},G)):o.push(te.fullPath,G)),u.value=te,H(te,de,se,Z),z()}let D;function W(){D||(D=o.listen((te,de,se)=>{if(!ee.listening)return;const Y=y(te),G=E(Y,ee.currentRoute.value);if(G){T(Zt(G,{replace:!0,force:!0}),Y).catch(yi);return}c=Y;const V=u.value;Ys&&vJ(g0(V.fullPath,se.delta),Yd()),O(Y,V).catch(Z=>Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_CANCELLED)?Z:Do(Z,wn.NAVIGATION_GUARD_REDIRECT)?(T(Zt(b(Z.to),{force:!0}),Y).then(oe=>{Do(oe,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&!se.delta&&se.type===mv.pop&&o.go(-1,!1)}).catch(yi),Promise.reject()):(se.delta&&o.go(-se.delta,!1),I(Z,Y,V))).then(Z=>{Z=Z||P(Y,V,!1),Z&&(se.delta&&!Do(Z,wn.NAVIGATION_CANCELLED)?o.go(-se.delta,!1):se.type===mv.pop&&Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),_(Y,V,Z)}).catch(yi)}))}let U=Xr(),F=Xr(),R;function I(te,de,se){z(te);const Y=F.list();return Y.length?Y.forEach(G=>G(te,de,se)):console.error(te),Promise.reject(te)}function L(){return R&&u.value!==gl?Promise.resolve():new Promise((te,de)=>{U.add([te,de])})}function z(te){return R||(R=!te,W(),U.list().forEach(([de,se])=>te?se(te):de()),U.reset()),te}function H(te,de,se,Y){const{scrollBehavior:G}=e;if(!Ys||!G)return Promise.resolve();const V=!se&&hJ(g0(te.fullPath,0))||(Y||!se)&&history.state&&history.state.scroll||null;return Ae().then(()=>G(te,de,V)).then(Z=>Z&&pJ(Z)).catch(Z=>I(Z,te,de))}const K=te=>o.go(te);let q;const Q=new Set,ee={currentRoute:u,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:h,resolve:y,options:e,push:C,replace:k,go:K,back:()=>K(-1),forward:()=>K(1),beforeEach:l.add,beforeResolve:s.add,afterEach:r.add,onError:F.add,isReady:L,install(te){te.component("RouterLink",KJ),te.component("RouterView",YJ),te.config.globalProperties.$router=ee,Object.defineProperty(te.config.globalProperties,"$route",{enumerable:!0,get:()=>i(u)}),Ys&&!q&&u.value===gl&&(q=!0,C(o.location).catch(Y=>{}));const de={};for(const Y in gl)Object.defineProperty(de,Y,{get:()=>u.value[Y],enumerable:!0});te.provide(qd,ee),te.provide(Mm,rd(de)),te.provide(yv,u);const se=te.unmount;Q.add(te),te.unmount=function(){Q.delete(te),Q.size<1&&(c=gl,D&&D(),D=null,u.value=gl,q=!1,R=!1),se()}}};function ue(te){return te.reduce((de,se)=>de.then(()=>N(se)),Promise.resolve())}return ee}function oQ(){return _e(qd)}function lQ(e){return _e(Mm)}const GJ=[{path:"/",name:"home",component:()=>io(()=>import("./HomePage-DxF2bBIi.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-CSy9PDwp.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-CxVMp_nk.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-VVxvaZnt.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-BgjUguyQ.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-DAzBQti_.js"),__vite__mapDeps([14,1,15,4,7,8,16,17,18,19,20,21]))},{path:"cloud-configs",name:"admin-cloud-configs",component:()=>io(()=>import("./CloudConfig-BaEpQpQM.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-B77x7c3T.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-CswhThiW.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-vmMvuvLS.js"),__vite__mapDeps([19,1,20]))}]}],WE=qJ({history:TJ(),routes:GJ});WE.beforeEach((e,t,n)=>{const a=localStorage.getItem("admin_token");e.meta.requiresAuth&&!a?n("/admin/login"):n()});const Gd=lw(FZ);Gd.use(y$());Gd.use(WE);Gd.use(VZ);Gd.mount("#app");export{vP as A,Ae as B,ZJ as C,XJ as D,iZ as E,He as F,eQ as G,JJ as H,tQ as I,al as J,dt as K,Nt as L,Oo as M,aQ as N,QJ as O,nQ as P,Pv as Q,x as a,j as b,B as c,ie as d,le as e,J as f,en as g,A as h,Rt as i,Ot as j,i as k,St as l,$r as m,M as n,mt as o,je as p,Xe as q,Ct as r,QP as s,ke as t,oQ as u,S as v,ne as w,fe as x,re as y,lQ as z}; + */let kJ=()=>location.protocol+"//"+location.host;function zE(e,t){const{pathname:n,search:a,hash:o}=t,l=e.indexOf("#");if(l>-1){let s=o.includes(e.slice(l))?e.slice(l).length:1,r=o.slice(s);return r[0]!=="/"&&(r="/"+r),h0(r,"")}return h0(n,e)+a+o}function EJ(e,t,n,a){let o=[],l=[],s=null;const r=({state:p})=>{const g=zE(e,location),v=n.value,h=t.value;let m=0;if(p){if(n.value=g,t.value=p,s&&s===v){s=null;return}m=h?p.position-h.position:0}else a(g);o.forEach(y=>{y(n.value,v,{delta:m,type:mv.pop,direction:m?m>0?qf.forward:qf.back:qf.unknown})})};function u(){s=n.value}function c(p){o.push(p);const g=()=>{const v=o.indexOf(p);v>-1&&o.splice(v,1)};return l.push(g),g}function d(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(Zt({},p.state,{scroll:Yd()}),"")}}function f(){for(const p of l)p();l=[],window.removeEventListener("popstate",r),window.removeEventListener("pagehide",d),document.removeEventListener("visibilitychange",d)}return window.addEventListener("popstate",r),window.addEventListener("pagehide",d),document.addEventListener("visibilitychange",d),{pauseListeners:u,listen:c,destroy:f}}function w0(e,t,n,a=!1,o=!1){return{back:e,current:t,forward:n,replaced:a,position:window.history.length,scroll:o?Yd():null}}function xJ(e){const{history:t,location:n}=window,a={value:zE(e,n)},o={value:t.state};o.value||l(a.value,{back:null,current:a.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function l(u,c,d){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+u:kJ()+e+u;try{t[d?"replaceState":"pushState"](c,"",p),o.value=c}catch(g){console.error(g),n[d?"replace":"assign"](p)}}function s(u,c){l(u,Zt({},t.state,w0(o.value.back,u,o.value.forward,!0),c,{position:o.value.position}),!0),a.value=u}function r(u,c){const d=Zt({},o.value,t.state,{forward:u,scroll:Yd()});l(d.current,d,!0),l(u,Zt({},w0(a.value,u,null),{position:d.position+1},c),!1),a.value=u}return{location:a,state:o,push:r,replace:s}}function TJ(e){e=uJ(e);const t=xJ(e),n=EJ(e,t.state,t.location,t.replace);function a(l,s=!0){s||n.pauseListeners(),history.go(l)}const o=Zt({location:"",base:e,go:a,createHref:dJ.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}let us=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var Rn=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(Rn||{});const $J={type:us.Static,value:""},OJ=/[a-zA-Z0-9_]/;function NJ(e){if(!e)return[[]];if(e==="/")return[[$J]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${c}": ${g}`)}let n=Rn.Static,a=n;const o=[];let l;function s(){l&&o.push(l),l=[]}let r=0,u,c="",d="";function f(){c&&(n===Rn.Static?l.push({type:us.Static,value:c}):n===Rn.Param||n===Rn.ParamRegExp||n===Rn.ParamRegExpEnd?(l.length>1&&(u==="*"||u==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),l.push({type:us.Param,value:c,regexp:d,repeatable:u==="*"||u==="+",optional:u==="*"||u==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=u}for(;rt.length?t.length===1&&t[0]===aa.Static+aa.Segment?1:-1:0}function HE(e,t){let n=0;const a=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const PJ={strict:!1,end:!0,sensitive:!1};function AJ(e,t,n){const a=IJ(NJ(e.path),n),o=Zt(a,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function LJ(e,t){const n=[],a=new Map;t=v0(PJ,t);function o(f){return a.get(f)}function l(f,p,g){const v=!g,h=E0(f);h.aliasOf=g&&g.record;const m=v0(t,f),y=[h];if("alias"in f){const C=typeof f.alias=="string"?[f.alias]:f.alias;for(const k of C)y.push(E0(Zt({},h,{components:g?g.record.components:h.components,path:k,aliasOf:g?g.record:h})))}let b,w;for(const C of y){const{path:k}=C;if(p&&k[0]!=="/"){const E=p.record.path,T=E[E.length-1]==="/"?"":"/";C.path=p.record.path+(k&&T+k)}if(b=AJ(C,p,m),g?g.alias.push(b):(w=w||b,w!==b&&w.alias.push(b),v&&f.name&&!x0(b)&&s(f.name)),KE(b)&&u(b),h.children){const E=h.children;for(let T=0;T{s(w)}:yi}function s(f){if(BE(f)){const p=a.get(f);p&&(a.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(s),p.alias.forEach(s))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&a.delete(f.record.name),f.children.forEach(s),f.alias.forEach(s))}}function r(){return n}function u(f){const p=BJ(f,n);n.splice(p,0,f),f.record.name&&!x0(f)&&a.set(f.record.name,f)}function c(f,p){let g,v={},h,m;if("name"in f&&f.name){if(g=a.get(f.name),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f});m=g.record.name,v=Zt(k0(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),f.params&&k0(f.params,g.keys.map(w=>w.name))),h=g.stringify(v)}else if(f.path!=null)h=f.path,g=n.find(w=>w.re.test(h)),g&&(v=g.parse(h),m=g.record.name);else{if(g=p.name?a.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Tr(wn.MATCHER_NOT_FOUND,{location:f,currentLocation:p});m=g.record.name,v=Zt({},p.params,f.params),h=g.stringify(v)}const y=[];let b=g;for(;b;)y.unshift(b.record),b=b.parent;return{name:m,path:h,params:v,matched:y,meta:VJ(y)}}e.forEach(f=>l(f));function d(){n.length=0,a.clear()}return{addRoute:l,resolve:c,removeRoute:s,clearRoutes:d,getRoutes:r,getRecordMatcher:o}}function k0(e,t){const n={};for(const a of t)a in e&&(n[a]=e[a]);return n}function E0(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:DJ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function DJ(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const a in e.components)t[a]=typeof n=="object"?n[a]:n;return t}function x0(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function VJ(e){return e.reduce((t,n)=>Zt(t,n.meta),{})}function BJ(e,t){let n=0,a=t.length;for(;n!==a;){const l=n+a>>1;HE(e,t[l])<0?a=l:n=l+1}const o=FJ(e);return o&&(a=t.lastIndexOf(o,a-1)),a}function FJ(e){let t=e;for(;t=t.parent;)if(KE(t)&&HE(e,t)===0)return t}function KE({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function T0(e){const t=_e(qd),n=_e(Mm),a=S(()=>{const u=i(e.to);return t.resolve(u)}),o=S(()=>{const{matched:u}=a.value,{length:c}=u,d=u[c-1],f=n.matched;if(!d||!f.length)return-1;const p=f.findIndex(xr.bind(null,d));if(p>-1)return p;const g=$0(u[c-2]);return c>1&&$0(d)===g&&f[f.length-1].path!==g?f.findIndex(xr.bind(null,u[c-2])):p}),l=S(()=>o.value>-1&&jJ(n.params,a.value.params)),s=S(()=>o.value>-1&&o.value===n.matched.length-1&&VE(n.params,a.value.params));function r(u={}){if(WJ(u)){const c=t[i(e.replace)?"replace":"push"](i(e.to)).catch(yi);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:a,href:S(()=>a.value.href),isActive:l,isExactActive:s,navigate:r}}function zJ(e){return e.length===1?e[0]:e}const HJ=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:T0,setup(e,{slots:t}){const n=Rt(T0(e)),{options:a}=_e(qd),o=S(()=>({[O0(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[O0(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const l=t.default&&zJ(t.default(n));return e.custom?l:Ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},l)}}}),KJ=HJ;function WJ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jJ(e,t){for(const n in t){const a=t[n],o=e[n];if(typeof a=="string"){if(a!==o)return!1}else if(!Ja(o)||o.length!==a.length||a.some((l,s)=>l.valueOf()!==o[s].valueOf()))return!1}return!0}function $0(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const O0=(e,t,n)=>e??t??n,UJ=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=_e(yv),o=S(()=>e.route||a.value),l=_e(b0,0),s=S(()=>{let c=i(l);const{matched:d}=o.value;let f;for(;(f=d[c])&&!f.components;)c++;return c}),r=S(()=>o.value.matched[s.value]);bt(b0,S(()=>s.value+1)),bt(CJ,r),bt(yv,o);const u=A();return fe(()=>[u.value,r.value,e.name],([c,d,f],[p,g,v])=>{d&&(d.instances[f]=c,g&&g!==d&&c&&c===p&&(d.leaveGuards.size||(d.leaveGuards=g.leaveGuards),d.updateGuards.size||(d.updateGuards=g.updateGuards))),c&&d&&(!g||!xr(d,g)||!p)&&(d.enterCallbacks[f]||[]).forEach(h=>h(c))},{flush:"post"}),()=>{const c=o.value,d=e.name,f=r.value,p=f&&f.components[d];if(!p)return N0(n.default,{Component:p,route:c});const g=f.props[d],v=g?g===!0?c.params:typeof g=="function"?g(c):g:null,m=Ye(p,Zt({},v,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[d]=null)},ref:u}));return N0(n.default,{Component:m,route:c})||m}}});function N0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const YJ=UJ;function qJ(e){const t=LJ(e.routes,e),n=e.parseQuery||bJ,a=e.stringifyQuery||y0,o=e.history,l=Xr(),s=Xr(),r=Xr(),u=Wt(gl);let c=gl;Ys&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const d=Uf.bind(null,te=>""+te),f=Uf.bind(null,nJ),p=Uf.bind(null,qi);function g(te,de){let se,Y;return BE(te)?(se=t.getRecordMatcher(te),Y=de):Y=te,t.addRoute(Y,se)}function v(te){const de=t.getRecordMatcher(te);de&&t.removeRoute(de)}function h(){return t.getRoutes().map(te=>te.record)}function m(te){return!!t.getRecordMatcher(te)}function y(te,de){if(de=Zt({},de||u.value),typeof te=="string"){const oe=Yf(n,te,de.path),ce=t.resolve({path:oe.path},de),ge=o.createHref(oe.fullPath);return Zt(oe,ce,{params:p(ce.params),hash:qi(oe.hash),redirectedFrom:void 0,href:ge})}let se;if(te.path!=null)se=Zt({},te,{path:Yf(n,te.path,de.path).path});else{const oe=Zt({},te.params);for(const ce in oe)oe[ce]==null&&delete oe[ce];se=Zt({},te,{params:f(oe)}),de.params=f(de.params)}const Y=t.resolve(se,de),G=te.hash||"";Y.params=d(p(Y.params));const V=lJ(a,Zt({},te,{hash:QZ(G),path:Y.path})),Z=o.createHref(V);return Zt({fullPath:V,hash:G,query:a===y0?wJ(te.query):te.query||{}},Y,{redirectedFrom:void 0,href:Z})}function b(te){return typeof te=="string"?Yf(n,te,u.value.path):Zt({},te)}function w(te,de){if(c!==te)return Tr(wn.NAVIGATION_CANCELLED,{from:de,to:te})}function C(te){return T(te)}function k(te){return C(Zt(b(te),{replace:!0}))}function E(te,de){const se=te.matched[te.matched.length-1];if(se&&se.redirect){const{redirect:Y}=se;let G=typeof Y=="function"?Y(te,de):Y;return typeof G=="string"&&(G=G.includes("?")||G.includes("#")?G=b(G):{path:G},G.params={}),Zt({query:te.query,hash:te.hash,params:G.path!=null?{}:te.params},G)}}function T(te,de){const se=c=y(te),Y=u.value,G=te.state,V=te.force,Z=te.replace===!0,oe=E(se,Y);if(oe)return T(Zt(b(oe),{state:typeof oe=="object"?Zt({},G,oe.state):G,force:V,replace:Z}),de||se);const ce=se;ce.redirectedFrom=de;let ge;return!V&&sJ(a,Y,se)&&(ge=Tr(wn.NAVIGATION_DUPLICATED,{to:ce,from:Y}),H(Y,Y,!0,!1)),(ge?Promise.resolve(ge):O(ce,Y)).catch(me=>Do(me)?Do(me,wn.NAVIGATION_GUARD_REDIRECT)?me:z(me):I(me,ce,Y)).then(me=>{if(me){if(Do(me,wn.NAVIGATION_GUARD_REDIRECT))return T(Zt({replace:Z},b(me.to),{state:typeof me.to=="object"?Zt({},G,me.to.state):G,force:V}),de||ce)}else me=P(ce,Y,!0,Z,G);return _(ce,Y,me),me})}function $(te,de){const se=w(te,de);return se?Promise.reject(se):Promise.resolve()}function N(te){const de=Q.values().next().value;return de&&typeof de.runWithContext=="function"?de.runWithContext(te):te()}function O(te,de){let se;const[Y,G,V]=SJ(te,de);se=Gf(Y.reverse(),"beforeRouteLeave",te,de);for(const oe of Y)oe.leaveGuards.forEach(ce=>{se.push(El(ce,te,de))});const Z=$.bind(null,te,de);return se.push(Z),ue(se).then(()=>{se=[];for(const oe of l.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).then(()=>{se=Gf(G,"beforeRouteUpdate",te,de);for(const oe of G)oe.updateGuards.forEach(ce=>{se.push(El(ce,te,de))});return se.push(Z),ue(se)}).then(()=>{se=[];for(const oe of V)if(oe.beforeEnter)if(Ja(oe.beforeEnter))for(const ce of oe.beforeEnter)se.push(El(ce,te,de));else se.push(El(oe.beforeEnter,te,de));return se.push(Z),ue(se)}).then(()=>(te.matched.forEach(oe=>oe.enterCallbacks={}),se=Gf(V,"beforeRouteEnter",te,de,N),se.push(Z),ue(se))).then(()=>{se=[];for(const oe of s.list())se.push(El(oe,te,de));return se.push(Z),ue(se)}).catch(oe=>Do(oe,wn.NAVIGATION_CANCELLED)?oe:Promise.reject(oe))}function _(te,de,se){r.list().forEach(Y=>N(()=>Y(te,de,se)))}function P(te,de,se,Y,G){const V=w(te,de);if(V)return V;const Z=de===gl,oe=Ys?history.state:{};se&&(Y||Z?o.replace(te.fullPath,Zt({scroll:Z&&oe&&oe.scroll},G)):o.push(te.fullPath,G)),u.value=te,H(te,de,se,Z),z()}let D;function W(){D||(D=o.listen((te,de,se)=>{if(!ee.listening)return;const Y=y(te),G=E(Y,ee.currentRoute.value);if(G){T(Zt(G,{replace:!0,force:!0}),Y).catch(yi);return}c=Y;const V=u.value;Ys&&vJ(g0(V.fullPath,se.delta),Yd()),O(Y,V).catch(Z=>Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_CANCELLED)?Z:Do(Z,wn.NAVIGATION_GUARD_REDIRECT)?(T(Zt(b(Z.to),{force:!0}),Y).then(oe=>{Do(oe,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&!se.delta&&se.type===mv.pop&&o.go(-1,!1)}).catch(yi),Promise.reject()):(se.delta&&o.go(-se.delta,!1),I(Z,Y,V))).then(Z=>{Z=Z||P(Y,V,!1),Z&&(se.delta&&!Do(Z,wn.NAVIGATION_CANCELLED)?o.go(-se.delta,!1):se.type===mv.pop&&Do(Z,wn.NAVIGATION_ABORTED|wn.NAVIGATION_DUPLICATED)&&o.go(-1,!1)),_(Y,V,Z)}).catch(yi)}))}let U=Xr(),F=Xr(),R;function I(te,de,se){z(te);const Y=F.list();return Y.length?Y.forEach(G=>G(te,de,se)):console.error(te),Promise.reject(te)}function L(){return R&&u.value!==gl?Promise.resolve():new Promise((te,de)=>{U.add([te,de])})}function z(te){return R||(R=!te,W(),U.list().forEach(([de,se])=>te?se(te):de()),U.reset()),te}function H(te,de,se,Y){const{scrollBehavior:G}=e;if(!Ys||!G)return Promise.resolve();const V=!se&&hJ(g0(te.fullPath,0))||(Y||!se)&&history.state&&history.state.scroll||null;return Ae().then(()=>G(te,de,V)).then(Z=>Z&&pJ(Z)).catch(Z=>I(Z,te,de))}const K=te=>o.go(te);let q;const Q=new Set,ee={currentRoute:u,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:m,getRoutes:h,resolve:y,options:e,push:C,replace:k,go:K,back:()=>K(-1),forward:()=>K(1),beforeEach:l.add,beforeResolve:s.add,afterEach:r.add,onError:F.add,isReady:L,install(te){te.component("RouterLink",KJ),te.component("RouterView",YJ),te.config.globalProperties.$router=ee,Object.defineProperty(te.config.globalProperties,"$route",{enumerable:!0,get:()=>i(u)}),Ys&&!q&&u.value===gl&&(q=!0,C(o.location).catch(Y=>{}));const de={};for(const Y in gl)Object.defineProperty(de,Y,{get:()=>u.value[Y],enumerable:!0});te.provide(qd,ee),te.provide(Mm,rd(de)),te.provide(yv,u);const se=te.unmount;Q.add(te),te.unmount=function(){Q.delete(te),Q.size<1&&(c=gl,D&&D(),D=null,u.value=gl,q=!1,R=!1),se()}}};function ue(te){return te.reduce((de,se)=>de.then(()=>N(se)),Promise.resolve())}return ee}function oQ(){return _e(qd)}function lQ(e){return _e(Mm)}const GJ=[{path:"/",name:"home",component:()=>io(()=>import("./HomePage-v6ufhhLl.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-C7oFJn97.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-B6n5vSIJ.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-CnuINV9I.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-miuzOi4K.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-CClHfarr.js"),__vite__mapDeps([14,1,15,4,7,8,16,17,18,19,20,21]))},{path:"cloud-configs",name:"admin-cloud-configs",component:()=>io(()=>import("./CloudConfig-DIBXz7ib.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-B_lvCL8b.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-BpnPsiXS.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-D4vANRRO.js"),__vite__mapDeps([19,1,20]))}]}],WE=qJ({history:TJ(),routes:GJ});WE.beforeEach((e,t,n)=>{const a=localStorage.getItem("admin_token");e.meta.requiresAuth&&!a?n("/admin/login"):n()});const Gd=lw(FZ);Gd.use(y$());Gd.use(WE);Gd.use(VZ);Gd.mount("#app");export{vP as A,Ae as B,ZJ as C,XJ as D,iZ as E,He as F,eQ as G,JJ as H,tQ as I,al as J,dt as K,Nt as L,Oo as M,aQ as N,QJ as O,nQ as P,Pv as Q,x as a,j as b,B as c,ie as d,le as e,J as f,en as g,A as h,Rt as i,Ot as j,i as k,St as l,$r as m,M as n,mt as o,je as p,Xe as q,Ct as r,QP as s,ke as t,oQ as u,S as v,ne as w,fe as x,re as y,lQ as z}; diff --git a/source_clean/frontend/index.html b/source_clean/frontend/index.html index 047e6cc..c646277 100644 --- a/source_clean/frontend/index.html +++ b/source_clean/frontend/index.html @@ -21,7 +21,7 @@ } })(); - +