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/ActualMaterialEditTable.vue |  277 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 196 insertions(+), 81 deletions(-)

diff --git a/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue b/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue
index 448d049..22a19f5 100644
--- a/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue
+++ b/src/views/eam/modules/predictiveWorkOrder/ActualMaterialEditTable.vue
@@ -29,20 +29,50 @@
           />
           <a-input-number
             :value="text"
-            v-if="col.dataIndex == 'actualQuantity'"
+            v-if="col.dataIndex == 'quantity'"
             :min="1"
             :max="99999"
             @change="(e)=>handleChange(e, record.key, col, index)"
-            :disabled="record.disabled"
+            :disabled="record.isLock == 'yes'||orderStatus!='4'"
           />
 
         </div>
       </template>
       <span
         slot='action'
-        slot-scope='text, record,index'
+        slot-scope='text, record'
       >
-        <a @click="handleDeleteFake(index)">鍒犻櫎</a>
+        <a-popconfirm
+          title="纭閿佹枡鍚�?"
+          @confirm="() => handleLock(record)"
+        >
+          <a
+            v-has="'specialtyMaintenanceOrder:actualMaterialLock'"
+            v-if="record.isLock=='no'&&orderStatus=='4'"
+          >閿佹枡</a>
+        </a-popconfirm>
+        <a-divider
+          v-if="record.isLock=='no'"
+          type="vertical"
+        />
+        <a-popconfirm
+          title="瑙i攣鍚庝細鑷姩閲婃斁搴撳瓨锛岀‘璁よВ閿佸悧?"
+          @confirm="() => handleUnLock(record)"
+        >
+          <a
+            v-has="'specialtyMaintenanceOrder:actualMaterialLock'"
+            v-if="record.isLock=='yes'&&orderStatus=='4'"
+          >瑙i攣</a>
+        </a-popconfirm>
+        <a-popconfirm
+          title="纭畾鍒犻櫎鍚�?"
+          @confirm="() => handleDelete(record.id)"
+        >
+          <a
+            v-has="'specialtyMaintenanceOrder:actualMaterialDelete'"
+            v-if="record.isLock=='no'&&orderStatus=='4'"
+          >鍒犻櫎</a>
+        </a-popconfirm>
       </span>
     </a-table>
     <a-button
@@ -50,37 +80,35 @@
       type="dashed"
       icon="plus"
       @click="addMaterial"
-      :disabled="repairOrderStatus!='3'"
-    >娣诲姞瀹為檯鐢ㄦ枡
-
-    </a-button>
+     :disabled="orderStatus!='4'"
+      v-has="'specialtyMaintenanceOrder:actualMaterialAdd'"
+    >娣诲姞瀹為檯鐢ㄦ枡</a-button>
     <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
       <a-row :style="{textAlign:'right'}">
-        <a-button
+        <!-- <a-button
           :style="{marginRight: '8px'}"
           @click="handleCancel"
-          :disabled="repairOrderStatus!='3'"
         >
-          娓呯┖
-        </a-button>
-        <a-button
+          鍙栨秷
+        </a-button> -->
+        <!-- <a-button
           @click="handleOk(1)"
           type="primary"
           :style="{marginRight: '8px'}"
-          :disabled="repairOrderStatus!='3'"
+         :disabled="orderStatus!='4'"
         >鏆傚瓨</a-button>
         <a-button
           @click="handleOk(0)"
           type="primary"
-          :disabled="repairOrderStatus!='3'"
-        >淇濆瓨</a-button>
+         :disabled="orderStatus!='4'"
+        >淇濆瓨</a-button> -->
       </a-row>
       <!-- :disabled="false" -->
     </div>
-    <actual-material-select
-      ref="actualMaterialSelect"
-      @sendMaterialRecord="sendMaterialRecord"
-    >
+    <actual-material-select 
+    @getSelectRows="getSelectRows"
+    ref='JSelectSparePartModal'>
+      <!-- @sendMaterialRecord="sendMaterialRecord" -->
     </actual-material-select>
   </a-card>
 </template>
@@ -95,29 +123,34 @@
   mixins: [JeecgListMixin],
   components: {
     JEllipsis,
-    ActualMaterialSelect
+    ActualMaterialSelect,
   },
   props: {
-    repairOrderId: {
-      type: String,
-      required: false,
-      default: '-1'
-    },
-    repairOrderStatus: {
+    orderId: {
       type: String,
       required: false,
       default: ''
-    }
+    },
+    orderStatus: {
+      type: String,
+      required: false,
+      default: ''
+    },
+    equipmentId: {
+      type: String,
+      required: false,
+      default: ''
+    },
   },
   data() {
     return {
-      title: "宸ヨ壓纭",
-      flag: false,//涓婚〉闈㈢殑鏍囪浣�  鐢ㄤ簬鍖哄垎鏄惁纭杩囧伐鍗曞伐鑹� 鏉ュ尯鍒唗able椤靛睍绀� 宸ュ崟宸ュ簭 杩樻槸浜у搧宸ュ簭
+      disableMixiCreated:true,
+      title: "瀹為檯鐢ㄦ枡",
       visible: false,
       model: {},
-      obj: {},
       maskClosable: true,
       confirmLoading: false,
+      // specialyMaintenanceOrderStatus: '',
       form: this.$form.createForm(this),
       /* 鍒嗛〉鍙傛暟 */
       ipagination: {
@@ -137,7 +170,7 @@
             { required: true, message: '璇烽�夋嫨鐗╂枡!' },
           ]
         },
-        actualQuantity: {
+        quantity: {
           rules: [
             { required: false, message: '璇峰~鍐欐暟閲�!' },
           ]
@@ -158,8 +191,8 @@
       loading: false,
       dataSource: [],
       columns: [
-       {
-          title: '棰嗘枡鍑哄簱鍗曞彿',
+        {
+          title: '棰嗘枡鍑哄簱鍗�',
           dataIndex: 'num',
           align: "center",
           width: 150,
@@ -224,23 +257,44 @@
         }
       ],
       url: {
-        list: "/eam/repairOrder/listRepairOrderActualMaterialByMainId",
-        confirmMaterial: "/eam/repairOrder/addRepairOrderActualMaterial"
+        list: "/eam/maintenanceOrderActualMaterial/getMaintenanceOrderActualMaterialList",
+        confirmMaterial: "/eam/maintenanceOrderActualMaterial/add",
+        delete: "/eam/maintenanceOrderActualMaterial/delete",
+        addInit: "/eam/maintenanceOrderActualMaterial/addInit",
+        lock: "/eam/maintenanceOrderActualMaterial/lock",
+        unLock: "/eam/maintenanceOrderActualMaterial/unLock"
       },
       changeIndex: 0
     }
   },
-
-  created() {
-    this.queryParam['repairOrderId'] = this.repairOrderId;
-    this.loadData(1);
+  watch: {
+    orderId: {
+      immediate: true,
+      handler(val) {
+        if(this.orderId){
+          alert
+          this.queryParam['maintenanceOrderId'] = val
+          this.queryParam['equipmentId'] = this.equipmentId
+          this.queryParam['delFlag'] = 0
+          this.loadData(1);
+        }else{
+          this.clearList();
+        }
+      }
+    },
   },
   methods: {
     addMaterial() {
-      this.dataSource.push({ materialId: '', repairOrderId: this.repairOrderId, actualQuantity: 1, materialNum: '', materialName: '', materialModel: '', materialSpecification: '', unitId_dictText: '' })
+      let ids = [];
+      for (let i = 0; i < this.dataSource.length; i++) {
+        ids.push(this.dataSource[i].outboundOrderDetailId);
+      }
+      this.$refs.JSelectSparePartModal.showModals(ids);
+      this.$refs.JSelectSparePartModal.title = '閫夋嫨澶囦欢淇℃伅'
+      this.$refs.JSelectSparePartModal.disableSubmit = false
     },
     handleCancel() {
-      this.close()
+      this.$bus.$emit('closeDrawer');
     },
     close() {
       this.$emit('close');
@@ -261,18 +315,23 @@
             that.$message.warning("璇烽�夋嫨绗�" + (i + 1) + "琛岀墿鏂欙紒");
             return false;
           }
-          if (materialDataSource[i].actualQuantity == undefined || materialDataSource[i].actualQuantity == null || materialDataSource[i].actualQuantity == '') {
+          if (materialDataSource[i].quantity == undefined || materialDataSource[i].quantity == null || materialDataSource[i].quantity == '') {
             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.actualMaterialList = that.dataSource;
+          formData.maintenanceOrderId = that.specialyMaintenanceOrderId;
+          formData.maintenanceOrderActualMaterials = that.dataSource;
+          formData.equipmentId = that.equipmentId;
           let obj = obj = postAction(this.url.confirmMaterial, formData)
           obj.then((res) => {
             if (res.success) {
@@ -290,18 +349,17 @@
       })
     },
     handleChange(value, key, column, index) {
-      let that = this;
-      const temp = [...that.dataSource];
-      const target = temp[index];
+      console.log(column)
+      const temp = [...this.dataSource]
+      const target = temp[index]
+      let availableQuantity = target['availableQuantity']
       if (target) {
-        target[column.dataIndex] = value;
-        if ('materialId' == column.dataIndex) {
-          target['materialId'] = value;
+        if (value != undefined && value != null && value != '' && availableQuantity < value) {
+          this.$message.error('浣跨敤鏁伴噺涓嶈兘澶т簬鍙敤鏁伴噺!')
+        } else {
         }
-        if ('actualQuantity' == column.dataIndex) {
-          target['actualQuantity'] = value;
-        }
-        that.dataSource = temp;
+        target[column.dataIndex] = value
+        this.dataSource = temp
       }
     },
     onSearchMaterial(index) {
@@ -309,37 +367,94 @@
       this.$refs.actualMaterialSelect.list()
       this.$refs.actualMaterialSelect.title = '鐗╂枡閫夋嫨'
     },
-    sendMaterialRecord(data, val) {
-      let record = data.record
-      const temp = [...this.dataSource]
-      const target = temp[this.recordIndex]
-      if (target) {
-        console.log(target)
-        target.materialId = record.id;
-        target.materialName = record.name;
-        target.materialNum = record.num;
-        target.materialModel = record.model;
-        target.materialSpecification = record.specification;
-        target.unitId_dictText = record.unitId_dictText;
-        this.dataSource = temp
-      }
-    },
     clearList() {
       this.dataSource = [];
       this.ipagination.current = 1
+    },
+    // getUuiD(randomLength) {
+    //   return Number(
+    //     Math.random()
+    //       .toString()
+    //       .substr(2, randomLength) + Date.now()
+    //   ).toString(36)
+    // },
+    handleLock(record) {
+      let that = this;
+      if (record.quantity == null || record.quantity == undefined || record.quantity == '') {
+        this.$message.error('璇峰厛濉啓鏁伴噺!');
+        return false
+      }
+      if (record.availableQuantity < record.quantity) {
+        this.$message.error('浣跨敤鏁伴噺涓嶈兘澶т簬鍙敤鏁伴噺!');
+        return false;
+      }
+      this.confirmLoading = true;
+      postAction(this.url.lock, record).then(res => {
+        if (res.success) {
+          this.$message.success("搴撳瓨閿佸畾鎴愬姛锛�")
+        } else {
+          this.$message.error(res.message)
+        }
+      }).finally(res => {
+        that.confirmLoading = false
+        that.loadData();
+      })
+
+    },
+    handleUnLock(record) {
+      let that = this;
+      this.confirmLoading = true;
+      postAction(this.url.unLock, record).then(res => {
+        if (res.success) {
+          this.$message.success("搴撳瓨瑙i攣鎴愬姛锛�")
+        } else {
+          this.$message.error(res.message)
+        }
+      }).finally(res => {
+        that.confirmLoading = false
+        that.loadData();
+      })
+    },
+    getSelectRows(data){
+      let newActualMaterials = [];
+      for (let i = 0; i < data.length; i++) {
+        newActualMaterials.push({
+          // id: this.getUuiD(16),
+          // num: data[i].num,
+          outboundOrderDetailId: data[i].id,
+          sparePartId: data[i].sparePartId,
+          // sparePartNum: data[i].spareNum,
+          // sparePartName: data[i].spareName,
+          // specification: data[i].specification,
+          // model: data[i].model,
+          // constructorName: data[i].constructorName,
+          // constructorId: data[i].constructorId,
+          // mainUnitName: data[i].mainUnitName,
+          // mainUnitId: data[i].mainUnitId,
+          mainQuantity: data[i].mainQuantity,
+          useQuantity: data[i].useQuantity,
+          availableQuantity: data[i].availableQuantity,
+          maintenanceOrderId: this.orderId,
+          equipmentId: this.equipmentId,
+          isLock: 'no'
+        })
+      }
+      let that = this
+      postAction(this.url.addInit, newActualMaterials).then((res) => {
+        if (res.success) {
+          that.$message.success(res.message)
+          that.$emit('ok')
+        } else {
+          that.$message.warning(res.message)
+        }
+      }).finally(res => {
+        newActualMaterials = []
+        that.loadData();
+
+      })
+
     }
   },
-
-  watch: {
-    repairOrderId: {
-      immediate: true,
-      handler(val) {
-        this.clearList();
-        this.queryParam['repairOrderId'] = val
-        this.loadData(1);
-      }
-    }
-  }
 }
 </script>
 

--
Gitblit v1.9.3