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}
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |