From c35074e0e33054bb6c5ada22f8104422ae953b17 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 21 二月 2025 17:19:04 +0800
Subject: [PATCH] 1. 新增默认加载时先判断各选项是否获取完成逻辑

---
 src/views/historymode/HistoryMode.vue   |    2 
 src/api/index.js                        |    2 
 src/components/search/OptionDevice.vue  |    3 +
 src/components/search/OptionMission.vue |    3 +
 src/components/search/SearchBar.vue     |   59 ++++++++++++++++++++++-------
 src/components/search/OptionType.vue    |    3 +
 6 files changed, 52 insertions(+), 20 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index c0264f8..c19983c 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -15,7 +15,7 @@
 
 const $http = axios.create({
   baseURL: ip1,
-  timeout: 20000
+  timeout: 30000
 });
 
 //娣诲姞鎷︽埅鍣�
diff --git a/src/components/search/OptionDevice.vue b/src/components/search/OptionDevice.vue
index a6d3c47..0b56362 100644
--- a/src/components/search/OptionDevice.vue
+++ b/src/components/search/OptionDevice.vue
@@ -27,7 +27,7 @@
     type: String,
     modelValue: String
   },
-  emits: ['update:modelValue'],
+  emits: ['update:modelValue', 'initOver'],
   data() {
     return {};
   },
@@ -61,6 +61,7 @@
       this.deviceStore.fetchDevice().then((res) => {
         if (res.success && res.data.length > 0) {
           this.handleChange(this.deviceOptions[0].value);
+          this.$emit('initOver');
         }
       });
     },
diff --git a/src/components/search/OptionMission.vue b/src/components/search/OptionMission.vue
index f58d98f..dd8ea00 100644
--- a/src/components/search/OptionMission.vue
+++ b/src/components/search/OptionMission.vue
@@ -31,7 +31,7 @@
     type: String,
     modelValue: String
   },
-  emits: ['update:modelValue', 'change'],
+  emits: ['update:modelValue', 'initOver'],
   data() {
     return {
       index: undefined
@@ -46,6 +46,7 @@
         if (res.success && res.data.length > 0) {
           this.index = 0;
           this.handleChange(0);
+          this.$emit('initOver');
         }
       });
     },
diff --git a/src/components/search/OptionType.vue b/src/components/search/OptionType.vue
index c28a189..f1997b3 100644
--- a/src/components/search/OptionType.vue
+++ b/src/components/search/OptionType.vue
@@ -32,7 +32,7 @@
     },
     modelValue: String
   },
-  emits: ['update:modelValue'],
+  emits: ['update:modelValue', 'initOver'],
   data() {
     return {
       typeList: typeList(),
@@ -54,6 +54,7 @@
     }
   },
   mounted() {
+    this.$emit('initOver');
     this.handleChange(this.typeList[0].value);
   }
 };
diff --git a/src/components/search/SearchBar.vue b/src/components/search/SearchBar.vue
index d28abc0..6c0dad6 100644
--- a/src/components/search/SearchBar.vue
+++ b/src/components/search/SearchBar.vue
@@ -2,11 +2,15 @@
   <BaseCard size="middle-s" direction="down">
     <template #content>
       <el-form :inline="true">
-        <OptionMission v-model="mission"></OptionMission>
-        <OptionType v-model="formSearch.deviceType"></OptionType>
+        <OptionMission v-model="mission" @init-over="initOver"></OptionMission>
+        <OptionType
+          v-model="formSearch.deviceType"
+          @init-over="initOver"
+        ></OptionType>
         <OptionDevice
           :type="formSearch.deviceType"
           v-model="formSearch.deviceCode"
+          @init-over="initOver"
         ></OptionDevice>
         <OptionTime
           v-model="formSearch.timeArray"
@@ -27,6 +31,12 @@
 </template>
 
 <script>
+// 鍙兘浼氭湁寤舵椂鍒濆鍖栫殑閫夐」鎬绘暟锛屽寘鎷蛋鑸换鍔°�佽澶囩被鍨嬨�佽澶囩紪鍙�
+const MAX_INIT = 3;
+// 宸插垵濮嬪寲鐨勯�夐」鏁�
+let initCount = 0;
+let initEvents = [];
+
 // 鎼滅储妗�
 export default {
   props: {
@@ -54,24 +64,43 @@
     },
     mission(nV, oV) {
       if (nV != oV) {
-        this.formSearch.timeArray = [
-          new Date(nV.startTime),
-          new Date(nV.endTime)
-        ];
-        this.dateRange = [new Date(nV.startTime), new Date(nV.endTime)];
-        this.formSearch.deviceType = nV.deviceType;
-        this.formSearch.deviceCode = nV.deviceCode;
+        this.onInit(() => {
+          this.formSearch.timeArray = [
+            new Date(nV.startTime),
+            new Date(nV.endTime)
+          ];
+          this.dateRange = [new Date(nV.startTime), new Date(nV.endTime)];
+          this.formSearch.deviceType = nV.deviceType;
+          this.formSearch.deviceCode = nV.deviceCode;
 
-        // 浠h〃棣栨杩涘叆鐣岄潰锛屾鏃惰嚜鍔ㄦ墽琛岄涓换鍔$殑鏁版嵁鏌ヨ鎿嶄綔
-        if (oV == undefined) {
-          setTimeout(() => {
-            this.handleClick();
-          }, 500);
-        }
+          // 浠h〃棣栨杩涘叆鐣岄潰锛屾鏃惰嚜鍔ㄦ墽琛岄涓换鍔$殑鏁版嵁鏌ヨ鎿嶄綔
+          if (oV == undefined) {
+            setTimeout(() => {
+              this.handleClick();
+            }, 500);
+          }
+        });
       }
     }
   },
   methods: {
+    // 鍚勯�夐」鍒濆鍖栧姞杞藉畬鎴愬垽瀹�
+    initOver() {
+      initCount++;
+      if (initCount == MAX_INIT && initEvents.length > 0) {
+        initEvents.forEach((e) => {
+          e();
+        });
+        initEvents = [];
+      }
+    },
+    onInit(event) {
+      if (initCount == MAX_INIT) {
+        event();
+      } else {
+        initEvents.push(event);
+      }
+    },
     handleClick() {
       this.$emit('search', { ...this.formSearch, mission: this.mission });
     }
diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue
index b63cf49..e7978dd 100644
--- a/src/views/historymode/HistoryMode.vue
+++ b/src/views/historymode/HistoryMode.vue
@@ -145,10 +145,10 @@
     // 缁樺埗3D璧拌璺嚎鍥�
     drawRoadMap(e) {
       this.factorDatas.refreshHeight(this.factorType);
-
       Layer.drawRoadMap(this.factorDatas, e, this.merge, this.setCenter);
     },
     drawRoadLine(e) {
+      this.factorDatas.refreshHeight(this.factorType);
       mapLine.drawLine(this.factorDatas, e);
     },
     drawMassMarks(e) {

--
Gitblit v1.9.3