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