From 4a13d58a1ce705e93b84d186a0e27cbd4bd8c4a6 Mon Sep 17 00:00:00 2001 From: zhuzhuanzhuan Date: 星期五, 28 七月 2023 11:46:34 +0800 Subject: [PATCH] 班次利用率调取接口,渲染,测试,样式调整 --- src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue | 271 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 203 insertions(+), 68 deletions(-) diff --git a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue index 0b92ec8..73f9116 100644 --- a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue +++ b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue @@ -15,8 +15,8 @@ <a-form-item label="鐝埗"> <a-select v-model="queryParam.shiftId" placeholder="璇烽�夋嫨鐝埗" @change="initShiftSubList" :allowClear = "allowClear"> - <a-select-option v-for="(em,index) in shiftList" :key="index" :value="em.id"> - {{ em.shiftName }} + <a-select-option v-for="(em,index) in shiftList" :key="index" :value="em.value"> + {{ em.label }} </a-select-option> </a-select> </a-form-item> @@ -24,8 +24,8 @@ <a-col :md="6" :sm="6" :xs="6"> <a-form-item label="鐝"> <a-select v-model="queryParam.shiftSubId" placeholder="璇烽�夋嫨鐝" @change="initShiftSubListChange" :allowClear = "allowClearSu"> - <a-select-option v-for="(em,index) in shiftSubList" :key="index" :value="em.id"> - {{ em.shiftSubName }} + <a-select-option v-for="(em,index) in shiftSubList" :key="index" :value="em.value"> + {{ em.label }} </a-select-option> </a-select> </a-form-item> @@ -67,25 +67,32 @@ <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 dong4 name" rowspan="2" style="min-width: 100px; max-width: 100px;width: 100px;">鐝</th> + <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> + <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 class="thgu dong7 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> <!--average--> - <th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 150px;width: 150px;">骞冲潎鍊�(鐝鍒╃敤鐜�)</th> + <!--<th class="thgu dong4 name" rowspan="2" style="min-width: 100px; max-width: 150px;width: 150px;">骞冲潎鍊�(鐝鍒╃敤鐜�)</th>--> </tr> <tr class="thead notfixed gudingth"> <template v-for="(tableHead, index) in tableHeads"> <th>鐝鍒╃敤鐜�(%)</th> - <th v-if="checkedList.indexOf('gzl') > -1">鏁呴殰鐜�(%)</th> - <th v-if="checkedList.indexOf('processingLong') > -1">杩愯鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('totalLong') > -1">鏈夋晥鏃堕棿(s)</th> - <th v-if="checkedList.indexOf('faultLong') > -1">鏁呴殰鏃堕棿(s)</th> - <!--<th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</th>--> + <!--<th v-if="checkedList.indexOf('gzl') > -1">鏁呴殰鐜�(%)</th>--> + <!--<th v-if="checkedList.indexOf('processingLong') > -1">杩愯鏃堕棿(s)</th>--> + <!--<th v-if="checkedList.indexOf('totalLong') > -1">鏈夋晥鏃堕棿(s)</th>--> + <!--<th v-if="checkedList.indexOf('faultLong') > -1">鏁呴殰鏃堕棿(s)</th>--> + <!--<!–<th v-if="checkedList.indexOf('gjsj') > -1">鍏虫満鏃堕棿(s)</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> <!-- <tr>--> @@ -94,36 +101,43 @@ </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="tdgu3 kaitou">{{item.shiftSubName}}</td> + <td class="tdgu kaitou" :rowspan="item.level1span" :class="{hidden: item.level1dis}" v-show="!item.level1dis">{{item.level1}}</td> + <td class="tdgu1 kaitou" :rowspan="item.level2span" :class="{hidden: item.level2dis}" v-show="!item.level2dis">{{item.level2}}</td> + <td class="tdgu2 kaitou" :rowspan="item.level3span" :class="{hidden: 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 class="tdgu6 kaitou">{{item.shiftSubName}}</td> <!--<td>{{item.tierType}}</td>--> - <template v-for="(tableHead, index) in tableHeads"> - <td :style="{background:item[tableHead].color }" v-if='item[tableHead].lyl !== 0'>{{item[tableHead].lyl | numFilter}}</td> - <td :style="{background:item[tableHead].color }" v-if='item[tableHead].lyl == 0 && item[tableHead].status == 1'>缁翠慨</td> - <td :style="{background:item[tableHead].color }" v-if='item[tableHead].lyl == 0 && item[tableHead].status == 2'>浼戠彮</td> - <td :style="{background:item[tableHead].color }" v-if='item[tableHead].lyl == 0 && item[tableHead].status == 10'>{{item[tableHead].lyl | numFilter}}</td> - <td :style="{background:item[tableHead].color }" v-if='item[tableHead].lyl == 0 && item[tableHead].status == 11'>鏈绠�</td> - <td :style="{background:item[tableHead].color }" v-if='item[tableHead].lyl == 0 && item[tableHead].status == 12'>鏃犵彮娆�</td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gzl') > -1"> - {{item[tableHead].gzl | numFilter}} + <template v-for="(tableHead, index) in item.dataList"> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.utilizationRate !== 0'>{{tableHead.utilizationRate | numFilter}}</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 1'>缁翠慨</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 2'>浼戠彮</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 10'>{{tableHead.lyl | numFilter}}</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 11'>鏈绠�</td>--> + <!--<td :style="{background:tableHead.color }" v-if='tableHead.lyl == 0 && tableHead.status == 12'>鏃犵彮娆�</td>--> + <td :style="{background:tableHead.color }">{{tableHead.utilizationRate | numFilter}}</td> + <!--<td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gzl') > -1">--> + <!--{{tableHead.gzl | numFilter}}--> + <!--</td>--> + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1"> + {{tableHead.openLong}} </td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('processingLong') > -1"> - {{item[tableHead].processingLong}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1"> + {{tableHead.processLong}} </td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('totalLong') > -1"> - {{item[tableHead].totalLong}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1"> + {{tableHead.waitLong}} </td> - <td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('faultLong') > -1"> - {{item[tableHead].faultLong}} + <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1"> + {{tableHead.closeLong}} </td> <!--<td :style="{background:item[tableHead].color }" v-if="checkedList.indexOf('gjsj') > -1">--> <!--{{item[tableHead].gjsj}}--> <!--</td>--> </template> - <td :style="{background:item.average.color }" >{{item.average.lyl | numFilter}}</td> + <!--<td :style="{background:item.average.color }" >{{item.average.lyl | numFilter}}</td>--> </tr> </tbody> </table> @@ -156,19 +170,23 @@ queryParamPeople:{}, efficiencyOptions: [ { label: '鐝鍒╃敤鐜�', value: 'lyl' }, - { label: '鏁呴殰鐜�', value: 'gzl' }, - { label: '杩愯鏃堕棿', value: 'processingLong' }, - { label: '鏈夋晥鏃堕棿', value: 'totalLong' }, - { label: '鏁呴殰鏃堕棿', value: 'faultLong' }, + // { label: '鏁呴殰鐜�', value: 'gzl' }, + // { label: '杩愯鏃堕棿', value: 'processingLong' }, + // { label: '鏈夋晥鏃堕棿', value: 'totalLong' }, + // { label: '鏁呴殰鏃堕棿', value: 'faultLong' }, // { label: '鍏虫満鏃堕棿', value: 'gjsj' } + { label: '寮�鏈烘椂闂�', value: 'kjsj' }, + { label: '鍔犲伐鏃堕棿', value: 'jgsj' }, + { label: '寰呮満鏃堕棿', value: 'djsj' }, + { label: '鍏虫満鏃堕棿', value: 'gjsj' } ], checkedList: ['lyl'], dataList: [], url: { list: '/mdc/efficiencyReport/efficiencyShiftList', - listByType: '/mdc/MdcUtilizationRate/listByType', - initShiftList: '/mdc/mdcshift/initShiftList', - initShiftSubList: '/mdc/mdcshiftsub/initShiftSubList' + listByType: '/mdc/MdcUtilizationRate/getByType', + initShiftList: '/mdc/mdcMdcShift/initShiftList', + initShiftSubList: '/mdc/mdcShiftSub/initShiftSubList' }, tableHeads: [], shiftList: [], @@ -187,35 +205,30 @@ }, watch: { Type(valmath){ - // console.log(valmath); - // this.rightcolval = 0 this.dataList = []; - // this.selectedRowKeys1 = [] - // this.selectionRows1 = [] this.queryParam.typeTree = valmath - // this.rightcolval = 0 - }, nodeTree(val) { //鐩戝惉currSelected 鍙樺寲锛屽皢鍙樺寲鍚庣殑鏁板�间紶閫掔粰 getCurrSelected 浜嬩欢 + console.log(val); 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 = '' - this.queryParamPeople.equipmentIds = val.entity.equipmentId + 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() } @@ -231,6 +244,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); @@ -318,10 +418,10 @@ searchQuery() { if(this.queryParam.typeTree == "1"){ this.queryParam.parentId = this.queryParamEquip.parentId - this.queryParam.equipmentIds = this.queryParamEquip.equipmentIds + this.queryParam.equipmentId = this.queryParamEquip.equipmentId }else{ this.queryParam.parentId = this.queryParamPeople.parentId - this.queryParam.equipmentIds = "" + this.queryParam.equipmentId = "" } this.loadData() // this.onClearSelected() @@ -329,21 +429,27 @@ 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.loadData() // this.onClearSelected() }, loadData() { + this.tableHeads = [] + this.dataList = [] getAction(this.url.list, this.queryParam).then(res => { if (res.success) { 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) } }) } @@ -368,19 +474,35 @@ } .table tbody tr .tdgu1{ position: sticky; - left: 100px; + left: 150px; z-index: 2; } .table tbody tr .tdgu2{ position: sticky; - left: 250px; + left: 300px; z-index: 2; } .table tbody tr .tdgu3{ position: sticky; - left: 350px; + 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; + } + .table tbody tr .tdgu6{ + position: sticky; + left: 800px; + z-index: 2; + } + .table2 thead tr .timeth, .table2 thead tr .thgu { position: sticky; @@ -402,16 +524,29 @@ } .table2 thead .equipname .dong2{ z-index: 5; - left: 100px; + left: 150px; } .table2 thead .equipname .dong3{ z-index: 5; - left: 250px; + left: 300px; } .table2 thead .equipname .dong4{ z-index: 5; - left: 350px; + left: 450px; } + .table2 thead .equipname .dong5{ + z-index: 5; + left: 550px; + } + .table2 thead .equipname .dong6{ + z-index: 5; + left: 700px; + } + .table2 thead .equipname .dong7{ + z-index: 6; + left: 800px; + } + @media screen and (min-width: 1920px){ #EfficiencyShift{ height: 670px!important; -- Gitblit v1.9.3