1.最终效果图
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/085b75e9c71cafcecbc3b16a41350bd8.png)
2.echarts文件(jylxfx.js)
export const jylxfxOption = sData => {
let legendData = [];
sData.map(item => {
legendData.push(item.name);
});
let option = {
textStyle: {
fontFamily: "BebasNeue"
},
color: ["#2970ff", "#774dff", "#ffc000", "#00ddff", "#71f974", "#ffe79a", "#00ddff"],
grid: {
left: "center",
top: "top"
},
tooltip: {
show: false,
trigger: "item",
formatter: "{b}<br/> {c} ({d}%)"
},
legend: {
type: "scroll",
orient: "vertical",
left: "65%",
top: "middle",
textStyle: {
color: "#59C9F9"
},
icon: "roundRect",
itemWidth: 8,
itemHeight: 10,
data: legendData
},
series: [
{
radius: ["40", "48"],
center: ["35%", "50%"],
type: "pie",
avoidLabelOverlap: false,
label: {
position: "center",
show: false,
formatter(params) {
return "{value|" + params.percent + "}%\n{name|" + params.data.name + "}";
},
rich: {
name: {
color: "#7DA7C0",
fontSize: 10
},
value: {
fontSize: 18,
padding: [0, 5, 0, 0],
fontWeight: "bold",
lineHeight: 30
}
}
},
hoverOffset: 2,
itemStyle: {
borderWidth: 2,
borderColor: "#10243C"
},
emphasis: {
label: {
show: true,
fontSize: "18",
fontWeight: "bold"
},
itemStyle: {
}
},
labelLine: {
normal: {
show: true,
length: 30,
length2: 55
},
emphasis: {
show: true
}
},
data: sData
},
{
name: "外边框",
type: "pie",
clockWise: false,
hoverAnimation: false,
center: ["35%", "50%"],
radius: ["52", "52"],
label: {
normal: {
show: false
}
},
tooltip: {
show: false
},
data: [
{
value: 1,
name: "",
itemStyle: {
normal: {
borderWidth: 0.5,
borderColor: "#0b5263"
}
}
}
]
}
]
};
return option;
};
3.vue文件中
3.1 html
<div style="width:30vh;height:30vh;" ref="jylxfxChart"></div>
3.2 js逻辑处理(引入jylxfx.js)
<script>
import { ndfxOption } from "@/assets/js/xxjyzt/ndfx";
export default {
data(){},
methods: {
jylxfx() {
let jylxfxChartEle = this.$echarts.init(this.$refs.jylxfxChart);
let sData = [
{
name: "种植业",
value: 456
},
{
name: "养殖业",
value: 231
},
{
name: "畜牧业",
value: 231
},
{
name: "渔业",
value: 134
},
{
name: "种养结合",
value: 421
},
{
name: "林业",
value: 123
},
{
name: "其他",
value: 532
}
];
jylxfxChartEle.dispose();
jylxfxChartEle = this.$echarts.init(this.$refs.jylxfxChart);
jylxfxChartEle.setOption(jylxfxOption(sData));
tools.loopShowTooltip(jylxfxChartEle, jylxfxOption(sData), {
loopSeries: false,
seriesIndex: 0
});
},
initEcharts() {
let jylxfxChartEle = this.$echarts.init(this.$refs.jylxfxChart);
window.addEventListener("resize", function() {
jylxfxChartEle.resize();
});
}
},
mounted() {
this.jylxfx();
this.initEcharts();
}
}
</script>