2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{f as me}from"./accounts-DI7tHfNj.js";import{p as h,_ as ve,n as fe,a as y,r as _e,c as ye,o as be,b,h as w,i as Q,d as a,w as s,e as v,f as i,g as u,k as f,F as V,v as B,t as _,E as m,x as W}from"./index-BstQMnWL.js";async function ge(){const{data:r}=await h.get("/schedules");return r}async function we(r){const{data:d}=await h.post("/schedules",r);return d}async function he(r,d){const{data:g}=await h.put(`/schedules/${r}`,d);return g}async function ke(r){const{data:d}=await h.delete(`/schedules/${r}`);return d}async function Ve(r,d){const{data:g}=await h.post(`/schedules/${r}/toggle`,d);return g}async function Se(r){const{data:d}=await h.post(`/schedules/${r}/run`,{});return d}async function xe(r,d={}){const{data:g}=await h.get(`/schedules/${r}/logs`,{params:d});return g}async function $e(r){const{data:d}=await h.delete(`/schedules/${r}/logs`);return d}const Ce={class:"page"},Ne={class:"vip-actions"},Be={class:"panel-head"},Te={class:"panel-actions"},Ue={key:1,class:"grid"},Me={class:"schedule-top"},ze={class:"schedule-main"},Ie={class:"schedule-title"},Le={class:"schedule-name"},Pe={class:"schedule-meta app-muted"},Ee={class:"schedule-meta app-muted"},Ae={class:"schedule-switch"},Oe={class:"schedule-actions"},He={key:1,class:"logs"},je={class:"log-head"},De={class:"app-muted"},Fe={class:"log-body"},Re={key:0,class:"log-error"},qe={__name:"SchedulesPage",setup(r){const d=fe(),g=y(!1),T=y([]),I=y(!1),L=y([]),S=y(!1),P=y(!1),C=y(null),U=y(!1),E=y(!1),x=y([]),M=y(null),k=y(!1),n=_e({name:"",schedule_time:"08:00",weekdays:["1","2","3","4","5"],browse_type:"应读",enable_screenshot:!0,account_ids:[]}),X=[{label:"应读",value:"应读"},{label:"未读",value:"未读"},{label:"注册前未读",value:"注册前未读"}],j=[{label:"周一",value:"1"},{label:"周二",value:"2"},{label:"周三",value:"3"},{label:"周四",value:"4"},{label:"周五",value:"5"},{label:"周六",value:"6"},{label:"周日",value:"7"}],c=ye(()=>d.isVip);function A(t){const e=String(t||"").match(/^(\d{1,2}):(\d{2})$/);if(!e)return null;const o=Number(e[1]),p=Number(e[2]);return Number.isNaN(o)||Number.isNaN(p)||o<0||o>23||p<0||p>59?null:`${String(o).padStart(2,"0")}:${String(p).padStart(2,"0")}`}function Y(t){const e=Array.isArray(t)?t:String(t||"").split(",").filter(Boolean),o=Object.fromEntries(j.map(p=>[p.value,p.label]));return e.map(p=>o[String(p)]||String(p)).join(" ")}async function Z(){I.value=!0;try{const t=await me({refresh:!1});L.value=(t||[]).map(e=>({label:e.username,value:e.id}))}catch{L.value=[]}finally{I.value=!1}}async function z(){g.value=!0;try{T.value=await ge()}catch(t){t?.response?.status===401&&(window.location.href="/login"),T.value=[]}finally{g.value=!1}}function ee(){C.value=null,n.name="",n.schedule_time="08:00",n.weekdays=["1","2","3","4","5"],n.browse_type="应读",n.enable_screenshot=!0,n.account_ids=[],S.value=!0}function le(t){C.value=t.id,n.name=t.name||"",n.schedule_time=A(t.schedule_time)||"08:00",n.weekdays=String(t.weekdays||"").split(",").filter(Boolean).map(e=>String(e)),n.weekdays.length===0&&(n.weekdays=["1","2","3","4","5"]),n.browse_type=t.browse_type||"应读",n.enable_screenshot=Number(t.enable_screenshot??1)!==0,n.account_ids=Array.isArray(t.account_ids)?t.account_ids.slice():[],S.value=!0}async function te(){if(!c.value){k.value=!0;return}const t=A(n.schedule_time);if(!t){m.error("时间格式错误,请使用 HH:MM");return}if(!n.weekdays||n.weekdays.length===0){m.warning("请选择至少一个执行日期");return}P.value=!0;try{const e={name:n.name.trim()||"我的定时任务",schedule_time:t,weekdays:n.weekdays.join(","),browse_type:n.browse_type,enable_screenshot:n.enable_screenshot?1:0,account_ids:n.account_ids};C.value?(await he(C.value,e),m.success("保存成功")):(await we(e),m.success("创建成功")),S.value=!1,await z()}catch(e){const o=e?.response?.data;m.error(o?.error||"保存失败")}finally{P.value=!1}}async function ae(t){try{await W.confirm(`确定要删除定时任务「${t.name||"未命名任务"}」吗?`,"删除任务",{confirmButtonText:"删除",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await ke(t.id);e?.success?(m.success("已删除"),await z()):m.error(e?.error||"删除失败")}catch(e){const o=e?.response?.data;m.error(o?.error||"删除失败")}}async function se(t,e){if(!c.value){k.value=!0;return}try{(await Ve(t.id,{enabled:e}))?.success&&(t.enabled=e?1:0,m.success(e?"已启用":"已禁用"))}catch{m.error("操作失败")}}async function ne(t){if(!c.value){k.value=!0;return}try{const e=await Se(t.id);e?.success?m.success(e?.message||"已开始执行"):m.error(e?.error||"执行失败")}catch(e){const o=e?.response?.data;m.error(o?.error||"执行失败")}}async function oe(t){M.value=t,U.value=!0,E.value=!0;try{x.value=await xe(t.id,{limit:20})}catch{x.value=[]}finally{E.value=!1}}async function ue(){const t=M.value;if(t){try{await W.confirm("确定要清空该任务的所有执行日志吗?","清空日志",{confirmButtonText:"清空",cancelButtonText:"取消",type:"warning"})}catch{return}try{const e=await $e(t.id);e?.success?(m.success(`已清空 ${e?.deleted||0} 条日志`),x.value=[]):m.error(e?.error||"操作失败")}catch{m.error("操作失败")}}}function ie(t){const e=String(t||"");return e==="success"||e==="completed"?"success":e==="failed"?"danger":"info"}function de(t){const e=Number(t||0),o=Math.floor(e/60),p=e%60;return o<=0?`${p} 秒`:`${o} 分 ${p} 秒`}return be(async()=>{d.vipInfo||d.refreshVipInfo().catch(()=>{window.location.href="/login"}),await Promise.all([Z(),z()])}),(t,e)=>{const o=v("el-button"),p=v("el-alert"),D=v("el-skeleton"),F=v("el-empty"),R=v("el-tag"),q=v("el-switch"),O=v("el-card"),G=v("el-input"),$=v("el-form-item"),re=v("el-checkbox"),ce=v("el-checkbox-group"),J=v("el-option"),K=v("el-select"),pe=v("el-form"),H=v("el-dialog");return i(),b("div",Ce,[c.value?Q("",!0):(i(),w(p,{key:0,type:"warning","show-icon":"",closable:!1,title:"定时任务为 VIP 专属功能,升级后可使用。",class:"vip-alert"},{default:s(()=>[u("div",Ne,[a(o,{type:"primary",plain:"",onClick:e[0]||(e[0]=l=>k.value=!0)},{default:s(()=>[...e[13]||(e[13]=[f("了解VIP特权",-1)])]),_:1})])]),_:1})),a(O,{shadow:"never",class:"panel","body-style":{padding:"14px"}},{default:s(()=>[u("div",Be,[e[16]||(e[16]=u("div",{class:"panel-title"},"定时任务",-1)),u("div",Te,[a(o,{loading:g.value,onClick:z},{default:s(()=>[...e[14]||(e[14]=[f("刷新",-1)])]),_:1},8,["loading"]),a(o,{type:"primary",disabled:!c.value,onClick:ee},{default:s(()=>[...e[15]||(e[15]=[f("新建任务",-1)])]),_:1},8,["disabled"])])]),g.value?(i(),w(D,{key:0,rows:6,animated:""})):(i(),b(V,{key:1},[T.value.length===0?(i(),w(F,{key:0,description:"暂无定时任务"})):(i(),b("div",Ue,[(i(!0),b(V,null,B(T.value,l=>(i(),w(O,{key:l.id,shadow:"never",class:"schedule-card","body-style":{padding:"14px"}},{default:s(()=>[u("div",Me,[u("div",ze,[u("div",Ie,[u("span",Le,_(l.name||"未命名任务"),1),a(R,{size:"small",effect:"light",type:Number(l.enabled)?"success":"info"},{default:s(()=>[f(_(Number(l.enabled)?"启用":"停用"),1)]),_:2},1032,["type"])]),u("div",Pe,[u("span",null,"⏰ "+_(A(l.schedule_time)||l.schedule_time),1),u("span",null,"📅 "+_(Y(l.weekdays)),1)]),u("div",Ee,[u("span",null,"📋 "+_(l.browse_type||"应读"),1),u("span",null,"👥 "+_((l.account_ids||[]).length)+" 个账号",1),u("span",null,_(Number(l.enable_screenshot??1)!==0?"📸 截图":"📷 不截图"),1)])]),u("div",Ae,[a(q,{"model-value":!!Number(l.enabled),disabled:!c.value,"inline-prompt":"","active-text":"启用","inactive-text":"停用",onChange:N=>se(l,N)},null,8,["model-value","disabled","onChange"])])]),u("div",Oe,[a(o,{size:"small",type:"primary",disabled:!c.value,onClick:N=>ne(l)},{default:s(()=>[...e[17]||(e[17]=[f("立即执行",-1)])]),_:1},8,["disabled","onClick"]),a(o,{size:"small",onClick:N=>oe(l)},{default:s(()=>[...e[18]||(e[18]=[f("日志",-1)])]),_:1},8,["onClick"]),a(o,{size:"small",disabled:!c.value,onClick:N=>le(l)},{default:s(()=>[...e[19]||(e[19]=[f("编辑",-1)])]),_:1},8,["disabled","onClick"]),a(o,{size:"small",type:"danger",text:"",disabled:!c.value,onClick:N=>ae(l)},{default:s(()=>[...e[20]||(e[20]=[f("删除",-1)])]),_:1},8,["disabled","onClick"])])]),_:2},1024))),128))]))],64))]),_:1}),a(H,{modelValue:S.value,"onUpdate:modelValue":e[8]||(e[8]=l=>S.value=l),title:C.value?"编辑定时任务":"新建定时任务",width:"min(720px, 92vw)"},{footer:s(()=>[a(o,{onClick:e[7]||(e[7]=l=>S.value=!1)},{default:s(()=>[...e[21]||(e[21]=[f("取消",-1)])]),_:1}),a(o,{type:"primary",loading:P.value,disabled:!c.value,onClick:te},{default:s(()=>[...e[22]||(e[22]=[f("保存",-1)])]),_:1},8,["loading","disabled"])]),default:s(()=>[a(pe,{"label-position":"top"},{default:s(()=>[a($,{label:"任务名称"},{default:s(()=>[a(G,{modelValue:n.name,"onUpdate:modelValue":e[1]||(e[1]=l=>n.name=l),placeholder:"我的定时任务",disabled:!c.value},null,8,["modelValue","disabled"])]),_:1}),a($,{label:"执行时间(HH:MM)"},{default:s(()=>[a(G,{modelValue:n.schedule_time,"onUpdate:modelValue":e[2]||(e[2]=l=>n.schedule_time=l),placeholder:"08:00",disabled:!c.value},null,8,["modelValue","disabled"])]),_:1}),a($,{label:"执行日期"},{default:s(()=>[a(ce,{modelValue:n.weekdays,"onUpdate:modelValue":e[3]||(e[3]=l=>n.weekdays=l),disabled:!c.value},{default:s(()=>[(i(),b(V,null,B(j,l=>a(re,{key:l.value,label:l.value},{default:s(()=>[f(_(l.label),1)]),_:2},1032,["label"])),64))]),_:1},8,["modelValue","disabled"])]),_:1}),a($,{label:"浏览类型"},{default:s(()=>[a(K,{modelValue:n.browse_type,"onUpdate:modelValue":e[4]||(e[4]=l=>n.browse_type=l),style:{width:"160px"},disabled:!c.value},{default:s(()=>[(i(),b(V,null,B(X,l=>a(J,{key:l.value,label:l.label,value:l.value},null,8,["label","value"])),64))]),_:1},8,["modelValue","disabled"])]),_:1}),a($,{label:"截图"},{default:s(()=>[a(q,{modelValue:n.enable_screenshot,"onUpdate:modelValue":e[5]||(e[5]=l=>n.enable_screenshot=l),disabled:!c.value,"inline-prompt":"","active-text":"截图","inactive-text":"不截图"},null,8,["modelValue","disabled"])]),_:1}),a($,{label:"参与账号"},{default:s(()=>[a(K,{modelValue:n.account_ids,"onUpdate:modelValue":e[6]||(e[6]=l=>n.account_ids=l),multiple:"",filterable:"","collapse-tags":"","collapse-tags-tooltip":"",placeholder:"选择账号(可多选)",style:{width:"100%"},loading:I.value,disabled:!c.value},{default:s(()=>[(i(!0),b(V,null,B(L.value,l=>(i(),w(J,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),a(H,{modelValue:U.value,"onUpdate:modelValue":e[10]||(e[10]=l=>U.value=l),title:M.value?`【${M.value.name||"未命名任务"}】执行日志`:"执行日志",width:"min(760px, 92vw)"},{footer:s(()=>[a(o,{onClick:e[9]||(e[9]=l=>U.value=!1)},{default:s(()=>[...e[23]||(e[23]=[f("关闭",-1)])]),_:1}),a(o,{type:"danger",plain:"",disabled:x.value.length===0,onClick:ue},{default:s(()=>[...e[24]||(e[24]=[f("清空日志",-1)])]),_:1},8,["disabled"])]),default:s(()=>[E.value?(i(),w(D,{key:0,rows:6,animated:""})):(i(),b(V,{key:1},[x.value.length===0?(i(),w(F,{key:0,description:"暂无执行日志"})):(i(),b("div",He,[(i(!0),b(V,null,B(x.value,l=>(i(),w(O,{key:l.id,shadow:"never",class:"log-card","body-style":{padding:"12px"}},{default:s(()=>[u("div",je,[a(R,{size:"small",effect:"light",type:ie(l.status)},{default:s(()=>[f(_(l.status==="failed"?"失败":l.status==="running"?"进行中":"成功"),1)]),_:2},1032,["type"]),u("span",De,_(l.created_at||""),1)]),u("div",Fe,[u("div",null,"账号数:"+_(l.total_accounts||0)+" 个",1),u("div",null,"成功:"+_(l.success_count||0)+" 个 · 失败:"+_(l.failed_count||0)+" 个",1),u("div",null,"耗时:"+_(de(l.duration||0)),1),l.error_message?(i(),b("div",Re,"错误:"+_(l.error_message),1)):Q("",!0)])]),_:2},1024))),128))]))],64))]),_:1},8,["modelValue","title"]),a(H,{modelValue:k.value,"onUpdate:modelValue":e[12]||(e[12]=l=>k.value=l),title:"VIP 特权",width:"min(560px, 92vw)"},{footer:s(()=>[a(o,{type:"primary",onClick:e[11]||(e[11]=l=>k.value=!1)},{default:s(()=>[...e[25]||(e[25]=[f("我知道了",-1)])]),_:1})]),default:s(()=>[a(p,{type:"info",closable:!1,title:"升级 VIP 后可解锁:无限账号、优先排队、定时任务、批量操作。","show-icon":""}),e[26]||(e[26]=u("div",{class:"vip-body"},[u("div",{class:"vip-tip app-muted"},"升级方式:请通过“反馈”联系管理员开通。")],-1))]),_:1},8,["modelValue"])])}}},Ke=ve(qe,[["__scopeId","data-v-ee36bae1"]]);export{Ke as default};
|