From 12c1c0b3df4956739aa68505078e4561922a1124 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期二, 15 七月 2025 10:56:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue | 1051 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 532 insertions(+), 519 deletions(-)

diff --git a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue
index 8253a9b..74d2f8a 100644
--- a/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue
+++ b/src/views/mdc/base/modules/efficiencyPOReport/EfficiencyPOList.vue
@@ -39,7 +39,8 @@
             </a-col>
             <a-col :md="4" :sm="4">
               <a-form-item label="鏃堕棿">
-                <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates" :allowClear="false"/>
+                <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD" v-model="dates"
+                                :allowClear="false"/>
               </a-form-item>
             </a-col>
             <a-col :md="5" :sm="5" :xs="5">
@@ -105,17 +106,23 @@
         </a-form>
       </div>
       <a-spin :spinning="spinning">
-        <div class="container" id="EfficiencyPO" style="margin-top: 20px;" >
+        <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">
+            <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;height: 66px">鍏徃</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 class="thgu dong1 name" rowspan="2"
+                    style="min-width: 50px; max-width: 50px;width: 50px;height: 66px">鍏徃
+                </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>
@@ -135,44 +142,51 @@
               <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">
+                  <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">
+                  <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">
+                  <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>
+                  <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>
                 <template v-for="(tableHead, index) in item.dataList">
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1">{{tableHead.startRate | numFilter}}</td>
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjl') > -1">
+                  <td :style="{background:tableHead.color,minWidth:'100px' }" v-if="checkedList.indexOf('lyl') > -1">
+                    {{tableHead.startRate | numFilter}}
+                  </td>
+                  <td :style="{background:tableHead.color,minWidth:'100px' }" v-if="checkedList.indexOf('kjl') > -1">
                     {{tableHead.openRate | numFilter}}
                   </td>
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
+                  <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('kjsj') > -1">
                     {{tableHead.openLong | getFormattedTime}}
                   </td>
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('jgsj') > -1">
+                  <td :style="{background:tableHead.color ,minWidth:'110px'}" v-if="checkedList.indexOf('jgsj') > -1">
                     {{tableHead.processLong | getFormattedTime}}
                   </td>
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('djsj') > -1">
+                  <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('djsj') > -1">
                     {{tableHead.waitLong | getFormattedTime}}
                   </td>
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('gjsj') > -1">
+                  <td :style="{background:tableHead.color,minWidth:'110px' }" v-if="checkedList.indexOf('gjsj') > -1">
                     {{tableHead.closeLong | getFormattedTime}}
                   </td>
                 </template>
@@ -187,541 +201,540 @@
 </template>
 
 <script>
-import moment from 'moment'
-import { putAction, getAction } from '@/api/manage'
-import $ from 'jquery'
-import '@/components/table2excel/table2excel'
-import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
-import api from '@/api/mdc'
+  import moment from 'moment'
+  import { putAction, getAction } from '@/api/manage'
+  import $ from 'jquery'
+  import '@/components/table2excel/table2excel'
+  import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
+  import api from '@/api/mdc'
 
-export default {
-  name: 'EfficiencyPOList',
-  components: {},
-  data() {
-    return {
-      typeTree:"",
-      typeParent:1,
-      typeEquipment:1,
-      dates: [],
-      equipmentTypeList:[],
-      driveTypeList:[],
-      device_level_list: [],
-      device_category_list: [],
-      queryParam: {},
-      queryParams: {
-        equipmentType: [],
-        driveType: [],
-        deviceLevel: [],
-        deviceCategory: []
-      },
-      queryParamEquip:{},
-      queryParamPeople:{},
-      identifying: [],
-      efficiencyOptions: [
-        { label: '寮�鍔ㄧ巼', value: 'lyl' },
-        { label: '寮�鏈虹巼', value: 'kjl' },
-        { label: '寮�鏈烘椂闂�', value: 'kjsj' },
-        { label: '鍔犲伐鏃堕棿', value: 'jgsj' },
-        { label: '寰呮満鏃堕棿', value: 'djsj' },
-        { label: '鍏虫満鏃堕棿', value: 'gjsj' }
-      ],
-      checkedList: ['lyl'],
-      dataList: [],
-      url: {
-        list: '/mdc/efficiencyReport/efficiencyPOList',
-        listByType: '/mdc/MdcUtilizationRate/getByType',
-        queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType'
-      },
-      tableHeads: [],
-      spinning:false
-    }
-  },
-  props: { nodeTree: '', Type:'',nodePeople: ''},
-  created() {
-    this.showIdentifying()
-    this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)]
-    this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD')
-    this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD')
-    this.queryParam.typeTree = "1"
-    this.loadData()
-    this.queryGroup()
-    this.getDriveTypeByApi()
-    this.initDictData('device_level')
-    this.initDictData('device_category')
-  },
-  mounted() {
-    window.addEventListener('resize', this.handleWindowResize)
-    this.handleWindowResize()
-  },
-  watch: {
-    Type(valmath){
-      this.dataList = [];
-      this.queryParam.typeTree = valmath
-    },
-    nodeTree(val) { //鐩戝惉currSelected 鍙樺寲锛屽皢鍙樺寲鍚庣殑鏁板�间紶閫掔粰 getCurrSelected 浜嬩欢
-      if (JSON.stringify(val) != '{}') {
-        if (val.equipmentId != null) {
-          this.queryParamEquip.parentId = ''
-          this.queryParamEquip.equipmentId = val.equipmentId
-        } else {
-          this.queryParamEquip.parentId = val.key
-          this.queryParamEquip.equipmentId = ''
-        }
-        this.searchQuery()
+  export default {
+    name: 'EfficiencyPOList',
+    components: {},
+    data() {
+      return {
+        typeTree: '',
+        typeParent: 1,
+        typeEquipment: 1,
+        dates: [],
+        equipmentTypeList: [],
+        driveTypeList: [],
+        device_level_list: [],
+        device_category_list: [],
+        queryParam: {},
+        queryParams: {
+          equipmentType: [],
+          driveType: [],
+          deviceLevel: [],
+          deviceCategory: []
+        },
+        queryParamEquip: {},
+        queryParamPeople: {},
+        identifying: [],
+        efficiencyOptions: [
+          { label: '寮�鍔ㄧ巼', value: 'lyl' },
+          { label: '寮�鏈虹巼', value: 'kjl' },
+          { label: '寮�鏈烘椂闂�', value: 'kjsj' },
+          { label: '鍔犲伐鏃堕棿', value: 'jgsj' },
+          { label: '寰呮満鏃堕棿', value: 'djsj' },
+          { label: '鍏虫満鏃堕棿', value: 'gjsj' }
+        ],
+        checkedList: ['lyl'],
+        dataList: [],
+        url: {
+          list: '/mdc/efficiencyReport/efficiencyPOList',
+          listByType: '/mdc/MdcUtilizationRate/getByType',
+          queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType'
+        },
+        tableHeads: [],
+        spinning: false
       }
     },
-    nodePeople(val){
-      if (JSON.stringify(val) != '{}') {
-        if (val.equipmentId != null) {
-          this.queryParamPeople.parentId = val.equipmentId
-          this.queryParamPeople.equipmentId = ''
-        } else {
-          this.queryParamPeople.parentId = val.key
-          this.queryParamPeople.equipmentId = ''
-        }
-        this.searchQuery()
-      }
-    }
-  },
-  filters: {
-    numFilter(value) {
-      if (value) {
-        return parseFloat((value * 100).toFixed(2))
-      } else {
-        return '0'
-      }
-    },
-
-    /**
-     * 鏍煎紡鍖栨椂闂�
-     * @param seconds 绉掓暟
-     * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓�
-     */
-    getFormattedTime(seconds) {
-      if (seconds) {
-        return parseFloat((seconds / 3600).toFixed(2))
-      } else {
-        return '0'
-      }
-    },
-  },
-  methods: {
-    initDictData(dictCode) {
-      // //浼樺厛浠庣紦瀛樹腑璇诲彇瀛楀吀閰嶇疆
-      if (getDictItemsFromCache(dictCode)) {
-        this[dictCode + '_list'] = getDictItemsFromCache(dictCode)
-        return
-      }
-      //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁�
-      ajaxGetDictItems(dictCode, null).then((res) => {
-        if (res.success) {
-          this[dictCode + '_list'] = res.result
-          return
-        }
-      })
-    },
-    selectChange(value, key) {
-      this.queryParams[key] = value
-    },
-    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);
-    },
-    initDeviceType(deviceList) {
-      let dictCode = 'mdc_equipmentType'
-      let items = []
-      items = getDictItemsFromCache(dictCode)
-      if (deviceList && items.length > 0) {
-        for (let a = 0; a < deviceList.length; a++) {
-          if (items && items.length > 0) {
-            for (let i = 0; i < items.length; i++) {
-              if (deviceList[a].equipmentType == items[i].value) {
-                deviceList[a].equipmentType = items[i].title
-              }
-            }
-          } else {
-            ajaxGetDictItems(dictCode, null).then((res) => {
-              if (res.success) {
-                let items = res.result
-                for (let i = 0; i < items.length; i++) {
-                  if (deviceList[a].equipmentType == items[i].value) {
-                    deviceList[a].equipmentType = items[i].title
-                  }
-                }
-              }
-            })
-          }
-        }
-      }
-    },
-    exportExcel() {
-      $("#EfficiencyPO").table2excel({
-        exclude: ".noExl",
-        name: "Excel Document Name",
-        filename: "璁惧寮�鍔ㄧ巼",
-        exclude_img: true,
-        fileext: ".xls",
-        exclude_links: true,
-        exclude_inputs: true
-      });
-    },
-    showIdentifying() {
-      getAction(this.url.listByType, { type: 'kdl' }).then(res => {
-        if (res.success) {
-          this.identifying = res.result
-        }
-      })
-    },
-    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.$notification.warning({
-      //     message:'娑堟伅',
-      //     description:"涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�"
-      //   })
-      //   return false
-      // }
-      this.checkedList = checkedList
-    },
-    searchQuery() {
-      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 = ""
-      }
-      Object.keys(this.queryParams).forEach(item => {
-        this.queryParam[item] = this.queryParams[item].join()
-        // 姝ゅ涓轰繚璇佹帴鍙e弬鏁颁笉澶氫綑锛屽彲鐪佺暐
-        if (this.queryParams[item].length === 0) delete this.queryParam[item]
-      })
-      this.loadData()
-    },
-    searchReset() {
-      this.typeTree = this.queryParam.typeTree
-      this.typeParent =  this.queryParam.parentId
-      this.typeEquipment = this.queryParam.equipmentId
-      this.queryParam = {}
-      this.queryParam.typeTree = this.typeTree
-      this.queryParam.parentId = this.typeParent
-      this.queryParam.equipmentId =  this.typeEquipment
+    props: { nodeTree: '', Type: '', nodePeople: '' },
+    created() {
+      this.showIdentifying()
       this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)]
       this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD')
       this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD')
-      // this.ipagination.current = 1
-      this.queryParams = {
-        equipmentType: [],
-        driveType: [],
-        deviceLevel: [],
-        deviceCategory: []
-      }
-      this.loadData();
+      this.queryParam.typeTree = '1'
+      this.loadData()
+      this.queryGroup()
+      this.getDriveTypeByApi()
+      this.initDictData('device_level')
+      this.initDictData('device_category')
     },
-    loadData() {
-      this.spinning=true
-      this.tableHeads = []
-      this.dataList = []
-      getAction(this.url.list, this.queryParam).then(res => {
-        if (res.success) {
-          // console.log(res.result)
-          this.tableHeads = res.result.dates
-          this.dataList = res.result.mdcEfficiencyList
-          if (res.result.mdcEfficiencyList && !res.result.mdcEfficiencyList.length) {
-            this.$notification.info({
+    mounted() {
+      window.addEventListener('resize', this.handleWindowResize)
+      this.handleWindowResize()
+    },
+    watch: {
+      Type(valmath) {
+        this.dataList = []
+        this.queryParam.typeTree = valmath
+      },
+      nodeTree(val) { //鐩戝惉currSelected 鍙樺寲锛屽皢鍙樺寲鍚庣殑鏁板�间紶閫掔粰 getCurrSelected 浜嬩欢
+        if (JSON.stringify(val) != '{}') {
+          if (val.equipmentId != null) {
+            this.queryParamEquip.parentId = ''
+            this.queryParamEquip.equipmentId = val.equipmentId
+          } else {
+            this.queryParamEquip.parentId = val.key
+            this.queryParamEquip.equipmentId = ''
+          }
+          this.searchQuery()
+        }
+      },
+      nodePeople(val) {
+        if (JSON.stringify(val) != '{}') {
+          if (val.equipmentId != null) {
+            this.queryParamPeople.parentId = val.equipmentId
+            this.queryParamPeople.equipmentId = ''
+          } else {
+            this.queryParamPeople.parentId = val.key
+            this.queryParamPeople.equipmentId = ''
+          }
+          this.searchQuery()
+        }
+      }
+    },
+    filters: {
+      numFilter(value) {
+        if (value) {
+          return parseFloat((value * 100).toFixed(2))
+        } else {
+          return '0'
+        }
+      },
+
+      /**
+       * 鏍煎紡鍖栨椂闂�
+       * @param seconds 绉掓暟
+       * @returns '' 鏍煎紡鍖栧悗鏃堕棿瀛楃涓�
+       */
+      getFormattedTime(seconds) {
+        if (seconds) {
+          return parseFloat((seconds / 3600).toFixed(2))
+        } else {
+          return '0'
+        }
+      }
+    },
+    methods: {
+      initDictData(dictCode) {
+        // //浼樺厛浠庣紦瀛樹腑璇诲彇瀛楀吀閰嶇疆
+        if (getDictItemsFromCache(dictCode)) {
+          this[dictCode + '_list'] = getDictItemsFromCache(dictCode)
+          return
+        }
+        //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁�
+        ajaxGetDictItems(dictCode, null).then((res) => {
+          if (res.success) {
+            this[dictCode + '_list'] = res.result
+            return
+          }
+        })
+      },
+      selectChange(value, key) {
+        this.queryParams[key] = value
+      },
+      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)
+      },
+      initDeviceType(deviceList) {
+        let dictCode = 'mdc_equipmentType'
+        let items = []
+        items = getDictItemsFromCache(dictCode)
+        if (deviceList && items.length > 0) {
+          for (let a = 0; a < deviceList.length; a++) {
+            if (items && items.length > 0) {
+              for (let i = 0; i < items.length; i++) {
+                if (deviceList[a].equipmentType == items[i].value) {
+                  deviceList[a].equipmentType = items[i].title
+                }
+              }
+            } else {
+              ajaxGetDictItems(dictCode, null).then((res) => {
+                if (res.success) {
+                  let items = res.result
+                  for (let i = 0; i < items.length; i++) {
+                    if (deviceList[a].equipmentType == items[i].value) {
+                      deviceList[a].equipmentType = items[i].title
+                    }
+                  }
+                }
+              })
+            }
+          }
+        }
+      },
+      exportExcel() {
+        $('#EfficiencyPO').table2excel({
+          exclude: '.noExl',
+          name: 'Excel Document Name',
+          filename: '璁惧寮�鍔ㄧ巼',
+          exclude_img: true,
+          fileext: '.xls',
+          exclude_links: true,
+          exclude_inputs: true
+        })
+      },
+      showIdentifying() {
+        getAction(this.url.listByType, { type: 'kdl' }).then(res => {
+          if (res.success) {
+            this.identifying = res.result
+          }
+        })
+      },
+      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.$notification.warning({
+        //     message:'娑堟伅',
+        //     description:"涓嶈兘鍙栨秷鏌ヨ鍒╃敤鐜�"
+        //   })
+        //   return false
+        // }
+        this.checkedList = checkedList
+      },
+      searchQuery() {
+        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 = ''
+        }
+        Object.keys(this.queryParams).forEach(item => {
+          this.queryParam[item] = this.queryParams[item].join()
+          // 姝ゅ涓轰繚璇佹帴鍙e弬鏁颁笉澶氫綑锛屽彲鐪佺暐
+          if (this.queryParams[item].length === 0) delete this.queryParam[item]
+        })
+        this.loadData()
+      },
+      searchReset() {
+        this.typeTree = this.queryParam.typeTree
+        this.typeParent = this.queryParam.parentId
+        this.typeEquipment = this.queryParam.equipmentId
+        this.queryParam = {}
+        this.queryParam.typeTree = this.typeTree
+        this.queryParam.parentId = this.typeParent
+        this.queryParam.equipmentId = this.typeEquipment
+        this.dates = [moment().subtract('days', 8), moment().subtract('days', 1)]
+        this.queryParam.startTime = moment(this.dates[0]).format('YYYYMMDD')
+        this.queryParam.endTime = moment(this.dates[1]).format('YYYYMMDD')
+        // this.ipagination.current = 1
+        this.queryParams = {
+          equipmentType: [],
+          driveType: [],
+          deviceLevel: [],
+          deviceCategory: []
+        }
+        this.loadData()
+      },
+      loadData() {
+        this.spinning = true
+        this.tableHeads = []
+        this.dataList = []
+        getAction(this.url.list, this.queryParam).then(res => {
+          if (res.success) {
+            // console.log(res.result)
+            this.tableHeads = res.result.dates
+            this.dataList = res.result.mdcEfficiencyList
+            if (res.result.mdcEfficiencyList && !res.result.mdcEfficiencyList.length) {
+              this.$notification.info({
+                message: '娑堟伅',
+                description: '鏆傛棤璇ヨ澶囩被鍨嬫暟鎹�'
+              })
+            }
+            this.checkSameData(this.dataList)
+            this.checkSameData1(this.dataList)
+            this.checkSameData2(this.dataList)
+            this.combineCell()
+            // this.initDeviceType(this.dataList)
+          }
+        }).finally(() => {
+          this.spinning = false
+        })
+      },
+      queryGroup() {
+        getAction(this.url.queryEquipmentType).then(res => {
+          if (res.success) {
+            this.equipmentTypeList = res.result.map(item => {
+              return {
+                label: item.equipmentTypeName,
+                value: item.equipmentTypeName
+              }
+            })
+          } else {
+            // this.$message.warning(res.message)
+            this.$notification.warning({
               message: '娑堟伅',
-              description: '鏆傛棤璇ヨ澶囩被鍨嬫暟鎹�'
+              description: res.message
             })
           }
-          this.checkSameData(this.dataList)
-          this.checkSameData1(this.dataList)
-          this.checkSameData2(this.dataList)
-          this.combineCell();
-          // this.initDeviceType(this.dataList)
-        }
-      }).finally(()=>{
-        this.spinning=false
-      })
-    },
-    queryGroup() {
-      getAction(this.url.queryEquipmentType).then(res => {
-        if (res.success) {
-          this.equipmentTypeList = res.result.map(item => {
-            return {
-              label: item.equipmentTypeName,
-              value: item.equipmentTypeName
-            }
-          })
-        } else {
-          // this.$message.warning(res.message)
-          this.$notification.warning({
-            message: '娑堟伅',
-            description: res.message
-          })
-        }
-      }).finally(() => {
-        this.loading = false
-      })
-    },
+        }).finally(() => {
+          this.loading = false
+        })
+      },
 
-    /**
-     * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷
-     */
-    getDriveTypeByApi(){
-      api.getDriveTypeApi().then((res)=>{
-        if (res.success) this.driveTypeList = res.result
-      })
-    },
+      /**
+       * 璋冪敤鎺ュ彛鑾峰彇鎺у埗绯荤粺绫诲瀷
+       */
+      getDriveTypeByApi() {
+        api.getDriveTypeApi().then((res) => {
+          if (res.success) this.driveTypeList = res.result
+        })
+      },
 
-    /**
-     * 鍒嗚鲸鐜囨敼鍙樻椂鍚屾椂鏀瑰彉琛ㄦ牸楂樺害宸蹭繚璇侀椤典竴杩涘叆涓嶆嫋鍔ㄥ瀭鐩存粴鍔ㄦ潯鏃跺嵆鍙嫋鍔ㄨ〃鏍兼按骞虫粴鍔ㄦ潯
-     */
-    handleWindowResize() {
-      const tableContainer = document.getElementById('EfficiencyPO') // 琛ㄦ牸瀹瑰櫒
-      const clientHeight = document.documentElement.clientHeight || document.body.clientHeight // 娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴�
-      const containerTopToClientTopHeight = tableContainer.getBoundingClientRect().top // 琛ㄦ牸瀹瑰櫒椤堕儴鍒版祻瑙堝櫒鍙鍖哄煙椤堕儴鐨勯棿璺�
-      tableContainer.style.height = (clientHeight - containerTopToClientTopHeight - 32) + 'px'
+      /**
+       * 鍒嗚鲸鐜囨敼鍙樻椂鍚屾椂鏀瑰彉琛ㄦ牸楂樺害宸蹭繚璇侀椤典竴杩涘叆涓嶆嫋鍔ㄥ瀭鐩存粴鍔ㄦ潯鏃跺嵆鍙嫋鍔ㄨ〃鏍兼按骞虫粴鍔ㄦ潯
+       */
+      handleWindowResize() {
+        const tableContainer = document.getElementById('EfficiencyPO') // 琛ㄦ牸瀹瑰櫒
+        const clientHeight = document.documentElement.clientHeight || document.body.clientHeight // 娴忚鍣ㄥ彲瑙嗗尯鍩熼珮搴�
+        const containerTopToClientTopHeight = tableContainer.getBoundingClientRect().top // 琛ㄦ牸瀹瑰櫒椤堕儴鍒版祻瑙堝櫒鍙鍖哄煙椤堕儴鐨勯棿璺�
+        tableContainer.style.height = (clientHeight - containerTopToClientTopHeight - 32) + 'px'
+      }
     }
   }
-}
 </script>
 <style scoped>
-/*table鏍峰紡*/
-.table2{
-  width: 100%;
-  height: 100%;
-  overflow: auto;
-}
+  /*table鏍峰紡*/
+  .table2 {
+    width: 100%;
+    height: 100%;
+    overflow: auto;
+  }
 
-.table2 thead tr th:first-child,
-.table tbody tr .tdgu{
-  position: sticky;
-  left: 0;
-  z-index: 1;
-}
+  .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;*/
-  transform: rotate(360deg);
-  writing-mode: vertical-lr;
-  letter-spacing: 2px;
-}
+  .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 .kaitou {
+    z-index: 1;
+    background-color: white;
+  }
 
-.table tbody tr .tdgu1{
-  position: sticky;
-  left: 50px;
-  z-index: 2;
-}
+  .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 .tdgu2 {
+    position: sticky;
+    left: 100px;
+    z-index: 2;
+  }
 
-.table tbody tr .tdgu3{
-  position: sticky;
-  left: 150px;
-  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 .tdgu4 {
+    position: sticky;
+    left: 250px;
+    z-index: 2;
+  }
 
-.table tbody tr .tdgu5{
-  position: sticky;
-  left: 412px;
-  z-index: 2;
-}
+  .table tbody tr .tdgu5 {
+    position: sticky;
+    left: 412px;
+    z-index: 2;
+  }
 
-.table2 thead tr .timeth,
-.table2 thead tr  .thgu {
-  position: sticky;
-  top:0;
-  z-index: 3;
-}
+  .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: 2;
-}
+  .table2 thead .gudingth th {
+    position: sticky;
+    top: 32px;
+    z-index: 2;
+  }
 
-.table2 thead .equipname .name{
-  z-index: 3;
-}
+  .table2 thead .equipname .name {
+    z-index: 3;
+  }
 
-.table2 thead .equipname .dong1{
-  z-index: 4;
-  left: 0;
-}
+  .table2 thead .equipname .dong1 {
+    z-index: 4;
+    left: 0;
+  }
 
-.table2 thead .equipname .dong2{
-  z-index: 5;
-  left: 50px;
-}
+  .table2 thead .equipname .dong2 {
+    z-index: 5;
+    left: 50px;
+  }
 
+  .table2 thead .equipname .dong3 {
+    z-index: 5;
+    left: 100px;
+  }
 
-.table2 thead .equipname .dong3{
-  z-index: 5;
-  left: 100px;
-}
+  .table2 thead .equipname .dong4 {
+    z-index: 5;
+    left: 150px;
+  }
 
-.table2 thead .equipname .dong4{
-  z-index: 5;
-  left: 150px;
-}
+  .table2 thead .equipname .dong5 {
+    z-index: 5;
+    left: 250px;
+  }
 
-.table2 thead .equipname .dong5{
-  z-index: 5;
-  left: 250px;
-}
+  .table2 thead .equipname .dong6 {
+    z-index: 5;
+    left: 412px;
+  }
 
-.table2 thead .equipname .dong6{
-  z-index: 5;
-  left: 412px;
-}
+  #EfficiencyPO {
+    overflow: hidden;
+  }
 
-#EfficiencyPO{
-  overflow: hidden;
-}
+  .identifyingclass {
+    width: 55px;
+    height: 15px;
+    display: inline-block
+  }
 
-.identifyingclass {
-  width: 55px;
-  height: 15px;
-  display: inline-block
-}
+  .dataContent {
+    white-space: nowrap;
+    /*margin: 0;*/
+    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 {
-  white-space: nowrap;
-  /*margin: 0;*/
-  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 .thead th {
+    background-color: #fafafa;
+    text-align: center;
+    height: 30px;
+    padding: 5px;
+  }
 
-.dataContent .thead th {
-  background-color: #fafafa;
-  text-align: center;
-  height: 30px;
-  padding: 5px;
-}
+  .dataContent .notfixed th {
+    width: auto;
+  }
 
-.dataContent .notfixed th {
-  width: auto;
-}
-
-.dataContent .mathData td {
-  padding: 10px;
-}
+  .dataContent .mathData td {
+    padding: 10px;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3