Files
Nexus/web/app/assets/ScriptsPage-xR8KG_g9.js
T

4 lines
31 KiB
JavaScript
Raw Normal View History

import{a as e,x as t}from"./VDataTable-CvpeYUTC.js";import{n,t as r}from"./useSnackbar-BFeYjAzp.js";import{n as i,t as a}from"./VRow-ZHldweuW.js";import{Bt as o,Cr as s,Ct as c,Er as l,F as ee,Ft as te,Gt as ne,Ht as re,I as u,Ir as ie,K as ae,Mr as oe,Nr as se,Or as ce,Q as d,Qr as le,Rr as f,Rt as ue,Sr as p,Tr as m,Ur as h,Ut as de,Vr as g,Vt as fe,Wt as pe,Yr as me,Zr as _,_ as v,an as he,br as y,di as b,en as x,gr as S,hi as C,hr as ge,ii as w,k as _e,l as ve,m as ye,mr as be,n as xe,pi as Se,pr as Ce,qt as we,tt as Te,v as T,xr as E,y as D,yr as O,zt as Ee}from"./index-BKLG6eUi.js";import{n as De,t as Oe}from"./initMonaco-IVSljAHo.js";import{t as ke}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as Ae}from"./usePageActivateRefresh-BXQgZGHS.js";import{n as je,t as Me}from"./dataTable-esDY4cOk.js";import{t as Ne}from"./paginatedFetch-Bh_Ds7m8.js";import{S as k,_ as A,b as j,t as Pe,v as M}from"./VTextField-Bs8XQAKI.js";import{t as Fe}from"./VSelect-Dy70bHJm.js";import{t as Ie}from"./VDataTableServer-GLUwxaQu.js";import{t as N}from"./apiError-C9ZCize-.js";import{t as Le}from"./useServerList-CfVe7wPe.js";import{t as Re}from"./VDialog-CfMJJXmK.js";import{r as ze}from"./validation-BMzYTJL4.js";import{t as Be}from"./VTextarea-BT8Danjf.js";import{t as Ve}from"./ServerCategoryPicker-D-avcV4N.js";import{t as He}from"./VSwitch-DJrQ12hU.js";import{n as Ue,t as We}from"./execDetailGrouping-DHyfnMl2.js";import{i as Ge,n as Ke,r as qe,t as Je}from"./VExpansionPanels-B_PhIoBw.js";var Ye=ke(ce({__name:`ScriptContentEditor`,props:{modelValue:{},readonly:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,i=De(),a=w(),o=null,c=!1;function l(){a.value&&(o?.dispose(),o=i.editor.create(a.value,{...Oe({language:`shell`,readOnly:n.readonly??!1}),value:n.modelValue||``}),o.onDidChangeModelContent(()=>{c||!o||r(`update:modelValue`,o.getValue())}))}return me(()=>n.modelValue,e=>{o&&o.getValue()!==e&&(c=!0,o.setValue(e||``),c=!1)}),me(()=>n.readonly,e=>{o?.updateOptions({readOnly:e??!1})}),f(()=>{l()}),ie(()=>{o?.dispose(),o=null}),(e,t)=>(g(),s(`div`,{ref_key:`host`,ref:a,class:`script-content-editor`},null,512))}}),[[`__scopeId`,`data-v-8c9e5994`]]),Xe={class:`text-body-1 font-weight-medium`},Ze={class:`text-body-2 text-medium-emphasis`},Qe={class:`text-caption text-medium-emphasis mt-2`},$e={key:3,class:`d-flex justify-center mt-4`},et={class:`text-caption`},tt={key:2,class:`text-center text-medium-emphasis py-6`},nt={class:`text-body-2`},rt={class:`text-caption text-medium-emphasis`},it={class:`d-flex align-center flex-wrap ga-1`},at={class:`text-caption text-medium-emphasis mb-2`},ot={class:`text-body-2 mb-3 pa-3 rounded bg-surface-variant overflow-auto`,style:{"max-height":`100px`}},st={key:0,class:`d-flex flex-wrap ga-2 mb-3`},ct={class:`text-body-2`},lt={class:`d-flex align-center flex-wrap ga-2 mb-3`},ut=[`onClick`],dt={class:`font-weight-medium`},ft={key:0,class:`text-caption text-medium-emphasis`},pt=[`title`],mt={key:0},ht={class:`d-flex align-center ga-2 flex-grow-1 min-width-0`},gt=[`title`],_t=[`onClick`],vt={class:`font-weight-medium`},yt={key:0,class:`text-caption text-medium-emphasis`},bt={class:`text-error font-weight-medium`},xt={key:4,class:`text-center text-medium-emphasis py-4`},St={class:`d-flex align-center flex-wrap ga-2 mb-2`},Ct={class:`text-subtitle-2`},wt={key:0,class:`text-medium-emphasis`},Tt={class:`text-body-2 overflow-auto exec-detail-output`},Et=ke(ce({name:`ScriptsPage`,__name:`ScriptsPage`,setup(ie){let ce=[...Me],f=r(),De=he(),{servers:Oe,loading:ke,loadServers:Et}=Le(),Dt=[{label:`运维`,value:`ops`},{label:`部署`,value:`deploy`},{label:`检查`,value:`check`},{label:`清理`,value:`cleanup`}],Ot=w(!1),kt=w(``),P=w([]),F=w(null),At=w([]),jt=w(1),Mt=w(20),I=w(!1),Nt=w(null),Pt=w(!1),L=w({name:``,category:`ops`,description:``,content:``}),R=w(!1),z=w(null),B=w([]),Ft=w(300),It=w(!1),Lt=w(null),Rt=w(!1),V=w(!1),zt=w(null),Bt=w(null),Vt=w([]),H=w(!1),Ht=w([]),Ut=w(0),U=w(1),Wt=w(20),Gt=w(!1),W=w(null),Kt=w(!1),qt=w(``),G=w([]),Jt=w(60),Yt=w(!1),Xt=w(null),Zt=w(!1),Qt=w(!1),
`)[0]?.trim()||e.summary,i=r&&r!==``?` · ${r.slice(0,120)}`:``;return`- ${e.serverName}${t}${n}${i}`}async function Wn(e,t){try{await navigator.clipboard.writeText(e),f(t)}catch{f(`复制失败`,`error`)}}async function Gn(){let e=Y.value.filter(e=>e.failed);e.length&&await Wn([`执行 #${K.value?.id??en.value} · 失败 ${e.length} `,...e.map(Un)].join(`
`),`已复制失败清单`)}async function Kn(){let e=mn.value;if(!e.length)return;let t=[`执行 #${K.value?.id??en.value} · 失败分组 ${e.length} `];for(let n of e){let e=n.rows.map(e=>e.serverName).join(``);t.push(`[${n.errorKey.slice(0,120)}] ${n.count} : ${e}`)}await Wn(t.join(`
2026-06-10 20:58:46 +08:00
`),`已复制分组摘要`)}function qn(e){J.value=J.value===e?null:e}async function Jn(e){if(!(!e.fullOutput||e.fullOutput===``))try{await navigator.clipboard.writeText(e.fullOutput),f(`已复制到剪贴板`)}catch{f(`复制失败`,`error`)}}function Yn(e){De.push({path:`/terminal`,query:{server_id:String(e)}})}async function Xn(){K.value&&await Vn(K.value)}async function Zn(e){if(en.value!=null){$t.value=!0;try{K.value=await x.get(`/scripts/executions/${en.value}`,{fetch_logs:e,log_lines:100})}catch(e){f(N(e,`加载详情失败`),`error`),Qt.value=!1}finally{$t.value=!1}}}async function Qn(e=!1){await Promise.all([kn(),Et({all:!0}),An(),jn(),$(e)])}return Ae(e=>Qn(e)),(r,c)=>(g(),E(n,{fluid:``,class:`pa-6`},{default:_(()=>[l(A,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:_(()=>[l(j,{class:`d-flex flex-wrap align-center ga-2`},{default:_(()=>[c[34]||=m(` 脚本库 `,-1),F.value?(g(),E(D,{key:0,size:`small`,variant:`tonal`,label:``,class:`ml-1`},{default:_(()=>[m(` 分批 `+C(F.value.batch_size)+` · 并发 `+C(F.value.concurrency),1)]),_:1})):p(``,!0),l(v),l(Pe,{modelValue:kt.value,"onUpdate:modelValue":c[0]||=e=>kt.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索...`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`240px`}},null,8,[`modelValue`]),l(u,{color:`primary`,variant:`flat`,class:`ml-1`,"prepend-icon":`mdi-plus`,size:`small`,onClick:c[1]||=e=>Mn(null)},{default:_(()=>[...c[33]||=[m(` 新建脚本 `,-1)]]),_:1})]),_:1})]),_:1}),l(A,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:_(()=>[l(j,{class:`d-flex align-center`,style:{cursor:`pointer`},onClick:c[2]||=e=>Kt.value=!Kt.value},{default:_(()=>[l(d,{class:`mr-2`},{default:_(()=>[...c[35]||=[m(`mdi-console`,-1)]]),_:1}),c[36]||=m(` 临时命令执行 `,-1),l(v),l(d,null,{default:_(()=>[m(C(Kt.value?`mdi-chevron-up`:`mdi-chevron-down`),1)]),_:1})]),_:1}),l(_e,null,{default:_(()=>[le(y(`div`,null,[l(T),l(M,null,{default:_(()=>[l(Be,{modelValue:qt.value,"onUpdate:modelValue":c[3]||=e=>qt.value=e,label:`命令`,variant:`outlined`,density:`compact`,rows:`3`,placeholder:`输入要执行的命令... (Ctrl+Enter 执行)`,class:`mb-3 font-monospace`,onKeydown:be(ge(zn,[`ctrl`]),[`enter`]),rules:[b(ze)(`命令`)]},null,8,[`modelValue`,`onKeydown`,`rules`]),c[38]||=y(`div`,{class:`text-caption text-medium-emphasis mb-1`},`目标服务器按分类选择`,-1),l(Ve,{modelValue:G.value,"onUpdate:modelValue":c[4]||=e=>G.value=e,servers:b(Oe),loading:b(ke),"max-height":`220px`,class:`mb-3`},null,8,[`modelValue`,`servers`,`loading`]),l(a,{dense:``},{default:_(()=>[l(i,{cols:`6`,md:`2`},{default:_(()=>[l(Pe,{modelValue:Jt.value,"onUpdate:modelValue":c[5]||=e=>Jt.value=e,modelModifiers:{number:!0},label:`超时()`,variant:`outlined`,density:`compact`,type:`number`,max:F.value?.max_timeout??600},null,8,[`modelValue`,`max`])]),_:1}),l(i,{cols:`6`,md:`3`},{default:_(()=>[l(Fe,{modelValue:Xt.value,"onUpdate:modelValue":c[6]||=e=>Xt.value=e,items:rn.value,"item-title":`title`,"item-value":`value`,label:`DB 凭据可选`,variant:`outlined`,density:`compact`,clearable:``,"hide-details":``},null,8,[`modelValue`,`items`])]),_:1}),l(i,{cols:`12`,md:`2`,class:`d-flex align-center ga-2`},{default:_(()=>[l(He,{modelValue:Yt.value,"onUpdate:modelValue":c[7]||=e=>Yt.value=e,label:`长任务`,density:`compact`,"hide-details":``,color:`primary`},null,8,[`modelValue`]),l(u,{color:`primary`,variant:`flat`,onClick:zn,loading:Zt.value,disabled:!qt.value.trim()||G.value.length===0},{default:_(()=>[...c[37]||=[m(` 执行 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1})],512),[[Ce,Kt.value]])]),_:1})]),_:1}),Ot.value?(g(),E(ae,{key:0,indeterminate:``,color:`primary`})):p(``,!0),sn.value.length?(g(),E(a,{key:1},{default:_(()=>[(g(!0),s(S,null,h(sn.value,e=>(g(),E(i,{cols:`12`,sm:`6`,md:`4`,key:e.id},{default:_(()=>[l(A,{elevation:`0`,border:``,rounded:`lg`,class:`fill-height`},{default:_(()=>[l(j,{class:`d-flex align-center`},{default:_(()=>[l(d,{color:`primary`,class:`mr-2`},{default:_(()=>[...