数据大屏gs

This commit is contained in:
lzc 2025-03-27 16:04:07 +08:00
parent c525285857
commit 5d7a386a75
36 changed files with 1977 additions and 501 deletions

View File

@ -44,6 +44,7 @@
"screenfull": "^6.0.2", "screenfull": "^6.0.2",
"vite-plugin-svg-icons": "^2.0.1", "vite-plugin-svg-icons": "^2.0.1",
"vue": "^3.5.11", "vue": "^3.5.11",
"vue-cesium": "^3.2.9",
"vue-router": "^4.2.5" "vue-router": "^4.2.5"
}, },
"devDependencies": { "devDependencies": {

View File

@ -6,7 +6,6 @@
<script setup name="App"> <script setup name="App">
import { reactive, provide, nextTick } from 'vue'; import { reactive, provide, nextTick } from 'vue';
const state = reactive({ const state = reactive({
isRouterAlive: true, isRouterAlive: true,
}); });

View File

@ -0,0 +1,84 @@
<template>
<div ref="chartRef" :style="{ height, width }"></div>
</template>
<script>
import { ref, reactive, watch, watchEffect } from 'vue';
import { cloneDeep } from 'lodash';
import { useEcharts } from '../../hooks/useEcharts';
export default {
name: 'CustomEchartMaps',
props: {
chartData: {
type: Array,
default: () => [],
},
size: {
type: Object,
default: () => {},
},
option: {
type: Object,
default: () => ({}),
},
width: {
type: String,
default: '100%',
},
geo: {
type: Object,
default: () => {
return {};
},
},
name: {
type: String,
default: '',
},
height: {
type: String,
default: 'calc(100vh - 78px)',
},
},
emits: ['click'],
setup(props, { emit }) {
const chartRef = ref(null);
const { setOptions, getInstance, resize, registerMap } = useEcharts(chartRef);
const option = reactive({
// series: [],
});
watchEffect(() => {
props.chartData && initCharts();
});
watch(
() => props.size,
() => {
resize();
},
{
immediate: true,
}
);
function initCharts() {
if (props.option) {
Object.assign(option, cloneDeep(props.option));
}
// option.series = props.chartData;
setOptions(option);
registerMap(props.name, props.geo);
resize();
getInstance()?.off('click', onClick);
getInstance()?.on('click', onClick);
}
function onClick(params) {
emit('click', params);
}
return { chartRef };
},
};
</script>

View File

@ -18,6 +18,7 @@ import CustomEchartWaterDroplet from './custom-echart-water-droplet';
import CustomEchartPieGauge from './custom-echart-pie-gauge'; import CustomEchartPieGauge from './custom-echart-pie-gauge';
import CustomEchartWordCloud from './custom-echart-word-cloud'; import CustomEchartWordCloud from './custom-echart-word-cloud';
import customEchartScatterBlister from './custom-echart-scatter-blister'; import customEchartScatterBlister from './custom-echart-scatter-blister';
import customEchartMaps from './custom-echart-maps';
export { export {
SvgIcon, SvgIcon,
@ -40,4 +41,5 @@ export {
CustomEchartPieGauge, CustomEchartPieGauge,
CustomEchartWordCloud, CustomEchartWordCloud,
customEchartScatterBlister, customEchartScatterBlister,
customEchartMaps,
}; };

View File

@ -73,6 +73,19 @@ export const useEcharts = (elRef, theme = 'default') => {
chartInstance?.resize(); chartInstance?.resize();
} }
/**
* 注册地图数据
* @param {string} mapName - 地图名称
* @param {object} geoJSON - GeoJSON 数据
*/
function registerMap(mapName, geoJSON) {
if (!mapName || !geoJSON) {
console.warn('地图名称或 GeoJSON 数据无效');
return;
}
echarts.registerMap(mapName, geoJSON);
}
watch( watch(
() => getDarkMode.value, () => getDarkMode.value,
(theme) => { (theme) => {
@ -103,5 +116,6 @@ export const useEcharts = (elRef, theme = 'default') => {
resize, resize,
echarts, echarts,
getInstance, getInstance,
registerMap,
}; };
}; };

View File

@ -10,8 +10,21 @@ import '@smallwei/avue/lib/index.css';
import { registerGlobalMicroApps } from './micro'; import { registerGlobalMicroApps } from './micro';
import { registerElIcons } from './plugins/icon'; import { registerElIcons } from './plugins/icon';
import './utils/permission'; import './utils/permission';
// import VueCesium from 'vue-cesium';
// import 'vue-cesium/dist/index.css';
// import { VcViewer } from 'vue-cesium';
const app = createApp(App); const app = createApp(App);
app.use(pinia).use(router).use(ElementPlus).use(Avue).mount('#root'); app
.use(pinia)
.use(router)
.use(ElementPlus)
.use(Avue)
// .use(VueCesium, {
// cesiumPath: 'https://cdn.bootcdn.net/ajax/libs/cesium/1.69.0/Cesium.js',
// accessToken:
// 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0ZTNkNmE0MS03MjVmLTRjYjEtYjY0ZS0xOTYxZGQ5NmEwOWYiLCJpZCI6MjI1MTM2LCJpYXQiOjE3NDMwNDY5MDB9.uNWADbo2Ol2hip2BopPzk4LYAAsExE_POBasweIbYBk',
// })
.mount('#root');
registerElIcons(app); registerElIcons(app);
registerGlobalMicroApps(); registerGlobalMicroApps();

View File

@ -1,6 +1,17 @@
import * as echarts from 'echarts/core'; import * as echarts from 'echarts/core';
import { BarChart, LineChart, PieChart, MapChart, PictorialBarChart, RadarChart, GraphChart, GaugeChart, ScatterChart } from 'echarts/charts'; import {
BarChart,
LineChart,
PieChart,
MapChart,
PictorialBarChart,
RadarChart,
GraphChart,
GaugeChart,
ScatterChart,
EffectScatterChart,
} from 'echarts/charts';
import 'echarts-gl'; import 'echarts-gl';
import 'echarts-liquidfill'; import 'echarts-liquidfill';
import 'echarts-wordcloud'; import 'echarts-wordcloud';
@ -49,6 +60,7 @@ echarts.use([
GraphChart, GraphChart,
GaugeChart, GaugeChart,
ScatterChart, ScatterChart,
EffectScatterChart,
]); ]);
export default echarts; export default echarts;

View File

@ -2,6 +2,11 @@
# yarn lockfile v1 # yarn lockfile v1
"@amap/amap-jsapi-loader@^1.0.1":
version "1.0.1"
resolved "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz#9ec4b4d5d2467eac451f6c852e35db69e9f9f0c0"
integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==
"@ampproject/remapping@^2.2.0": "@ampproject/remapping@^2.2.0":
version "2.3.0" version "2.3.0"
resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
@ -698,6 +703,34 @@
resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@turf/circle@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/circle/-/circle-6.5.0.tgz#dc017d8c0131d1d212b7c06f76510c22bbeb093c"
integrity sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==
dependencies:
"@turf/destination" "^6.5.0"
"@turf/helpers" "^6.5.0"
"@turf/destination@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/destination/-/destination-6.5.0.tgz#30a84702f9677d076130e0440d3223ae503fdae1"
integrity sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==
dependencies:
"@turf/helpers" "^6.5.0"
"@turf/invariant" "^6.5.0"
"@turf/helpers@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e"
integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==
"@turf/invariant@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f"
integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==
dependencies:
"@turf/helpers" "^6.5.0"
"@types/eslint@^8.4.5": "@types/eslint@^8.4.5":
version "8.56.12" version "8.56.12"
resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a" resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a"
@ -939,7 +972,7 @@
"@vue/compiler-ssr" "3.5.13" "@vue/compiler-ssr" "3.5.13"
"@vue/shared" "3.5.13" "@vue/shared" "3.5.13"
"@vue/shared@3.5.13": "@vue/shared@3.5.13", "@vue/shared@^3.2.47":
version "3.5.13" version "3.5.13"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
@ -1066,6 +1099,11 @@
resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532" resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532"
integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg== integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==
"@zouyaoji/heatmap.js@^2.0.8":
version "2.0.8"
resolved "https://registry.npmmirror.com/@zouyaoji/heatmap.js/-/heatmap.js-2.0.8.tgz#5f6b285e7635ca07f2ecdb3d83a9dc1d240433d7"
integrity sha512-kBQny/zOUFH2OFoVyu6IdGJEcQMENIAASUsaZhk+OuJ9WexsYf6EU2lCyGURcsFly1kTMZKODlV7nBTCgfvJqg==
acorn-jsx@^5.3.2: acorn-jsx@^5.3.2:
version "5.3.2" version "5.3.2"
resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@ -1742,6 +1780,11 @@ commander@~12.1.0:
resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" resolved "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
compare-versions@^6.1.0:
version "6.1.1"
resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9"
integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==
component-emitter@^1.2.1: component-emitter@^1.2.1:
version "1.3.1" version "1.3.1"
resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17"
@ -2200,7 +2243,7 @@ echarts-wordcloud@^2.1.0:
resolved "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz#c3de6fe267044f6c3343e4ff0e05eedb01c05096" resolved "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz#c3de6fe267044f6c3343e4ff0e05eedb01c05096"
integrity sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ== integrity sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==
echarts@^5.6.0: echarts@^5.4.3, echarts@^5.6.0:
version "5.6.0" version "5.6.0"
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6" resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA== integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==
@ -3976,6 +4019,11 @@ jszip@^3.10.1:
readable-stream "~2.3.6" readable-stream "~2.3.6"
setimmediate "^1.0.5" setimmediate "^1.0.5"
kdbush@^4.0.2:
version "4.0.2"
resolved "https://registry.npmmirror.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39"
integrity sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==
keyv@^4.5.3, keyv@^4.5.4: keyv@^4.5.3, keyv@^4.5.4:
version "4.5.4" version "4.5.4"
resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
@ -4132,7 +4180,7 @@ lodash-es@^4.17.21:
resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash-unified@^1.0.2: lodash-unified@^1.0.2, lodash-unified@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894" resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ== integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
@ -4352,6 +4400,11 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
mgrs@1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/mgrs/-/mgrs-1.0.0.tgz#fb91588e78c90025672395cb40b25f7cd6ad1829"
integrity sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==
micromatch@3.1.0: micromatch@3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2"
@ -4461,6 +4514,11 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
mitt@^3.0.1:
version "3.0.1"
resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mixin-deep@^1.2.0: mixin-deep@^1.2.0:
version "1.3.2" version "1.3.2"
resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
@ -5227,6 +5285,14 @@ progress@^2.0.3:
resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
proj4@^2.9.1:
version "2.15.0"
resolved "https://registry.npmmirror.com/proj4/-/proj4-2.15.0.tgz#d77c9956861c8ed516071c4208d576cebe800eb5"
integrity sha512-LqCNEcPdI03BrCHxPLj29vsd5afsm+0sV1H/O3nTDKrv8/LA01ea1z4QADDMjUqxSXWnrmmQDjqFm1J/uZ5RLw==
dependencies:
mgrs "1.0.0"
wkt-parser "^1.4.0"
proxy-from-env@^1.1.0: proxy-from-env@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
@ -6780,6 +6846,11 @@ uri-js@^4.2.2:
dependencies: dependencies:
punycode "^2.1.0" punycode "^2.1.0"
urijs@^1.19.11:
version "1.19.11"
resolved "https://registry.npmmirror.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc"
integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==
urix@^0.1.0: urix@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@ -6923,6 +6994,25 @@ vite@^5.0.8:
optionalDependencies: optionalDependencies:
fsevents "~2.3.3" fsevents "~2.3.3"
vue-cesium@^3.2.9:
version "3.2.9"
resolved "https://registry.npmmirror.com/vue-cesium/-/vue-cesium-3.2.9.tgz#67b9dcbb4ed8e228fde886b957d0f4b4a3e388ba"
integrity sha512-MOgxAfIL+qYT608n+Bqioz2NbAM9pTWztzZ2gOqfHMxNeOFGROCUFatrzCP/OhndeEH8hbqdnGyxt1bHV9+dzQ==
dependencies:
"@amap/amap-jsapi-loader" "^1.0.1"
"@turf/circle" "^6.5.0"
"@vue/shared" "^3.2.47"
"@zouyaoji/heatmap.js" "^2.0.8"
compare-versions "^6.1.0"
echarts "^5.4.3"
kdbush "^4.0.2"
lodash "^4.17.21"
lodash-es "^4.17.21"
lodash-unified "^1.0.3"
mitt "^3.0.1"
proj4 "^2.9.1"
urijs "^1.19.11"
vue-demi@*, vue-demi@^0.14.10: vue-demi@*, vue-demi@^0.14.10:
version "0.14.10" version "0.14.10"
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04" resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
@ -7047,6 +7137,11 @@ wildcard@^1.1.0:
resolved "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5" resolved "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5"
integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng== integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==
wkt-parser@^1.4.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/wkt-parser/-/wkt-parser-1.4.0.tgz#7cca07a6ee5b4baf059b723e62d7fe95bc923bf5"
integrity sha512-qpwO7Ihds/YYDTi1aADFTI1Sm9YC/tTe3SHD24EeIlZxy7Ik6a1b4HOz7jAi0xdUAw487duqpo8OGu+Tf4nwlQ==
word-wrap@^1.2.5: word-wrap@^1.2.5:
version "1.2.5" version "1.2.5"
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"

View File

@ -5531,6 +5531,11 @@ split-string@^3.0.1, split-string@^3.0.2:
dependencies: dependencies:
extend-shallow "^3.0.0" extend-shallow "^3.0.0"
splitpanes@^4.0.3:
version "4.0.3"
resolved "https://registry.npmmirror.com/splitpanes/-/splitpanes-4.0.3.tgz#342c2b57d906371c2ab44b4578333fbeb13aaa94"
integrity sha512-S/f1CoH2JroOib7kzQtTQNtQCa7VzNQ2qKOO5HNj/5EVVcNkfz1eX/sH+X3XKdBdDLihEKDekVGwrLADd2oirA==
sprintf-js@~1.0.2: sprintf-js@~1.0.2:
version "1.0.3" version "1.0.3"
resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"

View File

@ -9,7 +9,9 @@ declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
BaseBg: typeof import('./src/components/baseBg.vue')['default'] BaseBg: typeof import('./src/components/baseBg.vue')['default']
CenterMap: typeof import('./src/components/centerMap.vue')['default'] CenterMap: typeof import('./src/components/centerMap.vue')['default']
CenterMapold: typeof import('./src/components/centerMapold.vue')['default']
CodeDialog: typeof import('./src/components/code-dialog/index.vue')['default'] CodeDialog: typeof import('./src/components/code-dialog/index.vue')['default']
copy: typeof import('./src/components/centerMap copy.vue')['default']
CurrentTime: typeof import('./src/components/currentTime.vue')['default'] CurrentTime: typeof import('./src/components/currentTime.vue')['default']
CustomBack: typeof import('./src/components/customBack.vue')['default'] CustomBack: typeof import('./src/components/customBack.vue')['default']
CustomCard: typeof import('./src/components/CustomCard.vue')['default'] CustomCard: typeof import('./src/components/CustomCard.vue')['default']

View File

@ -32,6 +32,7 @@
"pinia-plugin-persistedstate": "^3.2.1", "pinia-plugin-persistedstate": "^3.2.1",
"screenfull": "^6.0.2", "screenfull": "^6.0.2",
"vue": "^3.3.11", "vue": "^3.3.11",
"vue-cesium": "^3.2.9",
"vue-router": "^4.2.5", "vue-router": "^4.2.5",
"vue3-scroll-seamless": "^1.0.6" "vue3-scroll-seamless": "^1.0.6"
}, },

View File

@ -19,6 +19,11 @@ import { useSettingStore } from '@/store/modules/setting';
import zhCn from 'element-plus/es/locale/lang/zh-cn'; import zhCn from 'element-plus/es/locale/lang/zh-cn';
import currentTime from '@/components/currentTime.vue'; import currentTime from '@/components/currentTime.vue';
import { createApp } from 'vue';
import App from './App.vue';
import VueCesium from 'vue-cesium';
import 'vue-cesium/dist/index.css';
const SettingStore = useSettingStore(); const SettingStore = useSettingStore();
// //
const size = computed(() => SettingStore.themeConfig.globalComSize); const size = computed(() => SettingStore.themeConfig.globalComSize);
@ -32,6 +37,14 @@ let apptime = ref(null);
// onUnmounted(() => { // onUnmounted(() => {
// apptime.value && apptime.value.chearTime(); // apptime.value && apptime.value.chearTime();
// }); // });
// const app = createApp(App);
// app.use(VueCesium, {
// cesiumPath: 'https://unpkg.com/cesium@1.104.0/Build/Cesium/Cesium.js',
// accessToken:
// 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiMDhmOWQzMi1mMTQwLTQ5YzktOTZjZS1lZjVlNTQzZjY4OTAiLCJpZCI6MjI1MTM2LCJpYXQiOjE3MTk1NTMxNTl9.3tRI3yX0jZxdsdx0Gvv40FWMnVpLu8CnQ8qedEDTeqs',
// });
// app.mount('#app');
</script> </script>
<style lang="scss"> <style lang="scss">

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 717 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
<template>
<el-card body-class="custom_content_card_" :shadow="props.shadow">
<slot></slot>
</el-card>
</template>
<script setup>
const props = defineProps({
shadow: {
type: String,
default: 'never',
},
});
</script>
<style lang="scss">
.el-card:has(.custom_content_card_) {
border: none !important;
border-radius: 10px !important;
}
</style>

View File

@ -1,94 +0,0 @@
<template>
<el-select-v2
v-model="val"
:options="options"
:placeholder="props.set.placeholder"
:props="props.set.props"
:multiple="props.set.multiple"
@change="handleSelect"
/>
</template>
<script setup>
import { ref, onMounted, watch } from 'vue';
import request from '@/utils/axios';
const emit = defineEmits(['update:value']);
const props = defineProps({
set: {
type: Object,
default: () => {
return {
url: '',
options: [
{
value: '1',
label: 'label 1',
},
{
value: '2',
label: 'label 2',
},
{
value: '3',
label: 'label 3',
},
],
props: {
value: 'value',
label: 'label',
},
multiple: false,
placeholder: '请选择',
};
},
},
value: {
type: String || Array || null,
default: null,
},
});
onMounted(async () => {
if (props.set.multiple) val.value = [];
if (props.set.url) {
let res = await request(props.set.url, {
method: 'get',
data: { current: 1, size: 9999 },
});
if (res.code == 200) {
options.value = res.data.records;
}
} else {
options.value = props.set.options;
}
});
/* --------------- data --------------- */
// #region
const val = ref(null);
watch(
() => props.value,
() => {
val.value = props.value;
},
{
deep: true,
immediate: true,
}
);
const options = ref([]);
// #endregion
/* --------------- methods --------------- */
// #region
function handleSelect(val_) {
emit('update:value', val_);
}
// #endregion
</script>
<style lang="scss" scoped></style>

View File

@ -1,44 +0,0 @@
<template>
<el-select-v2 v-model="val" :options="options" placeholder="请选择网格" :props="_props" @change="handleSelect" />
</template>
<script setup>
import { ref, onMounted } from 'vue';
import { GetEntityList } from '@/apis/grid.js';
const emit = defineEmits(['update:value']);
const props = defineProps({
//
value: {
type: String || null,
default: null,
},
});
onMounted(async () => {
let res = await GetEntityList();
if (res.code == 200) {
options.value = res.data.records;
}
});
/* --------------- data --------------- */
// #region
const val = ref(null);
const options = ref([]);
const _props = {
value: 'id',
label: 'productName',
};
// #endregion
/* --------------- methods --------------- */
// #region
function handleSelect(val_) {
emit('update:value', val_);
}
// #endregion
</script>
<style lang="scss" scoped></style>

View File

@ -1,60 +0,0 @@
<template>
<el-select v-model="val" @change="change">
<el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder">
{{ item.label }}
</el-option>
</el-select>
</template>
<script setup>
import { ref, watch } from 'vue';
const props = defineProps({
//
value: {
type: String || Number || null,
default: null,
},
placeholder: {
type: String,
default: '请选择',
},
});
const emit = defineEmits(['update:value']);
/* --------------- data --------------- */
// #region
const val = ref(null);
watch(
() => props.value,
() => {
val.value = props.value || props.value == 0 ? String(props.value) : null;
},
{
deep: true,
immediate: true,
}
);
const options = ref([
{ label: '耕地', value: '0' },
{ label: '果园', value: '1' },
{ label: '茶园', value: '2' },
{ label: '其他园地', value: '3' },
{ label: '林地', value: '4' },
{ label: '草地', value: '5' },
{ label: '其他农用地', value: '6' },
{ label: '农村宅基地', value: '7' },
]);
// #endregion
/* --------------- methods --------------- */
// #region
function change(val_) {
val.value = val_;
emit('update:value', val_);
}
// #endregion
</script>
<style lang="scss" scoped></style>

View File

@ -1,54 +0,0 @@
<template>
<el-select v-model="val" @change="change">
<el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder">
{{ item.label }}
</el-option>
</el-select>
</template>
<script setup>
import { ref, watch } from 'vue';
const props = defineProps({
//
value: {
type: String || Number || null,
default: null,
},
placeholder: {
type: String,
default: '请选择',
},
});
const emit = defineEmits(['update:value']);
/* --------------- data --------------- */
// #region
const val = ref(null);
watch(
() => props.value,
() => {
val.value = props.value || props.value == 0 ? String(props.value) : null;
},
{
deep: true,
immediate: true,
}
);
const options = ref([
{ label: '是', value: '0' },
{ label: '否', value: '1' },
]);
// #endregion
/* --------------- methods --------------- */
// #region
function change(val_) {
val.value = val_;
emit('update:value', val_);
}
// #endregion
</script>
<style lang="scss" scoped></style>

View File

@ -1,55 +0,0 @@
<template>
<el-select v-model="val" @change="change">
<el-option v-for="item in options" :key="`land_type_${item.value}`" :value="item.value" :label="item.label" :placeholder="props.placeholder">
{{ item.label }}
</el-option>
</el-select>
</template>
<script setup>
import { ref, watch } from 'vue';
const props = defineProps({
//
value: {
type: String || Number || null,
default: null,
},
placeholder: {
type: String,
default: '请选择',
},
});
const emit = defineEmits(['update:value']);
/* --------------- data --------------- */
// #region
const val = ref(null);
watch(
() => props.value,
() => {
val.value = props.value || props.value == 0 ? String(props.value) : null;
},
{
deep: true,
immediate: true,
}
);
const options = ref([
{ label: '农用地', value: '0' },
{ label: '住宅用地', value: '1' },
{ label: '园林', value: '2' },
]);
// #endregion
/* --------------- methods --------------- */
// #region
function change(val_) {
val.value = val_;
emit('update:value', val_);
}
// #endregion
</script>
<style lang="scss" scoped></style>

View File

@ -1,72 +0,0 @@
<template>
<section :style="{ '--right': props.right ? 'flex-end' : 'unset' }">
<el-pagination
v-model:current-page="curPage"
v-model:page-size="curSize"
:page-sizes="[10, 20, 30, 40, 50, 100]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="curTotal"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</section>
</template>
<script setup>
import { ref, watch } from 'vue';
const props = defineProps({
pageData: {
type: Object,
default: () => {
return {
page: 1,
size: 10,
total: 0,
};
},
},
pageSizes: {
type: Array,
default: () => {
return [10, 20, 30, 40, 50, 100];
},
},
right: {
type: Boolean,
default: true,
},
});
const emit = defineEmits(['pageChange', 'sizeChange']);
const curPage = ref(1);
const curSize = ref(10);
const curTotal = ref(0);
watch(
() => props.pageData,
() => {
curPage.value = props.pageData.page || 1;
curSize.value = props.pageData.size || 10;
curTotal.value = props.pageData.total || 0;
},
{
deep: true,
immediate: true,
}
);
function handleCurrentChange(val) {
emit('pageChange', val);
}
function handleSizeChange(val) {
emit('sizeChange', val);
}
</script>
<style lang="scss" scoped>
section {
display: flex;
justify-content: var(--right);
}
</style>

View File

@ -1,27 +1,212 @@
<template> <template>
<div class="map-center-warp"> <div class="map-center-warp">
<img :src="getAssetsFile('images/vsualized/gmmap.png')" class="map-img" /> <img :src="getAssetsFile('images/vsualized/gmmap.png')" class="map-img" />
<div class="map-pos">
<custom-echart-maps :chart-data="chartsData.valData" height="100%" :option="chartsData.option" :geo="geoData" :name="mapName" />
</div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { isEmpty, getAssetsFile } from '@/utils'; import { isEmpty, getAssetsFile } from '@/utils';
import { ref, reactive, onMounted } from 'vue';
var aspectScale = 0.8807505292367753;
// var iconUrl = 'http://localhost:9529/sub-government-screen-service/src/assets/images/vsualized/home/partbg.png';
// var iconUrl = getAssetsFile('images/vsualized/gmmap.png').href;
var iconUrl = getAssetsFile('images/vsualized/gmmap2.png').href;
import geoJsonData from '../components/530926geo.json'; //
let geoData = geoJsonData;
let mapName = ref('ZJ');
const chartsData = reactive({
option: {
title: {
text: '',
left: 'center',
},
tooltip: {
trigger: 'item',
formatter: function (params) {
if (params.seriesType === 'effectScatter') {
return `${params.name}: (${params.value[0]}, ${params.value[1]})`;
}
return params.name;
},
},
toolbox: {
show: false,
orient: 'vertical',
left: 'right',
top: 'center',
feature: {
// dataView: { readOnly: false },
// restore: {},
// saveAsImage: {},
},
},
geo: {
map: mapName.value,
roam: true,
zoom: 1.1,
show: false,
itemStyle: {
normal: {
areaColor: '#1f77b4', //
borderColor: '#000', //
},
emphasis: {
areaColor: '#ff7f0e', //
borderColor: '#fff', //
},
},
},
series: [
// {
// name: '',
// type: 'map',
// mapType: mapName.value,
// roam: true,
// zoom: 1.2,
// itemStyle: {
// normal: {
// borderColor: '#000', //
// borderWidth: 1, //
// areaColor: 'transparent', //
// },
// emphasis: {
// borderColor: '#fff',
// borderWidth: 2,
// },
// },
// },
//
{
name: '闪烁散点',
type: 'effectScatter', // 使 effectScatter
coordinateSystem: 'geo',
data: [
//
{
name: '孟定镇',
value: [99.081993, 23.554045, 100], // , ,
itemStyle: {
color: '#FF0000', //
},
},
{
name: '勐永镇',
value: [99.406653, 23.534142, 80], // , ,
itemStyle: {
color: '#00FF00', //
},
},
],
symbolSize: function (val) {
return val[2] ? val[2] / 10 : 10; //
},
label: {
formatter: '{b}',
position: 'right',
show: false,
},
rippleEffect: {
period: 4, //
scale: 3, //
brushType: 'stroke', // 'stroke' 'fill'
},
hoverAnimation: false,
},
],
},
valData: [
{
name: '镇边界',
type: 'map',
mapType: mapName.value,
roam: true,
zoom: 1.2,
itemStyle: {
normal: {
borderColor: '#000', //
borderWidth: 1, //
areaColor: 'transparent', //
},
emphasis: {
borderColor: '#fff',
borderWidth: 2,
},
},
},
//
{
name: '闪烁散点',
type: 'effectScatter', // 使 effectScatter
coordinateSystem: 'geo',
data: [
//
{
name: '孟定镇',
value: [99.081993, 23.554045, 100], // , ,
itemStyle: {
color: '#FF0000', //
},
},
{
name: '勐永镇',
value: [99.406653, 23.534142, 80], // , ,
itemStyle: {
color: '#00FF00', //
},
},
],
symbolSize: function (val) {
return val[2] ? val[2] / 10 : 10; //
},
label: {
formatter: '{b}',
position: 'right',
show: false,
},
rippleEffect: {
period: 4, //
scale: 3, //
brushType: 'stroke', // 'stroke' 'fill'
},
hoverAnimation: false,
},
],
});
onMounted(() => {
console.info('iconUrl', iconUrl);
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
div {
box-sizing: border-box;
}
.map-center-warp { .map-center-warp {
width: 100%; width: 100%;
text-align: center; text-align: center;
position: relative; position: relative;
height: 100%; height: 90%;
.map-img { .map-img {
width: 80%; width: 80%;
height: 80%; height: 80%;
position: absolute; position: absolute;
bottom: 50px; bottom: 0;
left: 50%; left: 50%;
object-fit: contain; object-fit: contain;
transform: translateX(-50%); transform: translateX(-50%);
max-width: 1000px; max-width: 1000px;
max-height: 1000px; max-height: 1000px;
} }
.map-pos {
width: 80%;
height: 80%;
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
}
} }
</style> </style>

View File

@ -86,8 +86,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import InventoryCharts from './components/InventoryCharts.vue'; import InventoryCharts from './components/InventoryCharts.vue';
import waterIntakeCharts from './components/waterIntakeCharts.vue'; import waterIntakeCharts from './components/waterIntakeCharts.vue';
import growthIndexesCharts from './components/growthIndexesCharts.vue'; import growthIndexesCharts from './components/growthIndexesCharts.vue';

View File

@ -1,11 +1,24 @@
<template> <template>
<div class="popular-feelings-warp"> <div class="popular-feelings-warp">
<div class="popular-feelings-content"> <div
class="popular-feelings-content"
:style="{
'--before-bg': `url(${beforeBg})`,
}"
>
<template v-for="(n, index) in datalist" :key="index"> <template v-for="(n, index) in datalist" :key="index">
<div class="popular-feelings-item" :style="{ 'background-image': 'url(' + getAssetsFile('images/early/back1.png') + ')' + ',' + n.style }"> <div
class="popular-feelings-item"
:style="{
'background-image': 'url(' + getAssetsFile('images/early/back1.png') + ')',
}"
:class="n.name"
>
<div class="content-bg">
<div class="val">{{ n.val || 0 }}</div> <div class="val">{{ n.val || 0 }}</div>
<div class="label">{{ n.title || 0 }}</div> <div class="label">{{ n.title || 0 }}</div>
</div> </div>
</div>
</template> </template>
</div> </div>
</div> </div>
@ -14,11 +27,13 @@
import { ref, reactive, onMounted, computed } from 'vue'; import { ref, reactive, onMounted, computed } from 'vue';
import { isEmpty, getAssetsFile } from '@/utils'; import { isEmpty, getAssetsFile } from '@/utils';
let datalist = reactive([ let datalist = reactive([
{ title: '今天舆情量', val: 1872, style: 'left: 0,top: 50%,' }, { name: 'popular', title: '今天舆情量', val: 1872 },
{ title: '今日文章量', val: 1856, style: 'right: 0,top: 50%,' }, { title: '今日文章量', name: 'article', val: 1856 },
{ title: '今日浏览量', val: 54681, style: 'left: 50%,top: 0,' }, { title: '今日浏览量', name: 'view', val: 54681 },
{ title: '文章总数', val: 75671, style: 'left: 50%,bottom: 0,' }, { title: '文章总数', name: 'total', val: 75671 },
]); ]);
const beforeBg = getAssetsFile('images/early/bg5.png');
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
div { div {
@ -37,6 +52,95 @@ div {
background-size: 100% 100%; background-size: 100% 100%;
background-position: left bottom; background-position: left bottom;
background-repeat: no-repeat; background-repeat: no-repeat;
text-align: center;
&.popular {
left: 0;
top: 50%;
transform: translateY(-50%);
width: 35%;
height: 45%;
.val {
color: #fff;
font-weight: bold;
font-size: 14px;
}
.label {
color: #50e3c2;
margin-top: 8%;
font-size: 10px;
}
}
&.article {
left: 50%;
top: 0;
transform: translateX(-50%);
width: 35%;
height: 45%;
.val {
color: #fff;
font-weight: bold;
font-size: 14px;
}
.label {
color: #50e3c2;
margin-top: 8%;
font-size: 10px;
}
}
&.view {
right: 0;
top: 50%;
transform: translateY(-50%);
width: 35%;
height: 45%;
.val {
color: #fff;
font-weight: bold;
font-size: 14px;
}
.label {
color: #50e3c2;
margin-top: 8%;
font-size: 10px;
}
}
&.total {
left: 50%;
bottom: -10%;
transform: translateX(-50%);
width: 50%;
height: 66%;
.val {
color: #50e3c2;
font-weight: bold;
font-size: 20px;
margin-top: 2%;
}
.label {
color: #fff;
margin-top: 10%;
}
}
.content-bg {
width: 100%;
height: 100%;
}
// .content-bg ::before {
// content: '';
// position: absolute;
// top: 0;
// left: 0;
// width: 100%;
// height: 100%;
// background-image: var(--before-bg); /* */
// background-size: 100% 100%;
// background-position: left bottom;
// background-repeat: no-repeat;
// z-index: -1; /* */
// transform: rotate(90deg); /* */
// transform-origin: center; /* */
// }
} }
} }
} }

View File

@ -60,9 +60,9 @@ let seriesList = computed(() => {
// //
const min = Math.min(...values); const min = Math.min(...values);
// //
const maxSize4Pin = 50; const maxSize4Pin = 38;
// //
const minSize4Pin = 10; const minSize4Pin = 8;
// //
var a = (maxSize4Pin - minSize4Pin) / (max - min); var a = (maxSize4Pin - minSize4Pin) / (max - min);
var b = maxSize4Pin - a * max; var b = maxSize4Pin - a * max;

View File

@ -7,7 +7,7 @@
<div class="left-charts-item"> <div class="left-charts-item">
<customBack top-title="舆情数据统计" :top-postion="'left'"> <customBack top-title="舆情数据统计" :top-postion="'left'">
<template #back> <template #back>
<!-- <popularFeelings></popularFeelings> --> <popularFeelings></popularFeelings>
</template> </template>
</customBack> </customBack>
</div> </div>
@ -51,8 +51,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import centerMap from '@/components/centerMap.vue'; import centerMap from '@/components/centerMap.vue';
import backToCharts from './components/backToCharts.vue'; import backToCharts from './components/backToCharts.vue';
import productTypeWordClould from './components/productTypeWordClould.vue'; import productTypeWordClould from './components/productTypeWordClould.vue';

View File

@ -58,8 +58,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import centerMap from '@/components/centerMap.vue'; import centerMap from '@/components/centerMap.vue';
import categoryCharts from './components/categoryCharts.vue'; import categoryCharts from './components/categoryCharts.vue';
import entitieslist from './components/entitieslist.vue'; import entitieslist from './components/entitieslist.vue';

View File

@ -1,21 +1,18 @@
<template> <template>
<div class="home-trace-charts"> <div class="home-trace-charts">
<custom-echart-mixin :chart-data="chartsData.valData" :option="chartsData.option" height="100%" /> <custom-echart-mixin :chart-data="handelData" :option="chartsData.option" height="100%" />
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, reactive, onMounted } from 'vue'; import { ref, reactive, onMounted, computed } from 'vue';
let itemStyle = reactive({
itemStyle: { borderRadius: [8, 8, 0, 0] },
});
let legendList = reactive(['赋码', '扫码']);
const chartsData = ref({ const chartsData = ref({
option: { option: {
grid: { color: ['#3685fe', '#8dcbe9', '#ffd500', '#631f9f'],
left: '3%',
right: '4%',
bottom: '6%',
top: '18%',
containLabel: true,
},
color: ['#3685fe', '#41b879', '#ffd500', '#e57373'],
title: { title: {
text: ' ', text: ' ',
textStyle: { textStyle: {
@ -23,11 +20,44 @@ const chartsData = ref({
}, },
}, },
legend: { legend: {
data: ['赋码', '扫码'], show: true,
data: legendList,
left: '0', // 10%
top: '0', //
itemWidth: 15, //
itemHeight: 8, //
textStyle: {
fontSize: 10, //
color: '#fff', //
},
}, },
barStyle: { barStyle: {
barWidth: 18, barWidth: 10,
color: {
type: 'linear', // 线
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0, color: '#45bfe9' },
{ offset: 1, color: '#01589c' },
],
global: false, // false
}, },
},
dataZoom: [
// {
// type: 'slider', //
// startValue: 0, //
// endValue: 2, //
// },
// {
// type: 'inside', //
// startValue: 0,
// endValue: 2,
// },
],
yAxis: [ yAxis: [
{ {
type: 'value', type: 'value',
@ -39,62 +69,62 @@ const chartsData = ref({
show: true, // 线 show: true, // 线
lineStyle: { lineStyle: {
type: 'dashed', // 线 type: 'dashed', // 线
color: '#ccc', // 线
width: 0.5, // 线 width: 0.5, // 线
}, },
}, },
itemStyle: { fontSize: 8 },
}, },
// {
// type: 'value',
// name: '',
// yAxisIndex: 1,
// axisLabel: {
// formatter: '{value}',
// },
// },
], ],
}, grid: {
valData: [ x: '10%',
{ x2: '10%',
name: '1月', y: '20%',
value: 40, y2: '20%',
type: '赋码',
seriesType: 'bar',
barWidth: 10,
itemStyle: {
color: {
type: 'linear', // 线
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0, color: '#ff6666' },
{ offset: 1, color: '#ffcc66' },
],
global: false, // false
}, },
}, },
}, valData: [],
{ name: '1月', value: 60, type: '扫码', seriesType: 'line' },
{ name: '2月', value: 20, type: '赋码', seriesType: 'bar', itemStyle: { borderRadius: [8, 8, 0, 0] } },
{ name: '2月', value: 100, type: '扫码', seriesType: 'line' },
{ name: '3月', value: 80, type: '赋码', seriesType: 'bar', itemStyle: { borderRadius: [8, 8, 0, 0] } },
{ name: '3月', value: 100, type: '扫码', seriesType: 'line' },
{ name: '4月', value: 40, type: '赋码', seriesType: 'bar', itemStyle: { borderRadius: [8, 8, 0, 0] } },
{ name: '4月', value: 120, type: '扫码', seriesType: 'line' },
{ name: '5月', value: 50, type: '赋码', seriesType: 'bar', itemStyle: { borderRadius: [8, 8, 0, 0] } },
{ name: '5月', value: 60, type: '扫码', seriesType: 'line' },
],
}); });
onMounted(() => { const randomVal = (num) => {
if (chartsData.value.valData && chartsData.value.valData.length) { let list = [];
chartsData.value.valData.forEach((m, index) => { for (let i = 0; i < legendList.length; i++) {
let num = 100; let addNum = [10, 8, 2, 5];
m.value = (m.value + Math.random() + num).toFixed(0); let val = {
}); name: num + '月',
value: Number(Math.random() * 100 + addNum[i]).toFixed(2),
seriesType: i < legendList.length - 1 ? 'bar' : 'line',
type: legendList[i],
stack: num + '月',
};
if (val.seriesType == 'line') {
val.smooth = 30;
val.symbol = 'none';
} }
if (val.seriesType == 'bar') {
val.symbol = 'none';
}
let lastVal = {
...val,
...itemStyle,
};
list[i] = i < legendList.length - 2 ? val : lastVal;
}
return list;
};
let handelData = computed(() => {
let list = [];
let maxMouth = 12;
for (let i = 0; i < maxMouth; i++) {
let val = randomVal(i + 1);
list = [...list, ...val];
}
list.map((m, indexm) => {
return { ...m, value: Number(Number(m.value) + Math.random() + indexm).toFixed(0) };
});
// console.info('handelData', list);
return list;
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -73,8 +73,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import centerMap from '@/components/centerMap.vue'; import centerMap from '@/components/centerMap.vue';
import comprehensive from './components/comprehensive.vue'; import comprehensive from './components/comprehensive.vue';
import plantBreedCharts from './components/plantBreedCharts.vue'; import plantBreedCharts from './components/plantBreedCharts.vue';

View File

@ -58,8 +58,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import centerMap from '@/components/centerMap.vue'; import centerMap from '@/components/centerMap.vue';
import inputsGmp from './components/inputsGmp.vue'; import inputsGmp from './components/inputsGmp.vue';
import landbreedCharts from './components/landbreedCharts.vue'; import landbreedCharts from './components/landbreedCharts.vue';

View File

@ -58,8 +58,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import centerMap from '@/components/centerMap.vue'; import centerMap from '@/components/centerMap.vue';
import distributionCharts from './components/distributionCharts.vue'; import distributionCharts from './components/distributionCharts.vue';
import landuseCharts from './components/landuseCharts.vue'; import landuseCharts from './components/landuseCharts.vue';

View File

@ -1,10 +1,66 @@
<template> <template>
<div class="plant-gs-warp"> <div class="plant-gs-warp">
<div class="plant-gs-content" :style="{ 'background-image': 'url(' + getAssetsFile('images/plant/bg1.png') + ')' }"></div> <div ref="viewwarp" class="plant-gs-content" :style="{ 'background-image': 'url(' + getAssetsFile('images/plant/bg1.png') + ')' }">
<vc-config-provider :cesium-path="vcConfig.cesiumPath" :access-token="vcConfig.accessToken">
<vc-viewer ref="viewerRef" @ready="onViewerReady">
<vc-layer-imagery :minimum-level="12" :maximum-level="18" :contrast="1.8" :saturation="1" :alpha="1">
<vc-imagery-provider-amap :key="'c843a50db7157faf295c6fa37c48719f'"></vc-imagery-provider-amap>
</vc-layer-imagery>
<!-- <vc-entity :position="[99.402267, 23.538889, 4000]" description="Hello VueCesium">
<vc-graphics-plane
ref="plane2"
:plane="[{ x: 0, y: 1, z: 1 }, 0]"
:dimensions="[400, 300]"
:material="[255, 0, 0, 125]"
:outline="true"
outline-color="black"
></vc-graphics-plane>
</vc-entity> -->
</vc-viewer>
</vc-config-provider>
</div>
</div> </div>
</template> </template>
<script setup> <script setup>
import { isEmpty, getAssetsFile } from '@/utils'; import { isEmpty, getAssetsFile } from '@/utils';
import { ref, reactive, onMounted, computed, nextTick, getCurrentInstance } from 'vue';
import { VcViewer, VcConfigProvider, VcImageryProviderAmap, VcLayerImagery, VcGraphicsPlane, VcEntity } from 'vue-cesium';
import 'vue-cesium/dist/index.css';
const vcConfig = reactive({
cesiumPath: 'https://cdn.bootcdn.net/ajax/libs/cesium/1.80.0/Cesium.js',
accessToken:
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjJjZTUxYi1lOTQ3LTQ3YjctOGI3ZS02ZGUzY2E4YWFkNDkiLCJpZCI6Mjg4MjAxLCJpYXQiOjE3NDMwNTY0MzN9.rjHQiqf7Y8bccaqsapqveULVAUH6M1QkeFp-AKG-frA',
});
const viewerRef = ref(null);
const viewwarp = ref(null);
let plane2 = ref(null);
onMounted(() => {
console.info('onMounted', viewerRef);
Promise.all([plane2.value.creatingPromise]).then((instances) => {
console.info('instances');
// instances[0].viewer.zoomTo(instances[0].viewer.entities);
});
});
const onViewerReady = (readyObj) => {
console.info('readyObj', readyObj.Cesium); // Cesium namespace object
console.log(readyObj.viewer); // instanceof Cesium.Viewer
// Viewer
const { Cesium, viewer } = readyObj;
//
viewer.scene.globe.baseColor = Cesium.Color.DARKBLUE;
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(99.406653, 23.534142, 4000),
orientation: {
heading: Cesium.Math.toRadians(0), //
pitch: Cesium.Math.toRadians(-90), //
roll: 0, //
},
});
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.plant-gs-warp { .plant-gs-warp {
@ -17,6 +73,20 @@ import { isEmpty, getAssetsFile } from '@/utils';
background-repeat: no-repeat; background-repeat: no-repeat;
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: hidden;
::v-deep() {
.vc-viewer {
height: calc(100% - 30px) !important;
width: calc(100% - 20px) !important;
margin: 20px 10px 10px 10px !important;
}
canvas {
border-radius: 10px !important;
}
.cesium-viewer-bottom {
display: none !important;
}
}
} }
} }
</style> </style>

View File

@ -26,9 +26,9 @@
</customBack> </customBack>
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12" style="height: 100%">
<el-row style="height: 67%"> <el-row style="height: 67%">
<el-col :span="24" class="center-top"> <el-col :span="24" class="center-top" style="height: 100%">
<div class="notice"> <div class="notice">
<noticeBar :height="'40px'"></noticeBar> <noticeBar :height="'40px'"></noticeBar>
</div> </div>
@ -86,10 +86,8 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import plantTypeCharts from './components/plantTypeCharts.vue'; import plantTypeCharts from './components/plantTypeCharts.vue';
import insectPestsCharts from './components/insectPestsCharts'; import insectPestsCharts from './components/insectPestsCharts.vue';
import pathologyCharts from './components/pathologyCharts.vue'; import pathologyCharts from './components/pathologyCharts.vue';
import waterfertilizerCharts from './components/waterfertilizerCharts.vue'; import waterfertilizerCharts from './components/waterfertilizerCharts.vue';
import irrigationCharts from './components/irrigationCharts.vue'; import irrigationCharts from './components/irrigationCharts.vue';

View File

@ -58,8 +58,6 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import baseBg from '@/components/baseBg.vue';
import customBack from '@/components/customBack.vue';
import centerMap from '@/components/centerMap.vue'; import centerMap from '@/components/centerMap.vue';
import codeNumCharts from './components/codeNumCharts.vue'; import codeNumCharts from './components/codeNumCharts.vue';
import mainPartCharts from './components/mainPartCharts.vue'; import mainPartCharts from './components/mainPartCharts.vue';

View File

@ -2,6 +2,11 @@
# yarn lockfile v1 # yarn lockfile v1
"@amap/amap-jsapi-loader@^1.0.1":
version "1.0.1"
resolved "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz#9ec4b4d5d2467eac451f6c852e35db69e9f9f0c0"
integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==
"@ampproject/remapping@^2.2.0": "@ampproject/remapping@^2.2.0":
version "2.3.0" version "2.3.0"
resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
@ -705,6 +710,34 @@
resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@turf/circle@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/circle/-/circle-6.5.0.tgz#dc017d8c0131d1d212b7c06f76510c22bbeb093c"
integrity sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==
dependencies:
"@turf/destination" "^6.5.0"
"@turf/helpers" "^6.5.0"
"@turf/destination@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/destination/-/destination-6.5.0.tgz#30a84702f9677d076130e0440d3223ae503fdae1"
integrity sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==
dependencies:
"@turf/helpers" "^6.5.0"
"@turf/invariant" "^6.5.0"
"@turf/helpers@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e"
integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==
"@turf/invariant@^6.5.0":
version "6.5.0"
resolved "https://registry.npmmirror.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f"
integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==
dependencies:
"@turf/helpers" "^6.5.0"
"@types/eslint@^8.4.5": "@types/eslint@^8.4.5":
version "8.56.12" version "8.56.12"
resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a" resolved "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a"
@ -941,7 +974,7 @@
"@vue/compiler-ssr" "3.5.13" "@vue/compiler-ssr" "3.5.13"
"@vue/shared" "3.5.13" "@vue/shared" "3.5.13"
"@vue/shared@3.5.13": "@vue/shared@3.5.13", "@vue/shared@^3.2.47":
version "3.5.13" version "3.5.13"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
@ -1046,6 +1079,11 @@
resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532" resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz#b9df1b3ab2cd53f678b19b4d927e200774a6f532"
integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg== integrity sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==
"@zouyaoji/heatmap.js@^2.0.8":
version "2.0.8"
resolved "https://registry.npmmirror.com/@zouyaoji/heatmap.js/-/heatmap.js-2.0.8.tgz#5f6b285e7635ca07f2ecdb3d83a9dc1d240433d7"
integrity sha512-kBQny/zOUFH2OFoVyu6IdGJEcQMENIAASUsaZhk+OuJ9WexsYf6EU2lCyGURcsFly1kTMZKODlV7nBTCgfvJqg==
acorn-jsx@^5.3.2: acorn-jsx@^5.3.2:
version "5.3.2" version "5.3.2"
resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@ -1683,6 +1721,11 @@ commander@^7.2.0:
resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
compare-versions@^6.1.0:
version "6.1.1"
resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9"
integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==
component-emitter@^1.2.1: component-emitter@^1.2.1:
version "1.3.1" version "1.3.1"
resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17"
@ -2099,7 +2142,7 @@ echarts-gl@^2.0.9:
claygl "^1.2.1" claygl "^1.2.1"
zrender "^5.1.1" zrender "^5.1.1"
echarts@^5.6.0: echarts@^5.4.3, echarts@^5.6.0:
version "5.6.0" version "5.6.0"
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6" resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA== integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==
@ -3763,6 +3806,11 @@ jsonfile@^6.0.1:
optionalDependencies: optionalDependencies:
graceful-fs "^4.1.6" graceful-fs "^4.1.6"
kdbush@^4.0.2:
version "4.0.2"
resolved "https://registry.npmmirror.com/kdbush/-/kdbush-4.0.2.tgz#2f7b7246328b4657dd122b6c7f025fbc2c868e39"
integrity sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==
keyv@^4.5.3: keyv@^4.5.3:
version "4.5.4" version "4.5.4"
resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
@ -3894,7 +3942,7 @@ lodash-es@^4.17.21:
resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash-unified@^1.0.2: lodash-unified@^1.0.2, lodash-unified@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894" resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ== integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
@ -4091,6 +4139,11 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
mgrs@1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/mgrs/-/mgrs-1.0.0.tgz#fb91588e78c90025672395cb40b25f7cd6ad1829"
integrity sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==
micromatch@3.1.0: micromatch@3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2"
@ -4183,6 +4236,11 @@ minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
mitt@^3.0.1:
version "3.0.1"
resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
mixin-deep@^1.2.0: mixin-deep@^1.2.0:
version "1.3.2" version "1.3.2"
resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
@ -4900,6 +4958,14 @@ progress@^2.0.3:
resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
proj4@^2.9.1:
version "2.15.0"
resolved "https://registry.npmmirror.com/proj4/-/proj4-2.15.0.tgz#d77c9956861c8ed516071c4208d576cebe800eb5"
integrity sha512-LqCNEcPdI03BrCHxPLj29vsd5afsm+0sV1H/O3nTDKrv8/LA01ea1z4QADDMjUqxSXWnrmmQDjqFm1J/uZ5RLw==
dependencies:
mgrs "1.0.0"
wkt-parser "^1.4.0"
proxy-from-env@^1.1.0: proxy-from-env@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
@ -6368,6 +6434,11 @@ uri-js@^4.2.2:
dependencies: dependencies:
punycode "^2.1.0" punycode "^2.1.0"
urijs@^1.19.11:
version "1.19.11"
resolved "https://registry.npmmirror.com/urijs/-/urijs-1.19.11.tgz#204b0d6b605ae80bea54bea39280cdb7c9f923cc"
integrity sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==
urix@^0.1.0: urix@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@ -6511,6 +6582,25 @@ vite@^5.0.8:
optionalDependencies: optionalDependencies:
fsevents "~2.3.3" fsevents "~2.3.3"
vue-cesium@^3.2.9:
version "3.2.9"
resolved "https://registry.npmmirror.com/vue-cesium/-/vue-cesium-3.2.9.tgz#67b9dcbb4ed8e228fde886b957d0f4b4a3e388ba"
integrity sha512-MOgxAfIL+qYT608n+Bqioz2NbAM9pTWztzZ2gOqfHMxNeOFGROCUFatrzCP/OhndeEH8hbqdnGyxt1bHV9+dzQ==
dependencies:
"@amap/amap-jsapi-loader" "^1.0.1"
"@turf/circle" "^6.5.0"
"@vue/shared" "^3.2.47"
"@zouyaoji/heatmap.js" "^2.0.8"
compare-versions "^6.1.0"
echarts "^5.4.3"
kdbush "^4.0.2"
lodash "^4.17.21"
lodash-es "^4.17.21"
lodash-unified "^1.0.3"
mitt "^3.0.1"
proj4 "^2.9.1"
urijs "^1.19.11"
vue-demi@*, vue-demi@^0.14.10: vue-demi@*, vue-demi@^0.14.10:
version "0.14.10" version "0.14.10"
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04" resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
@ -6642,6 +6732,11 @@ wildcard@^1.1.0:
resolved "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5" resolved "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5"
integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng== integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==
wkt-parser@^1.4.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/wkt-parser/-/wkt-parser-1.4.0.tgz#7cca07a6ee5b4baf059b723e62d7fe95bc923bf5"
integrity sha512-qpwO7Ihds/YYDTi1aADFTI1Sm9YC/tTe3SHD24EeIlZxy7Ik6a1b4HOz7jAi0xdUAw487duqpo8OGu+Tf4nwlQ==
word-wrap@^1.2.5: word-wrap@^1.2.5:
version "1.2.5" version "1.2.5"
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"