<template>
|
<div class="efficiency_list" style="width: 100%;height: 100%;">
|
<a-card :bordered="false">
|
<!-- 查询区域 -->
|
<div class="table-page-search-wrapper">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-row :gutter="24">
|
<a-col :md="6" :sm="6">
|
<a-form-item label="时间">
|
<a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/>
|
</a-form-item>
|
</a-col>
|
<a-col :lg="2" :md="3" :sm="3" :xs="3">
|
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
|
</a-col>
|
</a-row>
|
</a-form>
|
</div>
|
<div id="DeviceList">
|
<div class="openRateTrendDg">
|
<div id="Efficiency" class="container" style="margin-top: 20px;">
|
<div class="table2">
|
<table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap;text-align: left;">
|
<thead>
|
<tr class="thead fixed equipname">
|
<th class="thgu dong1 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">报警号</th>
|
<th class="thgu dong2 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">出现次数</th>
|
<th class="thgu dong3 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">合计持续时间(秒)</th>
|
<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">报警信息</th>
|
<!--<template v-for="(tableHead, index) in tableHeads">-->
|
<!--<th class="timeth" :colspan="checkedList.length">{{tableHead}}</th>-->
|
<!--</template>-->
|
</tr>
|
</thead>
|
<tbody>
|
<tr class="mathData" v-for="(item, index) in dataList" @click="TableDraw(index,item)">
|
<td class="tdgu kaitou">{{item.alarmCode}}</td>
|
<td class="tdgu1 kaitou">{{item.count}}</td>
|
<td class="tdgu2 kaitou">{{item.timeCount}}</td>
|
<td class="tdgu3 kaitou">{{item.alarmContent}}</td>
|
<!--<template v-for="(tableHead, index) in item.dataList">-->
|
<!--<td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td>-->
|
<!--</template>-->
|
</tr>
|
</tbody>
|
</table>
|
</div>
|
</div>
|
</div>
|
<div style="width: 100%;height: 60%;display: flex;">
|
<div id="MdcEquipmentWarningPie" style="height: 100%;width: 35%;"></div>
|
<div id="MdcEquipmentWarningLine" style="height: 100%;width: 65%;"></div>
|
</div>
|
</div>
|
</a-card>
|
</div>
|
</template>
|
|
<script>
|
import moment from 'moment'
|
import { putAction, getAction } from '@/api/manage'
|
import $ from 'jquery'
|
import '@/components/table2excel/table2excel'
|
import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
|
import {
|
JeecgListMixin
|
} from '@/mixins/JeecgListMixin'
|
export default {
|
// mixins: [JeecgListMixin],
|
name: 'alarmAnalysisMain',
|
components: {},
|
data() {
|
return {
|
dataSource: [],
|
/* table加载状态 */
|
loading: false,
|
typeTree: "",
|
typeParent: 1,
|
typeEquipment: 1,
|
TreeIDOne: 1,
|
TreeIDTwo: 2,
|
deviceTypeDict: '',
|
dates: [],
|
identifying: [],
|
queryParam: {},
|
queryParams: {},
|
queryParamEquip: {},
|
queryParamPeople: {},
|
efficiencyOptions: [
|
{ label: '利用率', value: 'lyl' },
|
{ label: '开机率', value: 'kjl' },
|
{ label: '开机时间', value: 'kjsj' },
|
{ label: '加工时间', value: 'jgsj' },
|
{ label: '待机时间', value: 'djsj' },
|
{ label: '关机时间', value: 'gjsj' }
|
],
|
checkedList: ['lyl'],
|
dataList: [],
|
url: {
|
efficiencyList: '/mdc/alarmAnalyze/alarmList',
|
listByType: '/mdc/MdcUtilizationRate/getByType',
|
alarmTrend: '/mdc/alarmAnalyze/alarmTrend'
|
},
|
tableHeads: [],
|
pieDate:[0],
|
XData:[0],
|
YData:[0],
|
}
|
},
|
props: { nodeTree: '', Type: '', nodePeople: '' },
|
/**
|
* 生命周期 挂载前
|
* */
|
created() {
|
this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)]
|
this.queryParam.startDate = moment(this.dates[0]).format('YYYYMMDD')
|
this.queryParam.endDate = moment(this.dates[1]).format('YYYYMMDD')
|
this.queryParam.typeTree = "1"
|
this.loadData1()
|
|
},
|
mounted(){
|
this.drawWrin()
|
},
|
watch: {
|
Type(valmath) {
|
this.dataList = [];
|
this.queryParam.typeTree = valmath
|
},
|
nodeTree(val) { //监听currSelected 变化,将变化后的数值传递给 getCurrSelected 事件
|
if (JSON.stringify(val) != '{}') {
|
if (val.equipmentId != null) {
|
this.queryParamEquip.parentId = ''
|
this.queryParamEquip.equipmentId = val.equipmentId
|
} else {
|
this.queryParamEquip.parentId = val.key
|
this.queryParamEquip.equipmentId = ''
|
}
|
/*这里你是监听到树得变化 是不是请求一次*/
|
this.searchQuery()
|
}
|
},
|
nodePeople(val) {
|
if (JSON.stringify(val) != '{}') {
|
if (val.equipmentId != null) {
|
this.queryParamPeople.parentId = val.equipmentId
|
this.queryParamPeople.equipmentId = ''
|
} else {
|
this.queryParamPeople.parentId = val.key
|
this.queryParamPeople.equipmentId = ''
|
}
|
this.searchQuery()
|
}
|
}
|
},
|
filters: {
|
numFilter(value) {
|
if (value) {
|
return parseFloat((value * 100).toFixed(2))
|
} else {
|
return '0'
|
}
|
}
|
},
|
methods: {
|
numBerTwo(value){
|
if (value) {
|
return parseFloat((value * 100).toFixed(2))
|
} else {
|
return '0'
|
}
|
},
|
TableDraw(key,val) {
|
let that = this
|
that.queryParam.alarmCode = val.alarmCode
|
console.log(this.queryParam)
|
that.pieDate = []
|
that.XData = []
|
that.YData = []
|
getAction(that.url.alarmTrend, that.queryParam).then(res => {
|
if (res.success) {
|
for (var i = 0;i<res.result.equipmentCountList.length;i++){
|
that.pieDate.push({name:res.result.equipmentCountList[i].key,value:res.result.equipmentCountList[i].count})
|
}
|
for (var j = 0;j<res.result.dateCountList.length;j++){
|
that.XData.push(res.result.dateCountList[j].key)
|
that.YData.push(res.result.dateCountList[j].count)
|
}
|
// this.tableHeads = res.result.dates
|
// this.dataList = res.result
|
// this.draw()
|
// this.checkSameData(this.dataList)
|
// this.checkSameData1(this.dataList)
|
// this.checkSameData2(this.dataList)
|
// this.combineCell();
|
// this.initDeviceType(this.dataList)
|
that.drawWrin()
|
}
|
})
|
console.log(this.YData)
|
|
},
|
disabledDate(current) {
|
//Can not slect days before today and today
|
return current && current > moment().subtract('days', 1);
|
},
|
initDeviceType(deviceList) {
|
let dictCode = 'mdc_equipmentType'
|
let items = []
|
items = getDictItemsFromCache(dictCode)
|
if (deviceList && items.length > 0) {
|
for (let a = 0; a < deviceList.length; a++) {
|
if (items && items.length > 0) {
|
for (let i = 0; i < items.length; i++) {
|
if (deviceList[a].equipmentType == items[i].value) {
|
deviceList[a].equipmentType = items[i].title
|
}
|
}
|
} else {
|
ajaxGetDictItems(dictCode, null).then((res) => {
|
if (res.success) {
|
let items = res.result
|
for (let i = 0; i < items.length; i++) {
|
if (deviceList[a].equipmentType == items[i].value) {
|
deviceList[a].equipmentType = items[i].title
|
}
|
}
|
}
|
})
|
}
|
}
|
}
|
},
|
dateParamChange(v1, v2) {
|
this.queryParam.startDate = v2[0]
|
this.queryParam.endDate = v2[1]
|
},
|
searchQuery() {
|
if (this.dates&&this.dates.length>0){
|
if (this.queryParam.typeTree == "1") {
|
this.queryParam.parentId = this.queryParamEquip.parentId
|
this.queryParam.equipmentId = this.queryParamEquip.equipmentId
|
} else {
|
this.queryParam.parentId = this.queryParamPeople.parentId
|
this.queryParam.equipmentId = ""
|
}
|
this.loadData1()
|
} else{
|
this.$notification.warning({
|
message:'提示',
|
description:'请选择时间'
|
})
|
}
|
|
// this.onClearSelected()
|
},
|
// searchReset() {
|
// this.typeTree = this.queryParam.typeTree
|
// this.typeParent = this.queryParam.parentId
|
// this.typeEquipment = this.queryParam.equipmentId
|
// this.queryParam = {}
|
// this.dates = []
|
// this.queryParam.typeTree = this.typeTree
|
// this.queryParam.parentId = this.typeParent
|
// this.queryParam.equipmentId = this.typeEquipment
|
// // this.ipagination.current = 1
|
// this.loadData1();
|
// // this.queryParam = {}
|
// // this.dates = []
|
// // this.loadData()
|
// // this.onClearSelected()
|
// },
|
// loadData1() {
|
// let that = this
|
// that.columns=[
|
// {
|
// title: '设备编号',
|
// align: 'center',
|
// dataIndex: 'equipmentId',
|
// width:'150px'
|
// },
|
// {
|
// title: '设备名称',
|
// align: 'center',
|
// dataIndex: 'equipmentName',
|
// width:'150px'
|
// },
|
// ]
|
// that.tableHeads = []
|
// that.dataList = []
|
// getAction(this.url.efficiencyList, that.queryParam).then(res => {
|
// var tmp = {}
|
// console.log(res)
|
// if (res.success)
|
//
|
// that.dataSource = res.result.mdcEfficiencyList
|
// for(var k = 0;k<that.dataSource[0].dataList.length;k++){
|
// that.columns.push(
|
// {
|
// title:that.dataSource[0].dataList.theDate,
|
// align: 'center',
|
// width:'120px',
|
// // dataIndex:'utilizationRate',
|
// }
|
// )
|
// }
|
// for(var i = 0;i<that.dataSource.length;i++){
|
// for (var j = 0; j < that.dataSource[i].dataList.length;j++){
|
// // that.columns.push(
|
// // {
|
// // title:that.dataSource[0].dataList[j].theDate,
|
// // align: 'center',
|
// // width:'120px',
|
// // dataIndex:'utilizationRate',
|
// // }
|
// // )
|
// }
|
//
|
// }
|
// console.log(that.columns)
|
// console.log(that.dataSource)
|
// // this.initDeviceType(this.dataList)
|
// this.draw()
|
// }
|
// }
|
loadData1() {
|
this.tableHeads = []
|
this.dataList = []
|
getAction(this.url.efficiencyList, this.queryParam).then(res => {
|
if (res.success) {
|
// this.tableHeads = res.result.dates
|
this.dataList = res.result
|
// this.draw()
|
// this.checkSameData(this.dataList)
|
// this.checkSameData1(this.dataList)
|
// this.checkSameData2(this.dataList)
|
// this.combineCell();
|
// this.initDeviceType(this.dataList)
|
|
}
|
})
|
},
|
drawWrin(){
|
let equipmentWarningPie = this.$echarts.init(document.getElementById('MdcEquipmentWarningPie'), 'macarons');
|
let equipmentWarningPieOption = {
|
title: {
|
text: '各设备出现此报警的比例',
|
x: 'center',
|
y: 'bottom'
|
},
|
tooltip: {
|
trigger: 'item',
|
formatter: "<br/>{b} : {c} ({d}%)"
|
},
|
calculable: true,
|
series: [{
|
type: 'pie',
|
radius: '60%',
|
center: ['55%', '55%'],
|
itemStyle: {
|
normal: {
|
/*color: function (params) {
|
var colorList = ['#4169E1', '#A8A8A8'];
|
return colorList[params.dataIndex]
|
},*/
|
label: {
|
show: true,
|
position: 'top',
|
formatter: '{b}\n{c}'
|
}
|
}
|
},
|
data:this.pieDate
|
// data:[{name:'jjjjjjj',value:'2'}]
|
}]
|
};
|
equipmentWarningPie.setOption(equipmentWarningPieOption,true);
|
let equipmentWarningLine = this.$echarts.init(document.getElementById('MdcEquipmentWarningLine'), 'macarons');
|
let equipmentWarningLineOption = {
|
title : {
|
text: '每天出现此报警的数量走势',
|
x: 'center',
|
y: 'bottom'
|
},
|
tooltip:{
|
trigger: 'item'
|
},
|
calculable: true,
|
xAxis: [
|
{
|
type: 'category',
|
show: true,
|
data:this.XData
|
/*axisLabel :{
|
interval:0
|
}*/
|
}
|
],
|
yAxis: [
|
{
|
type: 'value',
|
name: '次数'
|
}
|
],
|
series: [
|
{
|
name: '报警数量',
|
type: 'line',
|
data: this.YData,
|
markPoint : {
|
data : [
|
{type : 'max', name: '最大值'},
|
{type : 'min', name: '最小值'}
|
]
|
}
|
}
|
]
|
};
|
equipmentWarningLine.setOption(equipmentWarningLineOption,true);
|
}
|
}
|
}
|
</script>
|
<style scoped>
|
.dataContent {
|
white-space: nowrap;
|
/*margin: 0;*/
|
/*border: none;*/
|
border-collapse: separate;
|
border-spacing: 0;
|
/*table-layout: fixed;*/
|
border: 1px solid #ccc;
|
/*border: 1px solid #ccc;*/
|
width: 100%;
|
/*height: 100%;*/
|
/*overflow: hidden;*/
|
/*overflow-y: auto;*/
|
text-align: center;
|
}
|
|
/*.dataContent .fixed th {*/
|
/*width: 50px;*/
|
/*}*/
|
|
.dataContent .thead th {
|
background-color: #fafafa;
|
text-align: center;
|
height: 30px;
|
padding: 5px;
|
}
|
|
.dataContent .notfixed th {
|
/*width: auto;*/
|
}
|
|
.dataContent tr td {
|
height: 35px;
|
}
|
.dataContent .mathData:hover td{
|
background-color: #e6f7ff;
|
}
|
.dataContent .mathData td {
|
padding: 10px;
|
/*display: none;*/
|
}
|
|
.dataContent .mathData .td {
|
/*background-color: #ff9bd2;*/
|
display: inline-block;
|
padding: 10px;
|
}
|
|
.dataContent .mathData .tdd {
|
/*display: none;*/
|
}
|
.table2{
|
width: 100%;
|
height: 100%;
|
overflow: auto;
|
}
|
/*tr th {*/
|
/*height: 50px!important;*/
|
/*}*/
|
/*tr td{*/
|
/*height: 50px!important;*/
|
/*}*/
|
.table2 thead tr th:first-child,
|
.table tbody tr .tdgu{
|
position: sticky;
|
left: 0;
|
z-index: 1;
|
}
|
.table tbody tr .kaitou{
|
z-index: 1;
|
background-color: white;
|
}
|
.table tbody tr .tdgu1{
|
position: sticky;
|
left: 150px;
|
z-index: 2;
|
}
|
.table tbody tr .tdgu2{
|
position: sticky;
|
left: 300px;
|
z-index: 2;
|
}
|
.table tbody tr .tdgu3{
|
position: sticky;
|
left: 450px;
|
z-index: 2;
|
}
|
.table tbody tr .tdgu4{
|
position: sticky;
|
left: 550px;
|
z-index: 2;
|
}
|
.table tbody tr .tdgu5{
|
position: sticky;
|
left: 700px;
|
z-index: 2;
|
}
|
.table2 thead tr .timeth,
|
.table2 thead tr .thgu {
|
position: sticky;
|
top:0;
|
z-index: 3;
|
}
|
.table2 thead .gudingth th{
|
position: sticky;
|
top: 32px;
|
z-index: 6!important;
|
}
|
.table2 thead .equipname .name{
|
z-index: 3;
|
}
|
.table2 thead .equipname .dong1{
|
z-index: 4;
|
left: 0;
|
/*border: 1px solid #000;*/
|
}
|
.table2 thead .equipname .dong2{
|
z-index: 5;
|
left: 150px;
|
}
|
.table2 thead .equipname .dong3{
|
z-index: 5;
|
left: 300px;
|
}
|
.table2 thead .equipname .dong4{
|
z-index: 5;
|
left: 450px;
|
}
|
.table2 thead .equipname .dong5{
|
z-index: 5;
|
left: 550px;
|
}
|
.table2 thead .equipname .dong6{
|
z-index: 5;
|
left: 700px;
|
}
|
|
@media screen and (min-width: 1920px){
|
#Efficiency{
|
height: 337px!important;
|
overflow: scroll;
|
}
|
}
|
@media screen and (min-width: 1680px) and (max-width: 1920px){
|
#Efficiency{
|
height: 337px!important;
|
overflow: scroll;
|
}
|
}
|
@media screen and (min-width: 1400px) and (max-width: 1680px){
|
#Efficiency{
|
height: 190px!important;
|
overflow: scroll;
|
}
|
}
|
@media screen and (min-width: 1280px) and (max-width: 1400px){
|
#Efficiency{
|
height: 90px!important;
|
overflow: scroll;
|
}
|
}
|
@media screen and (max-width: 1280px){
|
#Efficiency{
|
height: 90px!important;
|
overflow: scroll;
|
}
|
}
|
#Efficiency .table_guding1{
|
position: absolute;
|
overflow: hidden;
|
width: 500px;
|
}
|
#Efficiency .table_guding2{
|
overflow-x: scroll;
|
width: 500px;
|
}
|
/deep/ .ant-card{
|
height: 100%!important;
|
}
|
/deep/ .ant-card .ant-card-body{
|
height: 100%!important;
|
}
|
.efficiency_list #DeviceList{
|
height: 90%!important;
|
}
|
</style>
|