47 lines
989 B
JavaScript
47 lines
989 B
JavaScript
import {groupBy} from 'lodash'
|
|
|
|
export default {
|
|
props: {
|
|
title: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
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}
|
|
}
|
|
}
|
|
}
|