Merge remote-tracking branch 'origin/master'

master
夜笙歌 5 months ago
commit 7c3af0310e

@ -90,9 +90,14 @@ export interface QcInspectionMainVO {
team: string;
/**
*
*
*/
inspectionTime: string;
inspectionStartTime: string;
/**
*
*/
inspectionEndTime: string;
/**
*
@ -219,9 +224,14 @@ export interface QcInspectionMainForm extends BaseEntity {
team?: string;
/**
*
*
*/
inspectionTime?: string;
inspectionStartTime?: string;
/**
*
*/
inspectionEndTime?: string;
/**
*
@ -325,7 +335,7 @@ export interface QcInspectionMainQuery extends PageQuery {
/**
* /
*/
inspectionType?: number;
inspectionType?: number | string;
/**
* 0/1
@ -348,9 +358,14 @@ export interface QcInspectionMainQuery extends PageQuery {
team?: string;
/**
*
*
*/
inspectionTime?: string;
inspectionStartTime?: string;
/**
*
*/
inspectionEndTime?: string;
/**
*
@ -372,12 +387,12 @@ export interface QcInspectionMainQuery extends PageQuery {
*/
supplierName?: string;
/**
*
*/
templateName?: string;//join
/**
*

@ -5,14 +5,84 @@ export interface QcUnqualifiedRecordVO {
recordId: string | number;
/**
* ID
* ID
*/
reviewId: string | number;
/**
*
*
*/
remark: string;
itemCode: string;
/**
*
*/
itemName: string;
/**
*
*/
inspectionPosition: string;
/**
*
*/
categoryName: number;
/**
*
*/
typeId: string | number;
/**
*
*/
inspectionMethod: number;
/**
*
*/
detectType: number;
/**
*
*/
detectResult: number;
/**
*
*/
detectValue: number;
/**
*
*/
upperLimit: number;
/**
*
*/
lowerLimit: number;
/**
*
*/
specInspectionValue: string;
/**
*
*/
specUpper: number;
/**
*
*/
specLower: number;
/**
*
*/
description: string;
}
@ -23,14 +93,84 @@ export interface QcUnqualifiedRecordForm extends BaseEntity {
recordId?: string | number;
/**
* ID
* ID
*/
reviewId?: string | number;
/**
*
*
*/
remark?: string;
itemCode?: string;
/**
*
*/
itemName?: string;
/**
*
*/
inspectionPosition?: string;
/**
*
*/
categoryName?: number;
/**
*
*/
typeId?: string | number;
/**
*
*/
inspectionMethod?: number;
/**
*
*/
detectType?: number;
/**
*
*/
detectResult?: number;
/**
*
*/
detectValue?: number;
/**
*
*/
upperLimit?: number;
/**
*
*/
lowerLimit?: number;
/**
*
*/
specInspectionValue?: string;
/**
*
*/
specUpper?: number;
/**
*
*/
specLower?: number;
/**
*
*/
description?: string;
}
@ -42,10 +182,85 @@ export interface QcUnqualifiedRecordQuery extends PageQuery {
recordId?: string | number;
/**
* ID
* ID
*/
reviewId?: string | number;
/**
*
*/
itemCode?: string;
/**
*
*/
itemName?: string;
/**
*
*/
inspectionPosition?: string;
/**
*
*/
categoryName?: number;
/**
*
*/
typeId?: string | number;
/**
*
*/
inspectionMethod?: number;
/**
*
*/
detectType?: number;
/**
*
*/
detectResult?: number;
/**
*
*/
detectValue?: number;
/**
*
*/
upperLimit?: number;
/**
*
*/
lowerLimit?: number;
/**
*
*/
specInspectionValue?: string;
/**
*
*/
specUpper?: number;
/**
*
*/
specLower?: number;
/**
*
*/
description?: string;
/**
*
*/

@ -7,38 +7,38 @@ export interface QcUnqualifiedReviewVO {
/**
*
*/
unqualifiedNo: string;
unqualifiedReviewNo: number;
/**
* ID
*
*/
inspectionId: string | number;
reviewResult: number;
/**
* ID
*
*/
typeId: string | number;
inspectionNo: string;
/**
*
*
*/
workOrder: string;
inspectionType: number;
/**
*
*
*/
processCode: string;
productionDate: string;
/**
* /
*/
workOrderNo: string;
/**
*
*/
processName: string;
/**
*
*/
batchNo: string;
/**
*
*/
@ -50,14 +50,39 @@ export interface QcUnqualifiedReviewVO {
materialCode: string;
/**
*
*
*/
inspectorResult: string;
materialSpec: string;
/**
* 0/1/2退
*
*/
reviewResult: string;
supplierName: string;
/**
*
*/
supplierCode: string;
/**
*
*/
inspectionQty: number;
/**
*
*/
batchNo: string;
/**
*
*/
inspector: string;
/**
* ID
*/
inspectorId: string | number;
/**
*
@ -65,33 +90,27 @@ export interface QcUnqualifiedReviewVO {
reviewer: string;
/**
*
* ID
*/
reviewTime: string;
reviewerId: string | number;
/**
* /
*
*/
inspectionNo: string | number;
reviewStartTime: string;
/**
*
*
*/
typeCode: string | number;
reviewEndTime: string;
/**
*
*
*/
typeName: string;
/**
*
*/
qcInspectionType: string | number;
remark: string;
}
export interface QcUnqualifiedReviewForm extends BaseEntity {
/**
*
@ -101,38 +120,38 @@ export interface QcUnqualifiedReviewForm extends BaseEntity {
/**
*
*/
unqualifiedNo?: string;
unqualifiedReviewNo?: number;
/**
* ID
*
*/
inspectionId?: string | number;
reviewResult?: number;
/**
* ID
*
*/
typeId?: string | number;
inspectionNo?: string;
/**
*
*
*/
workOrder?: string;
inspectionType?: number;
/**
*
*
*/
processCode?: string;
productionDate?: string;
/**
* /
*/
workOrderNo?: string;
/**
*
*/
processName?: string;
/**
*
*/
batchNo?: string;
/**
*
*/
@ -144,14 +163,39 @@ export interface QcUnqualifiedReviewForm extends BaseEntity {
materialCode?: string;
/**
*
*
*/
inspectorResult?: string;
materialSpec?: string;
/**
* 0/1/2退
*
*/
reviewResult?: string;
supplierName?: string;
/**
*
*/
supplierCode?: string;
/**
*
*/
inspectionQty?: number;
/**
*
*/
batchNo?: string;
/**
*
*/
inspector?: string;
/**
* ID
*/
inspectorId?: string | number;
/**
*
@ -159,31 +203,24 @@ export interface QcUnqualifiedReviewForm extends BaseEntity {
reviewer?: string;
/**
*
* ID
*/
reviewTime?: string;
reviewerId?: string | number;
/**
* /
*
*/
inspectionNo?: string | number;
reviewStartTime?: string;
/**
*
*
*/
typeCode?: string | number;
reviewEndTime?: string;
/**
*
*
*/
typeName?: string;
/**
*
*/
qcInspectionType?: string | number;
remark?: string;
}
@ -197,38 +234,38 @@ export interface QcUnqualifiedReviewQuery extends PageQuery {
/**
*
*/
unqualifiedNo?: string;
unqualifiedReviewNo?: number;
/**
* ID
*
*/
inspectionId?: string | number;
reviewResult?: number;
/**
* ID
*
*/
typeId?: string | number;
inspectionNo?: string;
/**
*
*
*/
workOrder?: string;
inspectionType?: number;
/**
*
*
*/
processCode?: string;
productionDate?: string;
/**
* /
*/
workOrderNo?: string;
/**
*
*/
processName?: string;
/**
*
*/
batchNo?: string;
/**
*
*/
@ -240,14 +277,39 @@ export interface QcUnqualifiedReviewQuery extends PageQuery {
materialCode?: string;
/**
*
*
*/
inspectorResult?: string;
materialSpec?: string;
/**
* 0/1/2退
*
*/
reviewResult?: string;
supplierName?: string;
/**
*
*/
supplierCode?: string;
/**
*
*/
inspectionQty?: number;
/**
*
*/
batchNo?: string;
/**
*
*/
inspector?: string;
/**
* ID
*/
inspectorId?: string | number;
/**
*
@ -255,33 +317,19 @@ export interface QcUnqualifiedReviewQuery extends PageQuery {
reviewer?: string;
/**
*
* ID
*/
reviewTime?: string;
reviewerId?: string | number;
/**
* /
*
*/
inspectionNo?: string | number;
reviewStartTime?: string;
/**
*
*
*/
typeCode?: string | number;
/**
*
*/
typeName?: string;
/**
*
*/
qcInspectionType?: string | number;
reviewEndTime?: string;
/**
*
*/

@ -21,8 +21,8 @@
<el-option v-for="dict in qc_result" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="检验类别" prop="inspectionType">
<el-select v-model="queryParams.inspectionType" placeholder="请选择检验类别" clearable >
<el-form-item label="检验类别" prop="inspectionType" v-if='inspectionTypeVisible'>
<el-select v-model="queryParams.inspectionType" placeholder="请选择检验类别" >
<el-option v-for="dict in qc_inspection_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
@ -31,12 +31,22 @@
<el-option v-for="dict in qc_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="检验时间" prop="inspectionTime">
<el-date-picker clearable
v-model="queryParams.inspectionTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择检验时间"
<!-- <el-form-item label="检验时间" prop="inspectionTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.inspectionTime"-->
<!-- type="date"-->
<!-- value-format="YYYY-MM-DD"-->
<!-- placeholder="请选择检验时间"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="检验开始时间" label-width="100px">
<el-date-picker
v-model="dateRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item>
@ -106,16 +116,21 @@
<el-table-column label="检测人员" align="center" prop="inspector" v-if="columns[15].visible"/>
<el-table-column label="班次" align="center" prop="shift" v-if="columns[16].visible"/>
<el-table-column label="班组" align="center" prop="team" v-if="columns[17].visible"/>
<el-table-column label="检验时间" align="center" prop="inspectionTime" width="180" v-if="columns[18].visible">
<el-table-column label="检验时间" align="center" prop="inspectionStartTime" width="180" v-if="columns[18].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.inspectionTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.inspectionStartTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="生产订单号" align="center" prop="productionOrder" v-if="columns[19].visible"/>
<el-table-column label="批次号" align="center" prop="batchNo" v-if="columns[20].visible"/>
<el-table-column label="条码号" align="center" prop="barcode" v-if="columns[21].visible"/>
<el-table-column label="供应商名称" align="center" prop="supplierName" v-if="columns[22].visible"/>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[23].visible"/>
<el-table-column label="检验结束时间" align="center" prop="inspectionEndTime" width="180" v-if="columns[19].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.inspectionEndTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="生产订单号" align="center" prop="productionOrder" v-if="columns[20].visible"/>
<el-table-column label="批次号" align="center" prop="batchNo" v-if="columns[21].visible"/>
<el-table-column label="条码号" align="center" prop="barcode" v-if="columns[22].visible"/>
<el-table-column label="供应商名称" align="center" prop="supplierName" v-if="columns[23].visible"/>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[24].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
@ -345,9 +360,9 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检验时间" prop="inspectionTime">
<el-form-item label="检验开始时间" prop="inspectionStartTime">
<el-date-picker clearable
v-model="form.inspectionTime"
v-model="form.inspectionStartTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择检验时间"
@ -355,6 +370,17 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检验结束时间" prop="inspectionEndTime">
<el-date-picker clearable
v-model="form.inspectionEndTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择检验结束时间"
style="width: 100%;">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生产订单号" prop="productionOrder">
<el-input v-model="form.productionOrder" placeholder="请输入生产订单号" />
@ -567,6 +593,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';
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'));
@ -611,6 +638,23 @@ const inspectionResultDialog = reactive<DialogOption>({
title: ''
});
//0 1 2 3 4 5 6 7
//inspectionType = 1 2 3
const inspectionType = ref();
const inspectionTypeVisible = ref(false);
const getInspectionType = async () => {
const router = useRouter();
inspectionType.value = router.currentRoute._rawValue.query && router.currentRoute._rawValue.query.inspectionType;
if (inspectionType.value == 2){
queryParams.value.inspectionType = '4';
} else if (inspectionType.value == 3){
queryParams.value.inspectionType = '7';
} else {
queryParams.value.inspectionType = '6';
inspectionTypeVisible.value = true;
}
};
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `序号`, visible: true },
@ -631,12 +675,13 @@ const columns = ref<FieldOption[]>([
{ key: 15, label: `检测人员`, visible: true },
{ key: 16, label: `班次`, visible: true },
{ key: 17, label: `班组`, visible: true },
{ key: 18, label: `检验时间`, visible: true },
{ key: 19, label: `生产订单号`, visible: true },
{ key: 20, label: `批次号`, visible: true },
{ key: 21, label: `条码号`, visible: true },
{ key: 22, label: `供应商名称`, visible: true },
{ key: 23, label: `备注`, visible: true },
{ key: 18, label: `检验开始时间`, visible: true },
{ key: 19, label: `检验结束时间`, visible: true },
{ key: 20, label: `生产订单号`, visible: true },
{ key: 21, label: `批次号`, visible: true },
{ key: 22, label: `条码号`, visible: true },
{ key: 23, label: `供应商名称`, visible: true },
{ key: 24, label: `备注`, visible: true },
]);
const initFormData: QcInspectionMainForm = {
@ -658,7 +703,8 @@ const initFormData: QcInspectionMainForm = {
inspector: undefined,
shift: undefined,
team: undefined,
inspectionTime: undefined,
inspectionStartTime: undefined,
inspectionEndTime: undefined,
productionOrder: undefined,
batchNo: undefined,
barcode: undefined,
@ -713,7 +759,8 @@ const data = reactive<PageData<QcInspectionMainForm, QcInspectionMainQuery>>({
inspector: undefined,
shift: undefined,
team: undefined,
inspectionTime: undefined,
inspectionStartTime: undefined,
inspectionEndTime: undefined,
productionOrder: undefined,
batchNo: undefined,
barcode: undefined,
@ -765,9 +812,23 @@ const inspectionResultRules = ref({
const { queryParams, form, rules } = toRefs(data);
const dateRange = ref([]);
/** 查询质检任务列表 */
const getList = async () => {
loading.value = true;
if (dateRange.value && dateRange.value.length === 2) {
queryParams.value.params = {
...queryParams.value.params,
beginInspectionStartTime: dateRange.value[0],
endInspectionStartTime: dateRange.value[1]
};
} else {
if (queryParams.value.params) {
delete queryParams.value.params.beginInspectionStartTime;
delete queryParams.value.params.endInspectionStartTime;
}
}
const res = await listQcInspectionMain(queryParams.value);
QcInspectionMainList.value = res.rows;
total.value = res.total;
@ -823,6 +884,7 @@ const handleQuery = () => {
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
dateRange.value = [];
}
/** 重置子表搜索 */
@ -1069,8 +1131,9 @@ const submitMaterialForm = () => {
};
onMounted(() => {
getList();
getInspectionType();
getInspectionTemplateList();
getInspectionItemList();
getList();
});
</script>

@ -4,12 +4,63 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" >
<!-- <el-form-item label="记录主键" prop="recordId">-->
<!-- <el-input v-model="queryParams.recordId" placeholder="请输入记录主键" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="关联待评审表ID" prop="reviewId">-->
<!-- <el-input v-model="queryParams.reviewId" placeholder="请输入关联待评审表ID" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<el-form-item label="记录主键" prop="recordId">
<el-input v-model="queryParams.recordId" placeholder="请输入记录主键" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="关联评审主表ID" prop="reviewId">
<el-input v-model="queryParams.reviewId" placeholder="请输入关联评审主表ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="检测项编码" prop="itemCode">
<el-input v-model="queryParams.itemCode" placeholder="请输入检测项编码" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="检测名称" prop="itemName">
<el-input v-model="queryParams.itemName" placeholder="请输入检测名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="检测位置" prop="inspectionPosition">
<el-input v-model="queryParams.inspectionPosition" placeholder="请输入检测位置" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="检测项目类别" prop="categoryName">
<el-input v-model="queryParams.categoryName" placeholder="请输入检测项目类别" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="关联检测类型表" prop="typeId">
<el-input v-model="queryParams.typeId" placeholder="请输入关联检测类型表" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="检测方法" prop="inspectionMethod">
<el-select v-model="queryParams.inspectionMethod" placeholder="请选择检测方法" clearable >
<el-option v-for="dict in qc_methond" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="检测方式" prop="detectType">
<el-select v-model="queryParams.detectType" placeholder="请选择检测方式" clearable >
<el-option v-for="dict in detect_type" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="检测结果" prop="detectResult">
<el-select v-model="queryParams.detectResult" placeholder="请选择检测结果" clearable >
<el-option v-for="dict in qc_result" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="检测值" prop="detectValue">
<el-input v-model="queryParams.detectValue" placeholder="请输入检测值" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="控制上限" prop="upperLimit">
<el-input v-model="queryParams.upperLimit" placeholder="请输入控制上限" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="控制下限" prop="lowerLimit">
<el-input v-model="queryParams.lowerLimit" placeholder="请输入控制下限" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="规格检测值" prop="specInspectionValue">
<el-input v-model="queryParams.specInspectionValue" placeholder="请输入规格检测值" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="规格上限" prop="specUpper">
<el-input v-model="queryParams.specUpper" placeholder="请输入规格上限" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="规格下限" prop="specLower">
<el-input v-model="queryParams.specLower" placeholder="请输入规格下限" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="检查项说明" prop="description">
<el-input v-model="queryParams.description" placeholder="请输入检查项说明" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
@ -40,15 +91,35 @@
<el-table v-loading="loading" :data="qcUnqualifiedRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="记录主键" align="center" prop="recordId" v-if="columns[0].visible"/>-->
<!-- 自动序号 -->
<el-table-column label="序号" align="center" prop="index" width="50">
<el-table-column label="记录主键" align="center" prop="recordId" v-if="columns[0].visible"/>
<el-table-column label="关联评审主表ID" align="center" prop="reviewId" v-if="columns[1].visible"/>
<el-table-column label="检测项编码" align="center" prop="itemCode" v-if="columns[3].visible"/>
<el-table-column label="检测名称" align="center" prop="itemName" v-if="columns[4].visible"/>
<el-table-column label="检测位置" align="center" prop="inspectionPosition" v-if="columns[5].visible"/>
<el-table-column label="检测项目类别" align="center" prop="categoryName" v-if="columns[6].visible"/>
<el-table-column label="关联检测类型表" align="center" prop="typeId" v-if="columns[7].visible"/>
<el-table-column label="检测方法" align="center" prop="inspectionMethod" v-if="columns[8].visible">
<template #default="scope">
{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}
<dict-tag :options="qc_methond" :value="scope.row.inspectionMethod"/>
</template>
</el-table-column>
<el-table-column label="关联待评审表ID" align="center" prop="reviewId" v-if="columns[2].visible"/>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[3].visible"/>
<el-table-column label="检测方式" align="center" prop="detectType" v-if="columns[9].visible">
<template #default="scope">
<dict-tag :options="detect_type" :value="scope.row.detectType"/>
</template>
</el-table-column>
<el-table-column label="检测结果" align="center" prop="detectResult" v-if="columns[10].visible">
<template #default="scope">
<dict-tag :options="qc_result" :value="scope.row.detectResult"/>
</template>
</el-table-column>
<el-table-column label="检测值" align="center" prop="detectValue" v-if="columns[11].visible"/>
<el-table-column label="控制上限" align="center" prop="upperLimit" v-if="columns[12].visible"/>
<el-table-column label="控制下限" align="center" prop="lowerLimit" v-if="columns[13].visible"/>
<el-table-column label="规格检测值" align="center" prop="specInspectionValue" v-if="columns[14].visible"/>
<el-table-column label="规格上限" align="center" prop="specUpper" v-if="columns[15].visible"/>
<el-table-column label="规格下限" align="center" prop="specLower" v-if="columns[16].visible"/>
<el-table-column label="检查项说明" align="center" prop="description" v-if="columns[17].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
@ -69,11 +140,74 @@
<el-form-item label="记录主键" prop="recordId">
<el-input v-model="form.recordId" placeholder="请输入记录主键" />
</el-form-item>
<el-form-item label="关联评审表ID" prop="reviewId">
<el-input v-model="form.reviewId" placeholder="请输入关联评审表ID" />
<el-form-item label="关联评审表ID" prop="reviewId">
<el-input v-model="form.reviewId" placeholder="请输入关联评审表ID" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
<el-form-item label="检测项编码" prop="itemCode">
<el-input v-model="form.itemCode" placeholder="请输入检测项编码" />
</el-form-item>
<el-form-item label="检测名称" prop="itemName">
<el-input v-model="form.itemName" placeholder="请输入检测名称" />
</el-form-item>
<el-form-item label="检测位置" prop="inspectionPosition">
<el-input v-model="form.inspectionPosition" placeholder="请输入检测位置" />
</el-form-item>
<el-form-item label="检测项目类别" prop="categoryName">
<el-input v-model="form.categoryName" placeholder="请输入检测项目类别" />
</el-form-item>
<el-form-item label="关联检测类型表" prop="typeId">
<el-input v-model="form.typeId" placeholder="请输入关联检测类型表" />
</el-form-item>
<el-form-item label="检测方法" prop="inspectionMethod">
<el-select v-model="form.inspectionMethod" placeholder="请选择检测方法">
<el-option
v-for="dict in qc_methond"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检测方式" prop="detectType">
<el-select v-model="form.detectType" placeholder="请选择检测方式">
<el-option
v-for="dict in detect_type"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检测结果" prop="detectResult">
<el-select v-model="form.detectResult" placeholder="请选择检测结果">
<el-option
v-for="dict in qc_result"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检测值" prop="detectValue">
<el-input v-model="form.detectValue" placeholder="请输入检测值" />
</el-form-item>
<el-form-item label="控制上限" prop="upperLimit">
<el-input v-model="form.upperLimit" placeholder="请输入控制上限" />
</el-form-item>
<el-form-item label="控制下限" prop="lowerLimit">
<el-input v-model="form.lowerLimit" placeholder="请输入控制下限" />
</el-form-item>
<el-form-item label="规格检测值" prop="specInspectionValue">
<el-input v-model="form.specInspectionValue" placeholder="请输入规格检测值" />
</el-form-item>
<el-form-item label="规格上限" prop="specUpper">
<el-input v-model="form.specUpper" placeholder="请输入规格上限" />
</el-form-item>
<el-form-item label="规格下限" prop="specLower">
<el-input v-model="form.specLower" placeholder="请输入规格下限" />
</el-form-item>
<el-form-item label="检查项说明" prop="description">
<el-input v-model="form.description" placeholder="请输入检查项说明" />
</el-form-item>
</el-form>
<template #footer>
@ -91,6 +225,7 @@ import { listQcUnqualifiedRecord, getQcUnqualifiedRecord, delQcUnqualifiedRecord
import { QcUnqualifiedRecordVO, QcUnqualifiedRecordQuery, QcUnqualifiedRecordForm } from '@/api/qms/qcUnqualifiedRecord/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { qc_methond, detect_type, qc_result } = toRefs<any>(proxy?.useDict('qc_methond', 'detect_type', 'qc_result'));
const qcUnqualifiedRecordList = ref<QcUnqualifiedRecordVO[]>([]);
const buttonLoading = ref(false);
@ -112,21 +247,49 @@ const dialog = reactive<DialogOption>({
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `记录主键`, visible: true },
{ key: 1, label: `租户号`, visible: true },
{ key: 2, label: `关联待评审表ID`, visible: true },
{ key: 3, label: `备注`, visible: true },
{ key: 4, label: `创建部门`, visible: true },
{ key: 5, label: `创建人`, visible: true },
{ key: 6, label: `创建时间`, visible: true },
{ key: 7, label: `修改人`, visible: true },
{ key: 8, label: `修改时间`, visible: true },
{ key: 9, label: `是否删除`, visible: true },
{ key: 1, label: `关联评审主表ID`, visible: true },
{ key: 2, label: `租户id`, visible: true },
{ key: 3, label: `检测项编码`, visible: true },
{ key: 4, label: `检测名称`, visible: true },
{ key: 5, label: `检测位置`, visible: true },
{ key: 6, label: `检测项目类别`, visible: true },
{ key: 7, label: `关联检测类型表`, visible: true },
{ key: 8, label: `检测方法`, visible: true },
{ key: 9, label: `检测方式`, visible: true },
{ key: 10, label: `检测结果`, visible: true },
{ key: 11, label: `检测值`, visible: true },
{ key: 12, label: `控制上限`, visible: true },
{ key: 13, label: `控制下限`, visible: true },
{ key: 14, label: `规格检测值`, visible: true },
{ key: 15, label: `规格上限`, visible: true },
{ key: 16, label: `规格下限`, visible: true },
{ key: 17, label: `检查项说明`, visible: true },
{ key: 18, label: `创建部门`, visible: true },
{ key: 19, label: `创建人`, visible: true },
{ key: 20, label: `创建时间`, visible: true },
{ key: 21, label: `修改人`, visible: true },
{ key: 22, label: `修改时间`, visible: true },
{ key: 23, label: `是否删除`, visible: true },
]);
const initFormData: QcUnqualifiedRecordForm = {
recordId: undefined,
reviewId: undefined,
remark: undefined,
itemCode: undefined,
itemName: undefined,
inspectionPosition: undefined,
categoryName: undefined,
typeId: undefined,
inspectionMethod: undefined,
detectType: undefined,
detectResult: undefined,
detectValue: undefined,
upperLimit: undefined,
lowerLimit: undefined,
specInspectionValue: undefined,
specUpper: undefined,
specLower: undefined,
description: undefined,
}
const data = reactive<PageData<QcUnqualifiedRecordForm, QcUnqualifiedRecordQuery>>({
form: {...initFormData},
@ -135,6 +298,21 @@ const data = reactive<PageData<QcUnqualifiedRecordForm, QcUnqualifiedRecordQuery
pageSize: 10,
recordId: undefined,
reviewId: undefined,
itemCode: undefined,
itemName: undefined,
inspectionPosition: undefined,
categoryName: undefined,
typeId: undefined,
inspectionMethod: undefined,
detectType: undefined,
detectResult: undefined,
detectValue: undefined,
upperLimit: undefined,
lowerLimit: undefined,
specInspectionValue: undefined,
specUpper: undefined,
specLower: undefined,
description: undefined,
params: {
}
},

@ -4,53 +4,78 @@
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true" >
<!-- <el-form-item label="评审主键" prop="reviewId">-->
<!-- <el-input v-model="queryParams.reviewId" placeholder="请输入评审主键" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="不合格检测单号" prop="unqualifiedNo">-->
<!-- <el-input v-model="queryParams.unqualifiedNo" placeholder="请输入不合格检测单号" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="关联质检主表ID" prop="inspectionId">-->
<!-- <el-input v-model="queryParams.inspectionId" placeholder="请输入关联质检主表ID" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="检测类型ID" prop="typeId">-->
<!-- <el-input v-model="queryParams.typeId" placeholder="请输入检测类型ID" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<el-form-item label="派工单号" prop="workOrder">
<el-input v-model="queryParams.workOrder" placeholder="请输入派工单号" clearable @keyup.enter="handleQuery" />
<!-- <el-form-item label="评审主键" prop="reviewId">
<el-input v-model="queryParams.reviewId" placeholder="请输入评审主键" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="不合格检测单号" prop="unqualifiedReviewNo" label-width="120px">
<el-input v-model="queryParams.unqualifiedReviewNo" placeholder="请输入不合格检测单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="工序编码" prop="processCode">-->
<!-- <el-input v-model="queryParams.processCode" placeholder="请输入工序编码" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="工序名称" prop="processName">-->
<!-- <el-input v-model="queryParams.processName" placeholder="请输入工序名称" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<el-form-item label="批次号" prop="batchNo">
<el-input v-model="queryParams.batchNo" placeholder="请输入批次号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="物料名称" prop="materialName">-->
<!-- <el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="物料编码" prop="materialCode">-->
<!-- <el-input v-model="queryParams.materialCode" placeholder="请输入物料编码" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="质检员检测结果" prop="inspectorResult">-->
<!-- <el-input v-model="queryParams.inspectorResult" placeholder="请输入质检员检测结果" clearable @keyup.enter="handleQuery" />-->
<!-- </el-form-item>-->
<el-form-item label="评审结果" prop="reviewResult">
<el-select v-model="queryParams.reviewResult" placeholder="请选择评审结果" clearable >
<el-option v-for="dict in review_result" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="质检单号" prop="inspectionNo">
<el-input v-model="queryParams.inspectionNo" placeholder="请输入质检单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="检测类型" prop="inspectionType">
<el-input v-model="queryParams.inspectionType" placeholder="请输入检测类型" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<!-- <el-form-item label="生产日期" prop="productionDate">
<el-date-picker clearable
v-model="queryParams.productionDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择生产日期"
/>
</el-form-item> -->
<el-form-item label="派工单号" prop="workOrderNo">
<el-input v-model="queryParams.workOrderNo" placeholder="请输入派工单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="工序名称" prop="processName">
<el-input v-model="queryParams.processName" placeholder="请输入工序名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="queryParams.materialName" placeholder="请输入物料名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="queryParams.materialCode" placeholder="请输入物料编码" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料规格" prop="materialSpec">
<el-input v-model="queryParams.materialSpec" placeholder="请输入物料规格" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="供应商名称" prop="supplierName">
<el-input v-model="queryParams.supplierName" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="供应商编码" prop="supplierCode">
<el-input v-model="queryParams.supplierCode" placeholder="请输入供应商编码" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="质检数量" prop="inspectionQty">
<el-input v-model="queryParams.inspectionQty" placeholder="请输入质检数量" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="批次号" prop="batchNo">
<el-input v-model="queryParams.batchNo" placeholder="请输入批次号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="质检人" prop="inspector">
<el-input v-model="queryParams.inspector" placeholder="请输入质检人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<!-- <el-form-item label="质检人ID" prop="inspectorId">
<el-input v-model="queryParams.inspectorId" placeholder="请输入质检人ID" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="评审人" prop="reviewer">
<el-input v-model="queryParams.reviewer" placeholder="请输入评审人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="评审时间" prop="reviewTime">
<el-date-picker clearable
v-model="queryParams.reviewTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择评审时间"
<!-- <el-form-item label="评审人ID" prop="reviewerId">
<el-input v-model="queryParams.reviewerId" placeholder="请输入评审人ID" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="评审开始时间" label-width="100px">
<el-date-picker
v-model="dateRange"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item>
<el-form-item>
@ -65,7 +90,7 @@
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['qms:qcUnqualifiedReview:add']"></el-button>
</el-col>
<el-col :span="1.5">
@ -73,43 +98,72 @@
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['qms:qcUnqualifiedReview:remove']"></el-button>
</el-col>
</el-col> -->
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['qms:qcUnqualifiedReview:export']"></el-button>
</el-col>
<el-divider direction="vertical" />
<el-col :span="1.5">
<el-button type="primary" plain @click="handleFlow" :disabled="multiple" v-hasPermi="['qms:qcUnqualifiedReview:flow']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain @click="handleScrap" :disabled="multiple" v-hasPermi="['qms:qcUnqualifiedReview:scrap']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain @click="handleConcession" :disabled="multiple" v-hasPermi="['qms:qcUnqualifiedReview:concession']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain @click="handleRework" :disabled="multiple" v-hasPermi="['qms:qcUnqualifiedReview:rework']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" plain @click="handleReturn" :disabled="multiple" v-hasPermi="['qms:qcUnqualifiedReview:return']">退</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="qcUnqualifiedReviewList" @selection-change="handleSelectionChange">
<el-table v-loading="loading" :data="qcUnqualifiedReviewList" @selection-change="handleSelectionChange" @row-click="handleRowClick" highlight-current-row>
<el-table-column type="selection" width="55" align="center" />
<!-- 自动序号 -->
<el-table-column label="序号" align="center" prop="index" width="50" v-if="columns[0].visible">
<template #default="scope">
{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column label="不合格检测单号" align="center" prop="unqualifiedNo" v-if="columns[1].visible"/>
<el-table-column label="质检单号/卡号" align="center" prop="inspectionNo" v-if="columns[2].visible"/>
<el-table-column label="检测类型" align="center" prop="typeName" v-if="columns[3].visible"/>
<el-table-column label="派工单号" align="center" prop="workOrder" v-if="columns[4].visible"/>
<el-table-column label="工序编码" align="center" prop="processCode" v-if="columns[5].visible"/>
<el-table-column label="工序名称" align="center" prop="processName" v-if="columns[6].visible"/>
<el-table-column label="批次号" align="center" prop="batchNo" v-if="columns[7].visible"/>
<el-table-column label="物料名称" align="center" prop="materialName" v-if="columns[8].visible"/>
<el-table-column label="物料编码" align="center" prop="materialCode" v-if="columns[9].visible"/>
<el-table-column label="质检员检测结果" align="center" prop="inspectorResult" v-if="columns[10].visible"/>
<el-table-column label="评审结果" align="center" prop="reviewResult" v-if="columns[11].visible">
<!-- <el-table-column label="评审主键" align="center" prop="reviewId" v-if="columns[0].visible"/> -->
<!-- 自动序号 -->
<el-table-column type="index" label="序号" width="55" align="center" v-if="columns[0].visible"/>
<el-table-column label="不合格检测单号" align="center" prop="unqualifiedReviewNo" width="120" v-if="columns[1].visible"/>
<el-table-column label="评审结果" align="center" prop="reviewResult" v-if="columns[2].visible">
<template #default="scope">
<dict-tag :options="review_result" :value="scope.row.reviewResult"/>
</template>
</el-table-column>
<el-table-column label="评审人" align="center" prop="reviewer" v-if="columns[12].visible"/>
<el-table-column label="评审时间" align="center" prop="reviewTime" width="180" v-if="columns[13].visible">
<el-table-column label="质检单号" align="center" prop="inspectionNo" v-if="columns[3].visible"/>
<el-table-column label="检测类型" align="center" prop="inspectionType" v-if="columns[4].visible"/>
<el-table-column label="生产日期" align="center" prop="productionDate" width="180" v-if="columns[5].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.reviewTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
<span>{{ parseTime(scope.row.productionDate, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="派工单号" align="center" prop="workOrderNo" v-if="columns[6].visible"/>
<el-table-column label="工序名称" align="center" prop="processName" v-if="columns[7].visible"/>
<el-table-column label="物料名称" align="center" prop="materialName" v-if="columns[8].visible"/>
<el-table-column label="物料编码" align="center" prop="materialCode" v-if="columns[9].visible"/>
<el-table-column label="物料规格" align="center" prop="materialSpec" v-if="columns[10].visible"/>
<el-table-column label="供应商名称" align="center" prop="supplierName" width="120" v-if="columns[11].visible"/>
<el-table-column label="供应商编码" align="center" prop="supplierCode" width="120" v-if="columns[12].visible"/>
<el-table-column label="质检数量" align="center" prop="inspectionQty" v-if="columns[13].visible"/>
<el-table-column label="批次号" align="center" prop="batchNo" v-if="columns[14].visible"/>
<el-table-column label="质检人" align="center" prop="inspector" v-if="columns[15].visible"/>
<!-- <el-table-column label="质检人ID" align="center" prop="inspectorId" v-if="columns[16].visible"/> -->
<el-table-column label="评审人" align="center" prop="reviewer" v-if="columns[16].visible"/>
<!-- <el-table-column label="评审人ID" align="center" prop="reviewerId" v-if="columns[19].visible"/> -->
<el-table-column label="评审开始时间" align="center" prop="reviewStartTime" width="180" v-if="columns[17].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.reviewStartTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="评审结束时间" align="center" prop="reviewEndTime" width="180" v-if="columns[18].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.reviewEndTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="remark" v-if="columns[19].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
@ -124,69 +178,169 @@
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 子表显示区域 -->
<el-card v-if="selectedReviewId" shadow="never" class="mt-4">
<template #header>
<div class="flex justify-between items-center">
<h3>不合格品评审记录 - {{ selectedUnqualifiedReviewNo }}</h3>
<!-- <el-button type="primary" size="small" icon="Plus" @click="handleAddQcUnqualifiedRecord" v-hasPermi="['qms:qcUnqualifiedRecord:add']">
新增评审记录
</el-button> -->
</div>
</template>
<!-- 子表数据表格 -->
<el-table v-loading="qcUnqualifiedRecordLoading" :data="qcUnqualifiedRecordList" @selection-change="handleQcUnqualifiedRecordSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="记录主键" align="center" prop="recordId" /> -->
<!-- 自动序号 -->
<el-table-column type="index" label="序号" width="55" align="center"/>
<el-table-column label="检测项编码" align="center" prop="itemCode" />
<el-table-column label="检测名称" align="center" prop="itemName" />
<el-table-column label="检测位置" align="center" prop="inspectionPosition" />
<el-table-column label="检测方法" align="center" prop="inspectionMethod">
<template #default="scope">
<dict-tag :options="qc_methond" :value="scope.row.inspectionMethod" />
</template>
</el-table-column>
<el-table-column label="检测方式" align="center" prop="detectType">
<template #default="scope">
<dict-tag :options="detect_type" :value="scope.row.detectType" />
</template>
</el-table-column>
<el-table-column label="检测结果" align="center" prop="detectResult">
<template #default="scope">
<dict-tag :options="qc_result" :value="scope.row.detectResult"/>
</template>
</el-table-column>
<el-table-column label="检测值" align="center" prop="detectValue" />
<el-table-column label="控制上限" align="center" prop="upperLimit" />
<el-table-column label="控制下限" align="center" prop="lowerLimit" />
<el-table-column label="规格检测值" align="center" prop="specInspectionValue" />
<el-table-column label="检查项说明" align="center" prop="description" :show-overflow-tooltip="true"/>
<el-table-column label="规格下限" align="center" prop="specLower" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdateQcUnqualifiedRecord(scope.row)" v-hasPermi="['qms:qcUnqualifiedRecord:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDeleteQcUnqualifiedRecord(scope.row)" v-hasPermi="['qms:qcUnqualifiedRecord:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="qcUnqualifiedRecordTotal > 0" :total="qcUnqualifiedRecordTotal" v-model:page="qcUnqualifiedRecordParams.pageNum" v-model:limit="qcUnqualifiedRecordParams.pageSize" @pagination="getQcUnqualifiedRecordList" />
</el-card>
<!-- 添加或修改不合格品待评审对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="qcUnqualifiedReviewFormRef" :model="form" :rules="rules" label-width="120px">
<!-- <el-form-item label="评审主键" prop="reviewId">-->
<!-- <el-input v-model="form.reviewId" placeholder="请输入评审主键" />-->
<!-- </el-form-item>-->
<el-form-item label="不合格检测单号" prop="unqualifiedNo">
<el-input v-model="form.unqualifiedNo" placeholder="请输入不合格检测单号" />
</el-form-item>
<el-form-item label="质检单号/卡号" prop="inspectionId">
<!-- <el-input v-model="form.inspectionId" placeholder="请输入关联质检主表ID" /> -->
<el-select v-model="form.inspectionId" placeholder="请选择质检单号/卡号">
<el-option v-for="item in inspectionMainList" :key="item.inspectionId" :label="item.inspectionNo" :value="item.inspectionId"/>
</el-select>
</el-form-item>
<el-form-item label="检测类型" prop="typeId">
<!-- <el-input v-model="form.typeId" placeholder="请输入检测类型ID" /> -->
<el-select v-model="form.typeId" placeholder="请选择检测类型">
<el-option v-for="item in inspectionTypeList" :key="item.typeId" :label="item.typeName" :value="item.typeId"/>
</el-select>
</el-form-item>
<el-form-item label="派工单号" prop="workOrder">
<el-input v-model="form.workOrder" placeholder="请输入派工单号" />
</el-form-item>
<el-form-item label="工序编码" prop="processCode">
<el-input v-model="form.processCode" placeholder="请输入工序编码" />
</el-form-item>
<el-form-item label="工序名称" prop="processName">
<el-input v-model="form.processName" placeholder="请输入工序名称" />
</el-form-item>
<el-form-item label="批次号" prop="batchNo">
<el-input v-model="form.batchNo" placeholder="请输入批次号" />
</el-form-item>
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
</el-form-item>
<el-form-item label="质检员检测结果" prop="inspectorResult">
<el-input v-model="form.inspectorResult" placeholder="请输入质检员检测结果" />
<el-dialog :title="dialog.title" v-model="dialog.visible" width="800px" append-to-body>
<el-form ref="qcUnqualifiedReviewFormRef" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item label="不合格检测单号" prop="unqualifiedReviewNo">
<el-input v-model="form.unqualifiedReviewNo" placeholder="请输入不合格检测单号" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评审结果" prop="reviewResult">
<el-select v-model="form.reviewResult" placeholder="请选择评审结果">
<el-option
v-for="dict in review_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="评审人" prop="reviewer">
<el-input v-model="form.reviewer" placeholder="请输入评审人" />
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="质检单号" prop="inspectionNo">
<el-input v-model="form.inspectionNo" placeholder="请输入质检单号" />
</el-form-item>
<el-form-item label="评审时间" prop="reviewTime">
<el-date-picker clearable
v-model="form.reviewTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择评审时间">
</el-date-picker>
</el-col>
<el-col :span="12">
<el-form-item label="检测类型" prop="inspectionType">
<el-input v-model="form.inspectionType" placeholder="请输入检测类型" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="生产日期" prop="productionDate">
<el-date-picker clearable
v-model="form.productionDate"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择生产日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="供应商名称" prop="supplierName">
<el-input v-model="form.supplierName" placeholder="请输入供应商名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="供应商编码" prop="supplierCode">
<el-input v-model="form.supplierCode" placeholder="请输入供应商编码" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="质检数量" prop="inspectionQty">
<el-input v-model="form.inspectionQty" placeholder="请输入质检数量" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="批次号" prop="batchNo">
<el-input v-model="form.batchNo" placeholder="请输入批次号" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="质检人" prop="inspector">
<el-input v-model="form.inspector" placeholder="请输入质检人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评审人" prop="reviewer">
<el-input v-model="form.reviewer" placeholder="请输入评审人" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="评审开始时间" prop="reviewStartTime">
<el-date-picker clearable
v-model="form.reviewStartTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择评审时间">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="评审结束时间" prop="reviewEndTime">
<el-date-picker clearable
v-model="form.reviewEndTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择评审时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
@ -196,15 +350,119 @@
</div>
</template>
</el-dialog>
<!-- 添加或修改不合格品评审记录对话框 -->
<el-dialog :title="qcUnqualifiedRecordDialog.title" v-model="qcUnqualifiedRecordDialog.visible" width="800px" append-to-body>
<el-form ref="qcUnqualifiedRecordFormRef" :model="qcUnqualifiedRecordForm" :rules="qcUnqualifiedRecordRules" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item label="不合格单号" prop="unqualifiedReviewNo">
<el-input v-model="selectedUnqualifiedReviewNo" placeholder="不合格单号" readonly />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测项编码" prop="itemCode">
<el-input v-model="qcUnqualifiedRecordForm.itemCode" placeholder="请输入检测项编码" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="检测名称" prop="itemName">
<el-input v-model="qcUnqualifiedRecordForm.itemName" placeholder="请输入检测名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测位置" prop="inspectionPosition">
<el-input v-model="qcUnqualifiedRecordForm.inspectionPosition" placeholder="请输入检测位置" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<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-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-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<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-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="检测值" prop="detectValue">
<el-input v-model="qcUnqualifiedRecordForm.detectValue" placeholder="请输入检测值" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="控制上限" prop="upperLimit">
<el-input v-model="qcUnqualifiedRecordForm.upperLimit" placeholder="请输入控制上限" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="控制下限" prop="lowerLimit">
<el-input v-model="qcUnqualifiedRecordForm.lowerLimit" placeholder="请输入控制下限" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="规格检测值" prop="specInspectionValue">
<el-input v-model="qcUnqualifiedRecordForm.specInspectionValue" placeholder="请输入规格检测值" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="规格上限" prop="specUpper">
<el-input v-model="qcUnqualifiedRecordForm.specUpper" placeholder="请输入规格上限" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="规格下限" prop="specLower">
<el-input v-model="qcUnqualifiedRecordForm.specLower" placeholder="请输入规格下限" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="检查项说明" prop="description">
<el-input v-model="qcUnqualifiedRecordForm.description" type="textarea" placeholder="请输入检查项说明" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="qcUnqualifiedRecordButtonLoading" type="primary" @click="submitQcUnqualifiedRecordForm"> </el-button>
<el-button @click="cancelQcUnqualifiedRecord"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="QcUnqualifiedReview" lang="ts">
import { listQcUnqualifiedReview, getQcUnqualifiedReview, delQcUnqualifiedReview, addQcUnqualifiedReview, updateQcUnqualifiedReview } from '@/api/qms/qcUnqualifiedReview';
import { QcUnqualifiedReviewVO, QcUnqualifiedReviewQuery, QcUnqualifiedReviewForm } from '@/api/qms/qcUnqualifiedReview/types';
import { listQcUnqualifiedRecord, getQcUnqualifiedRecord, delQcUnqualifiedRecord, addQcUnqualifiedRecord, updateQcUnqualifiedRecord } from '@/api/qms/qcUnqualifiedRecord';
import { QcUnqualifiedRecordVO, QcUnqualifiedRecordQuery, QcUnqualifiedRecordForm } from '@/api/qms/qcUnqualifiedRecord/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { review_result } = toRefs<any>(proxy?.useDict('review_result'));
const { review_result, qc_methond, detect_type, qc_result } = toRefs<any>(proxy?.useDict('review_result', 'qc_methond', 'detect_type', 'qc_result'));
const qcUnqualifiedReviewList = ref<QcUnqualifiedReviewVO[]>([]);
const buttonLoading = ref(false);
@ -225,44 +483,54 @@ const dialog = reactive<DialogOption>({
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `评审主键`, visible: true },
// { key: 1, label: ``, visible: true },
{ key: 0, label: `序号`, visible: true },
{ key: 1, label: `不合格检测单号`, visible: true },
{ key: 2, label: `质检单号/卡号`, visible: true },
{ key: 3, label: `检测类型`, visible: true },
{ key: 4, label: `派工单号`, visible: true },
{ key: 5, label: `工序编码`, visible: true },
{ key: 6, label: `工序名称`, visible: true },
{ key: 7, label: `批次号`, visible: true },
{ key: 2, label: `评审结果`, visible: true },
{ key: 3, label: `质检单号`, visible: true },
{ key: 4, label: `检测类型`, visible: true },
{ key: 5, label: `生产日期`, visible: true },
{ key: 6, label: `派工单号`, visible: true },
{ key: 7, label: `工序名称`, visible: true },
{ key: 8, label: `物料名称`, visible: true },
{ key: 9, label: `物料编码`, visible: true },
{ key: 10, label: `质检员检测结果`, visible: true },
{ key: 11, label: `评审结果`, visible: true },
{ key: 12, label: `评审人`, visible: true },
{ key: 13, label: `评审时间`, visible: true },
// { key: 15, label: ``, visible: true },
// { key: 16, label: ``, visible: true },
// { key: 17, label: ``, visible: true },
// { key: 18, label: ``, visible: true },
// { key: 19, label: ``, visible: true },
// { key: 20, label: ``, visible: true },
{ key: 10, label: `物料规格`, visible: true },
{ key: 11, label: `供应商名称`, visible: true },
{ key: 12, label: `供应商编码`, visible: true },
{ key: 13, label: `质检数量`, visible: true },
{ key: 14, label: `批次号`, visible: true },
{ key: 15, label: `质检人`, visible: true },
// { key: 16, label: `ID`, visible: true },
{ key: 16, label: `评审人`, visible: true },
// { key: 18, label: `ID`, visible: true },
{ key: 17, label: `评审开始时间`, visible: true },
{ key: 18, label: `评审结束时间`, visible: true },
{ key: 19, label: `备注`, visible: true },
]);
const initFormData: QcUnqualifiedReviewForm = {
reviewId: undefined,
unqualifiedNo: undefined,
inspectionId: undefined,
typeId: undefined,
workOrder: undefined,
processCode: undefined,
unqualifiedReviewNo: undefined,
reviewResult: undefined,
inspectionNo: undefined,
inspectionType: undefined,
productionDate: undefined,
workOrderNo: undefined,
processName: undefined,
batchNo: undefined,
materialName: undefined,
materialCode: undefined,
inspectorResult: undefined,
reviewResult: undefined,
materialSpec: undefined,
supplierName: undefined,
supplierCode: undefined,
inspectionQty: undefined,
batchNo: undefined,
inspector: undefined,
inspectorId: undefined,
reviewer: undefined,
reviewTime: undefined,
reviewerId: undefined,
reviewStartTime: undefined,
reviewEndTime: undefined,
remark: undefined,
}
const data = reactive<PageData<QcUnqualifiedReviewForm, QcUnqualifiedReviewQuery>>({
form: {...initFormData},
@ -270,19 +538,26 @@ const data = reactive<PageData<QcUnqualifiedReviewForm, QcUnqualifiedReviewQuery
pageNum: 1,
pageSize: 10,
reviewId: undefined,
unqualifiedNo: undefined,
inspectionId: undefined,
typeId: undefined,
workOrder: undefined,
processCode: undefined,
unqualifiedReviewNo: undefined,
reviewResult: undefined,
inspectionNo: undefined,
inspectionType: undefined,
productionDate: undefined,
workOrderNo: undefined,
processName: undefined,
batchNo: undefined,
materialName: undefined,
materialCode: undefined,
inspectorResult: undefined,
reviewResult: undefined,
materialSpec: undefined,
supplierName: undefined,
supplierCode: undefined,
inspectionQty: undefined,
batchNo: undefined,
inspector: undefined,
inspectorId: undefined,
reviewer: undefined,
reviewTime: undefined,
reviewerId: undefined,
reviewStartTime: undefined,
reviewEndTime: undefined,
params: {
}
},
@ -292,9 +567,23 @@ const data = reactive<PageData<QcUnqualifiedReviewForm, QcUnqualifiedReviewQuery
const { queryParams, form, rules } = toRefs(data);
const dateRange = ref([]);
/** 查询不合格品待评审列表 */
const getList = async () => {
loading.value = true;
if (dateRange.value && dateRange.value.length === 2) {
queryParams.value.params = {
...queryParams.value.params,
beginReviewStartTime: dateRange.value[0],
endReviewStartTime: dateRange.value[1]
};
} else {
if (queryParams.value.params) {
delete queryParams.value.params.beginReviewStartTime;
delete queryParams.value.params.endReviewStartTime;
}
}
const res = await listQcUnqualifiedReview(queryParams.value);
qcUnqualifiedReviewList.value = res.rows;
total.value = res.total;
@ -322,6 +611,7 @@ const handleQuery = () => {
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
dateRange.value = [];
handleQuery();
}
@ -382,27 +672,169 @@ const handleExport = () => {
}, `qcUnqualifiedReview_${new Date().getTime()}.xlsx`)
}
//
let inspectionTypeList = ref([]);
const getInspectionTypeList = async () => {
const res = await getQcInspectionTypeList(null);
inspectionTypeList.value = res.data;
/***** 子表 */
const selectedReviewId = ref<string | number>('');
const selectedUnqualifiedReviewNo = ref<string>('');
const qcUnqualifiedRecordList = ref<QcUnqualifiedRecordVO[]>([]);
const qcUnqualifiedRecordLoading = ref(false);
const qcUnqualifiedRecordTotal = ref(0);
const qcUnqualifiedRecordIds = ref<Array<string | number>>([]);
const qcUnqualifiedRecordSingle = ref(true);
const qcUnqualifiedRecordMultiple = ref(true);
const qcUnqualifiedRecordButtonLoading = ref(false);
const qcUnqualifiedRecordFormRef = ref<ElFormInstance>();
const qcUnqualifiedRecordDialog = reactive<DialogOption>({
visible: false,
title: ''
});
const initQcUnqualifiedRecordFormData: QcUnqualifiedRecordForm = {
recordId: undefined,
reviewId: undefined,
itemCode: undefined,
itemName: undefined,
inspectionPosition: undefined,
categoryId: undefined,
categoryName: undefined,
typeId: undefined,
inspectionMethod: undefined,
detectType: undefined,
detectResult: undefined,
detectValue: undefined,
upperLimit: undefined,
lowerLimit: undefined,
specInspectionValue: undefined,
specUpper: undefined,
specLower: undefined,
description: undefined
};
const qcUnqualifiedRecordData = reactive<PageData<QcUnqualifiedRecordForm, QcUnqualifiedRecordQuery>>({
form: {...initQcUnqualifiedRecordFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
reviewId: undefined
},
rules: {
}
});
const { queryParams: qcUnqualifiedRecordParams, form: qcUnqualifiedRecordForm, rules: qcUnqualifiedRecordRules } = toRefs(qcUnqualifiedRecordData);
/** 主表行点击事件 */
const handleRowClick = (row: QcUnqualifiedReviewVO) => {
selectedReviewId.value = row.reviewId;
selectedUnqualifiedReviewNo.value = row.unqualifiedReviewNo;
getQcUnqualifiedRecordList();
}
//
let inspectionMainList = ref([]);
const getInspectionMainList = async () => {
const res = await getQcInspectionMainList(null);
inspectionMainList.value = res.data;
/** 查询不合格品评审记录列表 */
const getQcUnqualifiedRecordList = async () => {
qcUnqualifiedRecordLoading.value = true;
qcUnqualifiedRecordParams.value.reviewId = selectedReviewId.value;
const res = await listQcUnqualifiedRecord(qcUnqualifiedRecordParams.value);
qcUnqualifiedRecordList.value = res.rows;
qcUnqualifiedRecordTotal.value = res.total;
qcUnqualifiedRecordLoading.value = false;
}
/** 子表多选框选中数据 */
const handleQcUnqualifiedRecordSelectionChange = (selection: QcUnqualifiedRecordVO[]) => {
qcUnqualifiedRecordIds.value = selection.map(item => item.recordId);
qcUnqualifiedRecordSingle.value = selection.length != 1;
qcUnqualifiedRecordMultiple.value = !selection.length;
}
/** 子表新增按钮操作 */
const handleAddQcUnqualifiedRecord = () => {
resetQcUnqualifiedRecord();
qcUnqualifiedRecordDialog.visible = true;
qcUnqualifiedRecordDialog.title = "添加不合格品评审记录";
}
/** 子表修改按钮操作 */
const handleUpdateQcUnqualifiedRecord = async (row?: QcUnqualifiedRecordVO) => {
resetQcUnqualifiedRecord();
const _recordId = row?.recordId || qcUnqualifiedRecordIds.value[0]
const res = await getQcUnqualifiedRecord(_recordId);
Object.assign(qcUnqualifiedRecordForm.value, res.data);
qcUnqualifiedRecordDialog.visible = true;
qcUnqualifiedRecordDialog.title = "修改不合格品评审记录";
}
/** 子表提交按钮 */
const submitQcUnqualifiedRecordForm = () => {
qcUnqualifiedRecordFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
qcUnqualifiedRecordButtonLoading.value = true;
qcUnqualifiedRecordForm.value.reviewId = selectedReviewId.value;
if (qcUnqualifiedRecordForm.value.recordId) {
await updateQcUnqualifiedRecord(qcUnqualifiedRecordForm.value).finally(() => qcUnqualifiedRecordButtonLoading.value = false);
} else {
await addQcUnqualifiedRecord(qcUnqualifiedRecordForm.value).finally(() => qcUnqualifiedRecordButtonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
qcUnqualifiedRecordDialog.visible = false;
await getQcUnqualifiedRecordList();
}
});
}
/** 子表删除按钮操作 */
const handleDeleteQcUnqualifiedRecord = async (row?: QcUnqualifiedRecordVO) => {
const _recordIds = row?.recordId || qcUnqualifiedRecordIds.value;
await proxy?.$modal.confirm('是否确认删除不合格品评审记录编号为"' + _recordIds + '"的数据项?').finally(() => {});
await delQcUnqualifiedRecord(_recordIds);
proxy?.$modal.msgSuccess("删除成功");
await getQcUnqualifiedRecordList();
}
/** 子表取消按钮 */
const cancelQcUnqualifiedRecord = () => {
resetQcUnqualifiedRecord();
qcUnqualifiedRecordDialog.visible = false;
}
/** 子表表单重置 */
const resetQcUnqualifiedRecord = () => {
qcUnqualifiedRecordForm.value = {...initQcUnqualifiedRecordFormData};
qcUnqualifiedRecordFormRef.value?.resetFields();
}
onMounted(() => {
getList();
getInspectionTypeList();
getInspectionMainList();
});
/** 流转按钮操作 */
const handleFlow = () => {
// TODO:
console.log('点击了流转按钮');
}
/** 报废按钮操作 */
const handleScrap = () => {
// TODO:
console.log('点击了报废按钮');
}
/** 让步接收按钮操作 */
const handleConcession = () => {
// TODO:
console.log('点击了让步接收按钮');
}
/** 返工按钮操作 */
const handleRework = () => {
// TODO:
console.log('点击了返工按钮');
}
/** 退货按钮操作 */
const handleReturn = () => {
// TODO:
console.log('点击了退货按钮');
}
</script>

Loading…
Cancel
Save