Browse Source

维修工单调整

lipenghui 3 tháng trước cách đây
mục cha
commit
60987ded40

+ 1 - 0
src/views/pms/iotmainworkorder/WorkOrderMaterial.vue

@@ -243,6 +243,7 @@ const handleConfirm = () => {
     message.error('消耗数量必填')
     return
   }
+  debugger
   emit(
     'choose',
     selectedRows.value.map((row) => ({

+ 24 - 35
src/views/pms/maintain/IotMaintain.vue

@@ -77,23 +77,6 @@
                 />
               </el-form-item>
             </el-col>
-            <!--            <el-col :span="8">-->
-            <!--              <el-form-item label="维修负责人" prop="maintainPerson">-->
-            <!--                <el-select-->
-            <!--                  v-model="formData.maintainPerson"-->
-            <!--                  filterable-->
-            <!--                  clearable-->
-            <!--                  style="width: 100%"-->
-            <!--                >-->
-            <!--                  <el-option-->
-            <!--                    v-for="item in deptUsers"-->
-            <!--                    :key="item.id"-->
-            <!--                    :label="item.nickname"-->
-            <!--                    :value="item.id"-->
-            <!--                  />-->
-            <!--                </el-select>-->
-            <!--              </el-form-item>-->
-            <!--            </el-col>-->
             <el-col :span="8">
               <el-form-item label="故障时间" prop="failureTime">
                 <el-date-picker
@@ -153,7 +136,7 @@
               </el-form-item>
             </el-col>
             <el-col :span="12">
-              <el-form-item label="维修描述" prop="maintainDescription">
+              <el-form-item label="维修描述" :rules="formData.type === 'in' ? descriptionRule : []" prop="maintainDescription">
                 <el-input type="textarea" v-model="formData.maintainDescription" />
               </el-form-item>
             </el-col>
@@ -296,6 +279,7 @@ import { IotMainWorkOrderBomMaterialVO } from '@/api/pms/iotmainworkorderbommate
 import MaterialListDrawer from '@/views/pms/iotmainworkorder/SelectedMaterialDrawer.vue'
 import ChooseMaintain from '@/views/pms/maintain/material/ChooseMaintain.vue'
 import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
+import dayjs from 'dayjs'
 /** 维修工单 表单 */
 defineOptions({ name: 'MaintainAdd' })
 const addItemVisible = ref(false) // 弹窗的是否展示
@@ -350,6 +334,7 @@ const formData = ref({
   outFile: undefined
 })
 const startRule = [{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }]
+const descriptionRule = [{required: true, message:'维修描述不能为空', trigger: 'blur' }]
 const endRule = [{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }]
 const formRules = reactive({
   deviceName: [{ required: true, message: '设备不能为空', trigger: 'blur' }],
@@ -357,10 +342,10 @@ const formRules = reactive({
   type: [{ required: true, message: '维修类型不能为空', trigger: 'blur' }],
   ifStop: [{ required: true, message: '是否停机不能为空', trigger: 'blur' }],
   failureName: [{ required: true, message: '故障名称不能为空', trigger: 'blur' }],
-  // failureTime: [{ required: true, message: '故障时间不能为空', trigger: 'blur' }],
+  failureTime: [{ required: true, message: '故障时间不能为空', trigger: 'blur' }],
   // maintainStartTime: [{ required: true, message: '维修开始时间不能为空', trigger: 'blur' }],
   // maintainEndTime: [{ required: true, message: '维修结束时间不能为空', trigger: 'blur' }],
-  maintainDescription: [{ required: true, message: '维修描述不能为空', trigger: 'blur' }],
+  // maintainDescription: [{ required: true, message: '维修描述不能为空', trigger: 'blur' }],
   // maintainPerson: [{ required: true, message: '维修负责人不能为空', trigger: 'blur' }],
   deviceId: [{ required: true, message: '设备id不能为空', trigger: 'blur' }]
   // status: [{ required: true, message: '状态不能为空', trigger: 'blur' }]
@@ -373,7 +358,6 @@ const addFormRules = reactive({
 const handleConfirm = () => {
   addFormData.value.bomNodeId = Math.floor(100000 + Math.random() * 900000)
   const index = list.value.findIndex((item) => item.name === addFormData.value.name)
-  debugger
   if (index !== -1) {
     message.warning("维修项重复")
     return
@@ -442,6 +426,12 @@ const endTimeBlur = () => {
     message.error('维修结束时间不得早于开始时间')
     formData.value.maintainEndTime = undefined
   }
+  const now = dayjs();
+  const target = dayjs(formData.value.maintainEndTime);
+  if (target.isAfter(now)) {
+    message.error('维修结束时间不得早于当前时间')
+    formData.value.maintainEndTime = undefined
+  }
 }
 const close = () => {
   delView(unref(currentRoute))
@@ -459,19 +449,19 @@ const handleViewNew = (nodeId) => {
 
 const materialDelete = (row) =>{
   totalFee.value = 0
+  const index = materialList.value.findIndex((item) => item.bomNodeId === bomNodeId.value&&item.materialCode===row.materialCode)
+  if (index>-1) {
+    materialList.value.splice(index,1)
+  }
   list.value.forEach((item)=>{
     if (item.bomNodeId === row.bomNodeId){
-      const index = item.materials.findIndex((item) => item.materialCode === row.materialCode)
-      if (index > -1) {
-        item.materials.splice(index, 1)
+      item.materials = materialList.value.filter((item)=>item.bomNodeId===row.bomNodeId)
         item.materialCount = item.materials.length;
       }
-    }
-    if (item.materials) {
-      item.materials.forEach((it) => {
-        totalFee.value = it.unitPrice * it.quantity + totalFee.value
-      })
-    }
+    })
+
+  materialList.value.forEach((it) => {
+    totalFee.value = it.unitPrice * it.quantity + totalFee.value
   })
   formData.value.maintainFee = totalFee.value
 }
@@ -486,7 +476,6 @@ const selectChoose = (selectedMaterial) => {
     ...material,
     bomNodeId: bomNodeId.value // 统一关联当前行的 bomNodeId
   }))
-
   // 避免重复添加
   processedMaterials.forEach((newMaterial) => {
     // 检查是否已存在相同 bomNodeId + materialCode 的条目
@@ -501,15 +490,15 @@ const selectChoose = (selectedMaterial) => {
   totalFee.value = 0;
   list.value.forEach((item) => {
     if (item.bomNodeId === bomNodeId.value) {
-      item.materials = materialList.value
+      item.materials = materialList.value.filter((item) => item.bomNodeId === bomNodeId.value)
       if (item.materials) {
         item.materialCount = item.materials.length;
       }
-      item.materials.forEach((it) => {
-        totalFee.value = it.unitPrice * it.quantity + totalFee.value
-      })
     }
   })
+  materialList.value.forEach((it) => {
+    totalFee.value = it.unitPrice * it.quantity + totalFee.value
+  })
   formData.value.maintainFee = totalFee.value
   console.log('选择完成的数据:', JSON.stringify(selectedMaterial))
   console.log('添加到本地列表的数据:', materialList.value)