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/efficiencyPOReport/EfficiencyPOList.vue | 257 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 152 insertions(+), 105 deletions(-) diff --git a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue index 66530ca..be9c4d5 100644 --- a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue +++ b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue @@ -19,12 +19,24 @@ <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> </a-form-item> </a-col> - <a-col :md="14" :sm="14"> + <a-col :md="14" :sm="14" style="display: flex;align-items: flex-start;-webkit-align-items: flex-start;justify-content: space-between;"> <a-space> <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> </a-space> + <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;margin-left: 24px"> + <tr> + <td v-for="(item, index) in identifying">{{item.title}}</td> + </tr> + <tr> + <td style="text-align:center;" v-for="(item, index) in identifying"> + <div class="identifyingclass" :style="{background: item.color}"></div> + </td> + <!--<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #e8ff37;display:inline-block"></div></td>--> + <!--<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #99ff4e;display:inline-block"></div></td>--> + </tr> + </table> </a-col> </a-row> <a-row :gutter="24"> @@ -35,79 +47,99 @@ </a-row> </a-form> </div> - <div style="width: 530px;position: absolute;top: 0; right:1.5%;"> - <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;"> - <tr> - <td v-for="(item, index) in identifying">{{item.title}}</td> - </tr> - <tr> - <td style="text-align:center;" v-for="(item, index) in identifying"> - <div class="identifyingclass" :style="{background: item.color}"></div> - </td> - <!--<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #e8ff37;display:inline-block"></div></td>--> - <!--<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #99ff4e;display:inline-block"></div></td>--> - </tr> - </table> - </div> - <div class="container" id="EfficiencyPO" style="margin-top: 20px;"> - <div class="table2"> - <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap"> - <thead> - <tr class="thead fixed equipname"> - <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th> - <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th> - <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;"></th> - <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿</th> - <th class="thgu dong5 name" rowspan="2" style="min-width: 150px; max-width: 150px;width: 150px;">璁惧鍚嶇О</th> - <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th> - <!--<th rowspan="2">缁勫埆</th>--> - <template v-for="(tableHead, index) in tableHeads"> - <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th> - </template> - </tr> - <tr class="thead notfixed gudingth"> - <template v-for="(tableHead, index) in tableHeads"> - <th>寮�鍔ㄧ巼(%)</th> - <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> - <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(s)</th> - <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th> - </template> - </tr> - </thead> - <tbody> - <tr class="mathData" v-for="(item, index) in dataList"> - <td class="tdgu kaitou wenzi" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis">{{item.level1}}</td> - <td class="tdgu1 kaitou wenzi" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis">{{item.level2}}</td> - <td class="tdgu2 kaitou wenzi" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis">{{item.level3}}</td> - <td class="tdgu3 kaitou">{{item.equipmentId}}</td> - <td class="tdgu4 kaitou">{{item.equipmentName}}</td> - <td class="tdgu5 kaitou">{{item.equipmentType}}</td> - <!--<td>{{item.tierType}}</td>--> - <template v-for="(tableHead, index) in item.dataList"> - <td :style="{background:tableHead.color }">{{tableHead.startRate | numFilter}}</td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> - {{tableHead.openRate | numFilter}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> - {{tableHead.openLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> - {{tableHead.processLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> - {{tableHead.waitLong}} - </td> - <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> - {{tableHead.closeLong}} - </td> - </template> - </tr> - </tbody> - </table> + <!--<div style="width: 530px;position: absolute;top: 0; right:1.5%;">--> + <!--<table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;">--> + <!--<tr>--> + <!--<td v-for="(item, index) in identifying">{{item.title}}</td>--> + <!--</tr>--> + <!--<tr>--> + <!--<td style="text-align:center;" v-for="(item, index) in identifying">--> + <!--<div class="identifyingclass" :style="{background: item.color}"></div>--> + <!--</td>--> + <!--<!–<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #e8ff37;display:inline-block"></div></td>–>--> + <!--<!–<td style="text-align:center;"><div style="width: 55px;height: 15px;background-color: #99ff4e;display:inline-block"></div></td>–>--> + <!--</tr>--> + <!--</table>--> + <!--</div>--> + <a-spin :spinning="spinning"> + <div class="container" id="EfficiencyPO" style="margin-top: 20px;" > + <div class="table2"> + <table class="dataContent table" border="1" cellspacing="0" cellpadding="0" style="white-space: nowrap" v-if="dataList.length>0"> + <thead> + <tr class="thead fixed equipname"> + <th class="thgu dong1 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">鍏徃</th> + <th class="thgu dong2 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">杞﹂棿</th> + <th class="thgu dong3 name" rowspan="2" style="min-width: 50px; max-width: 50px;width: 50px;">宸ユ</th> + <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿</th> + <th class="thgu dong5 name" rowspan="2" style="min-width: 162px; max-width: 162px;width: 162px;">璁惧鍚嶇О</th> + <th class="thgu dong6 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th> + <!--<th rowspan="2">缁勫埆</th>--> + <template v-for="(tableHead, index) in tableHeads"> + <th class="timeth" :colspan="checkedList.length">{{tableHead}}</th> + </template> + </tr> + <tr class="thead notfixed gudingth"> + <template v-for="(tableHead, index) in tableHeads"> + <th>寮�鍔ㄧ巼(%)</th> + <th v-if="checkedList.indexOf('kjl') > -1">寮�鏈虹巼(%)</th> + <th v-if="checkedList.indexOf('kjsj') > -1">寮�鏈烘椂闂�(灏忔椂)</th> + <th v-if="checkedList.indexOf('jgsj') > -1">鍔犲伐鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('djsj') > -1">寰呮満鏃堕棿(灏忔椂)</th> + <th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(灏忔椂)</th> + </template> + </tr> + </thead> + <tbody> + <tr class="mathData" v-for="(item, index) in dataList"> + <template v-if="item.level1!=='鍚堣'&&item.level1!=='骞冲潎鍊�'"> + <td class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis,noExl:item.level1dis}" v-show="!item.level1dis"> + <div class="wenzi"> + {{item.level1}} + </div> + </td> + <td class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis,noExl:item.level2dis}" v-show="!item.level2dis"> + <div class="wenzi"> + {{item.level2}} + </div> + </td> + <td class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: item.level3dis,noExl:item.level3dis}" v-show="!item.level3dis"> + <div class="wenzi"> + {{item.level3}} + </div> + </td> + <td class="tdgu3 kaitou">{{item.equipmentId}}</td> + <td style="min-width: 162px; max-width: 162px;width: 162px;" class="tdgu4 kaitou">{{item.equipmentName}}</td> + <td class="tdgu5 kaitou">{{item.equipmentType}}</td> + </template> + + <template v-else> + <td colspan="6" class="tdgu kaitou">{{item.level1}}</td> + </template> + <!--<td>{{item.tierType}}</td>--> + <template v-for="(tableHead, index) in item.dataList"> + <td :style="{background:tableHead.color }">{{tableHead.startRate | numFilter}}</td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1"> + {{tableHead.openRate | numFilter}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + {{tableHead.openLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + {{tableHead.processLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + {{tableHead.waitLong | getFormattedTime}} + </td> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + {{tableHead.closeLong | getFormattedTime}} + </td> + </template> + </tr> + </tbody> + </table> + </div> </div> - </div> + </a-spin> </div> </div> </template> @@ -147,7 +179,8 @@ listByType: '/mdc/MdcUtilizationRate/getByType', queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType' }, - tableHeads: [] + tableHeads: [], + spinning:false } }, props: { nodeTree: '', Type:'',nodePeople: ''}, @@ -197,7 +230,20 @@ } else { return '0' } - } + }, + + /** + * 鏍煎紡鍖栨椂闂� + * @param seconds 绉掓暟 + * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓� + */ + getFormattedTime(seconds) { + if (seconds) { + return parseFloat((seconds / 3600).toFixed(2)) + } else { + return '0' + } + }, }, methods: { checkSameData(dataList){ @@ -389,6 +435,7 @@ // this.onClearSelected() }, loadData() { + this.spinning=true this.tableHeads = [] this.dataList = [] getAction(this.url.list, this.queryParam).then(res => { @@ -402,6 +449,8 @@ this.combineCell(); // this.initDeviceType(this.dataList) } + }).finally(()=>{ + this.spinning=false }) }, queryGroup() { @@ -432,12 +481,14 @@ height: 100%; overflow: auto; } + .table2 thead tr th:first-child, .table tbody tr .tdgu{ position: sticky; left: 0; z-index: 1; } + .table tbody tr .wenzi{ /*writing-mode: vertical-lr;*/ /*text-orientation: upright;*/ @@ -445,33 +496,39 @@ writing-mode: vertical-lr; letter-spacing: 2px; } + .table tbody tr .kaitou{ z-index: 1; background-color: white; } + .table tbody tr .tdgu1{ position: sticky; left: 50px; z-index: 2; } + .table tbody tr .tdgu2{ position: sticky; left: 100px; z-index: 2; } + .table tbody tr .tdgu3{ position: sticky; left: 150px; z-index: 2; } + .table tbody tr .tdgu4{ position: sticky; left: 250px; z-index: 2; } + .table tbody tr .tdgu5{ position: sticky; - left: 400px; + left: 412px; z-index: 2; } @@ -481,81 +538,91 @@ top:0; z-index: 3; } + .table2 thead .gudingth th{ position: sticky; top: 32px; z-index: 2; } + .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: 50px; } + + .table2 thead .equipname .dong3{ z-index: 5; left: 100px; } + .table2 thead .equipname .dong4{ z-index: 5; left: 150px; } + .table2 thead .equipname .dong5{ z-index: 5; left: 250px; } + .table2 thead .equipname .dong6{ z-index: 5; - left: 400px; + left: 412px; } - +#EfficiencyPO{ + overflow: hidden; +} @media screen and (min-width: 1920px){ #EfficiencyPO{ height: 687px!important; - overflow: scroll; } } + @media screen and (min-width: 1680px) and (max-width: 1920px){ #EfficiencyPO{ height: 687px!important; - overflow: scroll; } } + @media screen and (min-width: 1400px) and (max-width: 1680px){ #EfficiencyPO{ height: 540px!important; - overflow: scroll; } } + @media screen and (min-width: 1280px) and (max-width: 1400px){ #EfficiencyPO{ height: 440px!important; - overflow: scroll; } } + @media screen and (max-width: 1280px){ #EfficiencyPO{ height: 440px!important; - overflow: scroll; } } + .identifyingclass { width: 55px; height: 15px; display: inline-block } + .dataContent { white-space: nowrap; /*margin: 0;*/ - border: none; border-collapse: separate; border-spacing: 0; /*table-layout: fixed;*/ @@ -566,10 +633,6 @@ /*overflow: hidden;*/ /*overflow-y: auto;*/ text-align: center; -} - -.dataContent .fixed th { - width: 50px; } .dataContent .thead th { @@ -583,23 +646,7 @@ width: auto; } -/*.dataContent tr td {*/ - /*height: 35px;*/ -/*}*/ - .dataContent .mathData td { padding: 10px; - /*display: none;*/ } - -.dataContent .mathData .td { - /*background-color: #ff9bd2;*/ - display: inline-block; - padding: 10px; -} - -.dataContent .mathData .tdd { - /*display: none;*/ -} - </style> \ No newline at end of file -- Gitblit v1.9.3