51948469c2
- Stop ignoring web/app/index.html and web/app/assets/ - Bundle index-DBKIQT7H.js from current vite build (~101MB assets) Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
14 KiB
JavaScript
1 line
14 KiB
JavaScript
import{t as e,x as t}from"./VDataTable-D7zAVHfQ.js";import{$n as n,Ar as r,Er as i,Et as ee,F as a,Gn as te,Hn as ne,Jn as o,Kn as re,L as s,M as c,N as l,P as u,Qn as d,Rt as f,T as ie,Un as ae,Wn as oe,Xn as p,Y as m,Yn as h,_r as se,br as g,cr as ce,fr as le,gr as _,ir as ue,j as v,k as y,lr as de,mr as fe,q as pe,qn as b,t as x,tr as me,ur as S,v as he}from"./index-ngtHwr8t.js";import{t as ge}from"./useSnackbar-D7YOfKok.js";import{t as C}from"./VChip-pM5_2xb4.js";import{t as w}from"./VDialog-v2_KHyRZ.js";import{a as _e}from"./VSelectionControl-B8N1uBPi.js";import{n as T,t as ve}from"./VRow-DTY9xw0O.js";import{t as E}from"./VSpacer-B9pYUh4l.js";import{t as ye}from"./VSelect-dA-HhEp_.js";import{t as be}from"./useServerList-DiBsn_ee.js";import{a as D}from"./validation-Yxuom3Du.js";import{t as O}from"./VTextarea-e3IBt4Ay.js";var xe={class:`text-body-1 font-weight-medium`},Se={class:`text-body-2 text-medium-emphasis`},Ce={class:`text-caption text-medium-emphasis mt-2`},we={key:1,class:`d-flex justify-center mt-4`},Te={class:`text-caption`},Ee={class:`d-flex align-center ga-2`},De={class:`text-body-2`},Oe={key:0},ke={key:1,class:`text-medium-emphasis`},k=me({__name:`ScriptsPage`,setup(me){let k=ge(),{servers:Ae,loadServers:je}=be(),A=g(!1),j=g(``),M=g([]),N=g(1),P=g(0),F=g(20),I=g(!1),L=g(null),R=g(!1),z=g({name:``,category:``,description:``,content:``}),B=g(!1),V=g(null),H=g([]),U=g(300),W=g(!1),G=g(!1),K=g(null),q=g(!1),Me=g(null),J=g([]),Y=g(!1),X=g(``),Z=g([]),Ne=g(60),Pe=g(!1),Q=g([]),Fe=null,Ie=[{title:`命令`,key:`command`},{title:`状态`,key:`status`,width:100},{title:`进度`,key:`progress`,width:100},{title:`操作人`,key:`operator`,width:80},{title:`开始时间`,key:`started_at`,width:160}],Le=re(()=>{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 f.getList(`/scripts/`,{page:N.value,per_page:F.value});M.value=e.items,P.value=e.total}catch{M.value=[]}finally{A.value=!1}}fe(j,()=>{N.value=1,$()});function Re(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 ze(){R.value=!0;try{L.value?await f.put(`/scripts/${L.value.id}`,z.value):await f.post(`/scripts/`,z.value),I.value=!1,$(),k(`保存成功`)}catch(e){k(e.message||`保存失败`,`error`)}finally{R.value=!1}}function Be(e){V.value=e,H.value=[],B.value=!0}async function Ve(){if(!V.value||!H.value.length){k(`请选择服务器`,`warning`);return}W.value=!0;try{let e=await f.post(`/scripts/exec`,{script_id:V.value.id,server_ids:H.value,timeout:U.value});B.value=!1,k(`脚本已提交执行`),Ke(V.value.name,e.execution_id,H.value.length)}catch(e){k(e.message||`执行失败`,`error`)}finally{W.value=!1}}function He(e){K.value=e,G.value=!0}async function Ue(){if(K.value)try{await f.delete(`/scripts/${K.value.id}`),G.value=!1,$(),k(`已删除`)}catch(e){k(e.message||`删除失败`,`error`)}}async function We(e){Me.value=e,q.value=!0;try{J.value=(await f.get(`/scripts/executions`,{script_id:e.id})).items||[]}catch{J.value=[]}}async function Ge(){if(!(!X.value||Z.value.length===0)){Pe.value=!0;try{let e=await f.post(`/scripts/exec`,{command:X.value,server_ids:Z.value,timeout:Ne.value});k(`已在 ${Z.value.length} 台服务器上执行`),Ke(`临时命令`,e.execution_id,Z.value.length)}catch(e){k(e.message||`执行失败`,`error`)}finally{Pe.value=!1}}}function Ke(e,t,n){Q.value.unshift({id:t,name:e,status:`running`,totalServers:n,completedServers:0,refreshing:!1}),qe()}function qe(){Fe||=setInterval(async()=>{let e=Q.value.filter(e=>e.status===`running`);if(e.length===0){Je();return}for(let t of e)await Ye(t)},5e3)}function Je(){Fe&&=(clearInterval(Fe),null)}async function Ye(e){e.refreshing=!0;try{let t=await f.get(`/scripts/executions/${e.id}`),n=t.results||{};e.completedServers=Object.values(n).filter(e=>e.status!==`running`&&e.status!==`pending`).length,e.status=t.status}catch{}finally{e.refreshing=!1}}async function Xe(e){try{await f.post(`/scripts/executions/${e.id}/stop`),e.status=`failed`,k(`已发送停止指令`)}catch(e){k(e.message||`停止失败`,`error`)}}function Ze(e){return e===`running`?`blue`:e===`completed`?`green`:e===`failed`?`red`:`orange`}function Qe(e){return e===`running`?`执行中`:e===`completed`?`已完成`:e===`failed`?`失败`:`部分完成`}return ce(()=>{$(),je()}),de(()=>{Je()}),(re,f)=>(S(),o(_e,{fluid:``,class:`pa-6`},{default:_(()=>[n(c,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:_(()=>[n(u,{class:`d-flex align-center`},{default:_(()=>[f[22]||=d(` 脚本库 `,-1),n(E),n(x,{modelValue:j.value,"onUpdate:modelValue":f[0]||=e=>j.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索...`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`240px`}},null,8,[`modelValue`]),n(s,{color:`primary`,variant:`flat`,class:`ml-3`,"prepend-icon":`mdi-plus`,size:`small`,onClick:f[1]||=e=>Re(null)},{default:_(()=>[...f[21]||=[d(` 新建脚本 `,-1)]]),_:1})]),_:1})]),_:1}),n(c,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:_(()=>[n(u,{class:`d-flex align-center`,style:{cursor:`pointer`},onClick:f[2]||=e=>Y.value=!Y.value},{default:_(()=>[n(m,{class:`mr-2`},{default:_(()=>[...f[23]||=[d(`mdi-console`,-1)]]),_:1}),f[24]||=d(` 临时命令执行 `,-1),n(E),n(m,null,{default:_(()=>[d(r(Y.value?`mdi-chevron-up`:`mdi-chevron-down`),1)]),_:1})]),_:1}),n(ee,null,{default:_(()=>[se(b(`div`,null,[n(v),n(l,null,{default:_(()=>[n(O,{modelValue:X.value,"onUpdate:modelValue":f[3]||=e=>X.value=e,label:`命令`,variant:`outlined`,density:`compact`,rows:`3`,placeholder:`输入要执行的命令... (Ctrl+Enter 执行)`,class:`mb-3`,onKeydown:ae(oe(Ge,[`ctrl`]),[`enter`]),rules:[i(D)(`命令`)]},null,8,[`modelValue`,`onKeydown`,`rules`]),n(ve,{dense:``},{default:_(()=>[n(T,{cols:`12`,md:`6`},{default:_(()=>[n(ye,{modelValue:Z.value,"onUpdate:modelValue":f[4]||=e=>Z.value=e,items:i(Ae),"item-title":`name`,"item-value":`id`,label:`目标服务器`,variant:`outlined`,density:`compact`,multiple:``,chips:``,"closable-chips":``},null,8,[`modelValue`,`items`])]),_:1}),n(T,{cols:`6`,md:`3`},{default:_(()=>[n(x,{modelValue:Ne.value,"onUpdate:modelValue":f[5]||=e=>Ne.value=e,modelModifiers:{number:!0},label:`超时(秒)`,variant:`outlined`,density:`compact`,type:`number`},null,8,[`modelValue`])]),_:1}),n(T,{cols:`6`,md:`3`,class:`d-flex align-center`},{default:_(()=>[n(s,{color:`primary`,variant:`flat`,onClick:Ge,loading:Pe.value,disabled:!X.value||Z.value.length===0},{default:_(()=>[...f[25]||=[d(` 执行 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1})],512),[[ne,Y.value]])]),_:1})]),_:1}),A.value?(S(),o(pe,{key:0,indeterminate:``,color:`primary`})):h(``,!0),n(ve,null,{default:_(()=>[(S(!0),p(te,null,le(Le.value,e=>(S(),o(T,{cols:`12`,sm:`6`,md:`4`,key:e.id},{default:_(()=>[n(c,{elevation:`0`,border:``,rounded:`lg`,class:`fill-height`},{default:_(()=>[n(u,{class:`d-flex align-center`},{default:_(()=>[n(m,{color:`primary`,class:`mr-2`},{default:_(()=>[...f[26]||=[d(`mdi-code-braces`,-1)]]),_:1}),b(`span`,xe,r(e.name),1),n(E),n(he,null,{activator:_(({props:e})=>[n(s,ue({icon:`mdi-dots-vertical`,variant:`text`,size:`small`},{ref_for:!0},e),null,16)]),default:_(()=>[n(ie,{density:`compact`},{default:_(()=>[n(y,{title:`编辑`,onClick:t=>Re(e)},{prepend:_(()=>[n(m,null,{default:_(()=>[...f[27]||=[d(`mdi-pencil`,-1)]]),_:1})]),_:1},8,[`onClick`]),n(y,{title:`执行`,onClick:t=>Be(e)},{prepend:_(()=>[n(m,null,{default:_(()=>[...f[28]||=[d(`mdi-play`,-1)]]),_:1})]),_:1},8,[`onClick`]),n(y,{title:`删除`,onClick:t=>He(e),class:`text-error`},{prepend:_(()=>[n(m,{color:`error`},{default:_(()=>[...f[29]||=[d(`mdi-delete`,-1)]]),_:1})]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024)]),_:2},1024),n(l,null,{default:_(()=>[e.category?(S(),o(C,{key:0,size:`small`,variant:`tonal`,label:``,class:`mb-2`},{default:_(()=>[d(r(e.category),1)]),_:2},1024)):h(``,!0),b(`div`,Se,r(e.description||`无描述`),1),b(`div`,Ce,` 更新于 `+r(e.updated_at||e.created_at),1)]),_:2},1024),n(a,null,{default:_(()=>[n(s,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-play`,color:`primary`,onClick:t=>Be(e)},{default:_(()=>[...f[30]||=[d(`执行`,-1)]]),_:1},8,[`onClick`]),n(E),n(s,{size:`small`,variant:`text`,onClick:t=>We(e)},{default:_(()=>[...f[31]||=[d(`历史`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),P.value>F.value?(S(),p(`div`,we,[n(t,{modelValue:N.value,"onUpdate:modelValue":[f[6]||=e=>N.value=e,$],length:Math.ceil(P.value/F.value),rounded:``,density:`compact`},null,8,[`modelValue`,`length`])])):h(``,!0),Q.value.length>0?(S(),o(c,{key:2,elevation:`0`,border:``,rounded:`lg`,class:`mt-4`},{default:_(()=>[n(u,{class:`d-flex align-center text-subtitle-1`},{default:_(()=>[n(m,{class:`mr-2`},{default:_(()=>[...f[32]||=[d(`mdi-progress-clock`,-1)]]),_:1}),f[34]||=d(` 执行状态 `,-1),n(E),n(s,{size:`small`,variant:`text`,onClick:f[7]||=e=>Q.value=[]},{default:_(()=>[...f[33]||=[d(`清除`,-1)]]),_:1})]),_:1}),n(v),n(l,null,{default:_(()=>[n(ie,{density:`compact`},{default:_(()=>[(S(!0),p(te,null,le(Q.value,e=>(S(),o(y,{key:e.id,title:e.name},{subtitle:_(()=>[b(`span`,Te,`ID: `+r(e.id)+` · `+r(e.totalServers)+` 台服务器`,1)]),append:_(()=>[b(`div`,Ee,[n(C,{color:Ze(e.status),size:`x-small`,variant:`tonal`,label:``},{default:_(()=>[d(r(Qe(e.status)),1)]),_:2},1032,[`color`]),n(s,{size:`x-small`,variant:`text`,onClick:t=>Ye(e),loading:e.refreshing},{default:_(()=>[...f[35]||=[d(` 刷新 `,-1)]]),_:1},8,[`onClick`,`loading`]),e.status===`running`?(S(),o(s,{key:0,size:`x-small`,variant:`text`,color:`error`,onClick:t=>Xe(e)},{default:_(()=>[...f[36]||=[d(` 停止 `,-1)]]),_:1},8,[`onClick`])):h(``,!0)])]),_:2},1032,[`title`]))),128))]),_:1})]),_:1})]),_:1})):h(``,!0),n(w,{modelValue:I.value,"onUpdate:modelValue":f[13]||=e=>I.value=e,"max-width":`800`,scrollable:``},{default:_(()=>[n(c,{border:``},{default:_(()=>[n(u,null,{default:_(()=>[d(r(L.value?`编辑脚本`:`新建脚本`),1)]),_:1}),n(v),n(l,null,{default:_(()=>[n(x,{modelValue:z.value.name,"onUpdate:modelValue":f[8]||=e=>z.value.name=e,label:`脚本名称`,variant:`outlined`,density:`compact`,class:`mb-2`,rules:[i(D)(`脚本名称`)]},null,8,[`modelValue`,`rules`]),n(x,{modelValue:z.value.category,"onUpdate:modelValue":f[9]||=e=>z.value.category=e,label:`分类`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),n(O,{modelValue:z.value.description,"onUpdate:modelValue":f[10]||=e=>z.value.description=e,label:`描述`,variant:`outlined`,density:`compact`,rows:`2`,class:`mb-2`},null,8,[`modelValue`]),n(O,{modelValue:z.value.content,"onUpdate:modelValue":f[11]||=e=>z.value.content=e,label:`脚本内容`,variant:`outlined`,density:`compact`,rows:`14`,class:`mt-2 font-monospace`,rules:[i(D)(`脚本内容`)]},null,8,[`modelValue`,`rules`])]),_:1}),n(v),n(a,null,{default:_(()=>[n(E),n(s,{variant:`text`,onClick:f[12]||=e=>I.value=!1},{default:_(()=>[...f[37]||=[d(`取消`,-1)]]),_:1}),n(s,{color:`primary`,variant:`flat`,onClick:ze,loading:R.value},{default:_(()=>[...f[38]||=[d(`保存`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),n(w,{modelValue:B.value,"onUpdate:modelValue":f[17]||=e=>B.value=e,"max-width":`600`},{default:_(()=>[n(c,{border:``},{default:_(()=>[n(u,null,{default:_(()=>[d(`执行脚本: `+r(V.value?.name),1)]),_:1}),n(l,null,{default:_(()=>[n(ye,{modelValue:H.value,"onUpdate:modelValue":f[14]||=e=>H.value=e,items:i(Ae),"item-title":`name`,"item-value":`id`,label:`选择服务器`,variant:`outlined`,density:`compact`,multiple:``,chips:``,class:`mb-2`},null,8,[`modelValue`,`items`]),n(x,{modelValue:U.value,"onUpdate:modelValue":f[15]||=e=>U.value=e,label:`超时(秒)`,variant:`outlined`,density:`compact`,type:`number`},null,8,[`modelValue`])]),_:1}),n(a,null,{default:_(()=>[n(E),n(s,{variant:`text`,onClick:f[16]||=e=>B.value=!1},{default:_(()=>[...f[39]||=[d(`取消`,-1)]]),_:1}),n(s,{color:`primary`,variant:`flat`,onClick:Ve,loading:W.value},{default:_(()=>[...f[40]||=[d(`执行`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),n(w,{modelValue:G.value,"onUpdate:modelValue":f[19]||=e=>G.value=e,"max-width":`400`},{default:_(()=>[n(c,{border:``},{default:_(()=>[n(u,null,{default:_(()=>[...f[41]||=[d(`确认删除`,-1)]]),_:1}),n(l,null,{default:_(()=>[f[42]||=d(`确定要删除脚本 `,-1),b(`strong`,null,r(K.value?.name),1),f[43]||=d(` 吗?`,-1)]),_:1}),n(a,null,{default:_(()=>[n(E),n(s,{variant:`text`,onClick:f[18]||=e=>G.value=!1},{default:_(()=>[...f[44]||=[d(`取消`,-1)]]),_:1}),n(s,{color:`error`,variant:`flat`,onClick:Ue},{default:_(()=>[...f[45]||=[d(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),n(w,{modelValue:q.value,"onUpdate:modelValue":f[20]||=e=>q.value=e,"max-width":`800`,scrollable:``},{default:_(()=>[n(c,{border:``},{default:_(()=>[n(u,null,{default:_(()=>[d(`执行历史: `+r(Me.value?.name),1)]),_:1}),n(v),n(l,null,{default:_(()=>[n(e,{items:J.value,headers:Ie,density:`compact`,hover:``},{"item.status":_(({item:e})=>[n(C,{color:e.status===`completed`?`success`:e.status===`failed`?`error`:`info`,size:`small`,variant:`tonal`,label:``},{default:_(()=>[d(r(e.status),1)]),_:2},1032,[`color`])]),"item.command":_(({item:e})=>[b(`code`,De,r(e.command.length>60?e.command.slice(0,60)+`…`:e.command),1)]),"item.progress":_(({item:e})=>[e.progress?(S(),p(`span`,Oe,r(e.progress.done)+`/`+r(e.progress.total),1)):(S(),p(`span`,ke,`—`))]),"no-data":_(()=>[...f[46]||=[b(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无数据`,-1)]]),_:1},8,[`items`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{k as default}; |