From 977e332a5338942df338728dbfb77a359e35bd0b Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 09 五月 2025 12:25:21 +0800
Subject: [PATCH] 添加动态溯源相关逻辑(待完成)

---
 src/views/historymode/HistoryMode.vue |   37 +++++++++++++++++++++++++++++++++----
 1 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue
index 97c9982..10673f9 100644
--- a/src/views/historymode/HistoryMode.vue
+++ b/src/views/historymode/HistoryMode.vue
@@ -8,6 +8,13 @@
         @search="onSearch"
       ></SearchBar>
       <TrajectoryState v-show="status != 0" :status="status"></TrajectoryState>
+      <el-button
+        type="primary"
+        class="p-events-auto el-button-custom"
+        @click="handleClick"
+      >
+        鍒嗘瀽
+      </el-button>
     </el-row>
     <el-row class="m-t-2">
       <FactorRadio
@@ -64,6 +71,7 @@
 import DataSheet from './component/DataSheet.vue';
 import { ElMessage } from 'element-plus';
 import { fetchHistoryData } from '@/utils/factor/data';
+import dataAnalysisApi from '@/api/dataAnalysisApi';
 import { mapStores } from 'pinia';
 import { useSceneStore } from '@/stores/scene';
 
@@ -81,9 +89,11 @@
       // 鐩戞祴璁惧缂栧彿
       deviceCode: '',
       // 鐩戞祴鍥犲瓙鐨勭被鍨嬬紪鍙�
-      factorType: defaultOptions(TYPE0),
+      factorType: defaultOptions(TYPE0).value,
       // 鐩戞祴鏁版嵁
       factorDatas: new FactorDatas(),
+      // 姹℃煋婧簮缁撴灉
+      pollutionData: undefined,
       // 鍐冲畾缁樺埗3D鍥惧舰鏃舵槸鍚︿笌鍘熷浘鍍忓悎骞�
       merge: false,
       // 鍐冲畾缁樺埗瀹�3D鍥惧舰鍚庡湴鍥捐瑙掓槸鍚﹁嚜鍔ㄥ洖涓�
@@ -102,7 +112,9 @@
   watch: {
     factorType(nValue, oValue) {
       if (nValue != oValue && this.status == 0) {
+        Layer.clear();
         this.draw();
+        this.drawHighlightPollution();
       }
     }
   },
@@ -148,8 +160,8 @@
       // 鍒锋柊鍥句緥
       const factor = this.factorDatas.factor[this.factorType];
       sector.clearSector();
-      this.drawRoadLine(factor);
-      // this.drawRoadMap(factor);
+      // this.drawRoadLine(factor);
+      this.drawRoadMap(factor);
       this.drawMassMarks(factor);
     },
     // 缁樺埗3D璧拌璺嚎鍥�
@@ -186,19 +198,29 @@
         }
       );
     },
+    drawHighlightPollution() {
+      this.pollutionData.forEach((e) => {
+        if (this.factorType == e.factorId + '') {
+          const fDatas = this.factorDatas.getByDate(e.startDate, e.endDate);
+          Layer.drawHighLight3DLayer(fDatas, fDatas.factor[this.factorType]);
+        }
+      });
+    },
     onFetchData(deviceType, data) {
       if (this.isUnmounted) return;
       // todo 鏍规嵁璁惧绫诲瀷鍒囨崲鍦板浘鐩戞祴鍥犲瓙灞曠ず鍗曢�夋銆佹姌绾垮浘澶嶉�夋銆佹暟鎹〃鏍煎閫夋鐨勫洜瀛愮被鍨�
       this.deviceType = deviceType;
       this.factorDatas.setData(data, this.drawMode, () => {
         this.factorDatas.refreshHeight(this.factorType);
+        Layer.clear();
         this.draw();
       });
     },
     onSearch(option) {
-      const { deviceType, deviceCode, timeArray } = option;
+      const { deviceType, deviceCode, timeArray, mission } = option;
       this.deviceType = deviceType;
       this.deviceCode = deviceCode;
+      this.mission = mission;
       let startTime, endTime;
       if (timeArray && timeArray.length == 2) {
         startTime = moment(timeArray[0]).format('YYYY-MM-DD HH:mm:ss');
@@ -214,6 +236,13 @@
           perPage: pageSize
         }).then((res) => this.onFetchData(deviceType, res.data));
       });
+    },
+    handleClick() {
+      const { missionCode } = this.mission;
+      dataAnalysisApi.pollutionTrace(missionCode).then((res) => {
+        this.pollutionData = res.data;
+        this.drawHighlightPollution();
+      });
     }
   },
   mounted() {

--
Gitblit v1.9.3