修改列表
parent
405a461709
commit
a8c7aa3a08
Binary file not shown.
|
After Width: | Height: | Size: 807 KiB |
|
|
@ -0,0 +1,168 @@
|
||||||
|
<template>
|
||||||
|
<div class="h-full" ref="mapRef">12</div>
|
||||||
|
</template>
|
||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue'
|
||||||
|
import { useECharts } from '@/components/echarts/useECharts.js'
|
||||||
|
import chinaMap from './xj.json'
|
||||||
|
import { registerMap } from 'echarts'
|
||||||
|
import http from '@/utils/request'
|
||||||
|
|
||||||
|
const mapRef = ref(null)
|
||||||
|
const { setOptions } = useECharts(mapRef)
|
||||||
|
const data = ref([])
|
||||||
|
|
||||||
|
registerMap('xj', { geoJSON: chinaMap })
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getData()
|
||||||
|
})
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const resData = await http.get(
|
||||||
|
'/admin-api/api/cockpit/store-number-distribution'
|
||||||
|
)
|
||||||
|
data.value = resData
|
||||||
|
chatInit()
|
||||||
|
}
|
||||||
|
|
||||||
|
const convertData = (data) => {
|
||||||
|
var geoCoordMap = []
|
||||||
|
chinaMap.features.forEach((item) => {
|
||||||
|
geoCoordMap[item.properties.name] =
|
||||||
|
item.properties.centroid ?? item.properties.center
|
||||||
|
// if(item.properties.name=='河北省' ) console.log(item.properties.centroid)
|
||||||
|
})
|
||||||
|
var res = []
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
var geoCoord = geoCoordMap[data[i].name]
|
||||||
|
if (geoCoord && data[i].stores_count > 0) {
|
||||||
|
res.push({
|
||||||
|
name: data[i].name,
|
||||||
|
value: geoCoord.concat(data[i].stores_count),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
const chatInit = () => {
|
||||||
|
var max = 480,
|
||||||
|
min = 14 // todo
|
||||||
|
var maxSize4Pin = 100,
|
||||||
|
minSize4Pin = 30
|
||||||
|
|
||||||
|
setOptions({
|
||||||
|
tooltip: {
|
||||||
|
trigger: 'item',
|
||||||
|
formatter: function (params) {
|
||||||
|
if (params.name == '南海诸岛') return ''
|
||||||
|
|
||||||
|
if (typeof params.value[2] == 'undefined') {
|
||||||
|
return params.name + ' : ' + params.value
|
||||||
|
} else {
|
||||||
|
return params.name + ' : ' + params.value[2]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
geo: {
|
||||||
|
map: 'xj',
|
||||||
|
zoom: 1.2,
|
||||||
|
roam: false,
|
||||||
|
// left: '20%',
|
||||||
|
// top: '23%',
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: 'rgb(249, 249, 249)', //省份标签字体颜色
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
areaColor: '#24CFF4',
|
||||||
|
borderColor: '#53D9FF',
|
||||||
|
borderWidth: 1.3,
|
||||||
|
shadowBlur: 15,
|
||||||
|
shadowColor: 'rgb(58,115,192)',
|
||||||
|
shadowOffsetX: 7,
|
||||||
|
shadowOffsetY: 6,
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
itemStyle: {
|
||||||
|
areaColor: '#8dd7fc',
|
||||||
|
borderWidth: 1.6,
|
||||||
|
shadowBlur: 25,
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
color: '#f75a00',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
type: 'map',
|
||||||
|
map: 'china',
|
||||||
|
geoIndex: 0,
|
||||||
|
aspectScale: 0.75, //长宽比
|
||||||
|
showLegendSymbol: false, // 存在legend时显示
|
||||||
|
label: {
|
||||||
|
normal: {
|
||||||
|
show: false,
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
show: false,
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
roam: true,
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
areaColor: '#031525',
|
||||||
|
borderColor: '#FFFFFF',
|
||||||
|
},
|
||||||
|
emphasis: {
|
||||||
|
areaColor: '#2B91B7',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
animation: false,
|
||||||
|
data: data.value.map((e) => {
|
||||||
|
return {
|
||||||
|
name: e.name,
|
||||||
|
value: e.stores_count,
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '点',
|
||||||
|
type: 'scatter',
|
||||||
|
coordinateSystem: 'geo',
|
||||||
|
symbol: 'pin',
|
||||||
|
symbolSize: function (val) {
|
||||||
|
var a = (maxSize4Pin - minSize4Pin) / (max - min)
|
||||||
|
var b = minSize4Pin - a * min
|
||||||
|
b = maxSize4Pin - a * max
|
||||||
|
return a * val[2] + b
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 14,
|
||||||
|
},
|
||||||
|
formatter(value) {
|
||||||
|
if (typeof value.data.value[2] == 'undefined') {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return value.data.value[2] ?? 0
|
||||||
|
},
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
color: '#F62157',
|
||||||
|
},
|
||||||
|
zlevel: 6,
|
||||||
|
data: convertData(data.value),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
@ -27,7 +27,7 @@ import { useECharts } from '@/components/echarts/useECharts.js'
|
||||||
import echarts from '@/components/echarts/echarts.js'
|
import echarts from '@/components/echarts/echarts.js'
|
||||||
import http from '@/utils/request'
|
import http from '@/utils/request'
|
||||||
|
|
||||||
const day = ref('365days')
|
const day = ref('7days')
|
||||||
const dayList = [
|
const dayList = [
|
||||||
{
|
{
|
||||||
value: '7days',
|
value: '7days',
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue