4 lines
35 KiB
JavaScript
4 lines
35 KiB
JavaScript
|
|
import{n as e,t}from"./initMonaco-CbTFLcUb.js";import{a as n,x as r}from"./VDataTable-B6PKw1TS.js";import{_ as i,t as a,v as o}from"./VSelect-Dy1HeCdk.js";import{n as s,t as c}from"./VRow-CamZ4OJs.js";import{$r as l,A as u,B as d,Bt as ee,Cr as f,Dr as p,F as m,Gt as te,H as h,Ht as ne,Ir as g,It as re,J as ie,Lr as ae,N as _,Nr as oe,P as v,Pr as se,Q as y,Qr as ce,R as b,Rt as le,Sr as ue,T as de,Tr as fe,Ur as x,Ut as pe,Vt as me,Wt as he,Yr as S,Z as ge,Zr as _e,Zt as C,_r as ve,ar as ye,br as be,dr as w,fr as T,gr as E,hr as D,ir as xe,kr as O,kt as Se,lr as k,lt as Ce,or as we,ot as Te,pr as A,pt as Ee,sr as j,t as De,tn as Oe,ur as M,ut as N,v as ke,xr as Ae,z as P,zt as je}from"./index-C6qJAv49.js";import{n as Me,t as Ne}from"./dataTable-esDY4cOk.js";import{t as Pe}from"./VCheckbox-Nzkf754R.js";import{t as Fe}from"./VDataTableServer-Dh4BHVrk.js";import{t as F}from"./apiError-DukIeo5O.js";import{t as Ie}from"./useServerList-DgZFamx0.js";import{s as Le}from"./labels-CzOhyWto.js";import{t as Re}from"./paginatedFetch-CPtIdw6B.js";import{i as ze}from"./validation-DMwOxx4a.js";import{t as Be}from"./VDialog-P-nMQayc.js";import{t as Ve}from"./VTextarea-Dnh3HyOO.js";import{t as I}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as He}from"./VSwitch-XZYCP_Om.js";import{n as Ue,t as We}from"./execDetailGrouping-MKCzvGo4.js";import{i as Ge,n as Ke,r as qe,t as Je}from"./VExpansionPanels-RdQ6j6OE.js";import{t as L}from"./useServerCategories-WSJPDvJY.js";var Ye=I(ve({__name:`ScriptContentEditor`,props:{modelValue:{},readonly:{type:Boolean}},emits:[`update:modelValue`],setup(n,{emit:r}){let i=n,a=r,o=e(),s=x(),c=null,l=!1;function u(){s.value&&(c?.dispose(),c=o.editor.create(s.value,{...t({language:`shell`,readOnly:i.readonly??!1}),value:i.modelValue||``}),c.onDidChangeModelContent(()=>{l||!c||a(`update:modelValue`,c.getValue())}))}return se(()=>i.modelValue,e=>{c&&c.getValue()!==e&&(l=!0,c.setValue(e||``),l=!1)}),se(()=>i.readonly,e=>{c?.updateOptions({readOnly:e??!1})}),fe(()=>{u()}),f(()=>{c?.dispose(),c=null}),(e,t)=>(p(),A(`div`,{ref_key:`host`,ref:s,class:`script-content-editor`},null,512))}}),[[`__scopeId`,`data-v-8c9e5994`]]),Xe={class:`server-category-picker`},Ze={class:`d-flex align-center flex-wrap ga-2 mb-2`},Qe={key:0,class:`text-center text-medium-emphasis py-4`},R={class:`d-flex align-center px-1 mb-1`},$e={class:`text-caption text-medium-emphasis ml-1`},et={class:`d-flex align-center ga-2`},z={class:`text-body-2 font-weight-medium text-truncate`},B={class:`text-caption text-medium-emphasis text-truncate`},tt=I(ve({__name:`ServerCategoryPicker`,props:be({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=oe(e,`modelValue`),n=e,r=x(``),i=k(()=>new Set(t.value)),a=k(()=>{let e=r.value.trim().toLowerCase();return e?n.servers.filter(t=>t.name.toLowerCase().includes(e)||(t.domain||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)):n.servers}),o=k(()=>{let e={};for(let t of a.value){let n=t.category?.trim()||`uncategorized`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).map(([e,t])=>({category:e,label:L(e),servers:[...t].sort((e,t)=>e.name.localeCompare(t.name,`zh`))})).sort((e,t)=>e.category===`uncategorized`?1:t.category===`uncategorized`?-1:e.label.localeCompare(t.label,`zh`))}),u=k(()=>{let e=a.value;return e.length>0&&e.every(e=>i.value.has(e.id))});function d(e){return e.servers.filter(e=>i.value.has(e.id)).length}function ee(e){let t=o.value.find(t=>t.category===e);return!t||t.servers.length===0?!1:t.servers.every(e=>i.value.has(e.id))}function f(e){t.value=[...e]}function te(e){let n=new Set(t.value);n.has(e)?n.delete(e):n.add(e),f(n)}function h(e){let n=o.value.find(t=>t.category===e);if(!n)return;let r=new Set(t.value),i=n.servers.every(e=>r.has(e.id));for(let e of n.servers)i?r.delete(e.id):r.add(e.id);f(r)}function ne(){let e=a.value,n=new Set(t.value),r=e.length>0&&e.every(e=>n.has(e.id));for(let t of e)r?n.delete(t.id):n.add(t.id);f(n)}return(n,a)=>(p(),A
|
|||
|
|
`)[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??$t.value} · 失败 ${e.length} 台`,...e.map(Un)].join(`
|
|||
|
|
`),`已复制失败清单`)}async function Kn(){let e=pn.value;if(!e.length)return;let t=[`执行 #${K.value?.id??$t.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(`
|
|||
|
|
`),`已复制分组摘要`)}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){oe.push({path:`/terminal`,query:{server_id:String(e)}})}async function Xn(){K.value&&await Vn(K.value)}async function Zn(e){if($t.value!=null){Qt.value=!0;try{K.value=await C.get(`/scripts/executions/${$t.value}`,{fetch_logs:e,log_lines:100})}catch(e){f(F(e,`加载详情失败`),`error`),Zt.value=!1}finally{Qt.value=!1}}}return fe(()=>{kn(),be({all:!0}),An(),jn(),$()}),(e,i)=>(p(),w(o,{fluid:``,class:`pa-6`},{default:g(()=>[E(b,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:g(()=>[E(d,{class:`d-flex flex-wrap align-center ga-2`},{default:g(()=>[i[34]||=D(` 脚本库 `,-1),L.value?(p(),w(m,{key:0,size:`small`,variant:`tonal`,label:``,class:`ml-1`},{default:g(()=>[D(` 分批 `+l(L.value.batch_size)+` 台 · 并发 `+l(L.value.concurrency),1)]),_:1})):T(``,!0),E(_),E(De,{modelValue:Le.value,"onUpdate:modelValue":i[0]||=e=>Le.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索...`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`240px`}},null,8,[`modelValue`]),E(y,{color:`primary`,variant:`flat`,class:`ml-1`,"prepend-icon":`mdi-plus`,size:`small`,onClick:i[1]||=e=>Mn(null)},{default:g(()=>[...i[33]||=[D(` 新建脚本 `,-1)]]),_:1})]),_:1})]),_:1}),E(b,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:g(()=>[E(d,{class:`d-flex align-center`,style:{cursor:`pointer`},onClick:i[2]||=e=>Gt.value=!Gt.value},{default:g(()=>[E(N,{class:`mr-2`},{default:g(()=>[...i[35]||=[D(`mdi-console`,-1)]]),_:1}),i[36]||=D(` 临时命令执行 `,-1),E(_),E(N,null,{default:g(()=>[D(l(Gt.value?`mdi-chevron-up`:`mdi-chevron-down`),1)]),_:1})]),_:1}),E(ie,null,{default:g(()=>[ae(M(`div`,null,[E(v),E(P,null,{default:g(()=>[E(Ve,{modelValue:Kt.value,"onUpdate:modelValue":i[3]||=e=>Kt.value=e,label:`命令`,variant:`outlined`,density:`compact`,rows:`3`,placeholder:`输入要执行的命令... (Ctrl+Enter 执行)`,class:`mb-3 font-monospace`,onKeydown:ye(we(zn,[`ctrl`]),[`enter`]),rules:[S(ze)(`命令`)]},null,8,[`modelValue`,`onKeydown`,`rules`]),i[38]||=M(`div`,{class:`text-caption text-medium-emphasis mb-1`},`目标服务器(按分类选择)`,-1),E(tt,{modelValue:G.value,"onUpdate:modelValue":i[4]||=e=>G.value=e,servers:S(ce),loading:S(ve),"max-height":`220px`,class:`mb-3`},null,8,[`modelValue`,`servers`,`loading`]),E(c,{dense:``},{default:g(()=>[E(s,{cols:`6`,md:`2`},{default:g(()=>[E(De,{modelValue:qt.value,"onUpdate:modelValue":i[5]||=e=>qt.value=e,modelModifiers:{number:!0},label:`超时(秒)`,variant:`outlined`,density:`compact`,type:`number`,max:L.value?.max_timeout??600},null,8,[`modelValue`,`max`])]),_:1}),E(s,{cols:`6`,md:`3`},{default:g(()=>[E(a,{modelValue:Yt.value,"onUpdate:modelValue":i[6]||=e=>Yt.value=e,items:nn.value,"item-title":`title`,"item-value":`value`,label:`DB 凭据(可选)`,variant:`outlined`,density:`compact`,clearable:``,"hide-details":``},null,8,[`modelValue`,`items`])]),_:1}),E(s,{cols:`12`,md:`2`,class:`d-flex align-center ga-2`},{default:g(()=>[E(He,{modelValue:Jt.value,"onUpdate:modelValue":i[7]||=e=>Jt.value=e,label:`长任务`,density:`compact`,"hide-details":``,color:`primary`},null,8,[`modelValue`]),E(y,{color:`primary`,variant:`flat`,onClick:zn,loading:Xt.value,disabled:!Kt.value.trim()||G.value.length===0},{default:g(()=>[...i[37]||=[D(` 执行 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1})],512),[[xe,Gt.value]])]),_:1})]),_:1}),Pe.value?(p(),w(Te,{key:0,indeterminate:``,color:`primary`})):T(``,!0),on.value.length?(p(),w(c,{key:1},{default:g(()=>[(p(!0),A(j,null,O(on.value,e=>(p(),w(s,{cols:`12`,sm:`6`,md:`4`,key:e.id},{default:g(()=>[E(b,{elevation:`0`,border:``,rounded:`lg`,class:`fill-height`},{default:g(()=>[E(d,{class:`d-flex align-center`},{default:g(()=>[E(N,{color:`primary`,class:`mr-2`},{default:g(()=>[...i[39]||=[D(`mdi-code-braces`,-1)]]),_:1}),M(`span`
|