|
|
|
<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>
|