|
@@ -11,22 +11,6 @@
|
|
@keyup.enter="fetchAllData"
|
|
@keyup.enter="fetchAllData"
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="亚型">
|
|
|
|
- <el-input
|
|
|
|
- v-model="form.batch"
|
|
|
|
- placeholder="请输入亚型"
|
|
|
|
- style="width: 180px"
|
|
|
|
- @keyup.enter="fetchAllData"
|
|
|
|
- />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="分支">
|
|
|
|
- <el-input
|
|
|
|
- v-model="form.model"
|
|
|
|
- placeholder="请输入分支"
|
|
|
|
- style="width: 180px"
|
|
|
|
- @keyup.enter="fetchAllData"
|
|
|
|
- />
|
|
|
|
- </el-form-item>
|
|
|
|
<el-form-item label="时间">
|
|
<el-form-item label="时间">
|
|
<el-date-picker
|
|
<el-date-picker
|
|
v-model="form.dateRange"
|
|
v-model="form.dateRange"
|
|
@@ -38,38 +22,6 @@
|
|
value-format="yyyy-MM-dd"
|
|
value-format="yyyy-MM-dd"
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="地区">
|
|
|
|
- <el-input
|
|
|
|
- v-model="form.country"
|
|
|
|
- placeholder="请输入地区"
|
|
|
|
- style="width: 180px"
|
|
|
|
- @keyup.enter="fetchAllData"
|
|
|
|
- />
|
|
|
|
- <!-- <el-cascader
|
|
|
|
- v-model="filters.region"
|
|
|
|
- :options="regionOptions"
|
|
|
|
- :props="{ checkStrictly: true, emitPath: false }"
|
|
|
|
- placeholder="请选择地区"
|
|
|
|
- style="width: 200px"
|
|
|
|
- @change="onRegionChange"
|
|
|
|
- /> -->
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="省份">
|
|
|
|
- <el-input
|
|
|
|
- v-model="form.province"
|
|
|
|
- placeholder="请输入省份"
|
|
|
|
- style="width: 180px"
|
|
|
|
- @keyup.enter="fetchAllData"
|
|
|
|
- />
|
|
|
|
- <!-- <el-cascader
|
|
|
|
- v-model="filters.region"
|
|
|
|
- :options="regionOptions"
|
|
|
|
- :props="{ checkStrictly: true, emitPath: false }"
|
|
|
|
- placeholder="请选择地区"
|
|
|
|
- style="width: 200px"
|
|
|
|
- @change="onRegionChange"
|
|
|
|
- /> -->
|
|
|
|
- </el-form-item>
|
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" @click="fetchAllData">查询</el-button>
|
|
<el-button type="primary" @click="fetchAllData">查询</el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -77,30 +29,28 @@
|
|
</el-card>
|
|
</el-card>
|
|
|
|
|
|
<div class="charts-container">
|
|
<div class="charts-container">
|
|
- <!-- 子图一:增长率曲线 -->
|
|
|
|
- <el-card class="chart-card">
|
|
|
|
- <div slot="header">增长率曲线</div>
|
|
|
|
- <div ref="growthChart" style="height: 320px;"></div>
|
|
|
|
- </el-card>
|
|
|
|
<!-- 子图二:分区条形图 -->
|
|
<!-- 子图二:分区条形图 -->
|
|
<el-card class="chart-card">
|
|
<el-card class="chart-card">
|
|
<div slot="header">地区分布条形图</div>
|
|
<div slot="header">地区分布条形图</div>
|
|
<div ref="barChart" style="height: 320px;"></div>
|
|
<div ref="barChart" style="height: 320px;"></div>
|
|
</el-card>
|
|
</el-card>
|
|
- <!-- 子图三:分支饼图 -->
|
|
|
|
- <!-- <el-card class="chart-card">
|
|
|
|
- <div slot="header">病原体分支分布饼图</div>
|
|
|
|
- <div ref="pieChart" style="height: 320px;"></div>
|
|
|
|
- </el-card> -->
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <!-- 地图 -->
|
|
|
|
- <el-card class="map-card">
|
|
|
|
- <div slot="header">全球/中国地图</div>
|
|
|
|
- <!-- 确保 ref 名称正确 -->
|
|
|
|
- <div ref="mapContainer" style="width: 100%; height: 600px;"></div>
|
|
|
|
- </el-card>
|
|
|
|
-
|
|
|
|
|
|
+ <!-- 地图容器 -->
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-card class="map-card">
|
|
|
|
+ <div slot="header">世界地图</div>
|
|
|
|
+ <div ref="worldMapContainer" style="width: 100%; height: 600px;"></div>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="12">
|
|
|
|
+ <el-card class="map-card">
|
|
|
|
+ <div slot="header">中国地图</div>
|
|
|
|
+ <div ref="chinaMapContainer" style="width: 100%; height: 600px;"></div>
|
|
|
|
+ </el-card>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -114,42 +64,22 @@ import {getbytzbInfo, getbytzzfbnfo, getsjbytztqkInfo,getzgbytztqkInfo} from '@/
|
|
echarts.registerMap('china', chinaJson);
|
|
echarts.registerMap('china', chinaJson);
|
|
echarts.registerMap('world', worldJson);
|
|
echarts.registerMap('world', worldJson);
|
|
|
|
|
|
-// 假数据
|
|
|
|
-const worldPieData = {
|
|
|
|
- '中国': [
|
|
|
|
- { value: 335, name: '分支 A' },
|
|
|
|
- { value: 310, name: '分支 B' },
|
|
|
|
- { value: 234, name: '分支 C' }
|
|
|
|
- ],
|
|
|
|
- '美国': [
|
|
|
|
- { value: 200, name: '分支 X' },
|
|
|
|
- { value: 150, name: '分支 Y' },
|
|
|
|
- { value: 100, name: '分支 Z' }
|
|
|
|
- ]
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-const chinaPieData = {
|
|
|
|
- '北京市': [
|
|
|
|
- { value: 150, name: '分支 A1' },
|
|
|
|
- { value: 120, name: '分支 B1' },
|
|
|
|
- { value: 80, name: '分支 C1' }
|
|
|
|
- ],
|
|
|
|
- '上海市': [
|
|
|
|
- { value: 180, name: '分支 A2' },
|
|
|
|
- { value: 130, name: '分支 B2' },
|
|
|
|
- { value: 90, name: '分支 C2' }
|
|
|
|
- ]
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-// 定义中国省份和世界国家的经纬度
|
|
|
|
-const chinaGeoCoordMap = {
|
|
|
|
- '北京市': [116.46, 39.92],
|
|
|
|
- '上海市': [121.48, 31.22]
|
|
|
|
|
|
+// 中国地区名称映射表
|
|
|
|
+const chinaRegionMap = {
|
|
|
|
+ '内蒙古自治区': '内蒙古',
|
|
|
|
+ '新疆维吾尔自治区': '新疆',
|
|
|
|
+ '西藏自治区': '西藏',
|
|
|
|
+ '宁夏回族自治区': '宁夏',
|
|
|
|
+ '广西壮族自治区': '广西',
|
|
|
|
+ // 可根据实际情况添加更多映射
|
|
};
|
|
};
|
|
|
|
|
|
-const worldGeoCoordMap = {
|
|
|
|
- '中国': [104.1954, 35.8617],
|
|
|
|
- '美国': [-95.7129, 37.0902]
|
|
|
|
|
|
+// 世界地区名称映射表
|
|
|
|
+const worldRegionMap = {
|
|
|
|
+ '中国': 'China',
|
|
|
|
+ '美国': 'United States',
|
|
|
|
+ '俄罗斯': 'Russia',
|
|
|
|
+ // 可根据实际情况添加更多映射
|
|
};
|
|
};
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -171,100 +101,44 @@ export default {
|
|
growthData: [],
|
|
growthData: [],
|
|
barData: [],
|
|
barData: [],
|
|
pieData: [],
|
|
pieData: [],
|
|
- mapData: [],
|
|
|
|
|
|
+ worldMapData: [],
|
|
|
|
+ chinaMapData: [],
|
|
description: '',
|
|
description: '',
|
|
- isChinaMap: false,
|
|
|
|
- growthChart: null,
|
|
|
|
barChart: null,
|
|
barChart: null,
|
|
- pieChart: null,
|
|
|
|
- mapChart: null,
|
|
|
|
- chinaPieData: [],
|
|
|
|
- worldPieData: [],
|
|
|
|
- form:{
|
|
|
|
- batch: "",
|
|
|
|
- bytName: "",
|
|
|
|
- country: "",
|
|
|
|
- endDate: "",
|
|
|
|
- model: "",
|
|
|
|
- province: "",
|
|
|
|
- startDate: "",
|
|
|
|
- dateRange: []
|
|
|
|
|
|
+ worldMapChart: null,
|
|
|
|
+ chinaMapChart: null,
|
|
|
|
+ form: {
|
|
|
|
+ bytName: "",
|
|
|
|
+ endDate: "",
|
|
|
|
+ province: "",
|
|
|
|
+ startDate: "",
|
|
|
|
+ dateRange: []
|
|
}
|
|
}
|
|
};
|
|
};
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
- // this.initRegionOptions();
|
|
|
|
- this.fetchAllData()
|
|
|
|
- this.initCharts();
|
|
|
|
- // 地图点击切换
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
- this.mapChart.on('click', params => {
|
|
|
|
- console.log('地图点击:', params);
|
|
|
|
- if (params && params.name === 'China' && !this.isChinaMap) {
|
|
|
|
- this.isChinaMap = true;
|
|
|
|
- this.fetchAllData();
|
|
|
|
- } else if (params && params.name !== 'China' && this.isChinaMap) {
|
|
|
|
- this.isChinaMap = false;
|
|
|
|
- this.fetchAllData();
|
|
|
|
- }
|
|
|
|
|
|
+ this.fetchAllData();
|
|
|
|
+ // 延迟初始化,确保容器尺寸正确
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
+ this.initCharts();
|
|
});
|
|
});
|
|
- });
|
|
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- async searchDisease(query) {
|
|
|
|
- if (!query) return;
|
|
|
|
- this.diseaseLoading = true;
|
|
|
|
- // 假数据
|
|
|
|
- this.diseaseOptions = ['疾病 A', '疾病 B', '疾病 C'].filter(item => item.includes(query));
|
|
|
|
- this.diseaseLoading = false;
|
|
|
|
- },
|
|
|
|
- async initRegionOptions() {
|
|
|
|
- // 假数据
|
|
|
|
- this.regionOptions = [
|
|
|
|
- {
|
|
|
|
- value: '全球',
|
|
|
|
- label: '全球',
|
|
|
|
- children: [
|
|
|
|
- {
|
|
|
|
- value: '中国',
|
|
|
|
- label: '中国',
|
|
|
|
- children: [
|
|
|
|
- { value: '北京市', label: '北京市' },
|
|
|
|
- { value: '上海市', label: '上海市' }
|
|
|
|
- ]
|
|
|
|
- },
|
|
|
|
- { value: '美国', label: '美国' }
|
|
|
|
- ]
|
|
|
|
- }
|
|
|
|
- ];
|
|
|
|
- },
|
|
|
|
- async onRegionChange(val) {
|
|
|
|
- // 切换地图模式
|
|
|
|
- if (val && val.length && val[val.length - 1] === '中国') {
|
|
|
|
- this.isChinaMap = true;
|
|
|
|
- } else {
|
|
|
|
- this.isChinaMap = false;
|
|
|
|
- }
|
|
|
|
- this.fetchAllData();
|
|
|
|
- },
|
|
|
|
async fetchAllData() {
|
|
async fetchAllData() {
|
|
if (this.form.dateRange.length > 0) {
|
|
if (this.form.dateRange.length > 0) {
|
|
- const [startDate, endDate] = this.form.dateRange;
|
|
|
|
- this.form.startDate = startDate;
|
|
|
|
- this.form.endDate = endDate;
|
|
|
|
|
|
+ const [startDate, endDate] = this.form.dateRange;
|
|
|
|
+ this.form.startDate = startDate;
|
|
|
|
+ this.form.endDate = endDate;
|
|
}
|
|
}
|
|
|
|
|
|
// 获取数据
|
|
// 获取数据
|
|
try {
|
|
try {
|
|
- const response = await getbytzbInfo(this.form);
|
|
|
|
const response2 = await getbytzzfbnfo(this.form);
|
|
const response2 = await getbytzzfbnfo(this.form);
|
|
const response3 = await getsjbytztqkInfo(this.form);
|
|
const response3 = await getsjbytztqkInfo(this.form);
|
|
const response4 = await getzgbytztqkInfo(this.form);
|
|
const response4 = await getzgbytztqkInfo(this.form);
|
|
- this.growthData = response.data;
|
|
|
|
this.barData = response2.data;
|
|
this.barData = response2.data;
|
|
- this.worldPieData = response3.data;
|
|
|
|
- this.chinaPieData = response4.data;
|
|
|
|
- this.mapData = this.isChinaMap ? this.chinaPieData : this.worldPieData;
|
|
|
|
|
|
+ this.worldMapData = response3.data;
|
|
|
|
+ this.chinaMapData = response4.data;
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error('获取数据失败:', error);
|
|
console.error('获取数据失败:', error);
|
|
this.$message.error('获取数据失败,请稍后重试');
|
|
this.$message.error('获取数据失败,请稍后重试');
|
|
@@ -273,57 +147,32 @@ export default {
|
|
this.renderCharts();
|
|
this.renderCharts();
|
|
},
|
|
},
|
|
initCharts() {
|
|
initCharts() {
|
|
- this.growthChart = echarts.init(this.$refs.growthChart);
|
|
|
|
this.barChart = echarts.init(this.$refs.barChart);
|
|
this.barChart = echarts.init(this.$refs.barChart);
|
|
- // this.pieChart = echarts.init(this.$refs.pieChart);
|
|
|
|
- this.mapChart = echarts.init(this.$refs.mapContainer);
|
|
|
|
|
|
+ this.worldMapChart = echarts.init(this.$refs.worldMapContainer);
|
|
|
|
+ this.chinaMapChart = echarts.init(this.$refs.chinaMapContainer);
|
|
window.addEventListener('resize', () => {
|
|
window.addEventListener('resize', () => {
|
|
- this.growthChart.resize();
|
|
|
|
this.barChart.resize();
|
|
this.barChart.resize();
|
|
- // this.pieChart.resize();
|
|
|
|
- this.mapChart.resize();
|
|
|
|
|
|
+ this.worldMapChart.resize();
|
|
|
|
+ this.chinaMapChart.resize();
|
|
});
|
|
});
|
|
},
|
|
},
|
|
renderCharts() {
|
|
renderCharts() {
|
|
- // 子图一:增长率曲线
|
|
|
|
- this.growthChart.setOption({
|
|
|
|
- tooltip: {
|
|
|
|
- trigger: 'axis',
|
|
|
|
- formatter: params => {
|
|
|
|
- const p = params[0];
|
|
|
|
- return `时间: ${p.name}<br/>数量: ${p.value}`;
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- xAxis: {
|
|
|
|
- type: 'category',
|
|
|
|
- data: this.growthData.map(item => item.day)
|
|
|
|
- },
|
|
|
|
- yAxis: {
|
|
|
|
- type: 'value',
|
|
|
|
- name: '增长率'
|
|
|
|
- },
|
|
|
|
- series: [{
|
|
|
|
- data: this.growthData.map(item => ({ value: item.per })),
|
|
|
|
- type: 'line',
|
|
|
|
- smooth: true
|
|
|
|
- }]
|
|
|
|
- });
|
|
|
|
// 子图二:分区条形图
|
|
// 子图二:分区条形图
|
|
- // 提取所有地区名称
|
|
|
|
const regions = this.barData.length > 0
|
|
const regions = this.barData.length > 0
|
|
? Object.keys(this.barData[0]).filter(key => key!== 'day')
|
|
? Object.keys(this.barData[0]).filter(key => key!== 'day')
|
|
: [];
|
|
: [];
|
|
- // 提取所有日期
|
|
|
|
const dates = this.barData.map(item => item.day);
|
|
const dates = this.barData.map(item => item.day);
|
|
|
|
|
|
- // 生成每个地区对应的系列数据
|
|
|
|
const seriesData = regions.map(region => ({
|
|
const seriesData = regions.map(region => ({
|
|
name: region,
|
|
name: region,
|
|
type: 'bar',
|
|
type: 'bar',
|
|
- data: this.barData.map(item => item[region])
|
|
|
|
|
|
+ data: this.barData.map(item => item[region]),
|
|
|
|
+
|
|
}));
|
|
}));
|
|
|
|
|
|
this.barChart.setOption({
|
|
this.barChart.setOption({
|
|
|
|
+ // 添加动画效果
|
|
|
|
+ animationDuration: 1000,
|
|
tooltip: {
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
trigger: 'axis',
|
|
axisPointer: {
|
|
axisPointer: {
|
|
@@ -338,79 +187,150 @@ export default {
|
|
},
|
|
},
|
|
xAxis: {
|
|
xAxis: {
|
|
type: 'category',
|
|
type: 'category',
|
|
- // 使用动态日期数据
|
|
|
|
- data: dates
|
|
|
|
|
|
+ data: dates,
|
|
|
|
+ // 优化 x 轴线样式
|
|
|
|
+ axisLine: {
|
|
|
|
+ lineStyle: {
|
|
|
|
+ color: '#999'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 优化 x 轴刻度线样式
|
|
|
|
+ axisTick: {
|
|
|
|
+ show: false
|
|
|
|
+ }
|
|
},
|
|
},
|
|
yAxis: {
|
|
yAxis: {
|
|
type: 'value',
|
|
type: 'value',
|
|
name: '数量'
|
|
name: '数量'
|
|
},
|
|
},
|
|
- // 使用动态生成的系列数据
|
|
|
|
series: seriesData
|
|
series: seriesData
|
|
});
|
|
});
|
|
- // // 地图
|
|
|
|
- // 处理 mapData 数据,转换为符合 ECharts 要求的格式
|
|
|
|
- const processedMapData = this.mapData.map(item => {
|
|
|
|
- const [lat, lng] = item.latlng.split(',').map(Number);
|
|
|
|
|
|
+
|
|
|
|
+ // 处理世界地图数据
|
|
|
|
+ const processedWorldMapData = this.worldMapData.map(item => {
|
|
|
|
+ // const name = worldRegionMap[item.area] || item.area;
|
|
|
|
+ const value = item.num || 0;
|
|
|
|
+ return {
|
|
|
|
+ name: item.eng,
|
|
|
|
+ value,
|
|
|
|
+ cnName:item.area
|
|
|
|
+ };
|
|
|
|
+ });
|
|
|
|
+ // 处理中国地图数据
|
|
|
|
+ const processedChinaMapData = this.chinaMapData.map(item => {
|
|
|
|
+ const name = chinaRegionMap[item.area] || item.area;
|
|
|
|
+ const value = item.num || 0;
|
|
return {
|
|
return {
|
|
- name: item.area,
|
|
|
|
- value: [lng, lat, item.num],
|
|
|
|
- num: item.num
|
|
|
|
|
|
+ name,
|
|
|
|
+ value,
|
|
};
|
|
};
|
|
});
|
|
});
|
|
- this.mapChart.setOption({
|
|
|
|
- title: { text: '病毒预测分布', left: 'center' },
|
|
|
|
- tooltip: {
|
|
|
|
- trigger: 'item',
|
|
|
|
- formatter: p => `${p.name}<br/>数量: ${p.data ? p.data.num : '-'}`
|
|
|
|
- },
|
|
|
|
- visualMap: {
|
|
|
|
- min: 0,
|
|
|
|
- max: 150,
|
|
|
|
- left: 'left',
|
|
|
|
- top: 'bottom',
|
|
|
|
- text: ['高', '低'],
|
|
|
|
- calculable: true,
|
|
|
|
- inRange: {
|
|
|
|
- color: ['#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'] // 颜色深浅
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- geo: {
|
|
|
|
- map: this.isChinaMap ? 'china' : 'world',
|
|
|
|
- roam: true,
|
|
|
|
- label: { show: false },
|
|
|
|
- itemStyle: {
|
|
|
|
- areaColor: '#f0f0f0',
|
|
|
|
- borderColor: '#999'
|
|
|
|
- },
|
|
|
|
- emphasis: {
|
|
|
|
- itemStyle: {
|
|
|
|
- areaColor: '#e0e0e0'
|
|
|
|
|
|
+
|
|
|
|
+ // 检查数据是否为空
|
|
|
|
+ if (processedWorldMapData.every(item => item.value === 0)) {
|
|
|
|
+ console.warn('世界地图数据值全部为 0');
|
|
}
|
|
}
|
|
- }
|
|
|
|
- },
|
|
|
|
- series: [
|
|
|
|
- {
|
|
|
|
- type: 'scatter',
|
|
|
|
- coordinateSystem: 'geo',
|
|
|
|
- data: processedMapData,
|
|
|
|
- symbolSize: val => Math.max(8, Math.sqrt(val[2]) * 2), // 数量越大点越大
|
|
|
|
- encode: { value: 2 },
|
|
|
|
- label: {
|
|
|
|
- show: false
|
|
|
|
- },
|
|
|
|
- itemStyle: {
|
|
|
|
- color: '#4575b4'
|
|
|
|
- },
|
|
|
|
- emphasis: {
|
|
|
|
- itemStyle: {
|
|
|
|
- color: '#d73027'
|
|
|
|
- }
|
|
|
|
|
|
+ if (processedChinaMapData.every(item => item.value === 0)) {
|
|
|
|
+ console.warn('中国地图数据值全部为 0');
|
|
}
|
|
}
|
|
- }
|
|
|
|
- ]
|
|
|
|
-});
|
|
|
|
|
|
|
|
|
|
+ // 世界地图配置
|
|
|
|
+ this.worldMapChart.setOption({
|
|
|
|
+ title: { text: '全球病毒分布', left: 'center' },
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'item',
|
|
|
|
+ formatter: p => `${p.data?.cnName || p.data?.name}<br/>数量: ${p.value || '-'}`
|
|
|
|
+ },
|
|
|
|
+ visualMap: {
|
|
|
|
+ min: Math.min(...processedWorldMapData.map(item => item.value)),
|
|
|
|
+ max: Math.max(...processedWorldMapData.map(item => item.value)),
|
|
|
|
+ left: 'left',
|
|
|
|
+ top: 'bottom',
|
|
|
|
+ text: ['高', '低'],
|
|
|
|
+ calculable: true,
|
|
|
|
+ inRange: {
|
|
|
|
+ color: ['#ffeeee', '#ffcccc', '#ff9999', '#ff6666', '#ff3333']
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // geo: {
|
|
|
|
+ // map: 'world',
|
|
|
|
+ // roam: true,
|
|
|
|
+ // label: { show: false },
|
|
|
|
+ // itemStyle: {
|
|
|
|
+ // areaColor: '#f0f0f0',
|
|
|
|
+ // borderColor: '#999'
|
|
|
|
+ // },
|
|
|
|
+ // emphasis: {
|
|
|
|
+ // itemStyle: {
|
|
|
|
+ // areaColor: '#e0e0e0'
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // },
|
|
|
|
+ series: [
|
|
|
|
+ {
|
|
|
|
+ type: 'map',
|
|
|
|
+ map: 'world',
|
|
|
|
+ data: processedWorldMapData,
|
|
|
|
+ label: {
|
|
|
|
+ show: false
|
|
|
|
+ },
|
|
|
|
+ emphasis: {
|
|
|
|
+ itemStyle: {
|
|
|
|
+ areaColor: '#e0e0e0'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // 中国地图配置
|
|
|
|
+ this.chinaMapChart.setOption({
|
|
|
|
+ title: { text: '中国病毒分布', left: 'center' },
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'item',
|
|
|
|
+ formatter: p => `${p.name}<br/>数量: ${p.value || '-'}`
|
|
|
|
+ },
|
|
|
|
+ visualMap: {
|
|
|
|
+ min: Math.min(...processedChinaMapData.map(item => item.value)),
|
|
|
|
+ max: Math.max(...processedChinaMapData.map(item => item.value)),
|
|
|
|
+ left: 'left',
|
|
|
|
+ top: 'bottom',
|
|
|
|
+ text: ['高', '低'],
|
|
|
|
+ calculable: true,
|
|
|
|
+ inRange: {
|
|
|
|
+ color:['#ffeeee', '#ffcccc', '#ff9999', '#ff6666', '#ff3333']
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // geo: {
|
|
|
|
+ // map: 'china',
|
|
|
|
+ // roam: true,
|
|
|
|
+ // label: { show: false },
|
|
|
|
+ // itemStyle: {
|
|
|
|
+ // areaColor: '#f0f0f0',
|
|
|
|
+ // borderColor: '#999'
|
|
|
|
+ // },
|
|
|
|
+ // emphasis: {
|
|
|
|
+ // itemStyle: {
|
|
|
|
+ // areaColor: '#e0e0e0'
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ // },
|
|
|
|
+ series: [
|
|
|
|
+ {
|
|
|
|
+ type: 'map',
|
|
|
|
+ map: 'china',
|
|
|
|
+ data: processedChinaMapData,
|
|
|
|
+ label: {
|
|
|
|
+ show: false
|
|
|
|
+ },
|
|
|
|
+ emphasis: {
|
|
|
|
+ itemStyle: {
|
|
|
|
+ areaColor: '#e0e0e0'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|