Files
Nexus/web/app/assets/SchedulesPage-CNMD518i.js
T
Nexus Agent dabfc128b3 feat: 浏览器 RDP、推送提示音与子机指标等多项功能
- 3389远程页 + guacd 侧车 WebSocket 桥(无 RDP 会话审计)
- 文件推送完成独立提示音,至少一台成功即播放
- 子机列表展开 CPU/内存/磁盘 sparkline 与指标采样落库
- 终端全量服务器列表、连接中状态;告警 Telegram 公网 IP
- SSH 密钥凭据 UI 简化;子机搜索未设路径筛选

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 01:37:32 +08:00

1 line
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{n as e,t}from"./useSnackbar-CnnJE332.js";import{n,t as r}from"./VRow-w_jxb14C.js";import{Cr as i,Ct as a,Er as o,F as s,I as c,Jt as l,Kt as u,Or as d,Sr as f,Tr as p,Vr as m,Yr as ee,Zr as h,_ as g,br as _,di as v,en as y,gr as b,hi as x,ii as S,qt as C,ri as w,tt as T,xr as E,y as D,yr as O}from"./index--ZLWJhtp.js";import{t as te}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ne}from"./usePageActivateRefresh-CJkUcCiK.js";import{n as re,r as ie,t as ae}from"./dataTable-esDY4cOk.js";import{S as oe,_ as se,b as ce,t as k,v as le}from"./VTextField-BHVsCc73.js";import{t as ue}from"./VSelect-fmsU8QCW.js";import{t as de}from"./VDataTableServer-CajuWgd2.js";import{t as A}from"./apiError-Bd0nPSTw.js";import{t as fe}from"./useServerList-DN80MBeq.js";import{t as pe}from"./VDialog-BCdcmy4p.js";import{a as me,i as he,n as ge,r as _e,t as ve}from"./usePushStaging-Dz1m9JIh.js";import{t as ye}from"./ServerCategoryPicker-DY2OLMBK.js";import{n as be,t as xe}from"./VTextarea-8gALE-W1.js";var j=[{value:`day`,label:`当天`},{value:`day-n`,label:`每 N 天`},{value:`hour`,label:`每小时`},{value:`hour-n`,label:`每 N 小时`},{value:`minute-n`,label:`每 N 分钟`},{value:`week`,label:`每周`},{value:`month`,label:`每月`}],M=[{value:0,label:`周日`},{value:1,label:`周一`},{value:2,label:`周二`},{value:3,label:`周三`},{value:4,label:`周四`},{value:5,label:`周五`},{value:6,label:`周六`}];function N(){return{type:`day`,minute:0,hour:2,interval:2,week:1,monthDay:1,customCron:``}}function P(e,t,n){let r=Math.floor(Number(e));return Number.isNaN(r)?t:Math.min(n,Math.max(t,r))}function F(e){if(e.type===`custom`){let t=e.customCron.trim();if(!t)throw Error(`自定义 Cron 不能为空`);if(!Se(t))throw Error(`Cron 须为 5 字段`);return t}let t=P(e.minute,0,59),n=P(e.hour,0,23);switch(e.type){case`day`:return`${t} ${n} * * *`;case`day-n`:return`${t} ${n} */${P(e.interval,1,365)} * *`;case`hour`:return`${t} * * * *`;case`hour-n`:return`${t} */${P(e.interval,1,23)} * * *`;case`minute-n`:return`*/${P(e.interval,1,59)} * * * *`;case`week`:return`${t} ${n} * * ${P(e.week,0,6)}`;case`month`:return`${t} ${n} ${P(e.monthDay,1,31)} * *`;default:throw Error(`未知执行周期类型`)}}function Se(e){let t=e.trim().split(/\s+/);return t.length===5?t.every(e=>/^[\d*/,\-]+$/.test(e)):!1}function I(e){return e===`*`}function L(e){if(e===`*`)return{kind:`star`};if(e.startsWith(`*/`)){let t=parseInt(e.slice(2),10);if(!Number.isNaN(t)&&t>0)return{kind:`step`,step:t}}let t=parseInt(e,10);return Number.isNaN(t)?{kind:`star`}:{kind:`fixed`,value:t}}function R(e){let t=N(),n=(e||``).trim();if(!n)return t;let r=n.split(/\s+/);if(r.length!==5)return{...t,type:`custom`,customCron:n};let[i,a,o,s,c]=r;if(!I(s))return{...t,type:`custom`,customCron:n};let l=L(i),u=L(a),d=L(o),f=L(c);if(l.kind===`step`&&u.kind===`star`&&d.kind===`star`&&f.kind===`star`)return{...t,type:`minute-n`,interval:l.step};if(l.kind===`fixed`&&u.kind===`star`&&d.kind===`star`&&f.kind===`star`)return{...t,type:`hour`,minute:l.value};if(l.kind===`fixed`&&u.kind===`step`&&d.kind===`star`&&f.kind===`star`)return{...t,type:`hour-n`,minute:l.value,interval:u.step};if(l.kind===`fixed`&&u.kind===`fixed`&&d.kind===`star`&&(f.kind===`fixed`||c===`7`)){let e=c===`7`?0:f.value;return{...t,type:`week`,minute:l.value,hour:u.value,week:e}}return l.kind===`fixed`&&u.kind===`fixed`&&d.kind===`fixed`&&f.kind===`star`?{...t,type:`month`,minute:l.value,hour:u.value,monthDay:d.value}:l.kind===`fixed`&&u.kind===`fixed`&&d.kind===`step`&&f.kind===`star`?{...t,type:`day-n`,minute:l.value,hour:u.value,interval:d.step}:l.kind===`fixed`&&u.kind===`fixed`&&d.kind===`star`&&f.kind===`star`?{...t,type:`day`,minute:l.value,hour:u.value}:{...t,type:`custom`,customCron:n}}function z(e){return String(e).padStart(2,`0`)}function B(e){let t=typeof e==`string`?R(e):e;if(t.type===`custom`)return t.customCron?`自定义: ${t.customCron}`:`—`;let n=`${z(t.hour)}:${z(t.minute)}`;switch(t.type){case`day`:return`当天 ${n}`;case`day-n`:return`每 ${t.interval}${n}`;case`hour`:return`每小时 第 ${t.minute} 分`;case`hour-n`:return`每 ${t.interval} 小时 第 ${t.minute} 分`;case`minute-n`:return`每 ${t.interval} 分钟`;case`week`:return`每周${M.find(e=>e.value===t.week)?.label||`周${t.week}`} ${n}`;case`month`:return`每月 ${t.monthDay}${n}`;default:return`—`}}function Ce(e){if(e.type===`custom`)return e.customCron.trim()?Se(e.customCron.trim())?null:`Cron 须为 5 字段`:`请填写 Cron 表达式`;try{return F(e),null}catch(e){return e instanceof Error?e.message:`执行周期无效`}}function V(e,t){for(let n of e.split(`,`)){if(n===`*`)return!0;if(n.startsWith(`*/`)){let e=parseInt(n.slice(2),10);if(e>0&&t%e===0)return!0;continue}if(n.includes(`-`)){let[e,r]=n.split(`-`,2),i=parseInt(e,10),a=parseInt(r,10);if(!Number.isNaN(i)&&!Number.isNaN(a)&&i<=t&&t<=a)return!0;continue}let e=parseInt(n,10);if(!Number.isNaN(e)&&(t===e||e===7&&t===0))return!0}return!1}function H(e,t){let n=e.trim().split(/\s+/);if(n.length!==5)return!1;let r=u(t),i=[r.minute,r.hour,r.day,r.month,r.dow];return n.every((e,t)=>V(e,i[t]))}function we(e,t=new Date){let n=new Date(t);n.setSeconds(0,0),n.setMinutes(n.getMinutes()+1);let r=new Date(t.getTime()+366*24*60*60*1e3);for(;n<=r;){if(H(e,n))return new Date(n);n.setMinutes(n.getMinutes()+1)}return null}function Te(e,t){if(e?.trim())return R(e);if(t){let e=l(t);if(e){let t=u(e);return{...N(),type:`day`,hour:t.hour,minute:t.minute}}}return N()}function Ee(e,t,n){let r=B(Te(t,n));return e===`once`?`单次 · ${r}`:r}var U={class:`schedule-cycle-picker`},W={key:0,class:`cycle-type-fixed text-body-2`},G={class:`text-caption text-medium-emphasis mb-2`},K={key:6,class:`text-caption text-medium-emphasis`},q={key:0,class:`ms-1`},De=te(d({__name:`ScheduleCyclePicker`,props:{modelValue:{},singleShot:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let a=e,l=t,u=j,d=O(()=>a.singleShot===!0),g=O(()=>d.value?!0:[`day`,`day-n`,`week`,`month`].includes(a.modelValue.type)),y=O(()=>{let e=`时间为北京时间(Asia/Shanghai`;return d.value?`单次:当天指定时:分,在下一匹配时刻执行一次(不含日期选择)。${e}`:`循环:按重复方式与时:分持续执行。${e}`});ee(()=>a.singleShot,e=>{e&&a.modelValue.type!==`custom`&&a.modelValue.type!==`day`&&l(`update:modelValue`,{...N(),...a.modelValue,type:`day`})},{immediate:!0});let S=O(()=>{try{return B(a.modelValue)}catch{return``}}),C=O(()=>{try{return a.modelValue.type===`custom`&&!a.modelValue.customCron.trim()?``:F(a.modelValue)}catch{return``}});function w(e,t,n){let r=Math.floor(Number(e));return Number.isNaN(r)?t:Math.min(n,Math.max(t,r))}function T(e){l(`update:modelValue`,{...a.modelValue,...e})}function D(e){e&&l(`update:modelValue`,{...N(),...a.modelValue,type:e})}function te(){l(`update:modelValue`,{...N(),type:`day`})}return(t,a)=>(m(),i(`div`,U,[a[11]||=_(`div`,{class:`text-caption text-medium-emphasis mb-2`},`开始执行周期`,-1),o(r,{dense:``,class:`mb-2 align-center`},{default:h(()=>[o(n,{cols:`auto`,class:`cycle-type-col`},{default:h(()=>[d.value?(m(),i(`span`,W,`当天`)):(m(),E(ue,{key:1,"model-value":e.modelValue.type===`custom`?null:e.modelValue.type,items:v(u),"item-title":`label`,"item-value":`value`,label:`重复方式`,variant:`outlined`,density:`compact`,"hide-details":``,class:`cycle-type-select`,"onUpdate:modelValue":D},null,8,[`model-value`,`items`]))]),_:1}),g.value?(m(),i(b,{key:0},[o(n,{cols:`auto`,class:`time-col`},{default:h(()=>[o(k,{"model-value":e.modelValue.hour,label:`时`,type:`number`,min:`0`,max:`23`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":a[0]||=e=>T({hour:w(e,0,23)})},null,8,[`model-value`])]),_:1}),o(n,{cols:`auto`,class:`time-col`},{default:h(()=>[o(k,{"model-value":e.modelValue.minute,label:`分`,type:`number`,min:`0`,max:`59`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":a[1]||=e=>T({minute:w(e,0,59)})},null,8,[`model-value`])]),_:1})],64)):f(``,!0),!d.value&&(e.modelValue.type===`hour`||e.modelValue.type===`hour-n`)?(m(),E(n,{key:1,cols:`auto`,class:`time-col-wide`},{default:h(()=>[o(k,{"model-value":e.modelValue.minute,label:`第几分`,type:`number`,min:`0`,max:`59`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":a[2]||=e=>T({minute:w(e,0,59)})},null,8,[`model-value`])]),_:1})):f(``,!0)]),_:1}),_(`div`,G,x(y.value),1),!d.value&&e.modelValue.type===`day-n`?(m(),E(k,{key:0,"model-value":e.modelValue.interval,label:`天数 N`,type:`number`,min:`1`,max:`365`,variant:`outlined`,density:`compact`,hint:`从每月 1 日起每 N 天执行(与宝塔一致)`,"persistent-hint":``,class:`mb-2`,"onUpdate:modelValue":a[3]||=e=>T({interval:w(e,1,365)})},null,8,[`model-value`])):f(``,!0),!d.value&&e.modelValue.type===`hour-n`?(m(),E(k,{key:1,"model-value":e.modelValue.interval,label:`小时 N`,type:`number`,min:`1`,max:`23`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":a[4]||=e=>T({interval:w(e,1,23)})},null,8,[`model-value`])):f(``,!0),!d.value&&e.modelValue.type===`minute-n`?(m(),E(k,{key:2,"model-value":e.modelValue.interval,label:`分钟 N`,type:`number`,min:v(1),max:`59`,variant:`outlined`,density:`compact`,hint:`从整点起每 N 分钟触发一次`,"persistent-hint":``,class:`mb-2`,"onUpdate:modelValue":a[5]||=e=>T({interval:w(e,v(1),59)})},null,8,[`model-value`,`min`])):f(``,!0),!d.value&&e.modelValue.type===`week`?(m(),E(ue,{key:3,"model-value":e.modelValue.week,items:v(M),"item-title":`label`,"item-value":`value`,label:`星期`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":a[6]||=e=>T({week:w(e,0,6)})},null,8,[`model-value`,`items`])):f(``,!0),!d.value&&e.modelValue.type===`month`?(m(),E(k,{key:4,"model-value":e.modelValue.monthDay,label:`每月几号`,type:`number`,min:`1`,max:`31`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":a[7]||=e=>T({monthDay:w(e,1,31)})},null,8,[`model-value`])):f(``,!0),e.modelValue.type===`custom`?(m(),i(b,{key:5},[o(s,{type:`warning`,density:`compact`,variant:`tonal`,class:`mb-2 text-caption`},{default:h(()=>[...a[9]||=[p(` 当前 Cron 无法映射为可视化周期,可保留原表达式或改用上方周期类型重建。 `,-1)]]),_:1}),o(k,{"model-value":e.modelValue.customCron,label:`Cron 表达式(5 字段)`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":a[8]||=e=>T({customCron:String(e??``)})},null,8,[`model-value`]),o(c,{size:`small`,variant:`tonal`,color:`primary`,class:`mb-2`,onClick:te},{default:h(()=>[...a[10]||=[p(` 改用可视化周期 `,-1)]]),_:1})],64)):f(``,!0),S.value?(m(),i(`div`,K,[p(` 预览:`+x(S.value)+` `,1),C.value?(m(),i(`span`,q,``+x(C.value)+``,1)):f(``,!0)])):f(``,!0)]))}}),[[`__scopeId`,`data-v-88b715a3`]]),Oe={class:`text-caption`},ke={key:0,class:`text-caption`},Ae={key:1,class:`text-caption`},je={class:`text-medium-emphasis`},Me={class:`text-caption text-medium-emphasis`},Ne={class:`text-caption text-medium-emphasis`},J=d({name:`SchedulesPage`,__name:`SchedulesPage`,setup(n){let r=[...ae],l=t(),{servers:u,loading:d,loadServers:ee}=fe(),O=ge(),te=ve(O.uploadedSource),j=w(O),M=w(te);function P(){j.clearUploadedSource(),j.clearValidatedSource()}async function Se(e){P();let t=e.trim();t&&(j.sourcePath=t,await j.validateSourcePath())}let I=S(!1),L=S(null),R=S(null),z=S([]),B=S([]),V=S(1),H=S(0),U=S(20),W=S(!1),G=S(null),K=S(!1),q=S(``),J=S([]),Y=S({name:``,schedule_type:`push`,run_mode:`once`,cycle:N(),script_id:null,script_content:``,enabled:!0}),X=S(!1),Z=S(null),Pe=re([{title:`名称`,key:`name`},{title:`类型`,key:`schedule_type`,width:80},{title:`模式`,key:`run_mode`,width:72},{title:`开始执行周期`,key:`cron_expr`,width:180},{title:`源文件 / 脚本`,key:`source_path`},{title:`服务器`,key:`server_count`,width:80},{title:`上次运行`,key:`last_run_at`,width:140},{title:`下次运行`,key:`next_run`,width:140},{title:`启用`,key:`enabled`,width:80},{title:`操作`,key:`actions`,width:200,align:`end`}]);function Q(e){if(Array.isArray(e))return e.map(e=>Number(e)).filter(e=>!Number.isNaN(e));if(typeof e==`string`&&e.trim())try{let t=JSON.parse(e);if(Array.isArray(t))return t.map(e=>Number(e)).filter(e=>!Number.isNaN(e))}catch{}return[]}function Fe(e){return Q(e).length}function Ie(e){if(e.script_id){let t=B.value.find(t=>t.id===e.script_id);return t?t.name:`脚本 #${e.script_id}`}let t=e.script_content?.trim();return t?t.length>48?`${t.slice(0,48)}…`:t:`—`}function Le(e){return{...e,server_ids:Q(e.server_ids)}}function Re(){let e=J.value;if(!Y.value.name.trim())throw Error(`请填写调度名称`);if(!e.length)throw Error(`请至少选择一台服务器`);let t={name:Y.value.name.trim(),schedule_type:Y.value.schedule_type,run_mode:Y.value.run_mode,server_ids:JSON.stringify(e),enabled:Y.value.enabled},n=Ce(Y.value.cycle);if(n)throw Error(n);let r=F(Y.value.cycle);if(t.cron_expr=r,Y.value.run_mode===`once`){let e=we(r);if(!e)throw Error(`无法计算单次执行时间,请检查开始执行周期`);t.fire_at=e.toISOString()}else t.fire_at=null;if(Y.value.schedule_type===`push`){let e=j.effectiveSourcePath();if(!e)throw j.sourcePath.trim()&&!j.validatedSource?Error(`请先点击「验证路径」确认 Nexus 主机上的源目录`):Error(`请上传源文件或验证 Nexus 主机源路径`);t.source_path=e}else{if(!Y.value.script_id&&!Y.value.script_content.trim())throw Error(`脚本调度须选择脚本库或填写命令内容`);Y.value.script_id&&(t.script_id=Y.value.script_id),Y.value.script_content.trim()&&(t.script_content=Y.value.script_content.trim())}return t}function ze(e){V.value=e,$()}function Be(e){U.value=e,V.value=1,$()}async function Ve(){try{B.value=(await y.getList(`/scripts/`)).items||[]}catch{B.value=[]}}async function $(e=!1){e||(I.value=!0);try{let e=((await y.getList(`/schedules/`)).items||[]).map(Le);H.value=e.length,z.value=ie(e,V.value,U.value)}catch(e){z.value=[],H.value=0,l(A(e,`加载调度列表失败`),`error`)}finally{e||(I.value=!1)}}function He(e){G.value=e,q.value=``,P(),e?(J.value=Q(e.server_ids),Y.value={name:e.name,schedule_type:e.schedule_type===`script`?`script`:`push`,run_mode:e.run_mode===`cron`?`cron`:`once`,cycle:Te(e.cron_expr,e.fire_at),script_id:e.script_id??null,script_content:e.script_content||``,enabled:e.enabled},Y.value.schedule_type===`push`&&e.source_path&&Se(e.source_path)):(J.value=[],Y.value={name:``,schedule_type:`push`,run_mode:`once`,cycle:N(),script_id:null,script_content:``,enabled:!0}),W.value=!0}async function Ue(){q.value=``,K.value=!0;try{let e=Re();G.value?await y.put(`/schedules/${G.value.id}`,e):await y.post(`/schedules/`,e),W.value=!1,$(),l(`保存成功`)}catch(e){let t=A(e,`保存失败`);q.value=t,l(t,`error`)}finally{K.value=!1}}async function We(e){L.value=e.id;try{await y.put(`/schedules/${e.id}`,{enabled:e.enabled}),$()}catch(t){e.enabled=!e.enabled,l(A(t,`操作失败`),`error`)}finally{L.value=null}}async function Ge(e){R.value=e.id;try{let t=Q(e.server_ids);e.schedule_type===`script`?(await y.post(`/scripts/exec`,{server_ids:t,script_id:e.script_id??void 0,command:e.script_content||void 0}),a(`已触发脚本执行`)):(await y.post(`/sync/files`,{source_path:e.source_path,server_ids:t,sync_mode:`incremental`}),l(`已触发推送`))}catch(e){l(A(e,`执行失败`),`error`)}finally{R.value=null}}function Ke(e){Z.value=e,X.value=!0}async function qe(){if(Z.value)try{await y.delete(`/schedules/${Z.value.id}`),X.value=!1,$(),l(`已删除`)}catch(e){l(A(e,`删除失败`),`error`)}}async function Je(e=!1){await Promise.all([$(e),ee({all:!0}),Ve()])}return ne(e=>Je(e)),(t,n)=>(m(),E(e,{fluid:``,class:`pa-6`},{default:h(()=>[o(se,{elevation:`0`,border:``,rounded:`lg`},{default:h(()=>[o(ce,{class:`d-flex align-center text-h6`},{default:h(()=>[n[23]||=p(` 推送调度 `,-1),o(g),o(c,{color:`primary`,variant:`flat`,size:`small`,"prepend-icon":`mdi-plus`,onClick:n[0]||=e=>He(null)},{default:h(()=>[...n[22]||=[p(`新建调度`,-1)]]),_:1})]),_:1}),o(de,{items:z.value,headers:v(Pe),"items-length":H.value,loading:I.value,page:V.value,"items-per-page":U.value,"items-per-page-options":r,hover:``,density:`comfortable`,"onUpdate:page":ze,"onUpdate:itemsPerPage":Be},{"item.schedule_type":h(({item:e})=>[o(D,{size:`small`,variant:`tonal`,color:e.schedule_type===`script`?`secondary`:`primary`,label:``},{default:h(()=>[p(x(e.schedule_type===`script`?`脚本`:`推送`),1)]),_:2},1032,[`color`])]),"item.run_mode":h(({item:e})=>[_(`span`,Oe,x(e.run_mode===`once`?`单次`:`循环`),1)]),"item.cron_expr":h(({item:e})=>[o(D,{size:`small`,variant:`tonal`,label:``,"prepend-icon":`mdi-clock-outline`},{default:h(()=>[p(x(v(Ee)(e.run_mode,e.cron_expr,e.fire_at)),1)]),_:2},1024)]),"item.source_path":h(({item:e})=>[e.schedule_type===`script`?(m(),i(`span`,ke,x(Ie(e)),1)):(m(),i(`span`,Ae,x(e.source_path||`—`),1))]),"item.enabled":h(({item:e})=>[o(be,{modelValue:e.enabled,"onUpdate:modelValue":[t=>e.enabled=t,t=>We(e)],color:`primary`,density:`compact`,"hide-details":``,loading:L.value===e.id},null,8,[`modelValue`,`onUpdate:modelValue`,`loading`])]),"item.server_count":h(({item:e})=>[_(`span`,je,x(Fe(e.server_ids))+` 台`,1)]),"item.last_run_at":h(({item:e})=>[_(`span`,Me,x(e.last_run_at?v(C)(e.last_run_at):`从未运行`),1)]),"item.next_run":h(({item:e})=>[_(`span`,Ne,x(e.next_run?v(C)(e.next_run):`—`),1)]),"item.actions":h(({item:e})=>[o(c,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>He(e)},{default:h(()=>[...n[24]||=[p(`编辑`,-1)]]),_:1},8,[`onClick`]),o(c,{variant:`text`,size:`x-small`,density:`compact`,loading:R.value===e.id,onClick:t=>Ge(e)},{default:h(()=>[...n[25]||=[p(`立即执行`,-1)]]),_:1},8,[`loading`,`onClick`]),o(c,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>Ke(e)},{default:h(()=>[...n[26]||=[p(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":h(()=>[...n[27]||=[_(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无计划任务`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`,`items-per-page`])]),_:1}),o(pe,{modelValue:W.value,"onUpdate:modelValue":n[19]||=e=>W.value=e,"max-width":`800`,scrollable:``},{default:h(()=>[o(se,{border:``},{default:h(()=>[o(ce,null,{default:h(()=>[p(x(G.value?`编辑调度`:`新建调度`),1)]),_:1}),o(le,null,{default:h(()=>[q.value?(m(),E(s,{key:0,type:`error`,density:`compact`,variant:`tonal`,class:`mb-3`,closable:``,"onClick:close":n[1]||=e=>q.value=``},{default:h(()=>[p(x(q.value),1)]),_:1})):f(``,!0),o(k,{modelValue:Y.value.name,"onUpdate:modelValue":n[2]||=e=>Y.value.name=e,label:`调度名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),o(T,{modelValue:Y.value.schedule_type,"onUpdate:modelValue":n[3]||=e=>Y.value.schedule_type=e,mandatory:``,density:`compact`,class:`mb-3`,color:`primary`},{default:h(()=>[o(c,{value:`push`,size:`small`},{default:h(()=>[...n[28]||=[p(`文件推送`,-1)]]),_:1}),o(c,{value:`script`,size:`small`},{default:h(()=>[...n[29]||=[p(`脚本执行`,-1)]]),_:1})]),_:1},8,[`modelValue`]),o(T,{modelValue:Y.value.run_mode,"onUpdate:modelValue":n[4]||=e=>Y.value.run_mode=e,mandatory:``,density:`compact`,class:`mb-3`,color:`primary`},{default:h(()=>[o(c,{value:`once`,size:`small`},{default:h(()=>[...n[30]||=[p(`单次执行`,-1)]]),_:1}),o(c,{value:`cron`,size:`small`},{default:h(()=>[...n[31]||=[p(`循环执行`,-1)]]),_:1})]),_:1},8,[`modelValue`]),o(De,{modelValue:Y.value.cycle,"onUpdate:modelValue":n[5]||=e=>Y.value.cycle=e,"single-shot":Y.value.run_mode===`once`,class:`mb-2`},null,8,[`modelValue`,`single-shot`]),o(s,{type:`info`,density:`compact`,variant:`tonal`,class:`mb-3 text-caption`},{default:h(()=>[...n[32]||=[p(` 单次执行选「当天」时:分;循环执行再选重复方式。同步模式、目标路径等按系统与各服务器配置。 `,-1)]]),_:1}),Y.value.schedule_type===`push`?(m(),i(b,{key:1},[o(_e,{class:`mb-2`,"uploaded-source":j.uploadedSource,"validated-source":j.validatedSource,"source-path":j.sourcePath,"onUpdate:sourcePath":n[6]||=e=>j.sourcePath=e,"source-path-validating":j.sourcePathValidating,"is-dragging":j.isDragging,"source-uploading":j.sourceUploading,onDragover:n[7]||=e=>j.isDragging=!0,onDragleave:n[8]||=e=>j.isDragging=!1,onDrop:j.handleFileDrop,onFileSelect:j.handleFileSelect,onZipExtractSelect:j.handleZipExtractSelect,onClear:j.clearUploadedSource,onClearValidated:j.clearValidatedSource,onValidate:j.validateSourcePath},null,8,[`uploaded-source`,`validated-source`,`source-path`,`source-path-validating`,`is-dragging`,`source-uploading`,`onDrop`,`onFileSelect`,`onZipExtractSelect`,`onClear`,`onClearValidated`,`onValidate`]),j.uploadedSource?(m(),E(me,{key:0,class:`mb-2`,"root-path":j.uploadedSource.sourcePath,"relative-path":M.relativePath,entries:M.entries,loading:M.loading,"selected-count":M.selectedCount,"all-selected":M.allSelected,"some-selected":M.someSelected,"is-selected":M.isSelected,"rename-open":M.renameOpen,"onUpdate:renameOpen":n[9]||=e=>M.renameOpen=e,"rename-value":M.renameValue,"onUpdate:renameValue":n[10]||=e=>M.renameValue=e,"rename-loading":M.renameLoading,"delete-open":M.deleteOpen,"onUpdate:deleteOpen":n[11]||=e=>M.deleteOpen=e,"delete-targets":M.deleteTargets,"delete-loading":M.deleteLoading,onRefresh:n[12]||=e=>M.refreshCurrent(),onGoRoot:M.goRoot,onOpenDir:M.openDirectory,onPreview:M.previewFile,onRename:M.openRename,onDelete:M.openDelete,onBatchDelete:M.openBatchDelete,onToggleSelect:M.toggleSelect,onToggleSelectAll:M.toggleSelectAll,onConfirmRename:M.confirmRename,onConfirmDelete:M.confirmDelete},null,8,[`root-path`,`relative-path`,`entries`,`loading`,`selected-count`,`all-selected`,`some-selected`,`is-selected`,`rename-open`,`rename-value`,`rename-loading`,`delete-open`,`delete-targets`,`delete-loading`,`onGoRoot`,`onOpenDir`,`onPreview`,`onRename`,`onDelete`,`onBatchDelete`,`onToggleSelect`,`onToggleSelectAll`,`onConfirmRename`,`onConfirmDelete`])):f(``,!0),o(he,{modelValue:M.previewOpen,"onUpdate:modelValue":n[13]||=e=>M.previewOpen=e,loading:M.previewLoading,result:M.previewResult},null,8,[`modelValue`,`loading`,`result`])],64)):(m(),i(b,{key:2},[o(ue,{modelValue:Y.value.script_id,"onUpdate:modelValue":n[14]||=e=>Y.value.script_id=e,items:B.value,"item-title":`name`,"item-value":`id`,label:`脚本库(可选)`,variant:`outlined`,density:`compact`,clearable:``,class:`mb-2`},null,8,[`modelValue`,`items`]),o(xe,{modelValue:Y.value.script_content,"onUpdate:modelValue":n[15]||=e=>Y.value.script_content=e,label:`命令内容(无脚本库时必填)`,variant:`outlined`,density:`compact`,rows:`4`,"auto-grow":``,class:`mb-2`},null,8,[`modelValue`])],64)),n[33]||=_(`div`,{class:`text-caption text-medium-emphasis mb-1`},`目标服务器(按分类选择)`,-1),o(ye,{modelValue:J.value,"onUpdate:modelValue":n[16]||=e=>J.value=e,servers:v(u),loading:v(d),"max-height":`320px`,class:`mb-2`},null,8,[`modelValue`,`servers`,`loading`]),o(be,{modelValue:Y.value.enabled,"onUpdate:modelValue":n[17]||=e=>Y.value.enabled=e,label:`启用`,color:`primary`,density:`compact`,"hide-details":``},null,8,[`modelValue`])]),_:1}),o(oe,null,{default:h(()=>[o(g),o(c,{variant:`text`,onClick:n[18]||=e=>W.value=!1},{default:h(()=>[...n[34]||=[p(`取消`,-1)]]),_:1}),o(c,{color:`primary`,variant:`flat`,onClick:Ue,loading:K.value},{default:h(()=>[...n[35]||=[p(`保存`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),o(pe,{modelValue:X.value,"onUpdate:modelValue":n[21]||=e=>X.value=e,"max-width":`400`},{default:h(()=>[o(se,{border:``},{default:h(()=>[o(ce,null,{default:h(()=>[...n[36]||=[p(`确认删除`,-1)]]),_:1}),o(le,null,{default:h(()=>[n[37]||=p(`确定要删除调度 `,-1),_(`strong`,null,x(Z.value?.name),1),n[38]||=p(` 吗?`,-1)]),_:1}),o(oe,null,{default:h(()=>[o(g),o(c,{variant:`text`,onClick:n[20]||=e=>X.value=!1},{default:h(()=>[...n[39]||=[p(`取消`,-1)]]),_:1}),o(c,{color:`error`,variant:`flat`,onClick:qe},{default:h(()=>[...n[40]||=[p(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{J as default};