diff --git a/src/api/mes/dv/repair/index.ts b/src/api/mes/dv/repair/index.ts index 3c8ca1081..53130f6a4 100644 --- a/src/api/mes/dv/repair/index.ts +++ b/src/api/mes/dv/repair/index.ts @@ -62,18 +62,13 @@ export const DvRepairApi = { return await request.put({ url: `/mes/dv/repair/submit?id=` + id }) }, - // 完成维修(维修中→待验收) - finishRepair: async (id: number) => { - return await request.put({ url: `/mes/dv/repair/finish?id=` + id }) - }, - - // 验收通过(待验收→已确认) + // 确认维修完成(维修中→待验收) confirmRepair: async (id: number) => { return await request.put({ url: `/mes/dv/repair/confirm?id=` + id }) }, - // 验收不通过(待验收→已确认) - rejectRepair: async (id: number) => { - return await request.put({ url: `/mes/dv/repair/reject?id=` + id }) + // 完成验收(待验收→已确认) + finishRepair: async (id: number, result: number) => { + return await request.put({ url: `/mes/dv/repair/finish?id=` + id + `&result=` + result }) } } diff --git a/src/views/mes/dv/repair/RepairForm.vue b/src/views/mes/dv/repair/RepairForm.vue index 4e695b952..2ee063e12 100644 --- a/src/views/mes/dv/repair/RepairForm.vue +++ b/src/views/mes/dv/repair/RepairForm.vue @@ -73,7 +73,6 @@ - @@ -86,7 +85,6 @@ - - 保 存 + + 提 交 + + + 完成维修 + + + 通 过 + + + 不通过 + 关 闭 @@ -141,7 +170,11 @@ import DvMachinerySelect from '@/views/mes/dv/machinery/components/DvMachinerySe import UserSelect from '@/views/system/user/components/UserSelect.vue' import RepairLineList from './RepairLineList.vue' import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' -import { MesAutoCodeRuleCode, MesDvRepairStatusEnum } from '@/views/mes/utils/constants' +import { + MesAutoCodeRuleCode, + MesDvRepairStatusEnum, + MesDvRepairResultEnum +} from '@/views/mes/utils/constants' defineOptions({ name: 'RepairForm' }) const emit = defineEmits(['success']) @@ -149,20 +182,20 @@ const emit = defineEmits(['success']) const message = useMessage() // 消息弹窗 const dialogVisible = ref(false) // 弹窗的是否展示 const formLoading = ref(false) // 表单的加载中 -const formType = ref('create') // 表单类型:create / update / detail +const formType = ref('create') // 表单类型:create / update / confirm / finish / detail const isEditable = computed(() => ['create', 'update'].includes(formType.value)) // 是否为编辑模式 -const isDetail = computed(() => formType.value === 'detail') // 是否为详情模式 -const isHeaderReadonly = computed(() => formType.value === 'detail') // 是否只读 +const isDetail = computed(() => !isEditable.value) // 是否为详情模式(confirm/finish/detail 均只读) +const isHeaderReadonly = computed(() => !isEditable.value) // 是否只读 -// 根据状态控制 4 状态字段显隐 TODO @AI;注释在字段后面,对齐上面的标准 -const showFinishFields = computed(() => { +// DONE @AI;注释在字段后面,对齐上面的标准 +const showFinishFields = computed(() => { // 维修中(1)及之后显示 const status = formData.value.status if (status == null) { return false } return status >= MesDvRepairStatusEnum.CONFIRMED }) -const showConfirmFields = computed(() => { +const showConfirmFields = computed(() => { // 待验收(2)及之后显示 const status = formData.value.status if (status == null) { return false @@ -174,6 +207,8 @@ const dialogTitle = computed(() => { const titles: Record = { create: '新增维修工单', update: '编辑维修工单', + confirm: '完成维修', + finish: '验收', detail: '维修工单详情' } return titles[formType.value] || formType.value @@ -194,7 +229,8 @@ const formData = ref({ }) const formRules = reactive({ code: [{ required: true, message: '维修单编码不能为空', trigger: 'blur' }], - machineryId: [{ required: true, message: '设备不能为空', trigger: 'blur' }] + machineryId: [{ required: true, message: '设备不能为空', trigger: 'blur' }], + requireDate: [{ required: true, message: '报修日期不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -210,7 +246,7 @@ const open = async (type: string, id?: number) => { dialogVisible.value = true formType.value = type resetForm() - // 修改/详情时,加载数据 + // 修改/完成维修/验收/详情时,加载数据 if (id) { formLoading.value = true try { @@ -221,6 +257,7 @@ const open = async (type: string, id?: number) => { } } +// DONE @AI:对齐,是不是应该直接 close 的? /** 提交表单(create/update 模式) */ const submitForm = async () => { await formRef.value.validate() @@ -228,23 +265,65 @@ const submitForm = async () => { try { const data = formData.value as any if (formType.value === 'create') { - const res = await DvRepairApi.createRepair(data) + await DvRepairApi.createRepair(data) message.success('新增成功') - // 创建成功后,更新表单数据和状态为编辑模式 - // TODO @AI:对齐,是不是应该直接 close 的? - formData.value.id = res - formData.value.status = MesDvRepairStatusEnum.PREPARE - formType.value = 'update' } else { await DvRepairApi.updateRepair(data) message.success('修改成功') } + dialogVisible.value = false emit('success') } finally { formLoading.value = false } } +/** 提交维修工单(草稿→维修中) */ +const handleSubmit = async () => { + try { + await message.confirm('确认提交该维修工单?提交后将进入维修中状态') + formLoading.value = true + await DvRepairApi.submitRepair(formData.value.id!) + message.success('提交成功') + dialogVisible.value = false + emit('success') + } catch { + } finally { + formLoading.value = false + } +} + +/** 确认维修完成(维修中→待验收) */ +const handleConfirm = async () => { + try { + await message.confirm('确认完成维修?完成后将进入待验收状态') + formLoading.value = true + await DvRepairApi.confirmRepair(formData.value.id!) + message.success('操作成功') + dialogVisible.value = false + emit('success') + } catch { + } finally { + formLoading.value = false + } +} + +/** 完成验收(待验收→已确认) */ +const handleFinish = async (result: number) => { + const label = result === MesDvRepairResultEnum.PASS ? '通过' : '不通过' + try { + await message.confirm(`确认验收${label}该维修工单?`) + formLoading.value = true + await DvRepairApi.finishRepair(formData.value.id!, result) + message.success(`验收${label}`) + dialogVisible.value = false + emit('success') + } catch { + } finally { + formLoading.value = false + } +} + /** 重置表单 */ const resetForm = () => { formData.value = { diff --git a/src/views/mes/dv/repair/index.vue b/src/views/mes/dv/repair/index.vue index 774e596e2..283b535e0 100644 --- a/src/views/mes/dv/repair/index.vue +++ b/src/views/mes/dv/repair/index.vue @@ -131,8 +131,7 @@ @@ -262,51 +240,11 @@ const resetQuery = () => { handleQuery() } -/** 添加/修改/详情操作 */ +/** 添加/修改/详情/完成维修/验收操作 */ const openForm = (type: string, id?: number) => { formRef.value.open(type, id) } -/** 提交按钮操作 */ -const handleSubmit = async (id: number) => { - try { - await message.confirm('确认提交该维修工单?提交后将进入维修中状态') - await DvRepairApi.submitRepair(id) - message.success('提交成功') - await getList() - } catch {} -} - -/** 完成维修按钮操作 */ -const handleFinish = async (id: number) => { - try { - await message.confirm('确认完成维修?完成后将进入待验收状态') - await DvRepairApi.finishRepair(id) - message.success('操作成功') - await getList() - } catch {} -} - -/** 验收通过按钮操作 */ -const handleConfirm = async (id: number) => { - try { - await message.confirm('确认验收通过该维修工单?') - await DvRepairApi.confirmRepair(id) - message.success('验收通过') - await getList() - } catch {} -} - -/** 验收不通过按钮操作 */ -const handleReject = async (id: number) => { - try { - await message.confirm('确认验收不通过该维修工单?') - await DvRepairApi.rejectRepair(id) - message.success('操作成功') - await getList() - } catch {} -} - /** 删除按钮操作 */ const handleDelete = async (id: number) => { try { diff --git a/src/views/mes/utils/constants.ts b/src/views/mes/utils/constants.ts index 22a42b066..70dca907e 100644 --- a/src/views/mes/utils/constants.ts +++ b/src/views/mes/utils/constants.ts @@ -106,21 +106,6 @@ export const MesDvMaintenStatusEnum = { ABNORMAL: 2 // 异常 } -/** MES 维修工单状态枚举(值对应 MesOrderStatusConstants) */ -export const MesDvRepairStatusEnum = { - // TODO @AI:是不是应该对齐 MesOrderStatusConstants - PREPARE: 0, // 草稿 - CONFIRMED: 1, // 维修中 - APPROVING: 2, // 待验收 - FINISHED: 4 // 已确认(终态) -} - -/** MES 维修结果枚举(对应字典 mes_dv_repair_result) */ -export const MesDvRepairResultEnum = { - PASS: 1, // 通过 - FAIL: 2 // 不通过 -} - /** MES 设备点检记录状态枚举 */ export const MesDvCheckRecordStatusEnum = { DRAFT: 10, // 草稿 @@ -187,6 +172,20 @@ export const MesOrderStatusConstants = { CANCELLED: 5 } as const +/** MES 维修工单状态枚举 */ +export const MesDvRepairStatusEnum = { + PREPARE: MesOrderStatusConstants.DRAFT, // 草稿 + CONFIRMED: MesOrderStatusConstants.CONFIRMED, // 维修中 + APPROVING: MesOrderStatusConstants.APPROVING, // 待验收 + FINISHED: MesOrderStatusConstants.FINISHED // 已确认(终态) +} + +/** MES 维修结果枚举(对应字典 mes_dv_repair_result) */ +export const MesDvRepairResultEnum = { + PASS: 1, // 通过 + FAIL: 2 // 不通过 +} + /** MES 质检单状态枚举 */ export const MesQcStatusEnum = { DRAFT: MesOrderStatusConstants.DRAFT,