e3efbd4552
Cron matching, audit/alert date filters, and schedule UI align on Asia/Shanghai while JWT/TOTP/heartbeat stay UTC; follow-ups add WS alert timestamps, fixed install timezone copy, and 422 on invalid date filters. Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
24 KiB
JavaScript
1 line
24 KiB
JavaScript
import{n as e,t}from"./useSnackbar-BN7WL7jT.js";import{n,t as r}from"./VRow-DQLoaeks.js";import{$ as i,Cr as a,Fr as o,Hr as s,Ht as c,N as l,P as u,Sr as d,Ut as f,Wr as p,Wt as m,Xr as h,Zr as g,Zt as _,_ as v,_r as y,bt as b,fr as x,gr as S,hr as C,ri as w,si as T,vr as E,xr as D,y as O,yr as k}from"./index-mgwiCK5j.js";import{t as ee}from"./usePageActivateRefresh-B3aZWt5v.js";import{n as te,r as ne,t as re}from"./dataTable-esDY4cOk.js";import{a as ie,n as ae,r as oe,t as se}from"./VCard-B9mXbrEC.js";import{t as ce}from"./VSelect-7ey6zQ_i.js";import{t as A}from"./VTextField-C7hGBY30.js";import{t as le}from"./VDataTableServer-CKraLARR.js";import{t as j}from"./apiError-GQk-OOej.js";import{t as ue}from"./useServerList-DRObYN-B.js";import{t as de}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as fe}from"./VDialog-BX1EKYmy.js";import{a as pe,i as me,n as he,r as ge,t as _e}from"./usePushStaging-mCkm99N-.js";import{t as ve}from"./ServerCategoryPicker-DV5ENZuH.js";import{t as ye}from"./VSwitch-DEss9TpS.js";import{t as be}from"./VTextarea-DMBqF2lG.js";var M=[{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:`每月`}],N=[{value:0,label:`周日`},{value:1,label:`周一`},{value:2,label:`周二`},{value:3,label:`周三`},{value:4,label:`周四`},{value:5,label:`周五`},{value:6,label:`周六`}];function P(){return{type:`day`,minute:0,hour:2,interval:2,week:1,monthDay:1,customCron:``}}function F(e,t,n){let r=Math.floor(Number(e));return Number.isNaN(r)?t:Math.min(n,Math.max(t,r))}function xe(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=F(e.minute,0,59),n=F(e.hour,0,23);switch(e.type){case`day`:return`${t} ${n} * * *`;case`day-n`:return`${t} ${n} */${F(e.interval,1,365)} * *`;case`hour`:return`${t} * * * *`;case`hour-n`:return`${t} */${F(e.interval,1,23)} * * *`;case`minute-n`:return`*/${F(e.interval,1,59)} * * * *`;case`week`:return`${t} ${n} * * ${F(e.week,0,6)}`;case`month`:return`${t} ${n} ${F(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=P(),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`每周${N.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 xe(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=c(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=m(t);if(e){let t=c(e);return{...P(),type:`day`,hour:t.hour,minute:t.minute}}}return P()}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=de(a({__name:`ScheduleCyclePicker`,props:{modelValue:{},singleShot:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,c=M,f=C(()=>i.singleShot===!0),m=C(()=>f.value?!0:[`day`,`day-n`,`week`,`month`].includes(i.modelValue.type)),h=C(()=>{let e=`时间为北京时间(Asia/Shanghai)`;return f.value?`单次:当天指定时:分,在下一匹配时刻执行一次(不含日期选择)。${e}`:`循环:按重复方式与时:分持续执行。${e}`});s(()=>i.singleShot,e=>{e&&i.modelValue.type!==`custom`&&i.modelValue.type!==`day`&&a(`update:modelValue`,{...P(),...i.modelValue,type:`day`})},{immediate:!0});let g=C(()=>{try{return B(i.modelValue)}catch{return``}}),_=C(()=>{try{return i.modelValue.type===`custom`&&!i.modelValue.customCron.trim()?``:xe(i.modelValue)}catch{return``}});function v(e,t,n){let r=Math.floor(Number(e));return Number.isNaN(r)?t:Math.min(n,Math.max(t,r))}function b(e){a(`update:modelValue`,{...i.modelValue,...e})}function O(e){e&&a(`update:modelValue`,{...P(),...i.modelValue,type:e})}function ee(){a(`update:modelValue`,{...P(),type:`day`})}return(t,i)=>(o(),k(`div`,U,[i[11]||=S(`div`,{class:`text-caption text-medium-emphasis mb-2`},`开始执行周期`,-1),d(r,{dense:``,class:`mb-2 align-center`},{default:p(()=>[d(n,{cols:`auto`,class:`cycle-type-col`},{default:p(()=>[f.value?(o(),k(`span`,W,`当天`)):(o(),y(ce,{key:1,"model-value":e.modelValue.type===`custom`?null:e.modelValue.type,items:w(c),"item-title":`label`,"item-value":`value`,label:`重复方式`,variant:`outlined`,density:`compact`,"hide-details":``,class:`cycle-type-select`,"onUpdate:modelValue":O},null,8,[`model-value`,`items`]))]),_:1}),m.value?(o(),k(x,{key:0},[d(n,{cols:`auto`,class:`time-col`},{default:p(()=>[d(A,{"model-value":e.modelValue.hour,label:`时`,type:`number`,min:`0`,max:`23`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":i[0]||=e=>b({hour:v(e,0,23)})},null,8,[`model-value`])]),_:1}),d(n,{cols:`auto`,class:`time-col`},{default:p(()=>[d(A,{"model-value":e.modelValue.minute,label:`分`,type:`number`,min:`0`,max:`59`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":i[1]||=e=>b({minute:v(e,0,59)})},null,8,[`model-value`])]),_:1})],64)):E(``,!0),!f.value&&(e.modelValue.type===`hour`||e.modelValue.type===`hour-n`)?(o(),y(n,{key:1,cols:`auto`,class:`time-col-wide`},{default:p(()=>[d(A,{"model-value":e.modelValue.minute,label:`第几分`,type:`number`,min:`0`,max:`59`,variant:`outlined`,density:`compact`,"hide-details":``,"onUpdate:modelValue":i[2]||=e=>b({minute:v(e,0,59)})},null,8,[`model-value`])]),_:1})):E(``,!0)]),_:1}),S(`div`,G,T(h.value),1),!f.value&&e.modelValue.type===`day-n`?(o(),y(A,{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=>b({interval:v(e,1,365)})},null,8,[`model-value`])):E(``,!0),!f.value&&e.modelValue.type===`hour-n`?(o(),y(A,{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=>b({interval:v(e,1,23)})},null,8,[`model-value`])):E(``,!0),!f.value&&e.modelValue.type===`minute-n`?(o(),y(A,{key:2,"model-value":e.modelValue.interval,label:`分钟 N`,type:`number`,min:w(1),max:`59`,variant:`outlined`,density:`compact`,hint:`从整点起每 N 分钟触发一次`,"persistent-hint":``,class:`mb-2`,"onUpdate:modelValue":i[5]||=e=>b({interval:v(e,w(1),59)})},null,8,[`model-value`,`min`])):E(``,!0),!f.value&&e.modelValue.type===`week`?(o(),y(ce,{key:3,"model-value":e.modelValue.week,items:w(N),"item-title":`label`,"item-value":`value`,label:`星期`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":i[6]||=e=>b({week:v(e,0,6)})},null,8,[`model-value`,`items`])):E(``,!0),!f.value&&e.modelValue.type===`month`?(o(),y(A,{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=>b({monthDay:v(e,1,31)})},null,8,[`model-value`])):E(``,!0),e.modelValue.type===`custom`?(o(),k(x,{key:5},[d(l,{type:`warning`,density:`compact`,variant:`tonal`,class:`mb-2 text-caption`},{default:p(()=>[...i[9]||=[D(` 当前 Cron 无法映射为可视化周期,可保留原表达式或改用上方周期类型重建。 `,-1)]]),_:1}),d(A,{"model-value":e.modelValue.customCron,label:`Cron 表达式(5 字段)`,variant:`outlined`,density:`compact`,class:`mb-2`,"onUpdate:modelValue":i[8]||=e=>b({customCron:String(e??``)})},null,8,[`model-value`]),d(u,{size:`small`,variant:`tonal`,color:`primary`,class:`mb-2`,onClick:ee},{default:p(()=>[...i[10]||=[D(` 改用可视化周期 `,-1)]]),_:1})],64)):E(``,!0),g.value?(o(),k(`div`,K,[D(` 预览:`+T(g.value)+` `,1),_.value?(o(),k(`span`,q,`(`+T(_.value)+`)`,1)):E(``,!0)])):E(``,!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=a({name:`SchedulesPage`,__name:`SchedulesPage`,setup(n){let r=[...re],a=t(),{servers:s,loading:c,loadServers:m}=ue(),C=he(),de=_e(C.uploadedSource),M=h(C),N=h(de);function F(){M.clearUploadedSource(),M.clearValidatedSource()}async function Se(e){F();let t=e.trim();t&&(M.sourcePath=t,await M.validateSourcePath())}let I=g(!1),L=g(null),R=g(null),z=g([]),B=g([]),V=g(1),H=g(0),U=g(20),W=g(!1),G=g(null),K=g(!1),q=g(``),J=g([]),Y=g({name:``,schedule_type:`push`,run_mode:`once`,cycle:P(),script_id:null,script_content:``,enabled:!0}),X=g(!1),Z=g(null),Pe=te([{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=xe(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=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 ze(e){V.value=e,$()}function Be(e){U.value=e,V.value=1,$()}async function Ve(){try{B.value=(await _.getList(`/scripts/`)).items||[]}catch{B.value=[]}}async function $(e=!1){e||(I.value=!0);try{let e=((await _.getList(`/schedules/`)).items||[]).map(Le);H.value=e.length,z.value=ne(e,V.value,U.value)}catch(e){z.value=[],H.value=0,a(j(e,`加载调度列表失败`),`error`)}finally{e||(I.value=!1)}}function He(e){G.value=e,q.value=``,F(),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:P(),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 _.put(`/schedules/${G.value.id}`,e):await _.post(`/schedules/`,e),W.value=!1,$(),a(`保存成功`)}catch(e){let t=j(e,`保存失败`);q.value=t,a(t,`error`)}finally{K.value=!1}}async function We(e){L.value=e.id;try{await _.put(`/schedules/${e.id}`,{enabled:e.enabled}),$()}catch(t){e.enabled=!e.enabled,a(j(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 _.post(`/scripts/exec`,{server_ids:t,script_id:e.script_id??void 0,command:e.script_content||void 0}),b(`已触发脚本执行`)):(await _.post(`/sync/files`,{source_path:e.source_path,server_ids:t,sync_mode:`incremental`}),a(`已触发推送`))}catch(e){a(j(e,`执行失败`),`error`)}finally{R.value=null}}function Ke(e){Z.value=e,X.value=!0}async function qe(){if(Z.value)try{await _.delete(`/schedules/${Z.value.id}`),X.value=!1,$(),a(`已删除`)}catch(e){a(j(e,`删除失败`),`error`)}}async function Je(e=!1){await Promise.all([$(e),m({all:!0}),Ve()])}return ee(e=>Je(e)),(t,n)=>(o(),y(e,{fluid:``,class:`pa-6`},{default:p(()=>[d(se,{elevation:`0`,border:``,rounded:`lg`},{default:p(()=>[d(oe,{class:`d-flex align-center text-h6`},{default:p(()=>[n[23]||=D(` 推送调度 `,-1),d(v),d(u,{color:`primary`,variant:`flat`,size:`small`,"prepend-icon":`mdi-plus`,onClick:n[0]||=e=>He(null)},{default:p(()=>[...n[22]||=[D(`新建调度`,-1)]]),_:1})]),_:1}),d(le,{items:z.value,headers:w(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":p(({item:e})=>[d(O,{size:`small`,variant:`tonal`,color:e.schedule_type===`script`?`secondary`:`primary`,label:``},{default:p(()=>[D(T(e.schedule_type===`script`?`脚本`:`推送`),1)]),_:2},1032,[`color`])]),"item.run_mode":p(({item:e})=>[S(`span`,Oe,T(e.run_mode===`once`?`单次`:`循环`),1)]),"item.cron_expr":p(({item:e})=>[d(O,{size:`small`,variant:`tonal`,label:``,"prepend-icon":`mdi-clock-outline`},{default:p(()=>[D(T(w(Ee)(e.run_mode,e.cron_expr,e.fire_at)),1)]),_:2},1024)]),"item.source_path":p(({item:e})=>[e.schedule_type===`script`?(o(),k(`span`,ke,T(Ie(e)),1)):(o(),k(`span`,Ae,T(e.source_path||`—`),1))]),"item.enabled":p(({item:e})=>[d(ye,{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":p(({item:e})=>[S(`span`,je,T(Fe(e.server_ids))+` 台`,1)]),"item.last_run_at":p(({item:e})=>[S(`span`,Me,T(e.last_run_at?w(f)(e.last_run_at):`从未运行`),1)]),"item.next_run":p(({item:e})=>[S(`span`,Ne,T(e.next_run?w(f)(e.next_run):`—`),1)]),"item.actions":p(({item:e})=>[d(u,{variant:`text`,size:`x-small`,density:`compact`,onClick:t=>He(e)},{default:p(()=>[...n[24]||=[D(`编辑`,-1)]]),_:1},8,[`onClick`]),d(u,{variant:`text`,size:`x-small`,density:`compact`,loading:R.value===e.id,onClick:t=>Ge(e)},{default:p(()=>[...n[25]||=[D(`立即执行`,-1)]]),_:1},8,[`loading`,`onClick`]),d(u,{variant:`text`,size:`x-small`,color:`error`,density:`compact`,onClick:t=>Ke(e)},{default:p(()=>[...n[26]||=[D(`删除`,-1)]]),_:1},8,[`onClick`])]),"no-data":p(()=>[...n[27]||=[S(`div`,{class:`text-center text-medium-emphasis py-6`},`暂无计划任务`,-1)]]),_:1},8,[`items`,`headers`,`items-length`,`loading`,`page`,`items-per-page`])]),_:1}),d(fe,{modelValue:W.value,"onUpdate:modelValue":n[19]||=e=>W.value=e,"max-width":`800`,scrollable:``},{default:p(()=>[d(se,{border:``},{default:p(()=>[d(oe,null,{default:p(()=>[D(T(G.value?`编辑调度`:`新建调度`),1)]),_:1}),d(ae,null,{default:p(()=>[q.value?(o(),y(l,{key:0,type:`error`,density:`compact`,variant:`tonal`,class:`mb-3`,closable:``,"onClick:close":n[1]||=e=>q.value=``},{default:p(()=>[D(T(q.value),1)]),_:1})):E(``,!0),d(A,{modelValue:Y.value.name,"onUpdate:modelValue":n[2]||=e=>Y.value.name=e,label:`调度名称`,variant:`outlined`,density:`compact`,class:`mb-2`},null,8,[`modelValue`]),d(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:p(()=>[d(u,{value:`push`,size:`small`},{default:p(()=>[...n[28]||=[D(`文件推送`,-1)]]),_:1}),d(u,{value:`script`,size:`small`},{default:p(()=>[...n[29]||=[D(`脚本执行`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(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:p(()=>[d(u,{value:`once`,size:`small`},{default:p(()=>[...n[30]||=[D(`单次执行`,-1)]]),_:1}),d(u,{value:`cron`,size:`small`},{default:p(()=>[...n[31]||=[D(`循环执行`,-1)]]),_:1})]),_:1},8,[`modelValue`]),d(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`]),d(l,{type:`info`,density:`compact`,variant:`tonal`,class:`mb-3 text-caption`},{default:p(()=>[...n[32]||=[D(` 单次执行选「当天」时:分;循环执行再选重复方式。同步模式、目标路径等按系统与各服务器配置。 `,-1)]]),_:1}),Y.value.schedule_type===`push`?(o(),k(x,{key:1},[d(ge,{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?(o(),y(pe,{key:0,class:`mb-2`,"root-path":M.uploadedSource.sourcePath,"relative-path":N.relativePath,entries:N.entries,loading:N.loading,"selected-count":N.selectedCount,"all-selected":N.allSelected,"some-selected":N.someSelected,"is-selected":N.isSelected,"rename-open":N.renameOpen,"onUpdate:renameOpen":n[9]||=e=>N.renameOpen=e,"rename-value":N.renameValue,"onUpdate:renameValue":n[10]||=e=>N.renameValue=e,"rename-loading":N.renameLoading,"delete-open":N.deleteOpen,"onUpdate:deleteOpen":n[11]||=e=>N.deleteOpen=e,"delete-targets":N.deleteTargets,"delete-loading":N.deleteLoading,onRefresh:n[12]||=e=>N.refreshCurrent(),onGoRoot:N.goRoot,onOpenDir:N.openDirectory,onPreview:N.previewFile,onRename:N.openRename,onDelete:N.openDelete,onBatchDelete:N.openBatchDelete,onToggleSelect:N.toggleSelect,onToggleSelectAll:N.toggleSelectAll,onConfirmRename:N.confirmRename,onConfirmDelete:N.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`])):E(``,!0),d(me,{modelValue:N.previewOpen,"onUpdate:modelValue":n[13]||=e=>N.previewOpen=e,loading:N.previewLoading,result:N.previewResult},null,8,[`modelValue`,`loading`,`result`])],64)):(o(),k(x,{key:2},[d(ce,{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`]),d(be,{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]||=S(`div`,{class:`text-caption text-medium-emphasis mb-1`},`目标服务器(按分类选择)`,-1),d(ve,{modelValue:J.value,"onUpdate:modelValue":n[16]||=e=>J.value=e,servers:w(s),loading:w(c),"max-height":`320px`,class:`mb-2`},null,8,[`modelValue`,`servers`,`loading`]),d(ye,{modelValue:Y.value.enabled,"onUpdate:modelValue":n[17]||=e=>Y.value.enabled=e,label:`启用`,color:`primary`,density:`compact`,"hide-details":``},null,8,[`modelValue`])]),_:1}),d(ie,null,{default:p(()=>[d(v),d(u,{variant:`text`,onClick:n[18]||=e=>W.value=!1},{default:p(()=>[...n[34]||=[D(`取消`,-1)]]),_:1}),d(u,{color:`primary`,variant:`flat`,onClick:Ue,loading:K.value},{default:p(()=>[...n[35]||=[D(`保存`,-1)]]),_:1},8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]),d(fe,{modelValue:X.value,"onUpdate:modelValue":n[21]||=e=>X.value=e,"max-width":`400`},{default:p(()=>[d(se,{border:``},{default:p(()=>[d(oe,null,{default:p(()=>[...n[36]||=[D(`确认删除`,-1)]]),_:1}),d(ae,null,{default:p(()=>[n[37]||=D(`确定要删除调度 `,-1),S(`strong`,null,T(Z.value?.name),1),n[38]||=D(` 吗?`,-1)]),_:1}),d(ie,null,{default:p(()=>[d(v),d(u,{variant:`text`,onClick:n[20]||=e=>X.value=!1},{default:p(()=>[...n[39]||=[D(`取消`,-1)]]),_:1}),d(u,{color:`error`,variant:`flat`,onClick:qe},{default:p(()=>[...n[40]||=[D(`删除`,-1)]]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}});export{J as default}; |