From 3dddb1b4c87400c6448677a2ff5e6cd1f9be5ecd Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sun, 30 Mar 2025 20:18:15 +0800
Subject: [PATCH] fix: 移除监听事件bug

---
 src/views/Home/useAggregation.js |    6 +++---
 src/views/Home/RSide.vue         |    8 ++++----
 src/views/Home/Footer.vue        |    6 +++++-
 src/views/Home/Home.vue          |    4 ++--
 4 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/layout/Footer.vue b/src/views/Home/Footer.vue
similarity index 92%
rename from src/layout/Footer.vue
rename to src/views/Home/Footer.vue
index 53b90f6..9eefc90 100644
--- a/src/layout/Footer.vue
+++ b/src/views/Home/Footer.vue
@@ -29,13 +29,17 @@
   {name:'event5',img:img5,activeImg:activeImg5,active:false,className:'orthophoto'},
 ])
 
+// 机巢聚合
 const {init,removeAll} = useAggregation()
 
 const imgClick = (row) => {
   const find = list.value.find(item => item.active)
   if (find.name === row.name) return
+  const isFromEvent1 = find.name === 'event1';
+  const isToEvent1 = row.name === 'event1';
+  if (isFromEvent1 && !isToEvent1) removeAll();
+  else if (!isFromEvent1 && isToEvent1) init();
   list.value = list.value.map(item => ({...item,active: item.name === row.name}));
-  row.name === 'event1' ? init() :removeAll()
 }
 
 // 销毁前钩子
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index dae0c93..5a2c5a7 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -17,8 +17,8 @@
 import SearchBox from '@/views/Home/SearchBox.vue';
 import SignMachineNest from '@/views/SignMachineNest/SignMachineNest.vue';
 import { useStore } from 'vuex';
-import Footer from '@/layout/Footer.vue';
-import RSide from '@/layout/RSide.vue';
+import Footer from '@/views/Home/Footer.vue';
+import RSide from '@/views/Home/RSide.vue';
 import { onMounted } from 'vue';
 import cesiumOperation from '@/utils/cesium-tsa';
 const store = useStore();
diff --git a/src/layout/RSide.vue b/src/views/Home/RSide.vue
similarity index 82%
rename from src/layout/RSide.vue
rename to src/views/Home/RSide.vue
index c32053b..ffc2da6 100644
--- a/src/layout/RSide.vue
+++ b/src/views/Home/RSide.vue
@@ -18,12 +18,12 @@
     </el-popover>
 
 
-    <img class="chat-bottom" src="@/assets/images/chat-bottom.png" alt="">
+    <img class="chat-bottom" src="../../assets/images/chat-bottom.png" alt="">
   </div>
   <div class="r-side">
-    <img class="positioning" src="@/assets/images/self-positioning.png" alt="" @mouseenter="enterHover(0)" @mouseleave="logIndex=3">
-    <img class="measuring-scale" src="@/assets/images/measuring-scale.png" alt="" @mouseenter="enterHover(1)" @mouseleave="logIndex=3">
-    <img class="layer" src="@/assets/images/layer.png" alt="" @mouseenter="enterHover(2)" @mouseleave="logIndex=3">
+    <img class="positioning" src="../../assets/images/self-positioning.png" alt="" @mouseenter="enterHover(0)" @mouseleave="logIndex=3">
+    <img class="measuring-scale" src="../../assets/images/measuring-scale.png" alt="" @mouseenter="enterHover(1)" @mouseleave="logIndex=3">
+    <img class="layer" src="../../assets/images/layer.png" alt="" @mouseenter="enterHover(2)" @mouseleave="logIndex=3">
   </div>
   <div v-if="logIndex===0" class="r-side-positioning">切换地图模式</div>
   <div v-if="logIndex===1" class="r-side-measuring">量尺</div>
diff --git a/src/views/Home/useAggregation.js b/src/views/Home/useAggregation.js
index d9e9f89..b724256 100644
--- a/src/views/Home/useAggregation.js
+++ b/src/views/Home/useAggregation.js
@@ -23,9 +23,7 @@
   let positionC3 = null;
   const listenerHeight = () => {
     determineScaling();
-    viewer.camera.moveEnd.addEventListener(() => {
-      determineScaling();
-    });
+    viewer.camera.moveEnd.addEventListener(determineScaling);
   };
 
   // 确定缩放比例
@@ -179,9 +177,11 @@
     }
   };
 
+  // 移除所有监听事件,变量置空
   const removeAll = () => {
     removeEntities();
     removeLabel();
+    viewer.camera.moveEnd.removeEventListener(determineScaling);
     handler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
     handler?.destroy();
     viewer = null;

--
Gitblit v1.9.3