From 026f17ebafb85250d9ae9b71b80ae5f07341c172 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 15 五月 2025 16:33:12 +0800
Subject: [PATCH] 动态溯源功能初步完成

---
 src/views/realtimemode/RealtimeMode.vue |   76 +++++++++++++++++++++++--------------
 1 files changed, 47 insertions(+), 29 deletions(-)

diff --git a/src/views/realtimemode/RealtimeMode.vue b/src/views/realtimemode/RealtimeMode.vue
index f6ff253..abe7fec 100644
--- a/src/views/realtimemode/RealtimeMode.vue
+++ b/src/views/realtimemode/RealtimeMode.vue
@@ -6,14 +6,18 @@
     <el-row class="m-t-2">
       <FactorRadio
         :device-type="deviceType"
-        @change="(e) => (factorType = e)"
+        v-model="factorType"
       ></FactorRadio>
     </el-row>
     <el-row class="m-t-2">
-      <FactorLegend
-        class="m-t-2"
-        :factor="factorDatas.factor[factorType]"
-      ></FactorLegend>
+      <el-col span="1">
+        <FactorLegend
+          :factor="factorDatas.factor[factorType]"
+        ></FactorLegend>
+      </el-col>
+      <el-col span="1">
+        <SourceTrace v-model:factorType="factorType"></SourceTrace>
+      </el-col>
     </el-row>
     <DashBoard class="dash-board" :factor-datas="factorDatas"></DashBoard>
     <RealTimeTrend
@@ -26,24 +30,31 @@
 
 <script>
 import moment from 'moment';
+import mapUtil from '@/utils/map/util';
 import { useFetchData } from '@/composables/fetchData';
 import { TYPE0 } from '@/constant/device-type';
-import { radioOptions } from '@/constant/radio-options';
+import { defaultOptions } from '@/constant/radio-options';
 import { FactorDatas } from '@/model/FactorDatas';
 import DashBoard from './component/DashBoard.vue';
 import RealTimeTrend from './component/RealTimeTrend.vue';
 import DeviceChange from './component/DeviceChange.vue';
+import SourceTrace from '@/views/sourcetrace/SourceTrace.vue';
 import { realTimeMapAnimation } from '@/utils/map/animation';
 import {
   fetchHistoryData,
   startLoopFetchRealTimeData,
   clearFetchingTask
 } from '@/utils/factor/data';
+import thirdPartyDataApi from '@/api/thirdPartyDataApi';
+import websocket from '@/api/websocket';
 
 // const mapAnimation = new MapAnimation();
 
+// 璋冭瘯妯″紡
+const mode = 'debug';
+
 export default {
-  components: { DashBoard, RealTimeTrend, DeviceChange },
+  components: { DashBoard, RealTimeTrend, DeviceChange, SourceTrace },
   setup() {
     const { loading, fetchData } = useFetchData(10000);
     return { loading, fetchData };
@@ -54,7 +65,7 @@
       deviceType: TYPE0,
       deviceCode: '',
       // 鐩戞祴鍥犲瓙鐨勭被鍨嬬紪鍙�
-      factorType: radioOptions(TYPE0)[0].value,
+      factorType: defaultOptions(TYPE0).value,
       // 鏂拌幏鍙栫殑鐩戞祴鏁版嵁
       factorDatas: new FactorDatas(),
       // 鍏ㄩ儴鐩戞祴鏁版嵁
@@ -99,22 +110,31 @@
         // this.draw();
         this.factorDatas = fDatas;
       });
+      if (mode == 'debug') {
+        websocket.send(JSON.stringify(data));
+      }
     },
     fetchRealTimeData() {
       this.fetchData((page) => {
-        return fetchHistoryData({
-          deviceCode: this.deviceCode,
-          // startTime: '2024-08-20 06:00:00',
-          // endTime: '2024-08-20 06:02:00',
-          page,
-          perPage: 100
-        }).then((res) => {
+        const param =
+          mode == 'debug'
+            ? {
+                deviceCode: this.deviceCode,
+                startTime: '2025-01-16 11:34:00',
+                endTime: '2025-01-16 11:35:00',
+                page,
+                perPage: 100
+              }
+            : {
+                deviceCode: this.deviceCode,
+                page,
+                perPage: 100
+              };
+        return fetchHistoryData(param, false).then((res) => {
           this.onFetchData(res.data);
           this.onMapData(res.data);
-          // if (res.data.length > 0) {
-          //   this.fetchNextData(res.data[res.data.length - 1].time);
-          // }
           this.fetchNextData();
+          thirdPartyDataApi.fetchLatestData(this.deviceType, this.deviceCode);
         });
       });
     },
@@ -127,13 +147,15 @@
           return {
             deviceCode: this.deviceCode,
             updateTime: this.latestTime,
-            perPage: 10
+            perPage: mode == 'debug' ? 1 : 10
           };
         },
         (res) => {
           this.onFetchData(res.data);
           this.onMapData(res.data);
-        }
+          thirdPartyDataApi.fetchLatestData(this.deviceType, this.deviceCode);
+        },
+        mode == 'debug' ? 4000 : undefined
       );
     },
     onMapData(dataList) {
@@ -143,7 +165,7 @@
         this.notFirstFetch = true;
       }
       startIndex = startIndex < 0 ? 0 : startIndex;
-      return new Promise((resolve, reject) => {
+      return new Promise(() => {
         this.allFactorDatas.addData(dataList, this.drawMode, () => {
           realTimeMapAnimation.moveAnimation(
             this.allFactorDatas,
@@ -155,18 +177,14 @@
     }
   },
   mounted() {
-    // this.fetchRealTimeData();
-    // startLoopFetchRealTimeData({
-    //   compUser: 'user1',
-    //   compPassword: 'User1@jingan',
-    //   mn: 'TX105',
-    //   dtFrom: '2024-08-07 10:00:00',
-    //   dtTo: '2024-08-07 10:00:59'
-    // });
+    if (mode == 'debug') {
+      websocket.send('start');
+    }
   },
   unmounted() {
     this.clearFetchingTask();
     realTimeMapAnimation.stop();
+    mapUtil.clearMap();
   }
 };
 </script>

--
Gitblit v1.9.3