From 88db88c99f57427114a415b3657ed520842bafca Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 14 五月 2024 16:01:08 +0800
Subject: [PATCH] Merge branch 'master' of ssh://114.215.109.124:29418/underway-vue
---
src/views/historymode/HistoryMode.vue | 188 +++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 166 insertions(+), 22 deletions(-)
diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue
index 1c71387..e7b2ca9 100644
--- a/src/views/historymode/HistoryMode.vue
+++ b/src/views/historymode/HistoryMode.vue
@@ -1,65 +1,209 @@
<template>
- <div class="fy-container">
- <FactorRadio @change="(e) => (factorType = e)"></FactorRadio>
- <SearchBar></SearchBar>
+ <div class="p-events-none m-t-2">
+ <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
+ :device-type="deviceType"
+ @change="(e) => (factorType = e)"
+ ></FactorRadio>
+ </el-row>
+ <el-row class="m-t-2">
+ <FactorLegend
+ class="m-t-2"
+ :factor="factorDatas.factor[factorType]"
+ ></FactorLegend>
+ </el-row>
+ <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 {
- name: 'HistoryPage',
+ components: { TrendAnalysis, DataSheet },
+ setup() {
+ const { loading, fetchData } = useFetchData(10000);
+ return { loading, fetchData };
+ },
data() {
return {
- factorType: '',
- factorDatas: [],
+ // 鐩戞祴璁惧绫诲瀷
+ deviceType: TYPE0,
+ // 鐩戞祴鍥犲瓙鐨勭被鍨嬬紪鍙�
+ factorType: '1',
+ // 鐩戞祴鏁版嵁
+ factorDatas: new FactorDatas(),
+ // 鍐冲畾缁樺埗3D鍥惧舰鏃舵槸鍚︿笌鍘熷浘鍍忓悎骞�
merge: false,
- setCenter: true
+ // 鍐冲畾缁樺埗瀹�3D鍥惧舰鍚庡湴鍥捐瑙掓槸鍚﹁嚜鍔ㄥ洖涓�
+ setCenter: true,
+ // 缁樺埗妯″紡锛�0锛氳嚜鍔ㄦā寮忥紝鑷姩璁$畻褰撳墠鏁版嵁鐨勮寖鍥达紝缁樺埗鍚堥�傜殑姣斾緥锛�1锛氭墜鍔ㄦā寮忥紝鏍规嵁椤甸潰璁剧疆鐨勭粯鍥捐寖鍥磋繘琛岀粯鍒�
+ drawMode: 0,
+ 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];
this.drawRoadMap(factor);
this.drawMassMarks(factor);
},
// 缁樺埗3D璧拌璺嚎鍥�
drawRoadMap(e) {
- // this.factorMode = factorMode;
- // this.factorType = factorType;
- // this.factorName = factorName;
- // this.factorDatas.refreshHeight(this.factorType + 1 + '');
- // this.refreshLegend(this.factorDatas);
- // this.mapMaker.setFactorType(factorType);
- // if (!this.mapMaker.runStatus()) {
+ this.factorDatas.refreshHeight(this.factorType);
Layer.drawRoadMap(this.factorDatas, e, this.merge, this.setCenter);
// }
},
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) {
+ // todo 鏍规嵁璁惧绫诲瀷鍒囨崲鍦板浘鐩戞祴鍥犲瓙灞曠ず鍗曢�夋銆佹姌绾垮浘澶嶉�夋銆佹暟鎹〃鏍煎閫夋鐨勫洜瀛愮被鍨�
+ this.deviceType = type;
+ this.factorDatas.setData(data, this.drawMode, () => {
+ this.factorDatas.refreshHeight(this.factorType);
+ this.draw();
+ });
+ },
+ fetchHistroyData(option) {
+ const { deviceCode, type, timeArray } = option;
+ let startTime, endTime;
+ if (timeArray && timeArray.length == 2) {
+ startTime = moment(timeArray[0]).format('YYYY-MM-DD HH:mm:ss');
+ endTime = moment(timeArray[1]).format('YYYY-MM-DD HH:mm:ss');
+ }
+ this.fetchData((page, pageSize) => {
+ return monitorDataApi
+ .fetchHistroyData({
+ deviceCode,
+ startTime,
+ endTime,
+ page,
+ perPage: pageSize
+ })
+ .then((res) => this.onFetchData(type, res.data));
+ });
+ },
+ fetchRealTimeData() {
+ // fixme 2024.5.3 姝ゅ鍒濆鑾峰彇鐨勬暟鎹紝鍙傛暟搴旇鐢眘earchbar鍐冲畾锛屽悗缁慨鏀�
+ this.fetchData((page) => {
+ return monitorDataApi
+ .fetchHistroyData({
+ deviceCode: '0a0000000001',
+ // type: TYPE0,
+ page,
+ perPage: 100
+ })
+ .then((res) => {
+ if (res.data.length > 0) {
+ 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);
+ });
});
}
+ },
+ mounted() {
+ this.fetchRealTimeData();
}
};
</script>
<style scoped>
-.fy-container {
- background-color: antiquewhite;
+.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