diff --git a/apps/web-ele/src/api/infra/job/index.ts b/apps/web-ele/src/api/infra/job/index.ts index fcec25c83..1f066a149 100644 --- a/apps/web-ele/src/api/infra/job/index.ts +++ b/apps/web-ele/src/api/infra/job/index.ts @@ -45,6 +45,11 @@ export function deleteJob(id: number) { return requestClient.delete(`/infra/job/delete?id=${id}`); } +/** 批量删除定时任务调度 */ +export function deleteJobList(ids: number[]) { + return requestClient.delete(`/infra/job/delete-list?ids=${ids.join(',')}`); +} + /** 导出定时任务调度 */ export function exportJob(params: any) { return requestClient.download('/infra/job/export-excel', { params }); diff --git a/apps/web-ele/src/views/infra/job/data.ts b/apps/web-ele/src/views/infra/job/data.ts index b2dfa08c8..f588e3032 100644 --- a/apps/web-ele/src/views/infra/job/data.ts +++ b/apps/web-ele/src/views/infra/job/data.ts @@ -128,6 +128,7 @@ export function useGridColumns( onActionClick: OnActionClickFn, ): VxeTableGridOptions['columns'] { return [ + { type: 'checkbox', width: 40 }, { field: 'id', title: '任务编号', diff --git a/apps/web-ele/src/views/infra/job/index.vue b/apps/web-ele/src/views/infra/job/index.vue index 6e6c22984..034a53c67 100644 --- a/apps/web-ele/src/views/infra/job/index.vue +++ b/apps/web-ele/src/views/infra/job/index.vue @@ -5,17 +5,18 @@ import type { } from '#/adapter/vxe-table'; import type { InfraJobApi } from '#/api/infra/job'; +import { ref } from 'vue'; import { useRouter } from 'vue-router'; import { confirm, DocAlert, Page, useVbenModal } from '@vben/common-ui'; -import { Download, History, Plus } from '@vben/icons'; -import { downloadFileFromBlobPart } from '@vben/utils'; +import { downloadFileFromBlobPart, isEmpty } from '@vben/utils'; -import { ElButton, ElLoading, ElMessage } from 'element-plus'; +import { ElLoading, ElMessage } from 'element-plus'; -import { useVbenVxeGrid } from '#/adapter/vxe-table'; +import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { deleteJob, + deleteJobList, exportJob, getJobPage, runJob, @@ -117,6 +118,26 @@ async function onDelete(row: InfraJobApi.Job) { } } +/** 批量删除任务 */ +async function onDeleteBatch() { + const loadingInstance = ElLoading.service({ + text: $t('ui.actionMessage.deleting'), + fullscreen: true, + }); + try { + await deleteJobList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); + } finally { + loadingInstance.close(); + } +} + +const checkedIds = ref([]); +function handleRowCheckboxChange({ records }: { records: InfraJobApi.Job[] }) { + checkedIds.value = records.map((item) => item.id as number); +} + /** 表格操作按钮的回调函数 */ function onActionClick({ code, row }: OnActionClickParams) { switch (code) { @@ -174,6 +195,10 @@ const [Grid, gridApi] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions, + gridEvents: { + checkboxAll: handleRowCheckboxChange, + checkboxChange: handleRowCheckboxChange, + }, }); @@ -189,32 +214,39 @@ const [Grid, gridApi] = useVbenVxeGrid({