From 01469e935fd06032bec5bdebf63c5c9e618b2cc8 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Mon, 16 Jun 2025 22:00:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=80=90ele=E3=80=91=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F=E5=88=A0?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-ele/src/api/infra/codegen/index.ts | 7 +++ apps/web-ele/src/views/infra/codegen/data.ts | 1 + .../web-ele/src/views/infra/codegen/index.vue | 62 +++++++++++++++---- 3 files changed, 59 insertions(+), 11 deletions(-) diff --git a/apps/web-ele/src/api/infra/codegen/index.ts b/apps/web-ele/src/api/infra/codegen/index.ts index d8fea045..5e83caf8 100644 --- a/apps/web-ele/src/api/infra/codegen/index.ts +++ b/apps/web-ele/src/api/infra/codegen/index.ts @@ -155,3 +155,10 @@ export function deleteCodegenTable(tableId: number) { params: { tableId }, }); } + +/** 批量删除代码生成表定义 */ +export function deleteCodegenTableList(tableIds: number[]) { + return requestClient.delete( + `/infra/codegen/delete-list?tableIds=${tableIds.join(',')}`, + ); +} diff --git a/apps/web-ele/src/views/infra/codegen/data.ts b/apps/web-ele/src/views/infra/codegen/data.ts index 45c0adb3..e4115430 100644 --- a/apps/web-ele/src/views/infra/codegen/data.ts +++ b/apps/web-ele/src/views/infra/codegen/data.ts @@ -398,6 +398,7 @@ export function useGridColumns( getDataSourceConfigName?: (dataSourceConfigId: number) => string | undefined, ): VxeTableGridOptions['columns'] { return [ + { type: 'checkbox', width: 40 }, { field: 'dataSourceConfigId', title: '数据源', diff --git a/apps/web-ele/src/views/infra/codegen/index.vue b/apps/web-ele/src/views/infra/codegen/index.vue index c2570ed8..c8ab1b8c 100644 --- a/apps/web-ele/src/views/infra/codegen/index.vue +++ b/apps/web-ele/src/views/infra/codegen/index.vue @@ -10,13 +10,14 @@ import { ref } from 'vue'; import { useRouter } from 'vue-router'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; -import { Plus } from '@vben/icons'; +import { 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 { deleteCodegenTable, + deleteCodegenTableList, downloadCodegen, getCodegenTablePage, syncCodegenFromDB, @@ -85,6 +86,21 @@ async function onDelete(row: InfraCodegenApi.CodegenTable) { } } +/** 批量删除代码生成配置 */ +async function onDeleteBatch() { + const loadingInstance = ElLoading.service({ + text: $t('ui.actionMessage.deleting'), + fullscreen: true, + }); + try { + await deleteCodegenTableList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); + } finally { + loadingInstance.close(); + } +} + /** 同步数据库 */ async function onSync(row: InfraCodegenApi.CodegenTable) { const loadingInstance = ElLoading.service({ @@ -150,6 +166,15 @@ function onActionClick({ } } +const checkedIds = ref([]); +function handleRowCheckboxChange({ + records, +}: { + records: InfraCodegenApi.CodegenTable[]; +}) { + checkedIds.value = records.map((item) => item.id); +} + const [Grid, gridApi] = useVbenVxeGrid({ formOptions: { schema: useGridFormSchema(), @@ -177,6 +202,10 @@ const [Grid, gridApi] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions, + gridEvents: { + checkboxAll: handleRowCheckboxChange, + checkboxChange: handleRowCheckboxChange, + }, }); /** 获取数据源配置列表 */ @@ -213,14 +242,25 @@ initDataSourceConfig();