From 75aeb4e63339b60f9559af984c7d9f87a7cba24a Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 09 五月 2024 17:40:47 +0800
Subject: [PATCH] 轨迹动画和任务管理

---
 src/views/historymode/HistoryMode.vue |   99 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 81 insertions(+), 18 deletions(-)

diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue
index 179e2cd..b40ea8a 100644
--- a/src/views/historymode/HistoryMode.vue
+++ b/src/views/historymode/HistoryMode.vue
@@ -1,7 +1,12 @@
 <template>
   <div class="p-events-none m-t-2">
-    <el-row justify="center">
-      <SearchBar search-time="" @search="fetchHistroyData"></SearchBar>
+    <el-row justify="center" align="middle" class="top-wrap">
+      <SearchBar
+        v-show="status == 0"
+        :search-time="searchTime"
+        @search="fetchHistroyData"
+      ></SearchBar>
+      <TrajectoryState v-show="status != 0" :status="status"></TrajectoryState>
     </el-row>
     <el-row class="m-t-2">
       <FactorRadio
@@ -15,22 +20,46 @@
         :factor="factorDatas.factor[factorType]"
       ></FactorLegend>
     </el-row>
-    <TrendAnalysis :factor-datas="factorDatas"></TrendAnalysis>
+    <el-row class="historical" justify="center">
+      <HistoricalTrajectory
+        :factor-datas="factorDatas"
+        :factor-type="factorType"
+        @change="(e) => (status = e)"
+        @stop="draw"
+      ></HistoricalTrajectory>
+    </el-row>
+    <TrendAnalysis
+      class="trend-analysis"
+      :locate-index="locateIndex"
+      @chart-click="handelIndexChange"
+      :factor-datas="factorDatas"
+      :device-type="deviceType"
+    ></TrendAnalysis>
+    <DataSheet
+      class="data-sheet"
+      :locate-index="locateIndex"
+      @table-click="handelIndexChange"
+      :factor-datas="factorDatas"
+      :device-type="deviceType"
+    ></DataSheet>
   </div>
 </template>
 
 <script>
 import Layer from '@/utils/map/3dLayer';
 import marks from '@/utils/map/marks';
+import sector from '@/utils/map/sector';
+import { DialogUtil } from '@/utils/map/dialog';
 import monitorDataApi from '@/api/monitorDataApi';
 import { useFetchData } from '@/composables/fetchData';
 import moment from 'moment';
 import { TYPE0 } from '@/constant/device-type';
 import { FactorDatas } from '@/model/FactorDatas';
 import TrendAnalysis from './component/TrendAnalysis.vue';
+import DataSheet from './component/DataSheet.vue';
 
 export default {
-  components: { TrendAnalysis },
+  components: { TrendAnalysis, DataSheet },
   setup() {
     const { loading, fetchData } = useFetchData(10000);
     return { loading, fetchData };
@@ -49,17 +78,26 @@
       setCenter: true,
       // 缁樺埗妯″紡锛�0锛氳嚜鍔ㄦā寮忥紝鑷姩璁$畻褰撳墠鏁版嵁鐨勮寖鍥达紝缁樺埗鍚堥�傜殑姣斾緥锛�1锛氭墜鍔ㄦā寮忥紝鏍规嵁椤甸潰璁剧疆鐨勭粯鍥捐寖鍥磋繘琛岀粯鍒�
       drawMode: 0,
-      searchTime: []
+      searchTime: [],
+      // 褰撳墠閫変腑楂樹寒鐨勬暟鎹偣绱㈠紩
+      locateIndex: undefined,
+      // 杞ㄨ抗鍔ㄧ敾鐘舵��
+      status: 0
     };
   },
   watch: {
     factorType(nValue, oValue) {
-      if (nValue != oValue) {
+      if (nValue != oValue && this.status == 0) {
         this.draw();
       }
     }
   },
   methods: {
+    // 鐩戝惉鎶樼嚎鍥惧拰琛ㄦ牸鐨勭偣鍑讳簨浠�
+    handelIndexChange(index) {
+      this.locateIndex = index;
+      this.drawSector(index);
+    },
     draw() {
       // todo 鍒锋柊鍥句緥
       const factor = this.factorDatas.factor[this.factorType];
@@ -72,7 +110,6 @@
       // this.factorType = factorType;
       // this.factorName = factorName;
       this.factorDatas.refreshHeight(this.factorType);
-      // this.refreshLegend(this.factorDatas);
       // this.mapMaker.setFactorType(factorType);
       // if (!this.mapMaker.runStatus()) {
 
@@ -80,13 +117,20 @@
       // }
     },
     drawMassMarks(e) {
-      marks.drawMassMarks(this.factorDatas, e, () => {
+      marks.drawMassMarks(this.factorDatas, e, (index) => {
         // 鏌ヨ鑼冨洿鍐呯殑鐩戞祴绔欑偣
         // SceneUtil.searchByCoordinate(lnglat[0], lnglat[1], distance);
-        // 3. 瓒嬪娍鍥捐烦杞畾浣�
-        // const progress = FChart.locate(lineChart.chart, lineChart.option, i, _factor.factorName);
-        // 4. 琛ㄦ牸鏁版嵁璺宠浆瀹氫綅
-        // Table.locate(i);
+        this.drawSector(index);
+        this.locateIndex = index;
+      });
+    },
+    drawSector(index) {
+      // 1. 缁樺埗鎵囧舰鍖哄煙
+      sector.drawSector(this.factorDatas, index);
+      // 2. 缁樺埗瀵硅瘽妗�
+      DialogUtil.openNewWindow(this.factorDatas, index, () => {
+        // 绉婚櫎鎵囧舰鍖哄煙
+        // clearSector3();
       });
     },
     onFetchData(type, data) {
@@ -110,7 +154,6 @@
             deviceCode,
             startTime,
             endTime,
-            type,
             page,
             perPage: pageSize
           })
@@ -129,8 +172,10 @@
           })
           .then((res) => {
             if (res.data.length > 0) {
-              const s = new Date(res.data[0].time);
-              const e = new Date(res.data[res.data.length - 1].time);
+              const s = new Date(res.data[0].time.replace(' ', 'T'));
+              const e = new Date(
+                res.data[res.data.length - 1].time.replace(' ', 'T')
+              );
               this.searchTime = [s, e];
             }
             this.onFetchData(TYPE0, res.data);
@@ -144,8 +189,26 @@
 };
 </script>
 <style scoped>
-.p-events-auto {
-  /* background-color: antiquewhite; */
-  /* padding-top: 1px; */
+.top-wrap {
+  height: 40px;
+}
+
+.trend-analysis {
+  position: absolute;
+  left: 0;
+  bottom: 2px;
+}
+
+.data-sheet {
+  position: absolute;
+  right: 0;
+  top: 0;
+}
+
+.historical {
+  position: absolute;
+  bottom: 10px;
+  left: 0;
+  right: 0;
 }
 </style>

--
Gitblit v1.9.3