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.

212 lines
4.5 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='less' scoped>
#rander-chart{
width: 100%;
height:450px;
}
</style>