feat(wip): 产品入库检验等级控制

- 在产品入库页面添加检验等级显示和控制功能- 扫描产品时,验证检验等级是否匹配
- 不同检验等级的产品不允许同时入库
- 入库列表为空时,重置检验等级状态
This commit is contained in:
tangyu 2025-06-11 10:54:36 +08:00
parent e487bc42fb
commit 96f37675d0

View File

@ -169,7 +169,18 @@
<!-- 托盘号/条码号 -->
<el-col :span="12">
<el-form-item label="托盘号/条码号" prop="carrierNumberOrLotNumber">
<el-input clearable v-model="form.carrierNumberOrLotNumber" ref="carrierNumberOrLotNumberInput" @change="scanEvent"></el-input>
<el-input clearable v-model="form.carrierNumberOrLotNumber"
ref="carrierNumberOrLotNumberInput"
@change="scanEvent">
<template slot="prepend">
<el-tag v-if="qualityInspectionStatus" type="success">
要求等级: {{ qualityInspectionStatus }}
</el-tag>
<el-tag v-else type="info">
未设置等级
</el-tag>
</template>
</el-input>
</el-form-item>
</el-col>
<!-- 备注 -->
@ -178,6 +189,7 @@
<el-input clearable v-model="form.notes"></el-input>
</el-form-item>
</el-col>
</el-row>
<!--分割线-->
<el-divider></el-divider>
@ -338,6 +350,7 @@ export default {
current: 1,
size: 20
},
qualityInspectionStatus: null,
}
},
created() {
@ -491,8 +504,11 @@ export default {
let dnOrder= "";
// 销售订单行号
let dnOrderSeq = "";
let qualityInspectionStatus = null;
let scanListLength = 0;
if (storagRequestList.length > 0) {
qualityInspectionStatus = storagRequestList[0].qualityInspectionStatus;
scanListLength = storagRequestList.length;
inventoryStatus = storagRequestList[0].storageStatus;
inventorySpecialMarking = storagRequestList[0].inventorySpecialMarking;
dnOrder = storagRequestList[0].dnOrder;
@ -509,7 +525,8 @@ export default {
"salesOrderControl": this.salesOrderControl,
"dnOrder": dnOrder,
"dnOrderSeq": dnOrderSeq,
"scanListLength":scanListLength
"scanListLength":scanListLength,
"qualityInspectionStatus": qualityInspectionStatus, // 传递当前库存等级给后端
};
me.$refs.storagRequestData.clearSelection();
@ -521,6 +538,25 @@ export default {
}
if (res.data.data) {
let data = res.data.data;
let currentGrade = null;
if (me.storagRequestList.length === 0 && data.length > 0) {
// 首次扫描,设置库存等级基准
me.qualityInspectionStatus = data[0].qualityInspectionStatus;
currentGrade = me.qualityInspectionStatus;
} else {
currentGrade = me.qualityInspectionStatus;
}
// 验证所有返回条码的库存等级
for (let item of data) {
if (item.qualityInspectionStatus !== currentGrade) {
// 等级不匹配
let errorMsg = `库存等级不匹配!当前要求等级: ${currentGrade || '空'},扫描条码等级: ${item.qualityInspectionStatus || '空'}`;
return me.$message.error(errorMsg);
}
}
for (let dataObject of data) {
let isDuplicate = false;
// 检查 dataObject.lotNumber 是否已经存在于 storagRequestList 中
@ -671,8 +707,14 @@ export default {
}
me.$refs.storagRequestData.clearSelection();
setSeq(this.storagRequestList, 'seq');
// 移除后如果列表为空,重置库存等级
if (me.storagRequestList.length === 0) {
me.qualityInspectionStatus = null;
}
},
//删除
doDelete() {
let me = this;
@ -712,6 +754,10 @@ export default {
me.doSearch('delete');
me.$message.success('删除成功');
me.$refs.storagRequestData.clearSelection();
// 删除后检查列表是否为空
if (me.storagRequestList.length === 0) {
me.qualityInspectionStatus = null;
}
}).catch(e => {
console.log(e);
hideLoading();
@ -764,6 +810,12 @@ export default {
}
}
me.storagRequestList = res.data.data.records;
// 设置库存等级(如果列表不为空)
if (me.storagRequestList.length > 0) {
me.qualityInspectionStatus = me.storagRequestList[0].qualityInspectionStatus;
} else {
me.qualityInspectionStatus = null;
}
me.form.notes = res.data.data.records[0].masterNotes;
me.page.total = res.data.data.total;
me.page.current = res.data.data.current;
@ -858,6 +910,7 @@ export default {
this.multipleSelection = [];
// 清空列表信息
this.storagRequestList = [];
this.qualityInspectionStatus = null; // 重置库存等级
},
handleSizeChange(val) {