< template>
< div>
< div> 【云端报警风险】< / div>
< div ref= "target" class = "w-full h-full" style= 'width:200px;height:300px' > < / div>
< / div>
< / template>
< script setup>
import { ref, onMounted, watch } from 'vue' ;
import * as echarts from "echarts" ;
let myChart = null ;
const target = ref ( null ) ;
onMounted ( ( ) => {
myChart = echarts. init ( target. value) ;
renderChart ( ) ;
} ) ;
let resData= [
{
"id" : 1 ,
"name" : "华北" ,
"value" : 64
} ,
{
"id" : 2 ,
"name" : "东北" ,
"value" : 68
} ,
{
"id" : 3 ,
"name" : "华东" ,
"value" : 45
} ,
{
"id" : 4 ,
"name" : "中南" ,
"value" : 74
} ,
{
"id" : 5 ,
"name" : "西南" ,
"value" : 69
} ,
{
"id" : 6 ,
"name" : "西北" ,
"value" : 37
}
]
const renderChart = ( ) => {
const options = {
radar : {
name : {
textStyle : {
color : "#05D5FF" ,
fontSize : 14
}
} ,
shape : 'polygon' ,
center : [ '50%' , '50%' ] ,
radius : '80%' ,
startAngle : 120 ,
axisLine : {
lineStyle : {
color : 'rgba(2,213,255,.8)'
}
} ,
splitLine : {
show : true ,
lineStyle : {
with : 1 ,
color : 'rgba(5,213,255,.8)'
}
} ,
indicator : resData. map ( item => ( {
name : item. name,
max : 100
} ) ) ,
splitArea : {
show : false
}
} ,
polar : {
center : [ '50%' , '50%' ] ,
radius : '0%'
} ,
angleAxis : {
min : 0 ,
interval : 5 ,
clockwise : false ,
} ,
radiusAxis : {
min : 0 ,
interval : 20 ,
splitLine : {
show : true
}
} ,
series : {
type : 'radar' ,
symbol : 'circle' ,
symbolSize : 10 ,
itemStyle : {
normal : {
color : '#05D5FF'
}
} ,
areaStyle : {
normal : {
color : '#05D5FF' ,
opacity : 0.5
}
} ,
lineStyle : {
with : 2 ,
color : '#05D5FF'
} ,
label : {
normal : {
show : true ,
color : '#05D5FF' ,
}
} ,
data : [
{
value : resData. map ( item => item. value)
}
]
}
}
myChart. setOption ( options) ;
} ;
watch ( ( ) => resData, renderChart)
< / script>
< style lang= "scss" scoped>
< / style>