import{r as m,c as g,m as O,U as R,z as n,A as i,B as s,P as o,M as r,K as x,aE as G,aD as F,Q as $,a4 as z,D as C,E as B}from"./vue-vendor-164775a6.js";import{_ as V,u as K}from"./index-467ea2ad.js";import{t as k}from"./taskStatus-55c63cec.js";import{E as l}from"./element-plus-83a396df.js";import"./utils-edfcd65b.js";const Q={class:"task-status-page"},j={class:"page-header"},q={class:"header-actions"},H=["disabled"],J={class:"stats-cards"},W={class:"stat-card"},X={class:"stat-content"},Y={class:"stat-number"},Z={class:"stat-card"},ss={class:"stat-content"},ts={class:"stat-number"},es={class:"stat-card"},as={class:"stat-content"},os={class:"stat-number"},ns={class:"stat-card"},is={class:"stat-content"},ls={class:"stat-number"},rs={class:"task-list"},cs={class:"list-header"},ds={class:"filter-controls"},us={class:"task-items"},vs={class:"task-main"},ps={class:"task-info"},_s={class:"task-id"},ms={class:"task-type"},gs={class:"task-time"},ks={class:"task-status"},fs={key:0,class:"progress-info"},hs={class:"progress-bar"},ys={class:"progress-text"},bs={class:"task-actions"},Cs=["onClick"],Es=["onClick"],Ts=["onClick"],Is={key:0,class:"empty-state"},Ss={__name:"TaskStatusPage",setup(Ds){const f=K(),c=m([]),d=m(!1),u=m(""),v=m(null),E=g(()=>f.isAdmin),p=g(()=>{const e={pending:0,processing:0,completed:0,failed:0};return c.value.forEach(t=>{switch(t.status){case"PENDING":e.pending++;break;case"PROCESSING":e.processing++;break;case"COMPLETED":e.completed++;break;case"FAILED":case"CANCELLED":case"TIMEOUT":e.failed++;break}}),e}),h=g(()=>u.value?c.value.filter(e=>e.status===u.value):c.value),_=async()=>{var e;try{d.value=!0;const t=await k.getUserTaskStatuses((e=f.user)==null?void 0:e.username);c.value=t.data}catch(t){console.error("获取任务列表失败:",t),l.error("获取任务列表失败")}finally{d.value=!1}},T=async()=>{await _(),l.success("任务列表已刷新")},I=()=>{},S=async e=>{try{const t=await k.cancelTask(e);t.data.success?(l.success("任务已取消"),await _()):l.error(t.data.message)}catch(t){console.error("取消任务失败:",t),l.error("取消任务失败")}},D=e=>{window.open(e,"_blank")},w=e=>{l.info("重试功能开发中")},N=async()=>{try{(await k.triggerPolling()).data.success&&l.success("轮询已触发")}catch(e){console.error("触发轮询失败:",e),l.error("触发轮询失败")}},P=e=>`task-item-${e.toLowerCase()}`,A=e=>`status-${e.toLowerCase()}`,L=e=>e?new Date(e).toLocaleString("zh-CN"):"-",U=()=>{v.value=setInterval(_,3e4)},M=()=>{v.value&&(clearInterval(v.value),v.value=null)};return O(()=>{_(),U()}),R(()=>{M()}),(e,t)=>(n(),i("div",Q,[s("div",j,[t[1]||(t[1]=s("h1",null,"任务状态监控",-1)),s("div",q,[s("button",{onClick:T,class:"btn-refresh",disabled:d.value},o(d.value?"刷新中...":"刷新全部"),9,H),E.value?(n(),i("button",{key:0,onClick:N,class:"btn-poll"}," 手动轮询 ")):r("",!0)])]),s("div",J,[s("div",W,[t[3]||(t[3]=s("div",{class:"stat-icon pending"},"⏳",-1)),s("div",X,[s("div",Y,o(p.value.pending),1),t[2]||(t[2]=s("div",{class:"stat-label"},"待处理",-1))])]),s("div",Z,[t[5]||(t[5]=s("div",{class:"stat-icon processing"},"🔄",-1)),s("div",ss,[s("div",ts,o(p.value.processing),1),t[4]||(t[4]=s("div",{class:"stat-label"},"处理中",-1))])]),s("div",es,[t[7]||(t[7]=s("div",{class:"stat-icon completed"},"✅",-1)),s("div",as,[s("div",os,o(p.value.completed),1),t[6]||(t[6]=s("div",{class:"stat-label"},"已完成",-1))])]),s("div",ns,[t[9]||(t[9]=s("div",{class:"stat-icon failed"},"❌",-1)),s("div",is,[s("div",ls,o(p.value.failed),1),t[8]||(t[8]=s("div",{class:"stat-label"},"失败",-1))])])]),s("div",rs,[s("div",cs,[t[11]||(t[11]=s("h2",null,"任务列表",-1)),s("div",ds,[x(s("select",{"onUpdate:modelValue":t[0]||(t[0]=a=>u.value=a),onChange:I},[...t[10]||(t[10]=[F('',7)])],544),[[G,u.value]])])]),s("div",us,[(n(!0),i($,null,z(h.value,a=>{var y;return n(),i("div",{key:a.taskId,class:C(["task-item",P(a.status)])},[s("div",vs,[s("div",ps,[s("div",_s,o(a.taskId),1),s("div",ms,o(((y=a.taskType)==null?void 0:y.description)||a.taskType),1),s("div",gs,o(L(a.createdAt)),1)]),s("div",ks,[s("div",{class:C(["status-badge",A(a.status)])},o(a.statusDescription||a.status),3),a.status==="PROCESSING"?(n(),i("div",fs,[s("div",hs,[s("div",{class:"progress-fill",style:B({width:a.progress+"%"})},null,4)]),s("span",ys,o(a.progress)+"%",1)])):r("",!0)])]),s("div",bs,[a.status==="PROCESSING"?(n(),i("button",{key:0,onClick:b=>S(a.taskId),class:"btn-cancel"}," 取消 ",8,Cs)):r("",!0),a.resultUrl?(n(),i("button",{key:1,onClick:b=>D(a.resultUrl),class:"btn-view"}," 查看结果 ",8,Es)):r("",!0),["FAILED","TIMEOUT"].includes(a.status)?(n(),i("button",{key:2,onClick:b=>w(a.taskId),class:"btn-retry"}," 重试 ",8,Ts)):r("",!0)])],2)}),128))]),h.value.length===0?(n(),i("div",Is,[...t[12]||(t[12]=[s("div",{class:"empty-icon"},"📋",-1),s("div",{class:"empty-text"},"暂无任务",-1)])])):r("",!0)])]))}},Us=V(Ss,[["__scopeId","data-v-7c90e244"]]);export{Us as default};