From f7f0a26ba95de85e537b0c18e02f06416b01312f Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期一, 04 八月 2025 21:33:28 +0800
Subject: [PATCH] 保养流程添加流程节点

---
 src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue |   97 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 74 insertions(+), 23 deletions(-)

diff --git a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
index 8acbf86..71f489c 100644
--- a/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
+++ b/src/views/mdc/base/modules/efficiencyReport/EfficiencyList.vue
@@ -38,7 +38,9 @@
           </a-col>
           <a-col :md="6" :sm="6">
             <a-form-item label="鏃堕棿">
-              <a-range-picker @change="dateParamChange" :disabledDate="disabledDate" format="YYYYMMDD"
+              <a-range-picker @change="dateParamChange" :disabledDate="disabledDate"
+                              @calendarChange="handleCalendarChange" @openChange="handleCalendarOpenChange"
+                              format="YYYYMMDD"
                               v-model="dates" :allowClear="false"/>
             </a-form-item>
           </a-col>
@@ -95,8 +97,13 @@
                 <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-button type="primary" @click="exportOneYearExcel('璁惧TEEP')" icon="download">澶ф暟鎹鍑�</a-button>-->
-                <a-button type="primary" @click="handleShowFeedbackModal" icon="plus" v-has="'efficiency:feedback'">寮傚父鍙嶉</a-button>
+                <a-button type="primary" @click="exportLongTimeExcel('璁惧TEEP')" icon="download"
+                          :loading="longTimeExportButtonLoading">
+                  澶ф暟鎹鍑�
+                </a-button>
+                <a-button type="primary" @click="handleShowFeedbackModal" icon="plus" v-has="'efficiency:feedback'">
+                  寮傚父鍙嶉
+                </a-button>
                 <a-button type="primary" icon="printer" v-print="'#Efficiency'"
                           v-has="'efficiency:print'">鎵撳嵃
                 </a-button>
@@ -275,7 +282,7 @@
           list: '/mdc/efficiencyReport/efficiencyList',
           listByType: '/mdc/MdcUtilizationRate/getByType',
           queryEquipmentType: '/mdc/mdcEquipmentType/queryEquipmentType',
-          exportOneYearXlsUrl: ''
+          exportLongTimeXlsUrl: '/mdc/efficiencyReport/exportEfficiencyXls'
         },
         tableHeads: [],
         utilizationRateRowAverage: '',
@@ -289,7 +296,9 @@
         requestAllDataSize: 8,// 鎬诲叡璇锋眰鐨勫垪琛ㄩ」鏁扮洰(榛樿鍊间负榛樿鏃ユ湡鐨勫樊鍊�+1)
         everyRequestDataSize: 15,// 姣忔璇锋眰鐨勫垪琛ㄩ」鏁扮洰
         toggleSearchStatus: false,
-        modalVisible: false// 寮傚父鍙嶉寮圭獥鏄惁寮瑰嚭
+        modalVisible: false,// 寮傚父鍙嶉寮圭獥鏄惁寮瑰嚭
+        preSelectFirstDate: null,
+        longTimeExportButtonLoading: false
       }
     },
     props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -469,10 +478,42 @@
         }
         return list
       },
-      disabledDate(current) {
-        //Can not slect days before today and today
-        return current && current > moment().subtract('days', 1)
+
+      dateParamChange(v1, v2) {
+        this.queryParam.startTime = v2[0]
+        this.queryParam.endTime = v2[1]
       },
+
+      /**
+       * 鏃堕棿閫夋嫨鍣ㄩ潰鏉夸笂鐨勫�煎彂鐢熸敼鍙樻椂瑙﹀彂
+       * @param dates 闈㈡澘涓婄殑涓や釜鍊肩粍鎴愮殑鏁扮粍
+       */
+      handleCalendarChange(dates) {
+        if (dates.length === 1) this.preSelectFirstDate = dates[0]
+      },
+
+      /**
+       * 鎺у埗鏃堕棿閫夋嫨鍣ㄩ潰鏉垮紑鍚笌鍏抽棴
+       * @param status 寮�鍚姸鎬�
+       */
+      handleCalendarOpenChange(status) {
+        if (status) this.preSelectFirstDate = null
+      },
+
+      /**
+       * 闈㈡澘涓婄姝㈤�夋嫨鐨勬棩鏈�
+       * @param current 绂佹鐨勬椂闂磋寖鍥�
+       */
+      disabledDate(current) {
+        if (!this.preSelectFirstDate) {
+          return current > moment().startOf('days')
+        } else {
+          return current < moment(this.preSelectFirstDate).subtract(365, 'days').startOf('days')
+            || current > moment().startOf('days')
+            || current > moment(this.preSelectFirstDate).add(365, 'days').endOf('days')
+        }
+      },
+
       exportExcel() {
         $('#Efficiency').table2excel({
           exclude: '.noExl',
@@ -484,10 +525,22 @@
           exclude_inputs: false
         })
       },
-      exportOneYearExcel(fileName) {
-        // let param = this.getQueryParams()
-        // console.log('瀵煎嚭鍙傛暟', param)
-        downFile(this.url.exportOneYearXlsUrl)
+      exportLongTimeExcel(fileName) {
+        let param = {
+          startTime: moment(this.dates[0]).format('YYYYMMDD'),
+          endTime: moment(this.dates[1]).format('YYYYMMDD')
+        }
+        Object.keys(this.queryParams).forEach(item => {
+          if (Array.isArray(this.queryParams[item])) {
+            param[item] = this.queryParams[item].join()
+            // 姝ゅ涓轰繚璇佹帴鍙e弬鏁颁笉澶氫綑锛屽彲鐪佺暐
+            if (this.queryParams[item].length === 0) delete param[item]
+          }
+        })
+        param = Object.assign({}, this.queryParam, param)
+
+        this.longTimeExportButtonLoading = true
+        downFile(this.url.exportLongTimeXlsUrl, param)
           .then((data) => {
             if (!data) {
               this.$notification.warning({
@@ -497,18 +550,25 @@
               return
             }
             if (typeof window.navigator.msSaveBlob !== 'undefined') {
-              window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + '.xls')
+              window.navigator.msSaveBlob(new Blob([data], { type: 'application/vnd.ms-excel' }), fileName + '.xlsx')
             } else {
               let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.ms-excel' }))
               let link = document.createElement('a')
               link.style.display = 'none'
               link.href = url
-              link.setAttribute('download', fileName + '.xls')
+              link.setAttribute('download', fileName + '.xlsx')
               document.body.appendChild(link)
               link.click()
               document.body.removeChild(link) //涓嬭浇瀹屾垚绉婚櫎鍏冪礌
               window.URL.revokeObjectURL(url) //閲婃斁鎺塨lob瀵硅薄
             }
+          })
+          .finally(() => {
+            let timer = setTimeout(() => {
+              this.longTimeExportButtonLoading = false
+              clearTimeout(timer)
+              timer = null
+            }, 1000)
           })
       },
       showIdentifying() {
@@ -517,11 +577,6 @@
             this.identifying = res.result
           }
         })
-      },
-      dateParamChange(v1, v2) {
-        this.queryParam.startTime = v2[0]
-        this.queryParam.endTime = v2[1]
-        this.dates = [v1[0], v1[1]]
       },
       efficiencyOptionsOnChange(checkedList) {
         this.checkedList = checkedList
@@ -572,8 +627,6 @@
         this.tableHeads = []
         this.dataList = []
         this.spinning = true
-        console.log('requestAllDataSize', this.requestAllDataSize)
-        console.log('everyRequestDataSize', this.everyRequestDataSize)
         // 鑻ユ棩鏈熼�夋嫨鍣ㄨ缃殑鏌ヨ璇锋眰鏁伴噺瓒呰繃15鏉″垯寮�鍚噿鍔犺浇
         if (this.requestAllDataSize > this.everyRequestDataSize) {
           // 寮�鍚噿鍔犺浇鍚庡皢缁撴潫鏃ユ湡璁剧疆涓哄紑濮嬫棩鏈熶箣鍚庣殑14澶╋紝鍗冲厛鏌ヨ15澶╁唴鐨勬暟鎹�
@@ -594,7 +647,6 @@
 
             this.tableHeads = res.result.dates
             this.dataList = res.result.mdcEfficiencyList
-            console.log('dataList', this.dataList)
             this.checkSameData(this.dataList)
             this.checkSameData1(this.dataList)
             this.checkSameData2(this.dataList)
@@ -631,7 +683,6 @@
             .then(res => {
               if (res.success) {
                 this.tableHeads = [...this.tableHeads.slice(0, -2), ...res.result.dates]
-                console.log('dataList', this.dataList)
                 this.dataList.forEach(item1 => {
                   res.result.mdcEfficiencyList.forEach(item2 => {
                     if (item1.equipmentId === item2.equipmentId) {

--
Gitblit v1.9.3