feat(mes): 新增维修工单确认完成请求及相关逻辑

新增 MesDvRepairConfirmReqVO 类以处理维修工单确认完成请求,更新相关服务和控制器逻辑以支持新的请求格式。确保维修工单名称和完成日期为必填项,增强了数据验证和状态管理。
pull/871/MERGE
YunaiV 2026-04-04 00:54:39 +08:00
parent 86e8d62213
commit da1dfa410b
2 changed files with 33 additions and 30 deletions

View File

@ -63,8 +63,8 @@ export const DvRepairApi = {
},
// 确认维修完成(维修中→待验收)
confirmRepair: async (id: number) => {
return await request.put({ url: `/mes/dv/repair/confirm?id=` + id })
confirmRepair: async (data: any) => {
return await request.put({ url: `/mes/dv/repair/confirm`, data })
},
// 完成验收(待验收→已确认)

View File

@ -1,11 +1,11 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="900px">
<Dialog :title="dialogTitle" v-model="dialogVisible" width="960px">
<el-form
ref="formRef"
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="100px"
label-width="110px"
:disabled="isDetail"
>
<el-row>
@ -50,13 +50,24 @@
</el-form-item>
</el-col>
<el-col :span="8" v-if="showFinishFields">
<el-form-item label="维修完成日期" prop="finishDate">
<!-- TODO @AI默认把 required 加进去放到 rules -->
<!-- TODO @AI维修完成时需要允许修改 -->
<el-form-item
label="维修完成日期"
prop="finishDate"
:rules="
formType === 'confirm'
? [{ required: true, message: '维修完成日期不能为空', trigger: 'change' }]
: []
"
>
<!-- TODO @AIisConfirm 这样 -->
<el-date-picker
v-model="formData.finishDate"
type="datetime"
value-format="x"
placeholder="选择完成日期"
disabled
:disabled="formType !== 'confirm'"
/>
</el-form-item>
</el-col>
@ -87,20 +98,12 @@
</el-col>
<el-col :span="8" v-if="showFinishFields">
<el-form-item label="维修人" prop="acceptedUserId">
<UserSelect
v-model="formData.acceptedUserId"
placeholder="请选择维修人"
disabled
/>
<UserSelect v-model="formData.acceptedUserId" placeholder="请选择维修人" disabled />
</el-form-item>
</el-col>
<el-col :span="8" v-if="showConfirmFields">
<el-form-item label="验收人" prop="confirmUserId">
<UserSelect
v-model="formData.confirmUserId"
placeholder="请选择验收人"
disabled
/>
<UserSelect v-model="formData.confirmUserId" placeholder="请选择验收人" disabled />
</el-form-item>
</el-col>
</el-row>
@ -148,7 +151,7 @@
type="success"
:disabled="formLoading"
>
</el-button>
<el-button
v-if="formType === 'finish'"
@ -156,7 +159,7 @@
type="warning"
:disabled="formLoading"
>
通过
</el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
@ -186,23 +189,20 @@ const formType = ref<string>('create') // 表单类型create / update / confi
const isEditable = computed(() => ['create', 'update'].includes(formType.value)) //
const isDetail = computed(() => !isEditable.value) // confirm/finish/detail
const isHeaderReadonly = computed(() => !isEditable.value) //
// DONE @AI
const showFinishFields = computed(() => { // (1)
const showFinishFields = computed(() => {
const status = formData.value.status
if (status == null) {
return false
}
return status >= MesDvRepairStatusEnum.CONFIRMED
})
const showConfirmFields = computed(() => { // (2)
}) // (1)
const showConfirmFields = computed(() => {
const status = formData.value.status
if (status == null) {
return false
}
return status >= MesDvRepairStatusEnum.APPROVING
})
}) // (2)
const dialogTitle = computed(() => {
const titles: Record<string, string> = {
create: '新增维修工单',
@ -229,6 +229,7 @@ const formData = ref({
})
const formRules = reactive({
code: [{ required: true, message: '维修单编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '维修单名称不能为空', trigger: 'blur' }],
machineryId: [{ required: true, message: '设备不能为空', trigger: 'blur' }],
requireDate: [{ required: true, message: '报修日期不能为空', trigger: 'blur' }]
})
@ -236,9 +237,7 @@ const formRef = ref() // 表单 Ref
/** 生成维修单编码 */
const generateCode = async () => {
formData.value.code = await AutoCodeRecordApi.generateAutoCode(
MesAutoCodeRuleCode.DV_REPAIR_CODE
)
formData.value.code = await AutoCodeRecordApi.generateAutoCode(MesAutoCodeRuleCode.DV_REPAIR_CODE)
}
/** 打开弹窗 */
@ -257,7 +256,6 @@ const open = async (type: string, id?: number) => {
}
}
// DONE @AI close
/** 提交表单create/update 模式) */
const submitForm = async () => {
await formRef.value.validate()
@ -281,6 +279,7 @@ const submitForm = async () => {
/** 提交维修工单(草稿→维修中) */
const handleSubmit = async () => {
try {
// TODO @AI /Users/yunai/Java/yudao-all-in-one/yudao-ui-admin-vue3/src/views/mes/dv/maintenrecord/MaintenRecordForm.vue
await message.confirm('确认提交该维修工单?提交后将进入维修中状态')
formLoading.value = true
await DvRepairApi.submitRepair(formData.value.id!)
@ -295,10 +294,14 @@ const handleSubmit = async () => {
/** 确认维修完成(维修中→待验收) */
const handleConfirm = async () => {
await formRef.value.validate()
try {
await message.confirm('确认完成维修?完成后将进入待验收状态')
formLoading.value = true
await DvRepairApi.confirmRepair(formData.value.id!)
await DvRepairApi.confirmRepair({
id: formData.value.id!,
finishDate: formData.value.finishDate
})
message.success('操作成功')
dialogVisible.value = false
emit('success')