0b2d7ac50d
脚本 exec 立即返回 running 并在后台跑批次;/ws/alerts 推送 script_progress/complete; 新增 ScriptRunsPage、Telegram 汇总通知与可配置的浏览器完成提示音。 Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
36 KiB
JavaScript
1 line
36 KiB
JavaScript
import{n as e,t}from"./initMonaco-BnIP0K04.js";import{a as n,x as r}from"./VDataTable-CcykkuW2.js";import{$n as i,Cr as a,Dr as o,Dt as s,Er as c,F as l,Hr as ee,Jn as te,L as u,M as d,N as f,Nr as p,P as m,Ur as h,Ut as ne,Vr as re,X as ie,Xn as ae,Y as oe,Yn as se,Z as g,Zn as _,_ as ce,_r as v,ar as y,dr as le,er as b,et as ue,fr as de,gr as fe,hr as pe,k as me,nr as x,or as S,pr as he,rr as C,sr as ge,t as _e,tr as w,ur as ve,w as ye,wr as be,yr as T,z as E,zr as D,zt as O}from"./index-x_UzlvQU.js";import{o as xe,t as Se}from"./VContainer-9KPDvITd.js";import{n as Ce,t as we}from"./dataTable-esDY4cOk.js";import{t as k}from"./VChip-C55Q03jC.js";import{t as Te}from"./VSelect-D6JhGiC7.js";import{t as Ee}from"./VCheckbox-f9pFqBj-.js";import{t as De}from"./VDataTableServer-2HgZ5qDn.js";import{n as A,t as Oe}from"./VRow-D24DfLiy.js";import{t as j}from"./VSpacer-JMAll94i.js";import{t as M}from"./apiError-DpCNY9A0.js";import{t as ke}from"./useServerList-DUldBY_y.js";import{s as N}from"./labels-CzOhyWto.js";import{t as Ae}from"./paginatedFetch-DunVOv_u.js";import{i as je}from"./validation-DMwOxx4a.js";import{t as Me}from"./VDialog-BdnDVQnq.js";import{t as Ne}from"./VTextarea-O15lzlIz.js";import{t as P}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as Pe}from"./VAlert-jAYs7Bdi.js";import{t as Fe}from"./VSwitch-zXfU-1NM.js";import{t as F}from"./useServerCategories-DFZ0UOHd.js";var Ie=P(ge({__name:`ScriptContentEditor`,props:{modelValue:{},readonly:{type:Boolean}},emits:[`update:modelValue`],setup(n,{emit:r}){let i=n,a=r,o=e(),s=p(),c=null,l=!1;function ee(){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 be(()=>i.modelValue,e=>{c&&c.getValue()!==e&&(l=!0,c.setValue(e||``),l=!1)}),be(()=>i.readonly,e=>{c?.updateOptions({readOnly:e??!1})}),pe(()=>{ee()}),he(()=>{c?.dispose(),c=null}),(e,t)=>(v(),C(`div`,{ref_key:`host`,ref:s,class:`script-content-editor`},null,512))}}),[[`__scopeId`,`data-v-8c9e5994`]]),Le={class:`server-category-picker`},I={class:`d-flex align-center flex-wrap ga-2 mb-2`},Re={key:0,class:`text-center text-medium-emphasis py-4`},L={class:`d-flex align-center px-1 mb-1`},ze={class:`text-caption text-medium-emphasis ml-1`},Be={class:`d-flex align-center ga-2`},R={class:`text-body-2 font-weight-medium text-truncate`},z={class:`text-caption text-medium-emphasis text-truncate`},Ve=P(ge({__name:`ServerCategoryPicker`,props:ve({servers:{},loading:{type:Boolean,default:!1},maxHeight:{default:`280px`}},{modelValue:{default:()=>[]},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=a(e,`modelValue`),n=e,r=p(``),o=i(()=>new Set(t.value)),s=i(()=>{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}),l=i(()=>{let e={};for(let t of s.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:F(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`))}),te=i(()=>{let e=s.value;return e.length>0&&e.every(e=>o.value.has(e.id))});function u(e){return e.servers.filter(e=>o.value.has(e.id)).length}function d(e){let t=l.value.find(t=>t.category===e);return!t||t.servers.length===0?!1:t.servers.every(e=>o.value.has(e.id))}function m(e){t.value=[...e]}function ne(e){let n=new Set(t.value);n.has(e)?n.delete(e):n.add(e),m(n)}function re(e){let n=l.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);m(r)}function ae(){let e=s.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);m(n)}return(n,i)=>(v(),C(`div`,Le,[b(`div`,I,[S(Ee,{"model-value":te.value,label:`全选`,density:`compact`,"hide-details":``,"onUpdate:modelValue":ae},null,8,[`model-value`]),S(_e,{modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索服务器`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`220px`},clearable:``},null,8,[`modelValue`]),t.value.length>0?(v(),w(k,{key:0,size:`small`,color:`primary`,variant:`tonal`,label:``},{default:c(()=>[y(` 已选 `+h(t.value.length)+` 台 `,1)]),_:1})):x(``,!0),e.loading?(v(),w(ie,{key:1,indeterminate:``,size:`18`,width:`2`})):x(``,!0)]),b(`div`,{class:`picker-scroll`,style:ee({maxHeight:e.maxHeight})},[!e.loading&&l.value.length===0?(v(),C(`div`,Re,` 暂无服务器 `)):x(``,!0),(v(!0),C(_,null,T(l.value,e=>(v(),C(`div`,{key:e.category,class:`mb-3`},[b(`div`,L,[S(E,{size:`x-small`,variant:`text`,color:d(e.category)?`primary`:`default`,onClick:t=>re(e.category)},{default:c(()=>[S(g,{size:`16`,class:`mr-1`},{default:c(()=>[y(h(d(e.category)?`mdi-checkbox-marked`:`mdi-checkbox-blank-outline`),1)]),_:2},1024),y(` `+h(e.label),1)]),_:2},1032,[`color`,`onClick`]),b(`span`,ze,` (`+h(u(e))+`/`+h(e.servers.length)+`) `,1)]),S(Oe,{dense:``},{default:c(()=>[(v(!0),C(_,null,T(e.servers,e=>(v(),w(A,{key:e.id,cols:`12`,sm:`6`},{default:c(()=>[S(f,{color:o.value.has(e.id)?`primary`:void 0,variant:o.value.has(e.id)?`tonal`:`outlined`,rounded:`lg`,class:`pa-2 cursor-pointer`,onClick:t=>ne(e.id)},{default:c(()=>[b(`div`,Be,[S(g,{color:D(N)(e.is_online),size:`10`},{default:c(()=>[...i[1]||=[y(`mdi-circle`,-1)]]),_:1},8,[`color`]),b(`span`,R,h(e.name),1)]),b(`div`,z,h(e.domain),1)]),_:2},1032,[`color`,`variant`,`onClick`])]),_:2},1024))),128))]),_:2},1024)]))),128))],4)]))}}),[[`__scopeId`,`data-v-4d1df917`]]),B={running:`执行中`,completed:`已完成`,failed:`失败`,partial:`部分成功`,cancelled:`已取消`},V={success:`成功`,failed:`失败`,completed:`已完成`,error:`错误`,skipped:`已跳过`,started:`已启动`,timeout:`超时`,connection_error:`连接失败`,unknown:`未知`,cancelled:`已取消`,pending:`后台执行中`,done:`已完成`,running:`执行中`},He=new Set([`failed`,`error`,`skipped`,`timeout`,`connection_error`,`unknown`,`cancelled`]);function Ue(e){return B[e]||e}function We(e){return e===`running`?`blue`:e===`completed`?`green`:e===`failed`?`red`:e===`partial`?`orange`:e===`cancelled`?`grey`:`info`}function Ge(e,t){let n=(t||``).trim(),r=(e||``).trim();return n===`pending`?V.pending:n===`cancelled`||r===`cancelled`?V.cancelled:r&&V[r]?V[r]:n&&V[n]?V[n]:r||n||`—`}function Ke(e){return(e||``).trim()===`pending`}function qe(e,t,n){if(Ke(t))return!1;if(n!=null&&n!==0)return!0;let r=(e||``).trim().toLowerCase();return!!(He.has(r)||(t||``).trim()===`cancelled`)}function Je(e,t,n){return Ke(t)?`blue`:qe(e,t,n)?`error`:n===0||[`success`,`completed`,`done`].includes((e||``).toLowerCase())?`success`:`grey`}function Ye(e,t){let n=[];if(t)try{let e=JSON.parse(t);Array.isArray(e)&&(n=e.map(String))}catch{n=[]}!n.length&&e&&(n=Object.keys(e).filter(e=>e!==`_meta`&&/^\d+$/.test(e)));let r=0,i=0,a=0;for(let t of n){let n=e?.[t]||{},o=String(n.status||``),s=n.phase?String(n.phase):void 0,c=n.exit_code??null;Ke(s)?a+=1:qe(o,s,c)?i+=1:r+=1}return{total:n.length,success:r,failed:i,pending:a}}var 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`},ot={key:0,class:`ml-1`},st={class:`d-flex align-center flex-wrap ga-1 justify-end`},ct={class:`text-caption text-medium-emphasis mb-2`},lt={class:`text-body-2 mb-3 pa-3 rounded bg-surface-variant overflow-auto`,style:{"max-height":`100px`}},ut={key:0,class:`d-flex flex-wrap ga-2 mb-3`},dt={class:`text-body-2`},ft={class:`d-flex align-center flex-wrap ga-2 mb-3`},pt=[`onClick`],mt={class:`font-weight-medium`},ht={key:0,class:`text-caption text-medium-emphasis`},gt=[`title`],_t={key:0},vt={class:`d-flex align-center flex-wrap ga-2 mb-2`},yt={class:`text-subtitle-2`},bt={key:0,class:`text-medium-emphasis`},xt={class:`text-body-2 overflow-auto exec-detail-output`},St=P(ge({__name:`ScriptsPage`,setup(e){let t=[...we],a=xe(),ee=ne(),{servers:ie,loading:he,loadServers:ge}=ke(),ve=[{label:`运维`,value:`ops`},{label:`部署`,value:`deploy`},{label:`检查`,value:`check`},{label:`清理`,value:`cleanup`}],Ee=p(!1),N=p(``),P=p([]),F=p(null),Le=p([]),I=p(1),Re=p(20),L=p(!1),ze=p(null),Be=p(!1),R=p({name:``,category:`ops`,description:``,content:``}),z=p(!1),B=p(null),V=p([]),He=p(300),St=p(!1),Ct=p(null),wt=p(!1),Tt=p(!1),Et=p(null),Dt=p(null),Ot=p([]),kt=p(!1),At=p([]),jt=p(0),H=p(1),Mt=p(20),Nt=p(!1),U=p(null),Pt=p(!1),Ft=p(``),W=p([]),It=p(60),Lt=p(!1),Rt=p(null),zt=p(!1),G=p([]),Bt=null,Vt=p(!1),K=p(null),Ht=p(!1),Ut=p(null),q=p(`all`),J=p(null),Wt=i(()=>Le.value.map(e=>({title:e.name,value:e.id}))),Gt=i(()=>{let e=N.value.trim().toLowerCase();return e?P.value.filter(t=>t.name.toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)||(t.description||``).toLowerCase().includes(e)):P.value}),Kt=i(()=>Gt.value.length),qt=i(()=>{let e=(I.value-1)*Re.value;return Gt.value.slice(e,e+Re.value)});be(N,()=>{I.value=1});let Jt=Ce([{title:`ID`,key:`id`,width:72},{title:`脚本/命令`,key:`label`},{title:`状态`,key:`status`,width:100},{title:`进度`,key:`progress`,width:88},{title:`台数`,key:`server_count`,width:72},{title:`操作人`,key:`operator`,width:88},{title:`开始时间`,key:`started_at`,width:168},{title:`操作`,key:`actions`,width:180}]),Yt=i(()=>U.value?P.value.find(e=>e.id===U.value)?.name||`脚本 #${U.value}`:``),Xt={started:`开始`,batch_progress:`批次进度`,execution_finished:`结束`,stopped:`停止`,retry_requested:`重试`,stuck_marked:`标记卡住`,server_auto_stuck:`子机超时`,auto_stuck:`自动卡住`,job_completed:`回调完成`},Zt=i(()=>new Map(ie.value.map(e=>[e.id,e])));function Qt(e){let t=(e.stderr||``).trim(),n=(e.stdout||``).trim(),r=(e.message||``).trim(),i=t||n||r||`—`;return{summary:(t||r||n||``).slice(0,200)||`—`,full:i}}let Y=i(()=>{if(!K.value?.results)return[];let e=Zt.value;return Object.entries(K.value.results).filter(([e])=>e!==`_meta`&&/^\d+$/.test(e)).map(([t,n])=>{let r=Number(t),i=e.get(r),a=String(n.status||``),o=n.phase?String(n.phase):void 0,s=n.exit_code??null,c=Qt(n),l=qe(a,o,s),ee=Ke(o);return{serverId:t,serverIdNum:r,serverName:i?.name||`服务器 #${t}`,serverDomain:i?.domain||``,status:a,phase:o,exitCode:s,summary:c.summary,fullOutput:c.full,failed:l,pending:ee}}).sort((e,t)=>e.failed===t.failed?e.pending===t.pending?e.serverName.localeCompare(t.serverName,`zh`):e.pending?1:-1:e.failed?-1:1)}),X=i(()=>Ye(K.value?.results,K.value?.server_ids)),$t=i(()=>Y.value.filter(e=>e.failed).map(e=>e.serverName)),en=i(()=>q.value===`failed`?Y.value.filter(e=>e.failed):q.value===`success`?Y.value.filter(e=>!e.failed&&!e.pending):Y.value),Z=i(()=>Y.value.find(e=>e.serverId===J.value)||null);function tn(e){return Ye(e.results,e.server_ids)}function nn(e){return ve.find(t=>t.value===e)?.label||e}function rn(e){if(!e)return`—`;let t=e.startsWith(`[long_task] `)?e.slice(12):e;return t.length>60?`${t.slice(0,60)}…`:t}function an(e){return e.script_id?P.value.find(t=>t.id===e.script_id)?.name||`脚本 #${e.script_id}`:`临时命令`}function on(e){if(!e)return`—`;let t=new Date(e);if(Number.isNaN(t.getTime()))return e.replace(`T`,` `).slice(0,19);let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`}function sn(e){let t=e.events||[];return t.length?t.slice(-3).map(e=>{let t=Xt[e.action||``]||e.action||`事件`,n=on(e.at),r=e.detail||``;return`${n} · ${t}${r?` — ${r}`:``}`}):[]}async function cn(){kt.value=!0;try{Ot.value=(await O.get(`/scripts/executions`,{limit:5})).items||[]}catch{Ot.value=[]}finally{kt.value=!1}}async function Q(){Nt.value=!0;try{let e=await Ae(async(e,t)=>{let n={limit:e,offset:t};U.value&&(n.script_id=U.value);let r=await O.get(`/scripts/executions`,n);return{items:r.items||[],total:r.total||0}},H.value,Mt.value);At.value=e.items,jt.value=e.total,Mt.value===-1&&(H.value=1)}catch{At.value=[],jt.value=0}finally{Nt.value=!1}}function $(){cn(),Q()}function ln(e){H.value=e,Q()}function un(e){Mt.value=e,H.value=1,Q()}function dn(){U.value=null,H.value=1,Q()}async function fn(e){U.value=e.id,H.value=1,await Q(),await de(),Dt.value?.scrollIntoView({behavior:`smooth`,block:`start`})}function pn(e){return e||`—`}function mn(e){if(!e)return 0;try{let t=JSON.parse(e);return Array.isArray(t)?t.length:0}catch{return 0}}function hn(e){let t=e.id??e.execution_id;if(t==null)throw Error(`执行响应缺少 id`);return t}async function gn(){Ee.value=!0;try{P.value=(await O.getList(`/scripts/`)).items}catch(e){P.value=[],a(M(e,`加载脚本列表失败`),`error`)}finally{Ee.value=!1}}async function _n(){try{F.value=await O.get(`/scripts/exec-config`)}catch{F.value=null}}async function vn(){try{Le.value=await O.getList(`/scripts/credentials`).then(e=>e.items)}catch{Le.value=[]}}function yn(e){ze.value=e,e?R.value={name:e.name,category:e.category||`ops`,description:e.description||``,content:e.content||``}:R.value={name:``,category:`ops`,description:``,content:``},L.value=!0}async function bn(){if(!R.value.name.trim()||!R.value.content.trim()){a(`请填写名称与脚本内容`,`warning`);return}Be.value=!0;try{let e={name:R.value.name.trim(),category:R.value.category,description:R.value.description.trim()||null,content:R.value.content};ze.value?await O.put(`/scripts/${ze.value.id}`,e):await O.post(`/scripts/`,e),L.value=!1,await gn(),a(`保存成功`)}catch(e){a(M(e,`保存失败`),`error`)}finally{Be.value=!1}}function xn(e){B.value=e,V.value=[],St.value=!1,Ct.value=null,z.value=!0}async function Sn(e,t,n){let r=await O.post(`/scripts/exec`,e);return Dn(t,hn(r),n,!!e.long_task,r.progress,r.status),r}async function Cn(){if(!B.value||!V.value.length){a(`请选择服务器`,`warning`);return}wt.value=!0;try{await Sn({script_id:B.value.id,server_ids:V.value,timeout:He.value,long_task:St.value,credential_id:Ct.value??void 0},B.value.name,V.value.length),z.value=!1,a(`脚本已提交执行`),$()}catch(e){a(M(e,`执行失败`),`error`)}finally{wt.value=!1}}function wn(e){Et.value=e,Tt.value=!0}async function Tn(){if(Et.value)try{await O.delete(`/scripts/${Et.value.id}`),Tt.value=!1,await gn(),a(`已删除`)}catch(e){a(M(e,`删除失败`),`error`)}}async function En(){if(!(!Ft.value.trim()||W.value.length===0)){zt.value=!0;try{await Sn({command:Ft.value.trim(),server_ids:W.value,timeout:It.value,long_task:Lt.value,credential_id:Rt.value??void 0},`临时命令`,W.value.length),a(`已在 ${W.value.length} 台服务器上执行`),$()}catch(e){a(M(e,`执行失败`),`error`)}finally{zt.value=!1}}}function Dn(e,t,n,r,i,a){G.value.some(e=>e.id===t)||(G.value.unshift({id:t,name:e,status:a||`running`,totalServers:n,progress:i||`0/${n}`,longTask:r,refreshing:!1}),On())}function On(){Bt||=setInterval(async()=>{let e=G.value.filter(e=>e.status===`running`||e.status===`partial`);if(e.length===0){kn();return}for(let t of e)await An(t)},1e4)}function kn(){Bt&&=(clearInterval(Bt),null)}async function An(e){e.refreshing=!0;try{let t=await O.get(`/scripts/executions/${e.id}`);e.status=t.status,e.progress=pn(t.progress),e.longTask=!!t.long_task,t.status!==`running`&&t.status!==`partial`&&$()}catch{}finally{e.refreshing=!1}}async function jn(e){try{await O.post(`/scripts/executions/${e.id}/stop`),await An(e),a(`已发送停止指令`)}catch(e){a(M(e,`停止失败`),`error`)}}async function Mn(e){try{await O.post(`/scripts/executions/${e.id}/mark-stuck`,{detail:`用户在脚本库标记可能卡住`}),a(`已标记`)}catch(e){a(M(e,`标记失败`),`error`)}}async function Nn(e){try{let t=await O.post(`/scripts/executions/${e.id}/retry`,{}),n=hn(t);Dn(`${e.name}(重试)`,n,e.totalServers,e.longTask,t.progress,t.status),a(`已创建重试任务 #${n}`)}catch(e){a(M(e,`重试失败`),`error`)}}async function Pn(e){try{await O.post(`/scripts/executions/${e.id}/stop`),$(),a(`已发送停止指令`)}catch(e){a(M(e,`停止失败`),`error`)}}async function Fn(e){try{let t=await O.post(`/scripts/executions/${e.id}/retry`,{});Dn(`${an(e)}(重试)`,hn(t),mn(e.server_ids)||mn(t.server_ids),!!e.long_task,t.progress,t.status),$(),a(`重试已提交`)}catch(e){a(M(e,`重试失败`),`error`)}}async function In(e){if(Ut.value=e,q.value=`all`,J.value=null,Vt.value=!0,await Vn(!1),Ye(K.value?.results,K.value?.server_ids).failed>0&&(K.value?.status===`failed`||K.value?.status===`partial`)){q.value=`failed`;let e=Y.value.find(e=>e.failed);e&&(J.value=e.serverId)}}function Ln(e){J.value=J.value===e?null:e}async function Rn(e){if(!(!e.fullOutput||e.fullOutput===`—`))try{await navigator.clipboard.writeText(e.fullOutput),a(`已复制到剪贴板`)}catch{a(`复制失败`,`error`)}}function zn(e){ee.push({path:`/terminal`,query:{server_id:String(e)}})}async function Bn(){K.value&&await Fn(K.value)}async function Vn(e){if(Ut.value!=null){Ht.value=!0;try{K.value=await O.get(`/scripts/executions/${Ut.value}`,{fetch_logs:e,log_lines:100})}catch(e){a(M(e,`加载详情失败`),`error`),Vt.value=!1}finally{Ht.value=!1}}}return pe(()=>{gn(),ge({all:!0}),_n(),vn(),$()}),fe(()=>{kn()}),(e,i)=>(v(),w(Se,{fluid:``,class:`pa-6`},{default:c(()=>[S(f,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:c(()=>[S(l,{class:`d-flex flex-wrap align-center ga-2`},{default:c(()=>[i[32]||=y(` 脚本库 `,-1),F.value?(v(),w(k,{key:0,size:`small`,variant:`tonal`,label:``,class:`ml-1`},{default:c(()=>[y(` 分批 `+h(F.value.batch_size)+` 台 · 并发 `+h(F.value.concurrency),1)]),_:1})):x(``,!0),S(j),S(_e,{modelValue:N.value,"onUpdate:modelValue":i[0]||=e=>N.value=e,"prepend-inner-icon":`mdi-magnify`,label:`搜索...`,density:`compact`,"hide-details":``,variant:`outlined`,rounded:``,style:{"max-width":`240px`}},null,8,[`modelValue`]),S(E,{color:`primary`,variant:`flat`,class:`ml-1`,"prepend-icon":`mdi-plus`,size:`small`,onClick:i[1]||=e=>yn(null)},{default:c(()=>[...i[31]||=[y(` 新建脚本 `,-1)]]),_:1})]),_:1})]),_:1}),S(f,{elevation:`0`,border:``,rounded:`lg`,class:`mb-4`},{default:c(()=>[S(l,{class:`d-flex align-center`,style:{cursor:`pointer`},onClick:i[2]||=e=>Pt.value=!Pt.value},{default:c(()=>[S(g,{class:`mr-2`},{default:c(()=>[...i[33]||=[y(`mdi-console`,-1)]]),_:1}),i[34]||=y(` 临时命令执行 `,-1),S(j),S(g,null,{default:c(()=>[y(h(Pt.value?`mdi-chevron-up`:`mdi-chevron-down`),1)]),_:1})]),_:1}),S(s,null,{default:c(()=>[o(b(`div`,null,[S(d),S(m,null,{default:c(()=>[S(Ne,{modelValue:Ft.value,"onUpdate:modelValue":i[3]||=e=>Ft.value=e,label:`命令`,variant:`outlined`,density:`compact`,rows:`3`,placeholder:`输入要执行的命令... (Ctrl+Enter 执行)`,class:`mb-3 font-monospace`,onKeydown:se(ae(En,[`ctrl`]),[`enter`]),rules:[D(je)(`命令`)]},null,8,[`modelValue`,`onKeydown`,`rules`]),i[36]||=b(`div`,{class:`text-caption text-medium-emphasis mb-1`},`目标服务器(按分类选择)`,-1),S(Ve,{modelValue:W.value,"onUpdate:modelValue":i[4]||=e=>W.value=e,servers:D(ie),loading:D(he),"max-height":`220px`,class:`mb-3`},null,8,[`modelValue`,`servers`,`loading`]),S(Oe,{dense:``},{default:c(()=>[S(A,{cols:`6`,md:`2`},{default:c(()=>[S(_e,{modelValue:It.value,"onUpdate:modelValue":i[5]||=e=>It.value=e,modelModifiers:{number:!0},label:`超时(秒)`,variant:`outlined`,density:`compact`,type:`number`,max:F.value?.max_timeout??600},null,8,[`modelValue`,`max`])]),_:1}),S(A,{cols:`6`,md:`3`},{default:c(()=>[S(Te,{modelValue:Rt.value,"onUpdate:modelValue":i[6]||=e=>Rt.value=e,items:Wt.value,"item-title":`title`,"item-value":`value`,label:`DB 凭据(可选)`,variant:`outlined`,density:`compact`,clearable:``,"hide-details":``},null,8,[`modelValue`,`items`])]),_:1}),S(A,{cols:`12`,md:`2`,class:`d-flex align-center ga-2`},{default:c(()=>[S(Fe,{modelValue:Lt.value,"onUpdate:modelValue":i[7]||=e=>Lt.value=e,label:`长任务`,density:`compact`,"hide-details":``,color:`primary`},null,8,[`modelValue`]),S(E,{color:`primary`,variant:`flat`,onClick:En,loading:zt.value,disabled:!Ft.value.trim()||W.value.length===0},{default:c(()=>[...i[35]||=[y(` 执行 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1})],512),[[te,Pt.value]])]),_:1})]),_:1}),Ee.value?(v(),w(oe,{key:0,indeterminate:``,color:`primary`})):x(``,!0),qt.value.length?(v(),w(Oe,{key:1},{default:c(()=>[(v(!0),C(_,null,T(qt.value,e=>(v(),w(A,{cols:`12`,sm:`6`,md:`4`,key:e.id},{default:c(()=>[S(f,{elevation:`0`,border:``,rounded:`lg`,class:`fill-height`},{default:c(()=>[S(l,{class:`d-flex align-center`},{default:c(()=>[S(g,{color:`primary`,class:`mr-2`},{default:c(()=>[...i[37]||=[y(`mdi-code-braces`,-1)]]),_:1}),b(`span`,Xe,h(e.name),1),S(j),S(ce,null,{activator:c(({props:e})=>[S(E,le({icon:`mdi-dots-vertical`,variant:`text`,size:`small`},{ref_for:!0},e),null,16)]),default:c(()=>[S(ye,{density:`compact`},{default:c(()=>[S(me,{title:`编辑`,onClick:t=>yn(e)},{prepend:c(()=>[S(g,null,{default:c(()=>[...i[38]||=[y(`mdi-pencil`,-1)]]),_:1})]),_:1},8,[`onClick`]),S(me,{title:`执行`,onClick:t=>xn(e)},{prepend:c(()=>[S(g,null,{default:c(()=>[...i[39]||=[y(`mdi-play`,-1)]]),_:1})]),_:1},8,[`onClick`]),S(me,{title:`删除`,onClick:t=>wn(e),class:`text-error`},{prepend:c(()=>[S(g,{color:`error`},{default:c(()=>[...i[40]||=[y(`mdi-delete`,-1)]]),_:1})]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024)]),_:2},1024),S(m,null,{default:c(()=>[e.category?(v(),w(k,{key:0,size:`small`,variant:`tonal`,label:``,class:`mb-2`},{default:c(()=>[y(h(nn(e.category)),1)]),_:2},1024)):x(``,!0),b(`div`,Ze,h(e.description||`无描述`),1),b(`div`,Qe,` 更新于 `+h(e.updated_at||e.created_at||`—`),1)]),_:2},1024),S(u,null,{default:c(()=>[S(E,{size:`small`,variant:`tonal`,"prepend-icon":`mdi-play`,color:`primary`,onClick:t=>xn(e)},{default:c(()=>[...i[41]||=[y(` 执行 `,-1)]]),_:1},8,[`onClick`]),S(j),S(E,{size:`small`,variant:`text`,onClick:t=>fn(e)},{default:c(()=>[...i[42]||=[y(`历史`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})):Ee.value?x(``,!0):(v(),w(f,{key:2,elevation:`0`,border:``,rounded:`lg`},{default:c(()=>[S(m,{class:`text-center text-medium-emphasis py-10`},{default:c(()=>[...i[43]||=[y(`暂无脚本,点击「新建脚本」添加`,-1)]]),_:1})]),_:1})),Kt.value>Re.value?(v(),C(`div`,$e,[S(r,{modelValue:I.value,"onUpdate:modelValue":i[8]||=e=>I.value=e,length:Math.ceil(Kt.value/Re.value),rounded:``,density:`compact`},null,8,[`modelValue`,`length`])])):x(``,!0),b(`div`,{ref_key:`historySectionRef`,ref:Dt},[S(f,{elevation:`0`,border:``,rounded:`lg`,class:`mt-4`},{default:c(()=>[S(l,{class:`d-flex align-center text-subtitle-1`},{default:c(()=>[S(g,{class:`mr-2`},{default:c(()=>[...i[44]||=[y(`mdi-history`,-1)]]),_:1}),i[45]||=y(` 最近执行 `,-1),S(j),S(E,{size:`small`,variant:`text`,icon:`mdi-refresh`,loading:kt.value,onClick:cn},null,8,[`loading`])]),_:1}),S(d),S(m,{class:`pa-0`},{default:c(()=>[kt.value?(v(),w(oe,{key:0,indeterminate:``,color:`primary`})):x(``,!0),Ot.value.length?(v(),w(ye,{key:1,density:`compact`,class:`py-0`},{default:c(()=>[(v(!0),C(_,null,T(Ot.value,e=>(v(),w(me,{key:e.id,title:`#${e.id} · ${an(e)}`,onClick:t=>In(e.id),style:{cursor:`pointer`}},{subtitle:c(()=>[b(`div`,et,h(D(Ue)(e.status))+` · `+h(mn(e.server_ids))+` 台 · `+h(e.operator||`—`)+` · `+h(on(e.started_at)),1),(v(!0),C(_,null,T(sn(e),(e,t)=>(v(),C(`div`,{key:t,class:`text-caption text-medium-emphasis font-monospace mt-1`},h(e),1))),128))]),append:c(()=>[S(k,{color:D(We)(e.status),size:`x-small`,variant:`tonal`,label:``},{default:c(()=>[y(h(D(Ue)(e.status)),1)]),_:2},1032,[`color`])]),_:2},1032,[`title`,`onClick`]))),128))]),_:1})):kt.value?x(``,!0):(v(),C(`div`,tt,`暂无执行记录`))]),_:1})]),_:1}),S(f,{elevation:`0`,border:``,rounded:`lg`,class:`mt-4`},{default:c(()=>[S(l,{class:`d-flex flex-wrap align-center ga-2 text-subtitle-1`},{default:c(()=>[S(g,{class:`mr-1`},{default:c(()=>[...i[46]||=[y(`mdi-format-list-bulleted`,-1)]]),_:1}),i[47]||=y(` 全部执行历史 `,-1),U.value?(v(),w(k,{key:0,size:`small`,variant:`tonal`,closable:``,label:``,"onClick:close":dn},{default:c(()=>[y(h(Yt.value),1)]),_:1})):x(``,!0),S(j),S(E,{size:`small`,variant:`text`,icon:`mdi-refresh`,loading:Nt.value,onClick:Q},null,8,[`loading`])]),_:1}),S(d),S(De,{items:At.value,headers:D(Jt),"items-length":jt.value,loading:Nt.value,page:H.value,"items-per-page":Mt.value,"items-per-page-options":t,density:`compact`,hover:``,"onUpdate:page":ln,"onUpdate:itemsPerPage":un},{"item.label":c(({item:e})=>[b(`div`,nt,h(an(e)),1),b(`code`,rt,h(rn(e.command)),1)]),"item.status":c(({item:e})=>[S(k,{color:D(We)(e.status),size:`x-small`,variant:`tonal`,label:``},{default:c(()=>[y(h(D(Ue)(e.status)),1)]),_:2},1032,[`color`])]),"item.server_count":c(({item:e})=>[y(h(mn(e.server_ids)),1)]),"item.progress":c(({item:e})=>[b(`div`,it,[b(`span`,null,h(pn(e.progress)),1),tn(e).failed>0?(v(),w(k,{key:0,color:`error`,size:`x-small`,variant:`tonal`,label:``},{default:c(()=>[y(h(tn(e).failed)+` 台失败 `,1)]),_:2},1024)):x(``,!0)])]),"item.started_at":c(({item:e})=>[y(h(on(e.started_at)),1)]),"item.actions":c(({item:e})=>[S(E,{size:`x-small`,variant:`text`,onClick:t=>In(e.id)},{default:c(()=>[...i[48]||=[y(`详情`,-1)]]),_:1},8,[`onClick`]),e.status===`running`||e.status===`partial`?(v(),w(E,{key:0,size:`x-small`,variant:`text`,color:`error`,onClick:t=>Pn(e)},{default:c(()=>[...i[49]||=[y(` 停止 `,-1)]]),_:1},8,[`onClick`])):x(``,!0),e.status===`failed`||e.status===`partial`?(v(),w(E,{key:1,size:`x-small`,variant:`text`,color:`primary`,onClick:t=>Fn(e)},{default:c(()=>[...i[50]||=[y(` 重试 `,-1)]]),_:1},8,[`onClick`])):x(``,!0)]),"no-data":c(()=>[...i[51]||=[b(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无执行记录`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`,`items-per-page`])]),_:1})],512),G.value.length>0?(v(),w(f,{key:4,elevation:`0`,border:``,rounded:`lg`,class:`mt-4`},{default:c(()=>[S(l,{class:`d-flex align-center text-subtitle-1`},{default:c(()=>[S(g,{class:`mr-2`},{default:c(()=>[...i[52]||=[y(`mdi-progress-clock`,-1)]]),_:1}),i[54]||=y(` 批量执行状态 `,-1),S(j),S(E,{size:`small`,variant:`text`,onClick:i[9]||=e=>G.value=[]},{default:c(()=>[...i[53]||=[y(`清除`,-1)]]),_:1})]),_:1}),S(d),S(m,null,{default:c(()=>[S(ye,{density:`compact`},{default:c(()=>[(v(!0),C(_,null,T(G.value,e=>(v(),w(me,{key:e.id,title:e.name},{subtitle:c(()=>[b(`span`,at,[y(` #`+h(e.id)+` · `+h(e.progress||`—`)+` · `+h(e.totalServers)+` 台 `,1),e.longTask?(v(),C(`span`,ot,`· 长任务`)):x(``,!0)])]),append:c(()=>[b(`div`,st,[S(k,{color:D(We)(e.status),size:`x-small`,variant:`tonal`,label:``},{default:c(()=>[y(h(D(Ue)(e.status)),1)]),_:2},1032,[`color`]),S(E,{size:`x-small`,variant:`text`,onClick:t=>In(e.id)},{default:c(()=>[...i[55]||=[y(`详情`,-1)]]),_:1},8,[`onClick`]),S(E,{size:`x-small`,variant:`text`,onClick:t=>An(e),loading:e.refreshing},{default:c(()=>[...i[56]||=[y(` 刷新 `,-1)]]),_:1},8,[`onClick`,`loading`]),e.status===`running`?(v(),w(E,{key:0,size:`x-small`,variant:`text`,color:`warning`,onClick:t=>Mn(e)},{default:c(()=>[...i[57]||=[y(` 卡住 `,-1)]]),_:1},8,[`onClick`])):x(``,!0),e.status===`running`||e.status===`partial`?(v(),w(E,{key:1,size:`x-small`,variant:`text`,color:`error`,onClick:t=>jn(e)},{default:c(()=>[...i[58]||=[y(` 停止 `,-1)]]),_:1},8,[`onClick`])):x(``,!0),e.status===`failed`||e.status===`partial`?(v(),w(E,{key:2,size:`x-small`,variant:`text`,color:`primary`,onClick:t=>Nn(e)},{default:c(()=>[...i[59]||=[y(` 重试 `,-1)]]),_:1},8,[`onClick`])):x(``,!0)])]),_:2},1032,[`title`]))),128))]),_:1})]),_:1})]),_:1})):x(``,!0),S(Me,{modelValue:L.value,"onUpdate:modelValue":i[15]||=e=>L.value=e,"max-width":`900`,scrollable:``},{default:c(()=>[S(f,{border:``},{default:c(()=>[S(l,null,{default:c(()=>[y(h(ze.value?`编辑脚本`:`新建脚本`),1)]),_:1}),S(d),S(m,null,{default:c(()=>[S(_e,{modelValue:R.value.name,"onUpdate:modelValue":i[10]||=e=>R.value.name=e,label:`脚本名称`,variant:`outlined`,density:`compact`,class:`mb-2`,rules:[D(je)(`脚本名称`)]},null,8,[`modelValue`,`rules`]),S(Te,{modelValue:R.value.category,"onUpdate:modelValue":i[11]||=e=>R.value.category=e,items:ve,"item-title":`label`,"item-value":`value`,label:`分类`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),S(Ne,{modelValue:R.value.description,"onUpdate:modelValue":i[12]||=e=>R.value.description=e,label:`描述`,variant:`outlined`,density:`compact`,rows:`2`,class:`mb-2`},null,8,[`modelValue`]),i[60]||=b(`div`,{class:`text-caption text-medium-emphasis mb-1`},`脚本内容`,-1),S(Ie,{modelValue:R.value.content,"onUpdate:modelValue":i[13]||=e=>R.value.content=e},null,8,[`modelValue`])]),_:1}),S(d),S(u,null,{default:c(()=>[S(j),S(E,{variant:`text`,onClick:i[14]||=e=>L.value=!1},{default:c(()=>[...i[61]||=[y(`取消`,-1)]]),_:1}),S(E,{color:`primary`,variant:`flat`,onClick:bn,loading:Be.value,disabled:!R.value.content.trim()},{default:c(()=>[...i[62]||=[y(` 保存 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),S(Me,{modelValue:z.value,"onUpdate:modelValue":i[21]||=e=>z.value=e,"max-width":`720`,scrollable:``},{default:c(()=>[S(f,{border:``},{default:c(()=>[S(l,null,{default:c(()=>[y(`执行脚本: `+h(B.value?.name),1)]),_:1}),S(m,null,{default:c(()=>[i[63]||=b(`div`,{class:`text-caption text-medium-emphasis mb-1`},`选择服务器(按分类勾选)`,-1),S(Ve,{modelValue:V.value,"onUpdate:modelValue":i[16]||=e=>V.value=e,servers:D(ie),loading:D(he),"max-height":`360px`,class:`mb-2`},null,8,[`modelValue`,`servers`,`loading`]),S(Oe,{dense:``},{default:c(()=>[S(A,{cols:`6`},{default:c(()=>[S(_e,{modelValue:He.value,"onUpdate:modelValue":i[17]||=e=>He.value=e,modelModifiers:{number:!0},label:`超时(秒)`,variant:`outlined`,density:`compact`,type:`number`,max:F.value?.max_timeout??600},null,8,[`modelValue`,`max`])]),_:1}),S(A,{cols:`6`},{default:c(()=>[S(Te,{modelValue:Ct.value,"onUpdate:modelValue":i[18]||=e=>Ct.value=e,items:Wt.value,"item-title":`title`,"item-value":`value`,label:`DB 凭据(可选)`,variant:`outlined`,density:`compact`,clearable:``},null,8,[`modelValue`,`items`])]),_:1})]),_:1}),S(Fe,{modelValue:St.value,"onUpdate:modelValue":i[19]||=e=>St.value=e,label:`长任务(nohup + Agent 回调,适合超时较长的脚本)`,density:`compact`,color:`primary`},null,8,[`modelValue`])]),_:1}),S(u,null,{default:c(()=>[S(j),S(E,{variant:`text`,onClick:i[20]||=e=>z.value=!1},{default:c(()=>[...i[64]||=[y(`取消`,-1)]]),_:1}),S(E,{color:`primary`,variant:`flat`,onClick:Cn,loading:wt.value,disabled:!V.value.length},{default:c(()=>[...i[65]||=[y(` 执行 `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),S(Me,{modelValue:Tt.value,"onUpdate:modelValue":i[23]||=e=>Tt.value=e,"max-width":`400`},{default:c(()=>[S(f,{border:``},{default:c(()=>[S(l,null,{default:c(()=>[...i[66]||=[y(`确认删除`,-1)]]),_:1}),S(m,null,{default:c(()=>[i[67]||=y(`确定要删除脚本 `,-1),b(`strong`,null,h(Et.value?.name),1),i[68]||=y(` 吗?`,-1)]),_:1}),S(u,null,{default:c(()=>[S(j),S(E,{variant:`text`,onClick:i[22]||=e=>Tt.value=!1},{default:c(()=>[...i[69]||=[y(`取消`,-1)]]),_:1}),S(E,{color:`error`,variant:`flat`,onClick:Tn},{default:c(()=>[...i[70]||=[y(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`]),S(Me,{modelValue:Vt.value,"onUpdate:modelValue":i[30]||=e=>Vt.value=e,"max-width":`960`,scrollable:``},{default:c(()=>[S(f,{border:``},{default:c(()=>[S(l,{class:`d-flex align-center flex-wrap ga-2`},{default:c(()=>[b(`span`,null,`执行详情 #`+h(K.value?.id),1),K.value?(v(),w(k,{key:0,color:D(We)(K.value.status),size:`small`,variant:`tonal`,label:``},{default:c(()=>[y(h(D(Ue)(K.value.status)),1)]),_:1},8,[`color`])):x(``,!0),S(j),K.value?.long_task?(v(),w(E,{key:1,size:`small`,variant:`tonal`,loading:Ht.value,onClick:i[24]||=e=>Vn(!0)},{default:c(()=>[...i[71]||=[y(` 拉取日志 `,-1)]]),_:1},8,[`loading`])):x(``,!0)]),_:1}),S(d),K.value?(v(),w(m,{key:0},{default:c(()=>[b(`div`,ct,h(pn(K.value.progress))+` · 操作人 `+h(K.value.operator||`—`),1),b(`pre`,lt,h(K.value.command),1),X.value.total?(v(),C(`div`,ut,[S(k,{size:`small`,variant:`tonal`,label:``},{default:c(()=>[y(`共 `+h(X.value.total)+` 台`,1)]),_:1}),X.value.success?(v(),w(k,{key:0,color:`success`,size:`small`,variant:`tonal`,label:``},{default:c(()=>[y(` 成功 `+h(X.value.success),1)]),_:1})):x(``,!0),X.value.failed?(v(),w(k,{key:1,color:`error`,size:`small`,variant:`tonal`,label:``},{default:c(()=>[y(` 失败 `+h(X.value.failed),1)]),_:1})):x(``,!0),X.value.pending?(v(),w(k,{key:2,color:`info`,size:`small`,variant:`tonal`,label:``},{default:c(()=>[y(` 进行中 `+h(X.value.pending),1)]),_:1})):x(``,!0)])):x(``,!0),$t.value.length?(v(),w(Pe,{key:1,type:`error`,variant:`tonal`,density:`compact`,class:`mb-3`,title:`失败 ${$t.value.length} 台`},{default:c(()=>[b(`div`,dt,h($t.value.join(`、`)),1)]),_:1},8,[`title`])):x(``,!0),b(`div`,ft,[i[75]||=b(`span`,{class:`text-caption text-medium-emphasis`},`筛选`,-1),S(ue,{modelValue:q.value,"onUpdate:modelValue":i[25]||=e=>q.value=e,mandatory:``,density:`compact`,color:`primary`,variant:`outlined`,divided:``},{default:c(()=>[S(E,{value:`all`,size:`small`},{default:c(()=>[...i[72]||=[y(`全部`,-1)]]),_:1}),S(E,{value:`failed`,size:`small`},{default:c(()=>[...i[73]||=[y(`仅失败`,-1)]]),_:1}),S(E,{value:`success`,size:`small`},{default:c(()=>[...i[74]||=[y(`仅成功`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),S(n,{density:`compact`,class:`exec-detail-table`},{default:c(()=>[i[77]||=b(`thead`,null,[b(`tr`,null,[b(`th`,null,`服务器`),b(`th`,null,`状态`),b(`th`,{style:{width:`72px`}},`退出码`),b(`th`,null,`错误摘要`),b(`th`,{style:{width:`120px`},class:`text-end`},`操作`)])],-1),b(`tbody`,null,[(v(!0),C(_,null,T(en.value,e=>(v(),C(`tr`,{key:e.serverId,class:re([{"exec-detail-row--failed":e.failed,"exec-detail-row--active":J.value===e.serverId},`exec-detail-row cursor-pointer`]),onClick:t=>Ln(e.serverId)},[b(`td`,null,[b(`div`,mt,h(e.serverName),1),e.serverDomain?(v(),C(`div`,ht,h(e.serverDomain),1)):x(``,!0)]),b(`td`,null,[S(k,{color:D(Je)(e.status,e.phase,e.exitCode),size:`x-small`,variant:`tonal`,label:``},{default:c(()=>[y(h(D(Ge)(e.status,e.phase)),1)]),_:2},1032,[`color`])]),b(`td`,{class:re({"text-error font-weight-medium":e.failed})},h(e.exitCode??`—`),3),b(`td`,{class:`text-truncate`,style:{"max-width":`280px`},title:e.summary},h(e.summary),9,gt),b(`td`,{class:`text-end`,onClick:i[26]||=ae(()=>{},[`stop`])},[e.fullOutput&&e.fullOutput!==`—`?(v(),w(E,{key:0,size:`x-small`,variant:`text`,icon:`mdi-content-copy`,title:`复制输出`,onClick:t=>Rn(e)},null,8,[`onClick`])):x(``,!0),S(E,{size:`x-small`,variant:`text`,icon:`mdi-console`,title:`打开终端`,onClick:t=>zn(e.serverIdNum)},null,8,[`onClick`])])],10,pt))),128)),en.value.length===0?(v(),C(`tr`,_t,[...i[76]||=[b(`td`,{colspan:`5`,class:`text-center text-medium-emphasis py-4`},`当前筛选无记录`,-1)]])):x(``,!0)])]),_:1}),Z.value?(v(),w(f,{key:2,variant:`tonal`,color:Z.value.failed?`error`:void 0,class:`mt-3 pa-3`},{default:c(()=>[b(`div`,vt,[b(`span`,yt,[y(h(Z.value.serverName)+` `,1),Z.value.serverDomain?(v(),C(`span`,bt,`(`+h(Z.value.serverDomain)+`)`,1)):x(``,!0)]),S(j),S(E,{size:`x-small`,variant:`text`,"prepend-icon":`mdi-content-copy`,onClick:i[27]||=e=>Rn(Z.value)},{default:c(()=>[...i[78]||=[y(` 复制 `,-1)]]),_:1}),S(E,{size:`x-small`,variant:`text`,"prepend-icon":`mdi-console`,onClick:i[28]||=e=>zn(Z.value.serverIdNum)},{default:c(()=>[...i[79]||=[y(` 终端 `,-1)]]),_:1})]),b(`pre`,xt,h(Z.value.fullOutput),1)]),_:1},8,[`color`])):x(``,!0)]),_:1})):x(``,!0),K.value?(v(),w(u,{key:1},{default:c(()=>[K.value.status===`failed`||K.value.status===`partial`?(v(),w(E,{key:0,color:`primary`,variant:`text`,onClick:Bn},{default:c(()=>[...i[80]||=[y(` 重试失败项 `,-1)]]),_:1})):x(``,!0),S(j),S(E,{variant:`text`,onClick:i[29]||=e=>Vt.value=!1},{default:c(()=>[...i[81]||=[y(`关闭`,-1)]]),_:1})]),_:1})):x(``,!0)]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}}),[[`__scopeId`,`data-v-973f254a`]]);export{St as default}; |