2 lines
5.3 KiB
JavaScript
2 lines
5.3 KiB
JavaScript
|
|
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-020bfa5d.js";import{t as k}from"./taskStatus-2a5703c9.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('<option value="" data-v-7c90e244>全部状态</option><option value="PENDING" data-v-7c90e244>待处理</option><option value="PROCESSING" data-v-7c90e244>处理中</option><option value="COMPLETED" data-v-7c90e244>已完成</option><option value="FAILED" data-v-7c90e244>失败</option><option value="CAN
|