43 lines
		
	
	
		
			931 B
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			931 B
		
	
	
	
		
			JavaScript
		
	
	
	
import {groupBy} from 'lodash'
 | 
						|
 | 
						|
export default {
 | 
						|
  props: {
 | 
						|
    data: {
 | 
						|
      type: Array,
 | 
						|
      default: () => []
 | 
						|
    },
 | 
						|
    colors: {
 | 
						|
      type: Array,
 | 
						|
      default: () => []
 | 
						|
    }
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    hexToRgba(bgColor, alpha = 0.3) {
 | 
						|
      if (!bgColor) {
 | 
						|
        return '#fff'
 | 
						|
      }
 | 
						|
      let color = bgColor.slice(1) // 去掉'#'号
 | 
						|
      let rgba = [
 | 
						|
        parseInt('0x' + color.slice(0, 2)),
 | 
						|
        parseInt('0x' + color.slice(2, 4)),
 | 
						|
        parseInt('0x' + color.slice(4, 6)),
 | 
						|
        alpha,
 | 
						|
      ]
 | 
						|
      return 'rgba(' + rgba.toString() + ')'
 | 
						|
    },
 | 
						|
    translateData() {
 | 
						|
      const dataObj = groupBy(this.data, 'attr')
 | 
						|
      let xAxis = []
 | 
						|
      let maxLen = 0
 | 
						|
      Object.keys(dataObj).forEach(key => {
 | 
						|
        if (dataObj[key].length > maxLen) {
 | 
						|
          maxLen = dataObj[key].length || 0
 | 
						|
          xAxis = dataObj[key].map(item => item.name)
 | 
						|
        }
 | 
						|
      })
 | 
						|
 | 
						|
      return {xAxis, dataObj}
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |