From 1ee70becea36655a0fd537085b2e2ea5830ef880 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期一, 02 六月 2025 23:02:10 +0800
Subject: [PATCH] 动态溯源

---
 src/components/search/SearchBar.vue |   65 ++++++++++++++++++++++++--------
 1 files changed, 49 insertions(+), 16 deletions(-)

diff --git a/src/components/search/SearchBar.vue b/src/components/search/SearchBar.vue
index a7de11b..16572cc 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.type"></OptionType>
+        <OptionMission v-model="mission" @init-over="initOver"></OptionMission>
+        <OptionType
+          v-model="formSearch.deviceType"
+          @init-over="initOver"
+        ></OptionType>
         <OptionDevice
-          :type="formSearch.type"
+          :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: {
@@ -37,7 +47,7 @@
     return {
       mission: undefined,
       formSearch: {
-        type: '',
+        deviceType: '',
         deviceCode: '',
         timeArray: []
       },
@@ -54,27 +64,50 @@
     },
     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.type = nV.deviceType;
-        this.formSearch.deviceCode = nV.deviceCode;
-
-        // 浠h〃棣栨杩涘叆鐣岄潰锛屾鏃惰嚜鍔ㄦ墽琛岄涓换鍔$殑鏁版嵁鏌ヨ鎿嶄綔
-        if (oV == undefined) {
+        this.onInit(() => {
           setTimeout(() => {
-            this.handleClick();
+            // 寤舵椂璧嬪�硷紝鍥犱负deviceType鍜宒eviceCode涔熸湁榛樿鍒濆鍊�
+            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) {
+              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 });
     }
+  },
+  created() {
+    initCount = 0;
+    initEvents = [];
   }
 };
 </script>

--
Gitblit v1.9.3