From 1534aee0339dee8000cdd26c21797cf3ad391f7a Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期一, 06 五月 2024 17:33:23 +0800 Subject: [PATCH] 新增折线图模块功能 --- src/views/historymode/HistoryMode.vue | 146 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 144 insertions(+), 2 deletions(-) diff --git a/src/views/historymode/HistoryMode.vue b/src/views/historymode/HistoryMode.vue index b718675..179e2cd 100644 --- a/src/views/historymode/HistoryMode.vue +++ b/src/views/historymode/HistoryMode.vue @@ -1,9 +1,151 @@ <template> - <div class="fy-container">HomePage</div> + <div class="p-events-none m-t-2"> + <el-row justify="center"> + <SearchBar search-time="" @search="fetchHistroyData"></SearchBar> + </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> + <TrendAnalysis :factor-datas="factorDatas"></TrendAnalysis> + </div> </template> <script> +import Layer from '@/utils/map/3dLayer'; +import marks from '@/utils/map/marks'; +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'; + export default { - name: 'HistoryPage' + components: { TrendAnalysis }, + setup() { + const { loading, fetchData } = useFetchData(10000); + return { loading, fetchData }; + }, + data() { + return { + // 鐩戞祴璁惧绫诲瀷 + deviceType: TYPE0, + // 鐩戞祴鍥犲瓙鐨勭被鍨嬬紪鍙� + factorType: '1', + // 鐩戞祴鏁版嵁 + factorDatas: new FactorDatas(), + // 鍐冲畾缁樺埗3D鍥惧舰鏃舵槸鍚︿笌鍘熷浘鍍忓悎骞� + merge: false, + // 鍐冲畾缁樺埗瀹�3D鍥惧舰鍚庡湴鍥捐瑙掓槸鍚﹁嚜鍔ㄥ洖涓� + setCenter: true, + // 缁樺埗妯″紡锛�0锛氳嚜鍔ㄦā寮忥紝鑷姩璁$畻褰撳墠鏁版嵁鐨勮寖鍥达紝缁樺埗鍚堥�傜殑姣斾緥锛�1锛氭墜鍔ㄦā寮忥紝鏍规嵁椤甸潰璁剧疆鐨勭粯鍥捐寖鍥磋繘琛岀粯鍒� + drawMode: 0, + searchTime: [] + }; + }, + watch: { + factorType(nValue, oValue) { + if (nValue != oValue) { + this.draw(); + } + } + }, + methods: { + 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); + // this.refreshLegend(this.factorDatas); + // this.mapMaker.setFactorType(factorType); + // if (!this.mapMaker.runStatus()) { + + Layer.drawRoadMap(this.factorDatas, e, this.merge, this.setCenter); + // } + }, + drawMassMarks(e) { + marks.drawMassMarks(this.factorDatas, e, () => { + // 鏌ヨ鑼冨洿鍐呯殑鐩戞祴绔欑偣 + // SceneUtil.searchByCoordinate(lnglat[0], lnglat[1], distance); + // 3. 瓒嬪娍鍥捐烦杞畾浣� + // const progress = FChart.locate(lineChart.chart, lineChart.option, i, _factor.factorName); + // 4. 琛ㄦ牸鏁版嵁璺宠浆瀹氫綅 + // Table.locate(i); + }); + }, + 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, + type, + 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); + const e = new Date(res.data[res.data.length - 1].time); + this.searchTime = [s, e]; + } + this.onFetchData(TYPE0, res.data); + }); + }); + } + }, + mounted() { + this.fetchRealTimeData(); + } }; </script> +<style scoped> +.p-events-auto { + /* background-color: antiquewhite; */ + /* padding-top: 1px; */ +} +</style> -- Gitblit v1.9.3