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
  | <template> 
 |      <div ref="main" style="width: 100%; height: 300px;"></div> 
 |  </template> 
 |    
 |  <script setup lang="ts"> 
 |      import { ref, inject, onMounted, defineProps, onUnmounted } from 'vue' 
 |    
 |      // 获取ref对象 
 |      const main = ref() 
 |    
 |      // 接收父级组件参数 
 |      const echarts: any = inject('ec') 
 |    
 |      // 接收父级组件参数 
 |      const props = defineProps({ 
 |          legendData: { 
 |              type: Array, 
 |              required: true 
 |          }, 
 |          seriesData: { 
 |              type: Array, 
 |              required: true 
 |          }, 
 |          xAxisData: { 
 |              type: Array, 
 |              required: true 
 |          } 
 |      }) 
 |    
 |      // 赋值操作 
 |      const init = (): void => { 
 |          let myChart1 = echarts.init(main.value) 
 |          let option = { 
 |              tooltip: { 
 |                  trigger: 'axis', 
 |                  backgroundColor: "#ffffff", 
 |                  axisPointer: { 
 |                      type: 'shadow' 
 |                  }, 
 |                  confine: true, 
 |                  textStyle: { 
 |                      fontSize: 12, 
 |                      color: "#000000" 
 |                  } 
 |              }, 
 |              legend: { 
 |                  bottom: '0', 
 |                  itemHeight: 10, 
 |                  itemWidth: 10, 
 |                  data: props.legendData 
 |              }, 
 |              grid: { 
 |                  top: '5%', 
 |                  left: '2%', 
 |                  right: '2%', 
 |                  bottom: '15%', 
 |                  containLabel: true 
 |              }, 
 |              xAxis: { 
 |                  type: 'category', 
 |                  axisLabel: { 
 |                      textStyle: { 
 |                          fontSize: 11 
 |                      } 
 |                  }, 
 |                  axisTick: { 
 |                      show: false 
 |                  }, 
 |                  data: props.xAxisData 
 |              }, 
 |              yAxis: { 
 |                  type: 'value', 
 |                  axisLabel: { 
 |                      textStyle: { 
 |                          fontSize: 11 
 |                      } 
 |                  }, 
 |                  axisLine: { 
 |                      show: false 
 |                  }, 
 |                  axisTick: { 
 |                      show: false 
 |                  } 
 |              }, 
 |              series: props.seriesData 
 |          }; 
 |    
 |          myChart1.setOption(option); 
 |    
 |          myChart1.resize() 
 |      } 
 |    
 |      const resizeEvent = () => { 
 |          let myChart1 = echarts.init(main.value) 
 |          myChart1.resize() 
 |      } 
 |    
 |      // 初始化图表 
 |      onMounted(() => { 
 |          init() 
 |          window.addEventListener('resize', resizeEvent, false) 
 |      }) 
 |    
 |      // 组件销毁 
 |      onUnmounted(() => { 
 |          window.removeEventListener('resize', resizeEvent) 
 |      }) 
 |  </script> 
 |    
 |  <style lang="scss" scoped> 
 |    
 |  </style> 
 |  
  |