From a751e547d67c4f8e2c6fddf958c1559f792515bd Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 27 六月 2025 16:11:50 +0800
Subject: [PATCH] 添加工作流

---
 src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue |  133 +++++++++++++++++++++++++++++++-------------
 1 files changed, 93 insertions(+), 40 deletions(-)

diff --git a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue
index 85f3870..d4449e2 100644
--- a/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue
+++ b/src/views/mdc/base/modules/efficiencyShiftReport/EfficiencyShiftList.vue
@@ -16,7 +16,7 @@
                     :maxTagCount="1"
                     @change="selectChange($event,'equipmentType')"
                   >
-                    <a-select-option v-for="item in equipmentTypeList" :value="item.value">
+                    <a-select-option v-for="(item,index) in equipmentTypeList" :value="item.value" :key="index">
                       {{item.label}}
                     </a-select-option>
                   </a-select>
@@ -32,7 +32,7 @@
                     :maxTagCount="1"
                     @change="selectChange($event,'driveType')"
                   >
-                    <a-select-option v-for="item in driveTypeList" :value="item.value">
+                    <a-select-option v-for="(item,index) in driveTypeList" :value="item.value" :key="index">
                       {{item.label}}
                     </a-select-option>
                   </a-select>
@@ -40,7 +40,9 @@
               </a-col>
               <a-col :md="4" :sm="4" :xs="4">
                 <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>
@@ -87,23 +89,21 @@
                     :maxTagCount="1"
                     @change="selectChange($event,'deviceLevel')"
                   >
-                    <a-select-option v-for="item in device_level_list" :value="item.value">
+                    <a-select-option v-for="(item,index) in device_level_list" :value="item.value" :key="index">
                       {{item.label}}
                     </a-select-option>
                   </a-select>
                 </a-form-item>
               </a-col>
               <a-col :md="5" :sm="5" :xs="5">
-                <a-form-item label="璁惧绉嶇被">
+                <a-form-item label="閲嶈绋嬪害">
                   <a-select
-                    :value="queryParams.deviceCategory"
-                    mode="multiple"
-                    placeholder="璇烽�夋嫨璁惧绉嶇被"
+                    v-model="queryParam.deviceImportanceLevel"
+                    placeholder="璇烽�夋嫨璁惧閲嶈绋嬪害"
                     allow-clear
-                    :maxTagCount="1"
-                    @change="selectChange($event,'deviceCategory')"
                   >
-                    <a-select-option v-for="item in device_category_list" :value="item.value">
+                    <a-select-option v-for="(item,index) in device_importance_level_list" :value="item.value"
+                                     :key="index">
                       {{item.label}}
                     </a-select-option>
                   </a-select>
@@ -119,12 +119,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="handleShowFeedbackModal" icon="plus"
+                              v-has="'efficiencyShiftReport:feedback'">寮傚父鍙嶉
+                    </a-button>
                     <a-button type="primary" icon="printer" v-print="'#EfficiencyShift'"
                               v-has="'efficiencyShiftReport:print'">鎵撳嵃
                     </a-button>
                   </a-space>
-                  <a-checkbox-group :value="checkedList" :default-value="['lyl']" :options="efficiencyOptions"
-                                    @change="efficiencyOptionsOnChange"/>
                 </div>
                 <table cellpadding="5" cellspacing="1" style="border: 1px solid darkgray;">
                   <tr>
@@ -138,9 +139,17 @@
                 </table>
               </a-col>
             </a-row>
+
+            <a-row :gutter="24">
+              <a-col>
+                <a-checkbox-group :value="checkedList" :default-value="['lyl']" :options="efficiencyOptions"
+                                  @change="efficiencyOptionsOnChange"/>
+              </a-col>
+            </a-row>
           </a-form>
         </div>
       </div>
+
       <a-spin :spinning="spinning">
         <div class="container" id="EfficiencyShift" style="margin-top: 20px;">
           <div class="table2">
@@ -148,7 +157,9 @@
                    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 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;">璁惧缂栧彿
@@ -157,7 +168,9 @@
                 </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>
+                <th class="thgu dong7 name" rowspan="2" style="min-width: 120px; max-width: 120px;width: 120px;">璁惧鍨嬪彿
+                </th>
+                <th class="thgu dong8 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>
@@ -199,15 +212,18 @@
                     {{item.equipmentName}}
                   </td>
                   <td class="tdgu5  kaitou">{{item.equipmentType}}</td>
-                  <td class="tdgu6  kaitou">{{item.shiftSubName}}</td>
+                  <td class="tdgu6 kaitou">{{item.equipmentModel}}</td>
+                  <td class="tdgu7  kaitou">{{item.shiftSubName}}</td>
                 </template>
 
                 <template v-else>
-                  <td colspan="7" class="tdgu kaitou">{{item.level1}}</td>
+                  <td colspan="8" class="tdgu kaitou">{{item.level1}}</td>
                 </template>
                 <!--<td>{{item.tierType}}</td>-->
                 <template v-for="(tableHead, index) in item.dataList">
-                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1">{{tableHead.utilizationRate | numFilter}}</td>
+                  <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('lyl') > -1">
+                    {{tableHead.utilizationRate | numFilter}}
+                  </td>
                   <td :style="{background:tableHead.color }" v-if="checkedList.indexOf('kjsj') > -1">
                     {{tableHead.openLong | getFormattedTime}}
                   </td>
@@ -228,6 +244,8 @@
         </div>
       </a-spin>
     </div>
+
+    <mdc-message-approval-modal ref="modalForm" :visible="modalVisible" @closeModal="modalVisible = false"/>
   </div>
 </template>
 
@@ -238,10 +256,11 @@
   import '@/components/table2excel/table2excel'
   import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
   import api from '@/api/mdc'
+  import MdcMessageApprovalModal from '../MdcMessageApproval/MdcMessageApprovalModal'
 
   export default {
     name: 'EfficiencyShiftList',
-    components: {},
+    components: { MdcMessageApprovalModal },
     data() {
       return {
         typeTree: '',
@@ -253,14 +272,13 @@
         equipmentTypeList: [],
         driveTypeList: [],
         device_level_list: [],
-        device_category_list: [],
+        device_importance_level_list: [],
         identifying: [],
         queryParam: {},
         queryParams: {
           equipmentType: [],
           driveType: [],
-          deviceLevel: [],
-          deviceCategory: []
+          deviceLevel: []
         },
         queryParamEquip: {},
         queryParamPeople: {},
@@ -289,7 +307,9 @@
         shiftList: [],
         shiftSubList: [],
         spinning: false,
-        toggleSearchStatus: false
+        toggleSearchStatus: false,
+        modalVisible: false,// 寮傚父鍙嶉寮圭獥鏄惁寮瑰嚭
+        preSelectFirstDate: null
       }
     },
     props: { nodeTree: '', Type: '', nodePeople: '' },
@@ -305,6 +325,7 @@
       this.getDriveTypeByApi()
       this.initDictData('device_level')
       this.initDictData('device_category')
+      this.initDictData('device_importance_level')
     },
     mounted() {
       window.addEventListener('resize', this.handleWindowResize)
@@ -468,10 +489,37 @@
         }
         return list
       },
-      disabledDate(current) {
-        //Can not slect days before today and today
-        return current && current > moment().subtract('days', 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')
+        }
+      },
+
       initDeviceType(deviceList) {
         let dictCode = 'mdc_equipmentType'
         let items = []
@@ -543,19 +591,8 @@
       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() {
@@ -572,7 +609,6 @@
           if (this.queryParams[item].length === 0) delete this.queryParam[item]
         })
         this.loadData()
-        // this.onClearSelected()
       },
       searchReset() {
         this.typeTree = this.queryParam.typeTree
@@ -588,8 +624,7 @@
         this.queryParams = {
           equipmentType: [],
           driveType: [],
-          deviceLevel: [],
-          deviceCategory: []
+          deviceLevel: []
         }
         this.loadData()
         // this.onClearSelected()
@@ -618,6 +653,13 @@
           this.spinning = false
         })
       },
+
+      // 鎺у埗寮傚父鍙嶉寮圭獥寮瑰嚭
+      handleShowFeedbackModal() {
+        this.$refs.modalForm.formParams = {}
+        this.modalVisible = true
+      },
+
       queryGroup() {
         getAction(this.url.queryEquipmentType).then(res => {
           if (res.success) {
@@ -720,6 +762,12 @@
     z-index: 2;
   }
 
+  .table tbody tr .tdgu7 {
+    position: sticky;
+    left: 632px;
+    z-index: 2;
+  }
+
   .table2 thead tr .timeth,
   .table2 thead tr .thgu {
     position: sticky;
@@ -772,6 +820,11 @@
     left: 512px;
   }
 
+  .table2 thead .equipname .dong8 {
+    z-index: 6;
+    left: 632px;
+  }
+
   #EfficiencyShift {
     overflow: hidden;
   }

--
Gitblit v1.9.3