From 42f42dc88214f283b43c422f37e10ab45c5c5578 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 12 三月 2025 17:32:13 +0800
Subject: [PATCH] 1. 新增绘图模式的切换 2. 新增行政区划的切换展示

---
 src/components/search/OptionDevice.vue |   48 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 37 insertions(+), 11 deletions(-)

diff --git a/src/components/search/OptionDevice.vue b/src/components/search/OptionDevice.vue
index c16c1f0..093e7b8 100644
--- a/src/components/search/OptionDevice.vue
+++ b/src/components/search/OptionDevice.vue
@@ -8,7 +8,7 @@
       class="w-120"
     >
       <el-option
-        v-for="(s, i) in deviceList"
+        v-for="(s, i) in deviceOptions"
         :key="i"
         :label="s.label"
         :value="s.value"
@@ -18,41 +18,67 @@
 </template>
 
 <script>
+// import { deviceList } from '@/constant/device-type';
+import { mapStores } from 'pinia';
+import { useDeviceStore } from '@/stores/device';
+
 export default {
   props: {
     type: String,
     modelValue: String
   },
-  emits: ['update:modelValue'],
+  emits: ['update:modelValue', 'initOver'],
   data() {
     return {};
   },
   computed: {
-    deviceList() {
-      const t = this.type ? this.type : '0a';
-      return [1, 2, 3].map((v) => {
-        const text = `${t}000000000${v}`;
+    ...mapStores(useDeviceStore),
+    deviceOptions() {
+      return this.deviceStore.getDevice(this.type).map((v) => {
         return {
-          label: text,
-          value: text
+          label: v.deviceName,
+          value: v.deviceCode
         };
       });
     }
   },
   watch: {
-    deviceList(nV, oV) {
+    // type(nV, oV) {
+    //   if (nV != oV) {
+    //     this.refreshOptions();
+    //   }
+    // }
+    deviceOptions(nV, oV) {
       if (nV != oV) {
-        this.handleChange(nV[0].value);
+        if (nV.length > 0) {
+          this.handleChange(nV[0].value);
+        }
       }
     }
   },
   methods: {
+    fetchDevice() {
+      this.deviceStore.fetchDevice().then((res) => {
+        if (res.success && res.data.length > 0) {
+          this.handleChange(this.deviceOptions[0].value);
+          this.$emit('initOver');
+        }
+      });
+    },
+    // refreshOptions() {
+    //   this.deviceOptions =
+    // },
     handleChange(value) {
       this.$emit('update:modelValue', value);
     }
   },
   mounted() {
-    this.handleChange(this.deviceList[0].value);
+    if (this.deviceStore.deviceList.length == 0) {
+      this.fetchDevice();
+    } else {
+      this.handleChange(this.deviceOptions[0].value);
+      this.$emit('initOver');
+    }
   }
 };
 </script>

--
Gitblit v1.9.3