Files
Nexus/web/app/assets/SchedulesPage-D2bJRlyH.js
T

1 line
13 KiB
JavaScript
Raw Normal View History

import{F as e,L as t,Lr as n,N as r,P as i,Vr as a,Zn as o,ar as s,er as c,et as l,gr as u,jr as d,mr as f,or as p,rr as m,sr as ee,t as h,tr as g,wr as _,z as v,zt as y}from"./index-DNlvHxBC.js";import{o as b,t as te}from"./VContainer-CbSJCQsb.js";import{t as x}from"./VChip-BbRVKa0H.js";import{t as S}from"./VSelect-D0AqVzoi.js";import{t as C}from"./VDataTableServer-BUUXYQSU.js";import{t as w}from"./VSpacer-DDACi18G.js";import{t as ne}from"./useServerList-CkRTXU3j.js";import{t as T}from"./VDialog-CCk-u1DS.js";import{t as re}from"./VTextarea-D0rtXV7P.js";import{t as E}from"./VSwitch-1_1BtHAy.js";var D={class:`text-caption`},O={key:1,class:`text-caption text-medium-emphasis`},k={key:0,class:`text-caption`},A={key:1,class:`text-caption text-medium-emphasis`},j={class:`text-medium-emphasis`},M={class:`text-caption text-medium-emphasis`},N={class:`text-caption text-medium-emphasis`},P=ee({__name:`SchedulesPage`,setup(ee){let P=b(),{servers:ie,loadServers:ae}=ne(),F=[{value:`incremental`,label:`增量`},{value:`full`,label:`完全同步`},{value:`overwrite`,label:`覆盖`},{value:`checksum`,label:`校验和`}],I=d(!1),L=d(null),R=d(null),z=d([]),B=d([]),V=d(1),H=d(0),U=d(20),W=d(!1),G=d(null),K=d(!1),q=d({name:``,schedule_type:`push`,run_mode:`cron`,cron:``,fire_at:``,source_path:``,target_path:``,sync_mode:`incremental`,script_id:null,script_content:``,exec_timeout:60,long_task:!1,server_ids:[],enabled:!0}),J=d(!1),Y=d(null),oe=[{title:`名称`,key:`name`},{title:`类型`,key:`schedule_type`,width:80},{title:`模式`,key:`run_mode`,width:72},{title:`Cron / 执行时间`,key:`cron_expr`,width:160},{title:`源路径`,key:`source_path`},{title:`目标路径`,key:`target_path`},{title:`同步`,key:`sync_mode`,width:88},{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 se(e){return F.find(t=>t.value===e)?.label||e||`增量`}function ce(e){return e?e.replace(`T`,` `).slice(0,16):`—`}function le(e){if(!e)return``;let t=new Date(e);if(Number.isNaN(t.getTime()))return e.slice(0,16);let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}T${n(t.getHours())}:${n(t.getMinutes())}`}function X(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 ue(e){return X(e).length}function de(e){return{...e,server_ids:X(e.server_ids)}}function fe(e){let t=e.trim().split(/\s+/);return t.length===5?t.every(e=>/^[\d*/,\-]+$/.test(e)):!1}function pe(){let e=q.value.server_ids;if(!q.value.name.trim())throw Error(`请填写调度名称`);if(!e.length)throw Error(`请至少选择一台服务器`);let t={name:q.value.name.trim(),schedule_type:q.value.schedule_type,run_mode:q.value.run_mode,server_ids:JSON.stringify(e),enabled:q.value.enabled};if(q.value.run_mode===`cron`){if(!q.value.cron.trim())throw Error(`请填写 Cron 表达式`);if(!fe(q.value.cron.trim()))throw Error(`Cron 须为 5 字段(分 时 日 月 周)`);t.cron_expr=q.value.cron.trim()}else{if(!q.value.fire_at)throw Error(`请选择一次性执行时间`);t.fire_at=new Date(q.value.fire_at).toISOString()}if(q.value.schedule_type===`push`){if(!q.value.source_path.trim())throw Error(`请填写推送源路径`);t.source_path=q.value.source_path.trim();let e=q.value.target_path.trim();e&&(t.target_path=e),t.sync_mode=q.value.sync_mode}else{if(!q.value.script_id&&!q.value.script_content.trim())throw Error(`脚本调度须选择脚本库或填写命令内容`);q.value.script_id&&(t.script_id=q.value.script_id),q.value.script_content.trim()&&(t.script_content=q.value.script_content.trim()),t.exec_timeout=q.value.exec_timeout,t.long_task=q.value.long_task}return t}function me(e){V.value=e,Q()}function he(e){U.value=e,V.value=1,Q()}async function Z(){try{B.value=(await y.getList(`