From 1d45ea75308850ad0ef575ca28ba3f93552f097c Mon Sep 17 00:00:00 2001 From: zhuzhuanzhuan Date: 星期三, 24 一月 2024 16:01:58 +0800 Subject: [PATCH] 设备监控页面状态反馈按钮添加二次确认功能以及调整异常设备列表项字体颜色为红色显示 --- src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue | 521 ++++++++++++++++----------------------------------------- 1 files changed, 148 insertions(+), 373 deletions(-) diff --git a/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue b/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue index dfbbc21..da98855 100644 --- a/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue +++ b/src/views/mdc/base/modules/alarmAnalysis/alarmAnalysisMain.vue @@ -5,13 +5,13 @@ <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-col :md="7" :sm="7"> <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-col :lg="2" :md="2" :sm="2" :xs="2"> <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> </a-col> </a-row> @@ -19,62 +19,26 @@ </div> <div id="DeviceList"> <div class="openRateTrendDg"> - <!--<div id="Efficiency" class="container">--> - <!--<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">{{getFormattedTime(item.timeCount)}}--> - <!--<!–<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>--> - <a-table :columns="columns" :data-source="dataList" bordered :pagination="false" :scroll="{y:168}" + <a-table :columns="columns" :data-source="dataList" bordered :pagination="false" :scroll="{y:210}" :customRow="customRow" - rowKey="alarmCode" + rowKey="alarmCode" @expand="handleExpandChange" :loading="outerDataLoading" > - <span slot="timeCount" slot-scope="text">{{getFormattedTime(text)}}</span> - <!--<a-table--> - <!--slot="expandedRowRender"--> - <!--slot-scope="row"--> - <!--:columns="innerColumns"--> - <!--:data-source="row.innerDataList"--> - <!--:pagination="false"--> - <!--rowKey="equipmentId"--> - <!-->--> - <!--<span slot="duration" slot-scope="text">{{getFormattedTime(text)}}</span>--> - <!--</a-table>--> + <span slot="timeCount" slot-scope="text">{{text | getFormattedTime}}</span> + <a-table + slot="expandedRowRender" + slot-scope="row" + :columns="innerColumns" + :data-source="row.innerDataList" + :pagination="false" + rowKey="rowIndex" + :loading="innerDataLoading" + > + <span slot="duration" slot-scope="text">{{text | getFormattedTime}}</span> + </a-table> </a-table> </div> - <a-spin :spinning="spinning"> + <a-spin :spinning="echartLoading"> <div style="width: 100%;height: 100%;display: flex;"> <div id="MdcEquipmentWarningPie" style="height: 100%;width: 35%;"></div> <div id="MdcEquipmentWarningLine" style="height: 100%;width: 65%;"></div> @@ -97,21 +61,32 @@ const columns = [ { title: '鎶ヨ鍙�', dataIndex: 'alarmCode', key: 'alarmCode', align: 'center' }, - { title: '鍑虹幇娆℃暟', dataIndex: 'count', key: 'count', align: 'center' }, + { title: '鍑虹幇娆℃暟', dataIndex: 'count', key: 'count', align: 'center', sorter: (a, b) => b.count - a.count }, { title: '鍚堣鎸佺画鏃堕棿', dataIndex: 'timeCount', key: 'timeCount', scopedSlots: { customRender: 'timeCount' }, - align: 'center' + align: 'center', + sorter: (a, b) => b.timeCount - a.timeCount }, - { title: '鎶ヨ淇℃伅', dataIndex: 'alarmContent', key: 'alarmContent', align: 'center' } + { title: '鎶ヨ淇℃伅', dataIndex: 'alarmContent', key: 'alarmContent', align: 'center', ellipsis: true } ] const innerColumns = [ + { + title: '', + dataIndex: 'rowIndex', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + } + }, { title: '璁惧缂栧彿', dataIndex: 'equipmentId', key: 'equipmentId', align: 'center' }, { title: '璁惧鍚嶇О', dataIndex: 'equipmentName', key: 'equipmentName', align: 'center' }, - { title: '鎶ヨ鏃堕棿', dataIndex: 'alarmTime', key: 'alarmTime', align: 'center' }, + { title: '鎶ヨ鏃堕棿', dataIndex: 'startTime', key: 'startTime', align: 'center' }, { title: '缁撴潫鏃堕棿', dataIndex: 'endTime', key: 'endTime', align: 'center' }, { title: '鎸佺画鏃堕棿', @@ -130,8 +105,9 @@ return { dataSource: [], /* table鍔犺浇鐘舵�� */ - loading: false, - spinning:false, + outerDataLoading: false, + innerDataLoading: false, + echartLoading: false, typeTree: '', typeParent: 1, typeEquipment: 1, @@ -157,14 +133,16 @@ url: { efficiencyList: '/mdc/alarmAnalyze/alarmList', listByType: '/mdc/MdcUtilizationRate/getByType', - alarmTrend: '/mdc/alarmAnalyze/alarmTrend' + alarmTrend: '/mdc/alarmAnalyze/alarmTrend', + equipmentAlarmList: '/mdc/alarmAnalyze/equipmentAlarmList' }, tableHeads: [], pieDate: [0], XData: [0], YData: [0], columns, - innerColumns + innerColumns, + hasRequsetAlarmCodeList: [] } }, props: { nodeTree: '', Type: '', nodePeople: '' }, @@ -181,6 +159,10 @@ }, mounted() { this.drawWrin() + window.addEventListener('resize', this.handleWindowResize) + }, + beforeDestroy() { + window.removeEventListener('resize', this.handleWindowResize) }, watch: { Type(valmath) { @@ -220,6 +202,35 @@ } else { return '0' } + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + var hours = Math.floor(seconds / 3600) + var minutes = Math.floor((seconds % 3600) / 60) + var secs = seconds % 60 + + if (hours === 0) { + if (minutes === 0) { + return secs === 0 ? 0 : `${secs}绉抈 + } else { + if (secs === 0) { + return `${minutes}鍒哷 + } + return `${minutes}鍒� ${secs}绉抈 + } + } else { + if (minutes === 0 && secs === 0) { + return `${hours}灏忔椂` + } else if (minutes !== 0 && secs === 0) { + return `${hours}灏忔椂 ${minutes}鍒哷 + } + } + return `${hours}灏忔椂 ${minutes}鍒� ${secs}绉抈 } }, methods: { @@ -232,34 +243,34 @@ }, TableDraw(key, val) { let that = this - that.spinning=true + that.echartLoading = true that.queryParam.alarmCode = val.alarmCode console.log(this.queryParam) getAction(that.url.alarmTrend, that.queryParam) .then(res => { - if (res.success) { - that.pieDate=res.result.equipmentCountList.map(item=>{ - return { - name:item.key, - value:item.count - } - }) - that.XData=res.result.dateCountList.map(item=>item.key) - that.YData=res.result.dateCountList.map(item=>item.count) + if (res.success) { + that.pieDate = res.result.equipmentCountList.map(item => { + return { + name: item.key, + value: item.count + } + }) + that.XData = res.result.dateCountList.map(item => item.key) + that.YData = res.result.dateCountList.map(item => item.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() - } - }) - .finally(()=>{ - that.spinning=false + // 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() + } + }) + .finally(() => { + that.echartLoading = false }) console.log(this.YData) @@ -388,37 +399,14 @@ // } // } loadData1() { + this.outerDataLoading = true 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.dataList[0].innerDataList=[ - { - equipmentId: '11234', - equipmentName: '绔嬩綋鏈哄簥', - alarmTime: 20, - endTime: 20, - duration: 123 - }, - { - equipmentId: '4213', - equipmentName: '鍗у鏈哄簥', - alarmTime: 312, - endTime: 31, - duration: 421 - } - ] - this.dataList[1].innerDataList=[ - { - equipmentId: '4213', - equipmentName: '鍗у鏈哄簥', - alarmTime: 312, - endTime: 31, - duration: 421 - } - ] + this.hasRequsetAlarmCodeList = [] // this.draw() // this.checkSameData(this.dataList) // this.checkSameData1(this.dataList) @@ -427,10 +415,12 @@ // this.initDeviceType(this.dataList) } + }).finally(() => { + this.outerDataLoading = false }) }, drawWrin() { - let equipmentWarningPie = this.$echarts.init(document.getElementById('MdcEquipmentWarningPie'), 'macarons') + this.equipmentWarningPie = this.$echarts.init(document.getElementById('MdcEquipmentWarningPie'), 'macarons') let equipmentWarningPieOption = { title: { text: '鍚勮澶囧嚭鐜版鎶ヨ鐨勬瘮渚�', @@ -469,8 +459,8 @@ // data:[{name:'jjjjjjj',value:'2'}] }] } - equipmentWarningPie.setOption(equipmentWarningPieOption, true) - let equipmentWarningLine = this.$echarts.init(document.getElementById('MdcEquipmentWarningLine'), 'macarons') + this.equipmentWarningPie.setOption(equipmentWarningPieOption, true) + this.equipmentWarningLine = this.$echarts.init(document.getElementById('MdcEquipmentWarningLine'), 'macarons') let equipmentWarningLineOption = { title: { text: '姣忓ぉ鍑虹幇姝ゆ姤璀︾殑鏁伴噺璧板娍', @@ -538,36 +528,7 @@ } ] } - equipmentWarningLine.setOption(equipmentWarningLineOption, true) - }, - - /** - * 鏍煎紡鍖栨椂闂� - * @param seconds 绉掓暟 - * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� - */ - getFormattedTime(seconds) { - var hours = Math.floor(seconds / 3600) - var minutes = Math.floor((seconds % 3600) / 60) - var secs = seconds % 60 - - if (hours === 0) { - if (minutes === 0 ) { - return secs === 0 ? 0 : `${secs}绉抈 - } else { - if(secs=== 0 ){ - return `${minutes}鍒哷 - } - return `${minutes}鍒� ${secs}绉抈 - } - } else { - if (minutes === 0 && secs === 0) { - return `${hours}灏忔椂` - } else if (minutes !== 0 && secs === 0) { - return `${hours}灏忔椂 ${minutes}鍒哷 - } - } - return `${hours}灏忔椂 ${minutes}鍒� ${secs}绉抈 + this.equipmentWarningLine.setOption(equipmentWarningLineOption, true) }, /** @@ -581,10 +542,10 @@ on: { click: (event) => { // 濡傛灉鐐瑰嚮鐨勪笉鏄睍寮�鍥炬爣鍖哄煙鍒欐覆鏌撳浘琛紝鐩稿弽鍒欑浉褰撲簬鐐瑰嚮灞曞紑鍥炬爣 - if(event.target.className !== 'ant-table-row-expand-icon-cell'){ + if (event.target.className !== 'ant-table-row-expand-icon-cell') { this.TableDraw(index, record) - }else{ - if(event.target.children && event.target.children.length>0) event.target.children[0].click() + } else { + if (event.target.children && event.target.children.length > 0) event.target.children[0].click() } } } @@ -592,239 +553,43 @@ }, /** - * 鑷畾涔夊睍寮�琛ㄦ牸鍥炬爣 - * @param props 鍥炬爣灞炴�� - * @returns {null} 鑻ヤ富琛ㄦ暟鎹笅鏃犳暟鎹垯涓嶆樉绀哄浘鏍� + * 鑷畾涔夎〃鏍艰瑙﹀彂 + * @param expanded 褰撳墠琛屾槸鍚︿负灞曞紑鐘舵�� + * @param record 褰撳墠琛屼俊鎭� */ - expandIcon(props){ - console.log('props',props) - if (props.record.innerDataList&&props.record.innerDataList.length>0){ - if (props.expanded) { - return <a style="margin-right:0px;color:#999" onClick={e=> { - props.onExpand(props.record, e); - }}><a-icon type="minus" /></a> - } else{ - return <a style="margin-right:0px;color:#999" onClick={e => { - props.onExpand(props.record, e); - }}><a-icon type="plus"/></a> - } - }else{ - return null + handleExpandChange(expanded, record) { + let _this = this + // 褰撳睍寮�鏃惰嫢璇ヨ鏈灞曞紑杩囨墠浼氳姹傚悗鍙版暟鎹紝灞曞紑杩囩殑鏁版嵁浼氳缂撳瓨鏃犻渶閲嶅璇锋眰 + this.queryParam.alarmCode = record.alarmCode + if (expanded && !this.hasRequsetAlarmCodeList.includes(record.alarmCode)) { + this.innerDataLoading = true + getAction(this.url.equipmentAlarmList, this.queryParam).then(res => { + if (res.success) { + _this.dataList.forEach(item => { + if (item.alarmCode === record.alarmCode) { + item.innerDataList = res.result + } + }) + _this.hasRequsetAlarmCodeList.push(record.alarmCode) + } + }) + .finally(() => { + _this.innerDataLoading = false + }) } + }, + + /** + * 褰撴祻瑙堝櫒鍙绐楀彛灏哄鍙戠敓鏀瑰彉鏃惰Е鍙� + */ + handleWindowResize() { + if (this.equipmentWarningPie) this.equipmentWarningPie.resize() + if (this.equipmentWarningLine) this.equipmentWarningLine.resize() } } } </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;*/ - cursor: pointer; - } - - .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: 258px !important; - overflow: scroll; - } - } - - @media screen and (min-width: 1680px) and (max-width: 1920px) { - #Efficiency { - height: 258px !important; - overflow: scroll; - } - } - - @media screen and (min-width: 1400px) and (max-width: 1680px) { - #Efficiency { - height: 160px !important; - overflow: scroll; - } - } - - @media screen and (min-width: 1280px) and (max-width: 1400px) { - #Efficiency { - height: 60px !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; } @@ -832,15 +597,25 @@ /deep/ .ant-table-body .ant-table-row td { padding-top: 10px; padding-bottom: 10px; + } + + /deep/ .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > .ant-table-row td { cursor: pointer; } - /deep/ .ant-spin-nested-loading{ + /deep/ .ant-spin-nested-loading { height: 55%; } - /deep/ .ant-spin-container{ + /deep/ .ant-spin-container { height: 100%; } + /deep/ .ant-table.ant-table-bordered { + height: 265px; + } + + /deep/ .ant-table-scroll > .ant-table-placeholder { + height: 210px; + } </style> \ No newline at end of file -- Gitblit v1.9.3