Blame view

admin-web-master/src/views/active/couponlist/component/mapChart.vue 1.95 KB
3f535f30   杨鑫   '初始'
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
  <template>
    <!-- 地区分布统计 -->
    <div class="mapChartPage">
      <div ref="mapChart" class="mapChart" />
    </div>
  </template>
  
  <script>
  import { chinaMap } from '@/views/active/map.js'
  import ChartOption from './module.js'
  export default {
    props: {
      cityData: {
        type: Array,
        default: () => []
      }
    },
    data () {
      return {
        chart: new ChartOption('mapChart')
      }
    },
    watch: {
      cityData: {
        handler (nVal, oVal) {
          this.setOptions(this.chart.chart, nVal)
        },
        deep: true
      }
    },
    mounted () {
      this.initChart(this.chart)
    },
    methods: {
      // 访问分布情况
      initChart (chartObj) {
        chartObj.chart = this.$echarts.init(this.$refs[chartObj.name])
        this.$echarts.registerMap('mymap', chinaMap)
        this.setOptions(chartObj.chart, this.cityData)
      },
      setOptions (chart, data) {
        chart.setOption({
          title: {
            text: '访问分布情况 ',
            left: 'left'
          },
          tooltip: {
            trigger: 'item',
            showDelay: 0,
            transitionDuration: 0.3,
            formatter: (params) => {
              if (params.value) {
                return (
                  params.seriesName + '<br/>' + params.name + ' : ' + params.value
                )
              } else {
                return params.seriesName + '<br/>' + params.name + ' : ' + '0'
              }
            }
          },
          series: [
            {
              name: '访问量',
              type: 'map',
              zoom: 1.3,
              roam: true,
              map: 'mymap',
              emphasis: {
                label: {
                  show: true
                }
              },
              // 文本位置修正
              textFixed: {
                Alaska: [20, -20]
              },
              data
            }
          ]
        })
      }
    }
  }
  </script>
  
  <style lang="scss" scoped>
  .mapChartPage{
    width: 100%;
    height: 100%;
    .mapChart{
      width: 100%;
      height: 100%;
    }
  }
  </style>