From 8372d022614a1897120802cf1bac90d61651177f Mon Sep 17 00:00:00 2001 From: riku <risaku@163.com> Date: 星期五, 14 三月 2025 18:20:56 +0800 Subject: [PATCH] 2025.3.14 --- src/views/satellitetelemetry/SatelliteTelemetry.vue | 222 ++++++++++++++++++++++--------------------------------- 1 files changed, 90 insertions(+), 132 deletions(-) diff --git a/src/views/satellitetelemetry/SatelliteTelemetry.vue b/src/views/satellitetelemetry/SatelliteTelemetry.vue index 188b0f1..f691e4a 100644 --- a/src/views/satellitetelemetry/SatelliteTelemetry.vue +++ b/src/views/satellitetelemetry/SatelliteTelemetry.vue @@ -1,52 +1,40 @@ <template> - <el-row class="wrap"> - <el-col span="2"> - <!-- <div class="p-events-auto"> - <el-button - type="primary" - class="el-button-custom" - size="small" - @click="previousGrid" - > - 涓婁竴涓� - </el-button> - <el-button - type="primary" - class="el-button-custom" - size="small" - @click="nextGrid" - > - 涓嬩竴涓� - </el-button> - </div> --> - <el-row> - <SatelliteManage - v-show="show" - class="satellite-manage" - :gridDataList="satelliteGridStore.gridDataList" - :loading="loading" - @search="onSearch" - @row-click="handleRowClick" - @show-rank="handleRankClick" - @show-data="handleDataClick" - @change-color="handleColorClick" - @change-opacity="handleOpacityClick" - ></SatelliteManage> - </el-row> - </el-col> - <el-col span="2"> - <el-row> - <CardButton - name="鍗槦閬ユ祴鏁版嵁" - direction="right" - @click="() => (show = !show)" - ></CardButton> - </el-row> - </el-col> + <el-row justify="space-between"> + <el-row class="wrap"> + <el-col span="2"> + <el-row> + <SatelliteManage + v-show="show" + class="satellite-manage" + :gridDataList="satelliteGridStore.gridDataList" + :loading="loading" + @search="onSearch" + @row-click="handleRowClick" + ></SatelliteManage> + </el-row> + </el-col> + <el-col span="2"> + <el-row> + <CardButton + name="鍗槦閬ユ祴鏁版嵁" + direction="right" + @click="() => (show = !show)" + ></CardButton> + </el-row> + <el-row class="flex-col"> + <GridStyleTool + @show-rank="handleRankClick" + @show-data="handleDataClick" + @change-color="handleColorClick" + @change-opacity="handleOpacityClick" + ></GridStyleTool> + </el-row> + </el-col> + </el-row> + <GridTool></GridTool> </el-row> - <SatelliteDataMix class="data-mix" @mix-data="handleMixDataClick"> - </SatelliteDataMix> - <SatelliteMixTool :group-id="3"></SatelliteMixTool> + <!-- <SatelliteDataMix class="data-mix" @mix-data="handleMixDataClick"> + </SatelliteDataMix> --> <!-- <el-row class="historical" justify="center"> <SatelliteAnimation @@ -57,24 +45,27 @@ </el-row> --> </template> <script setup> -import { map, onMapMounted } 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, onMounted } from 'vue'; import gridApi from '@/api/gridApi'; import SatelliteManage from './component/SatelliteManage.vue'; -import SatelliteDataMix from './component/SatelliteDataMix.vue'; -import SatelliteMixTool from './component/SatelliteMixTool.vue'; -import SatelliteProxy from './SatelliteProxy'; +import moment from 'moment'; +import GridStyleTool from './component/GridStyleTool.vue'; +import { SatelliteProxy } from './SatelliteProxy'; import { useFetchData } from '@/composables/fetchData'; import { useSatelliteGridStore } from '@/stores/satellite-grid'; import { useSceneStore } from '@/stores/scene'; +import { useGridStore } from '@/stores/grid-info'; -const satelliteGridStore = useSatelliteGridStore(); -const { loading, fetchData } = useFetchData(10000); +const satelliteProxy = new SatelliteProxy(); + +const gridStore = useGridStore(); +gridStore.selectedSatelliteProxy = satelliteProxy; +gridStore.pushGridClz(satelliteProxy); + const sceneStore = useSceneStore(); +const satelliteGridStore = useSatelliteGridStore(); + +const { loading, fetchData } = useFetchData(10000); const animaLoading = ref(true); const show = ref(true); @@ -83,16 +74,12 @@ // 缃戞牸鏁版嵁璇︽儏 const gridDataDetailMap = new Map(); const gridDataDetailList = ref([]); -// 鍦板浘缃戞牸鐩稿叧瀵硅薄 -let mapViews; // 鏌ヨ缃戞牸淇℃伅鍜岄仴鎰熸暟鎹粍 function onSearch(options) { satelliteGridStore.fetchGridCell(options.id).then(() => { - SatelliteProxy.clearText(mapViews); - drawGrid(satelliteGridStore.gridInfo); - // initDistrict(); - SatelliteProxy.drawDistrict('闀垮畞鍖�'); + prepareGrid(satelliteGridStore.gridInfo); + satelliteProxy.drawDistrict('闀垮畞鍖�'); }); satelliteGridStore.fetchGridData(options.id).then(() => { max = satelliteGridStore.gridDataList.length; @@ -127,9 +114,8 @@ } } -function drawGrid(gridInfo) { - SatelliteProxy.clearAll(mapViews); - mapViews = SatelliteProxy.drawPolyline(gridInfo, (polygon) => { +function prepareGrid(gridInfo) { + satelliteProxy.gridPrepare(gridInfo, (polygon) => { //榧犳爣绉诲叆浜嬩欢 polygon.on('mouseover', () => { polygon.setOptions({ @@ -146,90 +132,62 @@ }); }); //榧犳爣鐐瑰嚮浜嬩欢 - polygon.on('click', () => { - const [lng, lat] = polygon.getExtData(); - sceneStore.radius = 0.5; - sceneStore.searchScene(lng, lat); - }); + // polygon.on('click', () => { + // const [lng, lat] = polygon.getExtData(); + // sceneStore.radius = 0.5; + // sceneStore.searchScene(lng, lat); + // }); + }); + satelliteProxy.setGridEvent('click', (e) => { + const polygon = e.target; + const { gridCell } = polygon.getExtData(); + const cellIndex = gridCell.cellIndex; + const gridDataDetail = + satelliteGridStore.selectedGridDataDetail[cellIndex - 1]; + gridStore.selectedGridCellAndDataDetail = { + gridCell, + gridDataDetail + }; }); } -// 缁樺埗缃戞牸閬ユ劅鏁版嵁鍊煎拰缃戞牸棰滆壊 -function drawTextAndColor(gridData) { - // SatelliteProxy.clearText(mapViews); - const { resGridViews, pointsRes } = SatelliteProxy.drawColor({ - gridViews: mapViews.gridViews, - points: mapViews.points, - gridDataDetail: gridData, - lastGridViews: mapViews.lastGridViews +function drawGrid(useCustomColor) { + satelliteProxy.changeVisibility({ + showGridViews: false, + showDataTxt: false, + showRankTxt: false }); - mapViews.lastGridViews = resGridViews; - mapViews.lastPoints = pointsRes; - // 鏂囨湰鏍囪 - const { textViews: dataTxt, labelsLayer: dataLayer } = - SatelliteProxy.drawDataText( - mapViews.lastPoints, - gridData, - mapViews.dataTxt, - mapViews.dataLayer - ); - mapViews.dataTxt = dataTxt; - mapViews.dataLayer = dataLayer; - const { textViews: rankTxt, labelsLayer: rankLayer } = - SatelliteProxy.drawRankText( - mapViews.lastPoints, - gridData, - mapViews.rankTxt, - mapViews.rankLayer - ); - mapViews.rankTxt = rankTxt; - mapViews.rankLayer = rankLayer; + satelliteProxy.drawTagGrid({ + tag: satelliteGridStore.selectedGridData.id, + gridDataDetail: satelliteGridStore.selectedGridDataDetail, + useCustomColor, + useDataTxtColor: true, + extData: { + name: `鍗槦閬ユ祴鏁版嵁 - ${moment(satelliteGridStore.selectedGridData).format('YYYY-MM-DD')}` + } + }); } -let selectedGridData; function handleRowClick(row) { - if (gridDataDetailMap.has(row.id)) { - const gridData = gridDataDetailMap.get(row.id); - selectedGridData = gridData; - drawTextAndColor(gridData); - } else { - gridApi.fetchGridDataDetail(row.id, row.groupId).then((res) => { - gridDataDetailMap.set(row.id, res.data); - const gridData = res.data; - selectedGridData = gridData; - drawTextAndColor(gridData); - }); - } + satelliteGridStore.fetchGridDataDetail(row, () => { + drawGrid(); + }); } function handleRankClick(rankVisible) { - // rankVisible ? map.add(mapViews.rankLayer) : map.remove(mapViews.rankLayer); - rankVisible ? map.add(mapViews.rankTxt) : map.remove(mapViews.rankTxt); + satelliteProxy.changeVisibility({ showRankTxt: rankVisible }); } function handleDataClick(dataVisible) { - // dataVisible ? map.add(mapViews.dataLayer) : map.remove(mapViews.dataLayer); - dataVisible ? map.add(mapViews.dataTxt) : map.remove(mapViews.dataTxt); + satelliteProxy.changeVisibility({ showDataTxt: dataVisible }); } function handleColorClick(isStandardColor) { - const { resGridViews, pointsRes } = SatelliteProxy.drawColor({ - gridViews: mapViews.gridViews, - points: mapViews.points, - gridDataDetail: selectedGridData, - lastGridViews: mapViews.lastGridViews, - customColor: !isStandardColor - }); - mapViews.lastGridViews = resGridViews; - mapViews.lastPoints = pointsRes; + drawGrid(!isStandardColor); } -function handleOpacityClick(isOpacity) { - mapViews.lastGridViews.forEach((e) => { - e.setOptions({ - fillOpacity: isOpacity ? 0.1 : 0.7 - }); - }); +function handleOpacityClick(value) { + satelliteProxy.changeGridOpacity({ opacityValue: value }); } function handleMixDataClick(gridData) { -- Gitblit v1.9.3