From 7ec3cfb3fd0cd1613d3391d3359f57fd9cccd8df Mon Sep 17 00:00:00 2001 From: dap <15891557205@163.com> Date: Wed, 11 Dec 2024 11:09:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=88=A4=E6=96=ADvxe-table?= =?UTF-8?q?=E7=9A=84=E5=A4=8D=E9=80=89=E6=A1=86=E6=98=AF=E5=90=A6=E9=80=89?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ apps/web-antd/src/adapter/vxe-table.ts | 12 ++++++++++++ .../src/views/monitor/logininfor/index.vue | 11 +++-------- .../src/views/monitor/operlog/index.vue | 19 +++++++------------ .../src/views/system/client/index.vue | 12 ++---------- .../src/views/system/config/index.vue | 12 ++---------- .../src/views/system/dict/data/index.vue | 10 ++-------- .../src/views/system/dict/type/index.vue | 8 ++------ .../src/views/system/notice/index.vue | 12 ++---------- .../src/views/system/oss-config/index.vue | 12 ++---------- apps/web-antd/src/views/system/oss/index.vue | 7 ++----- apps/web-antd/src/views/system/post/index.vue | 10 ++-------- .../src/views/system/role-assign/index.vue | 11 ++--------- .../system/role-assign/role-assign-drawer.vue | 12 +----------- apps/web-antd/src/views/system/role/index.vue | 12 +++--------- .../src/views/system/tenant/index.vue | 12 +++--------- .../src/views/system/tenantPackage/index.vue | 12 +++--------- apps/web-antd/src/views/system/user/index.vue | 17 ++++------------- apps/web-antd/src/views/tool/gen/index.vue | 14 ++++---------- 19 files changed, 62 insertions(+), 157 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 676a5698..5a34d90a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # 1.1.3 +**REFACTOR** + +- 重构: 判断vxe-table的复选框是否选中 + **Bug Fixes** - 节点树在编辑 & 空数组(不勾选)情况 勾选节点会造成watch延迟触发 导致会带上父节点id造成id重复 diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-antd/src/adapter/vxe-table.ts index b4cc88c0..e8735c90 100644 --- a/apps/web-antd/src/adapter/vxe-table.ts +++ b/apps/web-antd/src/adapter/vxe-table.ts @@ -107,6 +107,7 @@ export type * from '@vben/plugins/vxe-table'; /** * 通用的表格复选框是否选中事件 + * @deprecated 使用vxeCheckboxChecked代替 * @param checked 是否选中 * @returns function */ @@ -118,3 +119,14 @@ export function tableCheckboxEvent(checked: Ref) { }; return event; } + +/** + * 判断vxe-table的复选框是否选中 + * @param tableApi api + * @returns boolean + */ +export function vxeCheckboxChecked( + tableApi: ReturnType[1], +) { + return tableApi?.grid?.getCheckboxRecords?.()?.length > 0; +} diff --git a/apps/web-antd/src/views/monitor/logininfor/index.vue b/apps/web-antd/src/views/monitor/logininfor/index.vue index ddcd72fe..4923f966 100644 --- a/apps/web-antd/src/views/monitor/logininfor/index.vue +++ b/apps/web-antd/src/views/monitor/logininfor/index.vue @@ -9,8 +9,8 @@ import { getVxePopupContainer } from '@vben/utils'; import { Modal, Popconfirm, Space } from 'ant-design-vue'; import { - tableCheckboxEvent, useVbenVxeGrid, + vxeCheckboxChecked, type VxeGridDefines, type VxeGridProps, } from '#/adapter/vxe-table'; @@ -77,18 +77,15 @@ const gridOptions: VxeGridProps = { id: 'monitor-logininfo-index', }; -const checked = ref(false); const canUnlock = ref(false); const [BasicTable, tableApi] = useVbenVxeGrid({ formOptions, gridOptions, gridEvents: { checkboxChange: (e: VxeGridDefines.CheckboxChangeEventParams) => { - const records = e.$table.getCheckboxRecords(); - checked.value = records.length > 0; + const records = e.$grid.getCheckboxRecords(); canUnlock.value = records.length === 1 && records[0]?.status === '1'; }, - checkboxAll: tableCheckboxEvent(checked), }, }); @@ -125,7 +122,6 @@ function handleMultiDelete() { onOk: async () => { await loginInfoRemove(ids); await tableApi.query(); - checked.value = false; }, }); } @@ -138,7 +134,6 @@ async function handleUnlock() { const { userName } = records[0]; await userUnlock(userName); await tableApi.query(); - checked.value = false; canUnlock.value = false; tableApi.grid.clearCheckboxRow(); } @@ -173,7 +168,7 @@ function handleDownloadExcel() { {{ $t('pages.common.export') }} = { id: 'monitor-operlog-index', }; -const checked = ref(false); const [BasicTable, tableApi] = useVbenVxeGrid({ formOptions, gridOptions, @@ -96,8 +89,6 @@ const [BasicTable, tableApi] = useVbenVxeGrid({ sortChange: () => { tableApi.query(); }, - checkboxChange: tableCheckboxEvent(checked), - checkboxAll: tableCheckboxEvent(checked), }, }); @@ -138,7 +129,6 @@ async function handleDelete() { onOk: async () => { await operLogDelete(ids); await tableApi.query(); - checked.value = false; }, }); } @@ -148,6 +138,11 @@ function handleDownloadExcel() { fieldMappingTime: formOptions.fieldMappingTime, }); } + +function isChecked() { + console.log('触发'); + return tableApi?.grid?.getCheckboxRecords?.()?.length > 0; +}