From fef12378282c0a8cf44411b079ac20ad4f397817 Mon Sep 17 00:00:00 2001
From: guonan <guonan201020@163.com>
Date: 星期五, 23 五月 2025 16:56:48 +0800
Subject: [PATCH] 修改比较多

---
 src/components/menu/Device.vue |   71 ++++++++++++++++++++++++-----------
 1 files changed, 49 insertions(+), 22 deletions(-)

diff --git a/src/components/menu/Device.vue b/src/components/menu/Device.vue
index bd23511..01b1b31 100644
--- a/src/components/menu/Device.vue
+++ b/src/components/menu/Device.vue
@@ -6,12 +6,28 @@
     <div class="left-content device-content">
       <div style="margin-left: 5px">
         <span style="color: white">閲嶇偣娌燂細</span>
-        <el-select @change="handleChange" v-model="selectValue" placeholder="Select" size="large" style="width: 240px">
-          <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+        <el-select
+          @change="handleChange"
+          v-model="selectValue"
+          placeholder="Select"
+          size="large"
+          style="width: 240px"
+        >
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </div>
-      <el-tree :data="deviceTree" node-key="deviceId" :props="treeProps" @node-click="handleTreeNodeClick"
-        class="device-tree">
+      <el-tree
+        :data="deviceTree"
+        node-key="deviceId"
+        :props="treeProps"
+        @node-click="handleTreeNodeClick"
+        class="device-tree"
+      >
         <template #default="{ node, data }">
           <span v-if="!data.children" class="device-tree-item">
             <!-- <div class="device-item-icon"></div> -->
@@ -27,21 +43,23 @@
 </template>
 
 <script setup>
-import { ref, computed, onMounted, watch, onBeforeUnmount, } from "vue";
-import { useRoute, onBeforeRouteUpdate } from 'vue-router';
+import { ref, computed, onMounted, watch, onBeforeUnmount } from "vue";
+import { useRoute, onBeforeRouteUpdate } from "vue-router";
 import { createPoint, removeEntities } from "@/utils/map";
 import { deviceDictList, getDictName } from "@/constant/dict.js";
 import { getDeviceInfo } from "@/api/hpApi";
 import { initeWaterPrimitiveView } from "@/utils/water"; //鐩告満flyTo鍑芥暟锛屽悗缁璷ptions鍒楄〃涓湁瀵瑰簲缁忕含搴﹀悗寮冪敤
 import { useSimStore } from "@/store/simulation";
 const simStore = useSimStore();
-onMounted(() => {
+onMounted(async () => {
+  // 鍔犺浇鎵�鏈夌殑闅愭偅鐐逛俊鎭�
+  await getData();
   loadDeviceList("瀛欒儭娌�");
-  initeWaterPrimitiveView()
+  initeWaterPrimitiveView();
 });
 
 onBeforeRouteUpdate((to, from, next) => {
-  if (to.path !== '/zhjc') {
+  if (to.path !== "/zhjc") {
     handleCleanup();
   }
   next();
@@ -49,24 +67,27 @@
 const route = useRoute();
 
 onBeforeUnmount(() => {
-  if (route.path !== '/zhjc') {
+  if (route.path !== "/zhjc") {
     handleCleanup();
   }
 });
-watch(() => simStore.DeviceShowSwitch, (newValue, oldValue) => {
-  if (newValue) {
-    initializeDevicePoints();
-  } else {
-    handleCleanup()
+watch(
+  () => simStore.DeviceShowSwitch,
+  (newValue, oldValue) => {
+    if (newValue) {
+      initializeDevicePoints();
+    } else {
+      handleCleanup();
+    }
   }
-});
+);
 const deviceListAll = ref([]);
 const deviceEntities = ref([]);
 const handleCleanup = () => {
-  deviceListAll.value.forEach(item => {
+  deviceListAll.value.forEach((item) => {
     removeEntities(item.deviceId);
   });
-}
+};
 const initializeDevicePoints = () => {
   const list = [];
   deviceListAll.value.forEach((item, index) => {
@@ -82,13 +103,18 @@
   });
   deviceEntities.value = list;
 };
+const allDevices = ref([]);
+const getData = async () => {
+  const res = await getDeviceInfo();
+  allDevices.value = res.data.pageData;
+};
 // 鏍规嵁鍖哄煙鍚嶇О鍔犺浇璁惧鍒楄〃
 const loadDeviceList = async (areaName) => {
   try {
-    handleCleanup()
-    const res = await getDeviceInfo();
-    const allDevices = res.data.pageData;
-    const devicesInArea = allDevices.filter((item) =>
+    handleCleanup();
+    // const res = await getDeviceInfo();
+    // const allDevices = res.data.pageData;
+    const devicesInArea = allDevices.value.filter((item) =>
       item.deviceName?.includes(areaName)
     );
     deviceListAll.value = devicesInArea;
@@ -98,6 +124,7 @@
     console.error("鍔犺浇璁惧淇℃伅澶辫触", error);
   }
 };
+
 // 澶勭悊鍖哄煙鍙樺寲浜嬩欢
 const handleChange = (item) => {
   if (!item) {

--
Gitblit v1.9.3