package.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/gridApi.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components.d.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/stores/satellite-grid.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/map/grid-animation.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/map/grid.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/satellitetelemetry/SatelliteTelemetry copy.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/satellitetelemetry/SatelliteTelemetry.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
package.json
@@ -5,9 +5,7 @@ "type": "module", "scripts": { "dev": "vite", "dev:jingan": "vite --mode development.jingan", "build": "vite build", "build:jingan": "vite build --mode production.jingan", "preview": "vite preview", "test:unit": "vitest", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", src/api/gridApi.js
@@ -26,6 +26,9 @@ }, /** * * * * è·åç½æ ¼ç»ä¸ç饿µæ°æ® * @param {*} groupId * @param {*} dataTime src/components.d.ts
@@ -33,19 +33,14 @@ ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: (typeof import('element-plus/es'))['ElInputNumber'] ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopover: typeof import('element-plus/es')['ElPopover'] ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] ElSlider: typeof import('element-plus/es')['ElSlider'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElText: typeof import('element-plus/es')['ElText'] ElUpload: typeof import('element-plus/es')['ElUpload'] FactorCheckbox: typeof import('./components/monitor/FactorCheckbox.vue')['default'] FactorLegend: typeof import('./components/monitor/FactorLegend.vue')['default'] FactorRadio: typeof import('./components/monitor/FactorRadio.vue')['default'] src/stores/satellite-grid.js
@@ -4,15 +4,40 @@ import { useFetchData } from '@/composables/fetchData'; // 嫿饿µç½æ ¼ export const usesatelliteGridStore = defineStore('satelliteGrid', () => { const gridGropiList = ref([]); const { loading, fetchData } = useFetchData(); export const useSatelliteGridStore = defineStore('satelliteGrid', () => { // ç½æ ¼ä¿¡æ¯ const gridInfo = ref([]); // ç½æ ¼æ°æ®ç» const gridDataList = ref([]); function fetchGridGroup(area) { return fetchData((page, pageSize) => { return gridApi.fetchGridGroup(area, page, pageSize).then((res) => { return res; }); // è·åç½æ ¼ä¿¡æ¯ function fetchGridCell(groupId) { return gridApi.fetchGridCell(groupId).then((res) => { gridInfo.value = res.data; }); } // è·å饿µåæ¥æ°æ®ä¿¡æ¯ function fetchGridData(groupId) { return gridApi.fetchGridData(groupId).then((res) => { gridDataList.value = res.data; }); } // è·å饿µåæ¥å ·ä½ç½æ ¼çæµæ°æ® function fetchGridDataDetail(gridData) { return gridApi .fetchGridDataDetail(gridData.id, gridData.groupId) .then((res) => { gridData.dataDetail = res.data; }); } return { gridInfo, gridDataList, fetchGridCell, fetchGridData, fetchGridDataDetail }; }); src/utils/map/grid-animation.js
@@ -6,7 +6,8 @@ function GridAnimation() { // 帧å¨ç»æ§å¶å·¥å · this.frameAnimation = new FrameAnimation(); this.frameAnimation.fps = 6; this.frameAnimation.fps = 4; this.frameAnimation.timeout = 1000; // å°å¾ç»å¶å¾å½¢ç¼å this.mapViews = {}; // 两天ä¹é´ç嫿饿µå¨ç»ææ¾æ¶é´ src/utils/map/grid.js
@@ -185,6 +185,26 @@ }, drawGridColor(gridViews, texts, factorName) { // new Promise((resolve, reject) => { // gridViews.forEach((g, i) => { // const data = parseFloat(texts[i]); // const { color, nextColor, range, nextRange } = // Legend.getStandardColorAndNext(factorName, data); // const ratio = (data - range) / (nextRange - range); // const _color = getColorBetweenTwoColors( // color.map((v) => v * 255), // nextColor.map((v) => v * 255), // ratio // ); // resolve({ g, _color, color }); // }); // }).then((res) => { // const { g, _color, color } = res; // g.setOptions({ // fillColor: _color, // fillOpacity: color[3] // }); // }); gridViews.forEach((g, i) => { const data = parseFloat(texts[i]); const { color, nextColor, range, nextRange } = 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> src/views/satellitetelemetry/SatelliteTelemetry.vue
@@ -11,7 +11,7 @@ </el-button> --> <SatelliteManage class="satellite-manage" :gridDataList="gridDataList" :gridDataList="satelliteGridStore.gridDataList" :loading="loading" @search="onSearch" @row-click="handleRowClick" @@ -36,13 +36,12 @@ 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; // ç½æ ¼æ°æ®è¯¦æ @@ -53,28 +52,10 @@ // æ¥è¯¢ç½æ ¼ä¿¡æ¯åé¥ææ°æ®ç» 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); }); satelliteGridStore.fetchGridCell(options.id).then(() => { drawGrid(satelliteGridStore.gridInfo); }); } // è·åé¥ææ°æ®ç» function fetchGridData(groupId) { return gridApi.fetchGridData(groupId).then((res) => { gridDataList.value = res.data; count = 0; max = res.data.length; fetchGridDataDetail(res.data); }); satelliteGridStore.fetchGridData(options.id); } function fetchGridDataDetail(dataList) {