From b0827f4c098e9507ce1d5dc490111421ebdea29a Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Fri, 14 Nov 2025 19:16:57 +0800
Subject: [PATCH] feat:11

---
 src/views/layerManagement/components/leftList.vue |   29 ++++++++++++++++++-----------
 1 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/src/views/layerManagement/components/leftList.vue b/src/views/layerManagement/components/leftList.vue
index 23fb1a6..812bcdd 100644
--- a/src/views/layerManagement/components/leftList.vue
+++ b/src/views/layerManagement/components/leftList.vue
@@ -188,37 +188,44 @@
 };
 // 定位按钮事件
 const handleLocation = node => {
- if (node.data.level === 2) {
-    layerParams.value.isSingleLocating = false; 
+  if (node.data.level === 2) {
+    layerParams.value.isSingleLocating = false;
+    // 新增:标记当前定位的文件夹ID
+    layerParams.value.currentLocationFolderId = node.data.id;
   } else if (node.data.level === 3) {
-    layerParams.value.isSingleLocating = true; 
+    layerParams.value.isSingleLocating = true;
+    // 清空文件夹定位标识
+    layerParams.value.currentLocationFolderId = null;
   }
 
   const currentCheckedKeys = [...checkedKeys.value];
   const currentCheckedNodes = [...checkedNodes.value];
   EventBus.emit('focusOnNode', node.data);
+  
   if (node.data.level === 2) {
     const folderChildren = node.data.children || [];
     const childrenIds = folderChildren.map(child => child.id);
-    // 合并已选中的节点和当前文件夹的子节点
-    const newCheckedKeys = [...new Set([...currentCheckedKeys, ...childrenIds])];
-    const newCheckedNodes = [...currentCheckedNodes, ...folderChildren];
+    const newChildrenIds = childrenIds.filter(id => !currentCheckedKeys.includes(id));
+    const newChildrenNodes = folderChildren.filter(child => newChildrenIds.includes(child.id));
+    
+    const newCheckedKeys = [...new Set([...currentCheckedKeys, ...newChildrenIds])];
+    const newCheckedNodes = [...currentCheckedNodes, ...newChildrenNodes];
+    
     treeRef.value.setCheckedKeys(newCheckedKeys);
     checkedKeys.value = newCheckedKeys;
     checkedNodes.value = newCheckedNodes;
     coverData.value = newCheckedNodes;
-  } 
-  // 如果是单个节点(level 3),仅添加到选中列表(如果未选中)
-  else if (!currentCheckedKeys.includes(node.data.id)) {
-  layerParams.value.isSingleLocating = true
+    emit('update:coverData', coverData.value);
+  } else if (!currentCheckedKeys.includes(node.data.id)) {
+    layerParams.value.isSingleLocating = true;
     currentCheckedKeys.push(node.data.id);
     currentCheckedNodes.push(node.data);
     treeRef.value.setCheckedKeys(currentCheckedKeys);
     checkedKeys.value = currentCheckedKeys;
     checkedNodes.value = currentCheckedNodes;
     coverData.value = currentCheckedNodes;
+    emit('update:coverData', coverData.value);
   }
-  emit('update:coverData', coverData.value);
 };
 // 编辑按钮事件
 const handleEdit = node => {

--
Gitblit v1.9.3