From 289367f7066d1179685a501ec5a108fa11a7c0f2 Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期五, 30 五月 2025 11:14:26 +0800
Subject: [PATCH] 维修工单实际工时展示实际十分修改

---
 src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue |  201 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 124 insertions(+), 77 deletions(-)

diff --git a/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue b/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue
index 3a61ac0..62665b8 100644
--- a/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue
+++ b/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue
@@ -18,12 +18,9 @@
         slot-scope='text, record, index'
       >
         <div :key='col.dataIndex'>
-          <a-input-search
-            v-if="col.dataIndex == 'username'"
-            enter-button
-            @search='onSearchUser(index)'
+          <a-input
+            v-if="col.dataIndex == 'userId'"
             :value='text'
-            :read-only='true'
             @change='(e) => handleChange(e, record.key, col, index)'
             :disabled="repairOrderStatus=='4'"
           />
@@ -38,14 +35,25 @@
 
           <!--          <a-switch @change='(e)=>onChange(e, record.key, col, index)' :value='text' :disabled="repairOrderStatus=='4'"-->
           <!--                    v-if="col.dataIndex == 'principalContractor'" />-->
-          <a-select default-value='0' :value='text' :disabled="repairOrderStatus=='4'"
-                    v-if="col.dataIndex == 'principalContractor'"
-                    @change='(e)=>handleChange(e, record.key, col, index)'>
+          <a-select
+            default-value='0'
+            :value='text'
+            :disabled="repairOrderStatus=='4'"
+            v-if="col.dataIndex == 'principalContractor'"
+            style="width: 100%;"
+            @change='(e)=>handleChange(e, record.key, col, index)'
+          >
             <a-select-opt-group>
-              <a-select-option value='1'>
+              <a-select-option
+                value='1'
+                style="width: 100%;"
+              >
                 鏄�
               </a-select-option>
-              <a-select-option value='0'>
+              <a-select-option
+                value='0'
+                style="width: 100%;"
+              >
                 鍚�
               </a-select-option>
             </a-select-opt-group>
@@ -63,14 +71,16 @@
             :value='text'
             format='YYYY-MM-DD HH:mm'
             :show-time="{ defaultValue: moment('00:00', 'HH:mm') }"
-            v-if="col.dataIndex == 'startTime'" @change='(e)=>handleChange(e, record.key, col, index)'
+            v-if="col.dataIndex == 'startTime'"
+            @change='(e)=>handleChange(e, record.key, col, index)'
           />
           <!--          :disabled="repairOrderStatus=='4'"-->
           <a-date-picker
             :value='text'
             format='YYYY-MM-DD HH:mm'
             :show-time="{ defaultValue: moment('00:00', 'HH:mm') }"
-            v-if="col.dataIndex == 'endTime'" @change='(e)=>handleChange(e, record.key, col, index)'
+            v-if="col.dataIndex == 'endTime'"
+            @change='(e)=>handleChange(e, record.key, col, index)'
           />
 
           <!--          <a-input-number-->
@@ -111,13 +121,13 @@
         >
           鍙栨秷
         </a-button>
-        <a-button
+        <!-- <a-button
           @click='handleOk(1)'
           type='primary'
           :style="{marginRight: '8px'}"
           :disabled="this.repairOrderStatus=='4' || this.repairOrderStatus=='2'"
         >鏆傚瓨
-        </a-button>
+        </a-button> -->
         <a-button
           @click='handleOk(0)'
           type='primary'
@@ -161,7 +171,6 @@
     repairOrderId: {
       type: String,
       required: false,
-      default: '-1'
     },
     repairOrderStatus: {
       type: String,
@@ -198,7 +207,7 @@
       validatorRules: {
         userId: {
           rules: [
-            { required: true, message: '璇烽�夋嫨浜哄憳!' }
+            { required: true, message: '璇峰~鍐欎汉鍛�!' }
           ]
         },
         actual_hour: {
@@ -228,50 +237,48 @@
           key: 'rowIndex',
           width: 60,
           align: 'center',
-          customRender: function(t, r, index) {
+          customRender: function (t, r, index) {
             return parseInt(index) + 1
           }
         },
         {
-          title: '*浜哄憳缂栫爜',
-          dataIndex: 'username',
+          title: '*浜哄憳鍚嶇О',
+          dataIndex: 'userId',
           align: 'center',
-          scopedSlots: { customRender: 'username' },
-          className: 'red',
-          width: 250
+          scopedSlots: { customRender: 'userId' },
+          // className: 'red',
+          width: 200
         },
         {
-          title: '浜哄憳鍚嶇О',
-          dataIndex: 'realname',
-          align: 'center',
-          width: 150
-        },
-        {
-          title: '涓绘壙淇汉',
+          title: '*涓绘壙淇汉',
           dataIndex: 'principalContractor',
           align: 'center',
           scopedSlots: { customRender: 'principalContractor' },
-          width: 100
+          // className: 'red',
+          width: 150
         },
         {
           title: '*瀹為檯宸ユ椂',
           dataIndex: 'actualHour',
           align: 'center',
-          className: 'red',
+          // className: 'red',
           scopedSlots: { customRender: 'actualHour' },
-          width: 120
+          width: 150
         },
         {
           title: '寮�濮嬫椂闂�',
           dataIndex: 'startTime',
           scopedSlots: { customRender: 'startTime' },
-          align: 'center'
+          align: 'center',
+          width: 200
         },
         {
           title: '缁撴潫鏃堕棿',
           dataIndex: 'endTime',
           align: 'center',
-          scopedSlots: { customRender: 'endTime' }
+          scopedSlots: { customRender: 'endTime' },
+          width: 200
+
         },
 
         {
@@ -279,12 +286,14 @@
           dataIndex: 'theoreticalTime',
           align: 'center'
           // scopedSlots: { customRender: 'theoreticalTime' },
+          ,
+          width: 150
         },
         {
           title: '鎿嶄綔',
           dataIndex: 'action',
           align: 'center',
-          width: 250,
+          width: 150,
           scopedSlots: { customRender: 'action' }
         }
       ],
@@ -300,9 +309,11 @@
     repairOrderId: {
       immediate: true,
       handler(val) {
-        this.clearList()
-        this.queryParam['repairOrderId'] = val
-        this.loadData(1)
+        if (this.repairOrderId) {
+          this.clearList()
+          this.queryParam['repairOrderId'] = val
+          this.loadData(1)
+        }
       }
     }
   },
@@ -311,7 +322,7 @@
     onChange(checked) {
       console.log(`a-switch to ${checked}`)
     },
-//鏃堕棿閫夋嫨淇敼
+    //鏃堕棿閫夋嫨淇敼
     onStartTimeChange() {
       console.log()
 
@@ -332,7 +343,8 @@
       this.disableSubmit = false
       this.visible = false
     },
-    handleDelete(text, record, index) {
+    handleDelete(index) {
+      console.log(index)
       this.dataSource.splice(index, 1)
     },
 
@@ -365,8 +377,11 @@
           for (let i = 0; i < formData.repairOrderActualWorkHoursList.length; i++) {
             const start = formData.repairOrderActualWorkHoursList[i].startTime
             const end = formData.repairOrderActualWorkHoursList[i].endTime
-            formData.repairOrderActualWorkHoursList[i].startTime = moment(start).format('yyyy-MM-DD HH:mm')
-            formData.repairOrderActualWorkHoursList[i].endTime = moment(end).format('yyyy-MM-DD HH:mm')
+            formData.repairOrderActualWorkHoursList[i].startTime = this.formattedTime(start);
+
+            formData.repairOrderActualWorkHoursList[i].endTime = this.formattedTime(end);
+            // formData.repairOrderActualWorkHoursList[i].startTime = moment(start).format('yyyy-MM-DD HH:mm')
+            // formData.repairOrderActualWorkHoursList[i].endTime = moment(end).format('yyyy-MM-DD HH:mm')
           }
           // formData.equipmentId = that.equipmentId;
           let obj = obj = postAction(this.url.confirmHour, formData)
@@ -385,21 +400,54 @@
         }
       })
     },
+    formattedTime(originalTime) {
+
+      // 鍒涘缓 Date 瀵硅薄
+      const date = new Date(originalTime)
+
+      // 妫�鏌� Date 瀵硅薄鏄惁鏈夋晥
+      if (isNaN(date.getTime())) return '鏃犳晥鏃堕棿'
+
+      // 鑾峰彇骞淬�佹湀銆佹棩銆佹椂銆佸垎
+      const year = date.getFullYear()
+      const month = String(date.getMonth() + 1).padStart(2, '0')
+      const day = String(date.getDate()).padStart(2, '0')
+      const hours = String(date.getHours()).padStart(2, '0')
+      const minutes = String(date.getMinutes()).padStart(2, '0')
+      // 鎷兼帴鎴愭寚瀹氭牸寮�
+      return `${year}-${month}-${day} ${hours}:${minutes}`
+    },
+
     handleChange(value, key, column, index) {
       let that = this
       const temp = [...that.dataSource]
       const target = temp[index]
       if (target) {
-        target[column.dataIndex] = value
         if ('userId' == column.dataIndex) {
-          target['userId'] = value
+          target['userId'] = value.target.value
         }
         if ('principalContractor' == column.dataIndex) {
           target['principalContractor'] = value
+          if (value === '1') {
+            for (var i = 0; i < temp.length; i++) {
+              if (i !== index) {
+                temp[i]['principalContractor'] = '0';
+              }
+            }
+          }
         }
 
         if ('actualHour' == column.dataIndex) {
-          target['actualHour'] = value
+          if (target['theoreticalTime'] !== null && target['theoreticalTime'] < value) {
+            that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽疄闄呭伐鏃朵笉鑳藉皬浜庣悊璁哄伐鏃�,璇烽噸鏂板~鍐�')
+            target['actualHour'] = null;
+          } else if (target['theoreticalTime'] === null || target['theoreticalTime'] === undefined) {
+            that.$message.error('璇锋鏌ョ' + (index + 1) + '璇峰厛濉啓寮�濮嬫椂闂翠笌缁撴潫鏃堕棿')
+            target['actualHour'] = null;
+          } else {
+            target['actualHour'] = value
+          }
+
         }
         // if ('theoreticalTime' == column.dataIndex) {
         //   target['theoreticalTime'] = value
@@ -408,56 +456,55 @@
 
           if (target['endTime'] == null) {
             target['startTime'] = value
-          } else if (target['startTime'] != null && target['endTime'] != null) {
-            const diffInHours = this.getTimeDiff(target['startTime'], target['endTime'])
-            if (diffInHours < 0) {
-              target['startTime'] = ''
-              target['theoreticalTime'] = ''
-              that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
-            } else {
-              target['startTime'] = value
-              target['theoreticalTime'] = diffInHours
-            }
-          } else if (target['startTime'] == null && target['endTime'] != null) {
+          } else {
             const diffInHours = this.getTimeDiff(value, target['endTime'])
             if (diffInHours < 0) {
               target['startTime'] = ''
               target['theoreticalTime'] = ''
-              that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
-
+              that.$message.error('寮�濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
             } else {
-              target['startTime'] = value
-              target['theoreticalTime'] = diffInHours
+              if (target['actualHour'] !== null) {
+                if (diffInHours < target['actualHour']) {
+                  target['startTime'] = ''
+                  target['theoreticalTime'] = ''
+                  that.$message.error('瀹為檯宸ユ椂涓嶈兘灏忎簬鐞嗚宸ユ椂,璇烽噸鏂板~鍐�')
+                } else {
+                  target['startTime'] = value
+                  target['theoreticalTime'] = diffInHours
+                }
+              } else {
+                target['startTime'] = value
+                target['theoreticalTime'] = diffInHours
+              }
             }
           }
-
         }
 
         if ('endTime' == column.dataIndex) {
           if (target['startTime'] == null) {
             target['endTime'] = value
-          } else if (target['startTime'] != null && target['endTime'] != null) {
-            const diffInHours = this.getTimeDiff(target['startTime'], target['endTime'])
-            if (diffInHours < 0) {
-              target['endTime'] = ''
-              target['theoreticalTime'] = ''
-              that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
-            } else {
-              target['endTime'] = value
-              target['theoreticalTime'] = diffInHours
-            }
-
-          } else if (target['startTime'] != null && target['endTime'] == null) {
+          } else {
             const diffInHours = this.getTimeDiff(target['startTime'], value)
             if (diffInHours < 0) {
               target['endTime'] = ''
               target['theoreticalTime'] = ''
-              that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
-
+              that.$message.error('寮�濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
             } else {
-              target['endTime'] = value
-              target['theoreticalTime'] = diffInHours
+              if (target['actualHour'] !== null) {
+                if (diffInHours < target['actualHour']) {
+                  target['endTime'] = ''
+                  target['theoreticalTime'] = ''
+                  that.$message.error('瀹為檯宸ユ椂涓嶈兘灏忎簬鐞嗚宸ユ椂,璇烽噸鏂板~鍐�')
+                } else {
+                  target['endTime'] = value
+                  target['theoreticalTime'] = diffInHours
+                }
+              } else {
+                target['endTime'] = value
+                target['theoreticalTime'] = diffInHours
+              }
             }
+
           }
         }
         that.dataSource = temp

--
Gitblit v1.9.3