refactor(qms): 优化qms

- 字典移除不必要的 parseInt 转换
- 添加筛选条件以根据 selectedTypeId过滤检测项列表
- 优化模板添加/修改对话框,支持根据模板类型过滤检测项
- 质检任务主表只有不合格时才能编辑不合格数量
master
zangch@mesnac.com 2 weeks ago
parent 65767a1da5
commit fb342f236d

@ -28,6 +28,7 @@ export interface QcUnqualifiedRecordVO {
*
*/
categoryName: number;
categoryId: string | number;
/**
*
@ -116,6 +117,7 @@ export interface QcUnqualifiedRecordForm extends BaseEntity {
*
*/
categoryName?: number;
categoryId?: string | number;
/**
*
@ -205,6 +207,7 @@ export interface QcUnqualifiedRecordQuery extends PageQuery {
*
*/
categoryName?: number;
categoryId?: string | number;
/**
*

@ -293,7 +293,7 @@
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="不合格数" prop="unqualifiedQty">
<el-form-item label="不合格数" prop="unqualifiedQty" v-if="form.result == 1">
<el-input v-model="form.unqualifiedQty" placeholder="请输入不合格数" />
</el-form-item>
</el-col>
@ -304,7 +304,7 @@
v-for="dict in qc_result"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -324,7 +324,7 @@
v-for="dict in qc_inspection_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -335,7 +335,7 @@
<el-radio
v-for="dict in qc_status"
:key="dict.value"
:value="parseInt(dict.value)"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
@ -462,7 +462,7 @@
<el-form-item label="检测方式" prop="detectType">
<el-tooltip content="此字段由关联检测项自动填充,不可编辑" placement="top">
<el-select v-model="inspectionResultForm.detectType" placeholder="检测方式" style="width: 100%;" :disabled="true">
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-tooltip>
</el-form-item>
@ -471,7 +471,7 @@
<el-form-item label="控制类型" prop="controlType">
<el-tooltip content="此字段由关联检测项自动填充,不可编辑" placement="top">
<el-select v-model="inspectionResultForm.controlType" placeholder="控制类型" style="width: 100%;" :disabled="true">
<el-option v-for="dict in control_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in control_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-tooltip>
</el-form-item>
@ -525,7 +525,7 @@
<el-col :span="6">
<el-form-item label="检测结果" prop="detectResult">
<el-select v-model="inspectionResultForm.detectResult" placeholder="请选择检测结果">
<el-option v-for="dict in qc_result" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in qc_result" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -567,7 +567,7 @@
<!-- 添加物料信息对话框 -->
<el-dialog title="选择物料信息" v-model="materialOpen" width="1200px" append-to-body>
<MaterialSelect @selection="handleSelection" ref="materialSelectRef" v-if="materialOpen"></MaterialSelect>
<MaterialSelect ref="materialSelectRef" v-if="materialOpen"></MaterialSelect>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitMaterialForm"> </el-button>
@ -589,7 +589,7 @@ import { getProcessInfoList } from '@/api/qms/baseProcessInfo';
import { getStationInfoList } from '@/api/qms/baseStationInfo';
import MaterialSelect from "@/views/mes/baseMaterialInfo/addMaterialInQMS.vue";
import { useRouter } from 'vue-router';
import { useRouter, useRoute } from 'vue-router';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { qc_inspection_type, qc_result, qc_status, material_type, detect_type, control_type } = toRefs<any>(proxy?.useDict('qc_inspection_type', 'qc_result', 'qc_status', 'material_type', 'detect_type', 'control_type'));
@ -638,14 +638,14 @@ const inspectionResultDialog = reactive<DialogOption>({
//inspectionType = 1 2 3
const inspectionType = ref();
const getInspectionType = async () => {
const router = useRouter();
inspectionType.value = router.currentRoute._rawValue.query && router.currentRoute._rawValue.query.inspectionType;
const route = useRoute();
inspectionType.value = route.query.inspectionType;
if (inspectionType.value == 2){
queryParams.value.qcInspectionType = '2';
queryParams.value.inspectionType = '2';
} else if (inspectionType.value == 3){
queryParams.value.qcInspectionType = '3';
queryParams.value.inspectionType = '3';
} else {
queryParams.value.qcInspectionType = '1';
queryParams.value.inspectionType = '1';
}
};
@ -748,7 +748,7 @@ const data = reactive<PageData<QcInspectionMainForm, QcInspectionMainQuery>>({
unqualifiedQty: undefined,
result: undefined,
workshop: undefined,
qcInspectionType: undefined,
inspectionType: undefined,
status: undefined,
inspector: undefined,
shift: undefined,
@ -985,6 +985,7 @@ const handleDeleteInspectionResult = async (row?: QcInspectionResultVO) => {
await delQcInspectionResult(_resultIds);
proxy?.$modal.msgSuccess("删除成功");
await getInspectionResultList();
await getList(); //
}
/** 提交按钮 */
@ -1017,6 +1018,7 @@ const submitInspectionResultForm = () => {
proxy?.$modal.msgSuccess("操作成功");
inspectionResultDialog.visible = false;
await getInspectionResultList();
await getList(); //
}
});
}

@ -173,14 +173,14 @@
<el-col :span="6">
<el-form-item label="检测方式" prop="detectType">
<el-select v-model="form.detectType" placeholder="请选择检测方式" :disabled="!!form.itemId">
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="控制类型" prop="controlType">
<el-select v-model="form.controlType" placeholder="请选择控制类型">
<el-option v-for="dict in control_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in control_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -204,7 +204,7 @@
<el-col :span="6">
<el-form-item label="检测方法" prop="method">
<el-select v-model="form.method" placeholder="请选择检测方法">
<el-option v-for="dict in qc_methond" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in qc_methond" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>

@ -184,7 +184,7 @@
<el-radio
v-for="dict in qc_result"
:key="dict.value"
:value="parseInt(dict.value)"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
@ -218,7 +218,7 @@
v-for="dict in detect_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -228,7 +228,7 @@
v-for="dict in control_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>

@ -153,7 +153,7 @@
<pagination v-show="templateItemTotal > 0" :total="templateItemTotal" v-model:page="templateItemQueryParams.pageNum" v-model:limit="templateItemQueryParams.pageSize" @pagination="getTemplateItemList" />
</el-card>
<!-- 添加或修改检测模板对话框 -->
<!-- 添加或修改检测模板对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="qcInspectionTemplateFormRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="模板编码" prop="templateCode">
@ -238,7 +238,7 @@
<el-col :span="6">
<el-form-item label="关联检测项定义" prop="itemId">
<el-select v-model="templateItemForm.itemId" placeholder="请选择关联检测项定义" style="width: 100%;" @change="handleItemChange">
<el-option v-for="item in qcInspectionItemList" :key="item.itemId" :label="item.itemName" :value="item.itemId" />
<el-option v-for="item in filteredQcInspectionItemList" :key="item.itemId" :label="item.itemName" :value="item.itemId" />
</el-select>
</el-form-item>
</el-col>
@ -262,7 +262,7 @@
<el-form-item label="检测方式" prop="detectType">
<el-tooltip content="此字段由关联检测项自动填充,不可编辑" placement="top">
<el-select v-model="templateItemForm.detectType" placeholder="请选择检测方式" style="width: 100%;" :disabled="true">
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-tooltip>
</el-form-item>
@ -271,7 +271,7 @@
<el-form-item label="控制类型" prop="controlType">
<el-tooltip content="此字段由关联检测项自动填充,不可编辑" placement="top">
<el-select v-model="templateItemForm.controlType" placeholder="请选择控制类型" style="width: 100%;" :disabled="true">
<el-option v-for="dict in control_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in control_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-tooltip>
</el-form-item>
@ -367,7 +367,7 @@
<!-- 添加物料信息对话框 -->
<el-dialog title='选择物料信息' v-model='materialOpen' width='1200px' append-to-body>
<MaterialSelect @selection='handleSelection' ref='materialSelectRef' v-if='materialOpen'></MaterialSelect>
<MaterialSelect ref='materialSelectRef' v-if='materialOpen'></MaterialSelect>
<div slot='footer' class='dialog-footer'>
<el-button type='primary' @click='submitMaterialForm'> </el-button>
<el-button @click='materialOpen = false'> </el-button>
@ -393,6 +393,7 @@ import { getBaseSupplierInfoList } from '@/api/qms/baseSupplierInfo';
import { getQcInspectionItemCategoryList } from '@/api/qms/qcInspectionItemCategory';
import MaterialSelect from "@/views/mes/baseMaterialInfo/addMaterialInQMS.vue";
import { computed } from 'vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -423,6 +424,8 @@ const selectedMaterialId = ref(null);
const selectedProcessId = ref(null);
const selectedStaionId = ref(null);
const selectedSupplierId = ref(null);
// selectedTypeId
const selectedTypeId = ref<string | number | null>(null);
const queryFormRef = ref<ElFormInstance>();
const qcInspectionTemplateFormRef = ref<ElFormInstance>();
@ -669,6 +672,7 @@ const handleRowClick = (row: QcInspectionTemplateVO) => {
selectedTemplateId.value = row.templateId;
selectedTemplateName.value = row.templateName || '';
selectedTemplateCode.value = row.templateCode || '';
selectedTypeId.value = row.typeId; //
//
nextTick(() => {
getTemplateItemList();
@ -979,6 +983,12 @@ const submitMaterialForm = () => {
materialOpen.value = false;
};
// computed
const filteredQcInspectionItemList = computed(() => {
if (selectedTypeId.value === null) return [];
return qcInspectionItemList.value.filter(item => item.inspectionType === Number(selectedTypeId.value));
});
onMounted(() => {
getList();

@ -111,7 +111,7 @@
v-for="dict in qc_inspection_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -121,7 +121,7 @@
v-for="dict in create_method"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>

@ -162,7 +162,7 @@
v-for="dict in qc_methond"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -174,7 +174,7 @@
v-for="dict in control_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>

@ -164,7 +164,7 @@
v-for="dict in qc_methond"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -174,7 +174,7 @@
v-for="dict in detect_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -184,7 +184,7 @@
v-for="dict in qc_result"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>

@ -251,7 +251,7 @@
v-for="dict in review_result"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
@ -382,14 +382,14 @@
<el-col :span="12">
<el-form-item label="检测方法" prop="inspectionMethod">
<el-select v-model="qcUnqualifiedRecordForm.inspectionMethod" placeholder="请选择检测方法">
<el-option v-for="dict in qc_methond" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in qc_methond" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测方式" prop="detectType">
<el-select v-model="qcUnqualifiedRecordForm.detectType" placeholder="请选择检测方式">
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -398,7 +398,7 @@
<el-col :span="12">
<el-form-item label="检测结果" prop="detectResult">
<el-select v-model="qcUnqualifiedRecordForm.detectResult" placeholder="请选择检测结果">
<el-option v-for="dict in qc_result" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
<el-option v-for="dict in qc_result" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -683,7 +683,7 @@ const handleExport = () => {
/***** 子表 */
const selectedReviewId = ref<string | number>('');
const selectedUnqualifiedReviewNo = ref<string>('');
const selectedUnqualifiedReviewNo = ref();
const qcUnqualifiedRecordList = ref<QcUnqualifiedRecordVO[]>([]);
const qcUnqualifiedRecordLoading = ref(false);
const qcUnqualifiedRecordTotal = ref(0);

Loading…
Cancel
Save