237 lines
8.1 KiB
JavaScript
237 lines
8.1 KiB
JavaScript
|
|
||
|
Vue.component("material-many-bar-chart", {
|
||
|
template: `
|
||
|
<div :style="{'height': height+'px'}" ref="chart"> </div>
|
||
|
`,
|
||
|
props: {
|
||
|
data:{
|
||
|
type:Object
|
||
|
},
|
||
|
yaxis:{
|
||
|
type:Boolean
|
||
|
},
|
||
|
height:{
|
||
|
type:Number
|
||
|
}
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
option:{},
|
||
|
}
|
||
|
},
|
||
|
created(){
|
||
|
|
||
|
},
|
||
|
mounted() {
|
||
|
this.init()
|
||
|
},
|
||
|
methods: {
|
||
|
init(){
|
||
|
this.getChartData()
|
||
|
},
|
||
|
//分类及工时情况
|
||
|
getChartData(){
|
||
|
// console.log(this.data)
|
||
|
// console.log(this.yaxis)
|
||
|
|
||
|
var chChartBar = echarts.init(this.$refs.chart);
|
||
|
this.$nextTick(() => {
|
||
|
this.echartBar(chChartBar,this.data,this.yaxis)
|
||
|
})
|
||
|
},
|
||
|
echartBar(myChart,data,state){
|
||
|
var that = this
|
||
|
let newPromise = new Promise((resolve) => {
|
||
|
resolve()
|
||
|
})
|
||
|
//然后异步执行echarts的初始化函数
|
||
|
newPromise.then(() => {
|
||
|
var unit = ''
|
||
|
if(data.unit){
|
||
|
unit = '单位:'+ data.unit
|
||
|
}
|
||
|
|
||
|
var yAxis= []
|
||
|
var grid = ''
|
||
|
if(state == true){
|
||
|
yAxis.push(
|
||
|
{
|
||
|
name:unit,
|
||
|
nameTextStyle: { //Y轴那么的样式
|
||
|
color: '#42d0ff',
|
||
|
fontSize: 14,
|
||
|
},
|
||
|
max:data.max,
|
||
|
type: "value",
|
||
|
axisLabel: {
|
||
|
textStyle: {
|
||
|
color: "#cbdaff",
|
||
|
},
|
||
|
formatter: "{value}",
|
||
|
},
|
||
|
splitLine: {
|
||
|
lineStyle: {
|
||
|
type: "dashed",
|
||
|
color: "#2f4472",
|
||
|
},
|
||
|
},
|
||
|
axisLine: {
|
||
|
show: true,
|
||
|
lineStyle: {
|
||
|
color: "#2f4472",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
)
|
||
|
grid = {
|
||
|
left: "15%",
|
||
|
top: "20%",
|
||
|
right: "0%",
|
||
|
bottom: "10%",
|
||
|
}
|
||
|
}else{
|
||
|
yAxis.push(
|
||
|
{
|
||
|
nameTextStyle: { //Y轴那么的样式
|
||
|
color: '#42d0ff',
|
||
|
fontSize: 14,
|
||
|
},
|
||
|
max:data.max,
|
||
|
type: "value",
|
||
|
axisLabel: {show: false},
|
||
|
axisTick: {show: false},
|
||
|
splitLine: {
|
||
|
lineStyle: {
|
||
|
type: "dashed",
|
||
|
color: "#2f4472",
|
||
|
},
|
||
|
},
|
||
|
axisLine: {
|
||
|
show: true,
|
||
|
lineStyle: {
|
||
|
color: "#2f4472",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
)
|
||
|
grid = {
|
||
|
left: "0%",
|
||
|
top: "30%",
|
||
|
right: "0%",
|
||
|
bottom: "10%",
|
||
|
}
|
||
|
}
|
||
|
this.option = {
|
||
|
tooltip: {
|
||
|
trigger: "axis",
|
||
|
axisPointer: {
|
||
|
type: "shadow",
|
||
|
label: {
|
||
|
show: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
grid: grid,
|
||
|
xAxis: {
|
||
|
data: data.xData,
|
||
|
axisLine: {
|
||
|
show: true, //隐藏X轴轴线
|
||
|
lineStyle: {
|
||
|
color: "#2f4472",
|
||
|
width: 1,
|
||
|
},
|
||
|
},
|
||
|
axisTick: {
|
||
|
show: true, //隐藏X轴刻度
|
||
|
alignWithLabel: true,
|
||
|
},
|
||
|
axisLabel: {
|
||
|
show: true,
|
||
|
textStyle: {
|
||
|
color: "#cbdaff", //X轴文字颜色
|
||
|
fontSize: 14,
|
||
|
},
|
||
|
interval: 0,
|
||
|
|
||
|
},
|
||
|
},
|
||
|
yAxis: yAxis,
|
||
|
series: [
|
||
|
{
|
||
|
name: data.legend[0],
|
||
|
type: "bar",
|
||
|
barWidth: 10,
|
||
|
barGap: 2,
|
||
|
label: {
|
||
|
normal: {
|
||
|
show: true,
|
||
|
position: "top",
|
||
|
color:"#fff"
|
||
|
},
|
||
|
},
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||
|
{
|
||
|
offset: 0,
|
||
|
color: "rgba(64,124,254,1)",
|
||
|
},
|
||
|
{
|
||
|
offset: 1,
|
||
|
color: "rgba(64,124,254,0.2)",
|
||
|
},
|
||
|
]),
|
||
|
},
|
||
|
},
|
||
|
data: data.yData_1,
|
||
|
},
|
||
|
{
|
||
|
name: data.legend[1],
|
||
|
type: "bar",
|
||
|
barWidth: 10,
|
||
|
barGap: 2,
|
||
|
label: {
|
||
|
normal: {
|
||
|
show: true,
|
||
|
position: "inside",
|
||
|
color:"#fff"
|
||
|
},
|
||
|
},
|
||
|
itemStyle: {
|
||
|
normal: {
|
||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
||
|
{
|
||
|
offset: 0,
|
||
|
color: "rgba(25,210,204,1)",
|
||
|
},
|
||
|
{
|
||
|
offset: 1,
|
||
|
color: "rgba(25,210,204,0.2)",
|
||
|
},
|
||
|
]),
|
||
|
},
|
||
|
},
|
||
|
data: data.yData_2,
|
||
|
},
|
||
|
|
||
|
],
|
||
|
};
|
||
|
|
||
|
myChart.setOption(this.option);
|
||
|
window.onresize = myChart.resize;
|
||
|
|
||
|
/*myChart.off('click')
|
||
|
|
||
|
myChart.on('click', function (params) {
|
||
|
that.$emit('chart',params.name);
|
||
|
})*/
|
||
|
})
|
||
|
},
|
||
|
},
|
||
|
watch:{
|
||
|
data:function () {
|
||
|
this.init()
|
||
|
}
|
||
|
}
|
||
|
})
|