From 041e3f6e2d054a55367da0d08d99341f3442dbb5 Mon Sep 17 00:00:00 2001 From: XuZhiqiang Date: Wed, 17 Jun 2026 11:25:07 +0800 Subject: [PATCH] =?UTF-8?q?fix(@vben/web-antdv-next):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20Tree=20=E9=80=89=E4=B8=AD=E4=BA=8B=E4=BB=B6=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E6=97=A7=20dataRef=20=E5=AF=BC=E8=87=B4=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/mes/md/item/type/components/tree.vue | 13 +++++++++++-- .../views/system/dept/components/tree-select.vue | 8 ++++++-- .../src/views/system/user/modules/dept-tree.vue | 8 ++++++-- .../views/wms/md/item/category/components/tree.vue | 13 +++++++++++-- 4 files changed, 34 insertions(+), 8 deletions(-) diff --git a/apps/web-antdv-next/src/views/mes/md/item/type/components/tree.vue b/apps/web-antdv-next/src/views/mes/md/item/type/components/tree.vue index 347e87b6a..acb3ad22b 100644 --- a/apps/web-antdv-next/src/views/mes/md/item/type/components/tree.vue +++ b/apps/web-antdv-next/src/views/mes/md/item/type/components/tree.vue @@ -54,8 +54,17 @@ function handleSearch(value: string) { } /** 处理节点点击:支持点击同一节点取消选中 */ -function handleSelect(_selectedKeys: any[], info: any) { - const row = info.node.dataRef as MesMdItemTypeApi.ItemType; +function handleSelect(selectedNodeKeys: any[], info: any) { + const selectedKey = selectedNodeKeys[0] ?? info.node?.id ?? info.node?.key; + const row = itemTypeList.value.find( + (item) => String(item.id) === String(selectedKey), + ); + if (!row) { + currentNodeId.value = undefined; + selectedKeys.value = []; + emit('nodeClick', undefined); + return; + } if (currentNodeId.value === row.id) { currentNodeId.value = undefined; selectedKeys.value = []; diff --git a/apps/web-antdv-next/src/views/system/dept/components/tree-select.vue b/apps/web-antdv-next/src/views/system/dept/components/tree-select.vue index cf66a0733..7054d3c82 100644 --- a/apps/web-antdv-next/src/views/system/dept/components/tree-select.vue +++ b/apps/web-antdv-next/src/views/system/dept/components/tree-select.vue @@ -38,8 +38,12 @@ function handleSearch(e: any) { } /** 选中部门:点击已选中的节点时取消选中 */ -function handleSelect(_selectedKeys: any[], info: any) { - emit('select', info.selected ? info.node.dataRef : undefined); +function handleSelect(selectedNodeKeys: any[], info: any) { + const selectedKey = selectedNodeKeys[0]; + const dept = info.selected + ? deptList.value.find((item) => String(item.id) === String(selectedKey)) + : undefined; + emit('select', dept); } /** 重置选中状态(供外部重置按钮调用) */ diff --git a/apps/web-antdv-next/src/views/system/user/modules/dept-tree.vue b/apps/web-antdv-next/src/views/system/user/modules/dept-tree.vue index beea3f314..48ffe69c4 100644 --- a/apps/web-antdv-next/src/views/system/user/modules/dept-tree.vue +++ b/apps/web-antdv-next/src/views/system/user/modules/dept-tree.vue @@ -32,8 +32,12 @@ function handleSearch(e: any) { } /** 选中部门 */ -function handleSelect(_selectedKeys: any[], info: any) { - emit('select', info.node.dataRef); +function handleSelect(selectedNodeKeys: any[], info: any) { + const selectedKey = selectedNodeKeys[0] ?? info.node?.id ?? info.node?.key; + const dept = info.selected + ? deptList.value.find((item) => String(item.id) === String(selectedKey)) + : undefined; + emit('select', dept); } /** 初始化 */ diff --git a/apps/web-antdv-next/src/views/wms/md/item/category/components/tree.vue b/apps/web-antdv-next/src/views/wms/md/item/category/components/tree.vue index 7954aea91..e682d58c9 100644 --- a/apps/web-antdv-next/src/views/wms/md/item/category/components/tree.vue +++ b/apps/web-antdv-next/src/views/wms/md/item/category/components/tree.vue @@ -55,8 +55,17 @@ function handleSearch(value: string) { } /** 处理节点点击:支持点击同一节点取消选中 */ -function handleSelect(_selectedKeys: any[], info: any) { - const row = info.node.dataRef as WmsItemCategoryApi.ItemCategory; +function handleSelect(selectedNodeKeys: any[], info: any) { + const selectedKey = selectedNodeKeys[0] ?? info.node?.id ?? info.node?.key; + const row = categoryList.value.find( + (item) => String(item.id) === String(selectedKey), + ); + if (!row) { + currentNodeId.value = undefined; + selectedKeys.value = []; + emit('nodeClick', undefined); + return; + } if (currentNodeId.value === row.id) { currentNodeId.value = undefined; selectedKeys.value = [];