Files
zsglpt/static/admin/assets/SystemPage-D3eBPCNe.js

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