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