Files
Nexus/web/app/assets/RetriesPage-DrHJggVF.js
T
Nexus Agent 0b2d7ac50d feat(scripts): 异步执行、全局进度看板与完成提示音设置
脚本 exec 立即返回 running 并在后台跑批次;/ws/alerts 推送 script_progress/complete;
新增 ScriptRunsPage、Telegram 汇总通知与可配置的浏览器完成提示音。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 07:07:02 +08:00

1 line
4.6 KiB
JavaScript

import{Er as e,F as t,L as n,N as r,Nr as i,P as a,Ur as o,_r as s,ar as c,er as l,hr as u,nr as d,or as f,sr as p,tr as m,z as h,zr as g,zt as _}from"./index-Hwt84p4T.js";import{o as v,t as y}from"./VContainer-DVdhFFDK.js";import{n as b}from"./dataTable-esDY4cOk.js";import{t as x}from"./VChip-BOlm6rKc.js";import{t as S}from"./VSelect-Ce9_iAcL.js";import{t as C}from"./VDataTableServer-Ch0R1ufY.js";import{t as w}from"./VSpacer-Dz9VwXyE.js";import{t as T}from"./VDialog-B1iv2FHm.js";var E={class:`font-weight-medium text-truncate d-inline-block`,style:{"max-width":`240px`}},D={class:`text-medium-emphasis`},O={class:`text-medium-emphasis`},k={class:`text-caption text-medium-emphasis`},A={class:`text-caption text-medium-emphasis`},j=p({__name:`RetriesPage`,setup(p){let j=v(),M=i(!1),N=i([]),P=i(0),F=i(1),I=i(null),L=i(!1),R=i(null),z=[{label:`待重试`,value:`pending`},{label:`重试中`,value:`retrying`},{label:`成功`,value:`success`},{label:`失败`,value:`failed`}],B=b([{title:`状态`,key:`status`,width:100},{title:`任务`,key:`operation`},{title:`服务器`,key:`server_name`},{title:`次数`,key:`retry_count`,width:100},{title:`下次重试`,key:`next_retry_at`,width:140},{title:`创建时间`,key:`created_at`,width:160},{title:``,key:`actions`,width:120,align:`end`}]);async function V(){M.value=!0;try{let e=(await _.getList(`/retries/`,{limit:200})).items||[];I.value&&(e=e.filter(e=>e.status===I.value)),P.value=e.length;let t=(F.value-1)*20;N.value=e.slice(t,t+20)}catch(e){N.value=[],P.value=0,j(e instanceof Error?e.message:`加载重试队列失败`,`error`)}finally{M.value=!1}}async function H(e){try{await _.post(`/retries/${e.id}/retry`),V(),j(`重试已触发`)}catch(e){j(e.message||`操作失败`,`error`)}}function U(e){R.value=e.id,L.value=!0}async function W(){if(R.value)try{await _.delete(`/retries/${R.value}`),L.value=!1,V(),j(`已删除`)}catch(e){j(e.message||`删除失败`,`error`)}}function G(e){return e===`success`?`success`:e===`failed`?`error`:e===`retrying`?`warning`:`info`}function K(e){return e===`pending`?`待重试`:e===`retrying`?`重试中`:e===`success`?`成功`:e===`failed`?`失败`:e}function q(e){return e.source_path&&e.target_path?`${e.source_path}${e.target_path}`:e.source_path||e.target_path||`文件推送`}return u(()=>V()),(i,u)=>(s(),m(y,{fluid:``,class:`pa-6`},{default:e(()=>[f(r,{elevation:`0`,border:``,rounded:`lg`},{default:e(()=>[f(t,{class:`d-flex align-center text-h6`},{default:e(()=>[u[5]||=c(` 重试队列 `,-1),f(w),f(S,{modelValue:I.value,"onUpdate:modelValue":[u[0]||=e=>I.value=e,u[1]||=e=>{F.value=1,V()}],items:z,"item-title":`label`,"item-value":`value`,label:`状态筛选`,variant:`outlined`,density:`compact`,"hide-details":``,style:{"max-width":`160px`},clearable:``},null,8,[`modelValue`])]),_:1}),f(C,{items:N.value,headers:g(B),"items-length":P.value,loading:M.value,page:F.value,"items-per-page":20,hover:``,density:`comfortable`,"onUpdate:page":u[2]||=e=>{F.value=e,V()}},{"item.status":e(({item:t})=>[f(x,{color:G(t.status),size:`x-small`,variant:`tonal`,label:``,border:`sm`},{default:e(()=>[c(o(K(t.status)),1)]),_:2},1032,[`color`])]),"item.operation":e(({item:e})=>[l(`span`,E,o(q(e)),1)]),"item.server_name":e(({item:e})=>[l(`span`,D,o(e.server_name||`—`),1)]),"item.retry_count":e(({item:e})=>[l(`span`,O,o(e.retry_count||0)+` / `+o(e.max_retries||3),1)]),"item.next_retry_at":e(({item:e})=>[l(`span`,k,o(e.next_retry_at||`—`),1)]),"item.created_at":e(({item:e})=>[l(`span`,A,o(e.created_at),1)]),"item.actions":e(({item:t})=>[t.status===`pending`||t.status===`failed`?(s(),m(h,{key:0,variant:`text`,size:`x-small`,color:`primary`,density:`compact`,onClick:e=>H(t)},{default:e(()=>[...u[6]||=[c(` 重试 `,-1)]]),_:1},8,[`onClick`])):d(``,!0),f(h,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:e=>U(t)},{default:e(()=>[...u[7]||=[c(` 删除 `,-1)]]),_:1},8,[`onClick`])]),"no-data":e(()=>[...u[8]||=[l(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`])]),_:1}),f(T,{modelValue:L.value,"onUpdate:modelValue":u[4]||=e=>L.value=e,"max-width":`400`},{default:e(()=>[f(r,{border:``},{default:e(()=>[f(t,null,{default:e(()=>[...u[9]||=[c(`确认删除`,-1)]]),_:1}),f(a,null,{default:e(()=>[...u[10]||=[c(`确定要删除此重试任务吗?`,-1)]]),_:1}),f(n,null,{default:e(()=>[f(w),f(h,{variant:`text`,onClick:u[3]||=e=>L.value=!1},{default:e(()=>[...u[11]||=[c(`取消`,-1)]]),_:1}),f(h,{color:`error`,variant:`flat`,onClick:W},{default:e(()=>[...u[12]||=[c(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{j as default};