From 234c83d83c8835667c97c962d201ab4a3ce868b8 Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期三, 25 十二月 2024 17:47:45 +0800 Subject: [PATCH] 数据获取逻辑迁移至stores --- src/views/satellitetelemetry/SatelliteTelemetry copy.vue | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 149 insertions(+), 0 deletions(-) diff --git a/src/views/satellitetelemetry/SatelliteTelemetry copy.vue b/src/views/satellitetelemetry/SatelliteTelemetry copy.vue new file mode 100644 index 0000000..77117f5 --- /dev/null +++ b/src/views/satellitetelemetry/SatelliteTelemetry copy.vue @@ -0,0 +1,149 @@ +<template> + <div> + <!-- <el-button + class="p-events-auto" + type="info" + icon="Memo" + plain + @click="draw" + > + 缁樺埗缃戞牸 + </el-button> --> + <SatelliteManage + class="satellite-manage" + :gridDataList="gridDataList" + :loading="loading" + @search="onSearch" + @row-click="handleRowClick" + ></SatelliteManage> + <el-row class="historical" justify="center"> + <SatelliteAnimation + :loading="animaLoading" + :grid-data="gridDataDetailList" + :mapViews="mapViews" + ></SatelliteAnimation> + </el-row> + </div> +</template> +<script setup> +import { map } from '@/utils/map/index_old'; +import calculate from '@/utils/map/calculate'; +import marks from '@/utils/map/marks'; +import grid from '@/utils/map/grid'; + +import { ref } from 'vue'; +import gridApi from '@/api/gridApi'; +import SatelliteManage from './component/SatelliteManage.vue'; +import SatelliteProxy from './SatelliteProxy'; +import { useFetchData } from '@/composables/fetchData'; +import { useSatelliteGridStore } from '@/stores/satellite-grid'; + +const satelliteGridStore = useSatelliteGridStore(); +const { loading, fetchData } = useFetchData(10000); +const animaLoading = ref(true); +// 缃戞牸淇℃伅 +let gridInfo = []; +// 缃戞牸鏁版嵁缁� +const gridDataList = ref([]); +let count = 0, + max = 0; +// 缃戞牸鏁版嵁璇︽儏 +const gridDataDetailMap = new Map(); +const gridDataDetailList = ref([]); +// 鍦板浘缃戞牸鐩稿叧瀵硅薄 +let mapViews; + +// 鏌ヨ缃戞牸淇℃伅鍜岄仴鎰熸暟鎹粍 +function onSearch(options) { + fetchGridCell(options.id); + fetchGridData(options.id); +} + +// 鑾峰彇缃戞牸淇℃伅 +function fetchGridCell(groupId) { + return fetchData(() => { + return gridApi.fetchGridCell(groupId).then((res) => { + gridInfo = res.data; + drawGrid(gridInfo); + }); + }); +} + +// 鑾峰彇閬ユ劅鏁版嵁缁� +function fetchGridData(groupId) { + return gridApi.fetchGridData(groupId).then((res) => { + gridDataList.value = res.data; + count = 0; + max = res.data.length; + fetchGridDataDetail(res.data); + }); +} + +function fetchGridDataDetail(dataList) { + dataList.forEach((d) => { + gridApi.fetchGridDataDetail(d.id, d.groupId).then((res) => { + gridDataDetailMap.set(d.id, res.data); + // const gridData = res.data; + // drawTextAndColor(gridData); + finish(); + }); + }); +} + +function finish() { + count++; + if (count == max) { + animaLoading.value = false; + const list = []; + gridDataDetailMap.forEach((value, key) => { + list.push(value); + }); + + gridDataDetailList.value = list.sort((a, b) => { + return a.dataId - b.dataId; + }); + console.log(gridDataDetailList.value); + } +} + +function drawGrid(gridInfo) { + SatelliteProxy.clearAll(mapViews); + mapViews = SatelliteProxy.drawPolyline(gridInfo); +} + +// 缁樺埗缃戞牸閬ユ劅鏁版嵁鍊煎拰缃戞牸棰滆壊 +function drawTextAndColor(gridData) { + // SatelliteProxy.clearText(mapViews); + // 鏂囨湰鏍囪 + mapViews.textViews = SatelliteProxy.drawDataText( + mapViews.points, + gridData, + mapViews.textViews + ); + SatelliteProxy.drawColor(mapViews.gridViews, gridData); +} + +function handleRowClick(row) { + if (gridDataDetailMap.has(row.id)) { + const gridData = gridDataDetailMap.get(row.id); + drawTextAndColor(gridData); + } else { + gridApi.fetchGridDataDetail(row.id, row.groupId).then((res) => { + gridDataDetailMap.set(row.id, res.data); + const gridData = res.data; + drawTextAndColor(gridData); + }); + } +} +</script> +<style scoped> +.satellite-manage { +} + +.historical { + position: absolute; + bottom: 10px; + left: 0; + right: 0; +} +</style> -- Gitblit v1.9.3