|
|
|
|
@ -1,31 +1,9 @@ |
|
|
|
|
<template> |
|
|
|
|
<view class="eacharts-box"> |
|
|
|
|
<view class="eacharts-time"> |
|
|
|
|
<!-- <u-form :model="form" ref="uForm"> |
|
|
|
|
<u-form-item label="选择时间:" label-width="140" :border-bottom="false"> |
|
|
|
|
<u-input v-model="form.searchTime" type="select" @click="calendarShow = true" :border="true" |
|
|
|
|
placeholder="请选择时间" /> |
|
|
|
|
</u-form-item> |
|
|
|
|
</u-form> --> |
|
|
|
|
<u-calendar v-model="calendarShow" :mode="mode" @change="change"></u-calendar> |
|
|
|
|
</view> |
|
|
|
|
<!-- eacharts 图表 --> |
|
|
|
|
<view class="echarts" v-if="type == 'maintenanceStatistics'"> |
|
|
|
|
<view class="echarts" > |
|
|
|
|
<l-echart ref="chartRef" :key="Math.random()"></l-echart> |
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
<!-- 饼状图 --> |
|
|
|
|
<view class="echartsPie" v-if="type == 'maintenanceStatisticsPie'"> |
|
|
|
|
<view class="pie-item"> |
|
|
|
|
<view style="height:308rpx"><l-echart ref="chartRefPieLeft" :key="Math.random()"></l-echart></view> |
|
|
|
|
<text class="pie-title">故障现象分类</text> |
|
|
|
|
</view> |
|
|
|
|
<view class="pie-item"> |
|
|
|
|
<view style="height:308rpx"><l-echart ref="chartRefPieRight" :key="Math.random()"></l-echart></view> |
|
|
|
|
<text class="pie-title">设备分类</text> |
|
|
|
|
</view> |
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
</view> |
|
|
|
|
</template> |
|
|
|
|
<script> |
|
|
|
|
@ -53,17 +31,7 @@ export default { |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
mounted() { |
|
|
|
|
|
|
|
|
|
// 维修统计 |
|
|
|
|
if (this.type == "maintenanceStatistics") { |
|
|
|
|
this.upkeepStat() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
if (this.type == "maintenanceStatisticsPie") { |
|
|
|
|
this.pieStat() |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
// 维修统计 |
|
|
|
|
@ -72,12 +40,6 @@ export default { |
|
|
|
|
startTime: this.form.startTime, |
|
|
|
|
endTime: this.form.endTime, |
|
|
|
|
} |
|
|
|
|
// if(this.form.startTime!=''){ |
|
|
|
|
// query_.startTime=this.form.startTime |
|
|
|
|
// } |
|
|
|
|
// if(this.form.endTime!=''){ |
|
|
|
|
// query_.endTime=this.form.endTime |
|
|
|
|
// } |
|
|
|
|
this.$u.api.upkeepStat(query_).then(res => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
this.upkeepStatInfo = JSON.parse(JSON.stringify(res.data)) |
|
|
|
|
@ -85,36 +47,6 @@ export default { |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
// 饼图数据 |
|
|
|
|
pieStat() { |
|
|
|
|
let query_ = { |
|
|
|
|
startTime: this.form.startTime, |
|
|
|
|
endTime: this.form.endTime, |
|
|
|
|
} |
|
|
|
|
this.$u.api.pieStat(query_).then(res => { |
|
|
|
|
if (res.code == 200) { |
|
|
|
|
this.pieInfo = res.data |
|
|
|
|
this.maintenancePieLeftInit(); |
|
|
|
|
this.maintenancePieRightInit(); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
selectFun() { |
|
|
|
|
this.calendarShow = true; |
|
|
|
|
}, |
|
|
|
|
change(e) { |
|
|
|
|
this.form.startTime = e.startDate; |
|
|
|
|
this.form.endTime = e.endDate; |
|
|
|
|
this.form.searchTime = e.startDate + "-" + e.endDate; |
|
|
|
|
if (this.type == "maintenanceStatistics") { |
|
|
|
|
this.upkeepStat() |
|
|
|
|
} |
|
|
|
|
if (this.type == "maintenanceStatisticsPie") { |
|
|
|
|
this.pieStat() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 查询数据 |
|
|
|
|
}, |
|
|
|
|
// 维修统计柱状图 |
|
|
|
|
maintenanceInit() { |
|
|
|
|
let opts = { |
|
|
|
|
@ -174,147 +106,22 @@ export default { |
|
|
|
|
return chart; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
// 故障现象分类 |
|
|
|
|
maintenancePieLeftInit() { |
|
|
|
|
let opts = { |
|
|
|
|
series: [ |
|
|
|
|
{ |
|
|
|
|
name: "", |
|
|
|
|
type: "pie", |
|
|
|
|
radius: ['40%', '70%'], |
|
|
|
|
label: { |
|
|
|
|
// 饼图图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等. |
|
|
|
|
normal: { |
|
|
|
|
show: true, |
|
|
|
|
fontSize: 8, // 是否显示标签[ default: false ] |
|
|
|
|
position: "outside", // 标签的位置。'outside'饼图扇区外侧,通过视觉引导线连到相应的扇区。'inside','inner' 同 'inside',饼图扇区内部。'center'在饼图中心位置。 |
|
|
|
|
formatter: "{b}\n {c}", // 标签内容 |
|
|
|
|
color: '#000' |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
data: this.pieInfo.fault, |
|
|
|
|
emphasis: { |
|
|
|
|
itemStyle: { |
|
|
|
|
shadowBlur: 10, |
|
|
|
|
shadowOffsetX: 0, |
|
|
|
|
shadowColor: "rgba(0, 0, 0, 1)", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
labelLine: { |
|
|
|
|
// 标签的视觉引导线样式,在 label 位置 设置为'outside'的时候会显示视觉引导线。 |
|
|
|
|
normal: { |
|
|
|
|
show: true, // 是否显示视觉引导线。 |
|
|
|
|
length: 5, // 在 label 位置 设置为'outside'的时候会显示视觉引导线。 |
|
|
|
|
length2: 5, |
|
|
|
|
|
|
|
|
|
// 视觉引导项第二段的长度。 |
|
|
|
|
lineStyle: { |
|
|
|
|
// 视觉引导线的样式 |
|
|
|
|
type: "solid", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}; |
|
|
|
|
this.$refs.chartRefPieLeft.init((config) => { |
|
|
|
|
const { canvas } = config; |
|
|
|
|
const chart = echarts.init(canvas, null, config); |
|
|
|
|
chart.setOption(opts); |
|
|
|
|
// 需要把 chart 返回 |
|
|
|
|
return chart; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
maintenancePieRightInit() { |
|
|
|
|
let opts = { |
|
|
|
|
series: [ |
|
|
|
|
{ |
|
|
|
|
type: "pie", |
|
|
|
|
radius: ['40%', '70%'], |
|
|
|
|
label: { |
|
|
|
|
// 饼图图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等. |
|
|
|
|
normal: { |
|
|
|
|
show: true, |
|
|
|
|
fontSize: 8, // 是否显示标签[ default: false ] |
|
|
|
|
position: "outside", // 标签的位置。'outside'饼图扇区外侧,通过视觉引导线连到相应的扇区。'inside','inner' 同 'inside',饼图扇区内部。'center'在饼图中心位置。 |
|
|
|
|
formatter: "{b}\n {c}", // 标签内容 |
|
|
|
|
color: '#000' |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
data: this.pieInfo.device, |
|
|
|
|
labelLine: { |
|
|
|
|
// 标签的视觉引导线样式,在 label 位置 设置为'outside'的时候会显示视觉引导线。 |
|
|
|
|
normal: { |
|
|
|
|
show: true, // 是否显示视觉引导线。 |
|
|
|
|
length: 5, // 在 label 位置 设置为'outside'的时候会显示视觉引导线。 |
|
|
|
|
length2: 5, |
|
|
|
|
// 视觉引导项第二段的长度。 |
|
|
|
|
lineStyle: { |
|
|
|
|
// 视觉引导线的样式 |
|
|
|
|
type: "solid", |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}; |
|
|
|
|
this.$refs.chartRefPieRight.init((config) => { |
|
|
|
|
const { canvas } = config; |
|
|
|
|
const chart = echarts.init(canvas, null, config); |
|
|
|
|
chart.setOption(opts); |
|
|
|
|
// 需要把 chart 返回 |
|
|
|
|
return chart; |
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
</script> |
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|
.eacharts-box { |
|
|
|
|
background: #fff; |
|
|
|
|
margin: 0 40rpx 32rpx; |
|
|
|
|
margin: 0 32rpx 32rpx; |
|
|
|
|
border-radius: 20rpx; |
|
|
|
|
overflow: hidden; |
|
|
|
|
|
|
|
|
|
.eacharts-time { |
|
|
|
|
margin: 0 136rpx 0 24rpx; |
|
|
|
|
display: flex; |
|
|
|
|
flex-direction: row; |
|
|
|
|
|
|
|
|
|
text { |
|
|
|
|
line-height: 60rpx; |
|
|
|
|
color: rgba(16, 16, 16, 1); |
|
|
|
|
font-size: 28rpx; |
|
|
|
|
margin-top: 30rpx; |
|
|
|
|
margin-right: 10rpx; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
height: 368rpx; |
|
|
|
|
.echarts { |
|
|
|
|
width: calc(100% - 64rpx); |
|
|
|
|
height: 308rpx; |
|
|
|
|
margin: 0 auto 20rpx; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.echartsPie { |
|
|
|
|
width: calc(100% - 64rpx); |
|
|
|
|
min-height: 308rpx; |
|
|
|
|
margin: 0 auto 0; |
|
|
|
|
|
|
|
|
|
.pie-item { |
|
|
|
|
width: 100%; |
|
|
|
|
height: 368rpx; |
|
|
|
|
// float: left; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
.pie-title { |
|
|
|
|
height: 30rpx; |
|
|
|
|
text-align: center; |
|
|
|
|
display: block; |
|
|
|
|
color: rgba(16, 16, 16, 1); |
|
|
|
|
font-size: 28rpx; |
|
|
|
|
height: 328rpx; |
|
|
|
|
margin:30rpx auto 20rpx; |
|
|
|
|
overflow: hidden; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
</style> |