fe8b24ca0b
关闭分项告警后不再推送对应恢复消息;仪表盘移除服务器列表并更新设置页说明。 Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
23 KiB
JavaScript
1 line
23 KiB
JavaScript
import{_ as e,t,v as n}from"./VSelect-BXcWCaZC.js";import{n as r,t as i}from"./VRow-D0MdcU9n.js";import{$ as a,$r as o,Br as s,Jt as c,Kr as l,N as u,P as d,Rr as f,_ as p,_r as m,bt as ee,cr as h,dr as g,fr as _,hr as v,jr as y,mr as b,pr as x,qr as S,ri as C,vr as w,y as T,yr as E}from"./index-o-DiVeam.js";import{t as D}from"./usePageActivateRefresh-D6x0Mrqy.js";import{n as O,r as te,t as ne}from"./dataTable-esDY4cOk.js";import{_ as re,t as k,v as ie,x as ae,y as oe}from"./VTextField-CDCuiswI.js";import{t as se}from"./VDataTableServer-BdKEAQOW.js";import{t as A}from"./apiError-tihdhjX4.js";import{t as ce}from"./useServerList-BJOgzGyG.js";import{t as le}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ue}from"./VDialog-BkSq0Dpm.js";import{a as de,i as fe,n as pe,r as me,t as he}from"./usePushStaging-Ces5F3LN.js";import{t as ge}from"./ServerCategoryPicker-CJOxqetm.js";import{t as _e}from"./VSwitch-CxtbaDYX.js";import{t as ve}from"./VTextarea-DsPeHozX.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:`每月`}],ye=[{value:0,label:`周日`},{value:1,label:`周一`},{value:2,label:`周二`},{value:3,label:`周三`},{value:4,label:`周四`},{value:5,label:`周五`},{value:6,label:`周六`}];function M(){return{type:`day`,minute:0,hour:2,interval:2,week:1,monthDay:1,customCron:``}}function N(e,t,n){let r=Math.floor(Number(e));return Number.isNaN(r)?t:Math.min(n,Math.max(t,r))}function be(e){if(e.type===`custom`){let t=e.customCron.trim();if(!t)throw Error(`自定义 Cron 不能为空`);if(!P(t))throw Error(`Cron 须为 5 字段`);return t}let t=N(e.minute,0,59),n=N(e.hour,0,23);switch(e.type){case`day`:return`${t} ${n} * * *`;case`day-n`:return`${t} ${n} */${N(e.interval,1,365)} * *`;case`hour`:return`${t} * * * *`;case`hour-n`:return`${t} */${N(e.interval,1,23)} * * *`;case`minute-n`:return`*/${N(e.interval,1,59)} * * * *`;case`week`:return`${t} ${n} * * ${N(e.week,0,6)}`;case`month`:return`${t} ${n} ${N(e.monthDay,1,31)} * *`;default:throw Error(`未知执行周期类型`)}}function P(e){let t=e.trim().split(/\s+/);return t.length===5?t.every(e=>/^[\d*/,\-]+$/.test(e)):!1}function xe(e){return e===`*`}function F(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 I(e){let t=M(),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(!xe(s))return{...t,type:`custom`,customCron:n};let l=F(i),u=F(a),d=F(o),f=F(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 L(e){return String(e).padStart(2,`0`)}function R(e){let t=typeof e==`string`?I(e):e;if(t.type===`custom`)return t.customCron?`自定义: ${t.customCron}`:`—`;let n=`${L(t.hour)}:${L(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`每周${ye.find(e=>e.value===t.week)?.label||`周${t.week}`} ${n}`;case`month`:return`每月 ${t.monthDay} 日 ${n}`;default:return`—`}}function Se(e){if(e.type===`custom`)return e.customCron.trim()?P(e.customCron.trim())?null:`Cron 须为 5 字段`:`请填写 Cron 表达式`;try{return be(e),null}catch(e){return e instanceof Error?e.message:`执行周期无效`}}function z(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 B(e,t){let n=e.trim().split(/\s+/);if(n.length!==5)return!1;let r=[t.getMinutes(),t.getHours(),t.getDate(),t.getMonth()+1,t.getDay()];return n.every((e,t)=>z(e,r[t]))}function Ce(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(B(e,n))return new Date(n);n.setMinutes(n.getMinutes()+1)}return null}function we(e,t){if(e?.trim())return I(e);if(t){let e=new Date(t);if(!Number.isNaN(e.getTime()))return{...M(),type:`day`,hour:e.getHours(),minute:e.getMinutes()}}return M()}function Te(e,t,n){let r=R(we(t,n));return e===`once`?`单次 · ${r}`:r}var V={class:`schedule-cycle-picker`},H={key:0,class:`cycle-type-fixed text-body-2`},U={class:`text-caption text-medium-emphasis mb-2`},W={key:6,class:`text-caption text-medium-emphasis`},G={key:0,class:`ms-1`},Ee=le(E({__name:`ScheduleCyclePicker`,props:{modelValue:{},singleShot:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:n}){let a=e,c=n,l=j,p=g(()=>a.singleShot===!0),ee=g(()=>p.value?!0:[`day`,`day-n`,`week`,`month`].includes(a.modelValue.type)),S=g(()=>p.value?`单次:当天指定时:分,在下一匹配时刻执行一次(不含日期选择)`:`循环:按重复方式与时:分持续执行`);f(()=>a.singleShot,e=>{e&&a.modelValue.type!==`custom`&&a.modelValue.type!==`day`&&c(`update:modelValue`,{...M(),...a.modelValue,type:`day`})},{immediate:!0});let T=g(()=>{try{return R(a.modelValue)}catch{return``}}),E=g(()=>{try{return a.modelValue.type===`custom`&&!a.modelValue.customCron.trim()?``:be(a.modelValue)}catch{return``}});function D(e,t,n){let r=Math.floor(Number(e));return Number.isNaN(r)?t:Math.min(n,Math.max(t,r))}function O(e){c(`update:modelValue`,{...a.modelValue,...e})}function te(e){e&&c(`update:modelValue`,{...M(),...a.modelValue,type:e})}function ne(){c(`update:modelValue`,{...M(),type:`day`})}return(n,a)=>(y(),v(`div`,V,[a[11]||=_(`div`,{class:`text-caption text-medium-emphasis mb-2`},`开始执行周期`,-1),w(i,{dense:``,class:`mb-2 align-center`},{default:s(()=>[w(r,{cols:`auto`,class:`cycle-type-col`},{default:s(()=>[p.value?(y(),v(`span`,H,`当天`)):(y(),x(t,{key:1,"model-value":e.modelValue.type===`custom`?null:e.modelValue.type,items:o(l),"item-title":`label`,"item-value":`value`,label:`重复方式`,variant:`outlined`,density:`compact`,"hide-details":``,class:`cycle-type-select`,"onUpdate:modelValue":te},null,8,[`model-value`,`items`]))]),_:1}),ee.value?(y(),v(h,{key:0},[w(r,{cols:`auto`,class:`time-col`},{default:s(()=>[w(k,{"model-value":e.modelValue.hour,label:`时`,type:`number`,min:`0`,max:`23`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":a[0]||=e=>O({hour:D(e,0,23)})},null,8,[`model-value`])]),_:1}),w(r,{cols:`auto`,class:`time-col`},{default:s(()=>[w(k,{"model-value":e.modelValue.minute,label:`分`,type:`number`,min:`0`,max:`59`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":a[1]||=e=>O({minute:D(e,0,59)})},null,8,[`model-value`])]),_:1})],64)):b(``,!0),!p.value&&(e.modelValue.type===`hour`||e.modelValue.type===`hour-n`)?(y(),x(r,{key:1,cols:`auto`,class:`time-col-wide`},{default:s(()=>[w(k,{"model-value":e.modelValue.minute,label:`第几分`,type:`number`,min:`0`,max:`59`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":a[2]||=e=>O({minute:D(e,0,59)})},null,8,[`model-value`])]),_:1})):b(``,!0)]),_:1}),_(`div`,U,C(S.value),1),!p.value&&e.modelValue.type===`day-n`?(y(),x(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=>O({interval:D(e,1,365)})},null,8,[`model-value`])):b(``,!0),!p.value&&e.modelValue.type===`hour-n`?(y(),x(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=>O({interval:D(e,1,23)})},null,8,[`model-value`])):b(``,!0),!p.value&&e.modelValue.type===`minute-n`?(y(),x(k,{key:2,"model-value":e.modelValue.interval,label:`分钟 N`,type:`number`,min:o(1),max:`59`,variant:`outlined`,density:`compact`,hint:`从整点起每 N 分钟触发一次`,"persistent-hint":``,class:`mb-2`,"onUpdate:modelValue":a[5]||=e=>O({interval:D(e,o(1),59)})},null,8,[`model-value`,`min`])):b(``,!0),!p.value&&e.modelValue.type===`week`?(y(),x(t,{key:3,"model-value":e.modelValue.week,items:o(ye),"item-title":`label`,"item-value":`value`,label:`星期`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":a[6]||=e=>O({week:D(e,0,6)})},null,8,[`model-value`,`items`])):b(``,!0),!p.value&&e.modelValue.type===`month`?(y(),x(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=>O({monthDay:D(e,1,31)})},null,8,[`model-value`])):b(``,!0),e.modelValue.type===`custom`?(y(),v(h,{key:5},[w(u,{type:`warning`,density:`compact`,variant:`tonal`,class:`mb-2 text-caption`},{default:s(()=>[...a[9]||=[m(` 当前 Cron 无法映射为可视化周期,可保留原表达式或改用上方周期类型重建。 `,-1)]]),_:1}),w(k,{"model-value":e.modelValue.customCron,label:`Cron 表达式(5 字段)`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":a[8]||=e=>O({customCron:String(e??``)})},null,8,[`model-value`]),w(d,{size:`small`,variant:`tonal`,color:`primary`,class:`mb-2`,onClick:ne},{default:s(()=>[...a[10]||=[m(` 改用可视化周期 `,-1)]]),_:1})],64)):b(``,!0),T.value?(y(),v(`div`,W,[m(` 预览:`+C(T.value)+` `,1),E.value?(y(),v(`span`,G,`(`+C(E.value)+`)`,1)):b(``,!0)])):b(``,!0)]))}}),[[`__scopeId`,`data-v-f1c7b8d2`]]),De={class:`text-caption`},Oe={class:`text-medium-emphasis`},ke={class:`text-caption text-medium-emphasis`},Ae={class:`text-caption text-medium-emphasis`},K=E({name:`SchedulesPage`,__name:`SchedulesPage`,setup(r){let i=[...ne],f=e(),{servers:g,loading:E,loadServers:le}=ce(),j=pe(),ye=he(j.uploadedSource),N=l(j),P=l(ye);function xe(){N.clearUploadedSource(),N.clearValidatedSource()}async function F(e){xe();let t=e.trim();t&&(N.sourcePath=t,await N.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:M(),script_id:null,script_content:``,enabled:!0}),X=S(!1),Z=S(null),je=O([{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 Me(e){return Q(e).length}function Ne(e){return{...e,server_ids:Q(e.server_ids)}}function Pe(){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=Se(Y.value.cycle);if(n)throw Error(n);let r=be(Y.value.cycle);if(t.cron_expr=r,Y.value.run_mode===`once`){let e=Ce(r);if(!e)throw Error(`无法计算单次执行时间,请检查开始执行周期`);t.fire_at=e.toISOString()}else t.fire_at=null;if(Y.value.schedule_type===`push`){let e=N.effectiveSourcePath();if(!e)throw N.sourcePath.trim()&&!N.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 Fe(e){V.value=e,$()}function Ie(e){U.value=e,V.value=1,$()}async function Le(){try{B.value=(await c.getList(`/scripts/`)).items||[]}catch{B.value=[]}}async function $(e=!1){e||(I.value=!0);try{let e=((await c.getList(`/schedules/`)).items||[]).map(Ne);H.value=e.length,z.value=te(e,V.value,U.value)}catch(e){z.value=[],H.value=0,f(A(e,`加载调度列表失败`),`error`)}finally{e||(I.value=!1)}}function Re(e){G.value=e,q.value=``,xe(),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:we(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&&F(e.source_path)):(J.value=[],Y.value={name:``,schedule_type:`push`,run_mode:`once`,cycle:M(),script_id:null,script_content:``,enabled:!0}),W.value=!0}async function ze(){q.value=``,K.value=!0;try{let e=Pe();G.value?await c.put(`/schedules/${G.value.id}`,e):await c.post(`/schedules/`,e),W.value=!1,$(),f(`保存成功`)}catch(e){let t=A(e,`保存失败`);q.value=t,f(t,`error`)}finally{K.value=!1}}async function Be(e){L.value=e.id;try{await c.put(`/schedules/${e.id}`,{enabled:e.enabled}),$()}catch(t){e.enabled=!e.enabled,f(A(t,`操作失败`),`error`)}finally{L.value=null}}async function Ve(e){R.value=e.id;try{let t=Q(e.server_ids);e.schedule_type===`script`?(await c.post(`/scripts/exec`,{server_ids:t,script_id:e.script_id??void 0,command:e.script_content||void 0}),ee(`已触发脚本执行`)):(await c.post(`/sync/files`,{source_path:e.source_path,server_ids:t,sync_mode:`incremental`}),f(`已触发推送`))}catch(e){f(A(e,`执行失败`),`error`)}finally{R.value=null}}function He(e){Z.value=e,X.value=!0}async function Ue(){if(Z.value)try{await c.delete(`/schedules/${Z.value.id}`),X.value=!1,$(),f(`已删除`)}catch(e){f(A(e,`删除失败`),`error`)}}async function We(e=!1){await Promise.all([$(e),le({all:!0}),Le()])}return D(e=>We(e)),(e,r)=>(y(),x(n,{fluid:``,class:`pa-6`},{default:s(()=>[w(re,{elevation:`0`,border:``,rounded:`lg`},{default:s(()=>[w(oe,{class:`d-flex align-center text-h6`},{default:s(()=>[r[23]||=m(` 推送调度 `,-1),w(p),w(d,{color:`primary`,variant:`flat`,size:`small`,"prepend-icon":`mdi-plus`,onClick:r[0]||=e=>Re(null)},{default:s(()=>[...r[22]||=[m(`新建调度`,-1)]]),_:1})]),_:1}),w(se,{items:z.value,headers:o(je),"items-length":H.value,loading:I.value,page:V.value,"items-per-page":U.value,"items-per-page-options":i,hover:``,density:`comfortable`,"onUpdate:page":Fe,"onUpdate:itemsPerPage":Ie},{"item.schedule_type":s(({item:e})=>[w(T,{size:`small`,variant:`tonal`,color:e.schedule_type===`script`?`secondary`:`primary`,label:``},{default:s(()=>[m(C(e.schedule_type===`script`?`脚本`:`推送`),1)]),_:2},1032,[`color`])]),"item.run_mode":s(({item:e})=>[_(`span`,De,C(e.run_mode===`once`?`单次`:`循环`),1)]),"item.cron_expr":s(({item:e})=>[w(T,{size:`small`,variant:`tonal`,label:``,"prepend-icon":`mdi-clock-outline`},{default:s(()=>[m(C(o(Te)(e.run_mode,e.cron_expr,e.fire_at)),1)]),_:2},1024)]),"item.enabled":s(({item:e})=>[w(_e,{modelValue:e.enabled,"onUpdate:modelValue":[t=>e.enabled=t,t=>Be(e)],color:`primary`,density:`compact`,"hide-details":``,loading:L.value===e.id},null,8,[`modelValue`,`onUpdate:modelValue`,`loading`])]),"item.server_count":s(({item:e})=>[_(`span`,Oe,C(Me(e.server_ids))+` 台`,1)]),"item.last_run_at":s(({item:e})=>[_(`span`,ke,C(e.last_run_at||`从未运行`),1)]),"item.next_run":s(({item:e})=>[_(`span`,Ae,C(e.next_run||`—`),1)]),"item.actions":s(({item:e})=>[w(d,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>Re(e)},{default:s(()=>[...r[24]||=[m(`编辑`,-1)]]),_:1},8,[`onClick`]),w(d,{variant:`text`,size:`x-small`,density:`compact`,loading:R.value===e.id,onClick:t=>Ve(e)},{default:s(()=>[...r[25]||=[m(`立即执行`,-1)]]),_:1},8,[`loading`,`onClick`]),w(d,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>He(e)},{default:s(()=>[...r[26]||=[m(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":s(()=>[...r[27]||=[_(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无计划任务`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`,`items-per-page`])]),_:1}),w(ue,{modelValue:W.value,"onUpdate:modelValue":r[19]||=e=>W.value=e,"max-width":`800`,scrollable:``},{default:s(()=>[w(re,{border:``},{default:s(()=>[w(oe,null,{default:s(()=>[m(C(G.value?`编辑调度`:`新建调度`),1)]),_:1}),w(ie,null,{default:s(()=>[q.value?(y(),x(u,{key:0,type:`error`,density:`compact`,variant:`tonal`,class:`mb-3`,closable:``,"onClick:close":r[1]||=e=>q.value=``},{default:s(()=>[m(C(q.value),1)]),_:1})):b(``,!0),w(k,{modelValue:Y.value.name,"onUpdate:modelValue":r[2]||=e=>Y.value.name=e,label:`调度名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),w(a,{modelValue:Y.value.schedule_type,"onUpdate:modelValue":r[3]||=e=>Y.value.schedule_type=e,mandatory:``,density:`compact`,class:`mb-3`,color:`primary`},{default:s(()=>[w(d,{value:`push`,size:`small`},{default:s(()=>[...r[28]||=[m(`文件推送`,-1)]]),_:1}),w(d,{value:`script`,size:`small`},{default:s(()=>[...r[29]||=[m(`脚本执行`,-1)]]),_:1})]),_:1},8,[`modelValue`]),w(a,{modelValue:Y.value.run_mode,"onUpdate:modelValue":r[4]||=e=>Y.value.run_mode=e,mandatory:``,density:`compact`,class:`mb-3`,color:`primary`},{default:s(()=>[w(d,{value:`once`,size:`small`},{default:s(()=>[...r[30]||=[m(`单次执行`,-1)]]),_:1}),w(d,{value:`cron`,size:`small`},{default:s(()=>[...r[31]||=[m(`循环执行`,-1)]]),_:1})]),_:1},8,[`modelValue`]),w(Ee,{modelValue:Y.value.cycle,"onUpdate:modelValue":r[5]||=e=>Y.value.cycle=e,"single-shot":Y.value.run_mode===`once`,class:`mb-2`},null,8,[`modelValue`,`single-shot`]),w(u,{type:`info`,density:`compact`,variant:`tonal`,class:`mb-3 text-caption`},{default:s(()=>[...r[32]||=[m(` 单次执行选「当天」时:分;循环执行再选重复方式。同步模式、目标路径等按系统与各服务器配置。 `,-1)]]),_:1}),Y.value.schedule_type===`push`?(y(),v(h,{key:1},[w(me,{class:`mb-2`,"uploaded-source":N.uploadedSource,"validated-source":N.validatedSource,"source-path":N.sourcePath,"onUpdate:sourcePath":r[6]||=e=>N.sourcePath=e,"source-path-validating":N.sourcePathValidating,"is-dragging":N.isDragging,"source-uploading":N.sourceUploading,onDragover:r[7]||=e=>N.isDragging=!0,onDragleave:r[8]||=e=>N.isDragging=!1,onDrop:N.handleFileDrop,onFileSelect:N.handleFileSelect,onZipExtractSelect:N.handleZipExtractSelect,onClear:N.clearUploadedSource,onClearValidated:N.clearValidatedSource,onValidate:N.validateSourcePath},null,8,[`uploaded-source`,`validated-source`,`source-path`,`source-path-validating`,`is-dragging`,`source-uploading`,`onDrop`,`onFileSelect`,`onZipExtractSelect`,`onClear`,`onClearValidated`,`onValidate`]),N.uploadedSource?(y(),x(de,{key:0,class:`mb-2`,"root-path":N.uploadedSource.sourcePath,"relative-path":P.relativePath,entries:P.entries,loading:P.loading,"selected-count":P.selectedCount,"all-selected":P.allSelected,"some-selected":P.someSelected,"is-selected":P.isSelected,"rename-open":P.renameOpen,"onUpdate:renameOpen":r[9]||=e=>P.renameOpen=e,"rename-value":P.renameValue,"onUpdate:renameValue":r[10]||=e=>P.renameValue=e,"rename-loading":P.renameLoading,"delete-open":P.deleteOpen,"onUpdate:deleteOpen":r[11]||=e=>P.deleteOpen=e,"delete-targets":P.deleteTargets,"delete-loading":P.deleteLoading,onRefresh:r[12]||=e=>P.refreshCurrent(),onGoRoot:P.goRoot,onOpenDir:P.openDirectory,onPreview:P.previewFile,onRename:P.openRename,onDelete:P.openDelete,onBatchDelete:P.openBatchDelete,onToggleSelect:P.toggleSelect,onToggleSelectAll:P.toggleSelectAll,onConfirmRename:P.confirmRename,onConfirmDelete:P.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`])):b(``,!0),w(fe,{modelValue:P.previewOpen,"onUpdate:modelValue":r[13]||=e=>P.previewOpen=e,loading:P.previewLoading,result:P.previewResult},null,8,[`modelValue`,`loading`,`result`])],64)):(y(),v(h,{key:2},[w(t,{modelValue:Y.value.script_id,"onUpdate:modelValue":r[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`]),w(ve,{modelValue:Y.value.script_content,"onUpdate:modelValue":r[15]||=e=>Y.value.script_content=e,label:`命令内容(无脚本库时必填)`,variant:`outlined`,density:`compact`,rows:`4`,"auto-grow":``,class:`mb-2`},null,8,[`modelValue`])],64)),r[33]||=_(`div`,{class:`text-caption text-medium-emphasis mb-1`},`目标服务器(按分类选择)`,-1),w(ge,{modelValue:J.value,"onUpdate:modelValue":r[16]||=e=>J.value=e,servers:o(g),loading:o(E),"max-height":`320px`,class:`mb-2`},null,8,[`modelValue`,`servers`,`loading`]),w(_e,{modelValue:Y.value.enabled,"onUpdate:modelValue":r[17]||=e=>Y.value.enabled=e,label:`启用`,color:`primary`,density:`compact`,"hide-details":``},null,8,[`modelValue`])]),_:1}),w(ae,null,{default:s(()=>[w(p),w(d,{variant:`text`,onClick:r[18]||=e=>W.value=!1},{default:s(()=>[...r[34]||=[m(`取消`,-1)]]),_:1}),w(d,{color:`primary`,variant:`flat`,onClick:ze,loading:K.value},{default:s(()=>[...r[35]||=[m(`保存`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),w(ue,{modelValue:X.value,"onUpdate:modelValue":r[21]||=e=>X.value=e,"max-width":`400`},{default:s(()=>[w(re,{border:``},{default:s(()=>[w(oe,null,{default:s(()=>[...r[36]||=[m(`确认删除`,-1)]]),_:1}),w(ie,null,{default:s(()=>[r[37]||=m(`确定要删除调度 `,-1),_(`strong`,null,C(Z.value?.name),1),r[38]||=m(` 吗?`,-1)]),_:1}),w(ae,null,{default:s(()=>[w(p),w(d,{variant:`text`,onClick:r[20]||=e=>X.value=!1},{default:s(()=>[...r[39]||=[m(`取消`,-1)]]),_:1}),w(d,{color:`error`,variant:`flat`,onClick:Ue},{default:s(()=>[...r[40]||=[m(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{K as default}; |