From 4131ccece9ca929b24e72a310a774d96b37cd1eb Mon Sep 17 00:00:00 2001 From: admin <362324317@qq.com> Date: Sun, 17 May 2026 18:49:15 +0800 Subject: [PATCH] =?UTF-8?q?v0.3.27:=20=E5=85=A8=E5=B1=80=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E4=B8=8B=E5=B1=95=E7=A4=BA=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=B6=88=E6=81=AF=E6=A8=A1=E6=9D=BF=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=BC=96=E8=BE=91=E6=A0=87=E9=A2=98=E5=92=8C=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VERSION | 2 +- ...C2704iLs.js => AdminDashboard-CevUjDG-.js} | 2 +- .../dist-vite/assets/AdminLayout-CmowWzFU.js} | 2 +- .../dist-vite/assets/AdminLogin-NwlTbWPe.js} | 2 +- .../dist-vite/assets/Cleanup-6oJdngfa.js} | 2 +- ...dge-CFunKPHf.js => CloudBadge-CBMiQcXc.js} | 2 +- ...ig-B1Oal8Ih.js => CloudConfig-BjpiSn71.js} | 2 +- ...ePage-PHccTGnQ.js => HomePage-Cmk4L4mz.js} | 2 +- ...l-ChuuoSxg.js => ResultDetail-DkGRh6Pd.js} | 2 +- ...ds-BVhLgZy2.js => SaveRecords-CYbt4Kzt.js} | 2 +- ...t-BmKs8gEH.js => SearchResult-DwhKkE6n.js} | 2 +- .../dist-vite/assets/SystemConfig-6T6IuZsX.js | 16 ---------- .../assets/SystemConfig-C8bSCuHg.css | 1 - .../assets/SystemConfig-CG32Xbld.css | 1 + .../dist-vite/assets/SystemConfig-DFW9m6V4.js | 25 ++++++++++++++++ .../{index-NatHwx8Z.js => index-Cl0LRM77.js} | 4 +-- .../frontend-src/dist-vite/index.html | 2 +- .../src/pages/admin/SystemConfig.vue | 30 +++++++++++++++++-- ...C2704iLs.js => AdminDashboard-CevUjDG-.js} | 2 +- .../assets/AdminLayout-CmowWzFU.js} | 2 +- .../assets/AdminLogin-NwlTbWPe.js} | 2 +- .../assets/Cleanup-6oJdngfa.js} | 2 +- ...dge-CFunKPHf.js => CloudBadge-CBMiQcXc.js} | 2 +- ...ig-B1Oal8Ih.js => CloudConfig-BjpiSn71.js} | 2 +- ...ePage-PHccTGnQ.js => HomePage-Cmk4L4mz.js} | 2 +- ...l-ChuuoSxg.js => ResultDetail-DkGRh6Pd.js} | 2 +- ...ds-BVhLgZy2.js => SaveRecords-CYbt4Kzt.js} | 2 +- ...t-BmKs8gEH.js => SearchResult-DwhKkE6n.js} | 2 +- .../frontend/assets/SystemConfig-6T6IuZsX.js | 16 ---------- .../frontend/assets/SystemConfig-C8bSCuHg.css | 1 - .../frontend/assets/SystemConfig-CG32Xbld.css | 1 + .../frontend/assets/SystemConfig-DFW9m6V4.js | 25 ++++++++++++++++ .../{index-NatHwx8Z.js => index-Cl0LRM77.js} | 4 +-- source_clean/frontend/index.html | 2 +- 34 files changed, 107 insertions(+), 63 deletions(-) rename source_clean/frontend-src/dist-vite/assets/{AdminDashboard-C2704iLs.js => AdminDashboard-CevUjDG-.js} (99%) rename source_clean/{frontend/assets/AdminLayout-BiUZl96Q.js => frontend-src/dist-vite/assets/AdminLayout-CmowWzFU.js} (98%) rename source_clean/{frontend/assets/AdminLogin-UW0IM39Z.js => frontend-src/dist-vite/assets/AdminLogin-NwlTbWPe.js} (94%) rename source_clean/{frontend/assets/Cleanup-CjqZVDp7.js => frontend-src/dist-vite/assets/Cleanup-6oJdngfa.js} (99%) rename source_clean/frontend-src/dist-vite/assets/{CloudBadge-CFunKPHf.js => CloudBadge-CBMiQcXc.js} (78%) rename source_clean/frontend-src/dist-vite/assets/{CloudConfig-B1Oal8Ih.js => CloudConfig-BjpiSn71.js} (99%) rename source_clean/frontend-src/dist-vite/assets/{HomePage-PHccTGnQ.js => HomePage-Cmk4L4mz.js} (98%) rename source_clean/frontend-src/dist-vite/assets/{ResultDetail-ChuuoSxg.js => ResultDetail-DkGRh6Pd.js} (98%) rename source_clean/frontend-src/dist-vite/assets/{SaveRecords-BVhLgZy2.js => SaveRecords-CYbt4Kzt.js} (99%) rename source_clean/frontend-src/dist-vite/assets/{SearchResult-BmKs8gEH.js => SearchResult-DwhKkE6n.js} (99%) delete mode 100644 source_clean/frontend-src/dist-vite/assets/SystemConfig-6T6IuZsX.js delete mode 100644 source_clean/frontend-src/dist-vite/assets/SystemConfig-C8bSCuHg.css create mode 100644 source_clean/frontend-src/dist-vite/assets/SystemConfig-CG32Xbld.css create mode 100644 source_clean/frontend-src/dist-vite/assets/SystemConfig-DFW9m6V4.js rename source_clean/frontend-src/dist-vite/assets/{index-NatHwx8Z.js => index-Cl0LRM77.js} (99%) rename source_clean/frontend/assets/{AdminDashboard-C2704iLs.js => AdminDashboard-CevUjDG-.js} (99%) rename source_clean/{frontend-src/dist-vite/assets/AdminLayout-BiUZl96Q.js => frontend/assets/AdminLayout-CmowWzFU.js} (98%) rename source_clean/{frontend-src/dist-vite/assets/AdminLogin-UW0IM39Z.js => frontend/assets/AdminLogin-NwlTbWPe.js} (94%) rename source_clean/{frontend-src/dist-vite/assets/Cleanup-CjqZVDp7.js => frontend/assets/Cleanup-6oJdngfa.js} (99%) rename source_clean/frontend/assets/{CloudBadge-CFunKPHf.js => CloudBadge-CBMiQcXc.js} (78%) rename source_clean/frontend/assets/{CloudConfig-B1Oal8Ih.js => CloudConfig-BjpiSn71.js} (99%) rename source_clean/frontend/assets/{HomePage-PHccTGnQ.js => HomePage-Cmk4L4mz.js} (98%) rename source_clean/frontend/assets/{ResultDetail-ChuuoSxg.js => ResultDetail-DkGRh6Pd.js} (98%) rename source_clean/frontend/assets/{SaveRecords-BVhLgZy2.js => SaveRecords-CYbt4Kzt.js} (99%) rename source_clean/frontend/assets/{SearchResult-BmKs8gEH.js => SearchResult-DwhKkE6n.js} (99%) delete mode 100644 source_clean/frontend/assets/SystemConfig-6T6IuZsX.js delete mode 100644 source_clean/frontend/assets/SystemConfig-C8bSCuHg.css create mode 100644 source_clean/frontend/assets/SystemConfig-CG32Xbld.css create mode 100644 source_clean/frontend/assets/SystemConfig-DFW9m6V4.js rename source_clean/frontend/assets/{index-NatHwx8Z.js => index-Cl0LRM77.js} (99%) diff --git a/VERSION b/VERSION index e23fb32..e01fa85 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.3.26 +0.3.27 diff --git a/source_clean/frontend-src/dist-vite/assets/AdminDashboard-C2704iLs.js b/source_clean/frontend-src/dist-vite/assets/AdminDashboard-CevUjDG-.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/AdminDashboard-C2704iLs.js rename to source_clean/frontend-src/dist-vite/assets/AdminDashboard-CevUjDG-.js index 43d097e..651f085 100644 --- a/source_clean/frontend-src/dist-vite/assets/AdminDashboard-C2704iLs.js +++ b/source_clean/frontend-src/dist-vite/assets/AdminDashboard-CevUjDG-.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-NatHwx8Z.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-B1Oal8Ih.js";import u1 from"./SystemConfig-6T6IuZsX.js";import f1 from"./SaveRecords-BVhLgZy2.js";import"./index-Bn7NwETH.js";import"./CloudBadge-CFunKPHf.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-Cl0LRM77.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-BjpiSn71.js";import u1 from"./SystemConfig-DFW9m6V4.js";import f1 from"./SaveRecords-CYbt4Kzt.js";import"./index-Bn7NwETH.js";import"./CloudBadge-CBMiQcXc.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-BiUZl96Q.js b/source_clean/frontend-src/dist-vite/assets/AdminLayout-CmowWzFU.js similarity index 98% rename from source_clean/frontend/assets/AdminLayout-BiUZl96Q.js rename to source_clean/frontend-src/dist-vite/assets/AdminLayout-CmowWzFU.js index 68f751a..2dcdaa8 100644 --- a/source_clean/frontend/assets/AdminLayout-BiUZl96Q.js +++ b/source_clean/frontend-src/dist-vite/assets/AdminLayout-CmowWzFU.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-NatHwx8Z.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-Cl0LRM77.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-UW0IM39Z.js b/source_clean/frontend-src/dist-vite/assets/AdminLogin-NwlTbWPe.js similarity index 94% rename from source_clean/frontend/assets/AdminLogin-UW0IM39Z.js rename to source_clean/frontend-src/dist-vite/assets/AdminLogin-NwlTbWPe.js index 45b4c31..05efb34 100644 --- a/source_clean/frontend/assets/AdminLogin-UW0IM39Z.js +++ b/source_clean/frontend-src/dist-vite/assets/AdminLogin-NwlTbWPe.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-NatHwx8Z.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-Cl0LRM77.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-CjqZVDp7.js b/source_clean/frontend-src/dist-vite/assets/Cleanup-6oJdngfa.js similarity index 99% rename from source_clean/frontend/assets/Cleanup-CjqZVDp7.js rename to source_clean/frontend-src/dist-vite/assets/Cleanup-6oJdngfa.js index d1df3f3..c6cd98a 100644 --- a/source_clean/frontend/assets/Cleanup-CjqZVDp7.js +++ b/source_clean/frontend-src/dist-vite/assets/Cleanup-6oJdngfa.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-NatHwx8Z.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-Cl0LRM77.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-CFunKPHf.js b/source_clean/frontend-src/dist-vite/assets/CloudBadge-CBMiQcXc.js similarity index 78% rename from source_clean/frontend-src/dist-vite/assets/CloudBadge-CFunKPHf.js rename to source_clean/frontend-src/dist-vite/assets/CloudBadge-CBMiQcXc.js index e052cd9..3180cdd 100644 --- a/source_clean/frontend-src/dist-vite/assets/CloudBadge-CFunKPHf.js +++ b/source_clean/frontend-src/dist-vite/assets/CloudBadge-CBMiQcXc.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-NatHwx8Z.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-Cl0LRM77.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-B1Oal8Ih.js b/source_clean/frontend-src/dist-vite/assets/CloudConfig-BjpiSn71.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/CloudConfig-B1Oal8Ih.js rename to source_clean/frontend-src/dist-vite/assets/CloudConfig-BjpiSn71.js index 9c3aba1..729d036 100644 --- a/source_clean/frontend-src/dist-vite/assets/CloudConfig-B1Oal8Ih.js +++ b/source_clean/frontend-src/dist-vite/assets/CloudConfig-BjpiSn71.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-NatHwx8Z.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-CFunKPHf.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-Cl0LRM77.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-CBMiQcXc.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-PHccTGnQ.js b/source_clean/frontend-src/dist-vite/assets/HomePage-Cmk4L4mz.js similarity index 98% rename from source_clean/frontend-src/dist-vite/assets/HomePage-PHccTGnQ.js rename to source_clean/frontend-src/dist-vite/assets/HomePage-Cmk4L4mz.js index 4ca80e8..26f3a01 100644 --- a/source_clean/frontend-src/dist-vite/assets/HomePage-PHccTGnQ.js +++ b/source_clean/frontend-src/dist-vite/assets/HomePage-Cmk4L4mz.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-NatHwx8Z.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-Cl0LRM77.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-ChuuoSxg.js b/source_clean/frontend-src/dist-vite/assets/ResultDetail-DkGRh6Pd.js similarity index 98% rename from source_clean/frontend-src/dist-vite/assets/ResultDetail-ChuuoSxg.js rename to source_clean/frontend-src/dist-vite/assets/ResultDetail-DkGRh6Pd.js index 5f48a6d..a876eb9 100644 --- a/source_clean/frontend-src/dist-vite/assets/ResultDetail-ChuuoSxg.js +++ b/source_clean/frontend-src/dist-vite/assets/ResultDetail-DkGRh6Pd.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-NatHwx8Z.js";import{C as K}from"./CloudBadge-CFunKPHf.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-Cl0LRM77.js";import{C as K}from"./CloudBadge-CBMiQcXc.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-BVhLgZy2.js b/source_clean/frontend-src/dist-vite/assets/SaveRecords-CYbt4Kzt.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/SaveRecords-BVhLgZy2.js rename to source_clean/frontend-src/dist-vite/assets/SaveRecords-CYbt4Kzt.js index df4da50..f8d61eb 100644 --- a/source_clean/frontend-src/dist-vite/assets/SaveRecords-BVhLgZy2.js +++ b/source_clean/frontend-src/dist-vite/assets/SaveRecords-CYbt4Kzt.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-NatHwx8Z.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-Cl0LRM77.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-BmKs8gEH.js b/source_clean/frontend-src/dist-vite/assets/SearchResult-DwhKkE6n.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/SearchResult-BmKs8gEH.js rename to source_clean/frontend-src/dist-vite/assets/SearchResult-DwhKkE6n.js index 9a0db69..6a8ad17 100644 --- a/source_clean/frontend-src/dist-vite/assets/SearchResult-BmKs8gEH.js +++ b/source_clean/frontend-src/dist-vite/assets/SearchResult-DwhKkE6n.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-NatHwx8Z.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-Cl0LRM77.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;uMe.section||He.query.section||""),xe=y(),pe=y([]),d=J({}),$=y([]),Y=y(""),E=y([]),Q=y(""),L=y([]),X=y(""),N=y([]),Z=y(""),ee=y(""),F=y([]),fe=y(!1),ce=y(!1),R=J({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),ke=y(!0),te=y(!1),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),P=y(null),Ve=y(!0),de=y(!1),me=H({get:()=>String(d.search_proxy_enabled)==="true",set:t=>{d.search_proxy_enabled=t?"true":"false"}}),he=H({get:()=>String(d.pansou_web_enabled)==="true",set:t=>{d.pansou_web_enabled=t?"true":"false"}}),Se=H({get:()=>String(d.search_all_channels)==="true",set:t=>{d.search_all_channels=t?"true":"false"}}),Ce=H({get:()=>String(d.auto_update_enabled)==="true",set:t=>{d.auto_update_enabled=t?"true":"false"}}),h=J({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),ve=y(!1),ye=y(!1),Ue=y(""),ge=y(!1),Pe=y("");async function Je(){try{const t=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Object.assign(h,e)}}catch{}}async function Ye(){try{const t=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();e.date&&(Pe.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function Qe(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...h})})}catch{}}async function Xe(){ve.value=!0;try{const t=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Ue.value=e.content,ge.value=!0}}finally{ve.value=!1}}async function Ze(){ye.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?u.success("测试报告已发送到全局通知通道"):u.error("发送失败")}catch{u.error("发送失败")}finally{ye.value=!1}}const ze=y([]),D=y({}),_e=y(!1),Te=y([]);async function el(){try{const t=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!t.ok)return;const e=await t.json(),a=Array.isArray(e)?[...new Set(e.map(n=>n.promotion_account||"").filter(Boolean))]:[];Te.value=a}catch{}}const m=J({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ll=H(()=>{var e;const t={};for(const[a,n]of Object.entries(D.value))(e=v.channels[a])!=null&&e._enabled&&(t[a]=n);return t}),v=J({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}});function tl(t){var e,a,n,x;if(t){m.id=t.id,m.account=t.account;const p=t.notify_config||{};m.channels=Object.keys(p.channels||{}),m.events={on_save_success:((e=p.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((a=p.events)==null?void 0:a.on_save_fail)!==!1,on_cookie_expire:((n=p.events)==null?void 0:n.on_cookie_expire)!==!1,on_cleanup:((x=p.events)==null?void 0:x.on_cleanup)===!0}}else m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function sl(){m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function re(t,e){return((t.notify_config||{}).events||{})[e]===!0}async function al(){if(!m.account){u.warning("请填写推广账号");return}_e.value=!0;try{const t={account:m.account,notify_config:{channels:{},events:m.events}},e={};for(const n of m.channels)e[n]={};t.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(t)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)});const a=!!m.id;m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},u.success(a?"推送用户已更新":"推送用户已添加"),await be()}catch(t){u.error(t.message||"保存失败")}finally{_e.value=!1}}async function be(){try{const t=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});t.ok&&(ze.value=await t.json())}catch(t){console.error("Failed to load push users",t)}}async function ol(){try{D.value=await Xl()}catch(t){console.error("Failed to load providers",t)}}async function nl(t){try{await fetch("/api/admin/push-users/"+t.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),u.success("已删除"),await be()}catch(e){u.error(e.message||"删除失败")}}function Ie(t){var a;return((a=t.notify_config)==null?void 0:a.channels)||{}}function il(t){var e;return((e=D.value[t])==null?void 0:e.label)||t}function dl(t){return Object.keys(Ie(t)).length>0}function rl(){const t={};for(const[e,a]of Object.entries(D.value)){t[e]={_enabled:!1,_testing:!1};for(const n of a.params||[])t[e][n.key]=n.default||""}v.channels=t,v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function ul(){try{const a=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(n=>n.key==="global_notify_config");if(a&&a.value)try{const n=JSON.parse(a.value),x=n.channels||{};for(const[p,S]of Object.entries(x))if(v.channels[p]){v.channels[p]._enabled=!0;for(const[T,w]of Object.entries(S))v.channels[p][T]=w}n.events&&(v.events.on_save_success=n.events.on_save_success!==!1,v.events.on_save_fail=n.events.on_save_fail!==!1,v.events.on_cookie_expire=n.events.on_cookie_expire!==!1,v.events.on_cleanup=n.events.on_cleanup===!0)}catch{}}catch{}}async function pl(t){const e=v.channels[t];if(!(!e||!e._enabled)){e._testing=!0;try{const a=await et(t);a.success?u.success(a.message):u.error(a.message)}catch(a){u.error(a.message||"测试失败")}finally{e._testing=!1}}}const z=J({oldPassword:"",newPassword:"",confirmPassword:""}),fl={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:(t,e,a)=>{e!==z.newPassword?a(new Error("两次输入的密码不一致")):a()},trigger:"blur"}]};Wl(async()=>{try{pe.value=await Yl();for(const p of pe.value)d[p.key]=p.value;const t=String(d.title_filter_rules||"");$.value=t.split(` -`).filter(p=>p.trim());const e=String(d.link_invalid_keywords||"");E.value=e.split(` -`).filter(p=>p.trim());const a=String(d.quark_ad_keywords||"");L.value=a.split(` -`).filter(p=>p.trim());const n=String(d.quark_warning_folder_names||"");N.value=n.split(` -`).filter(p=>p.trim());const x=String(d.quark_sus_extensions||"");F.value=x.split(` -`).filter(p=>p.trim())}catch{u.error("加载系统配置失败")}try{const t=await Ql();Object.assign(R,t)}catch{R.db_size="无法读取"}finally{ke.value=!1}we(),await ol(),rl(),await ul(),be(),Je(),Ye(),el()}),Kl(D,()=>{for(const[t,e]of Object.entries(D.value))if(!v.channels[t]){v.channels[t]={_enabled:!1,_testing:!1};for(const a of e.params||[])v.channels[t][a.key]=a.default||""}});async function cl(){var e,a;const t=String(d.redis_url||"redis://redis:6379");te.value=!0;try{const n=await lt(t);n.ok?u.success(`✅ Redis 连接成功 — ${n.info}`):u.error(`❌ Redis 连接失败 — ${n.info}`)}catch(n){u.error(((a=(e=n.response)==null?void 0:e.data)==null?void 0:a.error)||"测试请求失败")}finally{te.value=!1}}async function we(){Ve.value=!0;try{const t=localStorage.getItem("admin_token"),e={};t&&(e.Authorization="Bearer "+t);const a=await fetch("/api/admin/pansou-info",{headers:e});if(!a.ok)throw new Error("HTTP "+a.status);const n=await a.json();P.value=n}catch{P.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{Ve.value=!1}}async function ml(){de.value=!0;try{const t=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};t&&(e.Authorization="Bearer "+t);const n=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();n.ok?(u.success("✅ PanSou 已更新并重启"),setTimeout(()=>we(),3e3)):u.error("❌ 更新失败 — "+(n.error||"未知错误"))}catch(t){u.error(t.message||"更新请求失败")}finally{de.value=!1}}async function vl(){var t,e;se.value=!0;try{const a=await le({type:"pansou",url:String(d.pansou_url||"")});a.ok?(we(),u.success(`✅ PanSou 连接成功 — ${a.info}`)):u.error(`❌ PanSou 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{se.value=!1}}async function yl(){var t,e;ae.value=!0;try{const a=await le({type:"video_parser",url:String(d.video_parser_url||"")});a.ok?u.success(`✅ 视频解析服务连接成功 — ${a.info}`):u.error(`❌ 视频解析服务连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function gl(){var t,e;oe.value=!0;try{const a=await le({type:"tmdb",token:String(d.tmdb_api_token||"")});a.ok?u.success(`✅ TMDB 令牌有效 — ${a.info}`):u.error(`❌ TMDB 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function _l(){var t,e;ne.value=!0;try{const a=await le({type:"proxy",url:String(d.search_proxy_url||"")});a.ok?u.success(`✅ 搜索代理可用 — ${a.info}`):u.error(`❌ 搜索代理不可用 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function bl(){var t,e;ie.value=!0;try{const a=String(d.ip_geo_api_url||"");if(!a){u.warning("请先输入 IP 归属地查询 API 地址");return}const n=await le({type:"ip_geo",url:a});n.ok?u.success("✅ IP 归属地接口可用 — "+n.info):u.error("❌ IP 归属地接口不可用 — "+n.info)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}function wl(){const t=Y.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)$.value.includes(n)||($.value.push(n),a++);Y.value="",je(),a>0?u.success(`已添加 ${a} 条规则`):u.info("所有规则已存在")}function xl(t){$.value.splice(t,1),je()}function kl(t){return t.startsWith("#")?"info":t.startsWith("/")&&(t.endsWith("/")||t.endsWith("/g")||t.endsWith("/i")||t.endsWith("/gi"))?"warning":""}function je(){d.title_filter_rules=$.value.join(` -`)}function Vl(){const t=Q.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)E.value.includes(n)||(E.value.push(n),a++);Q.value="",Ae(),a>0?u.success(`已添加 ${a} 个关键词`):u.info("所有关键词已存在")}function hl(t){E.value.splice(t,1),Ae()}function Ae(){d.link_invalid_keywords=E.value.join(` -`)}function Sl(){const t=X.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)L.value.includes(n)||(L.value.push(n),a++);X.value="",Oe(),a>0?u.success():u.info("所有关键词已存在")}function Cl(t){L.value.splice(t,1),Oe()}function Oe(){d.quark_ad_keywords=L.value.join(` -`)}function Ul(){const t=Z.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)N.value.includes(n)||(N.value.push(n),a++);Z.value="",Re(),a>0?u.success():u.info("所有文件夹名已存在")}function Pl(t){N.value.splice(t,1),Re()}function Re(){d.quark_warning_folder_names=N.value.join(` -`)}function zl(){const t=ee.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim().toLowerCase().replace(/^\./,"")).filter(n=>n);let a=0;for(const n of e)F.value.includes(n)||(F.value.push(n),a++);ee.value="",Be(),a>0?u.success("已添加 ${added} 个后缀"):u.info("所有后缀已存在")}function Tl(t){F.value.splice(t,1),Be()}function Be(){d.quark_sus_extensions=F.value.join(` -`)}async function Il(){var t,e;fe.value=!0;try{const a={};for(const[x,p]of Object.entries(v.channels))if(p._enabled){const S={};for(const[T,w]of Object.entries(p))!T.startsWith("_")&&w!==""&&(S[T]=String(w));Object.keys(S).length>0&&(a[x]=S)}const n=pe.value.map(x=>({key:x.key,value:String(d[x.key]??x.value)}));await Qe(),n.push({key:"global_notify_config",value:JSON.stringify({channels:a,events:v.events})}),await Zl(n),u.success("配置已保存")}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"保存失败")}finally{fe.value=!1}}async function jl(){var e,a,n;if(await((e=xe.value)==null?void 0:e.validate().catch(()=>!1))){ce.value=!0;try{const x=await tt(z.oldPassword,z.newPassword);x.success?(u.success("✅ 密码修改成功,下次登录请使用新密码"),z.oldPassword="",z.newPassword="",z.confirmPassword=""):u.error(x.message)}catch(x){u.error(((n=(a=x.response)==null?void 0:a.data)==null?void 0:n.error)||"密码修改失败")}finally{ce.value=!1}}}const $e=y();function Al(){var t;(t=$e.value)==null||t.click()}async function Ol(t){var n,x,p;const e=t.target,a=(n=e.files)==null?void 0:n[0];if(a){if(!a.type.startsWith("image/")){u.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(a.size>2*1024*1024){u.error("图片大小不能超过 2MB"),e.value="";return}try{const S=await st(a);S.success?(d.site_logo=S.url,u.success("✅ LOGO 已上传并生效")):u.error(S.message)}catch(S){u.error(((p=(x=S.response)==null?void 0:x.data)==null?void 0:p.error)||"上传失败")}e.value=""}}async function Rl(){try{d.site_logo="",await at("site_logo",""),u.success("已移除 LOGO")}catch{u.error("移除失败")}}return(t,e)=>{const a=k("el-input"),n=k("el-form-item"),x=k("el-icon"),p=k("el-button"),S=k("el-form"),T=k("el-card"),w=k("el-switch"),B=k("el-divider"),Ee=k("el-radio"),Bl=k("el-radio-group"),M=k("el-input-number"),I=k("el-tag"),$l=k("el-collapse-item"),El=k("el-collapse"),Le=k("el-option"),Ne=k("el-select"),G=k("el-table-column"),Ll=k("el-popconfirm"),Nl=k("el-table"),Fl=k("el-time-picker"),Dl=k("el-dialog");return f(),g("div",nt,[W(s(T,{id:"section-sys-site"},{header:i(()=>[...e[47]||(e[47]=[l("span",null,"🌐 网站设置",-1)])]),default:i(()=>[s(S,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"网站名称"},{default:i(()=>[s(a,{modelValue:d.site_name,"onUpdate:modelValue":e[0]||(e[0]=o=>d.site_name=o),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[48]||(e[48]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),s(n,{label:"网站 LOGO"},{default:i(()=>[l("div",it,[l("div",dt,[s(p,{type:"primary",onClick:Al},{icon:i(()=>[s(x,null,{default:i(()=>[s(We(ql))]),_:1})]),default:i(()=>[e[49]||(e[49]=r(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:$e,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Ol},null,544),e[50]||(e[50]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[r(" 推荐 "),l("strong",null,"320×60"),r(" 或宽比例(如 4:1),JPEG/PNG/WebP,最大 2MB。"),l("br"),r(" LOGO 同时也作为搜索结果无封面图时的兜底图使用。 ")],-1))]),d.site_logo?(f(),g("div",rt,[l("img",{src:String(d.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=o=>o.target.style.display="none")},null,40,ut),s(p,{size:"small",type:"danger",plain:"",onClick:Rl},{default:i(()=>[...e[51]||(e[51]=[r("移除",-1)])]),_:1})])):q("",!0)])]),_:1}),s(n,{label:"底部免责声明"},{default:i(()=>[s(a,{modelValue:d.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=o=>d.site_disclaimer=o),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[52]||(e[52]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),s(n,{label:"滚动通知文字"},{default:i(()=>[s(a,{modelValue:d.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=o=>d.site_marquee=o),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[53]||(e[53]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),s(n,{label:"系统时区"},{default:i(()=>[s(a,{modelValue:d.timezone,"onUpdate:modelValue":e[4]||(e[4]=o=>d.timezone=o),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[54]||(e[54]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[K,!U.value||U.value==="sys-site"]]),W(s(T,{id:"section-sys-services"},{header:i(()=>[...e[55]||(e[55]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:i(()=>[s(S,{"label-width":"180px","label-position":"left"},{default:i(()=>{var o,c,_,j,Fe,De;return[s(n,{label:"PanSou 搜索引擎地址"},{default:i(()=>{var C,Ge;return[l("div",pt,[s(a,{modelValue:d.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=ue=>d.pansou_url=ue),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:se.value,onClick:vl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),s(p,{type:"warning",loading:de.value,onClick:ml,size:"default",style:{width:"130px"},disabled:!((C=P.value)!=null&&C.hasUpdate)},{default:i(()=>{var ue;return[r(b(de.value?"更新中...":(ue=P.value)!=null&&ue.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Ge=P.value)!=null&&Ge.latestVersion?(f(),g("span",ft,b(P.value.latestVersion),1)):q("",!0)]),e[56]||(e[56]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",ct,[l("div",mt,[l("div",{class:Ke(["db-stat-value",((o=P.value)==null?void 0:o.status)==="connected"?"text-success":"text-warning"])},b(((c=P.value)==null?void 0:c.status)==="connected"?"已连接":P.value?"未连接":"-"),3),e[57]||(e[57]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",vt,[l("div",yt,b(((_=P.value)==null?void 0:_.channelCount)??"-"),1),e[58]||(e[58]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",gt,[l("div",_t,b(((j=P.value)==null?void 0:j.pluginCount)??"-"),1),e[59]||(e[59]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",bt,[l("div",wt,b(((Fe=P.value)==null?void 0:Fe.diskCount)??"-"),1),e[60]||(e[60]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",xt,[l("div",kt,b(((De=P.value)==null?void 0:De.version)||"-"),1),e[61]||(e[61]=l("div",{class:"db-stat-label"},"版本",-1))])]),s(n,{label:"PanSou Web 端访问"},{default:i(()=>[s(w,{modelValue:he.value,"onUpdate:modelValue":e[6]||(e[6]=C=>he.value=C),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[r(" 开启后可通过 "),l("code",null,"/pansou/"),r(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),s(n,{label:"启用代理"},{default:i(()=>[s(w,{modelValue:me.value,"onUpdate:modelValue":e[7]||(e[7]=C=>me.value=C),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),me.value?(f(),V(n,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:i(()=>[l("div",Vt,[s(a,{modelValue:d.search_proxy_url,"onUpdate:modelValue":e[8]||(e[8]=C=>d.search_proxy_url=C),placeholder:"http://127.0.0.1:7890",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:ne.value,onClick:_l,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(ne.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[64]||(e[64]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):q("",!0),s(n,{label:"视频解析服务地址"},{default:i(()=>[l("div",ht,[s(a,{modelValue:d.video_parser_url,"onUpdate:modelValue":e[9]||(e[9]=C=>d.video_parser_url=C),placeholder:"http://video-parser:3001",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:ae.value,onClick:yl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),s(n,{label:"TMDB 读取令牌"},{default:i(()=>[l("div",St,[s(a,{modelValue:d.tmdb_api_token,"onUpdate:modelValue":e[10]||(e[10]=C=>d.tmdb_api_token=C),type:"password","show-password":"",placeholder:"输入 TMDB API 读取令牌(Bearer Token)",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:oe.value,onClick:gl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(oe.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[66]||(e[66]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[r(" 用于搜索 TMDB 获取评分、导演、演员等完整内容信息。 "),l("a",{href:"https://www.themoviedb.org/settings/api",target:"_blank",rel:"noopener",style:{color:"var(--primary-color)"}},"获取令牌 →")],-1))]),_:1}),s(n,{label:"IP 归属地查询"},{default:i(()=>[l("div",Ct,[s(a,{modelValue:d.ip_geo_api_url,"onUpdate:modelValue":e[11]||(e[11]=C=>d.ip_geo_api_url=C),placeholder:"https://cn.apihz.cn/api/ip/chaapi.php?id=xxx&key=***&ip={ip}&td=0",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:ie.value,onClick:bl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(ie.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[67]||(e[67]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[r(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),r(" 会被替换为实际 IP。 ")],-1)),e[68]||(e[68]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),s(B,{"content-position":"left"},{default:i(()=>[...e[69]||(e[69]=[r("Redis 缓存",-1)])]),_:1}),s(n,{label:"Redis 连接地址"},{default:i(()=>[l("div",Ut,[s(a,{modelValue:d.redis_url,"onUpdate:modelValue":e[12]||(e[12]=C=>d.redis_url=C),placeholder:"redis://:***@172.17.0.1:6379",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",size:"default",loading:te.value,onClick:cl,style:{width:"100px"}},{default:i(()=>[r(b(te.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[70]||(e[70]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[r(" Redis 用于缓存搜索验证结果,提升响应速度。"),l("br"),l("strong",null,"带密码格式:"),l("code",null,"redis://:你的密码@地址:6379"),l("br"),r(" 修改后保存配置即可生效,无需重启。"),l("strong",null,"切换 Redis 只会清空缓存,不影响任何重要数据。")],-1))]),_:1})]}),_:1}),ke.value?(f(),g("div",Pt,[s(x,{class:"is-loading",size:20},{default:i(()=>[s(We(Ml))]),_:1}),e[71]||(e[71]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(f(),g("div",zt,[l("div",Tt,[l("div",{class:Ke(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},b(R.redis_status),3),e[72]||(e[72]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",It,[l("div",jt,b(R.db_size),1),e[73]||(e[73]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",At,[l("div",Ot,b(R.save_records),1),e[74]||(e[74]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Rt,[l("div",Bt,b(R.search_stats),1),e[75]||(e[75]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",$t,[l("div",Et,b(R.cloud_configs),1),e[76]||(e[76]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Lt,[l("div",Nt,b(R.content_cache),1),e[77]||(e[77]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[K,!U.value||U.value==="sys-services"]]),W(s(T,{id:"section-sys-strategy"},{header:i(()=>[...e[78]||(e[78]=[l("span",null,"🔧 性能配置",-1)])]),default:i(()=>[l("div",Ft,[s(B,{"content-position":"left"},{default:i(()=>[...e[79]||(e[79]=[r("搜索结果返回方式",-1)])]),_:1}),l("div",Dt,[l("div",Gt,[e[80]||(e[80]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),s(w,{modelValue:d.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=o=>d.link_validation_enabled=o),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[81]||(e[81]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Wt,[l("div",Kt,[e[84]||(e[84]=l("span",{class:"field-label"},"搜索结果方式",-1)),s(Bl,{modelValue:d.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=o=>d.search_strategy=o)},{default:i(()=>[s(Ee,{value:"wait_all"},{default:i(()=>[...e[82]||(e[82]=[r("等待全部结果后展示",-1)])]),_:1}),s(Ee,{value:"stream_channel"},{default:i(()=>[...e[83]||(e[83]=[r("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[85]||(e[85]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),s(B,{"content-position":"left"},{default:i(()=>[...e[86]||(e[86]=[r("搜索策略",-1)])]),_:1}),l("div",qt,[l("div",Mt,[l("div",Ht,[e[87]||(e[87]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),s(w,{modelValue:Se.value,"onUpdate:modelValue":e[15]||(e[15]=o=>Se.value=o),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[88]||(e[88]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",Jt,[l("div",Yt,[e[89]||(e[89]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),s(M,{modelValue:d.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=o=>d.search_result_limit=o),min:1,max:100},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",Qt,[l("div",Xt,[e[91]||(e[91]=l("span",{class:"field-label"},"验证并发数",-1)),s(M,{modelValue:d.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=o=>d.validation_concurrency=o),min:1,max:50},null,8,["modelValue"])]),e[92]||(e[92]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",Zt,[l("div",es,[e[93]||(e[93]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),s(M,{modelValue:d.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=o=>d.validation_cache_ttl_valid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",ls,[l("div",ts,[e[95]||(e[95]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),s(M,{modelValue:d.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=o=>d.validation_cache_ttl_invalid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[96]||(e[96]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",ss,[l("div",as,[e[97]||(e[97]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),s(M,{modelValue:d.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=o=>d.validation_timeout=o),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[98]||(e[98]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),s(B,{"content-position":"left"},{default:i(()=>[...e[99]||(e[99]=[r("链接检测配置",-1)])]),_:1}),l("div",os,[e[101]||(e[101]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",ns,[s(a,{modelValue:Y.value,"onUpdate:modelValue":e[21]||(e[21]=o=>Y.value=o),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:wl,disabled:!Y.value.trim()},{default:i(()=>[...e[100]||(e[100]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),$.value.length>0?(f(),g("div",is,[(f(!0),g(A,null,O($.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:kl(o),"disable-transitions":!1,onClose:_=>xl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["type","onClose"]))),128))])):(f(),g("div",ds,"暂无过滤规则")),e[102]||(e[102]=l("div",{class:"filter-rule-help"},[l("div",{class:"help-title"},"📖 规则说明"),l("div",{class:"help-row"},[l("code",null,"# 注释内容"),r(" — "),l("code",null,"#"),r(" 后必须跟"),l("strong",null,"空格"),r("才会被识别为注释,单纯的 "),l("code",null,"#动漫"),r(" 会被当作要移除的文本")]),l("div",{class:"help-row"},[l("code",null,"/正则表达式/标志"),r(" — 正则匹配,匹配到的内容会被删除。如 "),l("code",null,"/^\\\\d+[、,.\\\\s]/"),r(" 去掉开头的序号")]),l("div",{class:"help-row"},[l("code",null,"纯文本"),r(" — 直接写要移除的文字(支持 emoji),凡是标题中含有的都会被删除")])],-1))]),l("div",rs,[e[104]||(e[104]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",us,[s(a,{modelValue:Q.value,"onUpdate:modelValue":e[22]||(e[22]=o=>Q.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:Vl,disabled:!Q.value.trim()},{default:i(()=>[...e[103]||(e[103]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),E.value.length>0?(f(),g("div",ps,[(f(!0),g(A,null,O(E.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:_=>hl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",fs,"暂无失效关键词,所有链接将默认判为有效"))]),s(B,{"content-position":"left"},{default:i(()=>[...e[106]||(e[106]=[r("夸克网盘转存清理",-1)])]),_:1}),l("div",cs,[e[108]||(e[108]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",ms,[s(a,{modelValue:X.value,"onUpdate:modelValue":e[23]||(e[23]=o=>X.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:Sl,disabled:!X.value.trim()},{default:i(()=>[...e[107]||(e[107]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[109]||(e[109]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),L.value.length>0?(f(),g("div",vs,[(f(!0),g(A,null,O(L.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"warning","disable-transitions":!1,onClose:_=>Cl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",ys,"暂未配置广告关键词,不会进行广告清理"))]),l("div",gs,[e[111]||(e[111]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",_s,[s(a,{modelValue:Z.value,"onUpdate:modelValue":e[24]||(e[24]=o=>Z.value=o),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:Ul,disabled:!Z.value.trim()},{default:i(()=>[...e[110]||(e[110]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[112]||(e[112]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),N.value.length>0?(f(),g("div",bs,[(f(!0),g(A,null,O(N.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"info","disable-transitions":!1,onClose:_=>Pl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",ws,"暂未配置警示文件夹"))]),l("div",xs,[e[114]||(e[114]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",ks,[s(a,{modelValue:ee.value,"onUpdate:modelValue":e[25]||(e[25]=o=>ee.value=o),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:zl,disabled:!ee.value.trim()},{default:i(()=>[...e[113]||(e[113]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[115]||(e[115]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),F.value.length>0?(f(),g("div",Vs,[(f(!0),g(A,null,O(F.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:_=>Tl(c)},{default:i(()=>[r("."+b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",hs,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[K,!U.value||U.value==="sys-strategy"]]),W(s(T,{id:"section-sys-password"},{header:i(()=>[...e[116]||(e[116]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:i(()=>[s(S,{ref_key:"passwordFormRef",ref:xe,model:z,rules:fl,"label-width":"120px","label-position":"left"},{default:i(()=>[s(n,{label:"原密码",prop:"oldPassword"},{default:i(()=>[s(a,{modelValue:z.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=o=>z.oldPassword=o),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"新密码",prop:"newPassword"},{default:i(()=>[s(a,{modelValue:z.newPassword,"onUpdate:modelValue":e[27]||(e[27]=o=>z.newPassword=o),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"确认新密码",prop:"confirmPassword"},{default:i(()=>[s(a,{modelValue:z.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=o=>z.confirmPassword=o),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,null,{default:i(()=>[s(p,{type:"primary",loading:ce.value,onClick:jl},{default:i(()=>[...e[117]||(e[117]=[r("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[K,!U.value||U.value==="sys-password"]]),W(s(T,{id:"section-sys-notify"},{header:i(()=>[...e[118]||(e[118]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:i(()=>[s(El,{"model-value":["global"]},{default:i(()=>[s($l,{title:"全局推送(管理员兜底)",name:"global"},{default:i(()=>[l("div",Ss,[s(S,{"label-width":"140px","label-position":"left"},{default:i(()=>[l("div",Cs,[(f(!0),g(A,null,O(D.value,(o,c)=>(f(),g("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",Us,[s(w,{modelValue:v.channels[c]._enabled,"onUpdate:modelValue":_=>v.channels[c]._enabled=_,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,b(o.label),1),v.channels[c]._enabled?(f(),V(p,{key:0,size:"small",text:"",type:"primary",onClick:_=>pl(c),loading:v.channels[c]._testing},{default:i(()=>[...e[119]||(e[119]=[r("测试",-1)])]),_:1},8,["onClick","loading"])):q("",!0)]),v.channels[c]._enabled?(f(),g("div",Ps,[(f(!0),g(A,null,O(o.params,_=>(f(),V(n,{key:_.key,label:_.label,style:{"margin-bottom":"6px"}},{default:i(()=>[_.type==="password"?(f(),V(a,{key:0,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j,type:"password","show-password":"",placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):_.type==="switch"?(f(),V(w,{key:1,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j},null,8,["modelValue","onUpdate:modelValue"])):_.type==="number"?(f(),V(M,{key:2,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(f(),V(a,{key:3,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j,placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):q("",!0)]))),128))]),s(B,{"content-position":"left"},{default:i(()=>[...e[120]||(e[120]=[r("全局事件开关",-1)])]),_:1}),l("div",zs,[s(w,{modelValue:v.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=o=>v.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_save_fail,"onUpdate:modelValue":e[30]||(e[30]=o=>v.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cookie_expire,"onUpdate:modelValue":e[31]||(e[31]=o=>v.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cleanup,"onUpdate:modelValue":e[32]||(e[32]=o=>v.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"])]),e[121]||(e[121]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1))]),_:1})])]),_:1})]),_:1}),e[131]||(e[131]=r()),s(B,{"content-position":"left"},{default:i(()=>[...e[122]||(e[122]=[r("添加推送用户",-1)])]),_:1}),l("div",Ts,[l("div",Is,[s(Ne,{modelValue:m.account,"onUpdate:modelValue":e[33]||(e[33]=o=>m.account=o),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:i(()=>[(f(!0),g(A,null,O(Te.value,o=>(f(),V(Le,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(Ne,{modelValue:m.channels,"onUpdate:modelValue":e[34]||(e[34]=o=>m.channels=o),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择您所需的消息频道",style:{width:"260px"}},{default:i(()=>[(f(!0),g(A,null,O(ll.value,(o,c)=>(f(),V(Le,{key:c,label:o.label,value:c},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(w,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[35]||(e[35]=o=>m.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[36]||(e[36]=o=>m.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[37]||(e[37]=o=>m.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[38]||(e[38]=o=>m.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"]),s(p,{type:"primary",size:"small",loading:_e.value,onClick:al},{default:i(()=>[r(b(m.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),m.id?(f(),V(p,{key:0,size:"small",onClick:sl},{default:i(()=>[...e[123]||(e[123]=[r("取消编辑",-1)])]),_:1})):q("",!0)])]),s(B,{"content-position":"left"},{default:i(()=>[...e[124]||(e[124]=[r("推送用户列表",-1)])]),_:1}),s(Nl,{data:ze.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:i(()=>[s(G,{prop:"account",label:"推广账号","min-width":"140"}),s(G,{label:"转存成功",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_success")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[125]||(e[125]=[r("✔",-1)])]),_:1})):(f(),g("span",js,"—"))]),_:1}),s(G,{label:"转存失败",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_fail")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[126]||(e[126]=[r("✔",-1)])]),_:1})):(f(),g("span",As,"—"))]),_:1}),s(G,{label:"Cookie过期",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cookie_expire")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[127]||(e[127]=[r("✔",-1)])]),_:1})):(f(),g("span",Os,"—"))]),_:1}),s(G,{label:"清理完成",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cleanup")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[128]||(e[128]=[r("✔",-1)])]),_:1})):(f(),g("span",Rs,"—"))]),_:1}),s(G,{label:"已启用的通道","min-width":"220"},{default:i(({row:o})=>[(f(!0),g(A,null,O(Ie(o),(c,_)=>(f(),V(I,{key:_,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:i(()=>[r(b(il(_)),1)]),_:2},1024))),128)),dl(o)?q("",!0):(f(),g("span",Bs,"走全局推送"))]),_:1}),s(G,{label:"操作",width:"180",fixed:"right"},{default:i(({row:o})=>[s(p,{text:"",type:"primary",size:"small",onClick:c=>tl(o)},{default:i(()=>[...e[129]||(e[129]=[r("编辑",-1)])]),_:1},8,["onClick"]),s(Ll,{title:"确定删除该推送用户?",onConfirm:c=>nl(o)},{reference:i(()=>[s(p,{text:"",type:"danger",size:"small"},{default:i(()=>[...e[130]||(e[130]=[r("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[K,!U.value||U.value==="sys-notify"]]),W(s(T,{id:"section-sys-daily-report"},{header:i(()=>[l("div",$s,[e[134]||(e[134]=l("span",null,"📊 每日汇报",-1)),l("div",null,[s(p,{size:"small",loading:ve.value,onClick:Xe},{default:i(()=>[...e[132]||(e[132]=[r("📋 预览",-1)])]),_:1},8,["loading"]),s(p,{size:"small",type:"primary",loading:ye.value,onClick:Ze},{default:i(()=>[...e[133]||(e[133]=[r("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:i(()=>[s(S,{"label-width":"140px","label-position":"left"},{default:i(()=>[s(n,{label:"启用每日汇报"},{default:i(()=>[s(w,{modelValue:h.enabled,"onUpdate:modelValue":e[39]||(e[39]=o=>h.enabled=o),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),s(n,{label:"发送时间"},{default:i(()=>[s(Fl,{modelValue:h.time,"onUpdate:modelValue":e[40]||(e[40]=o=>h.time=o),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!h.enabled},null,8,["modelValue","disabled"]),e[135]||(e[135]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),s(n,{label:"报告内容"},{default:i(()=>[l("div",Es,[s(w,{modelValue:h.includeSearch,"onUpdate:modelValue":e[41]||(e[41]=o=>h.includeSearch=o),"active-text":"搜索统计",disabled:!h.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:h.includeSaves,"onUpdate:modelValue":e[42]||(e[42]=o=>h.includeSaves=o),"active-text":"转存统计",disabled:!h.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:h.includeStorage,"onUpdate:modelValue":e[43]||(e[43]=o=>h.includeStorage=o),"active-text":"网盘容量",disabled:!h.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:h.includeUsers,"onUpdate:modelValue":e[44]||(e[44]=o=>h.includeUsers=o),"active-text":"用户数",disabled:!h.enabled},null,8,["modelValue","disabled"])])]),_:1}),s(n,{label:"上次发送"},{default:i(()=>[l("span",null,b(Pe.value||"从未发送"),1)]),_:1})]),_:1}),s(Dl,{modelValue:ge.value,"onUpdate:modelValue":e[45]||(e[45]=o=>ge.value=o),title:"📊 每日汇报预览",width:"600px"},{default:i(()=>[l("div",Ls,b(Ue.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[K,!U.value||U.value==="sys-daily-report"]]),W(s(T,{id:"section-sys-maintenance"},{header:i(()=>[...e[136]||(e[136]=[l("span",null,"🔄 系统维护",-1)])]),default:i(()=>[e[141]||(e[141]=r()),s(S,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"自动更新镜像"},{default:i(()=>[s(w,{modelValue:Ce.value,"onUpdate:modelValue":e[46]||(e[46]=o=>Ce.value=o),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[137]||(e[137]=r()),e[138]||(e[138]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[139]||(e[139]=r()),e[140]||(e[140]=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),[[K,!U.value||U.value==="sys-maintenance"]]),l("div",Ns,[s(p,{type:"primary",size:"large",loading:fe.value,onClick:Il},{default:i(()=>[...e[142]||(e[142]=[r(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),Ws=ot(Fs,[["__scopeId","data-v-6cdc2b1a"]]);export{Ws as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/SystemConfig-C8bSCuHg.css b/source_clean/frontend-src/dist-vite/assets/SystemConfig-C8bSCuHg.css deleted file mode 100644 index 6bbcedb..0000000 --- a/source_clean/frontend-src/dist-vite/assets/SystemConfig-C8bSCuHg.css +++ /dev/null @@ -1 +0,0 @@ -.el-card[data-v-6cdc2b1a]{margin-bottom:20px}.el-card[data-v-6cdc2b1a] .el-card__header{font-weight:600;font-size:15px}[data-v-6cdc2b1a] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-6cdc2b1a]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-6cdc2b1a]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-6cdc2b1a]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-6cdc2b1a]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-6cdc2b1a]{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-6cdc2b1a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-6cdc2b1a]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-6cdc2b1a]{padding:0 4px}.field-block[data-v-6cdc2b1a]{margin:12px 0}.field-label-row[data-v-6cdc2b1a]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-6cdc2b1a]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-6cdc2b1a]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-6cdc2b1a]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-6cdc2b1a]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-6cdc2b1a]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-6cdc2b1a]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-6cdc2b1a]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-6cdc2b1a]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-6cdc2b1a]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-6cdc2b1a]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-6cdc2b1a]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-6cdc2b1a]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-6cdc2b1a]:first-child{margin-top:0}.help-row[data-v-6cdc2b1a]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-6cdc2b1a]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-6cdc2b1a]{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-6cdc2b1a]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-6cdc2b1a]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-6cdc2b1a]{color:#e74c3c}.help-preview-filtered[data-v-6cdc2b1a]{color:#27ae60;font-weight:500}.filter-input-row[data-v-6cdc2b1a]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-6cdc2b1a]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-6cdc2b1a]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-6cdc2b1a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-6cdc2b1a]{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-6cdc2b1a]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-6cdc2b1a]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-6cdc2b1a]{color:#67c23a}.db-stat-value.text-warning[data-v-6cdc2b1a]{color:#e6a23c}.db-stat-label[data-v-6cdc2b1a]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-6cdc2b1a]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-6cdc2b1a]{grid-template-columns:1fr}}.pansou-status-grid[data-v-6cdc2b1a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-6cdc2b1a]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-6cdc2b1a]{background:#67c23a}.dot-err[data-v-6cdc2b1a]{background:#f56c6c} diff --git a/source_clean/frontend-src/dist-vite/assets/SystemConfig-CG32Xbld.css b/source_clean/frontend-src/dist-vite/assets/SystemConfig-CG32Xbld.css new file mode 100644 index 0000000..1cf8273 --- /dev/null +++ b/source_clean/frontend-src/dist-vite/assets/SystemConfig-CG32Xbld.css @@ -0,0 +1 @@ +.el-card[data-v-a858d91e]{margin-bottom:20px}.el-card[data-v-a858d91e] .el-card__header{font-weight:600;font-size:15px}[data-v-a858d91e] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-a858d91e]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-a858d91e]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-a858d91e]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-a858d91e]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-a858d91e]{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-a858d91e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-a858d91e]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-a858d91e]{padding:0 4px}.field-block[data-v-a858d91e]{margin:12px 0}.field-label-row[data-v-a858d91e]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-a858d91e]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-a858d91e]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-a858d91e]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-a858d91e]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-a858d91e]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-a858d91e]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-a858d91e]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-a858d91e]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-a858d91e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-a858d91e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-a858d91e]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-a858d91e]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-a858d91e]:first-child{margin-top:0}.help-row[data-v-a858d91e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-a858d91e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-a858d91e]{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-a858d91e]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-a858d91e]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-a858d91e]{color:#e74c3c}.help-preview-filtered[data-v-a858d91e]{color:#27ae60;font-weight:500}.filter-input-row[data-v-a858d91e]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-a858d91e]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-a858d91e]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-a858d91e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-a858d91e]{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-a858d91e]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-a858d91e]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-a858d91e]{color:#67c23a}.db-stat-value.text-warning[data-v-a858d91e]{color:#e6a23c}.db-stat-label[data-v-a858d91e]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-a858d91e]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-a858d91e]{grid-template-columns:1fr}}.pansou-status-grid[data-v-a858d91e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-a858d91e]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-a858d91e]{background:#67c23a}.dot-err[data-v-a858d91e]{background:#f56c6c} diff --git a/source_clean/frontend-src/dist-vite/assets/SystemConfig-DFW9m6V4.js b/source_clean/frontend-src/dist-vite/assets/SystemConfig-DFW9m6V4.js new file mode 100644 index 0000000..f77f969 --- /dev/null +++ b/source_clean/frontend-src/dist-vite/assets/SystemConfig-DFW9m6V4.js @@ -0,0 +1,25 @@ +import{d as Gl,o as Wl,E as u,x as Kl,a as f,c as _,K as W,L as K,f as s,w as i,b as l,v as H,h as g,i as J,j as V,l as d,k as We,N as ql,e as q,t as b,n as Ke,y as h,M as Ml,F as I,r as O,z as Hl,u as Jl}from"./index-Cl0LRM77.js";import{k as Yl,w as Ql,x as Xl,p as Zl,y as et,z as lt,A as le,B as tt,C as st,D as at,_ as ot}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const nt={class:"system-config"},it={class:"fallback-upload-wrap"},dt={class:"fallback-upload-row"},rt={key:0,class:"fallback-preview"},ut=["src"],pt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},ft={key:0,style:{"font-size":"11px",color:"#e6a23c","white-space":"nowrap"}},ct={class:"pansou-status-grid"},mt={class:"db-stat-item"},vt={class:"db-stat-item"},yt={class:"db-stat-value"},_t={class:"db-stat-item"},gt={class:"db-stat-value"},bt={class:"db-stat-item"},wt={class:"db-stat-value"},xt={class:"db-stat-item"},Vt={class:"db-stat-value"},kt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},ht={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},St={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Ut={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Ct={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Pt={key:0,style:{"text-align":"center",padding:"16px"}},zt={key:1,class:"db-status-grid"},Tt={class:"db-stat-item"},jt={class:"db-stat-item"},It={class:"db-stat-value"},Ot={class:"db-stat-item"},At={class:"db-stat-value"},Rt={class:"db-stat-item"},Bt={class:"db-stat-value"},$t={class:"db-stat-item"},Et={class:"db-stat-value"},Lt={class:"db-stat-item"},Nt={class:"db-stat-value"},Ft={class:"strategy-section"},Dt={class:"field-block"},Gt={class:"field-label-row"},Wt={class:"field-block"},Kt={class:"field-label-row"},qt={class:"strategy-grid"},Mt={class:"grid-cell"},Ht={class:"field-label-row"},Jt={class:"grid-cell"},Yt={class:"field-label-row"},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:"field-block"},ns={style:{display:"flex",gap:"8px","align-items":"stretch"}},is={key:0,class:"tag-list"},ds={key:1,class:"tag-empty"},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"},cs={class:"field-block"},ms={style:{display:"flex",gap:"8px","align-items":"stretch"}},vs={key:0,class:"tag-list"},ys={key:1,class:"tag-empty"},_s={class:"field-block"},gs={style:{display:"flex",gap:"8px","align-items":"stretch"}},bs={key:0,class:"tag-list"},ws={key:1,class:"tag-empty"},xs={class:"field-block"},Vs={style:{display:"flex",gap:"8px","align-items":"stretch"}},ks={key:0,class:"tag-list"},hs={key:1,class:"tag-empty"},Ss={class:"strategy-section"},Us={style:{display:"grid","grid-template-columns":"repeat(2,1fr)",gap:"8px"}},Cs={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"6px"}},Ps={key:0},zs={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ts={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},js={style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"12px 16px","margin-bottom":"16px"}},Is={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Os={key:1,style:{color:"#ccc"}},As={key:1,style:{color:"#ccc"}},Rs={key:1,style:{color:"#ccc"}},Bs={key:1,style:{color:"#ccc"}},$s={key:0,style:{color:"#909399","font-size":"12px"}},Es={style:{display:"flex","align-items":"center","justify-content":"space-between"}},Ls={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ns={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"}},Fs={class:"save-bar"},Ds=Gl({__name:"SystemConfig",props:{section:{}},setup(qe){const Me=qe,He=Hl();Jl();const C=H(()=>Me.section||He.query.section||""),xe=g(),pe=g([]),r=J({}),$=g([]),Y=g(""),E=g([]),Q=g(""),L=g([]),X=g(""),N=g([]),Z=g(""),ee=g(""),F=g([]),fe=g(!1),ce=g(!1),R=J({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),Ve=g(!0),te=g(!1),se=g(!1),ae=g(!1),oe=g(!1),ne=g(!1),ie=g(!1),P=g(null),ke=g(!0),de=g(!1),me=H({get:()=>String(r.search_proxy_enabled)==="true",set:t=>{r.search_proxy_enabled=t?"true":"false"}}),he=H({get:()=>String(r.pansou_web_enabled)==="true",set:t=>{r.pansou_web_enabled=t?"true":"false"}}),Se=H({get:()=>String(r.search_all_channels)==="true",set:t=>{r.search_all_channels=t?"true":"false"}}),Ue=H({get:()=>String(r.auto_update_enabled)==="true",set:t=>{r.auto_update_enabled=t?"true":"false"}}),S=J({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),ve=g(!1),ye=g(!1),Ce=g(""),_e=g(!1),Pe=g("");async function Je(){try{const t=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Object.assign(S,e)}}catch{}}async function Ye(){try{const t=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();e.date&&(Pe.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function Qe(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...S})})}catch{}}async function Xe(){ve.value=!0;try{const t=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Ce.value=e.content,_e.value=!0}}finally{ve.value=!1}}async function Ze(){ye.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?u.success("测试报告已发送到全局通知通道"):u.error("发送失败")}catch{u.error("发送失败")}finally{ye.value=!1}}const ze=g([]),D=g({}),ge=g(!1),Te=g([]);async function el(){try{const t=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!t.ok)return;const e=await t.json(),a=Array.isArray(e)?[...new Set(e.map(n=>n.promotion_account||"").filter(Boolean))]:[];Te.value=a}catch{}}const v=J({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ll=H(()=>{var e;const t={};for(const[a,n]of Object.entries(D.value))(e=m.channels[a])!=null&&e._enabled&&(t[a]=n);return t}),m=J({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}`}}});function tl(t){var e,a,n,x;if(t){v.id=t.id,v.account=t.account;const p=t.notify_config||{};v.channels=Object.keys(p.channels||{}),v.events={on_save_success:((e=p.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((a=p.events)==null?void 0:a.on_save_fail)!==!1,on_cookie_expire:((n=p.events)==null?void 0:n.on_cookie_expire)!==!1,on_cleanup:((x=p.events)==null?void 0:x.on_cleanup)===!0}}else v.id=null,v.account="",v.channels=[],v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function sl(){v.id=null,v.account="",v.channels=[],v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function re(t,e){return((t.notify_config||{}).events||{})[e]===!0}async function al(){if(!v.account){u.warning("请填写推广账号");return}ge.value=!0;try{const t={account:v.account,notify_config:{channels:{},events:v.events}},e={};for(const n of v.channels)e[n]={};t.notify_config.channels=e,v.id?await fetch("/api/admin/push-users/"+v.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)});const a=!!v.id;v.id=null,v.account="",v.channels=[],v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},u.success(a?"推送用户已更新":"推送用户已添加"),await be()}catch(t){u.error(t.message||"保存失败")}finally{ge.value=!1}}async function be(){try{const t=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});t.ok&&(ze.value=await t.json())}catch(t){console.error("Failed to load push users",t)}}async function ol(){try{D.value=await Xl()}catch(t){console.error("Failed to load providers",t)}}async function nl(t){try{await fetch("/api/admin/push-users/"+t.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),u.success("已删除"),await be()}catch(e){u.error(e.message||"删除失败")}}function je(t){var a;return((a=t.notify_config)==null?void 0:a.channels)||{}}function il(t){var e;return((e=D.value[t])==null?void 0:e.label)||t}function dl(t){return Object.keys(je(t)).length>0}function rl(){const t={};for(const[e,a]of Object.entries(D.value)){t[e]={_enabled:!1,_testing:!1};for(const n of a.params||[])t[e][n.key]=n.default||""}m.channels=t,m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function ul(){try{const a=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(n=>n.key==="global_notify_config");if(a&&a.value)try{const n=JSON.parse(a.value),x=n.channels||{};for(const[p,k]of Object.entries(x))if(m.channels[p]){m.channels[p]._enabled=!0;for(const[T,w]of Object.entries(k))m.channels[p][T]=w}if(n.events&&(m.events.on_save_success=n.events.on_save_success!==!1,m.events.on_save_fail=n.events.on_save_fail!==!1,m.events.on_cookie_expire=n.events.on_cookie_expire!==!1,m.events.on_cleanup=n.events.on_cleanup===!0),n.eventTemplates)for(const[p,k]of Object.entries(n.eventTemplates))m.eventTemplates[p]&&(m.eventTemplates[p]=k)}catch{}}catch{}}async function pl(t){const e=m.channels[t];if(!(!e||!e._enabled)){e._testing=!0;try{const a=await et(t);a.success?u.success(a.message):u.error(a.message)}catch(a){u.error(a.message||"测试失败")}finally{e._testing=!1}}}const z=J({oldPassword:"",newPassword:"",confirmPassword:""}),fl={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:(t,e,a)=>{e!==z.newPassword?a(new Error("两次输入的密码不一致")):a()},trigger:"blur"}]};Wl(async()=>{try{pe.value=await Yl();for(const p of pe.value)r[p.key]=p.value;const t=String(r.title_filter_rules||"");$.value=t.split(` +`).filter(p=>p.trim());const e=String(r.link_invalid_keywords||"");E.value=e.split(` +`).filter(p=>p.trim());const a=String(r.quark_ad_keywords||"");L.value=a.split(` +`).filter(p=>p.trim());const n=String(r.quark_warning_folder_names||"");N.value=n.split(` +`).filter(p=>p.trim());const x=String(r.quark_sus_extensions||"");F.value=x.split(` +`).filter(p=>p.trim())}catch{u.error("加载系统配置失败")}try{const t=await Ql();Object.assign(R,t)}catch{R.db_size="无法读取"}finally{Ve.value=!1}we(),await ol(),rl(),await ul(),be(),Je(),Ye(),el()}),Kl(D,()=>{for(const[t,e]of Object.entries(D.value))if(!m.channels[t]){m.channels[t]={_enabled:!1,_testing:!1};for(const a of e.params||[])m.channels[t][a.key]=a.default||""}});async function cl(){var e,a;const t=String(r.redis_url||"redis://redis:6379");te.value=!0;try{const n=await lt(t);n.ok?u.success(`✅ Redis 连接成功 — ${n.info}`):u.error(`❌ Redis 连接失败 — ${n.info}`)}catch(n){u.error(((a=(e=n.response)==null?void 0:e.data)==null?void 0:a.error)||"测试请求失败")}finally{te.value=!1}}async function we(){ke.value=!0;try{const t=localStorage.getItem("admin_token"),e={};t&&(e.Authorization="Bearer "+t);const a=await fetch("/api/admin/pansou-info",{headers:e});if(!a.ok)throw new Error("HTTP "+a.status);const n=await a.json();P.value=n}catch{P.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{ke.value=!1}}async function ml(){de.value=!0;try{const t=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};t&&(e.Authorization="Bearer "+t);const n=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();n.ok?(u.success("✅ PanSou 已更新并重启"),setTimeout(()=>we(),3e3)):u.error("❌ 更新失败 — "+(n.error||"未知错误"))}catch(t){u.error(t.message||"更新请求失败")}finally{de.value=!1}}async function vl(){var t,e;se.value=!0;try{const a=await le({type:"pansou",url:String(r.pansou_url||"")});a.ok?(we(),u.success(`✅ PanSou 连接成功 — ${a.info}`)):u.error(`❌ PanSou 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{se.value=!1}}async function yl(){var t,e;ae.value=!0;try{const a=await le({type:"video_parser",url:String(r.video_parser_url||"")});a.ok?u.success(`✅ 视频解析服务连接成功 — ${a.info}`):u.error(`❌ 视频解析服务连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function _l(){var t,e;oe.value=!0;try{const a=await le({type:"tmdb",token:String(r.tmdb_api_token||"")});a.ok?u.success(`✅ TMDB 令牌有效 — ${a.info}`):u.error(`❌ TMDB 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function gl(){var t,e;ne.value=!0;try{const a=await le({type:"proxy",url:String(r.search_proxy_url||"")});a.ok?u.success(`✅ 搜索代理可用 — ${a.info}`):u.error(`❌ 搜索代理不可用 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function bl(){var t,e;ie.value=!0;try{const a=String(r.ip_geo_api_url||"");if(!a){u.warning("请先输入 IP 归属地查询 API 地址");return}const n=await le({type:"ip_geo",url:a});n.ok?u.success("✅ IP 归属地接口可用 — "+n.info):u.error("❌ IP 归属地接口不可用 — "+n.info)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}function wl(){const t=Y.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)$.value.includes(n)||($.value.push(n),a++);Y.value="",Ie(),a>0?u.success(`已添加 ${a} 条规则`):u.info("所有规则已存在")}function xl(t){$.value.splice(t,1),Ie()}function Vl(t){return t.startsWith("#")?"info":t.startsWith("/")&&(t.endsWith("/")||t.endsWith("/g")||t.endsWith("/i")||t.endsWith("/gi"))?"warning":""}function Ie(){r.title_filter_rules=$.value.join(` +`)}function kl(){const t=Q.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)E.value.includes(n)||(E.value.push(n),a++);Q.value="",Oe(),a>0?u.success(`已添加 ${a} 个关键词`):u.info("所有关键词已存在")}function hl(t){E.value.splice(t,1),Oe()}function Oe(){r.link_invalid_keywords=E.value.join(` +`)}function Sl(){const t=X.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)L.value.includes(n)||(L.value.push(n),a++);X.value="",Ae(),a>0?u.success():u.info("所有关键词已存在")}function Ul(t){L.value.splice(t,1),Ae()}function Ae(){r.quark_ad_keywords=L.value.join(` +`)}function Cl(){const t=Z.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)N.value.includes(n)||(N.value.push(n),a++);Z.value="",Re(),a>0?u.success():u.info("所有文件夹名已存在")}function Pl(t){N.value.splice(t,1),Re()}function Re(){r.quark_warning_folder_names=N.value.join(` +`)}function zl(){const t=ee.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim().toLowerCase().replace(/^\./,"")).filter(n=>n);let a=0;for(const n of e)F.value.includes(n)||(F.value.push(n),a++);ee.value="",Be(),a>0?u.success("已添加 ${added} 个后缀"):u.info("所有后缀已存在")}function Tl(t){F.value.splice(t,1),Be()}function Be(){r.quark_sus_extensions=F.value.join(` +`)}async function jl(){var t,e;fe.value=!0;try{const a={};for(const[x,p]of Object.entries(m.channels))if(p._enabled){const k={};for(const[T,w]of Object.entries(p))!T.startsWith("_")&&w!==""&&(k[T]=String(w));Object.keys(k).length>0&&(a[x]=k)}const n=pe.value.map(x=>({key:x.key,value:String(r[x.key]??x.value)}));await Qe(),n.push({key:"global_notify_config",value:JSON.stringify({channels:a,events:m.events,eventTemplates:m.eventTemplates})}),await Zl(n),u.success("配置已保存")}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"保存失败")}finally{fe.value=!1}}async function Il(){var e,a,n;if(await((e=xe.value)==null?void 0:e.validate().catch(()=>!1))){ce.value=!0;try{const x=await tt(z.oldPassword,z.newPassword);x.success?(u.success("✅ 密码修改成功,下次登录请使用新密码"),z.oldPassword="",z.newPassword="",z.confirmPassword=""):u.error(x.message)}catch(x){u.error(((n=(a=x.response)==null?void 0:a.data)==null?void 0:n.error)||"密码修改失败")}finally{ce.value=!1}}}const $e=g();function Ol(){var t;(t=$e.value)==null||t.click()}async function Al(t){var n,x,p;const e=t.target,a=(n=e.files)==null?void 0:n[0];if(a){if(!a.type.startsWith("image/")){u.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(a.size>2*1024*1024){u.error("图片大小不能超过 2MB"),e.value="";return}try{const k=await st(a);k.success?(r.site_logo=k.url,u.success("✅ LOGO 已上传并生效")):u.error(k.message)}catch(k){u.error(((p=(x=k.response)==null?void 0:x.data)==null?void 0:p.error)||"上传失败")}e.value=""}}async function Rl(){try{r.site_logo="",await at("site_logo",""),u.success("已移除 LOGO")}catch{u.error("移除失败")}}return(t,e)=>{const a=V("el-input"),n=V("el-form-item"),x=V("el-icon"),p=V("el-button"),k=V("el-form"),T=V("el-card"),w=V("el-switch"),B=V("el-divider"),Ee=V("el-radio"),Bl=V("el-radio-group"),M=V("el-input-number"),j=V("el-tag"),$l=V("el-collapse-item"),El=V("el-collapse"),Le=V("el-option"),Ne=V("el-select"),G=V("el-table-column"),Ll=V("el-popconfirm"),Nl=V("el-table"),Fl=V("el-time-picker"),Dl=V("el-dialog");return f(),_("div",nt,[W(s(T,{id:"section-sys-site"},{header:i(()=>[...e[47]||(e[47]=[l("span",null,"🌐 网站设置",-1)])]),default:i(()=>[s(k,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"网站名称"},{default:i(()=>[s(a,{modelValue:r.site_name,"onUpdate:modelValue":e[0]||(e[0]=o=>r.site_name=o),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[48]||(e[48]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),s(n,{label:"网站 LOGO"},{default:i(()=>[l("div",it,[l("div",dt,[s(p,{type:"primary",onClick:Ol},{icon:i(()=>[s(x,null,{default:i(()=>[s(We(ql))]),_:1})]),default:i(()=>[e[49]||(e[49]=d(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:$e,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Al},null,544),e[50]||(e[50]=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(),_("div",rt,[l("img",{src:String(r.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=o=>o.target.style.display="none")},null,40,ut),s(p,{size:"small",type:"danger",plain:"",onClick:Rl},{default:i(()=>[...e[51]||(e[51]=[d("移除",-1)])]),_:1})])):q("",!0)])]),_:1}),s(n,{label:"底部免责声明"},{default:i(()=>[s(a,{modelValue:r.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=o=>r.site_disclaimer=o),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[52]||(e[52]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),s(n,{label:"滚动通知文字"},{default:i(()=>[s(a,{modelValue:r.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=o=>r.site_marquee=o),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[53]||(e[53]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),s(n,{label:"系统时区"},{default:i(()=>[s(a,{modelValue:r.timezone,"onUpdate:modelValue":e[4]||(e[4]=o=>r.timezone=o),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[54]||(e[54]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[K,!C.value||C.value==="sys-site"]]),W(s(T,{id:"section-sys-services"},{header:i(()=>[...e[55]||(e[55]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:i(()=>[s(k,{"label-width":"180px","label-position":"left"},{default:i(()=>{var o,c,y,A,Fe,De;return[s(n,{label:"PanSou 搜索引擎地址"},{default:i(()=>{var U,Ge;return[l("div",pt,[s(a,{modelValue:r.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=ue=>r.pansou_url=ue),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:se.value,onClick:vl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),s(p,{type:"warning",loading:de.value,onClick:ml,size:"default",style:{width:"130px"},disabled:!((U=P.value)!=null&&U.hasUpdate)},{default:i(()=>{var ue;return[d(b(de.value?"更新中...":(ue=P.value)!=null&&ue.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Ge=P.value)!=null&&Ge.latestVersion?(f(),_("span",ft,b(P.value.latestVersion),1)):q("",!0)]),e[56]||(e[56]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",ct,[l("div",mt,[l("div",{class:Ke(["db-stat-value",((o=P.value)==null?void 0:o.status)==="connected"?"text-success":"text-warning"])},b(((c=P.value)==null?void 0:c.status)==="connected"?"已连接":P.value?"未连接":"-"),3),e[57]||(e[57]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",vt,[l("div",yt,b(((y=P.value)==null?void 0:y.channelCount)??"-"),1),e[58]||(e[58]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",_t,[l("div",gt,b(((A=P.value)==null?void 0:A.pluginCount)??"-"),1),e[59]||(e[59]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",bt,[l("div",wt,b(((Fe=P.value)==null?void 0:Fe.diskCount)??"-"),1),e[60]||(e[60]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",xt,[l("div",Vt,b(((De=P.value)==null?void 0:De.version)||"-"),1),e[61]||(e[61]=l("div",{class:"db-stat-label"},"版本",-1))])]),s(n,{label:"PanSou Web 端访问"},{default:i(()=>[s(w,{modelValue:he.value,"onUpdate:modelValue":e[6]||(e[6]=U=>he.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 开启后可通过 "),l("code",null,"/pansou/"),d(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),s(n,{label:"启用代理"},{default:i(()=>[s(w,{modelValue:me.value,"onUpdate:modelValue":e[7]||(e[7]=U=>me.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),me.value?(f(),h(n,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:i(()=>[l("div",kt,[s(a,{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"]),s(p,{type:"primary",loading:ne.value,onClick:gl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(ne.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[64]||(e[64]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):q("",!0),s(n,{label:"视频解析服务地址"},{default:i(()=>[l("div",ht,[s(a,{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"]),s(p,{type:"primary",loading:ae.value,onClick:yl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),s(n,{label:"TMDB 读取令牌"},{default:i(()=>[l("div",St,[s(a,{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"]),s(p,{type:"primary",loading:oe.value,onClick:_l,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(oe.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[66]||(e[66]=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}),s(n,{label:"IP 归属地查询"},{default:i(()=>[l("div",Ut,[s(a,{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"]),s(p,{type:"primary",loading:ie.value,onClick:bl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(ie.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[67]||(e[67]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),d(" 会被替换为实际 IP。 ")],-1)),e[68]||(e[68]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),s(B,{"content-position":"left"},{default:i(()=>[...e[69]||(e[69]=[d("Redis 缓存",-1)])]),_:1}),s(n,{label:"Redis 连接地址"},{default:i(()=>[l("div",Ct,[s(a,{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"]),s(p,{type:"primary",size:"default",loading:te.value,onClick:cl,style:{width:"100px"}},{default:i(()=>[d(b(te.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[70]||(e[70]=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}),Ve.value?(f(),_("div",Pt,[s(x,{class:"is-loading",size:20},{default:i(()=>[s(We(Ml))]),_:1}),e[71]||(e[71]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(f(),_("div",zt,[l("div",Tt,[l("div",{class:Ke(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},b(R.redis_status),3),e[72]||(e[72]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",jt,[l("div",It,b(R.db_size),1),e[73]||(e[73]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",Ot,[l("div",At,b(R.save_records),1),e[74]||(e[74]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Rt,[l("div",Bt,b(R.search_stats),1),e[75]||(e[75]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",$t,[l("div",Et,b(R.cloud_configs),1),e[76]||(e[76]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Lt,[l("div",Nt,b(R.content_cache),1),e[77]||(e[77]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[K,!C.value||C.value==="sys-services"]]),W(s(T,{id:"section-sys-strategy"},{header:i(()=>[...e[78]||(e[78]=[l("span",null,"🔧 性能配置",-1)])]),default:i(()=>[l("div",Ft,[s(B,{"content-position":"left"},{default:i(()=>[...e[79]||(e[79]=[d("搜索结果返回方式",-1)])]),_:1}),l("div",Dt,[l("div",Gt,[e[80]||(e[80]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),s(w,{modelValue:r.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=o=>r.link_validation_enabled=o),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[81]||(e[81]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Wt,[l("div",Kt,[e[84]||(e[84]=l("span",{class:"field-label"},"搜索结果方式",-1)),s(Bl,{modelValue:r.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=o=>r.search_strategy=o)},{default:i(()=>[s(Ee,{value:"wait_all"},{default:i(()=>[...e[82]||(e[82]=[d("等待全部结果后展示",-1)])]),_:1}),s(Ee,{value:"stream_channel"},{default:i(()=>[...e[83]||(e[83]=[d("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[85]||(e[85]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),s(B,{"content-position":"left"},{default:i(()=>[...e[86]||(e[86]=[d("搜索策略",-1)])]),_:1}),l("div",qt,[l("div",Mt,[l("div",Ht,[e[87]||(e[87]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),s(w,{modelValue:Se.value,"onUpdate:modelValue":e[15]||(e[15]=o=>Se.value=o),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[88]||(e[88]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",Jt,[l("div",Yt,[e[89]||(e[89]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),s(M,{modelValue:r.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=o=>r.search_result_limit=o),min:1,max:100},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",Qt,[l("div",Xt,[e[91]||(e[91]=l("span",{class:"field-label"},"验证并发数",-1)),s(M,{modelValue:r.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=o=>r.validation_concurrency=o),min:1,max:50},null,8,["modelValue"])]),e[92]||(e[92]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",Zt,[l("div",es,[e[93]||(e[93]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),s(M,{modelValue:r.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=o=>r.validation_cache_ttl_valid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",ls,[l("div",ts,[e[95]||(e[95]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),s(M,{modelValue:r.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=o=>r.validation_cache_ttl_invalid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[96]||(e[96]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",ss,[l("div",as,[e[97]||(e[97]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),s(M,{modelValue:r.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=o=>r.validation_timeout=o),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[98]||(e[98]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),s(B,{"content-position":"left"},{default:i(()=>[...e[99]||(e[99]=[d("链接检测配置",-1)])]),_:1}),l("div",os,[e[101]||(e[101]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",ns,[s(a,{modelValue:Y.value,"onUpdate:modelValue":e[21]||(e[21]=o=>Y.value=o),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:wl,disabled:!Y.value.trim()},{default:i(()=>[...e[100]||(e[100]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),$.value.length>0?(f(),_("div",is,[(f(!0),_(I,null,O($.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:Vl(o),"disable-transitions":!1,onClose:y=>xl(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["type","onClose"]))),128))])):(f(),_("div",ds,"暂无过滤规则")),e[102]||(e[102]=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",rs,[e[104]||(e[104]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",us,[s(a,{modelValue:Q.value,"onUpdate:modelValue":e[22]||(e[22]=o=>Q.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:kl,disabled:!Q.value.trim()},{default:i(()=>[...e[103]||(e[103]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),E.value.length>0?(f(),_("div",ps,[(f(!0),_(I,null,O(E.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:y=>hl(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",fs,"暂无失效关键词,所有链接将默认判为有效"))]),s(B,{"content-position":"left"},{default:i(()=>[...e[106]||(e[106]=[d("夸克网盘转存清理",-1)])]),_:1}),l("div",cs,[e[108]||(e[108]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",ms,[s(a,{modelValue:X.value,"onUpdate:modelValue":e[23]||(e[23]=o=>X.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:Sl,disabled:!X.value.trim()},{default:i(()=>[...e[107]||(e[107]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[109]||(e[109]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),L.value.length>0?(f(),_("div",vs,[(f(!0),_(I,null,O(L.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"warning","disable-transitions":!1,onClose:y=>Ul(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",ys,"暂未配置广告关键词,不会进行广告清理"))]),l("div",_s,[e[111]||(e[111]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",gs,[s(a,{modelValue:Z.value,"onUpdate:modelValue":e[24]||(e[24]=o=>Z.value=o),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:Cl,disabled:!Z.value.trim()},{default:i(()=>[...e[110]||(e[110]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[112]||(e[112]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),N.value.length>0?(f(),_("div",bs,[(f(!0),_(I,null,O(N.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"info","disable-transitions":!1,onClose:y=>Pl(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",ws,"暂未配置警示文件夹"))]),l("div",xs,[e[114]||(e[114]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",Vs,[s(a,{modelValue:ee.value,"onUpdate:modelValue":e[25]||(e[25]=o=>ee.value=o),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:zl,disabled:!ee.value.trim()},{default:i(()=>[...e[113]||(e[113]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[115]||(e[115]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),F.value.length>0?(f(),_("div",ks,[(f(!0),_(I,null,O(F.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:y=>Tl(c)},{default:i(()=>[d("."+b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",hs,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[K,!C.value||C.value==="sys-strategy"]]),W(s(T,{id:"section-sys-password"},{header:i(()=>[...e[116]||(e[116]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:i(()=>[s(k,{ref_key:"passwordFormRef",ref:xe,model:z,rules:fl,"label-width":"120px","label-position":"left"},{default:i(()=>[s(n,{label:"原密码",prop:"oldPassword"},{default:i(()=>[s(a,{modelValue:z.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=o=>z.oldPassword=o),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"新密码",prop:"newPassword"},{default:i(()=>[s(a,{modelValue:z.newPassword,"onUpdate:modelValue":e[27]||(e[27]=o=>z.newPassword=o),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"确认新密码",prop:"confirmPassword"},{default:i(()=>[s(a,{modelValue:z.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=o=>z.confirmPassword=o),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,null,{default:i(()=>[s(p,{type:"primary",loading:ce.value,onClick:Il},{default:i(()=>[...e[117]||(e[117]=[d("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[K,!C.value||C.value==="sys-password"]]),W(s(T,{id:"section-sys-notify"},{header:i(()=>[...e[118]||(e[118]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:i(()=>[s(El,{"model-value":["global"]},{default:i(()=>[s($l,{title:"全局推送(管理员兜底)",name:"global"},{default:i(()=>[l("div",Ss,[s(k,{"label-width":"140px","label-position":"left"},{default:i(()=>[l("div",Us,[(f(!0),_(I,null,O(D.value,(o,c)=>(f(),_("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",Cs,[s(w,{modelValue:m.channels[c]._enabled,"onUpdate:modelValue":y=>m.channels[c]._enabled=y,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,b(o.label),1),m.channels[c]._enabled?(f(),h(p,{key:0,size:"small",text:"",type:"primary",onClick:y=>pl(c),loading:m.channels[c]._testing},{default:i(()=>[...e[119]||(e[119]=[d("测试",-1)])]),_:1},8,["onClick","loading"])):q("",!0)]),m.channels[c]._enabled?(f(),_("div",Ps,[(f(!0),_(I,null,O(o.params,y=>(f(),h(n,{key:y.key,label:y.label,style:{"margin-bottom":"6px"}},{default:i(()=>[y.type==="password"?(f(),h(a,{key:0,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A,type:"password","show-password":"",placeholder:y.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):y.type==="switch"?(f(),h(w,{key:1,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A},null,8,["modelValue","onUpdate:modelValue"])):y.type==="number"?(f(),h(M,{key:2,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(f(),h(a,{key:3,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A,placeholder:y.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):q("",!0)]))),128))]),s(B,{"content-position":"left"},{default:i(()=>[...e[120]||(e[120]=[d("全局事件开关",-1)])]),_:1}),l("div",zs,[s(w,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=o=>m.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[30]||(e[30]=o=>m.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[31]||(e[31]=o=>m.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[32]||(e[32]=o=>m.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"])]),e[122]||(e[122]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1)),s(B,{"content-position":"left"},{default:i(()=>[...e[121]||(e[121]=[d("自定义消息模板",-1)])]),_:1}),e[123]||(e[123]=l("div",{class:"form-tip",style:{"margin-bottom":"12px"}},[d("可用变量:"),l("code",null,"{'{cloud_type}'}"),d(),l("code",null,"{'{nickname}'}"),d(),l("code",null,"{'{file_name}'}"),d(),l("code",null,"{'{file_size}'}"),d(),l("code",null,"{'{duration}'}"),d(),l("code",null,"{'{share_url}'}"),d(),l("code",null,"{'{fail_count}'}"),d(),l("code",null,"{'{error_message}'}")],-1)),(f(!0),_(I,null,O(m.eventTemplates,(o,c)=>(f(),_("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"10px 14px","margin-bottom":"10px"}},[l("div",Ts,[s(j,{size:"small",type:m.events[c]?"success":"info"},{default:i(()=>[d(b(c==="on_save_success"?"转存成功":c==="on_save_fail"?"转存失败":c==="on_cookie_expire"?"Cookie过期":"清理完成"),1)]),_:2},1032,["type"]),s(w,{modelValue:m.events[c],"onUpdate:modelValue":y=>m.events[c]=y,size:"small"},null,8,["modelValue","onUpdate:modelValue"])]),s(n,{label:"标题",style:{"margin-bottom":"6px"}},{default:i(()=>[s(a,{modelValue:o.title,"onUpdate:modelValue":y=>o.title=y,placeholder:"消息标题,支持变量",style:{"max-width":"500px"}},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(n,{label:"内容",style:{"margin-bottom":"0"}},{default:i(()=>[s(a,{modelValue:o.content,"onUpdate:modelValue":y=>o.content=y,type:"textarea",rows:3,placeholder:"消息内容,支持变量和 Markdown",style:{"max-width":"500px"}},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]))),128))]),_:1})])]),_:1})]),_:1}),e[133]||(e[133]=d()),s(B,{"content-position":"left"},{default:i(()=>[...e[124]||(e[124]=[d("添加推送用户",-1)])]),_:1}),l("div",js,[l("div",Is,[s(Ne,{modelValue:v.account,"onUpdate:modelValue":e[33]||(e[33]=o=>v.account=o),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:i(()=>[(f(!0),_(I,null,O(Te.value,o=>(f(),h(Le,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(Ne,{modelValue:v.channels,"onUpdate:modelValue":e[34]||(e[34]=o=>v.channels=o),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择您所需的消息频道",style:{width:"260px"}},{default:i(()=>[(f(!0),_(I,null,O(ll.value,(o,c)=>(f(),h(Le,{key:c,label:o.label,value:c},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(w,{modelValue:v.events.on_save_success,"onUpdate:modelValue":e[35]||(e[35]=o=>v.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_save_fail,"onUpdate:modelValue":e[36]||(e[36]=o=>v.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cookie_expire,"onUpdate:modelValue":e[37]||(e[37]=o=>v.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cleanup,"onUpdate:modelValue":e[38]||(e[38]=o=>v.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"]),s(p,{type:"primary",size:"small",loading:ge.value,onClick:al},{default:i(()=>[d(b(v.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),v.id?(f(),h(p,{key:0,size:"small",onClick:sl},{default:i(()=>[...e[125]||(e[125]=[d("取消编辑",-1)])]),_:1})):q("",!0)])]),s(B,{"content-position":"left"},{default:i(()=>[...e[126]||(e[126]=[d("推送用户列表",-1)])]),_:1}),s(Nl,{data:ze.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:i(()=>[s(G,{prop:"account",label:"推广账号","min-width":"140"}),s(G,{label:"转存成功",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_success")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[127]||(e[127]=[d("✔",-1)])]),_:1})):(f(),_("span",Os,"—"))]),_:1}),s(G,{label:"转存失败",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_fail")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[128]||(e[128]=[d("✔",-1)])]),_:1})):(f(),_("span",As,"—"))]),_:1}),s(G,{label:"Cookie过期",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cookie_expire")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[129]||(e[129]=[d("✔",-1)])]),_:1})):(f(),_("span",Rs,"—"))]),_:1}),s(G,{label:"清理完成",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cleanup")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[130]||(e[130]=[d("✔",-1)])]),_:1})):(f(),_("span",Bs,"—"))]),_:1}),s(G,{label:"已启用的通道","min-width":"220"},{default:i(({row:o})=>[(f(!0),_(I,null,O(je(o),(c,y)=>(f(),h(j,{key:y,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:i(()=>[d(b(il(y)),1)]),_:2},1024))),128)),dl(o)?q("",!0):(f(),_("span",$s,"走全局推送"))]),_:1}),s(G,{label:"操作",width:"180",fixed:"right"},{default:i(({row:o})=>[s(p,{text:"",type:"primary",size:"small",onClick:c=>tl(o)},{default:i(()=>[...e[131]||(e[131]=[d("编辑",-1)])]),_:1},8,["onClick"]),s(Ll,{title:"确定删除该推送用户?",onConfirm:c=>nl(o)},{reference:i(()=>[s(p,{text:"",type:"danger",size:"small"},{default:i(()=>[...e[132]||(e[132]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[K,!C.value||C.value==="sys-notify"]]),W(s(T,{id:"section-sys-daily-report"},{header:i(()=>[l("div",Es,[e[136]||(e[136]=l("span",null,"📊 每日汇报",-1)),l("div",null,[s(p,{size:"small",loading:ve.value,onClick:Xe},{default:i(()=>[...e[134]||(e[134]=[d("📋 预览",-1)])]),_:1},8,["loading"]),s(p,{size:"small",type:"primary",loading:ye.value,onClick:Ze},{default:i(()=>[...e[135]||(e[135]=[d("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:i(()=>[s(k,{"label-width":"140px","label-position":"left"},{default:i(()=>[s(n,{label:"启用每日汇报"},{default:i(()=>[s(w,{modelValue:S.enabled,"onUpdate:modelValue":e[39]||(e[39]=o=>S.enabled=o),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),s(n,{label:"发送时间"},{default:i(()=>[s(Fl,{modelValue:S.time,"onUpdate:modelValue":e[40]||(e[40]=o=>S.time=o),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!S.enabled},null,8,["modelValue","disabled"]),e[137]||(e[137]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),s(n,{label:"报告内容"},{default:i(()=>[l("div",Ls,[s(w,{modelValue:S.includeSearch,"onUpdate:modelValue":e[41]||(e[41]=o=>S.includeSearch=o),"active-text":"搜索统计",disabled:!S.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:S.includeSaves,"onUpdate:modelValue":e[42]||(e[42]=o=>S.includeSaves=o),"active-text":"转存统计",disabled:!S.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:S.includeStorage,"onUpdate:modelValue":e[43]||(e[43]=o=>S.includeStorage=o),"active-text":"网盘容量",disabled:!S.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:S.includeUsers,"onUpdate:modelValue":e[44]||(e[44]=o=>S.includeUsers=o),"active-text":"用户数",disabled:!S.enabled},null,8,["modelValue","disabled"])])]),_:1}),s(n,{label:"上次发送"},{default:i(()=>[l("span",null,b(Pe.value||"从未发送"),1)]),_:1})]),_:1}),s(Dl,{modelValue:_e.value,"onUpdate:modelValue":e[45]||(e[45]=o=>_e.value=o),title:"📊 每日汇报预览",width:"600px"},{default:i(()=>[l("div",Ns,b(Ce.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[K,!C.value||C.value==="sys-daily-report"]]),W(s(T,{id:"section-sys-maintenance"},{header:i(()=>[...e[138]||(e[138]=[l("span",null,"🔄 系统维护",-1)])]),default:i(()=>[e[143]||(e[143]=d()),s(k,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"自动更新镜像"},{default:i(()=>[s(w,{modelValue:Ue.value,"onUpdate:modelValue":e[46]||(e[46]=o=>Ue.value=o),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[139]||(e[139]=d()),e[140]||(e[140]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[141]||(e[141]=d()),e[142]||(e[142]=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),[[K,!C.value||C.value==="sys-maintenance"]]),l("div",Fs,[s(p,{type:"primary",size:"large",loading:fe.value,onClick:jl},{default:i(()=>[...e[144]||(e[144]=[d(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),Ks=ot(Ds,[["__scopeId","data-v-a858d91e"]]);export{Ks as default}; diff --git a/source_clean/frontend-src/dist-vite/assets/index-NatHwx8Z.js b/source_clean/frontend-src/dist-vite/assets/index-Cl0LRM77.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/index-NatHwx8Z.js rename to source_clean/frontend-src/dist-vite/assets/index-Cl0LRM77.js index dc0ba22..5faf2be 100644 --- a/source_clean/frontend-src/dist-vite/assets/index-NatHwx8Z.js +++ b/source_clean/frontend-src/dist-vite/assets/index-Cl0LRM77.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-PHccTGnQ.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-BmKs8gEH.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-ChuuoSxg.js","assets/CloudBadge-CFunKPHf.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-UW0IM39Z.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-BiUZl96Q.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-C2704iLs.js","assets/CloudConfig-B1Oal8Ih.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-6T6IuZsX.js","assets/SystemConfig-C8bSCuHg.css","assets/SaveRecords-BVhLgZy2.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-CjqZVDp7.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-Cmk4L4mz.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-DwhKkE6n.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-DkGRh6Pd.js","assets/CloudBadge-CBMiQcXc.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-NwlTbWPe.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-CmowWzFU.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-CevUjDG-.js","assets/CloudConfig-BjpiSn71.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-DFW9m6V4.js","assets/SystemConfig-CG32Xbld.css","assets/SaveRecords-CYbt4Kzt.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-6oJdngfa.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-PHccTGnQ.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-BmKs8gEH.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-ChuuoSxg.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-UW0IM39Z.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-BiUZl96Q.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-C2704iLs.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-B1Oal8Ih.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-CjqZVDp7.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-6T6IuZsX.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-BVhLgZy2.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-Cmk4L4mz.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-DwhKkE6n.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-DkGRh6Pd.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-NwlTbWPe.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-CmowWzFU.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-CevUjDG-.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-BjpiSn71.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-6oJdngfa.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-DFW9m6V4.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-CYbt4Kzt.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 1f9cad8..cc5d407 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 d937c7d..9f13717 100755 --- a/source_clean/frontend-src/src/pages/admin/SystemConfig.vue +++ b/source_clean/frontend-src/src/pages/admin/SystemConfig.vue @@ -529,6 +529,20 @@
    全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。
    + 自定义消息模板 +
    可用变量:{'{cloud_type}'} {'{nickname}'} {'{file_name}'} {'{file_size}'} {'{duration}'} {'{share_url}'} {'{fail_count}'} {'{error_message}'}
    +
    +
    + {{ tkey === 'on_save_success' ? '转存成功' : tkey === 'on_save_fail' ? '转存失败' : tkey === 'on_cookie_expire' ? 'Cookie过期' : '清理完成' }} + +
    + + + + + + +
    @@ -868,9 +882,14 @@ const enabledNotifyProviders = computed(() => { return result }) -const globalNotifyForm = reactive<{ channels: Record; events: Record }>({ +const globalNotifyForm = reactive<{ channels: Record; events: Record; eventTemplates: Record }>({ channels: {}, events: { on_save_success: true, on_save_fail: true, on_cookie_expire: true, on_cleanup: false }, + eventTemplates: { + on_save_success: { title: '✅ 转存成功', content: '**{cloud_type}** · {nickname}\n文件: {file_name}\n大小: {file_size}\n耗时: {duration}s\n链接: {share_url}' }, + on_save_fail: { title: '❌ 转存连续失败 {fail_count} 次', content: '**{cloud_type}** · {nickname}\n连续失败次数: {fail_count}\n最后失败: {error_message}\n请检查网盘状态' }, + on_cookie_expire: { title: '⚠️ Cookie 已过期', content: '**{cloud_type}** · {nickname}\nCookie 已过期或失效,请重新登录\n最后操作: {share_url}' }, + }, }) function initPushUserChannelForm() { @@ -1049,6 +1068,13 @@ async function loadGlobalNotifyConfig() { globalNotifyForm.events.on_cookie_expire = parsed.events.on_cookie_expire !== false globalNotifyForm.events.on_cleanup = parsed.events.on_cleanup === true } + if (parsed.eventTemplates) { + for (const [ek, et] of Object.entries(parsed.eventTemplates)) { + if (globalNotifyForm.eventTemplates[ek]) { + globalNotifyForm.eventTemplates[ek] = et as any + } + } + } } catch {} } } catch {} @@ -1457,7 +1483,7 @@ async function handleSave() { // Add global_notify_config as JSON entry entries.push({ key: 'global_notify_config', - value: JSON.stringify({ channels, events: globalNotifyForm.events }), + value: JSON.stringify({ channels, events: globalNotifyForm.events, eventTemplates: globalNotifyForm.eventTemplates }), }) await updateSystemConfigs(entries) ElMessage.success('配置已保存') diff --git a/source_clean/frontend/assets/AdminDashboard-C2704iLs.js b/source_clean/frontend/assets/AdminDashboard-CevUjDG-.js similarity index 99% rename from source_clean/frontend/assets/AdminDashboard-C2704iLs.js rename to source_clean/frontend/assets/AdminDashboard-CevUjDG-.js index 43d097e..651f085 100644 --- a/source_clean/frontend/assets/AdminDashboard-C2704iLs.js +++ b/source_clean/frontend/assets/AdminDashboard-CevUjDG-.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-NatHwx8Z.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-B1Oal8Ih.js";import u1 from"./SystemConfig-6T6IuZsX.js";import f1 from"./SaveRecords-BVhLgZy2.js";import"./index-Bn7NwETH.js";import"./CloudBadge-CFunKPHf.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-Cl0LRM77.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-BjpiSn71.js";import u1 from"./SystemConfig-DFW9m6V4.js";import f1 from"./SaveRecords-CYbt4Kzt.js";import"./index-Bn7NwETH.js";import"./CloudBadge-CBMiQcXc.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-BiUZl96Q.js b/source_clean/frontend/assets/AdminLayout-CmowWzFU.js similarity index 98% rename from source_clean/frontend-src/dist-vite/assets/AdminLayout-BiUZl96Q.js rename to source_clean/frontend/assets/AdminLayout-CmowWzFU.js index 68f751a..2dcdaa8 100644 --- a/source_clean/frontend-src/dist-vite/assets/AdminLayout-BiUZl96Q.js +++ b/source_clean/frontend/assets/AdminLayout-CmowWzFU.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-NatHwx8Z.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-Cl0LRM77.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-UW0IM39Z.js b/source_clean/frontend/assets/AdminLogin-NwlTbWPe.js similarity index 94% rename from source_clean/frontend-src/dist-vite/assets/AdminLogin-UW0IM39Z.js rename to source_clean/frontend/assets/AdminLogin-NwlTbWPe.js index 45b4c31..05efb34 100644 --- a/source_clean/frontend-src/dist-vite/assets/AdminLogin-UW0IM39Z.js +++ b/source_clean/frontend/assets/AdminLogin-NwlTbWPe.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-NatHwx8Z.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-Cl0LRM77.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-CjqZVDp7.js b/source_clean/frontend/assets/Cleanup-6oJdngfa.js similarity index 99% rename from source_clean/frontend-src/dist-vite/assets/Cleanup-CjqZVDp7.js rename to source_clean/frontend/assets/Cleanup-6oJdngfa.js index d1df3f3..c6cd98a 100644 --- a/source_clean/frontend-src/dist-vite/assets/Cleanup-CjqZVDp7.js +++ b/source_clean/frontend/assets/Cleanup-6oJdngfa.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-NatHwx8Z.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-Cl0LRM77.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-CFunKPHf.js b/source_clean/frontend/assets/CloudBadge-CBMiQcXc.js similarity index 78% rename from source_clean/frontend/assets/CloudBadge-CFunKPHf.js rename to source_clean/frontend/assets/CloudBadge-CBMiQcXc.js index e052cd9..3180cdd 100644 --- a/source_clean/frontend/assets/CloudBadge-CFunKPHf.js +++ b/source_clean/frontend/assets/CloudBadge-CBMiQcXc.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-NatHwx8Z.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-Cl0LRM77.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-B1Oal8Ih.js b/source_clean/frontend/assets/CloudConfig-BjpiSn71.js similarity index 99% rename from source_clean/frontend/assets/CloudConfig-B1Oal8Ih.js rename to source_clean/frontend/assets/CloudConfig-BjpiSn71.js index 9c3aba1..729d036 100644 --- a/source_clean/frontend/assets/CloudConfig-B1Oal8Ih.js +++ b/source_clean/frontend/assets/CloudConfig-BjpiSn71.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-NatHwx8Z.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-CFunKPHf.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-Cl0LRM77.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-CBMiQcXc.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-PHccTGnQ.js b/source_clean/frontend/assets/HomePage-Cmk4L4mz.js similarity index 98% rename from source_clean/frontend/assets/HomePage-PHccTGnQ.js rename to source_clean/frontend/assets/HomePage-Cmk4L4mz.js index 4ca80e8..26f3a01 100644 --- a/source_clean/frontend/assets/HomePage-PHccTGnQ.js +++ b/source_clean/frontend/assets/HomePage-Cmk4L4mz.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-NatHwx8Z.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-Cl0LRM77.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-ChuuoSxg.js b/source_clean/frontend/assets/ResultDetail-DkGRh6Pd.js similarity index 98% rename from source_clean/frontend/assets/ResultDetail-ChuuoSxg.js rename to source_clean/frontend/assets/ResultDetail-DkGRh6Pd.js index 5f48a6d..a876eb9 100644 --- a/source_clean/frontend/assets/ResultDetail-ChuuoSxg.js +++ b/source_clean/frontend/assets/ResultDetail-DkGRh6Pd.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-NatHwx8Z.js";import{C as K}from"./CloudBadge-CFunKPHf.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-Cl0LRM77.js";import{C as K}from"./CloudBadge-CBMiQcXc.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-BVhLgZy2.js b/source_clean/frontend/assets/SaveRecords-CYbt4Kzt.js similarity index 99% rename from source_clean/frontend/assets/SaveRecords-BVhLgZy2.js rename to source_clean/frontend/assets/SaveRecords-CYbt4Kzt.js index df4da50..f8d61eb 100644 --- a/source_clean/frontend/assets/SaveRecords-BVhLgZy2.js +++ b/source_clean/frontend/assets/SaveRecords-CYbt4Kzt.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-NatHwx8Z.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-Cl0LRM77.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-BmKs8gEH.js b/source_clean/frontend/assets/SearchResult-DwhKkE6n.js similarity index 99% rename from source_clean/frontend/assets/SearchResult-BmKs8gEH.js rename to source_clean/frontend/assets/SearchResult-DwhKkE6n.js index 9a0db69..6a8ad17 100644 --- a/source_clean/frontend/assets/SearchResult-BmKs8gEH.js +++ b/source_clean/frontend/assets/SearchResult-DwhKkE6n.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-NatHwx8Z.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-Cl0LRM77.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;uMe.section||He.query.section||""),xe=y(),pe=y([]),d=J({}),$=y([]),Y=y(""),E=y([]),Q=y(""),L=y([]),X=y(""),N=y([]),Z=y(""),ee=y(""),F=y([]),fe=y(!1),ce=y(!1),R=J({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),ke=y(!0),te=y(!1),se=y(!1),ae=y(!1),oe=y(!1),ne=y(!1),ie=y(!1),P=y(null),Ve=y(!0),de=y(!1),me=H({get:()=>String(d.search_proxy_enabled)==="true",set:t=>{d.search_proxy_enabled=t?"true":"false"}}),he=H({get:()=>String(d.pansou_web_enabled)==="true",set:t=>{d.pansou_web_enabled=t?"true":"false"}}),Se=H({get:()=>String(d.search_all_channels)==="true",set:t=>{d.search_all_channels=t?"true":"false"}}),Ce=H({get:()=>String(d.auto_update_enabled)==="true",set:t=>{d.auto_update_enabled=t?"true":"false"}}),h=J({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),ve=y(!1),ye=y(!1),Ue=y(""),ge=y(!1),Pe=y("");async function Je(){try{const t=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Object.assign(h,e)}}catch{}}async function Ye(){try{const t=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();e.date&&(Pe.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function Qe(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...h})})}catch{}}async function Xe(){ve.value=!0;try{const t=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Ue.value=e.content,ge.value=!0}}finally{ve.value=!1}}async function Ze(){ye.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?u.success("测试报告已发送到全局通知通道"):u.error("发送失败")}catch{u.error("发送失败")}finally{ye.value=!1}}const ze=y([]),D=y({}),_e=y(!1),Te=y([]);async function el(){try{const t=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!t.ok)return;const e=await t.json(),a=Array.isArray(e)?[...new Set(e.map(n=>n.promotion_account||"").filter(Boolean))]:[];Te.value=a}catch{}}const m=J({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ll=H(()=>{var e;const t={};for(const[a,n]of Object.entries(D.value))(e=v.channels[a])!=null&&e._enabled&&(t[a]=n);return t}),v=J({channels:{},events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}});function tl(t){var e,a,n,x;if(t){m.id=t.id,m.account=t.account;const p=t.notify_config||{};m.channels=Object.keys(p.channels||{}),m.events={on_save_success:((e=p.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((a=p.events)==null?void 0:a.on_save_fail)!==!1,on_cookie_expire:((n=p.events)==null?void 0:n.on_cookie_expire)!==!1,on_cleanup:((x=p.events)==null?void 0:x.on_cleanup)===!0}}else m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function sl(){m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function re(t,e){return((t.notify_config||{}).events||{})[e]===!0}async function al(){if(!m.account){u.warning("请填写推广账号");return}_e.value=!0;try{const t={account:m.account,notify_config:{channels:{},events:m.events}},e={};for(const n of m.channels)e[n]={};t.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(t)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)});const a=!!m.id;m.id=null,m.account="",m.channels=[],m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},u.success(a?"推送用户已更新":"推送用户已添加"),await be()}catch(t){u.error(t.message||"保存失败")}finally{_e.value=!1}}async function be(){try{const t=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});t.ok&&(ze.value=await t.json())}catch(t){console.error("Failed to load push users",t)}}async function ol(){try{D.value=await Xl()}catch(t){console.error("Failed to load providers",t)}}async function nl(t){try{await fetch("/api/admin/push-users/"+t.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),u.success("已删除"),await be()}catch(e){u.error(e.message||"删除失败")}}function Ie(t){var a;return((a=t.notify_config)==null?void 0:a.channels)||{}}function il(t){var e;return((e=D.value[t])==null?void 0:e.label)||t}function dl(t){return Object.keys(Ie(t)).length>0}function rl(){const t={};for(const[e,a]of Object.entries(D.value)){t[e]={_enabled:!1,_testing:!1};for(const n of a.params||[])t[e][n.key]=n.default||""}v.channels=t,v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function ul(){try{const a=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(n=>n.key==="global_notify_config");if(a&&a.value)try{const n=JSON.parse(a.value),x=n.channels||{};for(const[p,S]of Object.entries(x))if(v.channels[p]){v.channels[p]._enabled=!0;for(const[T,w]of Object.entries(S))v.channels[p][T]=w}n.events&&(v.events.on_save_success=n.events.on_save_success!==!1,v.events.on_save_fail=n.events.on_save_fail!==!1,v.events.on_cookie_expire=n.events.on_cookie_expire!==!1,v.events.on_cleanup=n.events.on_cleanup===!0)}catch{}}catch{}}async function pl(t){const e=v.channels[t];if(!(!e||!e._enabled)){e._testing=!0;try{const a=await et(t);a.success?u.success(a.message):u.error(a.message)}catch(a){u.error(a.message||"测试失败")}finally{e._testing=!1}}}const z=J({oldPassword:"",newPassword:"",confirmPassword:""}),fl={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:(t,e,a)=>{e!==z.newPassword?a(new Error("两次输入的密码不一致")):a()},trigger:"blur"}]};Wl(async()=>{try{pe.value=await Yl();for(const p of pe.value)d[p.key]=p.value;const t=String(d.title_filter_rules||"");$.value=t.split(` -`).filter(p=>p.trim());const e=String(d.link_invalid_keywords||"");E.value=e.split(` -`).filter(p=>p.trim());const a=String(d.quark_ad_keywords||"");L.value=a.split(` -`).filter(p=>p.trim());const n=String(d.quark_warning_folder_names||"");N.value=n.split(` -`).filter(p=>p.trim());const x=String(d.quark_sus_extensions||"");F.value=x.split(` -`).filter(p=>p.trim())}catch{u.error("加载系统配置失败")}try{const t=await Ql();Object.assign(R,t)}catch{R.db_size="无法读取"}finally{ke.value=!1}we(),await ol(),rl(),await ul(),be(),Je(),Ye(),el()}),Kl(D,()=>{for(const[t,e]of Object.entries(D.value))if(!v.channels[t]){v.channels[t]={_enabled:!1,_testing:!1};for(const a of e.params||[])v.channels[t][a.key]=a.default||""}});async function cl(){var e,a;const t=String(d.redis_url||"redis://redis:6379");te.value=!0;try{const n=await lt(t);n.ok?u.success(`✅ Redis 连接成功 — ${n.info}`):u.error(`❌ Redis 连接失败 — ${n.info}`)}catch(n){u.error(((a=(e=n.response)==null?void 0:e.data)==null?void 0:a.error)||"测试请求失败")}finally{te.value=!1}}async function we(){Ve.value=!0;try{const t=localStorage.getItem("admin_token"),e={};t&&(e.Authorization="Bearer "+t);const a=await fetch("/api/admin/pansou-info",{headers:e});if(!a.ok)throw new Error("HTTP "+a.status);const n=await a.json();P.value=n}catch{P.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{Ve.value=!1}}async function ml(){de.value=!0;try{const t=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};t&&(e.Authorization="Bearer "+t);const n=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();n.ok?(u.success("✅ PanSou 已更新并重启"),setTimeout(()=>we(),3e3)):u.error("❌ 更新失败 — "+(n.error||"未知错误"))}catch(t){u.error(t.message||"更新请求失败")}finally{de.value=!1}}async function vl(){var t,e;se.value=!0;try{const a=await le({type:"pansou",url:String(d.pansou_url||"")});a.ok?(we(),u.success(`✅ PanSou 连接成功 — ${a.info}`)):u.error(`❌ PanSou 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{se.value=!1}}async function yl(){var t,e;ae.value=!0;try{const a=await le({type:"video_parser",url:String(d.video_parser_url||"")});a.ok?u.success(`✅ 视频解析服务连接成功 — ${a.info}`):u.error(`❌ 视频解析服务连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function gl(){var t,e;oe.value=!0;try{const a=await le({type:"tmdb",token:String(d.tmdb_api_token||"")});a.ok?u.success(`✅ TMDB 令牌有效 — ${a.info}`):u.error(`❌ TMDB 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function _l(){var t,e;ne.value=!0;try{const a=await le({type:"proxy",url:String(d.search_proxy_url||"")});a.ok?u.success(`✅ 搜索代理可用 — ${a.info}`):u.error(`❌ 搜索代理不可用 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function bl(){var t,e;ie.value=!0;try{const a=String(d.ip_geo_api_url||"");if(!a){u.warning("请先输入 IP 归属地查询 API 地址");return}const n=await le({type:"ip_geo",url:a});n.ok?u.success("✅ IP 归属地接口可用 — "+n.info):u.error("❌ IP 归属地接口不可用 — "+n.info)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}function wl(){const t=Y.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)$.value.includes(n)||($.value.push(n),a++);Y.value="",je(),a>0?u.success(`已添加 ${a} 条规则`):u.info("所有规则已存在")}function xl(t){$.value.splice(t,1),je()}function kl(t){return t.startsWith("#")?"info":t.startsWith("/")&&(t.endsWith("/")||t.endsWith("/g")||t.endsWith("/i")||t.endsWith("/gi"))?"warning":""}function je(){d.title_filter_rules=$.value.join(` -`)}function Vl(){const t=Q.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)E.value.includes(n)||(E.value.push(n),a++);Q.value="",Ae(),a>0?u.success(`已添加 ${a} 个关键词`):u.info("所有关键词已存在")}function hl(t){E.value.splice(t,1),Ae()}function Ae(){d.link_invalid_keywords=E.value.join(` -`)}function Sl(){const t=X.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)L.value.includes(n)||(L.value.push(n),a++);X.value="",Oe(),a>0?u.success():u.info("所有关键词已存在")}function Cl(t){L.value.splice(t,1),Oe()}function Oe(){d.quark_ad_keywords=L.value.join(` -`)}function Ul(){const t=Z.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)N.value.includes(n)||(N.value.push(n),a++);Z.value="",Re(),a>0?u.success():u.info("所有文件夹名已存在")}function Pl(t){N.value.splice(t,1),Re()}function Re(){d.quark_warning_folder_names=N.value.join(` -`)}function zl(){const t=ee.value.trim();if(!t)return;const e=t.split(` -`).map(n=>n.trim().toLowerCase().replace(/^\./,"")).filter(n=>n);let a=0;for(const n of e)F.value.includes(n)||(F.value.push(n),a++);ee.value="",Be(),a>0?u.success("已添加 ${added} 个后缀"):u.info("所有后缀已存在")}function Tl(t){F.value.splice(t,1),Be()}function Be(){d.quark_sus_extensions=F.value.join(` -`)}async function Il(){var t,e;fe.value=!0;try{const a={};for(const[x,p]of Object.entries(v.channels))if(p._enabled){const S={};for(const[T,w]of Object.entries(p))!T.startsWith("_")&&w!==""&&(S[T]=String(w));Object.keys(S).length>0&&(a[x]=S)}const n=pe.value.map(x=>({key:x.key,value:String(d[x.key]??x.value)}));await Qe(),n.push({key:"global_notify_config",value:JSON.stringify({channels:a,events:v.events})}),await Zl(n),u.success("配置已保存")}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"保存失败")}finally{fe.value=!1}}async function jl(){var e,a,n;if(await((e=xe.value)==null?void 0:e.validate().catch(()=>!1))){ce.value=!0;try{const x=await tt(z.oldPassword,z.newPassword);x.success?(u.success("✅ 密码修改成功,下次登录请使用新密码"),z.oldPassword="",z.newPassword="",z.confirmPassword=""):u.error(x.message)}catch(x){u.error(((n=(a=x.response)==null?void 0:a.data)==null?void 0:n.error)||"密码修改失败")}finally{ce.value=!1}}}const $e=y();function Al(){var t;(t=$e.value)==null||t.click()}async function Ol(t){var n,x,p;const e=t.target,a=(n=e.files)==null?void 0:n[0];if(a){if(!a.type.startsWith("image/")){u.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(a.size>2*1024*1024){u.error("图片大小不能超过 2MB"),e.value="";return}try{const S=await st(a);S.success?(d.site_logo=S.url,u.success("✅ LOGO 已上传并生效")):u.error(S.message)}catch(S){u.error(((p=(x=S.response)==null?void 0:x.data)==null?void 0:p.error)||"上传失败")}e.value=""}}async function Rl(){try{d.site_logo="",await at("site_logo",""),u.success("已移除 LOGO")}catch{u.error("移除失败")}}return(t,e)=>{const a=k("el-input"),n=k("el-form-item"),x=k("el-icon"),p=k("el-button"),S=k("el-form"),T=k("el-card"),w=k("el-switch"),B=k("el-divider"),Ee=k("el-radio"),Bl=k("el-radio-group"),M=k("el-input-number"),I=k("el-tag"),$l=k("el-collapse-item"),El=k("el-collapse"),Le=k("el-option"),Ne=k("el-select"),G=k("el-table-column"),Ll=k("el-popconfirm"),Nl=k("el-table"),Fl=k("el-time-picker"),Dl=k("el-dialog");return f(),g("div",nt,[W(s(T,{id:"section-sys-site"},{header:i(()=>[...e[47]||(e[47]=[l("span",null,"🌐 网站设置",-1)])]),default:i(()=>[s(S,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"网站名称"},{default:i(()=>[s(a,{modelValue:d.site_name,"onUpdate:modelValue":e[0]||(e[0]=o=>d.site_name=o),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[48]||(e[48]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),s(n,{label:"网站 LOGO"},{default:i(()=>[l("div",it,[l("div",dt,[s(p,{type:"primary",onClick:Al},{icon:i(()=>[s(x,null,{default:i(()=>[s(We(ql))]),_:1})]),default:i(()=>[e[49]||(e[49]=r(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:$e,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Ol},null,544),e[50]||(e[50]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[r(" 推荐 "),l("strong",null,"320×60"),r(" 或宽比例(如 4:1),JPEG/PNG/WebP,最大 2MB。"),l("br"),r(" LOGO 同时也作为搜索结果无封面图时的兜底图使用。 ")],-1))]),d.site_logo?(f(),g("div",rt,[l("img",{src:String(d.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=o=>o.target.style.display="none")},null,40,ut),s(p,{size:"small",type:"danger",plain:"",onClick:Rl},{default:i(()=>[...e[51]||(e[51]=[r("移除",-1)])]),_:1})])):q("",!0)])]),_:1}),s(n,{label:"底部免责声明"},{default:i(()=>[s(a,{modelValue:d.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=o=>d.site_disclaimer=o),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[52]||(e[52]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),s(n,{label:"滚动通知文字"},{default:i(()=>[s(a,{modelValue:d.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=o=>d.site_marquee=o),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[53]||(e[53]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),s(n,{label:"系统时区"},{default:i(()=>[s(a,{modelValue:d.timezone,"onUpdate:modelValue":e[4]||(e[4]=o=>d.timezone=o),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[54]||(e[54]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[K,!U.value||U.value==="sys-site"]]),W(s(T,{id:"section-sys-services"},{header:i(()=>[...e[55]||(e[55]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:i(()=>[s(S,{"label-width":"180px","label-position":"left"},{default:i(()=>{var o,c,_,j,Fe,De;return[s(n,{label:"PanSou 搜索引擎地址"},{default:i(()=>{var C,Ge;return[l("div",pt,[s(a,{modelValue:d.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=ue=>d.pansou_url=ue),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:se.value,onClick:vl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),s(p,{type:"warning",loading:de.value,onClick:ml,size:"default",style:{width:"130px"},disabled:!((C=P.value)!=null&&C.hasUpdate)},{default:i(()=>{var ue;return[r(b(de.value?"更新中...":(ue=P.value)!=null&&ue.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Ge=P.value)!=null&&Ge.latestVersion?(f(),g("span",ft,b(P.value.latestVersion),1)):q("",!0)]),e[56]||(e[56]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",ct,[l("div",mt,[l("div",{class:Ke(["db-stat-value",((o=P.value)==null?void 0:o.status)==="connected"?"text-success":"text-warning"])},b(((c=P.value)==null?void 0:c.status)==="connected"?"已连接":P.value?"未连接":"-"),3),e[57]||(e[57]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",vt,[l("div",yt,b(((_=P.value)==null?void 0:_.channelCount)??"-"),1),e[58]||(e[58]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",gt,[l("div",_t,b(((j=P.value)==null?void 0:j.pluginCount)??"-"),1),e[59]||(e[59]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",bt,[l("div",wt,b(((Fe=P.value)==null?void 0:Fe.diskCount)??"-"),1),e[60]||(e[60]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",xt,[l("div",kt,b(((De=P.value)==null?void 0:De.version)||"-"),1),e[61]||(e[61]=l("div",{class:"db-stat-label"},"版本",-1))])]),s(n,{label:"PanSou Web 端访问"},{default:i(()=>[s(w,{modelValue:he.value,"onUpdate:modelValue":e[6]||(e[6]=C=>he.value=C),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[r(" 开启后可通过 "),l("code",null,"/pansou/"),r(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),s(n,{label:"启用代理"},{default:i(()=>[s(w,{modelValue:me.value,"onUpdate:modelValue":e[7]||(e[7]=C=>me.value=C),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),me.value?(f(),V(n,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:i(()=>[l("div",Vt,[s(a,{modelValue:d.search_proxy_url,"onUpdate:modelValue":e[8]||(e[8]=C=>d.search_proxy_url=C),placeholder:"http://127.0.0.1:7890",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:ne.value,onClick:_l,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(ne.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[64]||(e[64]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):q("",!0),s(n,{label:"视频解析服务地址"},{default:i(()=>[l("div",ht,[s(a,{modelValue:d.video_parser_url,"onUpdate:modelValue":e[9]||(e[9]=C=>d.video_parser_url=C),placeholder:"http://video-parser:3001",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:ae.value,onClick:yl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),s(n,{label:"TMDB 读取令牌"},{default:i(()=>[l("div",St,[s(a,{modelValue:d.tmdb_api_token,"onUpdate:modelValue":e[10]||(e[10]=C=>d.tmdb_api_token=C),type:"password","show-password":"",placeholder:"输入 TMDB API 读取令牌(Bearer Token)",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:oe.value,onClick:gl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(oe.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[66]||(e[66]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[r(" 用于搜索 TMDB 获取评分、导演、演员等完整内容信息。 "),l("a",{href:"https://www.themoviedb.org/settings/api",target:"_blank",rel:"noopener",style:{color:"var(--primary-color)"}},"获取令牌 →")],-1))]),_:1}),s(n,{label:"IP 归属地查询"},{default:i(()=>[l("div",Ct,[s(a,{modelValue:d.ip_geo_api_url,"onUpdate:modelValue":e[11]||(e[11]=C=>d.ip_geo_api_url=C),placeholder:"https://cn.apihz.cn/api/ip/chaapi.php?id=xxx&key=***&ip={ip}&td=0",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:ie.value,onClick:bl,size:"default",style:{width:"100px"}},{default:i(()=>[r(b(ie.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[67]||(e[67]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[r(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),r(" 会被替换为实际 IP。 ")],-1)),e[68]||(e[68]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),s(B,{"content-position":"left"},{default:i(()=>[...e[69]||(e[69]=[r("Redis 缓存",-1)])]),_:1}),s(n,{label:"Redis 连接地址"},{default:i(()=>[l("div",Ut,[s(a,{modelValue:d.redis_url,"onUpdate:modelValue":e[12]||(e[12]=C=>d.redis_url=C),placeholder:"redis://:***@172.17.0.1:6379",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",size:"default",loading:te.value,onClick:cl,style:{width:"100px"}},{default:i(()=>[r(b(te.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[70]||(e[70]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[r(" Redis 用于缓存搜索验证结果,提升响应速度。"),l("br"),l("strong",null,"带密码格式:"),l("code",null,"redis://:你的密码@地址:6379"),l("br"),r(" 修改后保存配置即可生效,无需重启。"),l("strong",null,"切换 Redis 只会清空缓存,不影响任何重要数据。")],-1))]),_:1})]}),_:1}),ke.value?(f(),g("div",Pt,[s(x,{class:"is-loading",size:20},{default:i(()=>[s(We(Ml))]),_:1}),e[71]||(e[71]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(f(),g("div",zt,[l("div",Tt,[l("div",{class:Ke(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},b(R.redis_status),3),e[72]||(e[72]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",It,[l("div",jt,b(R.db_size),1),e[73]||(e[73]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",At,[l("div",Ot,b(R.save_records),1),e[74]||(e[74]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Rt,[l("div",Bt,b(R.search_stats),1),e[75]||(e[75]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",$t,[l("div",Et,b(R.cloud_configs),1),e[76]||(e[76]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Lt,[l("div",Nt,b(R.content_cache),1),e[77]||(e[77]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[K,!U.value||U.value==="sys-services"]]),W(s(T,{id:"section-sys-strategy"},{header:i(()=>[...e[78]||(e[78]=[l("span",null,"🔧 性能配置",-1)])]),default:i(()=>[l("div",Ft,[s(B,{"content-position":"left"},{default:i(()=>[...e[79]||(e[79]=[r("搜索结果返回方式",-1)])]),_:1}),l("div",Dt,[l("div",Gt,[e[80]||(e[80]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),s(w,{modelValue:d.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=o=>d.link_validation_enabled=o),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[81]||(e[81]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Wt,[l("div",Kt,[e[84]||(e[84]=l("span",{class:"field-label"},"搜索结果方式",-1)),s(Bl,{modelValue:d.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=o=>d.search_strategy=o)},{default:i(()=>[s(Ee,{value:"wait_all"},{default:i(()=>[...e[82]||(e[82]=[r("等待全部结果后展示",-1)])]),_:1}),s(Ee,{value:"stream_channel"},{default:i(()=>[...e[83]||(e[83]=[r("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[85]||(e[85]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),s(B,{"content-position":"left"},{default:i(()=>[...e[86]||(e[86]=[r("搜索策略",-1)])]),_:1}),l("div",qt,[l("div",Mt,[l("div",Ht,[e[87]||(e[87]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),s(w,{modelValue:Se.value,"onUpdate:modelValue":e[15]||(e[15]=o=>Se.value=o),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[88]||(e[88]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",Jt,[l("div",Yt,[e[89]||(e[89]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),s(M,{modelValue:d.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=o=>d.search_result_limit=o),min:1,max:100},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",Qt,[l("div",Xt,[e[91]||(e[91]=l("span",{class:"field-label"},"验证并发数",-1)),s(M,{modelValue:d.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=o=>d.validation_concurrency=o),min:1,max:50},null,8,["modelValue"])]),e[92]||(e[92]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",Zt,[l("div",es,[e[93]||(e[93]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),s(M,{modelValue:d.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=o=>d.validation_cache_ttl_valid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",ls,[l("div",ts,[e[95]||(e[95]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),s(M,{modelValue:d.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=o=>d.validation_cache_ttl_invalid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[96]||(e[96]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",ss,[l("div",as,[e[97]||(e[97]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),s(M,{modelValue:d.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=o=>d.validation_timeout=o),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[98]||(e[98]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),s(B,{"content-position":"left"},{default:i(()=>[...e[99]||(e[99]=[r("链接检测配置",-1)])]),_:1}),l("div",os,[e[101]||(e[101]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",ns,[s(a,{modelValue:Y.value,"onUpdate:modelValue":e[21]||(e[21]=o=>Y.value=o),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:wl,disabled:!Y.value.trim()},{default:i(()=>[...e[100]||(e[100]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),$.value.length>0?(f(),g("div",is,[(f(!0),g(A,null,O($.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:kl(o),"disable-transitions":!1,onClose:_=>xl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["type","onClose"]))),128))])):(f(),g("div",ds,"暂无过滤规则")),e[102]||(e[102]=l("div",{class:"filter-rule-help"},[l("div",{class:"help-title"},"📖 规则说明"),l("div",{class:"help-row"},[l("code",null,"# 注释内容"),r(" — "),l("code",null,"#"),r(" 后必须跟"),l("strong",null,"空格"),r("才会被识别为注释,单纯的 "),l("code",null,"#动漫"),r(" 会被当作要移除的文本")]),l("div",{class:"help-row"},[l("code",null,"/正则表达式/标志"),r(" — 正则匹配,匹配到的内容会被删除。如 "),l("code",null,"/^\\\\d+[、,.\\\\s]/"),r(" 去掉开头的序号")]),l("div",{class:"help-row"},[l("code",null,"纯文本"),r(" — 直接写要移除的文字(支持 emoji),凡是标题中含有的都会被删除")])],-1))]),l("div",rs,[e[104]||(e[104]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",us,[s(a,{modelValue:Q.value,"onUpdate:modelValue":e[22]||(e[22]=o=>Q.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:Vl,disabled:!Q.value.trim()},{default:i(()=>[...e[103]||(e[103]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),E.value.length>0?(f(),g("div",ps,[(f(!0),g(A,null,O(E.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:_=>hl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",fs,"暂无失效关键词,所有链接将默认判为有效"))]),s(B,{"content-position":"left"},{default:i(()=>[...e[106]||(e[106]=[r("夸克网盘转存清理",-1)])]),_:1}),l("div",cs,[e[108]||(e[108]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",ms,[s(a,{modelValue:X.value,"onUpdate:modelValue":e[23]||(e[23]=o=>X.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:Sl,disabled:!X.value.trim()},{default:i(()=>[...e[107]||(e[107]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[109]||(e[109]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),L.value.length>0?(f(),g("div",vs,[(f(!0),g(A,null,O(L.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"warning","disable-transitions":!1,onClose:_=>Cl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",ys,"暂未配置广告关键词,不会进行广告清理"))]),l("div",gs,[e[111]||(e[111]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",_s,[s(a,{modelValue:Z.value,"onUpdate:modelValue":e[24]||(e[24]=o=>Z.value=o),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:Ul,disabled:!Z.value.trim()},{default:i(()=>[...e[110]||(e[110]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[112]||(e[112]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),N.value.length>0?(f(),g("div",bs,[(f(!0),g(A,null,O(N.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"info","disable-transitions":!1,onClose:_=>Pl(c)},{default:i(()=>[r(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",ws,"暂未配置警示文件夹"))]),l("div",xs,[e[114]||(e[114]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",ks,[s(a,{modelValue:ee.value,"onUpdate:modelValue":e[25]||(e[25]=o=>ee.value=o),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:zl,disabled:!ee.value.trim()},{default:i(()=>[...e[113]||(e[113]=[r(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[115]||(e[115]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),F.value.length>0?(f(),g("div",Vs,[(f(!0),g(A,null,O(F.value,(o,c)=>(f(),V(I,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:_=>Tl(c)},{default:i(()=>[r("."+b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),g("div",hs,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[K,!U.value||U.value==="sys-strategy"]]),W(s(T,{id:"section-sys-password"},{header:i(()=>[...e[116]||(e[116]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:i(()=>[s(S,{ref_key:"passwordFormRef",ref:xe,model:z,rules:fl,"label-width":"120px","label-position":"left"},{default:i(()=>[s(n,{label:"原密码",prop:"oldPassword"},{default:i(()=>[s(a,{modelValue:z.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=o=>z.oldPassword=o),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"新密码",prop:"newPassword"},{default:i(()=>[s(a,{modelValue:z.newPassword,"onUpdate:modelValue":e[27]||(e[27]=o=>z.newPassword=o),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"确认新密码",prop:"confirmPassword"},{default:i(()=>[s(a,{modelValue:z.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=o=>z.confirmPassword=o),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,null,{default:i(()=>[s(p,{type:"primary",loading:ce.value,onClick:jl},{default:i(()=>[...e[117]||(e[117]=[r("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[K,!U.value||U.value==="sys-password"]]),W(s(T,{id:"section-sys-notify"},{header:i(()=>[...e[118]||(e[118]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:i(()=>[s(El,{"model-value":["global"]},{default:i(()=>[s($l,{title:"全局推送(管理员兜底)",name:"global"},{default:i(()=>[l("div",Ss,[s(S,{"label-width":"140px","label-position":"left"},{default:i(()=>[l("div",Cs,[(f(!0),g(A,null,O(D.value,(o,c)=>(f(),g("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",Us,[s(w,{modelValue:v.channels[c]._enabled,"onUpdate:modelValue":_=>v.channels[c]._enabled=_,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,b(o.label),1),v.channels[c]._enabled?(f(),V(p,{key:0,size:"small",text:"",type:"primary",onClick:_=>pl(c),loading:v.channels[c]._testing},{default:i(()=>[...e[119]||(e[119]=[r("测试",-1)])]),_:1},8,["onClick","loading"])):q("",!0)]),v.channels[c]._enabled?(f(),g("div",Ps,[(f(!0),g(A,null,O(o.params,_=>(f(),V(n,{key:_.key,label:_.label,style:{"margin-bottom":"6px"}},{default:i(()=>[_.type==="password"?(f(),V(a,{key:0,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j,type:"password","show-password":"",placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):_.type==="switch"?(f(),V(w,{key:1,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j},null,8,["modelValue","onUpdate:modelValue"])):_.type==="number"?(f(),V(M,{key:2,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(f(),V(a,{key:3,modelValue:v.channels[c][_.key],"onUpdate:modelValue":j=>v.channels[c][_.key]=j,placeholder:_.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):q("",!0)]))),128))]),s(B,{"content-position":"left"},{default:i(()=>[...e[120]||(e[120]=[r("全局事件开关",-1)])]),_:1}),l("div",zs,[s(w,{modelValue:v.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=o=>v.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_save_fail,"onUpdate:modelValue":e[30]||(e[30]=o=>v.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cookie_expire,"onUpdate:modelValue":e[31]||(e[31]=o=>v.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cleanup,"onUpdate:modelValue":e[32]||(e[32]=o=>v.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"])]),e[121]||(e[121]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1))]),_:1})])]),_:1})]),_:1}),e[131]||(e[131]=r()),s(B,{"content-position":"left"},{default:i(()=>[...e[122]||(e[122]=[r("添加推送用户",-1)])]),_:1}),l("div",Ts,[l("div",Is,[s(Ne,{modelValue:m.account,"onUpdate:modelValue":e[33]||(e[33]=o=>m.account=o),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:i(()=>[(f(!0),g(A,null,O(Te.value,o=>(f(),V(Le,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(Ne,{modelValue:m.channels,"onUpdate:modelValue":e[34]||(e[34]=o=>m.channels=o),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择您所需的消息频道",style:{width:"260px"}},{default:i(()=>[(f(!0),g(A,null,O(ll.value,(o,c)=>(f(),V(Le,{key:c,label:o.label,value:c},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(w,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[35]||(e[35]=o=>m.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[36]||(e[36]=o=>m.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[37]||(e[37]=o=>m.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[38]||(e[38]=o=>m.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"]),s(p,{type:"primary",size:"small",loading:_e.value,onClick:al},{default:i(()=>[r(b(m.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),m.id?(f(),V(p,{key:0,size:"small",onClick:sl},{default:i(()=>[...e[123]||(e[123]=[r("取消编辑",-1)])]),_:1})):q("",!0)])]),s(B,{"content-position":"left"},{default:i(()=>[...e[124]||(e[124]=[r("推送用户列表",-1)])]),_:1}),s(Nl,{data:ze.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:i(()=>[s(G,{prop:"account",label:"推广账号","min-width":"140"}),s(G,{label:"转存成功",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_success")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[125]||(e[125]=[r("✔",-1)])]),_:1})):(f(),g("span",js,"—"))]),_:1}),s(G,{label:"转存失败",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_fail")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[126]||(e[126]=[r("✔",-1)])]),_:1})):(f(),g("span",As,"—"))]),_:1}),s(G,{label:"Cookie过期",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cookie_expire")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[127]||(e[127]=[r("✔",-1)])]),_:1})):(f(),g("span",Os,"—"))]),_:1}),s(G,{label:"清理完成",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cleanup")?(f(),V(I,{key:0,type:"success",size:"small"},{default:i(()=>[...e[128]||(e[128]=[r("✔",-1)])]),_:1})):(f(),g("span",Rs,"—"))]),_:1}),s(G,{label:"已启用的通道","min-width":"220"},{default:i(({row:o})=>[(f(!0),g(A,null,O(Ie(o),(c,_)=>(f(),V(I,{key:_,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:i(()=>[r(b(il(_)),1)]),_:2},1024))),128)),dl(o)?q("",!0):(f(),g("span",Bs,"走全局推送"))]),_:1}),s(G,{label:"操作",width:"180",fixed:"right"},{default:i(({row:o})=>[s(p,{text:"",type:"primary",size:"small",onClick:c=>tl(o)},{default:i(()=>[...e[129]||(e[129]=[r("编辑",-1)])]),_:1},8,["onClick"]),s(Ll,{title:"确定删除该推送用户?",onConfirm:c=>nl(o)},{reference:i(()=>[s(p,{text:"",type:"danger",size:"small"},{default:i(()=>[...e[130]||(e[130]=[r("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[K,!U.value||U.value==="sys-notify"]]),W(s(T,{id:"section-sys-daily-report"},{header:i(()=>[l("div",$s,[e[134]||(e[134]=l("span",null,"📊 每日汇报",-1)),l("div",null,[s(p,{size:"small",loading:ve.value,onClick:Xe},{default:i(()=>[...e[132]||(e[132]=[r("📋 预览",-1)])]),_:1},8,["loading"]),s(p,{size:"small",type:"primary",loading:ye.value,onClick:Ze},{default:i(()=>[...e[133]||(e[133]=[r("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:i(()=>[s(S,{"label-width":"140px","label-position":"left"},{default:i(()=>[s(n,{label:"启用每日汇报"},{default:i(()=>[s(w,{modelValue:h.enabled,"onUpdate:modelValue":e[39]||(e[39]=o=>h.enabled=o),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),s(n,{label:"发送时间"},{default:i(()=>[s(Fl,{modelValue:h.time,"onUpdate:modelValue":e[40]||(e[40]=o=>h.time=o),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!h.enabled},null,8,["modelValue","disabled"]),e[135]||(e[135]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),s(n,{label:"报告内容"},{default:i(()=>[l("div",Es,[s(w,{modelValue:h.includeSearch,"onUpdate:modelValue":e[41]||(e[41]=o=>h.includeSearch=o),"active-text":"搜索统计",disabled:!h.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:h.includeSaves,"onUpdate:modelValue":e[42]||(e[42]=o=>h.includeSaves=o),"active-text":"转存统计",disabled:!h.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:h.includeStorage,"onUpdate:modelValue":e[43]||(e[43]=o=>h.includeStorage=o),"active-text":"网盘容量",disabled:!h.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:h.includeUsers,"onUpdate:modelValue":e[44]||(e[44]=o=>h.includeUsers=o),"active-text":"用户数",disabled:!h.enabled},null,8,["modelValue","disabled"])])]),_:1}),s(n,{label:"上次发送"},{default:i(()=>[l("span",null,b(Pe.value||"从未发送"),1)]),_:1})]),_:1}),s(Dl,{modelValue:ge.value,"onUpdate:modelValue":e[45]||(e[45]=o=>ge.value=o),title:"📊 每日汇报预览",width:"600px"},{default:i(()=>[l("div",Ls,b(Ue.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[K,!U.value||U.value==="sys-daily-report"]]),W(s(T,{id:"section-sys-maintenance"},{header:i(()=>[...e[136]||(e[136]=[l("span",null,"🔄 系统维护",-1)])]),default:i(()=>[e[141]||(e[141]=r()),s(S,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"自动更新镜像"},{default:i(()=>[s(w,{modelValue:Ce.value,"onUpdate:modelValue":e[46]||(e[46]=o=>Ce.value=o),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[137]||(e[137]=r()),e[138]||(e[138]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[139]||(e[139]=r()),e[140]||(e[140]=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),[[K,!U.value||U.value==="sys-maintenance"]]),l("div",Ns,[s(p,{type:"primary",size:"large",loading:fe.value,onClick:Il},{default:i(()=>[...e[142]||(e[142]=[r(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),Ws=ot(Fs,[["__scopeId","data-v-6cdc2b1a"]]);export{Ws as default}; diff --git a/source_clean/frontend/assets/SystemConfig-C8bSCuHg.css b/source_clean/frontend/assets/SystemConfig-C8bSCuHg.css deleted file mode 100644 index 6bbcedb..0000000 --- a/source_clean/frontend/assets/SystemConfig-C8bSCuHg.css +++ /dev/null @@ -1 +0,0 @@ -.el-card[data-v-6cdc2b1a]{margin-bottom:20px}.el-card[data-v-6cdc2b1a] .el-card__header{font-weight:600;font-size:15px}[data-v-6cdc2b1a] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-6cdc2b1a]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-6cdc2b1a]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-6cdc2b1a]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-6cdc2b1a]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-6cdc2b1a]{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-6cdc2b1a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-6cdc2b1a]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-6cdc2b1a]{padding:0 4px}.field-block[data-v-6cdc2b1a]{margin:12px 0}.field-label-row[data-v-6cdc2b1a]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-6cdc2b1a]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-6cdc2b1a]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-6cdc2b1a]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-6cdc2b1a]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-6cdc2b1a]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-6cdc2b1a]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-6cdc2b1a]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-6cdc2b1a]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-6cdc2b1a]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-6cdc2b1a]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-6cdc2b1a]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-6cdc2b1a]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-6cdc2b1a]:first-child{margin-top:0}.help-row[data-v-6cdc2b1a]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-6cdc2b1a]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-6cdc2b1a]{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-6cdc2b1a]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-6cdc2b1a]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-6cdc2b1a]{color:#e74c3c}.help-preview-filtered[data-v-6cdc2b1a]{color:#27ae60;font-weight:500}.filter-input-row[data-v-6cdc2b1a]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-6cdc2b1a]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-6cdc2b1a]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-6cdc2b1a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-6cdc2b1a]{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-6cdc2b1a]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-6cdc2b1a]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-6cdc2b1a]{color:#67c23a}.db-stat-value.text-warning[data-v-6cdc2b1a]{color:#e6a23c}.db-stat-label[data-v-6cdc2b1a]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-6cdc2b1a]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-6cdc2b1a]{grid-template-columns:1fr}}.pansou-status-grid[data-v-6cdc2b1a]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-6cdc2b1a]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-6cdc2b1a]{background:#67c23a}.dot-err[data-v-6cdc2b1a]{background:#f56c6c} diff --git a/source_clean/frontend/assets/SystemConfig-CG32Xbld.css b/source_clean/frontend/assets/SystemConfig-CG32Xbld.css new file mode 100644 index 0000000..1cf8273 --- /dev/null +++ b/source_clean/frontend/assets/SystemConfig-CG32Xbld.css @@ -0,0 +1 @@ +.el-card[data-v-a858d91e]{margin-bottom:20px}.el-card[data-v-a858d91e] .el-card__header{font-weight:600;font-size:15px}[data-v-a858d91e] .el-divider__text.is-left{left:0;padding-left:0}.form-tip[data-v-a858d91e]{font-size:12px;color:#909399;margin-top:4px}.fallback-upload-wrap[data-v-a858d91e]{display:flex;flex-direction:column;gap:12px}.fallback-upload-row[data-v-a858d91e]{display:flex;align-items:center;flex-wrap:wrap}.fallback-preview[data-v-a858d91e]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.fallback-preview img[data-v-a858d91e]{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-a858d91e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}.grid-cell[data-v-a858d91e]{display:flex;flex-direction:column;gap:4px}.strategy-section[data-v-a858d91e]{padding:0 4px}.field-block[data-v-a858d91e]{margin:12px 0}.field-label-row[data-v-a858d91e]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.field-label[data-v-a858d91e]{font-size:14px;font-weight:500;color:#303133;white-space:nowrap}.field-desc[data-v-a858d91e]{font-size:12px;color:#909399;margin:3px 0 0;line-height:1.5}.keyword-input-row[data-v-a858d91e]{display:flex;gap:8px;flex:1;min-width:200px}.tag-list[data-v-a858d91e]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.tag-empty[data-v-a858d91e]{font-size:13px;color:#c0c4cc;margin-top:8px}.filter-rule-help[data-v-a858d91e]{margin-top:8px;padding:10px 12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.filter-rule-help .help-title[data-v-a858d91e]{font-weight:600;font-size:13px;margin:8px 0 4px;color:#333}.filter-rule-help .help-title[data-v-a858d91e]:first-child{margin-top:0}.filter-rule-help .help-row[data-v-a858d91e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.filter-rule-help .help-row code[data-v-a858d91e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.filter-rules-help[data-v-a858d91e]{margin-top:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e8e8e8}.help-title[data-v-a858d91e]{font-weight:600;font-size:13px;margin:10px 0 6px;color:#333}.help-title[data-v-a858d91e]:first-child{margin-top:0}.help-row[data-v-a858d91e]{font-size:12px;color:#555;margin:3px 0;line-height:1.6}.help-row code[data-v-a858d91e]{background:#eef1f5;padding:1px 5px;border-radius:3px;font-size:11px;font-family:monospace}.help-sample[data-v-a858d91e]{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-a858d91e]{font-size:13px;margin:4px 0;display:flex;align-items:center;gap:6px}.help-preview-label[data-v-a858d91e]{color:#888;min-width:70px;font-size:12px}.help-preview-original[data-v-a858d91e]{color:#e74c3c}.help-preview-filtered[data-v-a858d91e]{color:#27ae60;font-weight:500}.filter-input-row[data-v-a858d91e]{display:flex;gap:8px;width:100%;margin-bottom:8px}.filter-tag-list[data-v-a858d91e]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.filter-empty[data-v-a858d91e]{font-size:13px;color:#c0c4cc;padding:8px 0;margin-bottom:8px}.db-status-grid[data-v-a858d91e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.db-stat-item[data-v-a858d91e]{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-a858d91e]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f}.db-stat-value[data-v-a858d91e]{white-space:nowrap;font-size:24px;font-weight:700;color:#303133;margin-bottom:4px}.db-stat-value.text-success[data-v-a858d91e]{color:#67c23a}.db-stat-value.text-warning[data-v-a858d91e]{color:#e6a23c}.db-stat-label[data-v-a858d91e]{font-size:12px;color:#909399}@media (max-width: 900px){.strategy-grid[data-v-a858d91e]{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.strategy-grid[data-v-a858d91e]{grid-template-columns:1fr}}.pansou-status-grid[data-v-a858d91e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:8px}.status-dot[data-v-a858d91e]{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok[data-v-a858d91e]{background:#67c23a}.dot-err[data-v-a858d91e]{background:#f56c6c} diff --git a/source_clean/frontend/assets/SystemConfig-DFW9m6V4.js b/source_clean/frontend/assets/SystemConfig-DFW9m6V4.js new file mode 100644 index 0000000..f77f969 --- /dev/null +++ b/source_clean/frontend/assets/SystemConfig-DFW9m6V4.js @@ -0,0 +1,25 @@ +import{d as Gl,o as Wl,E as u,x as Kl,a as f,c as _,K as W,L as K,f as s,w as i,b as l,v as H,h as g,i as J,j as V,l as d,k as We,N as ql,e as q,t as b,n as Ke,y as h,M as Ml,F as I,r as O,z as Hl,u as Jl}from"./index-Cl0LRM77.js";import{k as Yl,w as Ql,x as Xl,p as Zl,y as et,z as lt,A as le,B as tt,C as st,D as at,_ as ot}from"./_plugin-vue_export-helper-1Z-znrfZ.js";const nt={class:"system-config"},it={class:"fallback-upload-wrap"},dt={class:"fallback-upload-row"},rt={key:0,class:"fallback-preview"},ut=["src"],pt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},ft={key:0,style:{"font-size":"11px",color:"#e6a23c","white-space":"nowrap"}},ct={class:"pansou-status-grid"},mt={class:"db-stat-item"},vt={class:"db-stat-item"},yt={class:"db-stat-value"},_t={class:"db-stat-item"},gt={class:"db-stat-value"},bt={class:"db-stat-item"},wt={class:"db-stat-value"},xt={class:"db-stat-item"},Vt={class:"db-stat-value"},kt={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},ht={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},St={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Ut={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Ct={style:{display:"flex",gap:"8px","align-items":"center",width:"100%"}},Pt={key:0,style:{"text-align":"center",padding:"16px"}},zt={key:1,class:"db-status-grid"},Tt={class:"db-stat-item"},jt={class:"db-stat-item"},It={class:"db-stat-value"},Ot={class:"db-stat-item"},At={class:"db-stat-value"},Rt={class:"db-stat-item"},Bt={class:"db-stat-value"},$t={class:"db-stat-item"},Et={class:"db-stat-value"},Lt={class:"db-stat-item"},Nt={class:"db-stat-value"},Ft={class:"strategy-section"},Dt={class:"field-block"},Gt={class:"field-label-row"},Wt={class:"field-block"},Kt={class:"field-label-row"},qt={class:"strategy-grid"},Mt={class:"grid-cell"},Ht={class:"field-label-row"},Jt={class:"grid-cell"},Yt={class:"field-label-row"},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:"field-block"},ns={style:{display:"flex",gap:"8px","align-items":"stretch"}},is={key:0,class:"tag-list"},ds={key:1,class:"tag-empty"},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"},cs={class:"field-block"},ms={style:{display:"flex",gap:"8px","align-items":"stretch"}},vs={key:0,class:"tag-list"},ys={key:1,class:"tag-empty"},_s={class:"field-block"},gs={style:{display:"flex",gap:"8px","align-items":"stretch"}},bs={key:0,class:"tag-list"},ws={key:1,class:"tag-empty"},xs={class:"field-block"},Vs={style:{display:"flex",gap:"8px","align-items":"stretch"}},ks={key:0,class:"tag-list"},hs={key:1,class:"tag-empty"},Ss={class:"strategy-section"},Us={style:{display:"grid","grid-template-columns":"repeat(2,1fr)",gap:"8px"}},Cs={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"6px"}},Ps={key:0},zs={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ts={style:{display:"flex","align-items":"center",gap:"8px","margin-bottom":"8px"}},js={style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"12px 16px","margin-bottom":"16px"}},Is={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},Os={key:1,style:{color:"#ccc"}},As={key:1,style:{color:"#ccc"}},Rs={key:1,style:{color:"#ccc"}},Bs={key:1,style:{color:"#ccc"}},$s={key:0,style:{color:"#909399","font-size":"12px"}},Es={style:{display:"flex","align-items":"center","justify-content":"space-between"}},Ls={style:{display:"flex","flex-wrap":"wrap",gap:"16px"}},Ns={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"}},Fs={class:"save-bar"},Ds=Gl({__name:"SystemConfig",props:{section:{}},setup(qe){const Me=qe,He=Hl();Jl();const C=H(()=>Me.section||He.query.section||""),xe=g(),pe=g([]),r=J({}),$=g([]),Y=g(""),E=g([]),Q=g(""),L=g([]),X=g(""),N=g([]),Z=g(""),ee=g(""),F=g([]),fe=g(!1),ce=g(!1),R=J({db_size:"-",save_records:0,search_stats:0,cloud_configs:0,content_cache:0,redis_status:"未连接"}),Ve=g(!0),te=g(!1),se=g(!1),ae=g(!1),oe=g(!1),ne=g(!1),ie=g(!1),P=g(null),ke=g(!0),de=g(!1),me=H({get:()=>String(r.search_proxy_enabled)==="true",set:t=>{r.search_proxy_enabled=t?"true":"false"}}),he=H({get:()=>String(r.pansou_web_enabled)==="true",set:t=>{r.pansou_web_enabled=t?"true":"false"}}),Se=H({get:()=>String(r.search_all_channels)==="true",set:t=>{r.search_all_channels=t?"true":"false"}}),Ue=H({get:()=>String(r.auto_update_enabled)==="true",set:t=>{r.auto_update_enabled=t?"true":"false"}}),S=J({enabled:!0,time:"08:00",includeSearch:!0,includeSaves:!0,includeStorage:!0,includeUsers:!0}),ve=g(!1),ye=g(!1),Ce=g(""),_e=g(!1),Pe=g("");async function Je(){try{const t=await fetch("/api/admin/daily-report/config",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Object.assign(S,e)}}catch{}}async function Ye(){try{const t=await fetch("/api/admin/daily-report/last-run",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();e.date&&(Pe.value=`${e.date} ${new Date(e.sentAt).toLocaleTimeString("zh-CN")}`)}}catch{}}async function Qe(){try{await fetch("/api/admin/daily-report/config",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("admin_token")}`},body:JSON.stringify({...S})})}catch{}}async function Xe(){ve.value=!0;try{const t=await fetch("/api/admin/daily-report/preview",{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}});if(t.ok){const e=await t.json();Ce.value=e.content,_e.value=!0}}finally{ve.value=!1}}async function Ze(){ye.value=!0;try{(await fetch("/api/admin/daily-report/test",{method:"POST",headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}})).ok?u.success("测试报告已发送到全局通知通道"):u.error("发送失败")}catch{u.error("发送失败")}finally{ye.value=!1}}const ze=g([]),D=g({}),ge=g(!1),Te=g([]);async function el(){try{const t=await fetch("/api/admin/cloud-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});if(!t.ok)return;const e=await t.json(),a=Array.isArray(e)?[...new Set(e.map(n=>n.promotion_account||"").filter(Boolean))]:[];Te.value=a}catch{}}const v=J({id:null,account:"",channels:[],events:{on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}),ll=H(()=>{var e;const t={};for(const[a,n]of Object.entries(D.value))(e=m.channels[a])!=null&&e._enabled&&(t[a]=n);return t}),m=J({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}`}}});function tl(t){var e,a,n,x;if(t){v.id=t.id,v.account=t.account;const p=t.notify_config||{};v.channels=Object.keys(p.channels||{}),v.events={on_save_success:((e=p.events)==null?void 0:e.on_save_success)!==!1,on_save_fail:((a=p.events)==null?void 0:a.on_save_fail)!==!1,on_cookie_expire:((n=p.events)==null?void 0:n.on_cookie_expire)!==!1,on_cleanup:((x=p.events)==null?void 0:x.on_cleanup)===!0}}else v.id=null,v.account="",v.channels=[],v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function sl(){v.id=null,v.account="",v.channels=[],v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}function re(t,e){return((t.notify_config||{}).events||{})[e]===!0}async function al(){if(!v.account){u.warning("请填写推广账号");return}ge.value=!0;try{const t={account:v.account,notify_config:{channels:{},events:v.events}},e={};for(const n of v.channels)e[n]={};t.notify_config.channels=e,v.id?await fetch("/api/admin/push-users/"+v.id,{method:"PUT",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)}):await fetch("/api/admin/push-users",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")},body:JSON.stringify(t)});const a=!!v.id;v.id=null,v.account="",v.channels=[],v.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1},u.success(a?"推送用户已更新":"推送用户已添加"),await be()}catch(t){u.error(t.message||"保存失败")}finally{ge.value=!1}}async function be(){try{const t=await fetch("/api/admin/push-users",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}});t.ok&&(ze.value=await t.json())}catch(t){console.error("Failed to load push users",t)}}async function ol(){try{D.value=await Xl()}catch(t){console.error("Failed to load providers",t)}}async function nl(t){try{await fetch("/api/admin/push-users/"+t.id,{method:"DELETE",headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}}),u.success("已删除"),await be()}catch(e){u.error(e.message||"删除失败")}}function je(t){var a;return((a=t.notify_config)==null?void 0:a.channels)||{}}function il(t){var e;return((e=D.value[t])==null?void 0:e.label)||t}function dl(t){return Object.keys(je(t)).length>0}function rl(){const t={};for(const[e,a]of Object.entries(D.value)){t[e]={_enabled:!1,_testing:!1};for(const n of a.params||[])t[e][n.key]=n.default||""}m.channels=t,m.events={on_save_success:!0,on_save_fail:!0,on_cookie_expire:!0,on_cleanup:!1}}async function ul(){try{const a=(await(await fetch("/api/admin/system-configs",{headers:{Authorization:"Bearer "+(localStorage.getItem("admin_token")||"")}})).json()).find(n=>n.key==="global_notify_config");if(a&&a.value)try{const n=JSON.parse(a.value),x=n.channels||{};for(const[p,k]of Object.entries(x))if(m.channels[p]){m.channels[p]._enabled=!0;for(const[T,w]of Object.entries(k))m.channels[p][T]=w}if(n.events&&(m.events.on_save_success=n.events.on_save_success!==!1,m.events.on_save_fail=n.events.on_save_fail!==!1,m.events.on_cookie_expire=n.events.on_cookie_expire!==!1,m.events.on_cleanup=n.events.on_cleanup===!0),n.eventTemplates)for(const[p,k]of Object.entries(n.eventTemplates))m.eventTemplates[p]&&(m.eventTemplates[p]=k)}catch{}}catch{}}async function pl(t){const e=m.channels[t];if(!(!e||!e._enabled)){e._testing=!0;try{const a=await et(t);a.success?u.success(a.message):u.error(a.message)}catch(a){u.error(a.message||"测试失败")}finally{e._testing=!1}}}const z=J({oldPassword:"",newPassword:"",confirmPassword:""}),fl={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:(t,e,a)=>{e!==z.newPassword?a(new Error("两次输入的密码不一致")):a()},trigger:"blur"}]};Wl(async()=>{try{pe.value=await Yl();for(const p of pe.value)r[p.key]=p.value;const t=String(r.title_filter_rules||"");$.value=t.split(` +`).filter(p=>p.trim());const e=String(r.link_invalid_keywords||"");E.value=e.split(` +`).filter(p=>p.trim());const a=String(r.quark_ad_keywords||"");L.value=a.split(` +`).filter(p=>p.trim());const n=String(r.quark_warning_folder_names||"");N.value=n.split(` +`).filter(p=>p.trim());const x=String(r.quark_sus_extensions||"");F.value=x.split(` +`).filter(p=>p.trim())}catch{u.error("加载系统配置失败")}try{const t=await Ql();Object.assign(R,t)}catch{R.db_size="无法读取"}finally{Ve.value=!1}we(),await ol(),rl(),await ul(),be(),Je(),Ye(),el()}),Kl(D,()=>{for(const[t,e]of Object.entries(D.value))if(!m.channels[t]){m.channels[t]={_enabled:!1,_testing:!1};for(const a of e.params||[])m.channels[t][a.key]=a.default||""}});async function cl(){var e,a;const t=String(r.redis_url||"redis://redis:6379");te.value=!0;try{const n=await lt(t);n.ok?u.success(`✅ Redis 连接成功 — ${n.info}`):u.error(`❌ Redis 连接失败 — ${n.info}`)}catch(n){u.error(((a=(e=n.response)==null?void 0:e.data)==null?void 0:a.error)||"测试请求失败")}finally{te.value=!1}}async function we(){ke.value=!0;try{const t=localStorage.getItem("admin_token"),e={};t&&(e.Authorization="Bearer "+t);const a=await fetch("/api/admin/pansou-info",{headers:e});if(!a.ok)throw new Error("HTTP "+a.status);const n=await a.json();P.value=n}catch{P.value={status:"disconnected",version:"-",channelCount:0,pluginCount:0,diskCount:0}}finally{ke.value=!1}}async function ml(){de.value=!0;try{const t=localStorage.getItem("admin_token"),e={"Content-Type":"application/json"};t&&(e.Authorization="Bearer "+t);const n=await(await fetch("/api/admin/update-pansou",{method:"POST",headers:e})).json();n.ok?(u.success("✅ PanSou 已更新并重启"),setTimeout(()=>we(),3e3)):u.error("❌ 更新失败 — "+(n.error||"未知错误"))}catch(t){u.error(t.message||"更新请求失败")}finally{de.value=!1}}async function vl(){var t,e;se.value=!0;try{const a=await le({type:"pansou",url:String(r.pansou_url||"")});a.ok?(we(),u.success(`✅ PanSou 连接成功 — ${a.info}`)):u.error(`❌ PanSou 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{se.value=!1}}async function yl(){var t,e;ae.value=!0;try{const a=await le({type:"video_parser",url:String(r.video_parser_url||"")});a.ok?u.success(`✅ 视频解析服务连接成功 — ${a.info}`):u.error(`❌ 视频解析服务连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ae.value=!1}}async function _l(){var t,e;oe.value=!0;try{const a=await le({type:"tmdb",token:String(r.tmdb_api_token||"")});a.ok?u.success(`✅ TMDB 令牌有效 — ${a.info}`):u.error(`❌ TMDB 连接失败 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{oe.value=!1}}async function gl(){var t,e;ne.value=!0;try{const a=await le({type:"proxy",url:String(r.search_proxy_url||"")});a.ok?u.success(`✅ 搜索代理可用 — ${a.info}`):u.error(`❌ 搜索代理不可用 — ${a.info}`)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ne.value=!1}}async function bl(){var t,e;ie.value=!0;try{const a=String(r.ip_geo_api_url||"");if(!a){u.warning("请先输入 IP 归属地查询 API 地址");return}const n=await le({type:"ip_geo",url:a});n.ok?u.success("✅ IP 归属地接口可用 — "+n.info):u.error("❌ IP 归属地接口不可用 — "+n.info)}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"测试请求失败")}finally{ie.value=!1}}function wl(){const t=Y.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)$.value.includes(n)||($.value.push(n),a++);Y.value="",Ie(),a>0?u.success(`已添加 ${a} 条规则`):u.info("所有规则已存在")}function xl(t){$.value.splice(t,1),Ie()}function Vl(t){return t.startsWith("#")?"info":t.startsWith("/")&&(t.endsWith("/")||t.endsWith("/g")||t.endsWith("/i")||t.endsWith("/gi"))?"warning":""}function Ie(){r.title_filter_rules=$.value.join(` +`)}function kl(){const t=Q.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)E.value.includes(n)||(E.value.push(n),a++);Q.value="",Oe(),a>0?u.success(`已添加 ${a} 个关键词`):u.info("所有关键词已存在")}function hl(t){E.value.splice(t,1),Oe()}function Oe(){r.link_invalid_keywords=E.value.join(` +`)}function Sl(){const t=X.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)L.value.includes(n)||(L.value.push(n),a++);X.value="",Ae(),a>0?u.success():u.info("所有关键词已存在")}function Ul(t){L.value.splice(t,1),Ae()}function Ae(){r.quark_ad_keywords=L.value.join(` +`)}function Cl(){const t=Z.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim()).filter(n=>n);let a=0;for(const n of e)N.value.includes(n)||(N.value.push(n),a++);Z.value="",Re(),a>0?u.success():u.info("所有文件夹名已存在")}function Pl(t){N.value.splice(t,1),Re()}function Re(){r.quark_warning_folder_names=N.value.join(` +`)}function zl(){const t=ee.value.trim();if(!t)return;const e=t.split(` +`).map(n=>n.trim().toLowerCase().replace(/^\./,"")).filter(n=>n);let a=0;for(const n of e)F.value.includes(n)||(F.value.push(n),a++);ee.value="",Be(),a>0?u.success("已添加 ${added} 个后缀"):u.info("所有后缀已存在")}function Tl(t){F.value.splice(t,1),Be()}function Be(){r.quark_sus_extensions=F.value.join(` +`)}async function jl(){var t,e;fe.value=!0;try{const a={};for(const[x,p]of Object.entries(m.channels))if(p._enabled){const k={};for(const[T,w]of Object.entries(p))!T.startsWith("_")&&w!==""&&(k[T]=String(w));Object.keys(k).length>0&&(a[x]=k)}const n=pe.value.map(x=>({key:x.key,value:String(r[x.key]??x.value)}));await Qe(),n.push({key:"global_notify_config",value:JSON.stringify({channels:a,events:m.events,eventTemplates:m.eventTemplates})}),await Zl(n),u.success("配置已保存")}catch(a){u.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.error)||"保存失败")}finally{fe.value=!1}}async function Il(){var e,a,n;if(await((e=xe.value)==null?void 0:e.validate().catch(()=>!1))){ce.value=!0;try{const x=await tt(z.oldPassword,z.newPassword);x.success?(u.success("✅ 密码修改成功,下次登录请使用新密码"),z.oldPassword="",z.newPassword="",z.confirmPassword=""):u.error(x.message)}catch(x){u.error(((n=(a=x.response)==null?void 0:a.data)==null?void 0:n.error)||"密码修改失败")}finally{ce.value=!1}}}const $e=g();function Ol(){var t;(t=$e.value)==null||t.click()}async function Al(t){var n,x,p;const e=t.target,a=(n=e.files)==null?void 0:n[0];if(a){if(!a.type.startsWith("image/")){u.error("仅支持图片文件(JPEG/PNG/WebP)"),e.value="";return}if(a.size>2*1024*1024){u.error("图片大小不能超过 2MB"),e.value="";return}try{const k=await st(a);k.success?(r.site_logo=k.url,u.success("✅ LOGO 已上传并生效")):u.error(k.message)}catch(k){u.error(((p=(x=k.response)==null?void 0:x.data)==null?void 0:p.error)||"上传失败")}e.value=""}}async function Rl(){try{r.site_logo="",await at("site_logo",""),u.success("已移除 LOGO")}catch{u.error("移除失败")}}return(t,e)=>{const a=V("el-input"),n=V("el-form-item"),x=V("el-icon"),p=V("el-button"),k=V("el-form"),T=V("el-card"),w=V("el-switch"),B=V("el-divider"),Ee=V("el-radio"),Bl=V("el-radio-group"),M=V("el-input-number"),j=V("el-tag"),$l=V("el-collapse-item"),El=V("el-collapse"),Le=V("el-option"),Ne=V("el-select"),G=V("el-table-column"),Ll=V("el-popconfirm"),Nl=V("el-table"),Fl=V("el-time-picker"),Dl=V("el-dialog");return f(),_("div",nt,[W(s(T,{id:"section-sys-site"},{header:i(()=>[...e[47]||(e[47]=[l("span",null,"🌐 网站设置",-1)])]),default:i(()=>[s(k,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"网站名称"},{default:i(()=>[s(a,{modelValue:r.site_name,"onUpdate:modelValue":e[0]||(e[0]=o=>r.site_name=o),placeholder:"CloudSearch",style:{"max-width":"300px"}},null,8,["modelValue"]),e[48]||(e[48]=l("div",{class:"form-tip"},"显示在网站标题和页脚",-1))]),_:1}),s(n,{label:"网站 LOGO"},{default:i(()=>[l("div",it,[l("div",dt,[s(p,{type:"primary",onClick:Ol},{icon:i(()=>[s(x,null,{default:i(()=>[s(We(ql))]),_:1})]),default:i(()=>[e[49]||(e[49]=d(" 选择LOGO图片并上传 ",-1))]),_:1}),l("input",{ref_key:"logoInputRef",ref:$e,type:"file",accept:".jpg,.jpeg,.png,.webp",hidden:"",onChange:Al},null,544),e[50]||(e[50]=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(),_("div",rt,[l("img",{src:String(r.site_logo),alt:"LOGO预览",onError:e[1]||(e[1]=o=>o.target.style.display="none")},null,40,ut),s(p,{size:"small",type:"danger",plain:"",onClick:Rl},{default:i(()=>[...e[51]||(e[51]=[d("移除",-1)])]),_:1})])):q("",!0)])]),_:1}),s(n,{label:"底部免责声明"},{default:i(()=>[s(a,{modelValue:r.site_disclaimer,"onUpdate:modelValue":e[2]||(e[2]=o=>r.site_disclaimer=o),type:"textarea",rows:4,placeholder:"输入免责声明内容"},null,8,["modelValue"]),e[52]||(e[52]=l("div",{class:"form-tip"},"显示在网站底部,留空则不显示",-1))]),_:1}),s(n,{label:"滚动通知文字"},{default:i(()=>[s(a,{modelValue:r.site_marquee,"onUpdate:modelValue":e[3]||(e[3]=o=>r.site_marquee=o),placeholder:"📢 欢迎使用CloudSearch",style:{"max-width":"500px"}},null,8,["modelValue"]),e[53]||(e[53]=l("div",{class:"form-tip"},"搜索栏下方滚动的通知条(从右往左滚动),留空则不显示",-1))]),_:1}),s(n,{label:"系统时区"},{default:i(()=>[s(a,{modelValue:r.timezone,"onUpdate:modelValue":e[4]||(e[4]=o=>r.timezone=o),placeholder:"Asia/Shanghai",style:{"max-width":"300px"}},null,8,["modelValue"]),e[54]||(e[54]=l("div",{class:"form-tip"},"例如 Asia/Shanghai、America/New_York、UTC,修改后保存配置即可生效",-1))]),_:1})]),_:1})]),_:1},512),[[K,!C.value||C.value==="sys-site"]]),W(s(T,{id:"section-sys-services"},{header:i(()=>[...e[55]||(e[55]=[l("span",null,"🔗 外部服务 & 缓存",-1)])]),default:i(()=>[s(k,{"label-width":"180px","label-position":"left"},{default:i(()=>{var o,c,y,A,Fe,De;return[s(n,{label:"PanSou 搜索引擎地址"},{default:i(()=>{var U,Ge;return[l("div",pt,[s(a,{modelValue:r.pansou_url,"onUpdate:modelValue":e[5]||(e[5]=ue=>r.pansou_url=ue),placeholder:"http://pansou:8888",style:{"max-width":"360px"}},null,8,["modelValue"]),s(p,{type:"primary",loading:se.value,onClick:vl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(se.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"]),s(p,{type:"warning",loading:de.value,onClick:ml,size:"default",style:{width:"130px"},disabled:!((U=P.value)!=null&&U.hasUpdate)},{default:i(()=>{var ue;return[d(b(de.value?"更新中...":(ue=P.value)!=null&&ue.hasUpdate?"🔄 有新版本":"无更新"),1)]}),_:1},8,["loading","disabled"]),(Ge=P.value)!=null&&Ge.latestVersion?(f(),_("span",ft,b(P.value.latestVersion),1)):q("",!0)]),e[56]||(e[56]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"盘搜搜索引擎的地址",-1))]}),_:1}),l("div",ct,[l("div",mt,[l("div",{class:Ke(["db-stat-value",((o=P.value)==null?void 0:o.status)==="connected"?"text-success":"text-warning"])},b(((c=P.value)==null?void 0:c.status)==="connected"?"已连接":P.value?"未连接":"-"),3),e[57]||(e[57]=l("div",{class:"db-stat-label"},"PanSou 状态",-1))]),l("div",vt,[l("div",yt,b(((y=P.value)==null?void 0:y.channelCount)??"-"),1),e[58]||(e[58]=l("div",{class:"db-stat-label"},"频道数量",-1))]),l("div",_t,[l("div",gt,b(((A=P.value)==null?void 0:A.pluginCount)??"-"),1),e[59]||(e[59]=l("div",{class:"db-stat-label"},"插件数量",-1))]),l("div",bt,[l("div",wt,b(((Fe=P.value)==null?void 0:Fe.diskCount)??"-"),1),e[60]||(e[60]=l("div",{class:"db-stat-label"},"网盘数量",-1))]),l("div",xt,[l("div",Vt,b(((De=P.value)==null?void 0:De.version)||"-"),1),e[61]||(e[61]=l("div",{class:"db-stat-label"},"版本",-1))])]),s(n,{label:"PanSou Web 端访问"},{default:i(()=>[s(w,{modelValue:he.value,"onUpdate:modelValue":e[6]||(e[6]=U=>he.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[62]||(e[62]=l("div",{class:"form-tip",style:{"margin-left":"12px"}},[d(" 开启后可通过 "),l("code",null,"/pansou/"),d(" 路径访问 PanSou 搜索引擎管理界面 ")],-1))]),_:1}),s(n,{label:"启用代理"},{default:i(()=>[s(w,{modelValue:me.value,"onUpdate:modelValue":e[7]||(e[7]=U=>me.value=U),"active-text":"启用","inactive-text":"关闭"},null,8,["modelValue"]),e[63]||(e[63]=l("div",{class:"form-tip",style:{"margin-left":"8px"}}," 仅 PanSou 需要此配置,开启后搜索请求将经过代理转发 ",-1))]),_:1}),me.value?(f(),h(n,{key:0,label:"代理地址",style:{"margin-top":"-12px"}},{default:i(()=>[l("div",kt,[s(a,{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"]),s(p,{type:"primary",loading:ne.value,onClick:gl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(ne.value?"测试中...":"测试代理"),1)]),_:1},8,["loading"])]),e[64]||(e[64]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"HTTP 或 SOCKS5 协议地址",-1))]),_:1})):q("",!0),s(n,{label:"视频解析服务地址"},{default:i(()=>[l("div",ht,[s(a,{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"]),s(p,{type:"primary",loading:ae.value,onClick:yl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(ae.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[65]||(e[65]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},"视频链接解析服务地址",-1))]),_:1}),s(n,{label:"TMDB 读取令牌"},{default:i(()=>[l("div",St,[s(a,{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"]),s(p,{type:"primary",loading:oe.value,onClick:_l,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(oe.value?"测试中...":"验证令牌"),1)]),_:1},8,["loading"])]),e[66]||(e[66]=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}),s(n,{label:"IP 归属地查询"},{default:i(()=>[l("div",Ut,[s(a,{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"]),s(p,{type:"primary",loading:ie.value,onClick:bl,size:"default",style:{width:"100px"}},{default:i(()=>[d(b(ie.value?"测试中...":"验证接口"),1)]),_:1},8,["loading"])]),e[67]||(e[67]=l("div",{class:"form-tip",style:{"margin-top":"4px"}},[d(" IP 归属地查询 API 地址,"),l("code",null,"{ip}"),d(" 会被替换为实际 IP。 ")],-1)),e[68]||(e[68]=l("div",{style:{color:"var(--el-color-warning)","font-size":"13px","margin-top":"2px",width:"100%"}}," ⚠ 当前仅支持 接口盒子(apihz.cn) 格式 ",-1))]),_:1}),s(B,{"content-position":"left"},{default:i(()=>[...e[69]||(e[69]=[d("Redis 缓存",-1)])]),_:1}),s(n,{label:"Redis 连接地址"},{default:i(()=>[l("div",Ct,[s(a,{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"]),s(p,{type:"primary",size:"default",loading:te.value,onClick:cl,style:{width:"100px"}},{default:i(()=>[d(b(te.value?"测试中...":"验证连接"),1)]),_:1},8,["loading"])]),e[70]||(e[70]=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}),Ve.value?(f(),_("div",Pt,[s(x,{class:"is-loading",size:20},{default:i(()=>[s(We(Ml))]),_:1}),e[71]||(e[71]=l("span",{style:{"margin-left":"8px",color:"#909399"}},"加载中...",-1))])):(f(),_("div",zt,[l("div",Tt,[l("div",{class:Ke(["db-stat-value",R.redis_status==="已连接"?"text-success":"text-warning"])},b(R.redis_status),3),e[72]||(e[72]=l("div",{class:"db-stat-label"},"Redis 状态",-1))]),l("div",jt,[l("div",It,b(R.db_size),1),e[73]||(e[73]=l("div",{class:"db-stat-label"},"数据库大小",-1))]),l("div",Ot,[l("div",At,b(R.save_records),1),e[74]||(e[74]=l("div",{class:"db-stat-label"},"转存记录",-1))]),l("div",Rt,[l("div",Bt,b(R.search_stats),1),e[75]||(e[75]=l("div",{class:"db-stat-label"},"搜索记录",-1))]),l("div",$t,[l("div",Et,b(R.cloud_configs),1),e[76]||(e[76]=l("div",{class:"db-stat-label"},"网盘配置",-1))]),l("div",Lt,[l("div",Nt,b(R.content_cache),1),e[77]||(e[77]=l("div",{class:"db-stat-label"},"内容缓存",-1))])]))]),_:1},512),[[K,!C.value||C.value==="sys-services"]]),W(s(T,{id:"section-sys-strategy"},{header:i(()=>[...e[78]||(e[78]=[l("span",null,"🔧 性能配置",-1)])]),default:i(()=>[l("div",Ft,[s(B,{"content-position":"left"},{default:i(()=>[...e[79]||(e[79]=[d("搜索结果返回方式",-1)])]),_:1}),l("div",Dt,[l("div",Gt,[e[80]||(e[80]=l("span",{class:"field-label"},"开启资源链接有效性监测",-1)),s(w,{modelValue:r.link_validation_enabled,"onUpdate:modelValue":e[13]||(e[13]=o=>r.link_validation_enabled=o),"active-value":"true","inactive-value":"false","active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[81]||(e[81]=l("div",{class:"field-desc"},"开启后搜索时会自动检测链接是否有效,过滤失效链接。关闭则直接返回所有结果(更快)",-1))]),l("div",Wt,[l("div",Kt,[e[84]||(e[84]=l("span",{class:"field-label"},"搜索结果方式",-1)),s(Bl,{modelValue:r.search_strategy,"onUpdate:modelValue":e[14]||(e[14]=o=>r.search_strategy=o)},{default:i(()=>[s(Ee,{value:"wait_all"},{default:i(()=>[...e[82]||(e[82]=[d("等待全部结果后展示",-1)])]),_:1}),s(Ee,{value:"stream_channel"},{default:i(()=>[...e[83]||(e[83]=[d("频道结果逐步展示",-1)])]),_:1})]),_:1},8,["modelValue"])]),e[85]||(e[85]=l("div",{class:"field-desc"},"逐步展示会分频道并发请求并优先展示先返回的频道;该模式下频道顺序按返回先后,不按配置顺序。",-1))]),s(B,{"content-position":"left"},{default:i(()=>[...e[86]||(e[86]=[d("搜索策略",-1)])]),_:1}),l("div",qt,[l("div",Mt,[l("div",Ht,[e[87]||(e[87]=l("span",{class:"field-label"},"使用所有频道参与搜索",-1)),s(w,{modelValue:Se.value,"onUpdate:modelValue":e[15]||(e[15]=o=>Se.value=o),"active-text":"开启","inactive-text":"关闭"},null,8,["modelValue"])]),e[88]||(e[88]=l("div",{class:"field-desc"},"包含未启用频道,命中更广但请求压力更高。",-1))]),l("div",Jt,[l("div",Yt,[e[89]||(e[89]=l("span",{class:"field-label"},"每类网盘有效结果数",-1)),s(M,{modelValue:r.search_result_limit,"onUpdate:modelValue":e[16]||(e[16]=o=>r.search_result_limit=o),min:1,max:100},null,8,["modelValue"])]),e[90]||(e[90]=l("div",{class:"field-desc"},"每个网盘类型最多展示的有效链接数量",-1))]),l("div",Qt,[l("div",Xt,[e[91]||(e[91]=l("span",{class:"field-label"},"验证并发数",-1)),s(M,{modelValue:r.validation_concurrency,"onUpdate:modelValue":e[17]||(e[17]=o=>r.validation_concurrency=o),min:1,max:50},null,8,["modelValue"])]),e[92]||(e[92]=l("div",{class:"field-desc"},"同时验证的链接数量",-1))]),l("div",Zt,[l("div",es,[e[93]||(e[93]=l("span",{class:"field-label"},"有效链接缓存 (s)",-1)),s(M,{modelValue:r.validation_cache_ttl_valid,"onUpdate:modelValue":e[18]||(e[18]=o=>r.validation_cache_ttl_valid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[94]||(e[94]=l("div",{class:"field-desc"},"有效验证结果的缓存时间",-1))]),l("div",ls,[l("div",ts,[e[95]||(e[95]=l("span",{class:"field-label"},"无效链接缓存 (s)",-1)),s(M,{modelValue:r.validation_cache_ttl_invalid,"onUpdate:modelValue":e[19]||(e[19]=o=>r.validation_cache_ttl_invalid=o),min:60,max:86400,step:60},null,8,["modelValue"])]),e[96]||(e[96]=l("div",{class:"field-desc"},"无效验证结果的缓存时间",-1))]),l("div",ss,[l("div",as,[e[97]||(e[97]=l("span",{class:"field-label"},"验证超时 (ms)",-1)),s(M,{modelValue:r.validation_timeout,"onUpdate:modelValue":e[20]||(e[20]=o=>r.validation_timeout=o),min:1e3,max:3e4,step:500},null,8,["modelValue"])]),e[98]||(e[98]=l("div",{class:"field-desc"},"单个链接验证超时毫秒数",-1))])]),s(B,{"content-position":"left"},{default:i(()=>[...e[99]||(e[99]=[d("链接检测配置",-1)])]),_:1}),l("div",os,[e[101]||(e[101]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"搜索标题过滤规则")],-1)),l("div",ns,[s(a,{modelValue:Y.value,"onUpdate:modelValue":e[21]||(e[21]=o=>Y.value=o),type:"textarea",rows:1,placeholder:"每行一条规则,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:wl,disabled:!Y.value.trim()},{default:i(()=>[...e[100]||(e[100]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),$.value.length>0?(f(),_("div",is,[(f(!0),_(I,null,O($.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:Vl(o),"disable-transitions":!1,onClose:y=>xl(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["type","onClose"]))),128))])):(f(),_("div",ds,"暂无过滤规则")),e[102]||(e[102]=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",rs,[e[104]||(e[104]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"失效关键词")],-1)),l("div",us,[s(a,{modelValue:Q.value,"onUpdate:modelValue":e[22]||(e[22]=o=>Q.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:kl,disabled:!Q.value.trim()},{default:i(()=>[...e[103]||(e[103]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[105]||(e[105]=l("div",{class:"field-desc"},"自定义失效关键词,PanSou 检测 summary 或 HTML 页面内容包含即判为失效。",-1)),E.value.length>0?(f(),_("div",ps,[(f(!0),_(I,null,O(E.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:y=>hl(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",fs,"暂无失效关键词,所有链接将默认判为有效"))]),s(B,{"content-position":"left"},{default:i(()=>[...e[106]||(e[106]=[d("夸克网盘转存清理",-1)])]),_:1}),l("div",cs,[e[108]||(e[108]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"广告关键词")],-1)),l("div",ms,[s(a,{modelValue:X.value,"onUpdate:modelValue":e[23]||(e[23]=o=>X.value=o),type:"textarea",rows:1,placeholder:"每行一个关键词,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:Sl,disabled:!X.value.trim()},{default:i(()=>[...e[107]||(e[107]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[109]||(e[109]=l("div",{class:"field-desc"},"夸克转存完成后自动删除文件名/文件夹名含这些关键词的内容(防广告病毒)",-1)),L.value.length>0?(f(),_("div",vs,[(f(!0),_(I,null,O(L.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"warning","disable-transitions":!1,onClose:y=>Ul(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",ys,"暂未配置广告关键词,不会进行广告清理"))]),l("div",_s,[e[111]||(e[111]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"警示文件夹名")],-1)),l("div",gs,[s(a,{modelValue:Z.value,"onUpdate:modelValue":e[24]||(e[24]=o=>Z.value=o),type:"textarea",rows:1,placeholder:"每行一个文件夹名,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"primary",onClick:Cl,disabled:!Z.value.trim()},{default:i(()=>[...e[110]||(e[110]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[112]||(e[112]=l("div",{class:"field-desc"},"夸克转存完成后在网盘根目录自动创建这些警示文件夹(自动加上 ⚠️ 前缀)",-1)),N.value.length>0?(f(),_("div",bs,[(f(!0),_(I,null,O(N.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"info","disable-transitions":!1,onClose:y=>Pl(c)},{default:i(()=>[d(b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",ws,"暂未配置警示文件夹"))]),l("div",xs,[e[114]||(e[114]=l("div",{class:"field-label-row"},[l("span",{class:"field-label"},"可疑文件后缀")],-1)),l("div",Vs,[s(a,{modelValue:ee.value,"onUpdate:modelValue":e[25]||(e[25]=o=>ee.value=o),type:"textarea",rows:1,placeholder:"每行一个后缀,不要带点号,回车分隔",style:{"max-width":"420px","font-family":"monospace","font-size":"12px"}},null,8,["modelValue"]),s(p,{type:"danger",onClick:zl,disabled:!ee.value.trim()},{default:i(()=>[...e[113]||(e[113]=[d(" 确认添加 ",-1)])]),_:1},8,["disabled"])]),e[115]||(e[115]=l("div",{class:"field-desc"},"夸克转存完成后自动删除后缀匹配的文件(防病毒,如 bat、exe、scr 等)",-1)),F.value.length>0?(f(),_("div",ks,[(f(!0),_(I,null,O(F.value,(o,c)=>(f(),h(j,{key:c,closable:"",type:"danger","disable-transitions":!1,onClose:y=>Tl(c)},{default:i(()=>[d("."+b(o),1)]),_:2},1032,["onClose"]))),128))])):(f(),_("div",hs,"暂无配置,使用默认列表:bat、exe、vbs、scr、cmd、com、pif、js、jar、msi、reg、inf、ps1"))])])]),_:1},512),[[K,!C.value||C.value==="sys-strategy"]]),W(s(T,{id:"section-sys-password"},{header:i(()=>[...e[116]||(e[116]=[l("span",null,"🔑 修改管理员密码",-1)])]),default:i(()=>[s(k,{ref_key:"passwordFormRef",ref:xe,model:z,rules:fl,"label-width":"120px","label-position":"left"},{default:i(()=>[s(n,{label:"原密码",prop:"oldPassword"},{default:i(()=>[s(a,{modelValue:z.oldPassword,"onUpdate:modelValue":e[26]||(e[26]=o=>z.oldPassword=o),type:"password","show-password":"",placeholder:"输入原密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"新密码",prop:"newPassword"},{default:i(()=>[s(a,{modelValue:z.newPassword,"onUpdate:modelValue":e[27]||(e[27]=o=>z.newPassword=o),type:"password","show-password":"",placeholder:"输入新密码(至少6位)",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,{label:"确认新密码",prop:"confirmPassword"},{default:i(()=>[s(a,{modelValue:z.confirmPassword,"onUpdate:modelValue":e[28]||(e[28]=o=>z.confirmPassword=o),type:"password","show-password":"",placeholder:"再次输入新密码",style:{"max-width":"300px"}},null,8,["modelValue"])]),_:1}),s(n,null,{default:i(()=>[s(p,{type:"primary",loading:ce.value,onClick:Il},{default:i(()=>[...e[117]||(e[117]=[d("修改密码",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1},512),[[K,!C.value||C.value==="sys-password"]]),W(s(T,{id:"section-sys-notify"},{header:i(()=>[...e[118]||(e[118]=[l("div",{style:{display:"flex","align-items":"center","justify-content":"space-between"}},[l("span",null,"📬 消息推送")],-1)])]),default:i(()=>[s(El,{"model-value":["global"]},{default:i(()=>[s($l,{title:"全局推送(管理员兜底)",name:"global"},{default:i(()=>[l("div",Ss,[s(k,{"label-width":"140px","label-position":"left"},{default:i(()=>[l("div",Us,[(f(!0),_(I,null,O(D.value,(o,c)=>(f(),_("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"8px 12px"}},[l("div",Cs,[s(w,{modelValue:m.channels[c]._enabled,"onUpdate:modelValue":y=>m.channels[c]._enabled=y,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),l("strong",null,b(o.label),1),m.channels[c]._enabled?(f(),h(p,{key:0,size:"small",text:"",type:"primary",onClick:y=>pl(c),loading:m.channels[c]._testing},{default:i(()=>[...e[119]||(e[119]=[d("测试",-1)])]),_:1},8,["onClick","loading"])):q("",!0)]),m.channels[c]._enabled?(f(),_("div",Ps,[(f(!0),_(I,null,O(o.params,y=>(f(),h(n,{key:y.key,label:y.label,style:{"margin-bottom":"6px"}},{default:i(()=>[y.type==="password"?(f(),h(a,{key:0,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A,type:"password","show-password":"",placeholder:y.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):y.type==="switch"?(f(),h(w,{key:1,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A},null,8,["modelValue","onUpdate:modelValue"])):y.type==="number"?(f(),h(M,{key:2,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A,min:1,max:10,style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"])):(f(),h(a,{key:3,modelValue:m.channels[c][y.key],"onUpdate:modelValue":A=>m.channels[c][y.key]=A,placeholder:y.placeholder||"",style:{"max-width":"360px"}},null,8,["modelValue","onUpdate:modelValue","placeholder"]))]),_:2},1032,["label"]))),128))])):q("",!0)]))),128))]),s(B,{"content-position":"left"},{default:i(()=>[...e[120]||(e[120]=[d("全局事件开关",-1)])]),_:1}),l("div",zs,[s(w,{modelValue:m.events.on_save_success,"onUpdate:modelValue":e[29]||(e[29]=o=>m.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_save_fail,"onUpdate:modelValue":e[30]||(e[30]=o=>m.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cookie_expire,"onUpdate:modelValue":e[31]||(e[31]=o=>m.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:m.events.on_cleanup,"onUpdate:modelValue":e[32]||(e[32]=o=>m.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"])]),e[122]||(e[122]=l("div",{class:"form-tip",style:{"margin-top":"8px"}},"全局推送作为兜底通道。设置了推送用户的网盘配置走用户推送,未设置的走全局推送。",-1)),s(B,{"content-position":"left"},{default:i(()=>[...e[121]||(e[121]=[d("自定义消息模板",-1)])]),_:1}),e[123]||(e[123]=l("div",{class:"form-tip",style:{"margin-bottom":"12px"}},[d("可用变量:"),l("code",null,"{'{cloud_type}'}"),d(),l("code",null,"{'{nickname}'}"),d(),l("code",null,"{'{file_name}'}"),d(),l("code",null,"{'{file_size}'}"),d(),l("code",null,"{'{duration}'}"),d(),l("code",null,"{'{share_url}'}"),d(),l("code",null,"{'{fail_count}'}"),d(),l("code",null,"{'{error_message}'}")],-1)),(f(!0),_(I,null,O(m.eventTemplates,(o,c)=>(f(),_("div",{key:c,style:{border:"1px solid var(--el-border-color-light)","border-radius":"6px",padding:"10px 14px","margin-bottom":"10px"}},[l("div",Ts,[s(j,{size:"small",type:m.events[c]?"success":"info"},{default:i(()=>[d(b(c==="on_save_success"?"转存成功":c==="on_save_fail"?"转存失败":c==="on_cookie_expire"?"Cookie过期":"清理完成"),1)]),_:2},1032,["type"]),s(w,{modelValue:m.events[c],"onUpdate:modelValue":y=>m.events[c]=y,size:"small"},null,8,["modelValue","onUpdate:modelValue"])]),s(n,{label:"标题",style:{"margin-bottom":"6px"}},{default:i(()=>[s(a,{modelValue:o.title,"onUpdate:modelValue":y=>o.title=y,placeholder:"消息标题,支持变量",style:{"max-width":"500px"}},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(n,{label:"内容",style:{"margin-bottom":"0"}},{default:i(()=>[s(a,{modelValue:o.content,"onUpdate:modelValue":y=>o.content=y,type:"textarea",rows:3,placeholder:"消息内容,支持变量和 Markdown",style:{"max-width":"500px"}},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]))),128))]),_:1})])]),_:1})]),_:1}),e[133]||(e[133]=d()),s(B,{"content-position":"left"},{default:i(()=>[...e[124]||(e[124]=[d("添加推送用户",-1)])]),_:1}),l("div",js,[l("div",Is,[s(Ne,{modelValue:v.account,"onUpdate:modelValue":e[33]||(e[33]=o=>v.account=o),filterable:"","allow-create":"",clearable:"",placeholder:"选择推广账户",style:{width:"200px"}},{default:i(()=>[(f(!0),_(I,null,O(Te.value,o=>(f(),h(Le,{key:o,label:o,value:o},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(Ne,{modelValue:v.channels,"onUpdate:modelValue":e[34]||(e[34]=o=>v.channels=o),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择您所需的消息频道",style:{width:"260px"}},{default:i(()=>[(f(!0),_(I,null,O(ll.value,(o,c)=>(f(),h(Le,{key:c,label:o.label,value:c},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),s(w,{modelValue:v.events.on_save_success,"onUpdate:modelValue":e[35]||(e[35]=o=>v.events.on_save_success=o),"active-text":"转存成功"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_save_fail,"onUpdate:modelValue":e[36]||(e[36]=o=>v.events.on_save_fail=o),"active-text":"转存失败"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cookie_expire,"onUpdate:modelValue":e[37]||(e[37]=o=>v.events.on_cookie_expire=o),"active-text":"Cookie过期"},null,8,["modelValue"]),s(w,{modelValue:v.events.on_cleanup,"onUpdate:modelValue":e[38]||(e[38]=o=>v.events.on_cleanup=o),"active-text":"清理完成"},null,8,["modelValue"]),s(p,{type:"primary",size:"small",loading:ge.value,onClick:al},{default:i(()=>[d(b(v.id?"更新":"确认添加"),1)]),_:1},8,["loading"]),v.id?(f(),h(p,{key:0,size:"small",onClick:sl},{default:i(()=>[...e[125]||(e[125]=[d("取消编辑",-1)])]),_:1})):q("",!0)])]),s(B,{"content-position":"left"},{default:i(()=>[...e[126]||(e[126]=[d("推送用户列表",-1)])]),_:1}),s(Nl,{data:ze.value,stripe:"",style:{width:"100%"},"empty-text":"暂无推送用户"},{default:i(()=>[s(G,{prop:"account",label:"推广账号","min-width":"140"}),s(G,{label:"转存成功",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_success")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[127]||(e[127]=[d("✔",-1)])]),_:1})):(f(),_("span",Os,"—"))]),_:1}),s(G,{label:"转存失败",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_save_fail")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[128]||(e[128]=[d("✔",-1)])]),_:1})):(f(),_("span",As,"—"))]),_:1}),s(G,{label:"Cookie过期",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cookie_expire")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[129]||(e[129]=[d("✔",-1)])]),_:1})):(f(),_("span",Rs,"—"))]),_:1}),s(G,{label:"清理完成",width:"90",align:"center"},{default:i(({row:o})=>[re(o,"on_cleanup")?(f(),h(j,{key:0,type:"success",size:"small"},{default:i(()=>[...e[130]||(e[130]=[d("✔",-1)])]),_:1})):(f(),_("span",Bs,"—"))]),_:1}),s(G,{label:"已启用的通道","min-width":"220"},{default:i(({row:o})=>[(f(!0),_(I,null,O(je(o),(c,y)=>(f(),h(j,{key:y,size:"small",style:{"margin-right":"4px","margin-bottom":"2px"}},{default:i(()=>[d(b(il(y)),1)]),_:2},1024))),128)),dl(o)?q("",!0):(f(),_("span",$s,"走全局推送"))]),_:1}),s(G,{label:"操作",width:"180",fixed:"right"},{default:i(({row:o})=>[s(p,{text:"",type:"primary",size:"small",onClick:c=>tl(o)},{default:i(()=>[...e[131]||(e[131]=[d("编辑",-1)])]),_:1},8,["onClick"]),s(Ll,{title:"确定删除该推送用户?",onConfirm:c=>nl(o)},{reference:i(()=>[s(p,{text:"",type:"danger",size:"small"},{default:i(()=>[...e[132]||(e[132]=[d("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])]),_:1},512),[[K,!C.value||C.value==="sys-notify"]]),W(s(T,{id:"section-sys-daily-report"},{header:i(()=>[l("div",Es,[e[136]||(e[136]=l("span",null,"📊 每日汇报",-1)),l("div",null,[s(p,{size:"small",loading:ve.value,onClick:Xe},{default:i(()=>[...e[134]||(e[134]=[d("📋 预览",-1)])]),_:1},8,["loading"]),s(p,{size:"small",type:"primary",loading:ye.value,onClick:Ze},{default:i(()=>[...e[135]||(e[135]=[d("▶ 发送测试",-1)])]),_:1},8,["loading"])])])]),default:i(()=>[s(k,{"label-width":"140px","label-position":"left"},{default:i(()=>[s(n,{label:"启用每日汇报"},{default:i(()=>[s(w,{modelValue:S.enabled,"onUpdate:modelValue":e[39]||(e[39]=o=>S.enabled=o),"active-text":"每天8点自动发送"},null,8,["modelValue"])]),_:1}),s(n,{label:"发送时间"},{default:i(()=>[s(Fl,{modelValue:S.time,"onUpdate:modelValue":e[40]||(e[40]=o=>S.time=o),format:"HH:mm","value-format":"HH:mm",placeholder:"选择时间",disabled:!S.enabled},null,8,["modelValue","disabled"]),e[137]||(e[137]=l("div",{class:"form-tip"},"默认每天 08:00 发送前一天的汇总报告",-1))]),_:1}),s(n,{label:"报告内容"},{default:i(()=>[l("div",Ls,[s(w,{modelValue:S.includeSearch,"onUpdate:modelValue":e[41]||(e[41]=o=>S.includeSearch=o),"active-text":"搜索统计",disabled:!S.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:S.includeSaves,"onUpdate:modelValue":e[42]||(e[42]=o=>S.includeSaves=o),"active-text":"转存统计",disabled:!S.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:S.includeStorage,"onUpdate:modelValue":e[43]||(e[43]=o=>S.includeStorage=o),"active-text":"网盘容量",disabled:!S.enabled},null,8,["modelValue","disabled"]),s(w,{modelValue:S.includeUsers,"onUpdate:modelValue":e[44]||(e[44]=o=>S.includeUsers=o),"active-text":"用户数",disabled:!S.enabled},null,8,["modelValue","disabled"])])]),_:1}),s(n,{label:"上次发送"},{default:i(()=>[l("span",null,b(Pe.value||"从未发送"),1)]),_:1})]),_:1}),s(Dl,{modelValue:_e.value,"onUpdate:modelValue":e[45]||(e[45]=o=>_e.value=o),title:"📊 每日汇报预览",width:"600px"},{default:i(()=>[l("div",Ns,b(Ce.value),1)]),_:1},8,["modelValue"])]),_:1},512),[[K,!C.value||C.value==="sys-daily-report"]]),W(s(T,{id:"section-sys-maintenance"},{header:i(()=>[...e[138]||(e[138]=[l("span",null,"🔄 系统维护",-1)])]),default:i(()=>[e[143]||(e[143]=d()),s(k,{"label-width":"180px","label-position":"left"},{default:i(()=>[s(n,{label:"自动更新镜像"},{default:i(()=>[s(w,{modelValue:Ue.value,"onUpdate:modelValue":e[46]||(e[46]=o=>Ue.value=o),"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"]),e[139]||(e[139]=d()),e[140]||(e[140]=l("div",{class:"form-tip"},"启用后 CloudSearch 将自动检测并更新到最新镜像版本",-1)),e[141]||(e[141]=d()),e[142]||(e[142]=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),[[K,!C.value||C.value==="sys-maintenance"]]),l("div",Fs,[s(p,{type:"primary",size:"large",loading:fe.value,onClick:jl},{default:i(()=>[...e[144]||(e[144]=[d(" 保存配置 ",-1)])]),_:1},8,["loading"])])])}}}),Ks=ot(Ds,[["__scopeId","data-v-a858d91e"]]);export{Ks as default}; diff --git a/source_clean/frontend/assets/index-NatHwx8Z.js b/source_clean/frontend/assets/index-Cl0LRM77.js similarity index 99% rename from source_clean/frontend/assets/index-NatHwx8Z.js rename to source_clean/frontend/assets/index-Cl0LRM77.js index dc0ba22..5faf2be 100644 --- a/source_clean/frontend/assets/index-NatHwx8Z.js +++ b/source_clean/frontend/assets/index-Cl0LRM77.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomePage-PHccTGnQ.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-BmKs8gEH.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-ChuuoSxg.js","assets/CloudBadge-CFunKPHf.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-UW0IM39Z.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-BiUZl96Q.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-C2704iLs.js","assets/CloudConfig-B1Oal8Ih.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-6T6IuZsX.js","assets/SystemConfig-C8bSCuHg.css","assets/SaveRecords-BVhLgZy2.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-CjqZVDp7.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-Cmk4L4mz.js","assets/_plugin-vue_export-helper-1Z-znrfZ.js","assets/HomePage-BHaWaDn9.css","assets/SearchResult-DwhKkE6n.js","assets/index-Bn7NwETH.js","assets/SearchResult-B_gCJbmx.css","assets/ResultDetail-DkGRh6Pd.js","assets/CloudBadge-CBMiQcXc.js","assets/CloudBadge-B7b7xKko.css","assets/ResultDetail-CVwsv2ff.css","assets/AdminLogin-NwlTbWPe.js","assets/AdminLogin-DFflDgjp.css","assets/AdminLayout-CmowWzFU.js","assets/AdminLayout-B6uCwql2.css","assets/AdminDashboard-CevUjDG-.js","assets/CloudConfig-BjpiSn71.js","assets/CloudConfig-BEjvFHzE.css","assets/SystemConfig-DFW9m6V4.js","assets/SystemConfig-CG32Xbld.css","assets/SaveRecords-CYbt4Kzt.js","assets/SaveRecords-C2kQYC3g.css","assets/AdminDashboard-BIBkHVvW.css","assets/Cleanup-6oJdngfa.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-PHccTGnQ.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-BmKs8gEH.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-ChuuoSxg.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-UW0IM39Z.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-BiUZl96Q.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-C2704iLs.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-B1Oal8Ih.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-CjqZVDp7.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-6T6IuZsX.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-BVhLgZy2.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-Cmk4L4mz.js"),__vite__mapDeps([0,1,2]))},{path:"/search",name:"search",component:()=>io(()=>import("./SearchResult-DwhKkE6n.js"),__vite__mapDeps([3,4,1,5]))},{path:"/result/:id",name:"result-detail",component:()=>io(()=>import("./ResultDetail-DkGRh6Pd.js"),__vite__mapDeps([6,7,4,1,8,9]))},{path:"/admin/login",name:"admin-login",component:()=>io(()=>import("./AdminLogin-NwlTbWPe.js"),__vite__mapDeps([10,1,11]))},{path:"/admin",component:()=>io(()=>import("./AdminLayout-CmowWzFU.js"),__vite__mapDeps([12,1,13])),meta:{requiresAuth:!0},children:[{path:"",redirect:"/admin/dashboard"},{path:"dashboard",name:"admin-dashboard",component:()=>io(()=>import("./AdminDashboard-CevUjDG-.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-BjpiSn71.js"),__vite__mapDeps([15,4,1,7,8,16]))},{path:"cleanup",name:"admin-cleanup",component:()=>io(()=>import("./Cleanup-6oJdngfa.js"),__vite__mapDeps([22,1,23]))},{path:"system",name:"admin-system",component:()=>io(()=>import("./SystemConfig-DFW9m6V4.js"),__vite__mapDeps([17,1,18]))},{path:"save-records",name:"admin-save-records",component:()=>io(()=>import("./SaveRecords-CYbt4Kzt.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 5fa7f8b..e1e7f2f 100644 --- a/source_clean/frontend/index.html +++ b/source_clean/frontend/index.html @@ -21,7 +21,7 @@ } })(); - +