141 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
		
		
			
		
	
	
			141 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
| 
								 | 
							
								<template>
							 | 
						||
| 
								 | 
							
								  <VueEcharts :options="options" autoresize style="width: 100%;height: 100%;"></VueEcharts>
							 | 
						||
| 
								 | 
							
								</template>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script>
							 | 
						||
| 
								 | 
							
								import * as echarts from 'echarts'
							 | 
						||
| 
								 | 
							
								import echartsMixin from "../mixins/echarts.mixin";
							 | 
						||
| 
								 | 
							
								export default {
							 | 
						||
| 
								 | 
							
								  name: "Bar",
							 | 
						||
| 
								 | 
							
								  mixins: [echartsMixin],
							 | 
						||
| 
								 | 
							
								  data () {
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  computed: {
							 | 
						||
| 
								 | 
							
								    options () {
							 | 
						||
| 
								 | 
							
								      const { xAxis, dataObj } = this.translateData()
							 | 
						||
| 
								 | 
							
								      return {
							 | 
						||
| 
								 | 
							
								        xAxis: {
							 | 
						||
| 
								 | 
							
								          type: 'category',
							 | 
						||
| 
								 | 
							
								          axisLabel: {
							 | 
						||
| 
								 | 
							
								            fontSize: 14,
							 | 
						||
| 
								 | 
							
								            textStyle: {
							 | 
						||
| 
								 | 
							
								              color: '#7da4d4',
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          axisLine: {
							 | 
						||
| 
								 | 
							
								            show: true,
							 | 
						||
| 
								 | 
							
								            lineStyle: {
							 | 
						||
| 
								 | 
							
								              color: ['#36537D'],
							 | 
						||
| 
								 | 
							
								              type: 'solid',
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          axisTick: {
							 | 
						||
| 
								 | 
							
								            show: false,
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          splitLine: {
							 | 
						||
| 
								 | 
							
								            show: false,
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          splitArea: {
							 | 
						||
| 
								 | 
							
								            show: false,
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          data: xAxis
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        grid: {
							 | 
						||
| 
								 | 
							
								          left: '0',
							 | 
						||
| 
								 | 
							
								          right: '0',
							 | 
						||
| 
								 | 
							
								          bottom: '3%',
							 | 
						||
| 
								 | 
							
								          top: '15%',
							 | 
						||
| 
								 | 
							
								          containLabel: true,
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        tooltip: {
							 | 
						||
| 
								 | 
							
								          trigger: 'axis',
							 | 
						||
| 
								 | 
							
								          axisPointer: {
							 | 
						||
| 
								 | 
							
								            // 坐标轴指示器,坐标轴触发有效
							 | 
						||
| 
								 | 
							
								            type: 'shadow', // 默认为直线,可选为:'line' | 'shadow'
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        legend: {
							 | 
						||
| 
								 | 
							
								          left: 'right',
							 | 
						||
| 
								 | 
							
								          top: '4%',
							 | 
						||
| 
								 | 
							
								          textStyle: {
							 | 
						||
| 
								 | 
							
								            color: '#ffffff',
							 | 
						||
| 
								 | 
							
								            fontSize: 14,
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          lineStyle: {
							 | 
						||
| 
								 | 
							
								            width: 4
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        yAxis: {
							 | 
						||
| 
								 | 
							
								          type: 'value',
							 | 
						||
| 
								 | 
							
								          show: true,
							 | 
						||
| 
								 | 
							
								          minInterval: 1,
							 | 
						||
| 
								 | 
							
								          splitNumber: 5,
							 | 
						||
| 
								 | 
							
								          axisTick: {
							 | 
						||
| 
								 | 
							
								            show: false,
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          axisLine: {
							 | 
						||
| 
								 | 
							
								            show: false,
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          axisLabel: {
							 | 
						||
| 
								 | 
							
								            fontSize: 14,
							 | 
						||
| 
								 | 
							
								            textStyle: {
							 | 
						||
| 
								 | 
							
								              color: '#7da4d4',
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          splitLine: {
							 | 
						||
| 
								 | 
							
								            show: true,
							 | 
						||
| 
								 | 
							
								            lineStyle: {
							 | 
						||
| 
								 | 
							
								              color: ['#36537D'],
							 | 
						||
| 
								 | 
							
								              type: 'solid',
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          splitArea: {
							 | 
						||
| 
								 | 
							
								            show: false,
							 | 
						||
| 
								 | 
							
								            areaStyle: {
							 | 
						||
| 
								 | 
							
								              color: 'rgba(54,101,146,0.15)',
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        series: Object.keys(dataObj).map((item, attrIndex) => {
							 | 
						||
| 
								 | 
							
								          const data = dataObj[item]
							 | 
						||
| 
								 | 
							
								          const _data = data.map((datum, index) => {
							 | 
						||
| 
								 | 
							
								            if (datum.name === xAxis[index]) {
							 | 
						||
| 
								 | 
							
								              return datum.value
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            return null
							 | 
						||
| 
								 | 
							
								          })
							 | 
						||
| 
								 | 
							
								          const colors = this.colors[attrIndex]
							 | 
						||
| 
								 | 
							
								          const [ startColor, endColor ] = colors
							 | 
						||
| 
								 | 
							
								          return {
							 | 
						||
| 
								 | 
							
								            barWidth: 6,
							 | 
						||
| 
								 | 
							
								            type: 'bar',
							 | 
						||
| 
								 | 
							
								            name: item,
							 | 
						||
| 
								 | 
							
								            data: _data,
							 | 
						||
| 
								 | 
							
								            itemStyle: {
							 | 
						||
| 
								 | 
							
								              normal: {
							 | 
						||
| 
								 | 
							
								                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
							 | 
						||
| 
								 | 
							
								                  {
							 | 
						||
| 
								 | 
							
								                    offset: 0,
							 | 
						||
| 
								 | 
							
								                    color: this.hexToRgba(startColor || '#1EB5FF', '1'),
							 | 
						||
| 
								 | 
							
								                  },
							 | 
						||
| 
								 | 
							
								                  {
							 | 
						||
| 
								 | 
							
								                    offset: 1,
							 | 
						||
| 
								 | 
							
								                    color: this.hexToRgba(endColor || startColor || this.colors[attrIndex] || '#1EB5FF', '0.2'),
							 | 
						||
| 
								 | 
							
								                  },
							 | 
						||
| 
								 | 
							
								                ]),
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<style scoped>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</style>
							 |