Files
zsglpt/static/admin/assets/SystemPage-CS-ZjK7n.js

6 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{f as Ve,u as Y}from"./system-NtfTAEkS.js";import{a as P,_ as ge,r as n,c as ke,V as xe,S as be,o as we,f as v,H as Ue,I as Ce,h as V,g,j as s,m as l,w as t,x as k,n as Z,p as ee,J as ne,K as c}from"./index-B-vpoEwl.js";async function le(r={}){const{data:m}=await P.get("/kdocs/status",{params:r});return m}async function Pe(r={}){const m={force:!0,...r},{data:x}=await P.post("/kdocs/qr",m);return x}async function Ie(){const{data:r}=await P.post("/kdocs/clear-login",{});return r}async function Ae(){const{data:r}=await P.get("/proxy/config");return r}async function Se(r){const{data:m}=await P.post("/proxy/config",r);return m}async function Ne(r){const{data:m}=await P.post("/proxy/test",r);return m}const Ke={class:"page-stack"},De={class:"config-grid"},Ee={class:"row-actions"},Be={class:"row-actions"},Te={class:"row-actions"},Le={class:"section-head"},he={class:"status-inline app-muted"},Qe={key:0},$e={key:1},qe={key:2},He={class:"kdocs-inline"},Me={class:"kdocs-range"},Re={class:"row-actions"},Fe={key:0,class:"help"},ze={key:1,class:"help"},Oe={class:"kdocs-qr"},je=["src"],Ge={__name:"SystemPage",setup(r){const m=n(!1),x=n(2),A=n(1),S=n(3),I=n(!1),f=n(""),N=n(3),K=n(!1),D=n(10),E=n(7),B=n(!1),T=n(""),L=n(""),h=n(""),Q=n(0),$=n("A"),q=n("D"),H=n(0),M=n(0),R=n(!1),F=n(""),p=n({}),b=n(!1),w=n(""),ae=n(!1),z=n(!1),U=n(!1),C=n(!1),O=n("");let j=null;const oe=ke(()=>z.value||U.value||C.value);function d(a){if(!a){O.value="";return}const e=new Date().toLocaleTimeString("zh-CN",{hour12:!1});O.value=`${a} (${e})`}async function ue(){m.value=!0;try{const[a,e,i]=await Promise.all([Ve(),Ae(),le().catch(()=>({}))]);x.value=a.max_concurrent_global??2,A.value=a.max_concurrent_per_account??1,S.value=a.max_screenshot_concurrent??3,K.value=(a.auto_approve_enabled??0)===1,D.value=a.auto_approve_hourly_limit??10,E.value=a.auto_approve_vip_days??7,I.value=(e.proxy_enabled??0)===1,f.value=e.proxy_api_url||"",N.value=e.proxy_expire_minutes??3,B.value=(a.kdocs_enabled??0)===1,T.value=a.kdocs_doc_url||"",L.value=a.kdocs_default_unit||"",h.value=a.kdocs_sheet_name||"",Q.value=a.kdocs_sheet_index??0,$.value=(a.kdocs_unit_column||"A").toUpperCase(),q.value=(a.kdocs_image_column||"D").toUpperCase(),H.value=a.kdocs_row_start??0,M.value=a.kdocs_row_end??0,R.value=(a.kdocs_admin_notify_enabled??0)===1,F.value=a.kdocs_admin_notify_email||"",p.value=i||{}}catch{}finally{m.value=!1}}async function de(){const a={max_concurrent_global:Number(x.value),max_concurrent_per_account:Number(A.value),max_screenshot_concurrent:Number(S.value)};try{await ne.confirm(`确定更新并发配置吗?
全局并发数: ${a.max_concurrent_global}
单账号并发数: ${a.max_concurrent_per_account}
截图并发数: ${a.max_screenshot_concurrent}`,"保存并发配置",{confirmButtonText:"保存",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await Y(a);c.success(e?.message||"并发配置已更新")}catch{}}async function ie(){if(I.value&&!f.value.trim()){c.error("启用代理时API地址不能为空");return}const a={proxy_enabled:I.value?1:0,proxy_api_url:f.value.trim(),proxy_expire_minutes:Number(N.value)||3};try{const e=await Se(a);c.success(e?.message||"代理配置已更新")}catch{}}async function re(){if(!f.value.trim()){c.error("请先输入代理API地址");return}try{const a=await Ne({api_url:f.value.trim()});await ne.alert(a?.message||"测试完成","代理测试",{confirmButtonText:"知道了"})}catch{}}async function ce(){const a=Number(D.value),e=Number(E.value);if(!Number.isFinite(a)||a<1){c.error("每小时注册限制必须大于0");return}if(!Number.isFinite(e)||e<0){c.error("VIP天数不能为负数");return}const i={auto_approve_enabled:K.value?1:0,auto_approve_hourly_limit:a,auto_approve_vip_days:e};try{const u=await Y(i);c.success(u?.message||"注册设置已保存")}catch{}}async function me(){const a={kdocs_enabled:B.value?1:0,kdocs_doc_url:T.value.trim(),kdocs_default_unit:L.value.trim(),kdocs_sheet_name:h.value.trim(),kdocs_sheet_index:Number(Q.value)||0,kdocs_unit_column:$.value.trim().toUpperCase(),kdocs_image_column:q.value.trim().toUpperCase(),kdocs_row_start:Number(H.value)||0,kdocs_row_end:Number(M.value)||0,kdocs_admin_notify_enabled:R.value?1:0,kdocs_admin_notify_email:F.value.trim()};try{const e=await Y(a);c.success(e?.message||"表格配置已更新")}catch{}}async function te(){if(!z.value){z.value=!0,d("正在刷新状态");try{p.value=await le({live:1}),d("状态已刷新")}catch{d("刷新失败,请稍后重试")}finally{z.value=!1}}}async function se(){try{const a=await le({live:1});p.value=a,(a?.logged_in===!0||a?.last_login_ok===!0)&&(c.success("扫码成功,已登录"),d("扫码成功,已登录"),b.value=!1,G())}catch{}}function pe(){G(),ae.value=!0,d("扫码检测中"),se(),j=setInterval(se,2e3)}function G(){j&&(clearInterval(j),j=null),ae.value=!1}async function ve(){if(!U.value){U.value=!0,d("正在获取二维码");try{w.value="";const a=await Pe();if(w.value=a?.qr_image||"",!w.value){if(a?.logged_in){c.success("当前已登录,无需扫码"),d("当前已登录,无需扫码"),await te();return}c.warning("未获取到二维码"),d("未获取到二维码");return}d("二维码已获取"),b.value=!0}catch{d("获取二维码失败")}finally{U.value=!1}}}async function fe(){if(!C.value){C.value=!0,d("正在清除登录态");try{await Ie(),b.value=!1,w.value="",c.success("登录态已清除"),d("登录态已清除"),await te()}catch{d("清除登录态失败")}finally{C.value=!1}}}return xe(b,a=>{a?pe():G()}),be(()=>{G()}),we(ue),(a,e)=>{const i=v("el-input-number"),u=v("el-form-item"),J=v("el-form"),_=v("el-button"),W=v("el-card"),X=v("el-switch"),y=v("el-input"),_e=v("el-dialog"),ye=Ue("loading");return Ce((V(),g("div",Ke,[e[47]||(e[47]=s("div",{class:"app-page-title"},[s("h2",null,"系统配置")],-1)),s("div",De,[l(W,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:t(()=>[e[25]||(e[25]=s("h3",{class:"section-title"},"并发配置",-1)),e[26]||(e[26]=s("div",{class:"section-sub app-muted"},"控制任务与截图的并发资源上限",-1)),l(J,{"label-width":"122px"},{default:t(()=>[l(u,{label:"全局最大并发数"},{default:t(()=>[l(i,{modelValue:x.value,"onUpdate:modelValue":e[0]||(e[0]=o=>x.value=o),min:1,max:200},null,8,["modelValue"]),e[21]||(e[21]=s("div",{class:"help"},"同时最多运行账号数(浏览任务 API 执行,资源占用较低)。",-1))]),_:1}),l(u,{label:"单账号最大并发数"},{default:t(()=>[l(i,{modelValue:A.value,"onUpdate:modelValue":e[1]||(e[1]=o=>A.value=o),min:1,max:50},null,8,["modelValue"]),e[22]||(e[22]=s("div",{class:"help"},"建议保持为 1避免同账号任务抢占。",-1))]),_:1}),l(u,{label:"截图最大并发数"},{default:t(()=>[l(i,{modelValue:S.value,"onUpdate:modelValue":e[2]||(e[2]=o=>S.value=o),min:1,max:50},null,8,["modelValue"]),e[23]||(e[23]=s("div",{class:"help"},"截图资源占用较低,可按机器性能逐步提高。",-1))]),_:1})]),_:1}),s("div",Ee,[l(_,{type:"primary",onClick:de},{default:t(()=>[...e[24]||(e[24]=[k("保存并发配置",-1)])]),_:1})])]),_:1}),l(W,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:t(()=>[e[31]||(e[31]=s("h3",{class:"section-title"},"代理设置",-1)),e[32]||(e[32]=s("div",{class:"section-sub app-muted"},"用于任务出网代理与连接有效期管理",-1)),l(J,{"label-width":"122px"},{default:t(()=>[l(u,{label:"启用 IP 代理"},{default:t(()=>[l(X,{modelValue:I.value,"onUpdate:modelValue":e[3]||(e[3]=o=>I.value=o)},null,8,["modelValue"]),e[27]||(e[27]=s("div",{class:"help"},"开启后,浏览任务通过代理访问,失败自动重试。",-1))]),_:1}),l(u,{label:"代理 API 地址"},{default:t(()=>[l(y,{modelValue:f.value,"onUpdate:modelValue":e[4]||(e[4]=o=>f.value=o),placeholder:"http://api.xxx/Tools/IP.ashx?..."},null,8,["modelValue"]),e[28]||(e[28]=s("div",{class:"help"},"API 应返回 `IP:PORT`123.45.67.89:8888。",-1))]),_:1}),l(u,{label:"有效期(分钟)"},{default:t(()=>[l(i,{modelValue:N.value,"onUpdate:modelValue":e[5]||(e[5]=o=>N.value=o),min:1,max:60},null,8,["modelValue"])]),_:1})]),_:1}),s("div",Be,[l(_,{type:"primary",onClick:ie},{default:t(()=>[...e[29]||(e[29]=[k("保存代理配置",-1)])]),_:1}),l(_,{onClick:re},{default:t(()=>[...e[30]||(e[30]=[k("测试代理",-1)])]),_:1})])]),_:1}),l(W,{shadow:"never","body-style":{padding:"16px"},class:"card section-card"},{default:t(()=>[e[35]||(e[35]=s("h3",{class:"section-title"},"注册设置",-1)),e[36]||(e[36]=s("div",{class:"section-sub app-muted"},"控制注册节流与新用户赠送 VIP",-1)),l(J,{"label-width":"122px"},{default:t(()=>[l(u,{label:"注册赠送 VIP"},{default:t(()=>[l(X,{modelValue:K.value,"onUpdate:modelValue":e[6]||(e[6]=o=>K.value=o)},null,8,["modelValue"]),e[33]||(e[33]=s("div",{class:"help"},"开启后,新用户注册成功自动赠送下方设定的 VIP 天数。",-1))]),_:1}),l(u,{label:"每小时注册限制"},{default:t(()=>[l(i,{modelValue:D.value,"onUpdate:modelValue":e[7]||(e[7]=o=>D.value=o),min:1,max:1e4},null,8,["modelValue"])]),_:1}),l(u,{label:"赠送 VIP 天数"},{default:t(()=>[l(i,{modelValue:E.value,"onUpdate:modelValue":e[8]||(e[8]=o=>E.value=o),min:0,max:999999},null,8,["modelValue"])]),_:1})]),_:1}),s("div",Te,[l(_,{type:"primary",onClick:ce},{default:t(()=>[...e[34]||(e[34]=[k("保存注册设置",-1)])]),_:1})])]),_:1})]),l(W,{shadow:"never","body-style":{padding:"16px"},class:"card kdocs-card"},{default:t(()=>[s("div",Le,[e[38]||(e[38]=s("h3",{class:"section-title"},"金山文档上传",-1)),s("div",he,[e[37]||(e[37]=s("span",null,"登录状态:",-1)),p.value.last_login_ok===!0?(V(),g("span",Qe,"已登录")):p.value.login_required?(V(),g("span",$e,"需要扫码")):(V(),g("span",qe,"未知")),s("span",null,"· 待上传 "+ee(p.value.queue_size||0),1)])]),l(J,{"label-width":"118px",class:"kdocs-form"},{default:t(()=>[l(u,{label:"启用上传"},{default:t(()=>[l(X,{modelValue:B.value,"onUpdate:modelValue":e[9]||(e[9]=o=>B.value=o)},null,8,["modelValue"]),e[39]||(e[39]=s("div",{class:"help"},"表格结构变化时可先关闭,避免错误上传。",-1))]),_:1}),l(u,{label:"文档链接"},{default:t(()=>[l(y,{modelValue:T.value,"onUpdate:modelValue":e[10]||(e[10]=o=>T.value=o),placeholder:"https://kdocs.cn/..."},null,8,["modelValue"])]),_:1}),l(u,{label:"默认县区"},{default:t(()=>[l(y,{modelValue:L.value,"onUpdate:modelValue":e[11]||(e[11]=o=>L.value=o),placeholder:"如:道县(用户可覆盖)"},null,8,["modelValue"])]),_:1}),l(u,{label:"Sheet 名称"},{default:t(()=>[l(y,{modelValue:h.value,"onUpdate:modelValue":e[12]||(e[12]=o=>h.value=o),placeholder:"留空使用第一个 Sheet"},null,8,["modelValue"])]),_:1}),l(u,{label:"Sheet 序号"},{default:t(()=>[l(i,{modelValue:Q.value,"onUpdate:modelValue":e[13]||(e[13]=o=>Q.value=o),min:0,max:50},null,8,["modelValue"]),e[40]||(e[40]=s("div",{class:"help"},"0 表示第一个 Sheet。",-1))]),_:1}),l(u,{label:"列配置"},{default:t(()=>[s("div",He,[l(y,{modelValue:$.value,"onUpdate:modelValue":e[14]||(e[14]=o=>$.value=o),placeholder:"县区列,如 A"},null,8,["modelValue"]),l(y,{modelValue:q.value,"onUpdate:modelValue":e[15]||(e[15]=o=>q.value=o),placeholder:"图片列,如 D"},null,8,["modelValue"])])]),_:1}),l(u,{label:"有效行范围"},{default:t(()=>[s("div",Me,[l(i,{modelValue:H.value,"onUpdate:modelValue":e[16]||(e[16]=o=>H.value=o),min:0,max:1e4,placeholder:"起始行",style:{width:"140px"}},null,8,["modelValue"]),e[41]||(e[41]=s("span",{class:"app-muted"},"至",-1)),l(i,{modelValue:M.value,"onUpdate:modelValue":e[17]||(e[17]=o=>M.value=o),min:0,max:1e4,placeholder:"结束行",style:{width:"140px"}},null,8,["modelValue"])]),e[42]||(e[42]=s("div",{class:"help"},"用于限制上传区间(如 50-1000 表示不限制。",-1))]),_:1}),l(u,{label:"管理员通知"},{default:t(()=>[l(X,{modelValue:R.value,"onUpdate:modelValue":e[18]||(e[18]=o=>R.value=o)},null,8,["modelValue"])]),_:1}),l(u,{label:"通知邮箱"},{default:t(()=>[l(y,{modelValue:F.value,"onUpdate:modelValue":e[19]||(e[19]=o=>F.value=o),placeholder:"admin@example.com"},null,8,["modelValue"])]),_:1})]),_:1}),s("div",Re,[l(_,{type:"primary",onClick:me},{default:t(()=>[...e[43]||(e[43]=[k("保存表格配置",-1)])]),_:1}),l(_,{type:"success",plain:"",loading:U.value,disabled:oe.value&&!U.value,onClick:ve},{default:t(()=>[...e[44]||(e[44]=[k(" 获取二维码 ",-1)])]),_:1},8,["loading","disabled"]),l(_,{type:"danger",plain:"",loading:C.value,disabled:oe.value&&!C.value,onClick:fe},{default:t(()=>[...e[45]||(e[45]=[k(" 清除登录 ",-1)])]),_:1},8,["loading","disabled"])]),p.value.last_error?(V(),g("div",Fe,"最近错误:"+ee(p.value.last_error),1)):Z("",!0),O.value?(V(),g("div",ze,"操作提示:"+ee(O.value),1)):Z("",!0)]),_:1}),l(_e,{modelValue:b.value,"onUpdate:modelValue":e[20]||(e[20]=o=>b.value=o),title:"扫码登录",width:"min(420px, 92vw)"},{default:t(()=>[s("div",Oe,[w.value?(V(),g("img",{key:0,src:`data:image/png;base64,${w.value}`,alt:"KDocs QR"},null,8,je)):Z("",!0),e[46]||(e[46]=s("div",{class:"help"},"请使用管理员微信扫码登录。",-1))])]),_:1},8,["modelValue"])])),[[ye,m.value]])}}},Xe=ge(Ge,[["__scopeId","data-v-c90d5cb2"]]);export{Xe as default};