From a09f984cbe2369e13d8694e91c4f8165ec6c2ba9 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 20 八月 2025 14:05:10 +0800
Subject: [PATCH] 动态溯源模块优化

---
 src/components/search/SearchBar.vue |   80 +++++++++++++++++++++++++++++++++-------
 1 files changed, 66 insertions(+), 14 deletions(-)

diff --git a/src/components/search/SearchBar.vue b/src/components/search/SearchBar.vue
index 4534886..16572cc 100644
--- a/src/components/search/SearchBar.vue
+++ b/src/components/search/SearchBar.vue
@@ -2,13 +2,21 @@
   <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"></OptionTime>
+        <OptionTime
+          v-model="formSearch.timeArray"
+          :start-date="dateRange[0]"
+          :end-date="dateRange[1]"
+        ></OptionTime>
         <el-button
           :loading="loading"
           type="primary"
@@ -23,6 +31,12 @@
 </template>
 
 <script>
+// 鍙兘浼氭湁寤舵椂鍒濆鍖栫殑閫夐」鎬绘暟锛屽寘鎷蛋鑸换鍔°�佽澶囩被鍨嬨�佽澶囩紪鍙�
+const MAX_INIT = 3;
+// 宸插垵濮嬪寲鐨勯�夐」鏁�
+let initCount = 0;
+let initEvents = [];
+
 // 鎼滅储妗�
 export default {
   props: {
@@ -31,12 +45,14 @@
   },
   data() {
     return {
-      mission: {},
+      mission: undefined,
       formSearch: {
-        type: '',
+        deviceType: '',
         deviceCode: '',
         timeArray: []
-      }
+      },
+      // 鍙�夋棩鏈熻寖鍥达紝鏍规嵁璧拌埅浠诲姟鍐冲畾
+      dateRange: []
     };
   },
   emits: ['search'],
@@ -48,23 +64,54 @@
     },
     mission(nV, oV) {
       if (nV != oV) {
-        this.formSearch.timeArray = [
-          new Date(nV.startTime),
-          new Date(nV.endTime)
-        ];
-        this.formSearch.type = nV.deviceType;
-        this.formSearch.deviceCode = nV.deviceCode;
+        this.onInit(() => {
+          setTimeout(() => {
+            // 寤舵椂璧嬪�硷紝鍥犱负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>
-<style lang="scss">
+<style scoped lang="scss">
 .map-date-selector {
   display: inline-block;
   position: relative;
@@ -78,4 +125,9 @@
 
 .p-events-auto {
 }
+
+.el-form-item {
+  margin-bottom: 0px;
+  margin-right: 8px !important;
+}
 </style>

--
Gitblit v1.9.3