18 lines
16 KiB
JavaScript
18 lines
16 KiB
JavaScript
import{f as De,u as ae,e as Ke}from"./system-BDTy0cf_.js";import{a as A,_ as Ee,r as n,c as ve,U as $e,T as Le,o as He,f as v,I as qe,J as Qe,h as f,g,j as s,m as l,w as o,q as c,B as te,n as w,F as Fe,v as Me,p as oe,K as ne,L as r}from"./index-BDEpmftQ.js";async function de(p={}){const{data:_}=await A.get("/kdocs/status",{params:p});return _}async function je(p={}){const _={force:!0,...p},{data:U}=await A.post("/kdocs/qr",_);return U}async function ze(){const{data:p}=await A.post("/kdocs/clear-login",{});return p}async function Oe(){const{data:p}=await A.get("/proxy/config");return p}async function Re(p){const{data:_}=await A.post("/proxy/config",p);return _}async function We(p){const{data:_}=await A.post("/proxy/test",p);return _}const Ge={class:"page-stack"},Je={class:"app-page-title"},Xe={class:"row-actions"},Ye={class:"row-actions"},Ze={class:"row-actions"},el={class:"help"},ll={key:0},al={key:1},tl={key:2},ol={key:3},nl={key:0,class:"help"},ul={class:"kdocs-qr"},sl=["src"],dl={__name:"SystemPage",setup(p){const _=n(!1),U=n(2),$=n(1),L=n(3),y=n(!1),H=n("02:00"),B=n("应读"),k=n(["1","2","3","4","5","6","7"]),T=n(!0),D=n(!1),x=n(""),q=n(3),Q=n(!1),F=n(10),M=n(7),j=n(!1),z=n(""),O=n(""),R=n(""),W=n(0),G=n("A"),J=n("D"),X=n(!1),Y=n(""),b=n({}),C=n(!1),h=n(""),re=n(!1),P=n(!1),S=n(!1),I=n(!1),Z=n("");let ee=null;const pe=[{label:"周一",value:"1"},{label:"周二",value:"2"},{label:"周三",value:"3"},{label:"周四",value:"4"},{label:"周五",value:"5"},{label:"周六",value:"6"},{label:"周日",value:"7"}],fe={1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"},_e=ve(()=>(k.value||[]).map(a=>fe[Number(a)]||a).join("、")),ue=ve(()=>P.value||S.value||I.value);function ye(a){return String(a)==="注册前未读"?"注册前未读":"应读"}function m(a){if(!a){Z.value="";return}const e=new Date().toLocaleTimeString("zh-CN",{hour12:!1});Z.value=`${a} (${e})`}async function ie(){_.value=!0;try{const[a,e,d]=await Promise.all([De(),Oe(),de().catch(()=>({}))]);U.value=a.max_concurrent_global??2,$.value=a.max_concurrent_per_account??1,L.value=a.max_screenshot_concurrent??3,y.value=(a.schedule_enabled??0)===1,H.value=a.schedule_time||"02:00",B.value=ye(a.schedule_browse_type);const i=String(a.schedule_weekdays||"1,2,3,4,5,6,7").split(",").map(u=>u.trim()).filter(Boolean);k.value=i.length?i:["1","2","3","4","5","6","7"],T.value=(a.enable_screenshot??1)===1,Q.value=(a.auto_approve_enabled??0)===1,F.value=a.auto_approve_hourly_limit??10,M.value=a.auto_approve_vip_days??7,D.value=(e.proxy_enabled??0)===1,x.value=e.proxy_api_url||"",q.value=e.proxy_expire_minutes??3,j.value=(a.kdocs_enabled??0)===1,z.value=a.kdocs_doc_url||"",O.value=a.kdocs_default_unit||"",R.value=a.kdocs_sheet_name||"",W.value=a.kdocs_sheet_index??0,G.value=(a.kdocs_unit_column||"A").toUpperCase(),J.value=(a.kdocs_image_column||"D").toUpperCase(),X.value=(a.kdocs_admin_notify_enabled??0)===1,Y.value=a.kdocs_admin_notify_email||"",b.value=d||{}}catch{}finally{_.value=!1}}async function be(){const a={max_concurrent_global:Number(U.value),max_concurrent_per_account:Number($.value),max_screenshot_concurrent:Number(L.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 ae(a);r.success(e?.message||"并发配置已更新")}catch{}}async function ge(){if(y.value&&(!k.value||k.value.length===0)){r.error("请至少选择一个执行日期");return}const a={schedule_enabled:y.value?1:0,schedule_time:H.value,schedule_browse_type:B.value,schedule_weekdays:(k.value||[]).join(","),enable_screenshot:T.value?1:0},e=T.value?"截图":"不截图",d=y.value?`确定启用定时任务吗?
|
||
|
||
执行时间: 每天 ${a.schedule_time}
|
||
执行日期: ${_e.value}
|
||
浏览类型: ${a.schedule_browse_type}
|
||
截图: ${e}
|
||
|
||
系统将自动执行所有账号的浏览任务`:"确定关闭定时任务吗?";try{await ne.confirm(d,"保存定时任务",{confirmButtonText:"确认",cancelButtonText:"取消",type:"warning"})}catch{return}try{const i=await ae(a);r.success(i?.message||(y.value?"定时任务已启用":"定时任务已关闭"))}catch{}}async function ke(){const a=`确定要立即执行定时任务吗?
|
||
|
||
这将执行所有账号的浏览任务
|
||
浏览类型: ${B.value}
|
||
|
||
注意:无视定时时间和执行日期配置,立即开始执行!`;try{await ne.confirm(a,"立即执行",{confirmButtonText:"立即执行",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await Ke();r.success(e?.message||"定时任务已开始执行")}catch{}}async function xe(){if(D.value&&!x.value.trim()){r.error("启用代理时,API地址不能为空");return}const a={proxy_enabled:D.value?1:0,proxy_api_url:x.value.trim(),proxy_expire_minutes:Number(q.value)||3};try{const e=await Re(a);r.success(e?.message||"代理配置已更新")}catch{}}async function Ve(){const a={kdocs_enabled:j.value?1:0,kdocs_doc_url:z.value.trim(),kdocs_default_unit:O.value.trim(),kdocs_sheet_name:R.value.trim(),kdocs_sheet_index:Number(W.value)||0,kdocs_unit_column:G.value.trim().toUpperCase(),kdocs_image_column:J.value.trim().toUpperCase(),kdocs_admin_notify_enabled:X.value?1:0,kdocs_admin_notify_email:Y.value.trim()};try{const e=await ae(a);r.success(e?.message||"表格配置已更新")}catch{}}async function se(){if(!P.value){P.value=!0,m("正在刷新状态");try{b.value=await de({live:1}),m("状态已刷新")}catch{m("刷新失败,请稍后重试")}finally{P.value=!1}}}async function ce(){try{const a=await de({live:1});b.value=a,(a?.logged_in===!0||a?.last_login_ok===!0)&&(r.success("扫码成功,已登录"),m("扫码成功,已登录"),C.value=!1,le())}catch{}}function we(){le(),re.value=!0,m("扫码检测中"),ce(),ee=setInterval(ce,2e3)}function le(){ee&&(clearInterval(ee),ee=null),re.value=!1}async function Ue(){if(!S.value){S.value=!0,m("正在获取二维码");try{h.value="";const a=await je();if(h.value=a?.qr_image||"",!h.value){if(a?.logged_in){r.success("当前已登录,无需扫码"),m("当前已登录,无需扫码"),await se();return}r.warning("未获取到二维码"),m("未获取到二维码");return}m("二维码已获取"),C.value=!0}catch{m("获取二维码失败")}finally{S.value=!1}}}async function Ce(){if(!I.value){I.value=!0,m("正在清除登录态");try{await ze(),C.value=!1,h.value="",r.success("登录态已清除"),m("登录态已清除"),await se()}catch{m("清除登录态失败")}finally{I.value=!1}}}$e(C,a=>{a?we():le()}),Le(()=>{le()});async function he(){if(!x.value.trim()){r.error("请先输入代理API地址");return}try{const a=await We({api_url:x.value.trim()});await ne.alert(a?.message||"测试完成","代理测试",{confirmButtonText:"知道了"})}catch{}}async function Pe(){const a=Number(F.value),e=Number(M.value);if(!Number.isFinite(a)||a<1){r.error("每小时注册限制必须大于0");return}if(!Number.isFinite(e)||e<0){r.error("VIP天数不能为负数");return}const d={auto_approve_enabled:Q.value?1:0,auto_approve_hourly_limit:a,auto_approve_vip_days:e};try{const i=await ae(d);r.success(i?.message||"注册设置已保存")}catch{}}return He(ie),(a,e)=>{const d=v("el-button"),i=v("el-input-number"),u=v("el-form-item"),K=v("el-form"),E=v("el-card"),N=v("el-switch"),Se=v("el-time-picker"),me=v("el-option"),Ie=v("el-select"),Ne=v("el-checkbox"),Ae=v("el-checkbox-group"),V=v("el-input"),Be=v("el-dialog"),Te=qe("loading");return Qe((f(),g("div",Ge,[s("div",Je,[e[25]||(e[25]=s("h2",null,"系统配置",-1)),s("div",null,[l(d,{onClick:ie},{default:o(()=>[...e[24]||(e[24]=[c("刷新",-1)])]),_:1})])]),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[e[30]||(e[30]=s("h3",{class:"section-title"},"系统并发配置",-1)),l(K,{"label-width":"130px"},{default:o(()=>[l(u,{label:"全局最大并发数"},{default:o(()=>[l(i,{modelValue:U.value,"onUpdate:modelValue":e[0]||(e[0]=t=>U.value=t),min:1,max:200},null,8,["modelValue"]),e[26]||(e[26]=s("div",{class:"help"},"同时最多运行的账号数量(浏览任务使用 API 方式,资源占用较低)。",-1))]),_:1}),l(u,{label:"单账号最大并发数"},{default:o(()=>[l(i,{modelValue:$.value,"onUpdate:modelValue":e[1]||(e[1]=t=>$.value=t),min:1,max:50},null,8,["modelValue"]),e[27]||(e[27]=s("div",{class:"help"},"单个账号同时最多运行的任务数量(建议设为 1)。",-1))]),_:1}),l(u,{label:"截图最大并发数"},{default:o(()=>[l(i,{modelValue:L.value,"onUpdate:modelValue":e[2]||(e[2]=t=>L.value=t),min:1,max:50},null,8,["modelValue"]),e[28]||(e[28]=s("div",{class:"help"},"同时进行截图的最大数量(wkhtmltoimage 资源占用较低,可按需提高)。",-1))]),_:1})]),_:1}),l(d,{type:"primary",onClick:be},{default:o(()=>[...e[29]||(e[29]=[c("保存并发配置",-1)])]),_:1})]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[e[35]||(e[35]=s("h3",{class:"section-title"},"定时任务配置",-1)),l(K,{"label-width":"130px"},{default:o(()=>[l(u,{label:"启用定时任务"},{default:o(()=>[l(N,{modelValue:y.value,"onUpdate:modelValue":e[3]||(e[3]=t=>y.value=t)},null,8,["modelValue"]),e[31]||(e[31]=s("div",{class:"help"},"开启后,系统会按计划自动执行浏览任务。",-1))]),_:1}),y.value?(f(),te(u,{key:0,label:"执行时间"},{default:o(()=>[l(Se,{modelValue:H.value,"onUpdate:modelValue":e[4]||(e[4]=t=>H.value=t),"value-format":"HH:mm",format:"HH:mm"},null,8,["modelValue"])]),_:1})):w("",!0),y.value?(f(),te(u,{key:1,label:"浏览类型"},{default:o(()=>[l(Ie,{modelValue:B.value,"onUpdate:modelValue":e[5]||(e[5]=t=>B.value=t),style:{width:"220px"}},{default:o(()=>[l(me,{label:"注册前未读",value:"注册前未读"}),l(me,{label:"应读",value:"应读"})]),_:1},8,["modelValue"])]),_:1})):w("",!0),y.value?(f(),te(u,{key:2,label:"执行日期"},{default:o(()=>[l(Ae,{modelValue:k.value,"onUpdate:modelValue":e[6]||(e[6]=t=>k.value=t)},{default:o(()=>[(f(),g(Fe,null,Me(pe,t=>l(Ne,{key:t.value,label:t.value},{default:o(()=>[c(oe(t.label),1)]),_:2},1032,["label"])),64))]),_:1},8,["modelValue"])]),_:1})):w("",!0),y.value?(f(),te(u,{key:3,label:"定时任务截图"},{default:o(()=>[l(N,{modelValue:T.value,"onUpdate:modelValue":e[7]||(e[7]=t=>T.value=t)},null,8,["modelValue"]),e[32]||(e[32]=s("div",{class:"help"},"开启后,定时任务执行时会生成截图。",-1))]),_:1})):w("",!0)]),_:1}),s("div",Xe,[l(d,{type:"primary",onClick:ge},{default:o(()=>[...e[33]||(e[33]=[c("保存定时任务配置",-1)])]),_:1}),l(d,{type:"success",plain:"",onClick:ke},{default:o(()=>[...e[34]||(e[34]=[c("立即执行",-1)])]),_:1})])]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[e[40]||(e[40]=s("h3",{class:"section-title"},"代理设置",-1)),l(K,{"label-width":"130px"},{default:o(()=>[l(u,{label:"启用IP代理"},{default:o(()=>[l(N,{modelValue:D.value,"onUpdate:modelValue":e[8]||(e[8]=t=>D.value=t)},null,8,["modelValue"]),e[36]||(e[36]=s("div",{class:"help"},"开启后,所有浏览任务将通过代理IP访问(失败自动重试3次)。",-1))]),_:1}),l(u,{label:"代理API地址"},{default:o(()=>[l(V,{modelValue:x.value,"onUpdate:modelValue":e[9]||(e[9]=t=>x.value=t),placeholder:"http://api.xxx/Tools/IP.ashx?..."},null,8,["modelValue"]),e[37]||(e[37]=s("div",{class:"help"},"API 应返回:IP:PORT(例如 123.45.67.89:8888)。",-1))]),_:1}),l(u,{label:"代理有效期(分钟)"},{default:o(()=>[l(i,{modelValue:q.value,"onUpdate:modelValue":e[10]||(e[10]=t=>q.value=t),min:1,max:60},null,8,["modelValue"])]),_:1})]),_:1}),s("div",Ye,[l(d,{type:"primary",onClick:xe},{default:o(()=>[...e[38]||(e[38]=[c("保存代理配置",-1)])]),_:1}),l(d,{onClick:he},{default:o(()=>[...e[39]||(e[39]=[c("测试代理",-1)])]),_:1})])]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[e[43]||(e[43]=s("h3",{class:"section-title"},"注册设置",-1)),l(K,{"label-width":"130px"},{default:o(()=>[l(u,{label:"注册赠送VIP"},{default:o(()=>[l(N,{modelValue:Q.value,"onUpdate:modelValue":e[11]||(e[11]=t=>Q.value=t)},null,8,["modelValue"]),e[41]||(e[41]=s("div",{class:"help"},"开启后,新用户注册成功后将赠送下方设置的VIP天数(注册已默认无需审核)。",-1))]),_:1}),l(u,{label:"每小时注册限制"},{default:o(()=>[l(i,{modelValue:F.value,"onUpdate:modelValue":e[12]||(e[12]=t=>F.value=t),min:1,max:1e4},null,8,["modelValue"])]),_:1}),l(u,{label:"注册赠送VIP天数"},{default:o(()=>[l(i,{modelValue:M.value,"onUpdate:modelValue":e[13]||(e[13]=t=>M.value=t),min:0,max:999999},null,8,["modelValue"])]),_:1})]),_:1}),l(d,{type:"primary",onClick:Pe},{default:o(()=>[...e[42]||(e[42]=[c("保存注册设置",-1)])]),_:1})]),_:1}),l(E,{shadow:"never","body-style":{padding:"16px"},class:"card"},{default:o(()=>[e[51]||(e[51]=s("h3",{class:"section-title"},"金山文档上传",-1)),l(K,{"label-width":"130px"},{default:o(()=>[l(u,{label:"启用上传"},{default:o(()=>[l(N,{modelValue:j.value,"onUpdate:modelValue":e[14]||(e[14]=t=>j.value=t)},null,8,["modelValue"]),e[44]||(e[44]=s("div",{class:"help"},"表格结构变化时可先关闭,避免错误上传。",-1))]),_:1}),l(u,{label:"文档链接"},{default:o(()=>[l(V,{modelValue:z.value,"onUpdate:modelValue":e[15]||(e[15]=t=>z.value=t),placeholder:"https://kdocs.cn/..."},null,8,["modelValue"])]),_:1}),l(u,{label:"默认县区"},{default:o(()=>[l(V,{modelValue:O.value,"onUpdate:modelValue":e[16]||(e[16]=t=>O.value=t),placeholder:"如:道县(用户可覆盖)"},null,8,["modelValue"])]),_:1}),l(u,{label:"Sheet名称"},{default:o(()=>[l(V,{modelValue:R.value,"onUpdate:modelValue":e[17]||(e[17]=t=>R.value=t),placeholder:"留空使用第一个Sheet"},null,8,["modelValue"])]),_:1}),l(u,{label:"Sheet序号"},{default:o(()=>[l(i,{modelValue:W.value,"onUpdate:modelValue":e[18]||(e[18]=t=>W.value=t),min:0,max:50},null,8,["modelValue"]),e[45]||(e[45]=s("div",{class:"help"},"0 表示第一个Sheet。",-1))]),_:1}),l(u,{label:"县区列"},{default:o(()=>[l(V,{modelValue:G.value,"onUpdate:modelValue":e[19]||(e[19]=t=>G.value=t),placeholder:"A",style:{"max-width":"120px"}},null,8,["modelValue"])]),_:1}),l(u,{label:"图片列"},{default:o(()=>[l(V,{modelValue:J.value,"onUpdate:modelValue":e[20]||(e[20]=t=>J.value=t),placeholder:"D",style:{"max-width":"120px"}},null,8,["modelValue"])]),_:1}),l(u,{label:"管理员通知"},{default:o(()=>[l(N,{modelValue:X.value,"onUpdate:modelValue":e[21]||(e[21]=t=>X.value=t)},null,8,["modelValue"])]),_:1}),l(u,{label:"通知邮箱"},{default:o(()=>[l(V,{modelValue:Y.value,"onUpdate:modelValue":e[22]||(e[22]=t=>Y.value=t),placeholder:"admin@example.com"},null,8,["modelValue"])]),_:1})]),_:1}),s("div",Ze,[l(d,{type:"primary",onClick:Ve},{default:o(()=>[...e[46]||(e[46]=[c("保存表格配置",-1)])]),_:1}),l(d,{loading:P.value,disabled:ue.value&&!P.value,onClick:se},{default:o(()=>[...e[47]||(e[47]=[c(" 刷新状态 ",-1)])]),_:1},8,["loading","disabled"]),l(d,{type:"success",plain:"",loading:S.value,disabled:ue.value&&!S.value,onClick:Ue},{default:o(()=>[...e[48]||(e[48]=[c(" 获取二维码 ",-1)])]),_:1},8,["loading","disabled"]),l(d,{type:"danger",plain:"",loading:I.value,disabled:ue.value&&!I.value,onClick:Ce},{default:o(()=>[...e[49]||(e[49]=[c(" 清除登录 ",-1)])]),_:1},8,["loading","disabled"])]),s("div",el,[e[50]||(e[50]=c(" 登录状态: ",-1)),b.value.last_login_ok===!0?(f(),g("span",ll,"已登录")):b.value.login_required?(f(),g("span",al,"需要扫码")):(f(),g("span",tl,"未知")),c(" · 待上传 "+oe(b.value.queue_size||0)+" ",1),b.value.last_error?(f(),g("span",ol,"· 最近错误:"+oe(b.value.last_error),1)):w("",!0)]),Z.value?(f(),g("div",nl,"操作提示:"+oe(Z.value),1)):w("",!0)]),_:1}),l(Be,{modelValue:C.value,"onUpdate:modelValue":e[23]||(e[23]=t=>C.value=t),title:"扫码登录",width:"min(420px, 92vw)"},{default:o(()=>[s("div",ul,[h.value?(f(),g("img",{key:0,src:`data:image/png;base64,${h.value}`,alt:"KDocs QR"},null,8,sl)):w("",!0),e[52]||(e[52]=s("div",{class:"help"},"请使用管理员微信扫码登录。",-1))])]),_:1},8,["modelValue"])])),[[Te,_.value]])}}},cl=Ee(dl,[["__scopeId","data-v-682b6c42"]]);export{cl as default};
|