From 7ea96e1c2e91d60352bb4ceca1b77ba7155de1fe Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 24 Feb 2026 00:46:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(mes):=20IQC=20=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E9=87=8D=E6=9E=84=20-=20Service=20=E6=8B=86=E5=88=86=20+=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=B8=85=E7=90=86=20+=20=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 拆分 MesQcTemplateService → MesQcTemplateDetailService - 检测指标项、产品关联 CRUD 迁移至 DetailService - 新增 getRequiredTemplateByItemIdAndType 方法 2. MesQcIqcSaveReqVO 字段清理 - 删除 templateId/minCheckQuantity/maxUnqualifiedQuantity/checkQuantity/inspectorUserId - 增加 qualifiedQuantity/unqualifiedQuantity @NotNull + @DecimalMin 校验 - 增加 receiveDate/inspectDate @NotNull 校验 3. MesQcIqcServiceImpl 业务逻辑调整 - createIqc/updateIqc 增加 inspectorUserId 参数,由 Controller 传入 getLoginUserId() - templateId 不再由前端传递,后端根据 itemId + IQC 类型自动查找模板 - checkQuantity 由后端计算(= qualifiedQuantity + unqualifiedQuantity) - updateIqc 禁止修改 sourceDocType/sourceDocId/sourceLineId/templateId 4. MesQcIqcDO/RespVO 删除 minCheckQuantity、maxUnqualifiedQuantity 字段 5. 更新调用方:IndicatorController、ItemController、IQC/OQC/IPQC ServiceImpl --- src/api/mes/qc/iqc/index.ts | 2 -- src/views/mes/qc/iqc/IqcForm.vue | 46 +++++++------------------------- 2 files changed, 10 insertions(+), 38 deletions(-) diff --git a/src/api/mes/qc/iqc/index.ts b/src/api/mes/qc/iqc/index.ts index acc84db9c..232a7845e 100644 --- a/src/api/mes/qc/iqc/index.ts +++ b/src/api/mes/qc/iqc/index.ts @@ -17,8 +17,6 @@ export interface QcIqcVO { itemName: string // 产品物料名称(关联查询) itemSpecification: string // 规格型号(关联查询) unitName: string // 单位名称(关联查询) - minCheckQuantity: number // 最低检测数 - maxUnqualifiedQuantity: number // 最大不合格数 receivedQuantity: number // 本次接收数量 checkQuantity: number // 本次检测数量 qualifiedQuantity: number // 合格品数量 diff --git a/src/views/mes/qc/iqc/IqcForm.vue b/src/views/mes/qc/iqc/IqcForm.vue index 48d90e648..336b34ed0 100644 --- a/src/views/mes/qc/iqc/IqcForm.vue +++ b/src/views/mes/qc/iqc/IqcForm.vue @@ -26,11 +26,6 @@ - - - - - 物料与供应商 @@ -65,12 +60,12 @@ 检测情况 - + @@ -121,16 +116,6 @@ /> - - - - - - @@ -223,8 +208,6 @@ import { generateRandomStr } from '@/utils' import { QcIqcApi, QcIqcVO } from '@/api/mes/qc/iqc' import MdVendorSelect from '@/views/mes/md/vendor/components/MdVendorSelect.vue' import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue' -import UserSelect from '@/views/system/user/components/UserSelect.vue' -import QcTemplateSelect from '@/views/mes/qc/template/components/QcTemplateSelect.vue' import IqcLineList from './IqcLineList.vue' import QcIndicatorResultList from '@/views/mes/qc/indicatorresult/components/QcIndicatorResultList.vue' import { MesQcTypeEnum } from '@/views/mes/utils/constants' @@ -249,23 +232,18 @@ const formData = ref({ id: undefined as number | undefined, code: undefined, name: undefined, - templateId: undefined, sourceDocId: undefined, sourceDocType: undefined, sourceLineId: undefined, vendorId: undefined, vendorBatch: undefined, itemId: undefined, - minCheckQuantity: undefined, - maxUnqualifiedQuantity: undefined, receivedQuantity: undefined, - checkQuantity: undefined, qualifiedQuantity: undefined, unqualifiedQuantity: undefined, checkResult: undefined, receiveDate: undefined, inspectDate: undefined, - inspectorUserId: undefined, remark: undefined, // 缺陷统计(只读) criticalRate: 0, @@ -278,10 +256,13 @@ const formData = ref({ const formRules = reactive({ code: [{ required: true, message: '检验单编号不能为空', trigger: 'blur' }], name: [{ required: true, message: '检验单名称不能为空', trigger: 'blur' }], - templateId: [{ required: true, message: '检验模板不能为空', trigger: 'change' }], vendorId: [{ required: true, message: '供应商不能为空', trigger: 'change' }], itemId: [{ required: true, message: '产品物料不能为空', trigger: 'change' }], - receivedQuantity: [{ required: true, message: '接收数量不能为空', trigger: 'blur' }] + receivedQuantity: [{ required: true, message: '本次接收数量不能为空', trigger: 'blur' }], + qualifiedQuantity: [{ required: true, message: '合格品数量不能为空', trigger: 'blur' }], + unqualifiedQuantity: [{ required: true, message: '不合格品数量不能为空', trigger: 'blur' }], + receiveDate: [{ required: true, message: '来料日期不能为空', trigger: 'change' }], + inspectDate: [{ required: true, message: '检测日期不能为空', trigger: 'change' }] }) const formRef = ref() // 表单 Ref @@ -291,8 +272,7 @@ const generateCode = () => { } /** 打开弹窗 */ -// TODO @AI:Partial 是不是可以不用?变量是不是可以叫 data; -const open = async (type: string, id?: number, prefillData?: Partial) => { +const open = async (type: string, id?: number, data?: QcIqcVO) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type @@ -306,9 +286,9 @@ const open = async (type: string, id?: number, prefillData?: Partial) = } finally { formLoading.value = false } - } else if (prefillData) { + } else if (data) { // 预填模式:来自待检任务(pending inspect) - Object.assign(formData.value, prefillData) + Object.assign(formData.value, data) } } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -345,24 +325,18 @@ const resetForm = () => { id: undefined, code: undefined, name: undefined, - templateId: undefined, sourceDocId: undefined, sourceDocType: undefined, - sourceDocCode: undefined, sourceLineId: undefined, vendorId: undefined, vendorBatch: undefined, itemId: undefined, - minCheckQuantity: undefined, - maxUnqualifiedQuantity: undefined, receivedQuantity: undefined, - checkQuantity: undefined, qualifiedQuantity: undefined, unqualifiedQuantity: undefined, checkResult: undefined, receiveDate: undefined, inspectDate: undefined, - inspectorUserId: undefined, remark: undefined, criticalRate: 0, majorRate: 0,