myPies.vue 2.82 KB
Newer Older
caojm's avatar
caojm committed
1
<template>
co_dengxiongwen's avatar
co_dengxiongwen committed
2
  <div id="myPies" style="height: 100%"></div>
caojm's avatar
caojm committed
3 4 5 6
</template>

<script>
export default {
xiexingan's avatar
xiexingan committed
7
  name: 'myPies',
caojm's avatar
caojm committed
8 9
  data() {
    return {
xiexingan's avatar
xiexingan committed
10 11
      myPies: null
    }
caojm's avatar
caojm committed
12 13 14
  },

  mounted() {
xiexingan's avatar
xiexingan committed
15
    this.initPie()
caojm's avatar
caojm committed
16 17 18 19
  },

  methods: {
    initPie() {
xiexingan's avatar
xiexingan committed
20 21
      let myPie = document.getElementById('myPies')
      this.myPies = this.$echarts.init(myPie)
caojm's avatar
caojm committed
22
      const data = [
xiexingan's avatar
xiexingan committed
23 24 25 26
        { name: '冷', value: 150 },
        { name: '适中', value: 80 },
        { name: '热', value: 80 }
      ]
caojm's avatar
caojm committed
27 28
      const option = {
        tooltip: {
xiexingan's avatar
xiexingan committed
29
          trigger: 'item'
caojm's avatar
caojm committed
30
        },
caojm's avatar
caojm committed
31 32

        legend: {
caojm's avatar
caojm committed
33
          show: true,
co_dengxiongwen's avatar
co_dengxiongwen committed
34 35
          orient: 'horizontal',
          //   left: "center",
xiexingan's avatar
xiexingan committed
36
          bottom: '0',
caojm's avatar
caojm committed
37 38 39
          itemHeight: 13,
          itemWidth: 13,
          itemGap: 35,
xiexingan's avatar
xiexingan committed
40
          icon: 'circle',
caojm's avatar
caojm committed
41
          data: data,
caojm's avatar
caojm committed
42
          formatter: function (name) {
xiexingan's avatar
xiexingan committed
43 44 45
            var total = 0
            var target
            var value
caojm's avatar
caojm committed
46
            for (let i = 0, l = data.length; i < l; i++) {
xiexingan's avatar
xiexingan committed
47 48
              value = data[i].value
              total += data[i].value
caojm's avatar
caojm committed
49
              if (data[i].name == name) {
xiexingan's avatar
xiexingan committed
50
                target = data[i].value
caojm's avatar
caojm committed
51 52
              }
            }
xiexingan's avatar
xiexingan committed
53
            return name + '     ' + ((target / total) * 100).toFixed(0) + '%'
caojm's avatar
caojm committed
54 55 56 57
          },
          textStyle: {
            rich: {
              a: {
xiexingan's avatar
xiexingan committed
58
                color: '#333333',
caojm's avatar
caojm committed
59
                // verticalAlign: "top",
caojm's avatar
caojm committed
60 61
                // align: "center",
                // fontSize: 12,
caojm's avatar
caojm committed
62
                // padding: [10, 0, 28, 0]
xiexingan's avatar
xiexingan committed
63
                padding: 20
caojm's avatar
caojm committed
64 65 66 67
              },
              b: {
                // align: "left",
                // fontSize: 18,
caojm's avatar
caojm committed
68
                padding: [10, 10, 10, 0],
caojm's avatar
caojm committed
69
                // // lineHeight: 25,
xiexingan's avatar
xiexingan committed
70 71 72 73
                color: '#333333'
              }
            }
          }
caojm's avatar
caojm committed
74
        },
co_dengxiongwen's avatar
co_dengxiongwen committed
75 76 77 78 79
        color: [
          'rgba(72,154,254,1)',
          'rgba(247,243,204,1)',
          'rgba(236,73,104,1)'
        ],
caojm's avatar
caojm committed
80 81
        series: [
          {
xiexingan's avatar
xiexingan committed
82 83 84
            type: 'pie',
            radius: ['50%', '70%'],
            center: ['50%', '40%'],
caojm's avatar
caojm committed
85 86
            avoidLabelOverlap: false,
            label: {
xiexingan's avatar
xiexingan committed
87
              show: false,
xiexingan's avatar
xiexingan committed
88
              position: 'center',
caojm's avatar
caojm committed
89 90
              normal: {
                show: true,
xiexingan's avatar
xiexingan committed
91
                position: 'center',
caojm's avatar
caojm committed
92
                formatter: function () {
co_dengxiongwen's avatar
co_dengxiongwen committed
93
                  return `\r\n20000`
caojm's avatar
caojm committed
94 95 96
                },
                textStyle: {
                  fontSize: 30,
xiexingan's avatar
xiexingan committed
97 98
                  lineHeight: 20,
                  color: '#36CBCB'
xiexingan's avatar
xiexingan committed
99 100
                }
              }
caojm's avatar
caojm committed
101 102 103 104
            },
            emphasis: {
              label: {
                show: false,
xiexingan's avatar
xiexingan committed
105
                fontSize: '20',
xiexingan's avatar
xiexingan committed
106 107
                fontWeight: 'bold'
              }
caojm's avatar
caojm committed
108 109
            },
            labelLine: {
xiexingan's avatar
xiexingan committed
110
              show: false
caojm's avatar
caojm committed
111
            },
co_dengxiongwen's avatar
co_dengxiongwen committed
112
            data: [...data]
xiexingan's avatar
xiexingan committed
113 114 115 116 117 118 119 120
          }
        ]
      }
      this.myPies.setOption(option)
    }
  }
}
</script>