1 line
7.8 KiB
JavaScript
1 line
7.8 KiB
JavaScript
|
|
import{F as e,L as t,Lr as n,N as r,P as i,Vr as a,ar as o,er as s,gr as c,jr as l,mr as u,or as d,sr as f,t as p,tr as m,wr as h,z as g,zt as _}from"./index-BihgjXCy.js";import{o as v,t as ee}from"./VContainer-V_R05OUP.js";import{t as y}from"./VChip-FKNgTWw3.js";import{t as b}from"./VSelect-CGF0mOJJ.js";import{t as x}from"./VDataTableServer-Pl72x6lf.js";import{t as S}from"./VSpacer-2YW4-MQQ.js";import{t as C}from"./useServerList-B6ZsiiQ2.js";import{t as w}from"./VDialog-C6lmIorM.js";import{t as T}from"./VSwitch-T6np6asY.js";var E={class:`text-medium-emphasis`},D={class:`text-caption text-medium-emphasis`},O={class:`text-caption text-medium-emphasis`},k=f({__name:`SchedulesPage`,setup(f){let k=v(),{servers:A,loadServers:j}=C(),M=l(!1),N=l(null),P=l(null),F=l([]),I=l(1),L=l(0),R=l(20),z=l(!1),B=l(null),V=l(!1),H=l({name:``,cron:``,source_path:``,target_path:``,server_ids:[],enabled:!0}),U=l(!1),W=l(null),G=[{title:`名称`,key:`name`},{title:`Cron`,key:`cron_expr`,width:160},{title:`源路径`,key:`source_path`},{title:`目标路径`,key:`target_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 K(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 q(e){return K(e).length}function J(e){return{...e,server_ids:K(e.server_ids)}}function Y(){let e=H.value.server_ids;if(!H.value.name.trim())throw Error(`请填写调度名称`);if(!H.value.cron.trim())throw Error(`请填写 Cron 表达式`);if(!/^[\d\s*/,\-]+$/.test(H.value.cron.trim()))throw Error(`Cron 表达式格式不正确`);if(!e.length)throw Error(`请至少选择一台服务器`);if(!H.value.source_path.trim())throw Error(`请填写推送源路径`);return{name:H.value.name.trim(),cron_expr:H.value.cron.trim(),source_path:H.value.source_path.trim(),server_ids:JSON.stringify(e),run_mode:`cron`,schedule_type:`push`,enabled:H.value.enabled,sync_mode:`incremental`}}function X(e){I.value=e,Q()}function Z(e){R.value=e,I.value=1,Q()}async function Q(){M.value=!0;try{let e=((await _.getList(`/schedules/`)).items||[]).map(J);L.value=e.length;let t=(I.value-1)*R.value;F.value=e.slice(t,t+R.value)}catch(e){F.value=[],L.value=0,k(e instanceof Error?e.message:`加载调度列表失败`,`error`)}finally{M.value=!1}}function $(e){B.value=e,e?H.value={name:e.name,cron:e.cron_expr||``,source_path:e.source_path||``,target_path:e.target_path||``,server_ids:K(e.server_ids),enabled:e.enabled}:H.value={name:``,cron:``,source_path:``,target_path:``,server_ids:[],enabled:!0},z.value=!0}async function te(){V.value=!0;try{let e=Y();B.value?await _.put(`/schedules/${B.value.id}`,e):await _.post(`/schedules/`,e),z.value=!1,Q(),k(`保存成功`)}catch(e){k(e.message||`保存失败`,`error`)}finally{V.value=!1}}async function ne(e){N.value=e.id;try{await _.put(`/schedules/${e.id}`,{enabled:e.enabled})}catch(t){e.enabled=!e.enabled,k(t.message||`操作失败`,`error`)}finally{N.value=null}}async function re(e){P.value=e.id;try{await _.post(`/sync/files`,{source_path:e.source_path,target_path:e.target_path||`/tmp`,server_ids:K(e.server_ids)}),k(`已触发推送`)}catch(e){k(e.message||`执行失败`,`error`)}finally{P.value=null}}function ie(e){W.value=e,U.value=!0}async function ae(){if(W.value)try{await _.delete(`/schedules/${W.value.id}`),U.value=!1,Q(),k(`已删除`)}catch(e){k(e.message||`删除失败`,`error`)}}return u(()=>{Q(),j()}),(l,u)=>(c(),m(ee,{fluid:``,class:`pa-6`},{default:h(()=>[d(r,{elevation:`0`,border:``,rounded:`lg`},{default:h(()=>[d(e,{class:`d-flex align-center text-h6`},{default:h(()=>[u[12]||=o(` 推送调度 `,-1),d(S),d(g,{color:`primary`,variant:`flat`,size:`small`,"prepend-icon":`mdi-plus`,onClick:u[0]||=e=>$(null)},{default:h(()=>[...u[11]||=[o(`新建调度`,-1)]]),_:1})]),_:1}),d(x,{it
|