|
@@ -7,37 +7,43 @@ import chinaMap from '@/assets/json/china.json';
|
|
import * as echarts from 'echarts';
|
|
import * as echarts from 'echarts';
|
|
import MyChart from '../../global/chart';
|
|
import MyChart from '../../global/chart';
|
|
import geoCoordMap from './geoCoordMap';
|
|
import geoCoordMap from './geoCoordMap';
|
|
|
|
+import { colorList } from '@/utils/chart';
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
echarts.registerMap('china', { geoJSON: chinaMap });
|
|
echarts.registerMap('china', { geoJSON: chinaMap });
|
|
});
|
|
});
|
|
-let data2 = [
|
|
|
|
- { name: '哈尔滨', value: 131426 },
|
|
|
|
- { name: '沈阳', value: 30716 },
|
|
|
|
- { name: '西安', value: 25380 },
|
|
|
|
- { name: '太原', value: 25152 },
|
|
|
|
- { name: '呼和浩特', value: 19896 },
|
|
|
|
- { name: '天津', value: 14843 },
|
|
|
|
- { name: '石家庄', value: 13697 },
|
|
|
|
- { name: '郑州', value: 8494 },
|
|
|
|
- { name: '贵阳', value: 8442 },
|
|
|
|
-];
|
|
|
|
-let data1 = [
|
|
|
|
- { name: '银川', value: 8398 },
|
|
|
|
- { name: '西宁', value: 8390 },
|
|
|
|
- { name: '济南', value: 67715 },
|
|
|
|
- { name: '长春', value: 7100 },
|
|
|
|
- { name: '北京', value: 36506 },
|
|
|
|
- { name: '重庆', value: 4672 },
|
|
|
|
- { name: '兰州', value: 4302 },
|
|
|
|
- { name: '乌鲁木齐', value: 4294 },
|
|
|
|
- { name: '上海', value: 3091 },
|
|
|
|
- { name: '昆明', value: 2428 },
|
|
|
|
- { name: '武汉', value: 71800 },
|
|
|
|
-];
|
|
|
|
|
|
+// let data2 = [
|
|
|
|
+// { name: '哈尔滨', value: 131426 },
|
|
|
|
+// { name: '沈阳', value: 30716 },
|
|
|
|
+// { name: '西安', value: 25380 },
|
|
|
|
+// { name: '太原', value: 25152 },
|
|
|
|
+// { name: '呼和浩特', value: 19896 },
|
|
|
|
+// { name: '天津', value: 14843 },
|
|
|
|
+// { name: '石家庄', value: 13697 },
|
|
|
|
+// { name: '郑州', value: 8494 },
|
|
|
|
+// { name: '贵阳', value: 8442 },
|
|
|
|
+// ];
|
|
|
|
+// let data1 = [
|
|
|
|
+// { name: '银川', value: 8398 },
|
|
|
|
+// { name: '西宁', value: 8390 },
|
|
|
|
+// { name: '济南', value: 67715 },
|
|
|
|
+// { name: '长春', value: 7100 },
|
|
|
|
+// { name: '北京', value: 36506 },
|
|
|
|
+// { name: '重庆', value: 4672 },
|
|
|
|
+// { name: '兰州', value: 4302 },
|
|
|
|
+// { name: '乌鲁木齐', value: 4294 },
|
|
|
|
+// { name: '上海', value: 3091 },
|
|
|
|
+// { name: '昆明', value: 2428 },
|
|
|
|
+// { name: '武汉', value: 71800 },
|
|
|
|
+// ];
|
|
|
|
+const props = defineProps({ data: Object });
|
|
const convertData = (data) => {
|
|
const convertData = (data) => {
|
|
|
|
+ console.log('data:::', data);
|
|
var res = [];
|
|
var res = [];
|
|
for (var i = 0; i < data.length; i++) {
|
|
for (var i = 0; i < data.length; i++) {
|
|
- var geoCoord = geoCoordMap[data[i].name];
|
|
|
|
|
|
+ var geoCoord =
|
|
|
|
+ geoCoordMap[
|
|
|
|
+ data[i].name.endsWith('省') ? data[i].name.slice(0, -1) : data[i].name
|
|
|
|
+ ];
|
|
if (geoCoord) {
|
|
if (geoCoord) {
|
|
res.push({
|
|
res.push({
|
|
name: data[i].name,
|
|
name: data[i].name,
|
|
@@ -47,6 +53,80 @@ const convertData = (data) => {
|
|
}
|
|
}
|
|
return res;
|
|
return res;
|
|
};
|
|
};
|
|
|
|
+const dataHandle = (data) => {
|
|
|
|
+ if (!data) {
|
|
|
|
+ return [];
|
|
|
|
+ } else {
|
|
|
|
+ let arr = [];
|
|
|
|
+ // console.log('data', data);
|
|
|
|
+ // console.log('data[0].data:', data[0].data);
|
|
|
|
+ // console.log('convertData[data[0].data]', convertData[data[0].data]);
|
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
|
+ let item = data[i];
|
|
|
|
+ arr.push(
|
|
|
|
+ {
|
|
|
|
+ name: item.name,
|
|
|
|
+ type: 'scatter',
|
|
|
|
+ coordinateSystem: 'geo',
|
|
|
|
+ data: convertData(item.data),
|
|
|
|
+ symbolSize: function (val) {
|
|
|
|
+ return val[2] / 3000;
|
|
|
|
+ },
|
|
|
|
+ label: {
|
|
|
|
+ normal: {
|
|
|
|
+ formatter: '{b}',
|
|
|
|
+ position: 'right',
|
|
|
|
+ show: false,
|
|
|
|
+ },
|
|
|
|
+ emphasis: {
|
|
|
|
+ show: true,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ itemStyle: {
|
|
|
|
+ normal: {
|
|
|
|
+ color: colorList[i],
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ name: item.name,
|
|
|
|
+ type: 'effectScatter',
|
|
|
|
+ coordinateSystem: 'geo',
|
|
|
|
+ data: convertData(
|
|
|
|
+ item.data.sort(function (a, b) {
|
|
|
|
+ return b.value - a.value;
|
|
|
|
+ })
|
|
|
|
+ ),
|
|
|
|
+ symbolSize: function (val) {
|
|
|
|
+ return val[2] / 3000;
|
|
|
|
+ },
|
|
|
|
+ showEffectOn: 'render',
|
|
|
|
+ rippleEffect: {
|
|
|
|
+ brushType: 'stroke',
|
|
|
|
+ },
|
|
|
|
+ hoverAnimation: true,
|
|
|
|
+ label: {
|
|
|
|
+ normal: {
|
|
|
|
+ formatter: '{b}',
|
|
|
|
+ position: 'right',
|
|
|
|
+ fontSize: 12,
|
|
|
|
+ show: true,
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ itemStyle: {
|
|
|
|
+ normal: {
|
|
|
|
+ color: colorList[i],
|
|
|
|
+ shadowBlur: 10,
|
|
|
|
+ shadowColor: '#333',
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ zlevel: 1,
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ return arr;
|
|
|
|
+ }
|
|
|
|
+};
|
|
const options = computed(() => {
|
|
const options = computed(() => {
|
|
return {
|
|
return {
|
|
backgroundColor: 'rgba(0,0,0,.05)',
|
|
backgroundColor: 'rgba(0,0,0,.05)',
|
|
@@ -126,129 +206,7 @@ const options = computed(() => {
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
- series: [
|
|
|
|
- {
|
|
|
|
- name: '教务处',
|
|
|
|
- type: 'scatter',
|
|
|
|
- coordinateSystem: 'geo',
|
|
|
|
- data: convertData(data1),
|
|
|
|
- symbolSize: function (val) {
|
|
|
|
- return val[2] / 3000;
|
|
|
|
- },
|
|
|
|
- label: {
|
|
|
|
- normal: {
|
|
|
|
- formatter: '{b}',
|
|
|
|
- position: 'right',
|
|
|
|
- show: false,
|
|
|
|
- },
|
|
|
|
- emphasis: {
|
|
|
|
- show: true,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- normal: {
|
|
|
|
- color: '#23C343',
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- name: '教务处',
|
|
|
|
- type: 'effectScatter',
|
|
|
|
- coordinateSystem: 'geo',
|
|
|
|
- data: convertData(
|
|
|
|
- data1
|
|
|
|
- .sort(function (a, b) {
|
|
|
|
- return b.value - a.value;
|
|
|
|
- })
|
|
|
|
- .slice(0, 21)
|
|
|
|
- ),
|
|
|
|
- symbolSize: function (val) {
|
|
|
|
- return val[2] / 3000;
|
|
|
|
- },
|
|
|
|
- showEffectOn: 'render',
|
|
|
|
- rippleEffect: {
|
|
|
|
- brushType: 'stroke',
|
|
|
|
- },
|
|
|
|
- hoverAnimation: true,
|
|
|
|
- label: {
|
|
|
|
- normal: {
|
|
|
|
- formatter: '{b}',
|
|
|
|
- position: 'right',
|
|
|
|
- fontSize: 12,
|
|
|
|
- show: true,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- normal: {
|
|
|
|
- color: '#23C343',
|
|
|
|
- shadowBlur: 10,
|
|
|
|
- shadowColor: '#333',
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- zlevel: 1,
|
|
|
|
- },
|
|
|
|
-
|
|
|
|
- {
|
|
|
|
- name: '研究生',
|
|
|
|
- type: 'scatter',
|
|
|
|
- coordinateSystem: 'geo',
|
|
|
|
- data: convertData(data2),
|
|
|
|
- symbolSize: function (val) {
|
|
|
|
- return val[2] / 3000;
|
|
|
|
- },
|
|
|
|
- label: {
|
|
|
|
- normal: {
|
|
|
|
- formatter: '{b}',
|
|
|
|
- position: 'right',
|
|
|
|
- show: false,
|
|
|
|
- },
|
|
|
|
- emphasis: {
|
|
|
|
- show: true,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- normal: {
|
|
|
|
- color: '#F4E925',
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- name: '研究生',
|
|
|
|
- type: 'effectScatter',
|
|
|
|
- coordinateSystem: 'geo',
|
|
|
|
- data: convertData(
|
|
|
|
- data2
|
|
|
|
- .sort(function (a, b) {
|
|
|
|
- return b.value - a.value;
|
|
|
|
- })
|
|
|
|
- .slice(0, 21)
|
|
|
|
- ),
|
|
|
|
- symbolSize: function (val) {
|
|
|
|
- return val[2] / 3000;
|
|
|
|
- },
|
|
|
|
- showEffectOn: 'render',
|
|
|
|
- rippleEffect: {
|
|
|
|
- brushType: 'stroke',
|
|
|
|
- },
|
|
|
|
- hoverAnimation: true,
|
|
|
|
- label: {
|
|
|
|
- normal: {
|
|
|
|
- formatter: '{b}',
|
|
|
|
- position: 'right',
|
|
|
|
- fontSize: 12,
|
|
|
|
- show: true,
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- normal: {
|
|
|
|
- color: '#F4E925',
|
|
|
|
- shadowBlur: 10,
|
|
|
|
- shadowColor: '#333',
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- zlevel: 1,
|
|
|
|
- },
|
|
|
|
- ],
|
|
|
|
|
|
+ series: dataHandle(props.data),
|
|
};
|
|
};
|
|
});
|
|
});
|
|
</script>
|
|
</script>
|