From 66e48ee8e286533a9614efa34d42297213c1da4b Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 04 六月 2025 17:34:11 +0800
Subject: [PATCH] 动态溯源(待完成)

---
 src/components/map/MapScene.vue |   27 ++++++++++++++++++++++-----
 1 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/components/map/MapScene.vue b/src/components/map/MapScene.vue
index b230c8c..f062b19 100644
--- a/src/components/map/MapScene.vue
+++ b/src/components/map/MapScene.vue
@@ -7,6 +7,7 @@
         class="el-button-custom p-events-auto"
       >
         鍦烘櫙鏍囨敞
+        <el-icon class="el-icon--right"><arrow-down /></el-icon>
       </el-button>
     </template>
     <OptionLocation v-model="districtCode"></OptionLocation>
@@ -28,6 +29,7 @@
           v-for="item in options"
           :key="item.label"
           :value="item.value"
+          :disabled="item.disabled"
           >{{ item.label }}</el-checkbox
         >
       </div>
@@ -40,6 +42,8 @@
 import sceneInfoApi from '@/api/sceneInfoApi';
 import marks from '@/utils/map/marks';
 import MapUtil from '@/utils/map/util';
+import { useToolboxStore } from '@/stores/toolbox';
+import { mapStores } from 'pinia';
 
 const lableMarkMap = new Map();
 
@@ -53,6 +57,18 @@
       options: sceneTypes(),
       sceneMap: new Map()
     };
+  },
+  computed: {
+    ...mapStores(useToolboxStore)
+  },
+  watch: {
+    // 褰撳垏鎹㈠尯鍘挎椂锛屾竻绌烘墍鏈夐�夐」
+    districtCode(nV, oV) {
+      if (nV != oV) {
+        this.toolboxStore.selectedDistrict = nV;
+        this.handelCheckAllChange(false);
+      }
+    }
   },
   methods: {
     fetchScene(sceneType) {
@@ -82,13 +98,14 @@
 
       // 鏍规嵁閫夐」锛屽皢鏈墦寮�鐨勫浘灞傚紑鍚�
       types.forEach((t) => {
-        if (!lableMarkMap.has(t)) {
+        const key = this.districtCode + t;
+        if (!lableMarkMap.has(key)) {
           this.fetchScene(t).then((res) => {
-            const layer = marks.createLabelMarks(sceneIcon(t), res);
-            lableMarkMap.set(t, { show: true, layer });
+            const layer = marks.createLabelMarks(sceneIcon(t), res, false);
+            lableMarkMap.set(key, { show: true, layer });
           });
         } else {
-          const m = lableMarkMap.get(t);
+          const m = lableMarkMap.get(key);
           if (!m.show) {
             MapUtil.addViews(m.layer);
             m.show = true;
@@ -98,7 +115,7 @@
 
       // 鏍规嵁閫夐」锛屽皢寮�鍚腑鐨勬湭閫変腑鍥惧眰鍏抽棴
       for (const [key, value] of lableMarkMap) {
-        if (!types.includes(key)) {
+        if (!types.map((t) => this.districtCode + t).includes(key)) {
           if (value.show) {
             MapUtil.removeViews(value.layer);
             value.show = false;

--
Gitblit v1.9.3