From f1393f0ceedea20d671e381f32bdfa29e8dc09a7 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Thu, 13 Nov 2025 09:12:14 +0800
Subject: [PATCH] Merge branch 'refs/heads/feature/v8.0/8.0.1' into test
---
src/views/layerManagement/components/leftList.vue | 53 ++++++++++++++++++++++++++++++++---------------------
1 files changed, 32 insertions(+), 21 deletions(-)
diff --git a/src/views/layerManagement/components/leftList.vue b/src/views/layerManagement/components/leftList.vue
index e82fb2b..310e478 100644
--- a/src/views/layerManagement/components/leftList.vue
+++ b/src/views/layerManagement/components/leftList.vue
@@ -57,6 +57,7 @@
node-key="id"
default-expand-all
:expand-on-click-node="false"
+ :check-on-click-node="false"
:filter-node-method="filterNode"
@check="handleCheck"
:props="{
@@ -150,8 +151,9 @@
);
};
const handleCheck = (checkedNodesData, checkedKeysData) => {
+layerParams.value.isSingleLocating = false
const filteredNodes = checkedKeysData.checkedNodes.filter(node => node.level === 3);
- checkedNodes.value = checkedNodesData.checkedNodes;
+ checkedNodes.value = filteredNodes
checkedKeys.value = filteredNodes.map(node => node.id);
coverData.value = filteredNodes;
emit('update:coverData', coverData.value);
@@ -163,6 +165,7 @@
);
};
const selectAll = () => {
+layerParams.value.isSingleLocating = false
if (treeRef.value) {
const allFenceKeys = getAllFenceKeys();
const allFenceNodes = treeData.value.flatMap(folder => folder.children);
@@ -185,27 +188,38 @@
};
// 定位按钮事件
const handleLocation = node => {
- checkedKeys.value = [];
- checkedNodes.value = [];
- coverData.value = [];
+ if (node.data.level === 2) {
+ layerParams.value.isSingleLocating = false;
+ } else if (node.data.level === 3) {
+ layerParams.value.isSingleLocating = true;
+ }
+
+ 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);
- // treeRef.value.setCheckedKeys(childrenIds);
- // checkedKeys.value = childrenIds;
- // checkedNodes.value = folderChildren;
- coverData.value = folderChildren;
- emit('update:coverData', coverData.value);
- } else {
- // const currentNodeId = node.data.id;
- // treeRef.value.setCheckedKeys([currentNodeId]);
- // checkedKeys.value = [currentNodeId];
- // checkedNodes.value = [node.data];
- coverData.value = [node.data];
- emit('update:coverData', coverData.value);
+ const childrenIds = folderChildren.map(child => child.id);
+ // 合并已选中的节点和当前文件夹的子节点
+ const newCheckedKeys = [...new Set([...currentCheckedKeys, ...childrenIds])];
+ const newCheckedNodes = [...currentCheckedNodes, ...folderChildren];
+ 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
+ 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);
};
-
// 编辑按钮事件
const handleEdit = node => {
if (node.data.level == 2) {
@@ -246,7 +260,6 @@
deleteFolderApi(id).then(res => {
ElMessage.success('删除成功');
gettreeDataApi();
- // 通知父组件删除该文件夹下所有围栏的地图实体
EventBus.emit('deleteMapEntitiesByFolderId', id);
});
} else if (node.data.level === 3) {
@@ -254,7 +267,6 @@
deleteFenceApi(id).then(res => {
ElMessage.success('删除成功');
gettreeDataApi();
- // 通知父组件删除对应的地图实体
EventBus.emit('deleteMapEntityById', id);
});
}
@@ -284,7 +296,6 @@
layerParams.value.fileType = 2;
}
};
-
function uploadFlightFile(file, t) {
const fileSuffix = file.name.substring(file.name.lastIndexOf('.') + 1);
if (!['zip'].includes(fileSuffix)) {
--
Gitblit v1.9.3