diff --git a/apps/web-antd/src/api/infra/job/index.ts b/apps/web-antd/src/api/infra/job/index.ts index 04848dd8b..a2f372d44 100644 --- a/apps/web-antd/src/api/infra/job/index.ts +++ b/apps/web-antd/src/api/infra/job/index.ts @@ -75,3 +75,8 @@ export function runJob(id: number) { export function getJobNextTimes(id: number) { return requestClient.get(`/infra/job/get_next_times?id=${id}`); } + +/** 同步定时任务到 Quartz */ +export function syncJob() { + return requestClient.post('/infra/job/sync'); +} diff --git a/apps/web-antd/src/views/infra/job/index.vue b/apps/web-antd/src/views/infra/job/index.vue index f7514202f..14abd3303 100644 --- a/apps/web-antd/src/views/infra/job/index.vue +++ b/apps/web-antd/src/views/infra/job/index.vue @@ -18,6 +18,7 @@ import { exportJob, getJobPage, runJob, + syncJob, updateJobStatus, } from '#/api/infra/job'; import { $t } from '#/locales'; @@ -101,6 +102,22 @@ async function handleTrigger(row: InfraJobApi.Job) { } } +/** 同步任务到 Quartz */ +async function handleSyncJob() { + await confirm('确认要同步所有任务到调度器?'); + const hideLoading = message.loading({ + content: '正在同步任务...', + duration: 0, + }); + try { + await syncJob(); + message.success('同步成功'); + handleRefresh(); + } finally { + hideLoading(); + } +} + /** 跳转到任务日志 */ function handleLog(row?: InfraJobApi.Job) { push({ @@ -216,6 +233,13 @@ const [Grid, gridApi] = useVbenVxeGrid({ auth: ['infra:job:query'], onClick: () => handleLog(undefined), }, + { + label: '同步任务', + type: 'primary', + icon: 'lucide:refresh-cw', + auth: ['infra:job:create'], + onClick: handleSyncJob, + }, { label: $t('ui.actionTitle.deleteBatch'), type: 'primary', diff --git a/apps/web-antdv-next/src/api/infra/job/index.ts b/apps/web-antdv-next/src/api/infra/job/index.ts index 04848dd8b..a2f372d44 100644 --- a/apps/web-antdv-next/src/api/infra/job/index.ts +++ b/apps/web-antdv-next/src/api/infra/job/index.ts @@ -75,3 +75,8 @@ export function runJob(id: number) { export function getJobNextTimes(id: number) { return requestClient.get(`/infra/job/get_next_times?id=${id}`); } + +/** 同步定时任务到 Quartz */ +export function syncJob() { + return requestClient.post('/infra/job/sync'); +} diff --git a/apps/web-antdv-next/src/views/infra/job/index.vue b/apps/web-antdv-next/src/views/infra/job/index.vue index f36bebc60..f7018335b 100644 --- a/apps/web-antdv-next/src/views/infra/job/index.vue +++ b/apps/web-antdv-next/src/views/infra/job/index.vue @@ -18,6 +18,7 @@ import { exportJob, getJobPage, runJob, + syncJob, updateJobStatus, } from '#/api/infra/job'; import { $t } from '#/locales'; @@ -101,6 +102,22 @@ async function handleTrigger(row: InfraJobApi.Job) { } } +/** 同步任务到 Quartz */ +async function handleSyncJob() { + await confirm('确认要同步所有任务到调度器?'); + const hideLoading = message.loading({ + content: '正在同步任务...', + duration: 0, + }); + try { + await syncJob(); + message.success('同步成功'); + handleRefresh(); + } finally { + hideLoading(); + } +} + /** 跳转到任务日志 */ function handleLog(row?: InfraJobApi.Job) { push({ @@ -216,6 +233,13 @@ const [Grid, gridApi] = useVbenVxeGrid({ auth: ['infra:job:query'], onClick: () => handleLog(undefined), }, + { + label: '同步任务', + type: 'primary', + icon: 'lucide:refresh-cw', + auth: ['infra:job:create'], + onClick: handleSyncJob, + }, { label: $t('ui.actionTitle.deleteBatch'), type: 'primary', diff --git a/apps/web-ele/src/api/infra/job/index.ts b/apps/web-ele/src/api/infra/job/index.ts index 04848dd8b..a2f372d44 100644 --- a/apps/web-ele/src/api/infra/job/index.ts +++ b/apps/web-ele/src/api/infra/job/index.ts @@ -75,3 +75,8 @@ export function runJob(id: number) { export function getJobNextTimes(id: number) { return requestClient.get(`/infra/job/get_next_times?id=${id}`); } + +/** 同步定时任务到 Quartz */ +export function syncJob() { + return requestClient.post('/infra/job/sync'); +} diff --git a/apps/web-ele/src/views/infra/job/index.vue b/apps/web-ele/src/views/infra/job/index.vue index 47b7affe2..f1168c951 100644 --- a/apps/web-ele/src/views/infra/job/index.vue +++ b/apps/web-ele/src/views/infra/job/index.vue @@ -18,6 +18,7 @@ import { exportJob, getJobPage, runJob, + syncJob, updateJobStatus, } from '#/api/infra/job'; import { $t } from '#/locales'; @@ -99,6 +100,21 @@ async function handleTrigger(row: InfraJobApi.Job) { } } +/** 同步任务到 Quartz */ +async function handleSyncJob() { + await confirm('确认要同步所有任务到调度器?'); + const loadingInstance = ElLoading.service({ + text: '正在同步任务...', + }); + try { + await syncJob(); + ElMessage.success('同步成功'); + handleRefresh(); + } finally { + loadingInstance.close(); + } +} + /** 跳转到任务日志 */ function handleLog(row?: InfraJobApi.Job) { push({ @@ -212,6 +228,13 @@ const [Grid, gridApi] = useVbenVxeGrid({ auth: ['infra:job:query'], onClick: () => handleLog(undefined), }, + { + label: '同步任务', + type: 'primary', + icon: 'lucide:refresh-cw', + auth: ['infra:job:create'], + onClick: handleSyncJob, + }, { label: $t('ui.actionTitle.deleteBatch'), type: 'danger',