Files
AIGC/demo/deploy_baota/frontend/static/TaskStatusPage-0cb18df2.js

2 lines
5.5 KiB
JavaScript
Raw Normal View History

2025-11-13 17:01:39 +08:00
import{r as g,c as m,m as R,U as x,z as n,A as i,B as s,P as o,M as c,K as G,aE as F,aD as z,Q as B,a4 as V,D as T,E as K}from"./vue-vendor-164775a6.js";import{a as k,_ as Q,u as j}from"./index-2fb4354b.js";import{E as l}from"./element-plus-4a19e5e8.js";import"./utils-edfcd65b.js";const h={getTaskStatus(r){return k.get(`/task-status/${r}`)},getUserTaskStatuses(r){return k.get(`/task-status/user/${r}`)},cancelTask(r){return k.post(`/task-status/${r}/cancel`)},triggerPolling(){return k.post("/task-status/poll")}};const q={class:"task-status-page"},H={class:"page-header"},J={class:"header-actions"},W=["disabled"],X={class:"stats-cards"},Y={class:"stat-card"},Z={class:"stat-content"},ss={class:"stat-number"},ts={class:"stat-card"},es={class:"stat-content"},as={class:"stat-number"},os={class:"stat-card"},ns={class:"stat-content"},is={class:"stat-number"},ls={class:"stat-card"},rs={class:"stat-content"},cs={class:"stat-number"},ds={class:"task-list"},us={class:"list-header"},vs={class:"filter-controls"},ps={class:"task-items"},_s={class:"task-main"},fs={class:"task-info"},gs={class:"task-id"},ks={class:"task-type"},ms={class:"task-time"},hs={class:"task-status"},ys={key:0,class:"progress-info"},bs={class:"progress-bar"},Cs={class:"progress-text"},Es={class:"task-actions"},Ts=["onClick"],Ss=["onClick"],Is=["onClick"],Ds={key:0,class:"empty-state"},ws={__name:"TaskStatusPage",setup(r){const y=j(),d=g([]),u=g(!1),v=g(""),p=g(null),S=m(()=>y.isAdmin),_=m(()=>{const e={pending:0,processing:0,completed:0,failed:0};return d.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}),b=m(()=>v.value?d.value.filter(e=>e.status===v.value):d.value),f=async()=>{var e;try{u.value=!0;const t=await h.getUserTaskStatuses((e=y.user)==null?void 0:e.username);d.value=t.data}catch(t){console.error("获取任务列表失败:",t),l.error("获取任务列表失败")}finally{u.value=!1}},I=async()=>{await f(),l.success("任务列表已刷新")},D=()=>{},w=async e=>{try{const t=await h.cancelTask(e);t.data.success?(l.success("任务已取消"),await f()):l.error(t.data.message)}catch(t){console.error("取消任务失败:",t),l.error("取消任务失败")}},P=e=>{window.open(e,"_blank")},N=e=>{l.info("重试功能开发中")},A=async()=>{try{(await h.triggerPolling()).data.success&&l.success("轮询已触发")}catch(e){console.error("触发轮询失败:",e),l.error("触发轮询失败")}},L=e=>`task-item-${e.toLowerCase()}`,U=e=>`status-${e.toLowerCase()}`,M=e=>e?new Date(e).toLocaleString("zh-CN"):"-",O=()=>{p.value=setInterval(f,3e4)},$=()=>{p.value&&(clearInterval(p.value),p.value=null)};return R(()=>{f(),O()}),x(()=>{$()}),(e,t)=>(n(),i("div",q,[s("div",H,[t[1]||(t[1]=s("h1",null,"任务状态监控",-1)),s("div",J,[s("button",{onClick:I,class:"btn-refresh",disabled:u.value},o(u.value?"刷新中...":"刷新全部"),9,W),S.value?(n(),i("button",{key:0,onClick:A,class:"btn-poll"}," 手动轮询 ")):c("",!0)])]),s("div",X,[s("div",Y,[t[3]||(t[3]=s("div",{class:"stat-icon pending"},"⏳",-1)),s("div",Z,[s("div",ss,o(_.value.pending),1),t[2]||(t[2]=s("div",{class:"stat-label"},"待处理",-1))])]),s("div",ts,[t[5]||(t[5]=s("div",{class:"stat-icon processing"},"🔄",-1)),s("div",es,[s("div",as,o(_.value.processing),1),t[4]||(t[4]=s("div",{class:"stat-label"},"处理中",-1))])]),s("div",os,[t[7]||(t[7]=s("div",{class:"stat-icon completed"},"✅",-1)),s("div",ns,[s("div",is,o(_.value.completed),1),t[6]||(t[6]=s("div",{class:"stat-label"},"已完成",-1))])]),s("div",ls,[t[9]||(t[9]=s("div",{class:"stat-icon failed"},"❌",-1)),s("div",rs,[s("div",cs,o(_.value.failed),1),t[8]||(t[8]=s("div",{class:"stat-label"},"失败",-1))])])]),s("div",ds,[s("div",us,[t[11]||(t[11]=s("h2",null,"任务列表",-1)),s("div",vs,[G(s("select",{"onUpdate:modelValue":t[0]||(t[0]=a=>v.value=a),onChange:D},[...t[10]||(t[10]=[z('<option value="" data-v-5e35f196>全部状态</option><option value="PENDING" data-v-5e35f196>待处理</