From c40500d288339cd9b2200f8f909e3cd5471c0c22 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 30 八月 2024 17:38:29 +0800
Subject: [PATCH] 1. 优化3D动画中风向的变化逻辑; 2. 修复折线图切换因子时,数据直接跳转至起始处的问题; 3. 折线图和表格加回风向因子; 4. 优化风向的均值计算为矢量计算,同时最大最小值不显示; 5. 新增表格数据导出功能;
---
src/views/historymode/HistoryMode.vue | 139 ++++++++++++++++++++++++++++-----------------
1 files changed, 86 insertions(+), 53 deletions(-)
diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue
index b40ea8a..cbf22c8 100644
--- a/src/views/historymode/HistoryMode.vue
+++ b/src/views/historymode/HistoryMode.vue
@@ -4,6 +4,7 @@
<SearchBar
v-show="status == 0"
:search-time="searchTime"
+ :loading="loading"
@search="fetchHistroyData"
></SearchBar>
<TrajectoryState v-show="status != 0" :status="status"></TrajectoryState>
@@ -41,6 +42,7 @@
@table-click="handelIndexChange"
:factor-datas="factorDatas"
:device-type="deviceType"
+ :device-code="deviceCode"
></DataSheet>
</div>
</template>
@@ -49,14 +51,17 @@
import Layer from '@/utils/map/3dLayer';
import marks from '@/utils/map/marks';
import sector from '@/utils/map/sector';
+import mapUtil from '@/utils/map/util';
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 { radioOptions } from '@/constant/radio-options';
import { FactorDatas } from '@/model/FactorDatas';
import TrendAnalysis from './component/TrendAnalysis.vue';
import DataSheet from './component/DataSheet.vue';
+import { ElMessage } from 'element-plus';
+import { fetchHistoryData } from '@/utils/factor/data';
export default {
components: { TrendAnalysis, DataSheet },
@@ -68,8 +73,10 @@
return {
// 鐩戞祴璁惧绫诲瀷
deviceType: TYPE0,
+ // 鐩戞祴璁惧缂栧彿
+ deviceCode: '',
// 鐩戞祴鍥犲瓙鐨勭被鍨嬬紪鍙�
- factorType: '1',
+ factorType: radioOptions(TYPE0)[0].value,
// 鐩戞祴鏁版嵁
factorDatas: new FactorDatas(),
// 鍐冲畾缁樺埗3D鍥惧舰鏃舵槸鍚︿笌鍘熷浘鍍忓悎骞�
@@ -93,25 +100,37 @@
}
},
methods: {
+ // 妫�鏌ユ暟鎹粡绾害鏄惁鍚堟硶
+ checkDataIsValid(index) {
+ const lnglats_GD = this.factorDatas.lnglats_GD[index];
+ const time = this.factorDatas.times[index];
+ if (lnglats_GD[0] == 0 && lnglats_GD[1] == 0) {
+ ElMessage({
+ message: `${time}鐨勬暟鎹粡绾害鏃犳晥`,
+ type: 'warning'
+ });
+ return false;
+ } else {
+ this.locateIndex = index;
+ return true;
+ }
+ },
// 鐩戝惉鎶樼嚎鍥惧拰琛ㄦ牸鐨勭偣鍑讳簨浠�
handelIndexChange(index) {
- this.locateIndex = index;
- this.drawSector(index);
+ if (this.checkDataIsValid(index)) {
+ this.drawSector(index);
+ }
},
draw() {
- // todo 鍒锋柊鍥句緥
+ // 鍒锋柊鍥句緥
const factor = this.factorDatas.factor[this.factorType];
+ sector.clearSector();
this.drawRoadMap(factor);
this.drawMassMarks(factor);
},
// 缁樺埗3D璧拌璺嚎鍥�
drawRoadMap(e) {
- // this.factorMode = factorMode;
- // this.factorType = factorType;
- // this.factorName = factorName;
this.factorDatas.refreshHeight(this.factorType);
- // this.mapMaker.setFactorType(factorType);
- // if (!this.mapMaker.runStatus()) {
Layer.drawRoadMap(this.factorDatas, e, this.merge, this.setCenter);
// }
@@ -120,71 +139,85 @@
marks.drawMassMarks(this.factorDatas, e, (index) => {
// 鏌ヨ鑼冨洿鍐呯殑鐩戞祴绔欑偣
// SceneUtil.searchByCoordinate(lnglat[0], lnglat[1], distance);
- this.drawSector(index);
- this.locateIndex = index;
+ if (this.checkDataIsValid(index)) {
+ this.drawSector(index);
+ }
});
+ // 璋冩暣鍦板浘瑙嗚
+ mapUtil.setBound(this.factorDatas.lnglats_GD);
},
drawSector(index) {
- // 1. 缁樺埗鎵囧舰鍖哄煙
- sector.drawSector(this.factorDatas, index);
+ // 1. 缁樺埗鏂版墖褰㈠尯鍩�
+ const pr = sector.drawSector(this.factorDatas, index);
+ // 璋冩暣瑙嗚灞呬腑鏄剧ず
+ mapUtil.setCenter(pr.p);
+ // mapUtil.setFitSector(pr);
// 2. 缁樺埗瀵硅瘽妗�
- DialogUtil.openNewWindow(this.factorDatas, index, () => {
- // 绉婚櫎鎵囧舰鍖哄煙
- // clearSector3();
- });
+ DialogUtil.openNewWindow(
+ this.deviceType,
+ this.deviceCode,
+ this.factorDatas,
+ index,
+ () => {
+ // 绉婚櫎鎵囧舰鍖哄煙
+ sector.clearSector();
+ }
+ );
},
- onFetchData(type, data) {
+ onFetchData(deviceType, data) {
// todo 鏍规嵁璁惧绫诲瀷鍒囨崲鍦板浘鐩戞祴鍥犲瓙灞曠ず鍗曢�夋銆佹姌绾垮浘澶嶉�夋銆佹暟鎹〃鏍煎閫夋鐨勫洜瀛愮被鍨�
- this.deviceType = type;
+ this.deviceType = deviceType;
this.factorDatas.setData(data, this.drawMode, () => {
this.factorDatas.refreshHeight(this.factorType);
this.draw();
});
},
fetchHistroyData(option) {
- const { deviceCode, type, timeArray } = option;
+ const { deviceType, deviceCode, timeArray } = option;
+ this.deviceType = deviceType;
+ this.deviceCode = deviceCode;
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);
- });
+ return fetchHistoryData({
+ deviceType,
+ deviceCode,
+ startTime,
+ endTime,
+ page,
+ perPage: pageSize
+ }).then((res) => this.onFetchData(deviceType, res.data));
});
}
+ // fetchRealTimeData() {
+ // // fixme 2024.5.3 姝ゅ鍒濆鑾峰彇鐨勬暟鎹紝鍙傛暟搴旇鐢眘earchbar鍐冲畾锛屽悗缁慨鏀�
+ // this.fetchData((page) => {
+ // return fetchHistoryData({
+ // 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();
+ // this.fetchRealTimeData();
+ },
+ unmounted() {
+ mapUtil.clearMap();
}
};
</script>
--
Gitblit v1.9.3