refactor(mes-qc): 优化 OQC 出货检验单表单

- 删除质检方案(templateId)选择字段
  - 恢复合格品数量(qualifiedQuantity)字段
  - 优化表单布局(每行 3 个字段)
  - 新增数量字段、日期字段、检测人员必填校验
  - 删除出货日期、检测日期搜索字段
pull/871/MERGE
YunaiV 2026-02-25 13:33:33 +08:00
parent 7df0785818
commit 44aa77e79f
2 changed files with 78 additions and 118 deletions

View File

@ -26,12 +26,6 @@
<el-input v-model="formData.name" placeholder="请输入检验单名称" /> <el-input v-model="formData.name" placeholder="请输入检验单名称" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<!-- TODO @AI不用前端选择后端自己计算出来 -->
<el-col :span="8">
<el-form-item label="质检方案" prop="templateId">
<QcTemplateSelect v-model="formData.templateId" class="!w-1/1" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-divider content-position="left">物料与客户</el-divider> <el-divider content-position="left">物料与客户</el-divider>
@ -61,7 +55,7 @@
v-model="formData.outQuantity" v-model="formData.outQuantity"
:min="0" :min="0"
:precision="2" :precision="2"
placeholder="请输入" placeholder="请输入发货数量"
class="!w-1/1" class="!w-1/1"
/> />
</el-form-item> </el-form-item>
@ -71,54 +65,29 @@
<el-input-number <el-input-number
v-model="formData.checkQuantity" v-model="formData.checkQuantity"
:min="0" :min="0"
placeholder="请输入" placeholder="请输入检测数量"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="合格品数量" prop="qualifiedQuantity">
<el-input-number
v-model="formData.qualifiedQuantity"
:min="0"
placeholder="请输入合格品数量"
class="!w-1/1" class="!w-1/1"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="8">
<!-- TODO @AI不需要 qualifiedQuantity 参数 -->
<el-form-item label="合格品数量" prop="qualifiedQuantity">
<el-input-number
v-model="formData.qualifiedQuantity"
:min="0"
placeholder="请输入"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="不合格品数量" prop="unqualifiedQuantity"> <el-form-item label="不合格品数量" prop="unqualifiedQuantity">
<el-input-number <el-input-number
v-model="formData.unqualifiedQuantity" v-model="formData.unqualifiedQuantity"
:min="0" :min="0"
placeholder="请输入" placeholder="请输入不合格品数量"
class="!w-1/1"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="16">
<el-col :span="8">
<el-form-item label="发货日期" prop="outDate">
<el-date-picker
v-model="formData.outDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择发货日期"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检测日期" prop="inspectDate">
<el-date-picker
v-model="formData.inspectDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择检测日期"
class="!w-1/1" class="!w-1/1"
/> />
</el-form-item> </el-form-item>
@ -132,8 +101,30 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item label="出货日期" prop="outDate">
<el-date-picker
v-model="formData.outDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择出货日期"
class="!w-1/1"
/>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="8">
<el-form-item label="检测日期" prop="inspectDate">
<el-date-picker
v-model="formData.inspectDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择检测日期"
class="!w-1/1"
/>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="检测结果" prop="checkResult"> <el-form-item label="检测结果" prop="checkResult">
<el-select <el-select
@ -151,7 +142,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="24">
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" /> <el-input type="textarea" v-model="formData.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -159,43 +150,41 @@
</el-row> </el-row>
<!-- 缺陷统计只读 --> <!-- 缺陷统计只读 -->
<template> <el-divider content-position="left">缺陷情况</el-divider>
<el-divider content-position="left">缺陷情况</el-divider> <el-row :gutter="16">
<el-row :gutter="16"> <el-col :span="8">
<el-col :span="8"> <el-form-item label="致命缺陷数">
<el-form-item label="致命缺陷数"> <el-input :model-value="formData.criticalQuantity" disabled />
<el-input :model-value="formData.criticalQuantity" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="8">
<el-col :span="8"> <el-form-item label="严重缺陷数">
<el-form-item label="严重缺陷数"> <el-input :model-value="formData.majorQuantity" disabled />
<el-input :model-value="formData.majorQuantity" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="8">
<el-col :span="8"> <el-form-item label="轻微缺陷数">
<el-form-item label="轻微缺陷数"> <el-input :model-value="formData.minorQuantity" disabled />
<el-input :model-value="formData.minorQuantity" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col> </el-row>
</el-row> <el-row :gutter="16">
<el-row :gutter="16"> <el-col :span="8">
<el-col :span="8"> <el-form-item label="致命缺陷率">
<el-form-item label="致命缺陷率"> <el-input :model-value="formData.criticalRate + '%'" disabled />
<el-input :model-value="formData.criticalRate + '%'" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="8">
<el-col :span="8"> <el-form-item label="严重缺陷率">
<el-form-item label="严重缺陷率"> <el-input :model-value="formData.majorRate + '%'" disabled />
<el-input :model-value="formData.majorRate + '%'" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="8">
<el-col :span="8"> <el-form-item label="轻微缺陷率">
<el-form-item label="轻微缺陷率"> <el-input :model-value="formData.minorRate + '%'" disabled />
<el-input :model-value="formData.minorRate + '%'" disabled /> </el-form-item>
</el-form-item> </el-col>
</el-col> </el-row>
</el-row>
</template>
</el-form> </el-form>
<!-- 子表标签页编辑模式下显示 --> <!-- 子表标签页编辑模式下显示 -->
@ -225,7 +214,6 @@ import { QcOqcApi, QcOqcVO } from '@/api/mes/qc/oqc'
import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue' import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue' import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import UserSelect from '@/views/system/user/components/UserSelect.vue' import UserSelect from '@/views/system/user/components/UserSelect.vue'
import QcTemplateSelect from '@/views/mes/qc/template/components/QcTemplateSelect.vue'
import OqcLineList from './OqcLineList.vue' import OqcLineList from './OqcLineList.vue'
import QcIndicatorResultList from '@/views/mes/qc/indicatorresult/components/QcIndicatorResultList.vue' import QcIndicatorResultList from '@/views/mes/qc/indicatorresult/components/QcIndicatorResultList.vue'
import { MesQcTypeEnum } from '@/views/mes/utils/constants' import { MesQcTypeEnum } from '@/views/mes/utils/constants'
@ -245,7 +233,6 @@ const formData = ref({
id: undefined as number | undefined, id: undefined as number | undefined,
code: undefined, code: undefined,
name: undefined, name: undefined,
templateId: undefined,
sourceDocId: undefined, sourceDocId: undefined,
sourceDocType: undefined, sourceDocType: undefined,
sourceDocCode: undefined, sourceDocCode: undefined,
@ -253,8 +240,6 @@ const formData = ref({
clientId: undefined, clientId: undefined,
batchCode: undefined, batchCode: undefined,
itemId: undefined, itemId: undefined,
minCheckQuantity: undefined,
maxUnqualifiedQuantity: undefined,
outQuantity: undefined, outQuantity: undefined,
checkQuantity: undefined, checkQuantity: undefined,
qualifiedQuantity: undefined, qualifiedQuantity: undefined,
@ -272,15 +257,18 @@ const formData = ref({
majorQuantity: 0, majorQuantity: 0,
minorQuantity: 0 minorQuantity: 0
}) })
// TODO @AI
// TODO @AI
const formRules = reactive({ const formRules = reactive({
code: [{ required: true, message: '检验单编号不能为空', trigger: 'blur' }], code: [{ required: true, message: '检验单编号不能为空', trigger: 'blur' }],
name: [{ required: true, message: '检验单名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '检验单名称不能为空', trigger: 'blur' }],
templateId: [{ required: true, message: '检验模板不能为空', trigger: 'change' }],
clientId: [{ required: true, message: '客户不能为空', trigger: 'change' }], clientId: [{ required: true, message: '客户不能为空', trigger: 'change' }],
itemId: [{ required: true, message: '产品物料不能为空', trigger: 'change' }], itemId: [{ required: true, message: '产品物料不能为空', trigger: 'change' }],
outQuantity: [{ required: true, message: '发货数量不能为空', trigger: 'blur' }] outQuantity: [{ required: true, message: '发货数量不能为空', trigger: 'blur' }],
checkQuantity: [{ required: true, message: '检测数量不能为空', trigger: 'blur' }],
qualifiedQuantity: [{ required: true, message: '合格品数量不能为空', trigger: 'blur' }],
unqualifiedQuantity: [{ required: true, message: '不合格品数量不能为空', trigger: 'blur' }],
inspectorUserId: [{ required: true, message: '检测人员不能为空', trigger: 'change' }],
outDate: [{ required: true, message: '出货日期不能为空', trigger: 'change' }],
inspectDate: [{ required: true, message: '检测日期不能为空', trigger: 'change' }]
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
@ -340,7 +328,6 @@ const resetForm = () => {
id: undefined, id: undefined,
code: undefined, code: undefined,
name: undefined, name: undefined,
templateId: undefined,
sourceDocId: undefined, sourceDocId: undefined,
sourceDocType: undefined, sourceDocType: undefined,
sourceDocCode: undefined, sourceDocCode: undefined,
@ -348,8 +335,6 @@ const resetForm = () => {
clientId: undefined, clientId: undefined,
batchCode: undefined, batchCode: undefined,
itemId: undefined, itemId: undefined,
minCheckQuantity: undefined,
maxUnqualifiedQuantity: undefined,
outQuantity: undefined, outQuantity: undefined,
checkQuantity: undefined, checkQuantity: undefined,
qualifiedQuantity: undefined, qualifiedQuantity: undefined,

View File

@ -58,29 +58,6 @@
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- TODO @AI前后端去掉 outDateinspectDate 的校验逻辑 -->
<el-form-item label="发货日期" prop="outDate">
<el-date-picker
v-model="queryParams.outDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="检测日期" prop="inspectDate">
<el-date-picker
v-model="queryParams.inspectDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="检测人员" prop="inspectorUserId"> <el-form-item label="检测人员" prop="inspectorUserId">
<UserSelect <UserSelect
v-model="queryParams.inspectorUserId" v-model="queryParams.inspectorUserId"
@ -224,8 +201,6 @@ const queryParams = reactive({
batchCode: undefined, batchCode: undefined,
itemId: undefined, itemId: undefined,
checkResult: undefined, checkResult: undefined,
outDate: undefined,
inspectDate: undefined,
inspectorUserId: undefined inspectorUserId: undefined
}) })
const queryFormRef = ref() // const queryFormRef = ref() //