1 line
14 KiB
JavaScript
1 line
14 KiB
JavaScript
|
|
import{t as e,x as t}from"./VDataTable-CA2-7Joy.js";import{$n as n,Ar as r,Br as i,Cr as a,Et as ee,F as o,I as s,Ir as c,J as te,Jn as ne,M as l,N as u,P as d,Qn as f,R as p,Rt as m,X as h,Xn as re,Yn as ie,_ as ae,_r as oe,ar as g,er as _,hr as v,ir as y,k as b,lr as se,mr as ce,nr as x,or as le,pr as ue,qn as de,t as S,tr as C,w as fe,wr as pe,xr as me}from"./index-o0-2k-vI.js";import{o as he,t as ge}from"./VContainer-BbTGUkA2.js";import{t as w}from"./VChip-B_7LyIUT.js";import{t as _e}from"./VSelect-RidH-jin.js";import{n as T,t as ve}from"./VRow-D9pCZkmz.js";import{t as E}from"./VSpacer-DE-o2Lgp.js";import{t as ye}from"./apiError-nzQ5DKV3.js";import{t as be}from"./useServerList-CY5z3iKc.js";import{i as D}from"./validation-DMwOxx4a.js";import{t as O}from"./VDialog-nLwlI-ms.js";import{t as xe}from"./VTextarea-C1n35Aqz.js";var Se={class:`text-body-1 font-weight-medium`},Ce={class:`text-body-2 text-medium-emphasis`},we={class:`text-caption text-medium-emphasis mt-2`},Te={key:1,class:`d-flex justify-center mt-4`},Ee={class:`text-caption`},De={class:`d-flex align-center ga-2`},Oe={class:`text-body-2`},ke={key:0},Ae={key:1,class:`text-medium-emphasis`},k=le({__name:`ScriptsPage`,setup(le){let k=he(),{servers:je,loadServers:Me}=be(),A=r(!1),j=r(``),M=r([]),N=r(1),P=r(0),F=r(20),I=r(!1),L=r(null),R=r(!1),z=r({name:``,category:``,description:``,content:``}),B=r(!1),V=r(null),H=r([]),U=r(300),W=r(!1),G=r(!1),K=r(null),q=r(!1),Ne=r(null),J=r([]),Y=r(!1),X=r(``),Z=r([]),Pe=r(60),Fe=r(!1),Q=r([]),Ie=null,Le=[{title:`命令`,key:`command`},{title:`状态`,key:`status`,width:100},{title:`进度`,key:`progress`,width:100},{title:`操作人`,key:`operator`,width:80},{title:`开始时间`,key:`started_at`,width:160}],Re=f(()=>{if(!j.value)return M.value;let e=j.value.toLowerCase();return M.value.filter(t=>t.name.toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e))});async function $(){A.value=!0;try{let e=await m.getList(`/scripts/`,{page:N.value,per_page:F.value});M.value=e.items,P.value=e.total}catch(e){M.value=[],k(ye(e,`加载脚本列表失败`),`error`)}finally{A.value=!1}}me(j,()=>{N.value=1,$()});function ze(e){L.value=e,e?z.value={name:e.name,category:e.category||``,description:e.description||``,content:e.content||``}:z.value={name:``,category:``,description:``,content:``},I.value=!0}async function Be(){R.value=!0;try{L.value?await m.put(`/scripts/${L.value.id}`,z.value):await m.post(`/scripts/`,z.value),I.value=!1,$(),k(`保存成功`)}catch(e){k(e.message||`保存失败`,`error`)}finally{R.value=!1}}function Ve(e){V.value=e,H.value=[],B.value=!0}async function He(){if(!V.value||!H.value.length){k(`请选择服务器`,`warning`);return}W.value=!0;try{let e=await m.post(`/scripts/exec`,{script_id:V.value.id,server_ids:H.value,timeout:U.value});B.value=!1,k(`脚本已提交执行`),qe(V.value.name,e.execution_id,H.value.length)}catch(e){k(e.message||`执行失败`,`error`)}finally{W.value=!1}}function Ue(e){K.value=e,G.value=!0}async function We(){if(K.value)try{await m.delete(`/scripts/${K.value.id}`),G.value=!1,$(),k(`已删除`)}catch(e){k(e.message||`删除失败`,`error`)}}async function Ge(e){Ne.value=e,q.value=!0;try{J.value=(await m.get(`/scripts/executions`,{script_id:e.id})).items||[]}catch{J.value=[]}}async function Ke(){if(!(!X.value||Z.value.length===0)){Fe.value=!0;try{let e=await m.post(`/scripts/exec`,{command:X.value,server_ids:Z.value,timeout:Pe.value});k(`已在 ${Z.value.length} 台服务器上执行`),qe(`临时命令`,e.execution_id,Z.value.length)}catch(e){k(e.message||`执行失败`,`error`)}finally{Fe.value=!1}}}function qe(e,t,n){Q.value.unshift({id:t,name:e,status:`running`,totalServers:n,completedServers:0,refreshing:!1}),Je()}function Je(){Ie||=setInterval(async()=>{let e=Q.value.filter(e=>e.status===`running`);if(e.length===0){Ye();return}for(let t of e)await Xe(t)},5e3)}function Ye(){Ie&&=(clearInterval(Ie),null)}async function Xe(e){e.refreshing=!0;try{let t=await m.get(`/scripts/executions/${e.id}`),n=t.results||{};e.completedServers=Object.values(n).filter(e=>e.status!==`runni
|