From 842404d5b9f451a00da3dffaf1d0bb28aff3f263 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Mon, 16 Jun 2025 21:16:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E3=80=90ele=E3=80=91=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=E7=AE=A1=E7=90=86=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/system/post/index.ts | 5 ++ apps/web-ele/src/views/system/post/data.ts | 4 + apps/web-ele/src/views/system/post/index.vue | 89 ++++++++++++++------ 3 files changed, 74 insertions(+), 24 deletions(-) diff --git a/apps/web-ele/src/api/system/post/index.ts b/apps/web-ele/src/api/system/post/index.ts index a82f58155..06df146c3 100644 --- a/apps/web-ele/src/api/system/post/index.ts +++ b/apps/web-ele/src/api/system/post/index.ts @@ -50,6 +50,11 @@ export function deletePost(id: number) { return requestClient.delete(`/system/post/delete?id=${id}`); } +/** 批量删除岗位 */ +export function deletePostList(ids: number[]) { + return requestClient.delete(`/system/post/delete-list?ids=${ids.join(',')}`); +} + /** 导出岗位 */ export function exportPost(params: any) { return requestClient.download('/system/post/export', { diff --git a/apps/web-ele/src/views/system/post/data.ts b/apps/web-ele/src/views/system/post/data.ts index ba14bba64..71572481e 100644 --- a/apps/web-ele/src/views/system/post/data.ts +++ b/apps/web-ele/src/views/system/post/data.ts @@ -90,6 +90,10 @@ export function useGridColumns( onActionClick: OnActionClickFn, ): VxeTableGridOptions['columns'] { return [ + { + type: 'checkbox', + width: 40, + }, { field: 'id', title: '岗位编号', diff --git a/apps/web-ele/src/views/system/post/index.vue b/apps/web-ele/src/views/system/post/index.vue index 144a277d6..37cbebaf5 100644 --- a/apps/web-ele/src/views/system/post/index.vue +++ b/apps/web-ele/src/views/system/post/index.vue @@ -5,14 +5,20 @@ import type { } from '#/adapter/vxe-table'; import type { SystemPostApi } from '#/api/system/post'; +import { ref } from 'vue'; + import { Page, useVbenModal } from '@vben/common-ui'; -import { Download, 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 { deletePost, exportPost, getPostPage } from '#/api/system/post'; +import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; +import { + deletePost, + deletePostList, + exportPost, + getPostPage, +} from '#/api/system/post'; import { $t } from '#/locales'; import { useGridColumns, useGridFormSchema } from './data'; @@ -54,13 +60,35 @@ async function onDelete(row: SystemPostApi.Post) { await deletePost(row.id as number); ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); onRefresh(); - } catch { - // 异常处理 } finally { loadingInstance.close(); } } +/** 批量删除岗位 */ +async function onDeleteBatch() { + const loadingInstance = ElLoading.service({ + text: $t('ui.actionMessage.deleting'), + fullscreen: true, + }); + try { + await deletePostList(checkedIds.value); + ElMessage.success($t('ui.actionMessage.deleteSuccess')); + onRefresh(); + } finally { + loadingInstance.close(); + } +} + +const checkedIds = ref([]); +function handleRowCheckboxChange({ + records, +}: { + records: SystemPostApi.Post[]; +}) { + checkedIds.value = records.map((item) => item.id as number); +} + /** 表格操作按钮的回调函数 */ function onActionClick({ code, row }: OnActionClickParams) { switch (code) { @@ -102,6 +130,10 @@ const [Grid, gridApi] = useVbenVxeGrid({ search: true, }, } as VxeTableGridOptions, + gridEvents: { + checkboxAll: handleRowCheckboxChange, + checkboxChange: handleRowCheckboxChange, + }, }); @@ -110,23 +142,32 @@ const [Grid, gridApi] = useVbenVxeGrid({