zhongrj
2026-06-02 0299e41c6692684d943b4a206472a86ea84ea4b5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<template>
    <div class="echarts-box" id="rainLevelPieChart"></div>
</template>
 
<script>
export default {
 
    data () {
        return {
            myChart: null,
        }
    },
    mounted () {
 
    },
    destroyed () {
    },
    methods: {
        createPieChart (jydjdataPie) {
            let data = jydjdataPie
            let total = data.reduce((prev, curr) => prev + curr.value, 0)
            if (!this.myChart) {
                this.myChart = this.$echarts.init(
                    document.getElementById('rainLevelPieChart')
                )
            }
            let option = {
                legend: {
                    orient: "vertical",
                    left: "50%",
                    top: 15,
                    width: "100%",
                    itemGap: 10,
                    itemWidth: 8,
                    itemHeight: 8,
                    formatter: function (name) {
                        let value = 0
                        data.forEach((item) => {
                            if (item.name == name) {
                                value = item.value
                            }
                        })
                        return `${name}    ${value}个   ${((value * 100) / total).toFixed(
                            2
                        )}%`
                    },
                    textStyle: {
                        color: "#fff",
                        fontSize: 16,
                        fontFamily: "Roboto-Bold",
                    },
                },
                radar: [
                    {
                        indicator: [
                            { text: "Indicator1" },
                            { text: "Indicator2" },
                            { text: "Indicator3" },
                            { text: "Indicator4" },
                            { text: "Indicator5" },
                        ],
                        center: ["25%", "50%"],
                        radius: "80%",
                        startAngle: 90,
                        splitNumber: 1,
                        shape: "circle",
                        axisName: {
                            show: false,
                        },
                        splitArea: {
                            areaStyle: {
                                color: ["rgba(0, 0, 0, 0.2)"],
                            },
                        },
                        axisLine: {
                            lineStyle: {
                                color: "rgba(211, 253, 250, 0)",
                            },
                        },
                        splitLine: {
                            lineStyle: {
                                color: "rgba(51, 114, 210, .5)",
                            },
                        },
                    },
                ],
                color: [
                    "#831A08",
                    "#FF08D5",
                    "#0002CD",
                    "#5093F1",
                    "#3DB72F",
                    "#9FEFA1",
                    "#FFFFFF",
                ],
                series: [
                    {
                        name: "降雨等级",
                        type: "pie",
                        radius: ["50%", "65%"],
                        center: ["25%", "50%"],
                        label: {
                            show: true,
                            position: "center",
                            color: "#D4E8F8",
                            fontSize: 34,
                            fontFamily: "Roboto-Bold",
                            formatter: () => {
                                return total
                            },
                        },
                        labelLine: {
                            show: false,
                        },
                        itemStyle: {
                            borderRadius: 0,
                        },
                        data,
                    },
                ],
            }
            this.myChart.setOption(option)
        },
    },
}
</script>
 
<style lang="scss" scoped>
.echarts-box {
    width: 100%;
    height: 210px;
}
</style>