From 997835429a1d66643364091e8437ebbbeb8ff97a Mon Sep 17 00:00:00 2001 From: zenglf <18502938215@163.com> Date: 星期四, 28 九月 2023 14:09:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' into develop --- src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue | 246 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 196 insertions(+), 50 deletions(-) diff --git a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue index fac7630..ceb9705 100644 --- a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue +++ b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue @@ -10,13 +10,13 @@ <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"/> </a-form-item> </a-col> - <a-col :lg="3" :md="3" :sm="3" :xs="3"> + <a-col :lg="2" :md="3" :sm="3" :xs="3"> <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> </a-col> - <a-col :lg="3" :md="3" :sm="3" :xs="3"> + <a-col :lg="2" :md="3" :sm="3" :xs="3"> <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> </a-col> - <a-col :lg="3" :md="3" :sm="3" :xs="3"> + <a-col :lg="2" :md="3" :sm="3" :xs="3"> <a-button type="primary" @click="exportExcel" icon="download">瀵煎嚭</a-button> </a-col> </a-row> @@ -28,7 +28,7 @@ </a-row> </a-form> </div> - <div style="width: 400px;position: absolute;top: 20px; right: 0px;"> + <div style="width: 530px;position: absolute;top: 20px; right:1.5%;"> <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;"> <tr> <td v-for="(item, index) in identifying">{{item.title}}</td> @@ -47,9 +47,12 @@ <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: 100px; max-width: 100px;width: 100px;">璁惧缂栧彿</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: 100px; max-width: 100px;width: 100px;">璁惧绫诲瀷</th> + <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> @@ -68,26 +71,29 @@ </thead> <tbody> <tr class="mathData" v-for="(item, index) in dataList"> - <td class="tdgu kaitou">{{item.equipmentId}}</td> - <td class="tdgu1 kaitou">{{item.equipmentName}}</td> - <td class="tdgu2 kaitou">{{item.equipmentType}}</td> + <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 tableHeads"> - <td :style="{background:item[tableHead].color }">{{item[tableHead].lyl | numFilter}}</td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('kjl') > -1"> - {{item[tableHead].kjl | numFilter}} + <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:item[tableHead].color }" v-if="checkedList.indexOf('kjsj') > -1"> - {{item[tableHead].kjsj}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + {{tableHead.openLong}} </td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('jgsj') > -1"> - {{item[tableHead].jgsj}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + {{tableHead.processLong}} </td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('djsj') > -1"> - {{item[tableHead].djsj}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + {{tableHead.waitLong}} </td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gjsj') > -1"> - {{item[tableHead].gjsj}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + {{tableHead.closeLong}} </td> </template> </tr> @@ -130,7 +136,7 @@ dataList: [], url: { list: '/mdc/efficiencyReport/efficiencyPOList', - listByType: '/mdc/MdcUtilizationRate/listByType' + listByType: '/mdc/MdcUtilizationRate/getByType' }, tableHeads: [] } @@ -151,24 +157,24 @@ }, nodeTree(val) { //鐩戝惉currSelected 鍙樺寲锛屽皢鍙樺寲鍚庣殑鏁板�间紶閫掔粰 getCurrSelected 浜嬩欢 if (JSON.stringify(val) != '{}') { - if (val.entity.equipmentId) { + if (val.equipmentId != null) { this.queryParamEquip.parentId = '' - this.queryParamEquip.equipmentIds = val.entity.equipmentId + this.queryParamEquip.equipmentId = val.equipmentId } else { - this.queryParamEquip.parentId = val.entity.id - this.queryParamEquip.equipmentIds = '' + this.queryParamEquip.parentId = val.key + this.queryParamEquip.equipmentId = '' } this.searchQuery() } }, nodePeople(val){ if (JSON.stringify(val) != '{}') { - if (val.entity.equipmentId) { - this.queryParamPeople.parentId = val.entity.equipmentId - this.queryParamPeople.equipmentIds = '' + if (val.equipmentId != null) { + this.queryParamPeople.parentId = val.equipmentId + this.queryParamPeople.equipmentId = '' } else { - this.queryParamPeople.parentId = val.entity.id - this.queryParamPeople.equipmentIds = '' + this.queryParamPeople.parentId = val.key + this.queryParamPeople.equipmentId = '' } this.searchQuery() } @@ -184,6 +190,93 @@ } }, methods: { + checkSameData(dataList){ + let cache = {}; //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 + let indices = []; //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� + dataList.map((item,index)=>{ + let level1 = item.level1; + let _index = cache[level1]; + if(_index!==undefined){ + indices[_index].push(index) + }else{ + cache[level1] = indices.length + indices.push([index]) + } + }) + let result = []; + indices.map((item)=>{ + item.map((index)=>{ + result.push(dataList[index]) + }) + }) + this.dataList = result + }, + checkSameData1(dataList){ + let cache = {}; //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 + let indices = []; //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� + dataList.map((item,index)=>{ + let level2 = item.level2; + let _index = cache[level2]; + if(_index!==undefined){ + indices[_index].push(index) + }else{ + cache[level2] = indices.length + indices.push([index]) + } + }) + let result = []; + indices.map((item)=>{ + item.map((index)=>{ + result.push(dataList[index]) + }) + }) + this.dataList = result + }, + checkSameData2(dataList){ + let cache = {}; //瀛樺偍鐨勬槸閿槸kclx 鐨勫�硷紝鍊兼槸kclx 鍦╥ndeces涓暟缁勭殑涓嬫爣 + let indices = []; //鏁扮粍涓瘡涓�涓�兼槸涓�涓暟缁勶紝鏁扮粍涓殑姣忎竴涓厓绱犳槸鍘熸暟缁勪腑鐩稿悓kclx鐨勪笅鏍� + dataList.map((item,index)=>{ + let level3 = item.level3; + let _index = cache[level3]; + if(_index!==undefined){ + indices[_index].push(index) + }else{ + cache[level3] = indices.length + indices.push([index]) + } + }) + let result = []; + indices.map((item)=>{ + item.map((index)=>{ + result.push(dataList[index]) + }) + }) + this.dataList = result + }, + // 鍚堝苟 + combineCell() { + console.log(this.dataList) + let list =this.dataList; + for (let field in list[0]) { + var k = 0; + while (k < list.length) { + list[k][field + 'span'] = 1; + list[k][field + 'dis'] = false; + for (var i = k + 1; i <= list.length - 1; i++) { + if (list[k][field] == list[i][field] && list[k][field] != '') { + list[k][field + 'span']++; + list[k][field + 'dis'] = false; + list[i][field + 'span'] = 1; + list[i][field + 'dis'] = true; + } else { + break; + } + } + k = i; + } + } + return list; + }, disabledDate(current){ //Can not slect days before today and today return current && current > moment().subtract('days', 1); @@ -236,35 +329,48 @@ dateParamChange(v1, v2) { this.queryParam.startTime = v2[0] this.queryParam.endTime = v2[1] + // 鐐瑰嚮鏃堕棿閫夋嫨鍣ㄧ殑娓呯┖鎸夐挳鏃朵細瑙﹀彂姝ゅ垽鏂�(鐐瑰嚮閲嶇疆鎸夐挳涓嶄細瑙﹀彂)锛屽疄鐜伴噸缃垪琛ㄥ姛鑳斤紝鍒囧疄鏀瑰彉鍒楄〃鏄剧ず鏁堟灉 + if(!this.queryParam.startTime&&!this.queryParam.endTime)this.searchReset() }, efficiencyOptionsOnChange(checkedList) { let index = checkedList.indexOf('lyl') if (index < 0) { - this.$message.warn('涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�') + // this.$message.warn('涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�') + this.$notification.warning({ + message:'娑堟伅', + description:"涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�" + }) return false } this.checkedList = checkedList }, searchQuery() { - if(this.queryParam.typeTree == "1"){ - this.queryParam.parentId = this.queryParamEquip.parentId - this.queryParam.equipmentIds = this.queryParamEquip.equipmentIds + if(this.dates != ''){ + 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.loadData() }else{ - this.queryParam.parentId = this.queryParamPeople.parentId - this.queryParam.equipmentIds = "" + this.$notification.warning({ + message:'娑堟伅', + description:"璇烽�夋嫨鏃堕棿" + }); } - this.loadData() // this.onClearSelected() }, searchReset() { this.typeTree = this.queryParam.typeTree this.typeParent = this.queryParam.parentId - this.typeEquipment = this.queryParam.equipmentIds + this.typeEquipment = this.queryParam.equipmentId this.queryParam = {} this.dates = [] this.queryParam.typeTree = this.typeTree this.queryParam.parentId = this.typeParent - this.queryParam.equipmentIds = this.typeEquipment + this.queryParam.equipmentId = this.typeEquipment // this.ipagination.current = 1 this.loadData(); // this.queryParam = {} @@ -273,13 +379,18 @@ // this.onClearSelected() }, loadData() { - console.log(this.queryParam) + this.tableHeads = [] + this.dataList = [] getAction(this.url.list, this.queryParam).then(res => { if (res.success) { - console.log(res.result) + // console.log(res.result) this.tableHeads = res.result.dates - this.dataList = res.result.list - this.initDeviceType(this.dataList) + this.dataList = res.result.mdcEfficiencyList + this.checkSameData(this.dataList) + this.checkSameData1(this.dataList) + this.checkSameData2(this.dataList) + this.combineCell(); + // this.initDeviceType(this.dataList) } }) } @@ -299,20 +410,43 @@ left: 0; z-index: 1; } +.table tbody tr .wenzi{ + /*writing-mode: vertical-lr;*/ + /*text-orientation: upright;*/ + transform: rotate(360deg); + writing-mode: vertical-lr; + letter-spacing: 2px; +} .table tbody tr .kaitou{ z-index: 1; background-color: white; } .table tbody tr .tdgu1{ position: sticky; - left: 100px; + 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; + z-index: 2; +} + .table2 thead tr .timeth, .table2 thead tr .thgu { position: sticky; @@ -334,11 +468,23 @@ } .table2 thead .equipname .dong2{ z-index: 5; - left: 100px; + 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; } @@ -409,9 +555,9 @@ width: auto; } -.dataContent tr td { - height: 35px; -} +/*.dataContent tr td {*/ + /*height: 35px;*/ +/*}*/ .dataContent .mathData td { padding: 10px; -- Gitblit v1.9.3