|
@@ -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)
|