From 16eb4bd55a4fd61ddd7a171b1a07378c45d1665b Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 05 六月 2025 13:59:28 +0800
Subject: [PATCH] 动态溯源(待完成)

---
 src/components/scene/SceneTable.vue |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/components/scene/SceneTable.vue b/src/components/scene/SceneTable.vue
index 3957132..2333209 100644
--- a/src/components/scene/SceneTable.vue
+++ b/src/components/scene/SceneTable.vue
@@ -49,7 +49,7 @@
   </el-table>
 </template>
 <script setup>
-import { ref, computed, watch } from 'vue';
+import { ref, computed, watch, onUnmounted } from 'vue';
 import { sceneTypes, sceneIcon } from '@/constant/scene-types';
 import MapUtil from '@/utils/map/util';
 import marks from '@/utils/map/marks';
@@ -86,14 +86,15 @@
   }
 });
 
+onUnmounted(() => {
+  removeLayer();
+});
+
 watch(showSceneList, (nV, oV) => {
   if (nV && props.showMarks) {
     drawMarks(nV);
   } else {
-    if (layer != undefined) {
-      MapUtil.removeViews(layer);
-      layer = undefined;
-    }
+    removeLayer();
   }
 });
 
@@ -103,20 +104,21 @@
     if (showSceneList.value && nV) {
       drawMarks(showSceneList.value);
     } else {
-      if (layer != undefined) {
-        MapUtil.removeViews(layer);
-        layer = undefined;
-      }
+      removeLayer();
     }
   },
   { immediate: true }
 );
 
-function drawMarks(sceneList) {
+function removeLayer() {
   if (layer != undefined) {
     MapUtil.removeViews(layer);
     layer = undefined;
   }
+}
+
+function drawMarks(sceneList) {
+  removeLayer();
   if (sceneList.length != 0) {
     const icons = [];
     sceneList.forEach((s) => {

--
Gitblit v1.9.3