feat: 完成 Passkey 能力与前后台加载优化

更新说明:\n1. 新增用户端与管理员端 Passkey 登录/注册/设备管理(最多3台,支持设备备注、删除设备)。\n2. 修复 Passkey 注册与登录流程中的浏览器/证书/CSRF相关问题,增强错误提示。\n3. 前台登录页改为独立入口,首屏仅加载必要资源,其他页面按需加载。\n4. 系统配置页改为静默获取金山文档状态,避免首屏阻塞,并优化状态展示为“检测中/已登录/未登录/异常”。\n5. 补充后端接口与页面渲染适配,修复多入口下样式依赖注入问题。\n6. 同步更新前后台构建产物与相关静态资源。
This commit is contained in:
2026-02-15 23:51:12 +08:00
parent ebfac7266b
commit 7007f5f6f5
129 changed files with 3747 additions and 432 deletions

View File

@@ -1,6 +1,6 @@
{
"_MetricGrid-Dsqo4YZI.js": {
"file": "assets/MetricGrid-Dsqo4YZI.js",
"_MetricGrid-R-_JZS_i.js": {
"file": "assets/MetricGrid-R-_JZS_i.js",
"name": "MetricGrid",
"imports": [
"index.html",
@@ -14,29 +14,29 @@
"file": "assets/MetricGrid-yP_dkP6X.css",
"src": "_MetricGrid-yP_dkP6X.css"
},
"_email--WygXDwI.js": {
"file": "assets/email--WygXDwI.js",
"_email-DX46gPSl.js": {
"file": "assets/email-DX46gPSl.js",
"name": "email",
"imports": [
"index.html"
]
},
"_system-CAzjuaad.js": {
"file": "assets/system-CAzjuaad.js",
"_system-CeJP0y2Z.js": {
"file": "assets/system-CeJP0y2Z.js",
"name": "system",
"imports": [
"index.html"
]
},
"_tasks-OWsi7T-E.js": {
"file": "assets/tasks-OWsi7T-E.js",
"_tasks-DaPM55hg.js": {
"file": "assets/tasks-DaPM55hg.js",
"name": "tasks",
"imports": [
"index.html"
]
},
"_users-BZkLUJZL.js": {
"file": "assets/users-BZkLUJZL.js",
"_users-DoPbHko8.js": {
"file": "assets/users-DoPbHko8.js",
"name": "users",
"imports": [
"index.html"
@@ -73,7 +73,7 @@
"name": "vendor-vue"
},
"index.html": {
"file": "assets/index-BsqM_wut.js",
"file": "assets/index-BMIn4N2u.js",
"name": "index",
"src": "index.html",
"isEntry": true,
@@ -99,7 +99,7 @@
]
},
"src/pages/AnnouncementsPage.vue": {
"file": "assets/AnnouncementsPage-PdPHO5Q2.js",
"file": "assets/AnnouncementsPage-BY4ToZ0K.js",
"name": "AnnouncementsPage",
"src": "src/pages/AnnouncementsPage.vue",
"isDynamicEntry": true,
@@ -115,14 +115,14 @@
]
},
"src/pages/EmailPage.vue": {
"file": "assets/EmailPage-yqRvXEJ2.js",
"file": "assets/EmailPage-DLwV2mnS.js",
"name": "EmailPage",
"src": "src/pages/EmailPage.vue",
"isDynamicEntry": true,
"imports": [
"_email--WygXDwI.js",
"_email-DX46gPSl.js",
"index.html",
"_MetricGrid-Dsqo4YZI.js",
"_MetricGrid-R-_JZS_i.js",
"_vendor-element-B5S5pUKo.js",
"_vendor-vue-CVxSw_oJ.js",
"_vendor-axios-B9ygI19o.js",
@@ -133,13 +133,13 @@
]
},
"src/pages/FeedbacksPage.vue": {
"file": "assets/FeedbacksPage-9Z4ULgo9.js",
"file": "assets/FeedbacksPage-BgrVN8tx.js",
"name": "FeedbacksPage",
"src": "src/pages/FeedbacksPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html",
"_MetricGrid-Dsqo4YZI.js",
"_MetricGrid-R-_JZS_i.js",
"_vendor-element-B5S5pUKo.js",
"_vendor-vue-CVxSw_oJ.js",
"_vendor-axios-B9ygI19o.js",
@@ -150,13 +150,13 @@
]
},
"src/pages/LogsPage.vue": {
"file": "assets/LogsPage-MDq3eoIe.js",
"file": "assets/LogsPage-D86va6oN.js",
"name": "LogsPage",
"src": "src/pages/LogsPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-BZkLUJZL.js",
"_tasks-OWsi7T-E.js",
"_users-DoPbHko8.js",
"_tasks-DaPM55hg.js",
"index.html",
"_vendor-element-B5S5pUKo.js",
"_vendor-vue-CVxSw_oJ.js",
@@ -168,17 +168,17 @@
]
},
"src/pages/ReportPage.vue": {
"file": "assets/ReportPage-ycVtg2rZ.js",
"file": "assets/ReportPage-T1JNMZd3.js",
"name": "ReportPage",
"src": "src/pages/ReportPage.vue",
"isDynamicEntry": true,
"imports": [
"_vendor-element-B5S5pUKo.js",
"index.html",
"_email--WygXDwI.js",
"_tasks-OWsi7T-E.js",
"_system-CAzjuaad.js",
"_MetricGrid-Dsqo4YZI.js",
"_email-DX46gPSl.js",
"_tasks-DaPM55hg.js",
"_system-CeJP0y2Z.js",
"_MetricGrid-R-_JZS_i.js",
"_vendor-vue-CVxSw_oJ.js",
"_vendor-misc-BeoNyvBp.js",
"_vendor-axios-B9ygI19o.js"
@@ -188,13 +188,13 @@
]
},
"src/pages/SecurityPage.vue": {
"file": "assets/SecurityPage-CXcU2SbL.js",
"file": "assets/SecurityPage-BtFrxpZs.js",
"name": "SecurityPage",
"src": "src/pages/SecurityPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html",
"_MetricGrid-Dsqo4YZI.js",
"_MetricGrid-R-_JZS_i.js",
"_vendor-element-B5S5pUKo.js",
"_vendor-vue-CVxSw_oJ.js",
"_vendor-axios-B9ygI19o.js",
@@ -205,7 +205,7 @@
]
},
"src/pages/SettingsPage.vue": {
"file": "assets/SettingsPage-CUZAbAFF.js",
"file": "assets/SettingsPage-BFVngq9z.js",
"name": "SettingsPage",
"src": "src/pages/SettingsPage.vue",
"isDynamicEntry": true,
@@ -217,16 +217,16 @@
"_vendor-misc-BeoNyvBp.js"
],
"css": [
"assets/SettingsPage-NWcEVLn7.css"
"assets/SettingsPage-qQfORNZC.css"
]
},
"src/pages/SystemPage.vue": {
"file": "assets/SystemPage-B2BrKkTP.js",
"file": "assets/SystemPage-eaCcaVxM.js",
"name": "SystemPage",
"src": "src/pages/SystemPage.vue",
"isDynamicEntry": true,
"imports": [
"_system-CAzjuaad.js",
"_system-CeJP0y2Z.js",
"index.html",
"_vendor-element-B5S5pUKo.js",
"_vendor-vue-CVxSw_oJ.js",
@@ -234,16 +234,16 @@
"_vendor-misc-BeoNyvBp.js"
],
"css": [
"assets/SystemPage-DYBocGi2.css"
"assets/SystemPage-CfMGkvmW.css"
]
},
"src/pages/UsersPage.vue": {
"file": "assets/UsersPage-yptpHEoN.js",
"file": "assets/UsersPage-o8CptFMp.js",
"name": "UsersPage",
"src": "src/pages/UsersPage.vue",
"isDynamicEntry": true,
"imports": [
"_users-BZkLUJZL.js",
"_users-DoPbHko8.js",
"index.html",
"_vendor-element-B5S5pUKo.js",
"_vendor-vue-CVxSw_oJ.js",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{_}from"./index-BsqM_wut.js";import{aj as c,n as s,q as t,K as r,a3 as u,y as p,t as o,G as l,L as y,E as h,D as i,H as v,J as n,I as k,x as f}from"./vendor-vue-CVxSw_oJ.js";const b={class:"metric-top"},x={key:0,class:"metric-icon"},g={class:"metric-label"},B={class:"metric-value"},C={key:0,class:"metric-hint app-muted"},N={__name:"MetricGrid",props:{items:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},minWidth:{type:Number,default:180}},setup(a){return(V,D)=>{const d=c("el-icon"),m=c("el-skeleton");return t(),s("div",{class:"metric-grid",style:f({"--metric-min":`${a.minWidth}px`})},[(t(!0),s(r,null,u(a.items,e=>(t(),s("div",{key:e?.key||e?.label,class:p(["metric-card",`metric-tone--${e?.tone||"blue"}`])},[o("div",b,[e?.icon?(t(),s("div",x,[y(d,null,{default:h(()=>[(t(),i(v(e.icon)))]),_:2},1024)])):l("",!0),o("div",g,n(e?.label||"-"),1)]),o("div",B,[a.loading?(t(),i(m,{key:0,rows:1,animated:""})):(t(),s(r,{key:1},[k(n(e?.value??0),1)],64))]),e?.hint||e?.sub?(t(),s("div",C,n(e?.hint||e?.sub),1)):l("",!0)],2))),128))],4)}}},w=_(N,[["__scopeId","data-v-00e217d4"]]);export{w as M};
import{_}from"./index-BMIn4N2u.js";import{aj as c,n as s,q as t,K as r,a3 as u,y as p,t as o,G as l,L as y,E as h,D as i,H as v,J as n,I as k,x as f}from"./vendor-vue-CVxSw_oJ.js";const b={class:"metric-top"},x={key:0,class:"metric-icon"},g={class:"metric-label"},B={class:"metric-value"},C={key:0,class:"metric-hint app-muted"},N={__name:"MetricGrid",props:{items:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1},minWidth:{type:Number,default:180}},setup(a){return(V,D)=>{const d=c("el-icon"),m=c("el-skeleton");return t(),s("div",{class:"metric-grid",style:f({"--metric-min":`${a.minWidth}px`})},[(t(!0),s(r,null,u(a.items,e=>(t(),s("div",{key:e?.key||e?.label,class:p(["metric-card",`metric-tone--${e?.tone||"blue"}`])},[o("div",b,[e?.icon?(t(),s("div",x,[y(d,null,{default:h(()=>[(t(),i(v(e.icon)))]),_:2},1024)])):l("",!0),o("div",g,n(e?.label||"-"),1)]),o("div",B,[a.loading?(t(),i(m,{key:0,rows:1,animated:""})):(t(),s(r,{key:1},[k(n(e?.value??0),1)],64))]),e?.hint||e?.sub?(t(),s("div",C,n(e?.hint||e?.sub),1)):l("",!0)],2))),128))],4)}}},w=_(N,[["__scopeId","data-v-00e217d4"]]);export{w as M};

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{a as g,_ as T}from"./index-BsqM_wut.js";import{a as d,E as x}from"./vendor-element-B5S5pUKo.js";import{r as f,aj as w,n as S,q as U,t as m,L as a,E as s,I as P}from"./vendor-vue-CVxSw_oJ.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-BeoNyvBp.js";async function E(n){const{data:o}=await g.put("/admin/username",{new_username:n});return o}async function C(n={}){const o=String(n.currentPassword||""),i=String(n.newPassword||""),{data:c}=await g.put("/admin/password",{current_password:o,new_password:i});return c}async function A(){const{data:n}=await g.post("/logout");return n}const N={class:"page-stack"},I={__name:"SettingsPage",setup(n){const o=f(""),i=f(""),c=f(""),v=f(""),t=f(!1);function k(l){const e=String(l||"");return e.length<8?{ok:!1,message:"密码长度至少8位"}:e.length>128?{ok:!1,message:"密码长度不能超过128个字符"}:!/[a-zA-Z]/.test(e)||!/\d/.test(e)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}async function y(){try{await A()}catch{}finally{window.location.href="/yuyx"}}async function B(){const l=o.value.trim();if(!l){d.error("请输入新用户名");return}try{await x.confirm(`确定将管理员用户名修改为「${l}」吗?修改后需要重新登录。`,"修改用户名",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}t.value=!0;try{await E(l),d.success("用户名修改成功,请重新登录"),o.value="",setTimeout(y,1200)}catch{}finally{t.value=!1}}async function h(){const l=i.value,e=c.value,p=v.value;if(!l){d.error("请输入当前密码");return}if(!e){d.error("请输入新密码");return}const r=k(e);if(!r.ok){d.error(r.message);return}if(e!==p){d.error("两次输入的新密码不一致");return}try{await x.confirm("确定修改管理员密码吗?修改后需要重新登录。","修改密码",{confirmButtonText:"确认修改",cancelButtonText:"取消",type:"warning"})}catch{return}t.value=!0;try{await C({currentPassword:l,newPassword:e}),d.success("密码修改成功,请重新登录"),i.value="",c.value="",v.value="",setTimeout(y,1200)}catch{}finally{t.value=!1}}return(l,e)=>{const p=w("el-input"),r=w("el-form-item"),_=w("el-form"),b=w("el-button"),V=w("el-card");return U(),S("div",N,[e[9]||(e[9]=m("div",{class:"app-page-title"},[m("h2",null,"设置"),m("span",{class:"app-muted"},"管理员账号设置")],-1)),a(V,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[e[5]||(e[5]=m("h3",{class:"section-title"},"修改管理员用户名",-1)),a(_,{"label-width":"120px"},{default:s(()=>[a(r,{label:"新用户名"},{default:s(()=>[a(p,{modelValue:o.value,"onUpdate:modelValue":e[0]||(e[0]=u=>o.value=u),placeholder:"输入新用户名",disabled:t.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),a(b,{type:"primary",loading:t.value,onClick:B},{default:s(()=>[...e[4]||(e[4]=[P("保存用户名",-1)])]),_:1},8,["loading"])]),_:1}),a(V,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:s(()=>[e[7]||(e[7]=m("h3",{class:"section-title"},"修改管理员密码",-1)),a(_,{"label-width":"120px"},{default:s(()=>[a(r,{label:"当前密码"},{default:s(()=>[a(p,{modelValue:i.value,"onUpdate:modelValue":e[1]||(e[1]=u=>i.value=u),type:"password","show-password":"",placeholder:"输入当前密码",disabled:t.value},null,8,["modelValue","disabled"])]),_:1}),a(r,{label:"新密码"},{default:s(()=>[a(p,{modelValue:c.value,"onUpdate:modelValue":e[2]||(e[2]=u=>c.value=u),type:"password","show-password":"",placeholder:"输入新密码",disabled:t.value},null,8,["modelValue","disabled"])]),_:1}),a(r,{label:"确认新密码"},{default:s(()=>[a(p,{modelValue:v.value,"onUpdate:modelValue":e[3]||(e[3]=u=>v.value=u),type:"password","show-password":"",placeholder:"再次输入新密码",disabled:t.value},null,8,["modelValue","disabled"])]),_:1})]),_:1}),a(b,{type:"primary",loading:t.value,onClick:h},{default:s(()=>[...e[6]||(e[6]=[P("保存密码",-1)])]),_:1},8,["loading"]),e[8]||(e[8]=m("div",{class:"help"},"建议使用更强密码至少8位且包含字母与数字。",-1))]),_:1})])}}},Z=T(I,[["__scopeId","data-v-be652d2b"]]);export{Z as default};

View File

@@ -1 +0,0 @@
.page-stack[data-v-be652d2b]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-be652d2b]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-be652d2b]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-be652d2b]{margin-top:10px;font-size:12px;color:var(--app-muted)}

View File

@@ -0,0 +1 @@
.page-stack[data-v-bb93be75]{display:flex;flex-direction:column;gap:14px;min-width:0}.card[data-v-bb93be75]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-title[data-v-bb93be75]{margin:0 0 12px;font-size:15px;font-weight:800;letter-spacing:.2px}.help[data-v-bb93be75]{margin-top:10px;font-size:12px;color:var(--app-muted)}.help-alert[data-v-bb93be75]{margin-bottom:12px}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.page-stack[data-v-cef111cd]{display:flex;flex-direction:column;gap:14px;min-width:0}.config-grid[data-v-cef111cd]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.card[data-v-cef111cd]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-card[data-v-cef111cd]{min-width:0}.section-title[data-v-cef111cd]{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.section-sub[data-v-cef111cd]{margin-top:6px;margin-bottom:10px;font-size:12px}.section-head[data-v-cef111cd]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.status-inline[data-v-cef111cd]{font-size:12px;display:inline-flex;align-items:center;gap:6px}.status-chip[data-v-cef111cd]{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid transparent}.status-chip.is-checking[data-v-cef111cd]{color:#1d4ed8;background:#dbeafe;border-color:#93c5fd}.status-chip.is-online[data-v-cef111cd]{color:#065f46;background:#d1fae5;border-color:#6ee7b7}.status-chip.is-offline[data-v-cef111cd]{color:#92400e;background:#fef3c7;border-color:#fcd34d}.status-chip.is-error[data-v-cef111cd]{color:#991b1b;background:#fee2e2;border-color:#fca5a5}.status-chip.is-unknown[data-v-cef111cd]{color:#374151;background:#f3f4f6;border-color:#d1d5db}.status-dots[data-v-cef111cd]{display:inline-flex;align-items:center;gap:3px;margin-left:3px}.status-dots i[data-v-cef111cd]{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.25;animation:dotPulse-cef111cd 1.2s infinite ease-in-out}.status-dots i[data-v-cef111cd]:nth-child(2){animation-delay:.2s}.status-dots i[data-v-cef111cd]:nth-child(3){animation-delay:.4s}@keyframes dotPulse-cef111cd{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-1px)}}.kdocs-form[data-v-cef111cd]{margin-top:6px}.kdocs-inline[data-v-cef111cd]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}.kdocs-range[data-v-cef111cd]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kdocs-qr[data-v-cef111cd]{display:flex;flex-direction:column;align-items:center;gap:12px}.kdocs-qr img[data-v-cef111cd]{width:260px;max-width:100%;border:1px solid var(--app-border);border-radius:8px;padding:8px;background:#fff}.help[data-v-cef111cd]{margin-top:6px;font-size:12px;color:var(--app-muted)}.row-actions[data-v-cef111cd]{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:1200px){.config-grid[data-v-cef111cd]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.config-grid[data-v-cef111cd],.kdocs-inline[data-v-cef111cd]{grid-template-columns:1fr}.kdocs-range[data-v-cef111cd]{align-items:stretch}}

View File

@@ -1 +0,0 @@
.page-stack[data-v-a5c40f1a]{display:flex;flex-direction:column;gap:14px;min-width:0}.config-grid[data-v-a5c40f1a]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.card[data-v-a5c40f1a]{border-radius:var(--app-radius);border:1px solid var(--app-border);background:var(--app-card-bg);box-shadow:var(--app-shadow-soft)}.section-card[data-v-a5c40f1a]{min-width:0}.section-title[data-v-a5c40f1a]{margin:0;font-size:15px;font-weight:800;letter-spacing:.2px}.section-sub[data-v-a5c40f1a]{margin-top:6px;margin-bottom:10px;font-size:12px}.section-head[data-v-a5c40f1a]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}.status-inline[data-v-a5c40f1a]{font-size:12px}.kdocs-form[data-v-a5c40f1a]{margin-top:6px}.kdocs-inline[data-v-a5c40f1a]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}.kdocs-range[data-v-a5c40f1a]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kdocs-qr[data-v-a5c40f1a]{display:flex;flex-direction:column;align-items:center;gap:12px}.kdocs-qr img[data-v-a5c40f1a]{width:260px;max-width:100%;border:1px solid var(--app-border);border-radius:8px;padding:8px;background:#fff}.help[data-v-a5c40f1a]{margin-top:6px;font-size:12px;color:var(--app-muted)}.row-actions[data-v-a5c40f1a]{display:flex;flex-wrap:wrap;gap:10px}@media(max-width:1200px){.config-grid[data-v-a5c40f1a]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.config-grid[data-v-a5c40f1a],.kdocs-inline[data-v-a5c40f1a]{grid-template-columns:1fr}.kdocs-range[data-v-a5c40f1a]{align-items:stretch}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{c as s,a as e}from"./index-BsqM_wut.js";const n=s(async()=>{const{data:a}=await e.get("/email/stats");return a},1e4);async function i(){const{data:a}=await e.get("/email/settings");return a}async function r(a){const{data:t}=await e.post("/email/settings",a);return n.clear(),t}async function o(a={}){return n.run(a)}async function l(a){const{data:t}=await e.get("/email/logs",{params:a});return t}async function u(a){const{data:t}=await e.post("/email/logs/cleanup",{days:a});return n.clear(),t}export{l as a,i as b,u as c,o as f,r as u};
import{c as s,a as e}from"./index-BMIn4N2u.js";const n=s(async()=>{const{data:a}=await e.get("/email/stats");return a},1e4);async function i(){const{data:a}=await e.get("/email/settings");return a}async function r(a){const{data:t}=await e.post("/email/settings",a);return n.clear(),t}async function o(a={}){return n.run(a)}async function l(a){const{data:t}=await e.get("/email/logs",{params:a});return t}async function u(a){const{data:t}=await e.post("/email/logs/cleanup",{days:a});return n.clear(),t}export{l as a,i as b,u as c,o as f,r as u};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
import{c as s,a}from"./index-BsqM_wut.js";const e=s(async()=>{const{data:t}=await a.get("/system/config");return t},15e3);async function o(t={}){return e.run(t)}async function r(t){const{data:n}=await a.post("/system/config",t);return e.clear(),n}export{o as f,r as u};
import{c as s,a}from"./index-BMIn4N2u.js";const e=s(async()=>{const{data:t}=await a.get("/system/config");return t},15e3);async function o(t={}){return e.run(t)}async function r(t){const{data:n}=await a.post("/system/config",t);return e.clear(),n}export{o as f,r as u};

View File

@@ -1 +1 @@
import{c as s,a}from"./index-BsqM_wut.js";const c=s(async()=>{const{data:t}=await a.get("/server/info");return t},3e4),o=s(async()=>{const{data:t}=await a.get("/docker_stats");return t},8e3),u=s(async()=>{const{data:t}=await a.get("/request_metrics");return t},1e4),i=s(async()=>{const{data:t}=await a.get("/slow_sql_metrics");return t},1e4),e=s(async()=>{const{data:t}=await a.get("/task/stats");return t},4e3),r=s(async()=>{const{data:t}=await a.get("/task/running");return t},2e3);async function g(t={}){return c.run(t)}async function y(t={}){return o.run(t)}async function d(t={}){return u.run(t)}async function k(t={}){return i.run(t)}async function l(t={}){return e.run(t)}async function w(t={}){return r.run(t)}async function _(t){const{data:n}=await a.get("/task/logs",{params:t});return n}async function h(t){const{data:n}=await a.post("/task/logs/clear",{days:t});return e.clear(),r.clear(),n}export{w as a,g as b,y as c,d,k as e,l as f,_ as g,h};
import{c as s,a}from"./index-BMIn4N2u.js";const c=s(async()=>{const{data:t}=await a.get("/server/info");return t},3e4),o=s(async()=>{const{data:t}=await a.get("/docker_stats");return t},8e3),u=s(async()=>{const{data:t}=await a.get("/request_metrics");return t},1e4),i=s(async()=>{const{data:t}=await a.get("/slow_sql_metrics");return t},1e4),e=s(async()=>{const{data:t}=await a.get("/task/stats");return t},4e3),r=s(async()=>{const{data:t}=await a.get("/task/running");return t},2e3);async function g(t={}){return c.run(t)}async function y(t={}){return o.run(t)}async function d(t={}){return u.run(t)}async function k(t={}){return i.run(t)}async function l(t={}){return e.run(t)}async function w(t={}){return r.run(t)}async function _(t){const{data:n}=await a.get("/task/logs",{params:t});return n}async function h(t){const{data:n}=await a.post("/task/logs/clear",{days:t});return e.clear(),r.clear(),n}export{w as a,g as b,y as c,d,k as e,l as f,_ as g,h};

View File

@@ -1 +1 @@
import{a as t}from"./index-BsqM_wut.js";async function n(){const{data:s}=await t.get("/users");return s}async function o(s){const{data:a}=await t.post(`/users/${s}/approve`);return a}async function c(s){const{data:a}=await t.post(`/users/${s}/reject`);return a}async function i(s){const{data:a}=await t.delete(`/users/${s}`);return a}async function u(s,a){const{data:e}=await t.post(`/users/${s}/vip`,{days:a});return e}async function p(s){const{data:a}=await t.delete(`/users/${s}/vip`);return a}async function d(s,a){const{data:e}=await t.post(`/users/${s}/reset_password`,{new_password:a});return e}export{o as a,p as b,d as c,i as d,n as f,c as r,u as s};
import{a as t}from"./index-BMIn4N2u.js";async function n(){const{data:s}=await t.get("/users");return s}async function o(s){const{data:a}=await t.post(`/users/${s}/approve`);return a}async function c(s){const{data:a}=await t.post(`/users/${s}/reject`);return a}async function i(s){const{data:a}=await t.delete(`/users/${s}`);return a}async function u(s,a){const{data:e}=await t.post(`/users/${s}/vip`,{days:a});return e}async function p(s){const{data:a}=await t.delete(`/users/${s}/vip`);return a}async function d(s,a){const{data:e}=await t.post(`/users/${s}/reset_password`,{new_password:a});return e}export{o as a,p as b,d as c,i as d,n as f,c as r,u as s};

View File

@@ -5,7 +5,7 @@
<link rel="icon" type="image/svg+xml" href="./vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>后台管理 - 知识管理平台</title>
<script type="module" crossorigin src="./assets/index-BsqM_wut.js"></script>
<script type="module" crossorigin src="./assets/index-BMIn4N2u.js"></script>
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-CVxSw_oJ.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-misc-BeoNyvBp.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-element-B5S5pUKo.js">

View File

@@ -1,195 +1,384 @@
{
"_accounts-BtZQzP7N.js": {
"file": "assets/accounts-BtZQzP7N.js",
"_accounts-3bM7Wy59.js": {
"file": "assets/accounts-3bM7Wy59.js",
"name": "accounts",
"imports": [
"index.html"
"_http-CdvgQxJu.js"
],
"css": [
"assets/accounts-D_6SYB2i.css"
]
},
"_auth-BMPlNhOo.js": {
"file": "assets/auth-BMPlNhOo.js",
"_accounts-D_6SYB2i.css": {
"file": "assets/accounts-D_6SYB2i.css",
"src": "_accounts-D_6SYB2i.css"
},
"_auth-CX9p6ZYg.js": {
"file": "assets/auth-CX9p6ZYg.js",
"name": "auth",
"imports": [
"index.html"
"_http-CdvgQxJu.js"
]
},
"_el-alert-B-NgiIln.css": {
"file": "assets/el-alert-B-NgiIln.css",
"src": "_el-alert-B-NgiIln.css"
},
"_el-alert-DB2IQLpH.js": {
"file": "assets/el-alert-DB2IQLpH.js",
"name": "el-alert",
"imports": [
"_vendor-vue-DxN60LNb.js",
"_el-button-DWxIvzz-.js",
"_http-CdvgQxJu.js"
],
"css": [
"assets/el-alert-B-NgiIln.css"
]
},
"_el-button-DF1Fi_iE.css": {
"file": "assets/el-button-DF1Fi_iE.css",
"src": "_el-button-DF1Fi_iE.css"
},
"_el-button-DWxIvzz-.js": {
"file": "assets/el-button-DWxIvzz-.js",
"name": "el-button",
"imports": [
"_vendor-vue-DxN60LNb.js"
],
"css": [
"assets/el-button-DF1Fi_iE.css"
]
},
"_el-card-BqOrgVp1.css": {
"file": "assets/el-card-BqOrgVp1.css",
"src": "_el-card-BqOrgVp1.css"
},
"_el-card-DfVpO1U5.js": {
"file": "assets/el-card-DfVpO1U5.js",
"name": "el-card",
"imports": [
"_el-button-DWxIvzz-.js",
"_vendor-vue-DxN60LNb.js"
],
"css": [
"assets/el-card-BqOrgVp1.css"
]
},
"_el-overlay-Bd56Lw6C.css": {
"file": "assets/el-overlay-Bd56Lw6C.css",
"src": "_el-overlay-Bd56Lw6C.css"
},
"_el-overlay-C_JJBVfE.js": {
"file": "assets/el-overlay-C_JJBVfE.js",
"name": "el-overlay",
"imports": [
"_el-button-DWxIvzz-.js",
"_http-CdvgQxJu.js",
"_vendor-vue-DxN60LNb.js"
],
"css": [
"assets/el-overlay-Bd56Lw6C.css"
]
},
"_el-pagination-B1FwbX1n.css": {
"file": "assets/el-pagination-B1FwbX1n.css",
"src": "_el-pagination-B1FwbX1n.css"
},
"_el-pagination-BY1uI-wO.js": {
"file": "assets/el-pagination-BY1uI-wO.js",
"name": "el-pagination",
"imports": [
"_el-button-DWxIvzz-.js",
"_vendor-vue-DxN60LNb.js",
"_el-select-B0VMg2td.js",
"_http-CdvgQxJu.js"
],
"css": [
"assets/el-pagination-B1FwbX1n.css"
]
},
"_el-select-B0VMg2td.js": {
"file": "assets/el-select-B0VMg2td.js",
"name": "el-select",
"imports": [
"_vendor-vue-DxN60LNb.js",
"_el-overlay-C_JJBVfE.js",
"_el-button-DWxIvzz-.js",
"_http-CdvgQxJu.js"
],
"css": [
"assets/el-select-D_oyzAZN.css"
]
},
"_el-select-D_oyzAZN.css": {
"file": "assets/el-select-D_oyzAZN.css",
"src": "_el-select-D_oyzAZN.css"
},
"_http-CdvgQxJu.js": {
"file": "assets/http-CdvgQxJu.js",
"name": "http",
"imports": [
"_el-button-DWxIvzz-.js",
"_vendor-vue-DxN60LNb.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/http-D6B3r8CH.css"
]
},
"_http-D6B3r8CH.css": {
"file": "assets/http-D6B3r8CH.css",
"src": "_http-D6B3r8CH.css"
},
"_isArrayLikeObject-BjIRF-cS.js": {
"file": "assets/isArrayLikeObject-BjIRF-cS.js",
"name": "isArrayLikeObject",
"imports": [
"_http-CdvgQxJu.js",
"_el-button-DWxIvzz-.js",
"_el-overlay-C_JJBVfE.js"
]
},
"_password-7ryi82gE.js": {
"file": "assets/password-7ryi82gE.js",
"name": "password"
},
"_settings-Ddo8isuv.js": {
"file": "assets/settings-Ddo8isuv.js",
"name": "settings",
"imports": [
"_http-CdvgQxJu.js"
]
},
"_style-BHGuKLUF.css": {
"file": "assets/style-BHGuKLUF.css",
"src": "_style-BHGuKLUF.css"
},
"_style-CEbARg1o.js": {
"file": "assets/style-CEbARg1o.js",
"name": "style",
"css": [
"assets/style-BHGuKLUF.css"
]
},
"_user-B7bO5p8k.css": {
"file": "assets/user-B7bO5p8k.css",
"src": "_user-B7bO5p8k.css"
},
"_user-Bl59IefW.js": {
"file": "assets/user-Bl59IefW.js",
"name": "user",
"imports": [
"_vendor-vue-DxN60LNb.js",
"_el-button-DWxIvzz-.js",
"_http-CdvgQxJu.js",
"_el-alert-DB2IQLpH.js",
"_el-overlay-C_JJBVfE.js"
],
"css": [
"assets/user-B7bO5p8k.css"
]
},
"_vendor-axios-B9ygI19o.js": {
"file": "assets/vendor-axios-B9ygI19o.js",
"name": "vendor-axios"
},
"_vendor-element-BaI2aKL6.css": {
"file": "assets/vendor-element-BaI2aKL6.css",
"src": "_vendor-element-BaI2aKL6.css"
"_vendor-realtime-CA1CrNgP.js": {
"file": "assets/vendor-realtime-CA1CrNgP.js",
"name": "vendor-realtime"
},
"_vendor-element-D7IaNnTz.js": {
"file": "assets/vendor-element-D7IaNnTz.js",
"name": "vendor-element",
"imports": [
"_vendor-vue-WEaOxmRs.js",
"_vendor-misc-0uE2ETD1.js"
],
"css": [
"assets/vendor-element-BaI2aKL6.css"
]
},
"_vendor-misc-0uE2ETD1.js": {
"file": "assets/vendor-misc-0uE2ETD1.js",
"name": "vendor-misc",
"imports": [
"_vendor-vue-WEaOxmRs.js"
]
},
"_vendor-realtime-DJJ9FPhs.js": {
"file": "assets/vendor-realtime-DJJ9FPhs.js",
"name": "vendor-realtime",
"imports": [
"_vendor-misc-0uE2ETD1.js"
]
},
"_vendor-vue-WEaOxmRs.js": {
"file": "assets/vendor-vue-WEaOxmRs.js",
"_vendor-vue-DxN60LNb.js": {
"file": "assets/vendor-vue-DxN60LNb.js",
"name": "vendor-vue"
},
"index.html": {
"file": "assets/index-mJEiaIbQ.js",
"name": "index",
"file": "assets/app-CZnjzsIN.js",
"name": "app",
"src": "index.html",
"isEntry": true,
"imports": [
"_vendor-vue-WEaOxmRs.js",
"_vendor-element-D7IaNnTz.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_style-CEbARg1o.js",
"_vendor-vue-DxN60LNb.js"
],
"dynamicImports": [
"src/pages/LoginPage.vue",
"src/pages/RegisterPage.vue",
"src/pages/ResetPasswordPage.vue",
"src/pages/VerifyResultPage.vue",
"src/layouts/AppLayout.vue",
"src/pages/AccountsPage.vue",
"src/pages/SchedulesPage.vue",
"src/pages/ScreenshotsPage.vue"
]
},
"login.html": {
"file": "assets/login-BtMsx-ZC.js",
"name": "login",
"src": "login.html",
"isEntry": true,
"imports": [
"_style-CEbARg1o.js",
"_vendor-vue-DxN60LNb.js",
"src/pages/LoginPage.vue"
]
},
"src/layouts/AppLayout.vue": {
"file": "assets/AppLayout-Dx0be4wS.js",
"name": "AppLayout",
"src": "src/layouts/AppLayout.vue",
"isDynamicEntry": true,
"imports": [
"_el-button-DWxIvzz-.js",
"_user-Bl59IefW.js",
"_el-overlay-C_JJBVfE.js",
"_el-alert-DB2IQLpH.js",
"_http-CdvgQxJu.js",
"_vendor-vue-DxN60LNb.js",
"_settings-Ddo8isuv.js",
"_password-7ryi82gE.js",
"_style-CEbARg1o.js",
"_isArrayLikeObject-BjIRF-cS.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/index-BJUdh4ps.css"
"assets/AppLayout-D94213-a.css"
]
},
"src/pages/AccountsPage.vue": {
"file": "assets/AccountsPage-DWpwj4Fi.js",
"file": "assets/AccountsPage-DnOxRP7e.js",
"name": "AccountsPage",
"src": "src/pages/AccountsPage.vue",
"isDynamicEntry": true,
"imports": [
"_accounts-BtZQzP7N.js",
"index.html",
"_vendor-realtime-DJJ9FPhs.js",
"_vendor-element-D7IaNnTz.js",
"_vendor-vue-WEaOxmRs.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_el-button-DWxIvzz-.js",
"_el-overlay-C_JJBVfE.js",
"_el-alert-DB2IQLpH.js",
"_http-CdvgQxJu.js",
"_user-Bl59IefW.js",
"_accounts-3bM7Wy59.js",
"_el-select-B0VMg2td.js",
"_el-card-DfVpO1U5.js",
"_settings-Ddo8isuv.js",
"_vendor-realtime-CA1CrNgP.js",
"_style-CEbARg1o.js",
"_vendor-vue-DxN60LNb.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/AccountsPage-CRlBbogn.css"
"assets/AccountsPage-iiBFNme8.css"
]
},
"src/pages/LoginPage.vue": {
"file": "assets/LoginPage-DECcLiBH.js",
"file": "assets/LoginPage-D5iXLq7p.js",
"name": "LoginPage",
"src": "src/pages/LoginPage.vue",
"isDynamicEntry": true,
"imports": [
"_vendor-vue-WEaOxmRs.js",
"_auth-BMPlNhOo.js",
"index.html",
"_vendor-element-D7IaNnTz.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_vendor-vue-DxN60LNb.js",
"_style-CEbARg1o.js"
],
"css": [
"assets/LoginPage-C2MRCnlU.css"
"assets/LoginPage-DTj5KeC4.css"
]
},
"src/pages/RegisterPage.vue": {
"file": "assets/RegisterPage-BMX0En46.js",
"file": "assets/RegisterPage-4xFnBJCQ.js",
"name": "RegisterPage",
"src": "src/pages/RegisterPage.vue",
"isDynamicEntry": true,
"imports": [
"_vendor-vue-WEaOxmRs.js",
"_auth-BMPlNhOo.js",
"index.html",
"_vendor-element-D7IaNnTz.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_el-button-DWxIvzz-.js",
"_el-card-DfVpO1U5.js",
"_el-alert-DB2IQLpH.js",
"_http-CdvgQxJu.js",
"_vendor-vue-DxN60LNb.js",
"_auth-CX9p6ZYg.js",
"_password-7ryi82gE.js",
"_style-CEbARg1o.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/RegisterPage-BOcNcW5D.css"
]
},
"src/pages/ResetPasswordPage.vue": {
"file": "assets/ResetPasswordPage-Dmc9OJGd.js",
"file": "assets/ResetPasswordPage-lX7l6Nbu.js",
"name": "ResetPasswordPage",
"src": "src/pages/ResetPasswordPage.vue",
"isDynamicEntry": true,
"imports": [
"_vendor-vue-WEaOxmRs.js",
"_auth-BMPlNhOo.js",
"index.html",
"_vendor-element-D7IaNnTz.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_el-button-DWxIvzz-.js",
"_el-card-DfVpO1U5.js",
"_el-alert-DB2IQLpH.js",
"_http-CdvgQxJu.js",
"_vendor-vue-DxN60LNb.js",
"_auth-CX9p6ZYg.js",
"_password-7ryi82gE.js",
"_style-CEbARg1o.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/ResetPasswordPage-DybfLMAw.css"
]
},
"src/pages/SchedulesPage.vue": {
"file": "assets/SchedulesPage-C4jkMdDz.js",
"file": "assets/SchedulesPage-TUv7nqYq.js",
"name": "SchedulesPage",
"src": "src/pages/SchedulesPage.vue",
"isDynamicEntry": true,
"imports": [
"_accounts-BtZQzP7N.js",
"index.html",
"_vendor-element-D7IaNnTz.js",
"_vendor-vue-WEaOxmRs.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_el-button-DWxIvzz-.js",
"_el-overlay-C_JJBVfE.js",
"_el-alert-DB2IQLpH.js",
"_el-select-B0VMg2td.js",
"_user-Bl59IefW.js",
"_accounts-3bM7Wy59.js",
"_http-CdvgQxJu.js",
"_el-pagination-BY1uI-wO.js",
"_el-card-DfVpO1U5.js",
"_style-CEbARg1o.js",
"_vendor-vue-DxN60LNb.js",
"_isArrayLikeObject-BjIRF-cS.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/SchedulesPage-DwfusXou.css"
"assets/SchedulesPage-BIuHs5oJ.css"
]
},
"src/pages/ScreenshotsPage.vue": {
"file": "assets/ScreenshotsPage-yAHecmT2.js",
"file": "assets/ScreenshotsPage-7CRd3Hlo.js",
"name": "ScreenshotsPage",
"src": "src/pages/ScreenshotsPage.vue",
"isDynamicEntry": true,
"imports": [
"index.html",
"_vendor-element-D7IaNnTz.js",
"_vendor-vue-WEaOxmRs.js",
"_vendor-axios-B9ygI19o.js",
"_vendor-misc-0uE2ETD1.js"
"_el-button-DWxIvzz-.js",
"_el-overlay-C_JJBVfE.js",
"_el-pagination-BY1uI-wO.js",
"_el-select-B0VMg2td.js",
"_http-CdvgQxJu.js",
"_el-card-DfVpO1U5.js",
"_style-CEbARg1o.js",
"_vendor-vue-DxN60LNb.js",
"_vendor-axios-B9ygI19o.js"
],
"css": [
"assets/ScreenshotsPage-ByqUbmUI.css"
"assets/ScreenshotsPage-30dzddw-.css"
]
},
"src/pages/VerifyResultPage.vue": {
"file": "assets/VerifyResultPage-CHa6D86j.js",
"file": "assets/VerifyResultPage-bifpPyoE.js",
"name": "VerifyResultPage",
"src": "src/pages/VerifyResultPage.vue",
"isDynamicEntry": true,
"imports": [
"_vendor-vue-WEaOxmRs.js",
"index.html",
"_vendor-element-D7IaNnTz.js",
"_vendor-misc-0uE2ETD1.js",
"_vendor-axios-B9ygI19o.js"
"_el-button-DWxIvzz-.js",
"_el-card-DfVpO1U5.js",
"_vendor-vue-DxN60LNb.js",
"_style-CEbARg1o.js"
],
"css": [
"assets/VerifyResultPage-CG6ZYNrm.css"
"assets/VerifyResultPage-efSXaaKI.css"
]
}
}

View File

@@ -1 +0,0 @@
.page[data-v-a3d05837]{display:flex;flex-direction:column;gap:12px}.stat-card[data-v-a3d05837],.panel[data-v-a3d05837]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.stat-label[data-v-a3d05837]{font-size:12px}.stat-value[data-v-a3d05837]{margin-top:6px;font-size:22px;font-weight:900;letter-spacing:.2px}.stat-suffix[data-v-a3d05837]{margin-left:6px;font-size:12px;font-weight:600}.upgrade-banner[data-v-a3d05837]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.upgrade-actions[data-v-a3d05837]{margin-top:10px}.panel-head[data-v-a3d05837]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-a3d05837]{font-size:16px;font-weight:900}.panel-actions[data-v-a3d05837]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.toolbar[data-v-a3d05837]{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px;border:1px dashed rgba(17,24,39,.14);border-radius:12px;background:#f6f7fb99}.toolbar-left[data-v-a3d05837],.toolbar-middle[data-v-a3d05837],.toolbar-right[data-v-a3d05837]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar-right[data-v-a3d05837]{margin-left:auto;justify-content:flex-end}.grid[data-v-a3d05837]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;align-items:start}.account-card[data-v-a3d05837]{border-radius:14px;border:1px solid var(--app-border)}.card-top[data-v-a3d05837]{display:flex;gap:10px}.card-check[data-v-a3d05837]{padding-top:2px}.card-main[data-v-a3d05837]{min-width:0;flex:1}.card-title[data-v-a3d05837]{display:flex;align-items:center;justify-content:space-between;gap:10px}.card-name[data-v-a3d05837]{font-size:14px;font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-sub[data-v-a3d05837]{margin-top:6px;font-size:12px;line-height:1.4;word-break:break-word}.progress[data-v-a3d05837]{margin-top:12px}.progress-meta[data-v-a3d05837]{margin-top:6px;display:flex;justify-content:space-between;gap:10px;font-size:12px}.card-controls[data-v-a3d05837]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-buttons[data-v-a3d05837]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.vip-body[data-v-a3d05837]{padding:12px 0 0}.vip-tip[data-v-a3d05837]{margin-top:10px;font-size:13px;line-height:1.6}@media(max-width:480px){.grid[data-v-a3d05837]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-a3d05837]{width:100%;justify-content:flex-end}.toolbar-left[data-v-a3d05837],.toolbar-middle[data-v-a3d05837],.toolbar-right[data-v-a3d05837]{width:100%}.toolbar-right[data-v-a3d05837]{margin-left:0;justify-content:flex-end}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.login-page[data-v-15383fb6]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;background:linear-gradient(135deg,#eef2ff,#f6f7fb 45%,#ecfeff)}.login-page[data-v-15383fb6]:before{content:"";position:fixed;inset:0;background:radial-gradient(800px 500px at 15% 20%,rgba(59,130,246,.18),transparent 60%),radial-gradient(700px 420px at 85% 70%,rgba(124,58,237,.16),transparent 55%);pointer-events:none}.login-container[data-v-15383fb6]{width:100%;max-width:420px;background:#fff;border-radius:16px;box-shadow:0 18px 60px #11182726;border:1px solid rgba(17,24,39,.08);padding:38px 34px;position:relative;z-index:1}.login-header[data-v-15383fb6]{text-align:center;margin-bottom:28px}.login-badge[data-v-15383fb6]{display:inline-block;background:#3b82f61a;color:#1d4ed8;padding:6px 14px;border-radius:999px;font-size:12px;font-weight:700;margin-bottom:14px}.login-header h1[data-v-15383fb6]{font-size:24px;color:#111827;margin:0 0 10px;letter-spacing:.2px}.login-header p[data-v-15383fb6]{margin:0;color:#6b7280;font-size:14px}.form-group[data-v-15383fb6]{margin-bottom:20px}.form-group label[data-v-15383fb6]{display:block;margin-bottom:8px;color:#111827;font-weight:700;font-size:13px}.login-input[data-v-15383fb6] .el-input__wrapper{border-radius:10px;min-height:44px;background:#ffffffe6;box-shadow:0 0 0 1px #11182724 inset;transition:box-shadow .2s}.login-input[data-v-15383fb6] .el-input__wrapper.is-focus{box-shadow:0 0 0 1px #3b82f6b3 inset,0 0 0 4px #3b82f629}.login-input[data-v-15383fb6] .el-input__inner{font-size:14px}.btn-login[data-v-15383fb6]{width:100%;padding:12px;border:none;border-radius:10px;background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;font-size:16px;font-weight:800;cursor:pointer;transition:transform .15s,filter .15s}.btn-login[data-v-15383fb6]:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.02)}.btn-login[data-v-15383fb6]:active:not(:disabled){transform:translateY(0)}.btn-login[data-v-15383fb6]:disabled{cursor:not-allowed;opacity:.8}.action-links[data-v-15383fb6]{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.link-btn[data-v-15383fb6]{border:none;background:none;color:#2563eb;font-size:13px;font-weight:700;cursor:pointer;padding:0}.link-btn[data-v-15383fb6]:hover{text-decoration:underline}.register-row[data-v-15383fb6]{margin-top:16px;display:flex;justify-content:center;align-items:center;gap:8px;color:#6b7280;font-size:13px}.dialog-form[data-v-15383fb6]{margin-top:10px}.alert[data-v-15383fb6]{margin-top:12px}.captcha-row[data-v-15383fb6]{display:flex;align-items:center;gap:10px;width:100%}.captcha-input[data-v-15383fb6]{flex:1;min-width:0}.captcha-img[data-v-15383fb6]{height:46px;border:1px solid rgba(17,24,39,.14);border-radius:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.captcha-refresh[data-v-15383fb6]{height:44px;padding:0 14px;border:1px solid rgba(17,24,39,.14);border-radius:10px;background:#f8fafc;color:#111827;font-size:13px;cursor:pointer}.captcha-refresh[data-v-15383fb6]:hover{background:#f1f5f9}@media(max-width:480px){.login-page[data-v-15383fb6]{align-items:flex-start;padding:20px 12px 12px}.login-container[data-v-15383fb6]{max-width:100%;padding:28px 20px;border-radius:14px}.login-header h1[data-v-15383fb6]{font-size:22px}.btn-login[data-v-15383fb6]{padding:13px;font-size:15px}.captcha-img[data-v-15383fb6]{height:42px}.captcha-refresh[data-v-15383fb6]{height:42px;padding:0 12px}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{E as D}from"./el-button-DWxIvzz-.js";import{E as F}from"./el-card-DfVpO1U5.js";import{E as L,a as M,b as j}from"./el-alert-DB2IQLpH.js";import{E as q,a as c}from"./http-CdvgQxJu.js";import{f as H,g as d,h as B,i as z,j as S,q as s,s as o,u as G,o as g,k as n,c as U,l as C,m as I,t as J,x}from"./vendor-vue-DxN60LNb.js";import{g as O,f as Q,r as W}from"./auth-CX9p6ZYg.js";import{v as X}from"./password-7ryi82gE.js";import{_ as Y}from"./style-CEbARg1o.js";import"./vendor-axios-B9ygI19o.js";const Z={class:"auth-wrap"},$={class:"hint app-muted"},ee={class:"captcha-row"},ae=["src"],te={class:"actions"},se={__name:"RegisterPage",setup(le){const N=G(),a=H({username:"",password:"",confirm_password:"",email:"",captcha:""}),f=d(!1),v=d(""),h=d(""),b=d(!1),t=d(""),w=d(""),V=d(""),P=B(()=>f.value?"邮箱 *":"邮箱(可选)"),T=B(()=>f.value?"必填,用于账号验证":"选填,用于找回密码和接收通知");async function _(){try{const u=await O();h.value=u?.session_id||"",v.value=u?.captcha_image||"",a.captcha=""}catch{h.value="",v.value=""}}async function K(){try{const u=await Q();f.value=!!u?.register_verify_enabled}catch{f.value=!1}}function R(){t.value="",w.value="",V.value=""}async function E(){R();const u=a.username.trim(),e=a.password,y=a.confirm_password,l=a.email.trim(),i=a.captcha.trim();if(u.length<3){t.value="用户名至少3个字符",c.error(t.value);return}const p=X(e);if(!p.ok){t.value=p.message||"密码格式不正确",c.error(t.value);return}if(e!==y){t.value="两次输入的密码不一致",c.error(t.value);return}if(f.value&&!l){t.value="请填写邮箱地址用于账号验证",c.error(t.value);return}if(l&&!l.includes("@")){t.value="邮箱格式不正确",c.error(t.value);return}if(!i){t.value="请输入验证码",c.error(t.value);return}b.value=!0;try{const m=await W({username:u,password:e,email:l,captcha_session:h.value,captcha:i});w.value=m?.message||"注册成功",V.value=m?.need_verify?"请检查您的邮箱(包括垃圾邮件文件夹)":"",c.success("注册成功"),a.username="",a.password="",a.confirm_password="",a.email="",a.captcha="",setTimeout(()=>{window.location.href="/login"},3e3)}catch(m){const k=m?.response?.data;t.value=k?.error||"注册失败",c.error(t.value),await _()}finally{b.value=!1}}function A(){N.push("/login")}return z(async()=>{await _(),await K()}),(u,e)=>{const y=L,l=q,i=j,p=D,m=M,k=F;return g(),S("div",Z,[s(k,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:o(()=>[e[11]||(e[11]=n("div",{class:"brand"},[n("div",{class:"brand-title"},"知识管理平台"),n("div",{class:"brand-sub app-muted"},"用户注册")],-1)),t.value?(g(),U(y,{key:0,type:"error",closable:!1,title:t.value,"show-icon":"",class:"alert"},null,8,["title"])):C("",!0),w.value?(g(),U(y,{key:1,type:"success",closable:!1,title:w.value,description:V.value,"show-icon":"",class:"alert"},null,8,["title","description"])):C("",!0),s(m,{"label-position":"top"},{default:o(()=>[s(i,{label:"用户名 *"},{default:o(()=>[s(l,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=r=>a.username=r),placeholder:"至少3个字符",autocomplete:"username"},null,8,["modelValue"]),e[5]||(e[5]=n("div",{class:"hint app-muted"},"至少3个字符",-1))]),_:1}),s(i,{label:"密码 *"},{default:o(()=>[s(l,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=r=>a.password=r),type:"password","show-password":"",placeholder:"至少8位且包含字母和数字",autocomplete:"new-password"},null,8,["modelValue"]),e[6]||(e[6]=n("div",{class:"hint app-muted"},"至少8位且包含字母和数字",-1))]),_:1}),s(i,{label:"确认密码 *"},{default:o(()=>[s(l,{modelValue:a.confirm_password,"onUpdate:modelValue":e[2]||(e[2]=r=>a.confirm_password=r),type:"password","show-password":"",placeholder:"请再次输入密码",autocomplete:"new-password",onKeyup:I(E,["enter"])},null,8,["modelValue"])]),_:1}),s(i,{label:P.value},{default:o(()=>[s(l,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=r=>a.email=r),placeholder:"name@example.com",autocomplete:"email"},null,8,["modelValue"]),n("div",$,J(T.value),1)]),_:1},8,["label"]),s(i,{label:"验证码 *"},{default:o(()=>[n("div",ee,[s(l,{modelValue:a.captcha,"onUpdate:modelValue":e[4]||(e[4]=r=>a.captcha=r),placeholder:"请输入验证码",onKeyup:I(E,["enter"])},null,8,["modelValue"]),v.value?(g(),S("img",{key:0,class:"captcha-img",src:v.value,alt:"验证码",title:"点击刷新",onClick:_},null,8,ae)):C("",!0),s(p,{onClick:_},{default:o(()=>[...e[7]||(e[7]=[x("刷新",-1)])]),_:1})])]),_:1})]),_:1}),s(p,{type:"primary",class:"submit-btn",loading:b.value,onClick:E},{default:o(()=>[...e[8]||(e[8]=[x("注册",-1)])]),_:1},8,["loading"]),n("div",te,[e[10]||(e[10]=n("span",{class:"app-muted"},"已有账号?",-1)),s(p,{link:"",type:"primary",onClick:A},{default:o(()=>[...e[9]||(e[9]=[x("立即登录",-1)])]),_:1})])]),_:1})])}}},fe=Y(se,[["__scopeId","data-v-a9d7804f"]]);export{fe as default};

View File

@@ -1 +0,0 @@
import{S as L,r as d,c as B,o as M,n as U,K as l,D as o,aj as v,az as j,q as b,t as n,C as K,F as S,ae as N,I as q,H as E}from"./vendor-vue-WEaOxmRs.js";import{g as z,f as A,b as F}from"./auth-BMPlNhOo.js";import{_ as G,v as J}from"./index-mJEiaIbQ.js";import{E as c}from"./vendor-element-D7IaNnTz.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-0uE2ETD1.js";const O={class:"auth-wrap"},Q={class:"hint app-muted"},W={class:"captcha-row"},X=["src"],Y={class:"actions"},Z={__name:"RegisterPage",setup($){const P=j(),a=L({username:"",password:"",confirm_password:"",email:"",captcha:""}),f=d(!1),w=d(""),h=d(""),V=d(!1),t=d(""),_=d(""),k=d(""),T=B(()=>f.value?"邮箱 *":"邮箱(可选)"),D=B(()=>f.value?"必填,用于账号验证":"选填,用于找回密码和接收通知");async function y(){try{const u=await z();h.value=u?.session_id||"",w.value=u?.captcha_image||"",a.captcha=""}catch{h.value="",w.value=""}}async function I(){try{const u=await A();f.value=!!u?.register_verify_enabled}catch{f.value=!1}}function R(){t.value="",_.value="",k.value=""}async function C(){R();const u=a.username.trim(),e=a.password,g=a.confirm_password,s=a.email.trim(),i=a.captcha.trim();if(u.length<3){t.value="用户名至少3个字符",c.error(t.value);return}const p=J(e);if(!p.ok){t.value=p.message||"密码格式不正确",c.error(t.value);return}if(e!==g){t.value="两次输入的密码不一致",c.error(t.value);return}if(f.value&&!s){t.value="请填写邮箱地址用于账号验证",c.error(t.value);return}if(s&&!s.includes("@")){t.value="邮箱格式不正确",c.error(t.value);return}if(!i){t.value="请输入验证码",c.error(t.value);return}V.value=!0;try{const m=await F({username:u,password:e,email:s,captcha_session:h.value,captcha:i});_.value=m?.message||"注册成功",k.value=m?.need_verify?"请检查您的邮箱(包括垃圾邮件文件夹)":"",c.success("注册成功"),a.username="",a.password="",a.confirm_password="",a.email="",a.captcha="",setTimeout(()=>{window.location.href="/login"},3e3)}catch(m){const x=m?.response?.data;t.value=x?.error||"注册失败",c.error(t.value),await y()}finally{V.value=!1}}function H(){P.push("/login")}return M(async()=>{await y(),await I()}),(u,e)=>{const g=v("el-alert"),s=v("el-input"),i=v("el-form-item"),p=v("el-button"),m=v("el-form"),x=v("el-card");return b(),U("div",O,[l(x,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:o(()=>[e[11]||(e[11]=n("div",{class:"brand"},[n("div",{class:"brand-title"},"知识管理平台"),n("div",{class:"brand-sub app-muted"},"用户注册")],-1)),t.value?(b(),K(g,{key:0,type:"error",closable:!1,title:t.value,"show-icon":"",class:"alert"},null,8,["title"])):S("",!0),_.value?(b(),K(g,{key:1,type:"success",closable:!1,title:_.value,description:k.value,"show-icon":"",class:"alert"},null,8,["title","description"])):S("",!0),l(m,{"label-position":"top"},{default:o(()=>[l(i,{label:"用户名 *"},{default:o(()=>[l(s,{modelValue:a.username,"onUpdate:modelValue":e[0]||(e[0]=r=>a.username=r),placeholder:"至少3个字符",autocomplete:"username"},null,8,["modelValue"]),e[5]||(e[5]=n("div",{class:"hint app-muted"},"至少3个字符",-1))]),_:1}),l(i,{label:"密码 *"},{default:o(()=>[l(s,{modelValue:a.password,"onUpdate:modelValue":e[1]||(e[1]=r=>a.password=r),type:"password","show-password":"",placeholder:"至少8位且包含字母和数字",autocomplete:"new-password"},null,8,["modelValue"]),e[6]||(e[6]=n("div",{class:"hint app-muted"},"至少8位且包含字母和数字",-1))]),_:1}),l(i,{label:"确认密码 *"},{default:o(()=>[l(s,{modelValue:a.confirm_password,"onUpdate:modelValue":e[2]||(e[2]=r=>a.confirm_password=r),type:"password","show-password":"",placeholder:"请再次输入密码",autocomplete:"new-password",onKeyup:N(C,["enter"])},null,8,["modelValue"])]),_:1}),l(i,{label:T.value},{default:o(()=>[l(s,{modelValue:a.email,"onUpdate:modelValue":e[3]||(e[3]=r=>a.email=r),placeholder:"name@example.com",autocomplete:"email"},null,8,["modelValue"]),n("div",Q,q(D.value),1)]),_:1},8,["label"]),l(i,{label:"验证码 *"},{default:o(()=>[n("div",W,[l(s,{modelValue:a.captcha,"onUpdate:modelValue":e[4]||(e[4]=r=>a.captcha=r),placeholder:"请输入验证码",onKeyup:N(C,["enter"])},null,8,["modelValue"]),w.value?(b(),U("img",{key:0,class:"captcha-img",src:w.value,alt:"验证码",title:"点击刷新",onClick:y},null,8,X)):S("",!0),l(p,{onClick:y},{default:o(()=>[...e[7]||(e[7]=[E("刷新",-1)])]),_:1})])]),_:1})]),_:1}),l(p,{type:"primary",class:"submit-btn",loading:V.value,onClick:C},{default:o(()=>[...e[8]||(e[8]=[E("注册",-1)])]),_:1},8,["loading"]),n("div",Y,[e[10]||(e[10]=n("span",{class:"app-muted"},"已有账号?",-1)),l(p,{link:"",type:"primary",onClick:H},{default:o(()=>[...e[9]||(e[9]=[E("立即登录",-1)])]),_:1})])]),_:1})])}}},re=G(Z,[["__scopeId","data-v-a9d7804f"]]);export{re as default};

View File

@@ -1 +0,0 @@
import{r as n,ay as K,S as L,c as M,o as U,R as j,n as v,K as s,D as a,aj as l,az as D,q as m,t as w,J as h,H as k,C as F,F as x,ae as q,I as z}from"./vendor-vue-WEaOxmRs.js";import{c as H}from"./auth-BMPlNhOo.js";import{_ as J,v as G}from"./index-mJEiaIbQ.js";import{E as y}from"./vendor-element-D7IaNnTz.js";import"./vendor-axios-B9ygI19o.js";import"./vendor-misc-0uE2ETD1.js";const O={class:"auth-wrap"},Q={class:"actions"},W={class:"actions"},X={key:0,class:"app-muted"},Y={__name:"ResetPasswordPage",setup(Z){const B=K(),C=D(),r=n(String(B.params.token||"")),i=n(!0),b=n(""),t=L({newPassword:"",confirmPassword:""}),g=n(!1),f=n(""),d=n(0);let u=null;function R(){if(typeof window>"u")return null;const o=window.__APP_INITIAL_STATE__;return!o||typeof o!="object"?null:(window.__APP_INITIAL_STATE__=null,o)}const I=M(()=>!!(i.value&&r.value&&!f.value));function S(){C.push("/login")}function A(){d.value=3,u=window.setInterval(()=>{d.value-=1,d.value<=0&&(window.clearInterval(u),u=null,window.location.href="/login")},1e3)}async function V(){if(!I.value)return;const o=t.newPassword,e=t.confirmPassword,c=G(o);if(!c.ok){y.error(c.message);return}if(o!==e){y.error("两次输入的密码不一致");return}g.value=!0;try{await H({token:r.value,new_password:o}),f.value="密码重置成功3秒后跳转到登录页面...",y.success("密码重置成功"),A()}catch(p){const _=p?.response?.data;y.error(_?.error||"重置失败")}finally{g.value=!1}}return U(()=>{const o=R();o?.page==="reset_password"?(r.value=String(o?.token||r.value||""),i.value=!!o?.valid,b.value=o?.error_message||(i.value?"":"重置链接无效或已过期,请重新申请密码重置")):r.value||(i.value=!1,b.value="重置链接无效或已过期,请重新申请密码重置")}),j(()=>{u&&window.clearInterval(u)}),(o,e)=>{const c=l("el-alert"),p=l("el-button"),_=l("el-input"),T=l("el-form-item"),N=l("el-form"),E=l("el-card");return m(),v("div",O,[s(E,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:a(()=>[e[5]||(e[5]=w("div",{class:"brand"},[w("div",{class:"brand-title"},"知识管理平台"),w("div",{class:"brand-sub app-muted"},"重置密码")],-1)),i.value?(m(),v(h,{key:1},[f.value?(m(),F(c,{key:0,type:"success",closable:!1,title:"重置成功",description:f.value,"show-icon":"",class:"alert"},null,8,["description"])):x("",!0),s(N,{"label-position":"top"},{default:a(()=>[s(T,{label:"新密码至少8位且包含字母和数字"},{default:a(()=>[s(_,{modelValue:t.newPassword,"onUpdate:modelValue":e[0]||(e[0]=P=>t.newPassword=P),type:"password","show-password":"",placeholder:"请输入新密码",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),s(T,{label:"确认密码"},{default:a(()=>[s(_,{modelValue:t.confirmPassword,"onUpdate:modelValue":e[1]||(e[1]=P=>t.confirmPassword=P),type:"password","show-password":"",placeholder:"请再次输入新密码",autocomplete:"new-password",onKeyup:q(V,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),s(p,{type:"primary",class:"submit-btn",loading:g.value,disabled:!I.value,onClick:V},{default:a(()=>[...e[3]||(e[3]=[k(" 确认重置 ",-1)])]),_:1},8,["loading","disabled"]),w("div",W,[s(p,{link:"",type:"primary",onClick:S},{default:a(()=>[...e[4]||(e[4]=[k("返回登录",-1)])]),_:1}),d.value>0?(m(),v("span",X,z(d.value)+" 秒后自动跳转…",1)):x("",!0)])],64)):(m(),v(h,{key:0},[s(c,{type:"error",closable:!1,title:"链接已失效",description:b.value,"show-icon":""},null,8,["description"]),w("div",Q,[s(p,{type:"primary",onClick:S},{default:a(()=>[...e[2]||(e[2]=[k("返回登录",-1)])]),_:1})])],64))]),_:1})])}}},ne=J(Y,[["__scopeId","data-v-0bbb511c"]]);export{ne as default};

View File

@@ -0,0 +1 @@
import{E as R}from"./el-button-DWxIvzz-.js";import{E as F}from"./el-card-DfVpO1U5.js";import{E as L,a as M,b as U}from"./el-alert-DB2IQLpH.js";import{E as j,a as _}from"./http-CdvgQxJu.js";import{g as n,y as K,f as q,h as z,i as D,z as G,j as v,q as s,s as a,u as H,o as p,k as m,F as V,x as P,c as J,l as h,m as O,t as Q}from"./vendor-vue-DxN60LNb.js";import{c as W}from"./auth-CX9p6ZYg.js";import{v as X}from"./password-7ryi82gE.js";import{_ as Y}from"./style-CEbARg1o.js";import"./vendor-axios-B9ygI19o.js";const Z={class:"auth-wrap"},$={class:"actions"},ee={class:"actions"},oe={key:0,class:"app-muted"},se={__name:"ResetPasswordPage",setup(ae){const T=K(),x=H(),l=n(String(T.params.token||"")),r=n(!0),y=n(""),t=q({newPassword:"",confirmPassword:""}),b=n(!1),f=n(""),i=n(0);let d=null;function B(){if(typeof window>"u")return null;const o=window.__APP_INITIAL_STATE__;return!o||typeof o!="object"?null:(window.__APP_INITIAL_STATE__=null,o)}const k=z(()=>!!(r.value&&l.value&&!f.value));function E(){x.push("/login")}function A(){i.value=3,d=window.setInterval(()=>{i.value-=1,i.value<=0&&(window.clearInterval(d),d=null,window.location.href="/login")},1e3)}async function I(){if(!k.value)return;const o=t.newPassword,e=t.confirmPassword,u=X(o);if(!u.ok){_.error(u.message);return}if(o!==e){_.error("两次输入的密码不一致");return}b.value=!0;try{await W({token:l.value,new_password:o}),f.value="密码重置成功3秒后跳转到登录页面...",_.success("密码重置成功"),A()}catch(c){const w=c?.response?.data;_.error(w?.error||"重置失败")}finally{b.value=!1}}return D(()=>{const o=B();o?.page==="reset_password"?(l.value=String(o?.token||l.value||""),r.value=!!o?.valid,y.value=o?.error_message||(r.value?"":"重置链接无效或已过期,请重新申请密码重置")):l.value||(r.value=!1,y.value="重置链接无效或已过期,请重新申请密码重置")}),G(()=>{d&&window.clearInterval(d)}),(o,e)=>{const u=L,c=R,w=j,S=U,C=M,N=F;return p(),v("div",Z,[s(N,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:a(()=>[e[5]||(e[5]=m("div",{class:"brand"},[m("div",{class:"brand-title"},"知识管理平台"),m("div",{class:"brand-sub app-muted"},"重置密码")],-1)),r.value?(p(),v(V,{key:1},[f.value?(p(),J(u,{key:0,type:"success",closable:!1,title:"重置成功",description:f.value,"show-icon":"",class:"alert"},null,8,["description"])):h("",!0),s(C,{"label-position":"top"},{default:a(()=>[s(S,{label:"新密码至少8位且包含字母和数字"},{default:a(()=>[s(w,{modelValue:t.newPassword,"onUpdate:modelValue":e[0]||(e[0]=g=>t.newPassword=g),type:"password","show-password":"",placeholder:"请输入新密码",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),s(S,{label:"确认密码"},{default:a(()=>[s(w,{modelValue:t.confirmPassword,"onUpdate:modelValue":e[1]||(e[1]=g=>t.confirmPassword=g),type:"password","show-password":"",placeholder:"请再次输入新密码",autocomplete:"new-password",onKeyup:O(I,["enter"])},null,8,["modelValue"])]),_:1})]),_:1}),s(c,{type:"primary",class:"submit-btn",loading:b.value,disabled:!k.value,onClick:I},{default:a(()=>[...e[3]||(e[3]=[P(" 确认重置 ",-1)])]),_:1},8,["loading","disabled"]),m("div",ee,[s(c,{link:"",type:"primary",onClick:E},{default:a(()=>[...e[4]||(e[4]=[P("返回登录",-1)])]),_:1}),i.value>0?(p(),v("span",oe,Q(i.value)+" 秒后自动跳转…",1)):h("",!0)])],64)):(p(),v(V,{key:0},[s(u,{type:"error",closable:!1,title:"链接已失效",description:y.value,"show-icon":""},null,8,["description"]),m("div",$,[s(c,{type:"primary",onClick:E},{default:a(()=>[...e[2]||(e[2]=[P("返回登录",-1)])]),_:1})])],64))]),_:1})])}}},me=Y(se,[["__scopeId","data-v-0bbb511c"]]);export{me as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.page[data-v-e7d93ff5]{display:flex;flex-direction:column;gap:12px}.switch-row[data-v-e7d93ff5]{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.vip-alert[data-v-e7d93ff5]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.vip-actions[data-v-e7d93ff5]{margin-top:10px}.panel[data-v-e7d93ff5]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-e7d93ff5]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-e7d93ff5]{font-size:16px;font-weight:900}.panel-actions[data-v-e7d93ff5]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-e7d93ff5]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;align-items:start}.schedule-card[data-v-e7d93ff5]{border-radius:14px;border:1px solid var(--app-border)}.schedule-top[data-v-e7d93ff5]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.schedule-main[data-v-e7d93ff5]{min-width:0;flex:1}.schedule-title[data-v-e7d93ff5]{display:flex;align-items:center;justify-content:space-between;gap:10px}.schedule-name[data-v-e7d93ff5]{font-size:14px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-meta[data-v-e7d93ff5]{margin-top:6px;display:flex;gap:10px;flex-wrap:wrap;font-size:12px}.schedule-actions[data-v-e7d93ff5]{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}.logs[data-v-e7d93ff5]{display:flex;flex-direction:column;gap:10px}.log-card[data-v-e7d93ff5]{border-radius:12px;border:1px solid var(--app-border)}.log-head[data-v-e7d93ff5]{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}.log-body[data-v-e7d93ff5]{margin-top:8px;font-size:13px;line-height:1.6}.log-error[data-v-e7d93ff5]{margin-top:6px;color:#b91c1c}.vip-body[data-v-e7d93ff5]{padding:12px 0 0}.vip-tip[data-v-e7d93ff5]{margin-top:10px;font-size:13px;line-height:1.6}@media(max-width:480px){.grid[data-v-e7d93ff5]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-e7d93ff5]{width:100%;justify-content:flex-end}.schedule-switch[data-v-e7d93ff5]{width:100%;display:flex;justify-content:flex-end}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.panel[data-v-07cdff63]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-07cdff63]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-07cdff63]{font-size:16px;font-weight:900}.panel-actions[data-v-07cdff63]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-07cdff63]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:start}.pagination[data-v-07cdff63]{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.page-hint[data-v-07cdff63]{font-size:12px}.shot-card[data-v-07cdff63]{border-radius:14px;border:1px solid var(--app-border);overflow:hidden}.shot-img[data-v-07cdff63]{width:100%;aspect-ratio:16/9;object-fit:cover;cursor:pointer;display:block}.shot-body[data-v-07cdff63]{padding:12px}.shot-name[data-v-07cdff63]{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shot-meta[data-v-07cdff63]{margin-top:4px;font-size:12px}.shot-actions[data-v-07cdff63]{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.preview[data-v-07cdff63]{display:flex;justify-content:center}.preview-img[data-v-07cdff63]{max-width:100%;max-height:78vh;object-fit:contain;border-radius:10px;border:1px solid var(--app-border);background:#fff}@media(max-width:480px){.grid[data-v-07cdff63]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-07cdff63]{width:100%;justify-content:flex-end}}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.panel[data-v-76fa8f53]{border-radius:var(--app-radius);border:1px solid var(--app-border)}.panel-head[data-v-76fa8f53]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}.panel-title[data-v-76fa8f53]{font-size:16px;font-weight:900}.panel-actions[data-v-76fa8f53]{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.grid[data-v-76fa8f53]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;align-items:start}.shot-card[data-v-76fa8f53]{border-radius:14px;border:1px solid var(--app-border);overflow:hidden}.shot-img[data-v-76fa8f53]{width:100%;aspect-ratio:16/9;object-fit:cover;cursor:pointer;display:block}.shot-body[data-v-76fa8f53]{padding:12px}.shot-name[data-v-76fa8f53]{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shot-meta[data-v-76fa8f53]{margin-top:4px;font-size:12px}.shot-actions[data-v-76fa8f53]{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.preview[data-v-76fa8f53]{display:flex;justify-content:center}.preview-img[data-v-76fa8f53]{max-width:100%;max-height:78vh;object-fit:contain;border-radius:10px;border:1px solid var(--app-border);background:#fff}@media(max-width:480px){.grid[data-v-76fa8f53]{grid-template-columns:1fr}}@media(max-width:768px){.panel-actions[data-v-76fa8f53]{width:100%;justify-content:flex-end}}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.auth-wrap[data-v-1fc6b081]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-1fc6b081]{width:100%;max-width:520px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-1fc6b081]{margin-bottom:14px}.brand-title[data-v-1fc6b081]{font-size:18px;font-weight:900}.brand-sub[data-v-1fc6b081]{margin-top:4px;font-size:12px}.result[data-v-1fc6b081]{padding:8px 0 2px}.actions[data-v-1fc6b081]{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.countdown[data-v-1fc6b081]{margin-top:10px;text-align:center;font-size:13px}

View File

@@ -1 +0,0 @@
import{r as o,c as h,o as R,R as U,n as k,K as i,D as s,aj as d,az as E,q as _,t as l,F as B,C as j,H as C,I as v}from"./vendor-vue-WEaOxmRs.js";import{_ as z}from"./index-mJEiaIbQ.js";import"./vendor-element-D7IaNnTz.js";import"./vendor-misc-0uE2ETD1.js";import"./vendor-axios-B9ygI19o.js";const D={class:"auth-wrap"},W={class:"actions"},$={key:0,class:"countdown app-muted"},q={__name:"VerifyResultPage",setup(F){const T=E(),p=o(!1),f=o(""),m=o(""),w=o(""),y=o(""),r=o(""),u=o(""),c=o(""),n=o(0);let a=null;function x(){if(typeof window>"u")return null;const e=window.__APP_INITIAL_STATE__;return!e||typeof e!="object"?null:(window.__APP_INITIAL_STATE__=null,e)}function N(e){const t=!!e?.success;p.value=t,f.value=e?.title||(t?"验证成功":"验证失败"),m.value=e?.message||e?.error_message||(t?"操作已完成,现在可以继续使用系统。":"操作失败,请稍后重试。"),w.value=e?.primary_label||(t?"立即登录":"重新注册"),y.value=e?.primary_url||(t?"/login":"/register"),r.value=e?.secondary_label||(t?"":"返回登录"),u.value=e?.secondary_url||(t?"":"/login"),c.value=e?.redirect_url||(t?"/login":""),n.value=Number(e?.redirect_seconds||(t?5:0))||0}const A=h(()=>!!(r.value&&u.value)),b=h(()=>!!(c.value&&n.value>0));async function g(e){if(e){if(e.startsWith("http://")||e.startsWith("https://")){window.location.href=e;return}await T.push(e)}}function P(){b.value&&(a=window.setInterval(()=>{n.value-=1,n.value<=0&&(window.clearInterval(a),a=null,window.location.href=c.value)},1e3))}return R(()=>{const e=x();N(e),P()}),U(()=>{a&&window.clearInterval(a)}),(e,t)=>{const I=d("el-button"),V=d("el-result"),L=d("el-card");return _(),k("div",D,[i(L,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:s(()=>[t[2]||(t[2]=l("div",{class:"brand"},[l("div",{class:"brand-title"},"知识管理平台"),l("div",{class:"brand-sub app-muted"},"验证结果")],-1)),i(V,{icon:p.value?"success":"error",title:f.value,"sub-title":m.value,class:"result"},{extra:s(()=>[l("div",W,[i(I,{type:"primary",onClick:t[0]||(t[0]=S=>g(y.value))},{default:s(()=>[C(v(w.value),1)]),_:1}),A.value?(_(),j(I,{key:0,onClick:t[1]||(t[1]=S=>g(u.value))},{default:s(()=>[C(v(r.value),1)]),_:1})):B("",!0)]),b.value?(_(),k("div",$,v(n.value)+" 秒后自动跳转... ",1)):B("",!0)]),_:1},8,["icon","title","sub-title"])]),_:1})])}}},O=z(q,[["__scopeId","data-v-1fc6b081"]]);export{O as default};

View File

@@ -0,0 +1 @@
import{b as W,i as N,c as q,w as F,a as G,_ as H,u as J,d as K,E as O}from"./el-button-DWxIvzz-.js";import{E as Q}from"./el-card-DfVpO1U5.js";import{A as R,h as T,j as f,o as a,k as i,l as p,B as w,c as V,C as l,n as d,D as X,t as m,g as n,i as Y,z as Z,q as C,s as b,u as ee,x as P}from"./vendor-vue-DxN60LNb.js";import{_ as se}from"./style-CEbARg1o.js";const r={primary:"icon-primary",success:"icon-success",warning:"icon-warning",error:"icon-error",info:"icon-info"},A={[r.primary]:N,[r.success]:G,[r.warning]:F,[r.error]:q,[r.info]:N},te=W({title:{type:String,default:""},subTitle:{type:String,default:""},icon:{type:String,values:["primary","success","warning","info","error"],default:"info"}}),ne=R({name:"ElResult"}),oe=R({...ne,props:te,setup($){const g=$,o=J("result"),c=T(()=>{const s=g.icon,u=s&&r[s]?r[s]:"icon-info",y=A[u]||A["icon-info"];return{class:u,component:y}});return(s,u)=>(a(),f("div",{class:d(l(o).b())},[i("div",{class:d(l(o).e("icon"))},[w(s.$slots,"icon",{},()=>[l(c).component?(a(),V(X(l(c).component),{key:0,class:d(l(c).class)},null,8,["class"])):p("v-if",!0)])],2),s.title||s.$slots.title?(a(),f("div",{key:0,class:d(l(o).e("title"))},[w(s.$slots,"title",{},()=>[i("p",null,m(s.title),1)])],2)):p("v-if",!0),s.subTitle||s.$slots["sub-title"]?(a(),f("div",{key:1,class:d(l(o).e("subtitle"))},[w(s.$slots,"sub-title",{},()=>[i("p",null,m(s.subTitle),1)])],2)):p("v-if",!0),s.$slots.extra?(a(),f("div",{key:2,class:d(l(o).e("extra"))},[w(s.$slots,"extra")],2)):p("v-if",!0)],2))}});var le=H(oe,[["__file","result.vue"]]);const ae=K(le),re={class:"auth-wrap"},ie={class:"actions"},ce={key:0,class:"countdown app-muted"},ue={__name:"VerifyResultPage",setup($){const g=ee(),o=n(!1),c=n(""),s=n(""),u=n(""),y=n(""),h=n(""),I=n(""),k=n(""),_=n(0);let v=null;function L(){if(typeof window>"u")return null;const e=window.__APP_INITIAL_STATE__;return!e||typeof e!="object"?null:(window.__APP_INITIAL_STATE__=null,e)}function U(e){const t=!!e?.success;o.value=t,c.value=e?.title||(t?"验证成功":"验证失败"),s.value=e?.message||e?.error_message||(t?"操作已完成,现在可以继续使用系统。":"操作失败,请稍后重试。"),u.value=e?.primary_label||(t?"立即登录":"重新注册"),y.value=e?.primary_url||(t?"/login":"/register"),h.value=e?.secondary_label||(t?"":"返回登录"),I.value=e?.secondary_url||(t?"":"/login"),k.value=e?.redirect_url||(t?"/login":""),_.value=Number(e?.redirect_seconds||(t?5:0))||0}const z=T(()=>!!(h.value&&I.value)),B=T(()=>!!(k.value&&_.value>0));async function E(e){if(e){if(e.startsWith("http://")||e.startsWith("https://")){window.location.href=e;return}await g.push(e)}}function D(){B.value&&(v=window.setInterval(()=>{_.value-=1,_.value<=0&&(window.clearInterval(v),v=null,window.location.href=k.value)},1e3))}return Y(()=>{const e=L();U(e),D()}),Z(()=>{v&&window.clearInterval(v)}),(e,t)=>{const S=O,M=ae,j=Q;return a(),f("div",re,[C(j,{shadow:"never",class:"auth-card","body-style":{padding:"22px"}},{default:b(()=>[t[2]||(t[2]=i("div",{class:"brand"},[i("div",{class:"brand-title"},"知识管理平台"),i("div",{class:"brand-sub app-muted"},"验证结果")],-1)),C(M,{icon:o.value?"success":"error",title:c.value,"sub-title":s.value,class:"result"},{extra:b(()=>[i("div",ie,[C(S,{type:"primary",onClick:t[0]||(t[0]=x=>E(y.value))},{default:b(()=>[P(m(u.value),1)]),_:1}),z.value?(a(),V(S,{key:0,onClick:t[1]||(t[1]=x=>E(I.value))},{default:b(()=>[P(m(h.value),1)]),_:1})):p("",!0)]),B.value?(a(),f("div",ce,m(_.value)+" 秒后自动跳转... ",1)):p("",!0)]),_:1},8,["icon","title","sub-title"])]),_:1})])}}},ve=se(ue,[["__scopeId","data-v-1fc6b081"]]);export{ve as default};

View File

@@ -0,0 +1 @@
.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.auth-wrap[data-v-1fc6b081]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card[data-v-1fc6b081]{width:100%;max-width:520px;border-radius:var(--app-radius);border:1px solid var(--app-border);box-shadow:var(--app-shadow)}.brand[data-v-1fc6b081]{margin-bottom:14px}.brand-title[data-v-1fc6b081]{font-size:18px;font-weight:900}.brand-sub[data-v-1fc6b081]{margin-top:4px;font-size:12px}.result[data-v-1fc6b081]{padding:8px 0 2px}.actions[data-v-1fc6b081]{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.countdown[data-v-1fc6b081]{margin-top:10px;text-align:center;font-size:13px}

View File

@@ -0,0 +1 @@
import{p as c}from"./http-CdvgQxJu.js";async function o(t={}){const{data:a}=await c.get("/accounts",{params:t});return a}async function u(t){const{data:a}=await c.post("/accounts",t);return a}async function r(t,a){const{data:n}=await c.put(`/accounts/${t}`,a);return n}async function e(t){const{data:a}=await c.delete(`/accounts/${t}`);return a}async function i(t,a){const{data:n}=await c.put(`/accounts/${t}/remark`,a);return n}async function p(t,a){const{data:n}=await c.post(`/accounts/${t}/start`,a);return n}async function d(t){const{data:a}=await c.post(`/accounts/${t}/stop`,{});return a}async function f(t){const{data:a}=await c.post("/accounts/batch/start",t);return a}async function w(t){const{data:a}=await c.post("/accounts/batch/stop",t);return a}async function y(){const{data:t}=await c.post("/accounts/clear",{});return t}async function A(t,a={}){const{data:n}=await c.post(`/accounts/${t}/screenshot`,a);return n}export{w as a,f as b,y as c,d,e,o as f,u as g,i as h,p as s,A as t,r as u};

View File

@@ -1 +0,0 @@
import{p as c}from"./index-mJEiaIbQ.js";async function o(t={}){const{data:a}=await c.get("/accounts",{params:t});return a}async function u(t){const{data:a}=await c.post("/accounts",t);return a}async function r(t,a){const{data:n}=await c.put(`/accounts/${t}`,a);return n}async function e(t){const{data:a}=await c.delete(`/accounts/${t}`);return a}async function i(t,a){const{data:n}=await c.put(`/accounts/${t}/remark`,a);return n}async function p(t,a){const{data:n}=await c.post(`/accounts/${t}/start`,a);return n}async function d(t){const{data:a}=await c.post(`/accounts/${t}/stop`,{});return a}async function f(t){const{data:a}=await c.post("/accounts/batch/start",t);return a}async function w(t){const{data:a}=await c.post("/accounts/batch/stop",t);return a}async function y(){const{data:t}=await c.post("/accounts/clear",{});return t}async function A(t,a={}){const{data:n}=await c.post(`/accounts/${t}/screenshot`,a);return n}export{w as a,f as b,y as c,d,e,o as f,u as g,i as h,p as s,A as t,r as u};

View File

@@ -0,0 +1 @@
.el-checkbox-group{font-size:0;line-height:0}

View File

@@ -0,0 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-D5iXLq7p.js","./vendor-vue-DxN60LNb.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./LoginPage-DTj5KeC4.css","./RegisterPage-4xFnBJCQ.js","./el-button-DWxIvzz-.js","./el-button-DF1Fi_iE.css","./el-card-DfVpO1U5.js","./el-card-BqOrgVp1.css","./el-alert-DB2IQLpH.js","./http-CdvgQxJu.js","./vendor-axios-B9ygI19o.js","./http-D6B3r8CH.css","./el-alert-B-NgiIln.css","./auth-CX9p6ZYg.js","./password-7ryi82gE.js","./RegisterPage-BOcNcW5D.css","./ResetPasswordPage-lX7l6Nbu.js","./ResetPasswordPage-DybfLMAw.css","./VerifyResultPage-bifpPyoE.js","./VerifyResultPage-efSXaaKI.css","./AppLayout-Dx0be4wS.js","./user-Bl59IefW.js","./el-overlay-C_JJBVfE.js","./el-overlay-Bd56Lw6C.css","./user-B7bO5p8k.css","./settings-Ddo8isuv.js","./isArrayLikeObject-BjIRF-cS.js","./AppLayout-D94213-a.css","./AccountsPage-DnOxRP7e.js","./accounts-3bM7Wy59.js","./accounts-D_6SYB2i.css","./el-select-B0VMg2td.js","./el-select-D_oyzAZN.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-iiBFNme8.css","./SchedulesPage-TUv7nqYq.js","./el-pagination-BY1uI-wO.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-BIuHs5oJ.css","./ScreenshotsPage-7CRd3Hlo.js","./ScreenshotsPage-30dzddw-.css"])))=>i.map(i=>d[i]);
import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as w,e as k}from"./vendor-vue-DxN60LNb.js";const V={};function O(p,l){const a=g("RouterView");return y(),R(a)}const T=v(V,[["render",O]]),b="modulepreload",D=function(p,l){return new URL(p,l).href},f={},r=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const o=document.createElement("link");if(o.rel=s?"stylesheet":b,s||(o.as="script"),o.crossOrigin="",o.href=e,h&&o.setAttribute("nonce",h),document.head.appendChild(o),s)return new Promise((i,m)=>{o.addEventListener("load",i),o.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>r(()=>import("./LoginPage-D5iXLq7p.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),S=()=>r(()=>import("./RegisterPage-4xFnBJCQ.js"),__vite__mapDeps([5,6,1,7,8,9,10,11,12,13,14,15,16,2,3,17]),import.meta.url),$=()=>r(()=>import("./ResetPasswordPage-lX7l6Nbu.js"),__vite__mapDeps([18,6,1,7,8,9,10,11,12,13,14,15,16,2,3,19]),import.meta.url),E=()=>r(()=>import("./VerifyResultPage-bifpPyoE.js"),__vite__mapDeps([20,6,1,7,8,9,2,3,21]),import.meta.url),C=()=>r(()=>import("./AppLayout-Dx0be4wS.js"),__vite__mapDeps([22,6,1,7,23,11,12,13,10,14,24,25,26,27,16,2,3,28,29]),import.meta.url),B=()=>r(()=>import("./AccountsPage-DnOxRP7e.js"),__vite__mapDeps([30,6,1,7,24,11,12,13,25,10,14,23,26,31,32,33,34,8,9,27,35,2,3,36]),import.meta.url),N=()=>r(()=>import("./SchedulesPage-TUv7nqYq.js"),__vite__mapDeps([37,6,1,7,24,11,12,13,25,10,14,33,34,23,26,31,32,38,39,8,9,2,3,28,40]),import.meta.url),j=()=>r(()=>import("./ScreenshotsPage-7CRd3Hlo.js"),__vite__mapDeps([41,6,1,7,24,11,12,13,25,38,33,34,39,8,9,2,3,42]),import.meta.url),q=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:C,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:B},{path:"schedules",name:"schedules",component:N},{path:"screenshots",name:"screenshots",component:j}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],x=A({history:L(),routes:q});w(T).use(k()).use(x).mount("#app");

View File

@@ -1 +0,0 @@
import{p as s}from"./index-mJEiaIbQ.js";async function r(){const{data:a}=await s.get("/email/verify-status");return a}async function o(){const{data:a}=await s.post("/generate_captcha",{});return a}async function e(a){const{data:t}=await s.post("/login",a);return t}async function i(a){const{data:t}=await s.post("/register",a);return t}async function c(a){const{data:t}=await s.post("/resend-verify-email",a);return t}async function f(a){const{data:t}=await s.post("/forgot-password",a);return t}async function u(a){const{data:t}=await s.post("/reset-password-confirm",a);return t}export{f as a,i as b,u as c,r as f,o as g,e as l,c as r};

View File

@@ -0,0 +1 @@
import{p as a}from"./http-CdvgQxJu.js";async function e(){const{data:t}=await a.get("/email/verify-status");return t}async function n(){const{data:t}=await a.post("/generate_captcha",{});return t}async function c(t){const{data:s}=await a.post("/register",t);return s}async function i(t){const{data:s}=await a.post("/reset-password-confirm",t);return s}export{i as c,e as f,n as g,c as r};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}

View File

@@ -0,0 +1 @@
import{b as u,t as h,aV as C,u as v,_ as c,d as m}from"./el-button-DWxIvzz-.js";import{A as p,j as r,o as t,l as n,k as S,n as o,C as a,B as l,x as i,t as f,U as b}from"./vendor-vue-DxN60LNb.js";const g=u({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:h([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:void 0}}),w=p({name:"ElCard"}),$=p({...w,props:g,setup(B){const y=C("card"),s=v("card");return(e,E)=>{var d;return t(),r("div",{class:o([a(s).b(),a(s).is(`${e.shadow||((d=a(y))==null?void 0:d.shadow)||"always"}-shadow`)])},[e.$slots.header||e.header?(t(),r("div",{key:0,class:o([a(s).e("header"),e.headerClass])},[l(e.$slots,"header",{},()=>[i(f(e.header),1)])],2)):n("v-if",!0),S("div",{class:o([a(s).e("body"),e.bodyClass]),style:b(e.bodyStyle)},[l(e.$slots,"default")],6),e.$slots.footer||e.footer?(t(),r("div",{key:1,class:o([a(s).e("footer"),e.footerClass])},[l(e.$slots,"footer",{},()=>[i(f(e.footer),1)])],2)):n("v-if",!0)],2)}}});var k=c($,[["__file","card.vue"]]);const P=m(k);export{P as E};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
.layout-root[data-v-7ce33baa]{height:100%}.layout-aside[data-v-7ce33baa]{background:#fff;border-right:1px solid var(--app-border)}.brand[data-v-7ce33baa],.drawer-brand[data-v-7ce33baa]{padding:18px 16px 10px}.brand-title[data-v-7ce33baa]{font-size:15px;font-weight:800;letter-spacing:.2px}.brand-sub[data-v-7ce33baa]{margin-top:2px;font-size:12px}.aside-menu[data-v-7ce33baa]{border-right:none}.layout-header[data-v-7ce33baa]{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f6f7fb99;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--app-border)}.header-left[data-v-7ce33baa]{display:flex;align-items:center;gap:10px;min-width:0}.header-title[data-v-7ce33baa]{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-menu-btn[data-v-7ce33baa]{padding-left:0;padding-right:0}.header-right[data-v-7ce33baa]{display:flex;align-items:center;gap:12px}.user-meta[data-v-7ce33baa]{display:flex;align-items:center;gap:8px;min-width:0}.user-name[data-v-7ce33baa]{font-size:13px;font-weight:700;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vip-warn[data-v-7ce33baa]{font-size:12px;color:var(--app-muted);white-space:nowrap}.layout-main[data-v-7ce33baa]{padding:16px}.drawer-user[data-v-7ce33baa]{padding:0 16px 10px;display:flex;align-items:center;gap:8px}.drawer-actions[data-v-7ce33baa]{padding:12px 16px 4px;border-top:1px solid var(--app-border)}.announcement-body[data-v-7ce33baa]{min-height:80px}.announcement-content[data-v-7ce33baa]{white-space:pre-wrap;line-height:1.6;font-size:14px}.announcement-image[data-v-7ce33baa]{margin-top:12px;display:flex;justify-content:center}.announcement-image img[data-v-7ce33baa]{max-width:100%;max-height:320px;border-radius:10px;border:1px solid var(--app-border);object-fit:contain}.feedback-title[data-v-7ce33baa]{display:flex;align-items:center;gap:10px;width:100%;min-width:0}.feedback-title-text[data-v-7ce33baa]{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback-time[data-v-7ce33baa]{margin-left:auto;font-size:12px;white-space:nowrap}.feedback-body[data-v-7ce33baa]{padding:6px 0 2px}.feedback-section+.feedback-section[data-v-7ce33baa]{margin-top:12px}.feedback-label[data-v-7ce33baa]{font-size:12px;margin-bottom:6px}.feedback-text[data-v-7ce33baa]{white-space:pre-wrap;line-height:1.6;font-size:13px}.settings-section[data-v-7ce33baa]{padding:6px 2px 2px}.settings-alert[data-v-7ce33baa]{margin-bottom:12px}.email-row[data-v-7ce33baa]{display:flex;align-items:center;justify-content:space-between;gap:12px}.email-value[data-v-7ce33baa]{font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis}.notify-row[data-v-7ce33baa]{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.notify-title[data-v-7ce33baa]{font-weight:800}.notify-desc[data-v-7ce33baa]{margin-top:4px;font-size:12px}.settings-hint[data-v-7ce33baa]{margin-top:10px}.vip-info[data-v-7ce33baa]{margin-top:12px;display:grid;gap:10px}.vip-line[data-v-7ce33baa]{display:flex;align-items:center;justify-content:space-between;gap:12px}@media(max-width:768px){.layout-header[data-v-7ce33baa]{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:10px}.header-right[data-v-7ce33baa]{width:100%;justify-content:flex-end}.layout-main[data-v-7ce33baa]{padding:12px}.user-name[data-v-7ce33baa]{max-width:120px}}:root{--app-bg: #f6f7fb;--app-text: #111827;--app-muted: #6b7280;--app-border: rgba(17, 24, 39, .08);--app-radius: 12px;--app-shadow: 0 8px 24px rgba(17, 24, 39, .06);--el-switch-off-color: var(--el-border-color-darker);--el-switch-border-color: var(--el-border-color-darker);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#app{height:100%}body{margin:0;background:var(--app-bg);color:var(--app-text)}a{color:inherit;text-decoration:none}.app-muted{color:var(--app-muted)}.el-switch:not(.is-checked) .el-switch__core .el-switch__inner .is-icon,.el-switch:not(.is-checked) .el-switch__core .el-switch__inner .is-text{color:var(--el-text-color-regular)}.el-switch.is-disabled{opacity:1}@media(max-width:768px){.el-dialog{max-width:92vw}.el-form-item{flex-direction:column;align-items:stretch}.el-form-item__label{width:auto!important;justify-content:flex-start!important;padding:0 0 6px!important;line-height:1.4;text-align:left!important}.el-form-item__content{margin-left:0!important;width:100%}}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
import{x as W,y as A,z as C}from"./http-CdvgQxJu.js";import{am as M,e as O,an as j,f as F}from"./el-button-DWxIvzz-.js";import{t as L}from"./el-overlay-C_JJBVfE.js";function q(t,i){return W(A(t,i,C),t+"")}var h=function(){return M.Date.now()},N="Expected a function",_=Math.max,z=Math.min;function B(t,i,u){var f,o,l,s,n,a,d=0,k=!1,c=!1,v=!0;if(typeof t!="function")throw new TypeError(N);i=L(i)||0,O(u)&&(k=!!u.leading,c="maxWait"in u,l=c?_(L(u.maxWait)||0,i):l,v="trailing"in u?!!u.trailing:v);function T(e){var r=f,m=o;return f=o=void 0,d=e,s=t.apply(m,r),s}function I(e){return d=e,n=setTimeout(g,i),k?T(e):s}function p(e){var r=e-a,m=e-d,E=i-r;return c?z(E,l-m):E}function b(e){var r=e-a,m=e-d;return a===void 0||r>=i||r<0||c&&m>=l}function g(){var e=h();if(b(e))return y(e);n=setTimeout(g,p(e))}function y(e){return n=void 0,v&&f?T(e):(f=o=void 0,s)}function R(){n!==void 0&&clearTimeout(n),d=0,f=a=o=n=void 0}function S(){return n===void 0?s:y(h())}function x(){var e=h(),r=b(e);if(f=arguments,o=this,a=e,r){if(n===void 0)return I(a);if(c)return clearTimeout(n),n=setTimeout(g,i),T(a)}return n===void 0&&(n=setTimeout(g,i)),s}return x.cancel=R,x.flush=S,x}function G(t){return j(t)&&F(t)}export{q as b,B as d,G as i};

View File

@@ -0,0 +1 @@
import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-DxN60LNb.js";import p from"./LoginPage-D5iXLq7p.js";o(p).mount("#app");

View File

@@ -0,0 +1 @@
function s(t){const e=String(t||"");return e.length<8?{ok:!1,message:"密码长度至少8位"}:!/[a-zA-Z]/.test(e)||!/\d/.test(e)?{ok:!1,message:"密码必须包含字母和数字"}:{ok:!0,message:""}}export{s as v};

View File

@@ -0,0 +1 @@
import{p as t}from"./http-CdvgQxJu.js";async function n(){const{data:a}=await t.get("/user/email");return a}async function r(a){const{data:s}=await t.post("/user/bind-email",a);return s}async function i(){const{data:a}=await t.post("/user/unbind-email",{});return a}async function c(){const{data:a}=await t.get("/user/email-notify");return a}async function o(a){const{data:s}=await t.post("/user/email-notify",a);return s}async function u(a){const{data:s}=await t.post("/user/password",a);return s}async function d(){const{data:a}=await t.get("/user/kdocs");return a}async function y(a){const{data:s}=await t.post("/user/kdocs",a);return s}async function f(){const{data:a}=await t.get("/kdocs/status");return a}async function p(){const{data:a}=await t.get("/user/passkeys");return a}async function l(a){const{data:s}=await t.post("/user/passkeys/register/options",a);return s}async function w(a){const{data:s}=await t.post("/user/passkeys/register/verify",a);return s}async function k(a){const{data:s}=await t.delete(`/user/passkeys/${a}`);return s}async function m(a){const{data:s}=await t.post("/user/passkeys/client-error",a||{});return s}export{o as a,r as b,u as c,l as d,w as e,k as f,y as g,n as h,p as i,c as j,d as k,f as l,m as r,i as u};

View File

@@ -0,0 +1 @@
:root{--app-bg: #f6f7fb;--app-text: #111827;--app-muted: #6b7280;--app-border: rgba(17, 24, 39, .08);--app-radius: 12px;--app-shadow: 0 8px 24px rgba(17, 24, 39, .06);--el-switch-off-color: var(--el-border-color-darker);--el-switch-border-color: var(--el-border-color-darker);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body,#app{height:100%}body{margin:0;background:var(--app-bg);color:var(--app-text)}a{color:inherit;text-decoration:none}.app-muted{color:var(--app-muted)}.el-switch:not(.is-checked) .el-switch__core .el-switch__inner .is-icon,.el-switch:not(.is-checked) .el-switch__core .el-switch__inner .is-text{color:var(--el-text-color-regular)}.el-switch.is-disabled{opacity:1}@media(max-width:768px){.el-dialog{max-width:92vw}.el-form-item{flex-direction:column;align-items:stretch}.el-form-item__label{width:auto!important;justify-content:flex-start!important;padding:0 0 6px!important;line-height:1.4;text-align:left!important}.el-form-item__content{margin-left:0!important;width:100%}}

View File

@@ -0,0 +1 @@
(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))s(e);new MutationObserver(e=>{for(const t of e)if(t.type==="childList")for(const i of t.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function o(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?t.credentials="include":e.crossOrigin==="anonymous"?t.credentials="omit":t.credentials="same-origin",t}function s(e){if(e.ep)return;e.ep=!0;const t=o(e);fetch(e.href,t)}})();const n=(c,r)=>{const o=c.__vccOpts||c;for(const[s,e]of r)o[s]=e;return o};export{n as _};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -4,13 +4,10 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<title>知识管理平台</title>
<script type="module" crossorigin src="./assets/index-mJEiaIbQ.js"></script>
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-WEaOxmRs.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-misc-0uE2ETD1.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-element-D7IaNnTz.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-axios-B9ygI19o.js">
<link rel="stylesheet" crossorigin href="./assets/vendor-element-BaI2aKL6.css">
<link rel="stylesheet" crossorigin href="./assets/index-BJUdh4ps.css">
<script type="module" crossorigin src="./assets/app-CZnjzsIN.js"></script>
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-DxN60LNb.js">
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
</head>
<body>
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>

18
static/app/login.html Normal file
View File

@@ -0,0 +1,18 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<title>知识管理平台</title>
<script type="module" crossorigin src="./assets/login-BtMsx-ZC.js"></script>
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-DxN60LNb.js">
<link rel="modulepreload" crossorigin href="./assets/LoginPage-D5iXLq7p.js">
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
<link rel="stylesheet" crossorigin href="./assets/LoginPage-DTj5KeC4.css">
</head>
<body>
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
<div id="app"></div>
</body>
</html>