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
  | <!-- 
 |   * @Author: daidai 
 |   * @Date: 2022-02-28 16:29:08 
 |   * @LastEditors: Please set LastEditors 
 |   * @LastEditTime: 2022-09-27 15:05:45 
 |   * @FilePath: \web-pc\src\pages\big-screen\components\echart\index.vue 
 |  --> 
 |  <template> 
 |    <div :id="id" :class="className" :style="{ height: height, width: width }" /> 
 |  </template> 
 |    
 |  <script> 
 |  import * as echarts from 'echarts'; 
 |  export default { 
 |    name: 'echart', 
 |    props: { 
 |      className: { 
 |        type: String, 
 |        default: 'chart' 
 |      }, 
 |      id: { 
 |        type: String, 
 |        default: 'chart' 
 |      }, 
 |      width: { 
 |        type: String, 
 |        default: '100%' 
 |      }, 
 |      height: { 
 |        type: String, 
 |        default: '100%' 
 |      }, 
 |      options: { 
 |        type: Object, 
 |        default: ()=>({}) 
 |      } 
 |    }, 
 |    data () { 
 |      return { 
 |        chart: null 
 |      } 
 |    }, 
 |    watch: { 
 |      options: { 
 |        handler (options) { 
 |          // 设置true清空echart缓存 
 |          this.chart.setOption(options, true) 
 |        }, 
 |        deep: true 
 |      } 
 |    }, 
 |    mounted () { 
 |      this.initChart(); 
 |    }, 
 |    beforeDestroy () { 
 |      this.chart.dispose() 
 |      this.chart = null 
 |    }, 
 |    methods: { 
 |      initChart () { 
 |        // 初始化echart 
 |        this.chart = echarts.init(this.$el) 
 |        this.chart.setOption(this.options, true) 
 |      } 
 |    } 
 |  } 
 |  </script> 
 |    
 |  <style> 
 |  </style> 
 |  
  |