From db457552ab2251fdaaedb8f736e6103f69eccb10 Mon Sep 17 00:00:00 2001
From: zenglf <18502938215@163.com>
Date: 星期三, 25 十月 2023 18:44:15 +0800
Subject: [PATCH] 维修工单修改

---
 src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue |  327 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 247 insertions(+), 80 deletions(-)

diff --git a/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue b/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue
index 7d45d2a..3a61ac0 100644
--- a/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue
+++ b/src/views/eam/modules/repairorder/moudles/RepairOrderActualHoursReport.vue
@@ -1,41 +1,87 @@
 <template>
   <a-card
-    :bordered="false"
+    :bordered='false'
     :class="'cust-erp-sub-tab'"
   >
     <a-table
-      ref="table"
+      ref='table'
       bordered
-      rowKey="id"
-      :columns="columns"
-      :dataSource="dataSource"
-      :pagination="ipagination"
-      @change="handleTableChange"
+      rowKey='id'
+      :columns='columns'
+      :dataSource='dataSource'
+      :pagination='ipagination'
+      @change='handleTableChange'
     >
       <template
-        v-for="col in columns"
-        :slot="col.dataIndex"
+        v-for='col in columns'
+        :slot='col.dataIndex'
         slot-scope='text, record, index'
       >
-        <div :key="col.dataIndex">
+        <div :key='col.dataIndex'>
           <a-input-search
             v-if="col.dataIndex == 'username'"
             enter-button
-            @search="onSearchUser(index)"
-            :value="text"
-            :read-only="true"
-            @change="(e) => handleChange(e, record.key, col, index)"
+            @search='onSearchUser(index)'
+            :value='text'
+            :read-only='true'
+            @change='(e) => handleChange(e, record.key, col, index)'
             :disabled="repairOrderStatus=='4'"
           />
           <a-input-number
-            :value="text"
+            :value='text'
             v-if="col.dataIndex == 'actualHour'"
-            :min="0"
-            :max="99999"
-            @change="(e)=>handleChange(e, record.key, col, index)"
+            :min='0'
+            :max='99999'
+            @change='(e)=>handleChange(e, record.key, col, index)'
             :disabled="repairOrderStatus=='4'"
           />
 
+          <!--          <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-opt-group>
+              <a-select-option value='1'>
+                鏄�
+              </a-select-option>
+              <a-select-option value='0'>
+                鍚�
+              </a-select-option>
+            </a-select-opt-group>
+
+          </a-select>
+          <!--          <a-range-picker-->
+          <!--            :ranges="{ Today: [moment(), moment()], 'This Month': [moment(), moment().endOf('month')] }"-->
+          <!--            :show-time="{ format: 'HH:mm' }"-->
+          <!--            format="YYYY-MM-DD HH:mm"-->
+          <!--            :placeholder="['Start Time', 'End Time']"-->
+          <!--            v-if="col.dataIndex == 'startTime'"    @change='onDateChange'-->
+          <!--          />-->
+          <a-date-picker
+            :disabled="repairOrderStatus=='4'"
+            :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)'
+          />
+          <!--          :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)'
+          />
+
+          <!--          <a-input-number-->
+          <!--            :value='text'-->
+          <!--            v-if="col.dataIndex == 'theoreticalTime'"-->
+          <!--            :min='0'-->
+          <!--            :max='99999'-->
+          <!--            :read-only='true'-->
+          <!--            @change='(e)=>handleChange(e, record.key, col, index)'-->
+          <!--            :disabled="true"-->
+          <!--          />-->
         </div>
       </template>
       <span
@@ -44,15 +90,15 @@
       >
         <a
           :disabled="repairOrderStatus=='4'"
-          @click="handleDelete(index)"
+          @click='handleDelete(index)'
         >鍒犻櫎</a>
       </span>
     </a-table>
     <a-button
-      style="width: 100%; margin-top: 16px; margin-bottom: 8px"
-      type="dashed"
-      icon="plus"
-      @click="addHour"
+      style='width: 100%; margin-top: 16px; margin-bottom: 8px'
+      type='dashed'
+      icon='plus'
+      @click='addHour'
       :disabled="this.repairOrderStatus=='4' || this.repairOrderStatus=='2'"
     >娣诲姞瀹為檯宸ユ椂
       <!-- :disabled="mainId.status=='4'" -->
@@ -61,27 +107,29 @@
       <a-row :style="{textAlign:'right'}">
         <a-button
           :style="{marginRight: '8px'}"
-          @click="handleCancel"
+          @click='handleCancel'
         >
           鍙栨秷
         </a-button>
         <a-button
-          @click="handleOk(1)"
-          type="primary"
+          @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"
+          @click='handleOk(0)'
+          type='primary'
           :disabled="this.repairOrderStatus=='4' || this.repairOrderStatus=='2'"
-        >淇濆瓨</a-button>
+        >淇濆瓨
+        </a-button>
       </a-row>
       <!-- :disabled="false" -->
     </div>
     <actual-hour-user-select
-      ref="actualUserSelect"
-      @sendUserRecord="sendUserRecord"
+      ref='actualUserSelect'
+      @sendUserRecord='sendUserRecord'
     >
     </actual-hour-user-select>
   </a-card>
@@ -92,12 +140,15 @@
 import pick from 'lodash.pick'
 import JEllipsis from '@/components/jeecg/JEllipsis'
 import ActualHourUserSelect from './select/ActualHourUserSelect.vue'
+import moment from 'moment'
+
 export default {
   name: 'RepairOrderActualWorkHoursList',
   mixins: [JeecgListMixin],
   components: {
     JEllipsis,
     ActualHourUserSelect
+
   },
   // props: {
   //   mainId: {
@@ -121,13 +172,12 @@
       type: String,
       required: false,
       default: ''
-    },
+    }
   },
   data() {
     return {
-      title: "瀹為檯宸ユ椂",
+      title: '瀹為檯宸ユ椂',
       flag: false,//涓婚〉闈㈢殑鏍囪浣�  鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭
-      visible: false,
       model: {},
       obj: {},
       maskClosable: true,
@@ -139,7 +189,7 @@
         pageSize: 99,
         pageSizeOptions: ['99', '199'],
         showTotal: (total, range) => {
-          return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�"
+          return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�'
         },
         showQuickJumper: true,
         showSizeChanger: true,
@@ -148,24 +198,24 @@
       validatorRules: {
         userId: {
           rules: [
-            { required: true, message: '璇烽�夋嫨浜哄憳!' },
+            { required: true, message: '璇烽�夋嫨浜哄憳!' }
           ]
         },
         actual_hour: {
           rules: [
-            { required: false, message: '璇峰~鍐欏伐鏃�!' },
+            { required: false, message: '璇峰~鍐欏伐鏃�!' }
           ]
-        },
+        }
       },
       labelCol: {
         xs: { span: 24 },
-        sm: { span: 7 },
+        sm: { span: 7 }
       },
       wrapperCol: {
         xs: { span: 24 },
-        sm: { span: 16 },
+        sm: { span: 16 }
       },
-      drawerWidth: "100%",
+      drawerWidth: '100%',
       visible: false,
       disableSubmit: false,
       disableSelect: false,
@@ -177,32 +227,58 @@
           dataIndex: '',
           key: 'rowIndex',
           width: 60,
-          align: "center",
-          customRender: function (t, r, index) {
-            return parseInt(index) + 1;
+          align: 'center',
+          customRender: function(t, r, index) {
+            return parseInt(index) + 1
           }
         },
         {
           title: '*浜哄憳缂栫爜',
           dataIndex: 'username',
-          align: "center",
+          align: 'center',
           scopedSlots: { customRender: 'username' },
           className: 'red',
-          width: 250,
+          width: 250
         },
         {
           title: '浜哄憳鍚嶇О',
           dataIndex: 'realname',
-          align: "center",
-          width: 250,
+          align: 'center',
+          width: 150
+        },
+        {
+          title: '涓绘壙淇汉',
+          dataIndex: 'principalContractor',
+          align: 'center',
+          scopedSlots: { customRender: 'principalContractor' },
+          width: 100
         },
         {
           title: '*瀹為檯宸ユ椂',
           dataIndex: 'actualHour',
-          align: "center",
+          align: 'center',
           className: 'red',
           scopedSlots: { customRender: 'actualHour' },
-          width: 250,
+          width: 120
+        },
+        {
+          title: '寮�濮嬫椂闂�',
+          dataIndex: 'startTime',
+          scopedSlots: { customRender: 'startTime' },
+          align: 'center'
+        },
+        {
+          title: '缁撴潫鏃堕棿',
+          dataIndex: 'endTime',
+          align: 'center',
+          scopedSlots: { customRender: 'endTime' }
+        },
+
+        {
+          title: '鐞嗚宸ユ椂',
+          dataIndex: 'theoreticalTime',
+          align: 'center'
+          // scopedSlots: { customRender: 'theoreticalTime' },
         },
         {
           title: '鎿嶄綔',
@@ -214,7 +290,7 @@
       ],
       url: {
         list: '/eam/repairOrder/listRepairOrderActualWorkHoursByMainId',
-        confirmHour: '/eam/repairOrderActualHours/add',
+        confirmHour: '/eam/repairOrderActualHours/add'
       },
       changeIndex: 0
     }
@@ -224,46 +300,59 @@
     repairOrderId: {
       immediate: true,
       handler(val) {
-        this.clearList();
+        this.clearList()
         this.queryParam['repairOrderId'] = val
         this.loadData(1)
       }
-    },
+    }
   },
   methods: {
+    moment,
+    onChange(checked) {
+      console.log(`a-switch to ${checked}`)
+    },
+//鏃堕棿閫夋嫨淇敼
+    onStartTimeChange() {
+      console.log()
+
+    },
+    onEndTimeChange() {
+      console.log()
+
+    },
     addHour() {
       this.dataSource.push({ userId: '', repairOrderId: this.repairOrderId, actualHour: 0, username: '', realname: '' })
     },
     handleCancel() {
-      this.$bus.$emit('closeDrawer');
+      this.$bus.$emit('closeDrawer')
     },
     close() {
-      this.$emit('close');
+      this.$emit('close')
       this.dataSource = []
-      this.disableSubmit = false;
-      this.visible = false;
+      this.disableSubmit = false
+      this.visible = false
     },
     handleDelete(text, record, index) {
-      this.dataSource.splice(index, 1);
+      this.dataSource.splice(index, 1)
     },
 
     handleOk(saveStatus) {
       const that = this
       if (saveStatus == 0) {
-        let workHoursDataSource = that.dataSource;
+        let workHoursDataSource = that.dataSource
         for (let i = 0; i < workHoursDataSource.length; i++) {
           if (workHoursDataSource[i].userId == undefined || workHoursDataSource[i].userId == null || workHoursDataSource[i].userId == '') {
-            that.$message.warning("璇烽�夋嫨绗�" + (i + 1) + "琛岀淮淇汉鍛橈紒");
-            return false;
+            that.$message.warning('璇烽�夋嫨绗�' + (i + 1) + '琛岀淮淇汉鍛橈紒')
+            return false
           }
           if (workHoursDataSource[i].actualHour == undefined || workHoursDataSource[i].actualHour == null || workHoursDataSource[i].actualHour == '') {
-            that.$message.warning("璇峰~鍐欑" + (i + 1) + "琛屽疄闄呭伐鏃讹紒");
-            return false;
+            that.$message.warning('璇峰~鍐欑' + (i + 1) + '琛屽疄闄呭伐鏃讹紒')
+            return false
           }
         }
       }
       if (that.dataSource.length === 0) {
-        that.$message.warning("璇烽�夋嫨浜哄憳锛�")
+        that.$message.warning('璇烽�夋嫨浜哄憳锛�')
         return
       }
       this.form.validateFields((err, values) => {
@@ -271,8 +360,14 @@
           that.confirmLoading = true
           let formData = {}
           // formData.repairOrderId = that.mainId.id;
-          formData.repairOrderId = that.repairOrderId;
-          formData.repairOrderActualWorkHoursList = that.dataSource;
+          formData.repairOrderId = that.repairOrderId
+          formData.repairOrderActualWorkHoursList = that.dataSource
+          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.equipmentId = that.equipmentId;
           let obj = obj = postAction(this.url.confirmHour, formData)
           obj.then((res) => {
@@ -285,24 +380,87 @@
           }).finally(() => {
             that.confirmLoading = false
             that.close()
-            that.loadData(1);
+            that.loadData(1)
           })
         }
       })
     },
     handleChange(value, key, column, index) {
-      let that = this;
-      const temp = [...that.dataSource];
-      const target = temp[index];
+      let that = this
+      const temp = [...that.dataSource]
+      const target = temp[index]
       if (target) {
-        target[column.dataIndex] = value;
+        target[column.dataIndex] = value
         if ('userId' == column.dataIndex) {
-          target['userId'] = value;
+          target['userId'] = value
         }
+        if ('principalContractor' == column.dataIndex) {
+          target['principalContractor'] = value
+        }
+
         if ('actualHour' == column.dataIndex) {
-          target['actualHour'] = value;
+          target['actualHour'] = value
         }
-        that.dataSource = temp;
+        // if ('theoreticalTime' == column.dataIndex) {
+        //   target['theoreticalTime'] = value
+        // }
+        if ('startTime' == column.dataIndex) {
+
+          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) {
+            const diffInHours = this.getTimeDiff(value, target['endTime'])
+            if (diffInHours < 0) {
+              target['startTime'] = ''
+              target['theoreticalTime'] = ''
+              that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
+
+            } 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) {
+            const diffInHours = this.getTimeDiff(target['startTime'], value)
+            if (diffInHours < 0) {
+              target['endTime'] = ''
+              target['theoreticalTime'] = ''
+              that.$message.error('璇锋鏌ョ' + (index + 1) + '琛屽紑濮嬫椂闂翠笉鑳藉皬浜庣粨鏉熸椂闂�,璇烽噸鏂伴�夋嫨')
+
+            } else {
+              target['endTime'] = value
+              target['theoreticalTime'] = diffInHours
+            }
+          }
+        }
+        that.dataSource = temp
       }
     },
     onSearchUser(index) {
@@ -317,17 +475,26 @@
       const target = temp[this.recordIndex]
       if (target) {
         console.log(record)
-        target.userId = record.id;
-        target.username = record.username;
-        target.realname = record.realname;
+        target.userId = record.id
+        target.username = record.username
+        target.realname = record.realname
         this.dataSource = temp
       }
     },
     clearList() {
-      this.dataSource = [];
+      this.dataSource = []
       this.ipagination.current = 1
+    },
+    // 鑾峰彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿鐨勬椂闂村樊
+    getTimeDiff(startTime, endTime) {
+      const start = moment(startTime, 'YYYY-MM-DD HH:mm:ss')
+      const end = moment(endTime, 'YYYY-MM-DD HH:mm:ss')
+      const diff = end.diff(start)
+      var duration = moment.duration(diff)
+      var diffInHours = duration.asHours()
+      return diffInHours.toFixed(1)
     }
-  },
+  }
 
 }
 </script>

--
Gitblit v1.9.3