From c887bb7836b82573c0bc7d11b8dd46b4d7e522e1 Mon Sep 17 00:00:00 2001
From: “linengliang” <vanSuperEnergy@163.com>
Date: 星期四, 14 九月 2023 18:11:55 +0800
Subject: [PATCH] 预测性维护工单

---
 src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue |  329 ++++++++++++++++++++++++++++++------------------------
 1 files changed, 185 insertions(+), 144 deletions(-)

diff --git a/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue b/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue
index 8fe8162..0bf4755 100644
--- a/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue
+++ b/src/views/eam/modules/predictiveWorkOrder/ActualWorkHoursEditTable.vue
@@ -1,80 +1,92 @@
 <template>
-  <a-card :bordered="false" :class="'cust-erp-sub-tab'">
-  <a-table
-         ref="table"
-         bordered
-         rowKey="id"
-         :columns="columns"
-         :dataSource="dataSource"
-         :pagination="ipagination"
-         @change="handleTableChange"
-       >
-         <template
-           v-for="col in columns"
-           :slot="col.dataIndex"
-           slot-scope='text, record, index'
-         >
-           <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)"
-              />
-             <a-input-number
-               :value="text"
-               v-if="col.dataIndex == 'actualHour'"
-               :min="1"
-               :max="99999"
-               @change="(e)=>handleChange(e, record.key, col, index)"
-               :disabled="record.disabled"
-             />
-          
-           </div>
-         </template>
-         <span slot='action' slot-scope='text, record,index'>
-                 <a @click="handleDeleteFake(index)">鍒犻櫎</a>
-        </span>
-       </a-table>
-       <a-button
-         style="width: 100%; margin-top: 16px; margin-bottom: 8px"
-         type="dashed"
-         icon="plus"
-         @click="addHour"
-         :disabled="repairOrderStatus!='3'"
-       >娣诲姞瀹為檯宸ユ椂
-       </a-button>
-       <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
-       <a-row :style="{textAlign:'right'}">
-         <a-button
-           :style="{marginRight: '8px'}"
-           @click="handleCancel"
-           :disabled="repairOrderStatus!='3'"
-         >
-          娓呯┖
-         </a-button>
-         <a-button
-            @click="handleOk(1)"
-            type="primary"
-            :style="{marginRight: '8px'}"
-            :disabled="repairOrderStatus!='3'"
-          >鏆傚瓨</a-button>
-          <a-button
+  <a-card
+    :bordered="false"
+    :class="'cust-erp-sub-tab'"
+  >
+    <a-table
+      ref="table"
+      bordered
+      rowKey="id"
+      :columns="columns"
+      :dataSource="dataSource"
+      :pagination="ipagination"
+      @change="handleTableChange"
+    >
+      <template
+        v-for="col in columns"
+        :slot="col.dataIndex"
+        slot-scope='text, record, index'
+      >
+        <div :key="col.dataIndex">
+          <a-input-search
+            v-if="col.dataIndex == 'username'"
+            enter-button
+            @search="onSearchUser(index)"
+            :value="text"
+            :read-only="true"
+            :disabled="orderStatus!='4'"
+            @change="(e) => handleChange(e, record.key, col, index)"
+          />
+          <a-input-number
+            :value="text"
+            v-if="col.dataIndex == 'actualWorkingHourQuota'"
+            :min="0"
+            :max="99999"
+            @change="(e)=>handleChange(e, record.key, col, index)"
+            :disabled="record.disabled||orderStatus!='4'"
+          />
+
+        </div>
+      </template>
+      <span
+        slot='action'
+        slot-scope='text, record,index'
+      >
+        <a
+          v-has="'specialtyMaintenanceOrder:actualWorkHoursDelete'"
+          v-if="orderStatus=='4'"
+          @click="handleDelete(index)"
+        >鍒犻櫎</a>
+      </span>
+    </a-table>
+    <a-button
+      style="width: 100%; margin-top: 16px; margin-bottom: 8px"
+      type="dashed"
+      icon="plus"
+      @click="addHour"
+      :disabled="orderStatus!='4'"
+    >娣诲姞瀹為檯宸ユ椂
+    </a-button>
+    <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
+      <a-row :style="{textAlign:'right'}">
+        <a-button
+          :style="{marginRight: '8px'}"
+          @click="handleCancel"
+        >
+          鍙栨秷
+        </a-button>
+        <a-button
+          @click="handleOk(1)"
+          type="primary"
+          :style="{marginRight: '8px'}"
+          :disabled="orderStatus!='4'"
+          v-has="'specialtyMaintenanceOrder:actualWorkHoursTS'"
+        >鏆傚瓨</a-button>
+        <a-button
           @click="handleOk(0)"
           type="primary"
-          :disabled="repairOrderStatus!='3'"
-          >淇濆瓨</a-button>
-       </a-row>
-       <!-- :disabled="false" -->
-     </div>
-     <actual-hour-user-select
-     ref="actualUserSelect"
-     @sendUserRecord="sendUserRecord"
-     >
-     </actual-hour-user-select>
-     </a-card>
+          :disabled="orderStatus!='4'"
+          v-has="'specialtyMaintenanceOrder:actualWorkHoursSave'"
+        >淇濆瓨</a-button>
+      </a-row>
+      <!-- :disabled="false" -->
+    </div>
+    <actual-hour-user-select
+      ref="actualUserSelect"
+      @sendUserRecord="sendUserRecord"
+    >
+    </actual-hour-user-select>
+  </a-card>
 </template>
 <script>
 import { postAction, getAction } from '@/api/manage'
@@ -83,27 +95,37 @@
 import JEllipsis from '@/components/jeecg/JEllipsis'
 import ActualHourUserSelect from './select/ActualHourUserSelect.vue'
 export default {
- name: 'ActualWorkHoursEditTable',
- mixins: [JeecgListMixin],
+  name: 'ActualWorkHoursEditTable',
+  mixins: [JeecgListMixin],
   components: {
     JEllipsis,
     ActualHourUserSelect
   },
-  props:{
-    repairOrderId:{
-      type:String,
-      required:false,
-      default:''
+  props: {
+    orderId: {
+      type: String,
+      required: false,
+      default: ''
     },
-    repairOrderStatus:{
-      type:String,
-      required:false,
-      default:''
-    }
+    orderStatus: {
+      type: String,
+      required: false,
+      default: ''
+    },
+    equipmentId: {
+      type: String,
+      required: false,
+      default: ''
+    },
+    teamId: {
+      type: String,
+      required: false,
+      default: ''
+    },
   },
   data() {
     return {
-      title: "宸ヨ壓纭",
+      title: "瀹為檯宸ユ椂",
       flag: false,//涓婚〉闈㈢殑鏍囪浣�  鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭
       visible: false,
       model: {},
@@ -131,7 +153,7 @@
         },
         actual_hour: {
           rules: [
-            { required: false, message: '璇峰~鍐欏伐鏃�!'},
+            { required: false, message: '璇峰~鍐欏伐鏃�!' },
           ]
         },
       },
@@ -150,53 +172,65 @@
       loading: false,
       dataSource: [],
       columns: [
-          {
-            title: '*浜哄憳缂栫爜',
-            dataIndex: 'username',
-            align: "center",
-            scopedSlots: { customRender: 'username' },
-            className: 'red',
-            width: 250,
-          },
-          {
-            title: '浜哄憳鍚嶇О',
-            dataIndex: 'realname',
-            align: "center",
-            width: 250,
-          },
-          {
-            title: '*瀹為檯宸ユ椂',
-            dataIndex: 'actualHour',
-            align: "center",
-            className: 'red',
-            scopedSlots: { customRender: 'actualHour' },
-            width: 250,
-          },
-          {
+        {
+          title: '*浜哄憳缂栫爜',
+          dataIndex: 'username',
+          align: "center",
+          scopedSlots: { customRender: 'username' },
+          className: 'red',
+          width: 250,
+        },
+        {
+          title: '浜哄憳鍚嶇О',
+          dataIndex: 'realname',
+          align: "center",
+          width: 250,
+        },
+        {
+          title: '*瀹為檯宸ユ椂',
+          dataIndex: 'actualWorkingHourQuota',
+          align: "center",
+          className: 'red',
+          scopedSlots: { customRender: 'actualWorkingHourQuota' },
+          width: 250,
+        },
+        {
           title: '鎿嶄綔',
           dataIndex: 'action',
           align: 'center',
           width: 250,
           scopedSlots: { customRender: 'action' }
-          }
-        ],
+        }
+      ],
       url: {
-        list: "/eam/repairOrder/listRepairOrderActualWorkHoursByMainId",
-        confirmHour:"/eam/repairOrder/addRepairOrderActualWorkHours"
+        list: "/eam/maintenanceOrderActualWorkingHour/getMaintenanceOrderActualWorkingHourList",
+        confirmHour: "/eam/maintenanceOrderActualWorkingHour/add"
       },
       changeIndex: 0
     }
   },
-  created(){
-    this.queryParam['repairOrderId'] = this.repairOrderId;
+  created() {
+    this.queryParam['maintenanceOrderId'] = this.orderId;
+    this.queryParam['equipmentId'] = this.equipmentId
     this.loadData(1);
+  },
+  watch: {
+    orderId: {
+      immediate: true,
+      handler(val) {
+        this.clearList();
+        this.queryParam['maintenanceOrderId'] = val
+        this.queryParam['equipmentId'] = this.equipmentId
+        this.loadData(1);
+      }
+    },
   },
   methods: {
     addHour() {
-      this.dataSource.push({userId:'',repairOrderId:this.repairOrderId,actualHour:0,username:'',realname:''})
+      this.dataSource.push({ id: this.getUuiD(16), userId: '', maintenanceOrderId: this.dailyMaintenanceOrderId, actualWorkingHourQuota: 0, username: '', realname: '' })
     },
     handleCancel() {
-      this.close()
+      this.$bus.$emit('closeDrawer');
     },
     close() {
       this.$emit('close');
@@ -204,30 +238,39 @@
       this.disableSubmit = false;
       this.visible = false;
     },
-    handleDeleteFake(index){
-      this.dataSource.pop(index);
+    // handleDeleteFake(index) {
+    //   this.dataSource.splice(index,1);
+    // },
+    handleDelete(text, record, index) {
+      this.dataSource.splice(index, 1);
     },
+
     handleOk(saveStatus) {
       const that = this
-      if(saveStatus==0){
+      if (saveStatus == 0) {
         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)+"琛岀淮淇汉鍛橈紒");
+            that.$message.warning("璇烽�夋嫨绗�" + (i + 1) + "琛岀淮淇汉鍛橈紒");
             return false;
           }
-          if(workHoursDataSource[i].actualHour == undefined || workHoursDataSource[i].actualHour == null||workHoursDataSource[i].actualHour==''){
-            that.$message.warning("璇峰~鍐欑"+(i+1)+"琛屽疄闄呭伐鏃讹紒");
+          if (workHoursDataSource[i].actualWorkingHourQuota == undefined || workHoursDataSource[i].actualWorkingHourQuota == null || workHoursDataSource[i].actualWorkingHourQuota == '') {
+            that.$message.warning("璇峰~鍐欑" + (i + 1) + "琛屽疄闄呭伐鏃讹紒");
             return false;
           }
         }
+      }
+      if (that.dataSource.length === 0) {
+        that.$message.warning("璇烽�夋嫨浜哄憳锛�")
+        return
       }
       this.form.validateFields((err, values) => {
         if (!err) {
           that.confirmLoading = true
           let formData = {}
-          formData.repairOrderId = that.repairOrderId;
-          formData.actualHourList = that.dataSource;
+          formData.maintenanceOrderId = that.orderId;
+          formData.maintenanceOrderActualWorkingHourList = that.dataSource;
+          formData.equipmentId = that.equipmentId;
           let obj = obj = postAction(this.url.confirmHour, formData)
           obj.then((res) => {
             if (res.success) {
@@ -253,15 +296,15 @@
         if ('userId' == column.dataIndex) {
           target['userId'] = value;
         }
-        if ('actualHour' == column.dataIndex) {
-          target['actualHour'] = value;
+        if ('actualWorkingHourQuota' == column.dataIndex) {
+          target['actualWorkingHourQuota'] = value;
         }
         that.dataSource = temp;
       }
     },
     onSearchUser(index) {
       this.recordIndex = index
-      this.$refs.actualUserSelect.list()
+      this.$refs.actualUserSelect.list(this.teamId)
       this.$refs.actualUserSelect.title = '浜哄憳閫夋嫨'
     },
     sendUserRecord(data, val) {
@@ -276,21 +319,19 @@
         this.dataSource = temp
       }
     },
-    clearList(){
-        this.dataSource=[];
-        this.ipagination.current = 1
-    }
+    clearList() {
+      this.dataSource = [];
+      this.ipagination.current = 1
+    },
+    getUuiD(randomLength) {
+      return Number(
+        Math.random()
+          .toString()
+          .substr(2, randomLength) + Date.now()
+      ).toString(36)
+    },
   },
-  watch:{
-    repairOrderId:{
-      immediate: true,
-        handler(val) {
-            this.clearList();
-            this.queryParam['repairOrderId'] = val
-            this.loadData(1);
-        }
-    }
-  }
+
 }
 </script>
 

--
Gitblit v1.9.3