pie.vue 2.76 KB
Newer Older
乐宝呗666's avatar
乐宝呗666 committed
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
<template>
    <div :id="idstr"></div>
</template>

<script>
// 引入基本模板
let echarts = require('echarts/lib/echarts')
// 引入提示框和title组件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')

export default {
  data () {
    return {
      dataObj: {},
      option: {},
      chart: null,
      clickNum: [1, 1, 1, 1, 1],
      type: [] // 后台给我的数据是type
    }
  },
  props: ['message', 'idstr'],
  // props: {
  //   message: {
  //     type: Array,
  //     default: () => {
  //       return []
  //     }
  //   },
  //   idstr: {
  //     type: String,
  //     default: ''
  //   }
  // },
  mounted () {
    this.drawLine()
  },
  methods: {
    drawLine () {
      let vm = this
      // 基于准备好的dom,初始化echarts实例
      vm.chart = echarts.init(document.getElementById(vm.idstr))
      // 清空图表
      vm.chart.clear()
      vm.option = {
        tooltip: {
          transitionDuration: 0,
          trigger: 'item',
          formatter: '{a} <br/>{b}: {c} ({d}%)'
        },
        color: ['#30DDF4', '#E23AA2', '#F5A623', '#D6FFBA', '#9FFED7'],
        legend: {
          orient: 'horizontal',
          data: this.message[0].title,
          right: 20,
          bottom: 10,
          textStyle: {
            color: '#ffffff' // 图例文字颜色
          },
          icon: 'circle', // 这个字段控制形状类型包括 circle,rect ,roundRect,triangle,diamond,pin,arrow,none
          itemWidth: 10, // 设置宽度
          itemHeight: 4, // 设置高度
          itemGap: 10 // 设置间距
        },
        series: [
          {
            name: '访问来源',
            type: 'pie',
            radius: ['40%', '60%'],
            center: ['50%', '50%'],
            avoidLabelOverlap: false,
            label: {
              show: false,
              position: 'center'
            },
            emphasis: { // hover效果,已经关闭
              label: {
                show: false,
                fontSize: '25',
                fontWeight: 'bold'
              }
            },
            labelLine: {
              show: false
            },
            data: this.message[0].data
          }
        ]
      }
      vm.drawBar()
      // window.addEventListener("resize",()=>{
      //     chart.resize();
      // });
    },
    drawBar () {
      // 绘制图表
      let vm = this
      vm.chart.setOption(vm.option)
      vm.eventList()
    },
    eventList () {
      let vm = this
      vm.chart.on('click', function (params) {
      })
    }
  },
  watch: {
    message: function () {
      let vm = this
      setTimeout(function () {
        vm.drawLine()
      }, 1000)
      // console.log(this.message)
    }
  }
}
</script>

<style lang="less">

</style>