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