You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
4.4 KiB
205 lines
4.4 KiB
<template> |
|
<div id="rander-chart"></div> |
|
</template> |
|
|
|
<script lang="ts" setup> |
|
import echarts from '@/utils/echarts' |
|
|
|
import { onMounted, nextTick } from 'vue' |
|
const props = defineProps({ |
|
data: { |
|
type: Array, |
|
default: [ |
|
{ |
|
text: '前言探索', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '奠定基础', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '知识分析', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '社会责任', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '独立思考', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '拓宽视野', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '激发兴趣', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '沟通协调', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '设计开发', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '研判分析', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '创新能力', |
|
value: 0, |
|
}, |
|
{ |
|
capacityName: '团队协作', |
|
value: 0, |
|
}, |
|
], |
|
}, |
|
}) |
|
|
|
const throttle = (fn: any) => { |
|
let timer: any |
|
return function () { |
|
if (timer) { |
|
return |
|
} |
|
timer = setTimeout(() => { |
|
fn() |
|
clearTimeout(timer) |
|
timer = null |
|
}, 1000) |
|
} |
|
} |
|
let Data = props.data |
|
console.log(Data, props.data) |
|
|
|
nextTick(() => { |
|
// @ts-ignore |
|
const myChart = echarts.init(document.getElementById('rander-chart')) |
|
console.log(Data, 1111) |
|
|
|
// var legendData = ['车辆数']; //图例 |
|
var indicator = Data.map((item) => { |
|
return { name: item.capacityName, max: 100 } |
|
}) |
|
var dataArr = [ |
|
{ |
|
value: Data.map((item) => item.value), |
|
name: '年度维度分析', |
|
itemStyle: { |
|
normal: { |
|
lineStyle: { |
|
color: '#55d7f2', |
|
}, |
|
shadowColor: '#4A99FF', |
|
shadowBlur: 10, |
|
}, |
|
}, |
|
areaStyle: { |
|
normal: { |
|
// 单项区域填充样式 |
|
color: { |
|
type: 'linear', |
|
x: 1, //右 |
|
y: 0, //下 |
|
x2: 1, //左 |
|
y2: 1, //上 |
|
colorStops: [ |
|
{ |
|
offset: 0, |
|
color: '#1890ff', |
|
}, |
|
{ |
|
offset: 1, |
|
color: '#1890ff', |
|
}, |
|
], |
|
globalCoord: false, |
|
}, |
|
opacity: 1, // 区域透明度 |
|
}, |
|
}, |
|
}, |
|
] |
|
var colorArr = ['#fff', '#fff'] //颜色 |
|
const option: any = { |
|
backgroundColor: 'transparent', |
|
color: colorArr, |
|
// legend: { |
|
// orient: "vertical", |
|
// // icon: 'circle', //图例形状 |
|
// // data: legendData, |
|
// top: 0, |
|
// left: 20, |
|
// itemWidth: 8, // 图例标记的图形宽度。[ default: 25 ] |
|
// itemHeight: 8, // 图例标记的图形高度。[ default: 14 ] |
|
// itemGap: 22, // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。 |
|
// textStyle: { |
|
// fontSize: 12, |
|
// fontWeight: "bold", |
|
// color: "#00E4FF", |
|
// }, |
|
// }, |
|
tooltip: { |
|
trigger: 'item', |
|
}, |
|
radar: { |
|
radius: '60%', |
|
// shape: 'circle', |
|
name: { |
|
textStyle: { |
|
color: '#9ca4a6', |
|
fontSize: 12, |
|
}, |
|
}, |
|
indicator: indicator, |
|
splitArea: { |
|
// 坐标轴在 grid 区域中的分隔区域,默认不显示。 |
|
show: true, |
|
areaStyle: { |
|
// 分隔区域的样式设置。 |
|
color: ['rgba(255,255,255,0)', 'rgba(255,255,255,0)'], // 分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。 |
|
}, |
|
}, |
|
axisLine: { |
|
//指向外圈文本的分隔线样式 |
|
lineStyle: { |
|
color: '#2a5f61', |
|
}, |
|
}, |
|
splitLine: { |
|
lineStyle: { |
|
color: '#2a5f61', // 分隔线颜色 |
|
width: 1, // 分隔线线宽 |
|
}, |
|
}, |
|
}, |
|
series: [ |
|
{ |
|
type: 'radar', |
|
symbolSize: 6, |
|
symbol: 'circle', |
|
data: dataArr, |
|
}, |
|
], |
|
} |
|
myChart.setOption(option) |
|
let resize = throttle(() => { |
|
myChart.resize() |
|
}) |
|
window.addEventListener('resize', resize) |
|
}) |
|
onMounted(() => {}) |
|
</script> |
|
|
|
<style lang="scss" scoped> |
|
#rander-chart { |
|
width: 100%; |
|
height: 450px; |
|
} |
|
</style>
|
|
|