From 58d36c9b49d9c88ffd80ae2baa5976eb0239c70f Mon Sep 17 00:00:00 2001 From: puhui999 Date: Mon, 16 Jun 2025 21:37:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=80=90ele=E3=80=91=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E7=AE=A1=E7=90=86=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/infra/data-source-config/index.ts | 7 ++ .../src/views/infra/dataSourceConfig/data.ts | 1 + .../views/infra/dataSourceConfig/index.vue | 67 +++++++++++++++---- 3 files changed, 62 insertions(+), 13 deletions(-) diff --git a/apps/web-ele/src/api/infra/data-source-config/index.ts b/apps/web-ele/src/api/infra/data-source-config/index.ts index 88641f65..81a3b0e3 100644 --- a/apps/web-ele/src/api/infra/data-source-config/index.ts +++ b/apps/web-ele/src/api/infra/data-source-config/index.ts @@ -44,3 +44,10 @@ export function updateDataSourceConfig( export function deleteDataSourceConfig(id: number) { return requestClient.delete(`/infra/data-source-config/delete?id=${id}`); } + +/** 批量删除数据源配置 */ +export function deleteDataSourceConfigList(ids: number[]) { + return requestClient.delete( + `/infra/data-source-config/delete-list?ids=${ids.join(',')}`, + ); +} diff --git a/apps/web-ele/src/views/infra/dataSourceConfig/data.ts b/apps/web-ele/src/views/infra/dataSourceConfig/data.ts index c22a368a..ae5010d0 100644 --- a/apps/web-ele/src/views/infra/dataSourceConfig/data.ts +++ b/apps/web-ele/src/views/infra/dataSourceConfig/data.ts @@ -62,6 +62,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/dataSourceConfig/index.vue b/apps/web-ele/src/views/infra/dataSourceConfig/index.vue index 4a217390..65eacafe 100644 --- a/apps/web-ele/src/views/infra/dataSourceConfig/index.vue +++ b/apps/web-ele/src/views/infra/dataSourceConfig/index.vue @@ -5,16 +5,17 @@ import type { } from '#/adapter/vxe-table'; import type { InfraDataSourceConfigApi } from '#/api/infra/data-source-config'; -import { onMounted } from 'vue'; +import { onMounted, ref } from 'vue'; import { 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 { deleteDataSourceConfig, + deleteDataSourceConfigList, getDataSourceConfigList, } from '#/api/infra/data-source-config'; import { $t } from '#/locales'; @@ -48,11 +49,36 @@ async function onDelete(row: InfraDataSourceConfigApi.DataSourceConfig) { loadingInstance.close(); ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); await handleLoadData(); - } catch { + } finally { loadingInstance.close(); } } +/** 批量删除数据源 */ +async function onDeleteBatch() { + const loadingInstance = ElLoading.service({ + text: $t('ui.actionMessage.deleting'), + fullscreen: true, + }); + try { + await deleteDataSourceConfigList(checkedIds.value); + loadingInstance.close(); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + await handleLoadData(); + } finally { + loadingInstance.close(); + } +} + +const checkedIds = ref([]); +function handleRowCheckboxChange({ + records, +}: { + records: InfraDataSourceConfigApi.DataSourceConfig[]; +}) { + checkedIds.value = records.map((item) => item.id as number); +} + /** 表格操作按钮的回调函数 */ function onActionClick({ code, @@ -87,6 +113,10 @@ const [Grid, gridApi] = useVbenVxeGrid({ }, }, } as VxeTableGridOptions, + gridEvents: { + checkboxAll: handleRowCheckboxChange, + checkboxChange: handleRowCheckboxChange, + }, }); /** 加载数据 */ @@ -110,14 +140,25 @@ onMounted(() => {