|
@@ -62,9 +62,11 @@
|
|
|
<template v-slot:sampleNoQualifiedNumber="{ row }">
|
|
<template v-slot:sampleNoQualifiedNumber="{ row }">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="row.sampleNoQualifiedNumber"
|
|
v-model="row.sampleNoQualifiedNumber"
|
|
|
|
|
+ @input="formSampleNoQualifiedNumberChange"
|
|
|
|
|
+ @blur="formSampleNoQualifiedNumberChange"
|
|
|
placeholder="自动取值(质检项中最大不合格数)"
|
|
placeholder="自动取值(质检项中最大不合格数)"
|
|
|
type="number"
|
|
type="number"
|
|
|
- disabled
|
|
|
|
|
|
|
+ :disabled="type == 'detail' || qms_defaultDisposalType"
|
|
|
>
|
|
>
|
|
|
<template slot="append">{{ form.measureUnit }}</template>
|
|
<template slot="append">{{ form.measureUnit }}</template>
|
|
|
</el-input>
|
|
</el-input>
|
|
@@ -421,14 +423,6 @@
|
|
|
label: '样品数',
|
|
label: '样品数',
|
|
|
showOverflowTooltip: true
|
|
showOverflowTooltip: true
|
|
|
},
|
|
},
|
|
|
- {
|
|
|
|
|
- minWidth: 180,
|
|
|
|
|
- prop: 'sampleNoQualifiedNumber',
|
|
|
|
|
- slot: 'sampleNoQualifiedNumber',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- label: '样品不合格数',
|
|
|
|
|
- showOverflowTooltip: true
|
|
|
|
|
- },
|
|
|
|
|
{
|
|
{
|
|
|
minWidth: 140,
|
|
minWidth: 140,
|
|
|
prop: 'sampleQualifiedNumber',
|
|
prop: 'sampleQualifiedNumber',
|
|
@@ -445,6 +439,15 @@
|
|
|
label: '样品合格数',
|
|
label: '样品合格数',
|
|
|
showOverflowTooltip: true
|
|
showOverflowTooltip: true
|
|
|
},
|
|
},
|
|
|
|
|
+ {
|
|
|
|
|
+ minWidth: 180,
|
|
|
|
|
+ prop: 'sampleNoQualifiedNumber',
|
|
|
|
|
+ headerSlot: 'isRequired',
|
|
|
|
|
+ slot: 'sampleNoQualifiedNumber',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ label: '样品不合格数',
|
|
|
|
|
+ showOverflowTooltip: true
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
minWidth: 140,
|
|
minWidth: 140,
|
|
|
prop: 'lossNumber',
|
|
prop: 'lossNumber',
|
|
@@ -761,23 +764,47 @@
|
|
|
// 任意质检项的不合格数变更时,自动同步最大不合格数到样品不合格数
|
|
// 任意质检项的不合格数变更时,自动同步最大不合格数到样品不合格数
|
|
|
tableData: {
|
|
tableData: {
|
|
|
deep: true,
|
|
deep: true,
|
|
|
- handler(list) {
|
|
|
|
|
- if (!Array.isArray(list) || !list.length) {
|
|
|
|
|
- this.$set(this.form, 'sampleNoQualifiedNumber', 0);
|
|
|
|
|
|
|
+ handler(newVal) {
|
|
|
|
|
+ if (!newVal || !newVal.length) {
|
|
|
|
|
+ this.form.sampleNoQualifiedNumber = 0;
|
|
|
|
|
+ this.form.sampleQualifiedNumber = this.form.sampleQuantity || 0;
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const maxNoQualified = newVal.reduce((max, item) => {
|
|
|
|
|
+ const val = Number(item.noQualifiedQuantity) || 0;
|
|
|
|
|
+ return val > max ? val : max;
|
|
|
|
|
+ }, 0);
|
|
|
|
|
+ this.$set(this.form, 'sampleNoQualifiedNumber', maxNoQualified);
|
|
|
|
|
+ const qualifiedNumber =
|
|
|
|
|
+ (Number(this.form.sampleQuantity) || 0) - maxNoQualified;
|
|
|
|
|
+ if (qualifiedNumber < 0) {
|
|
|
|
|
+ this.$message.warning('样品合格数不能小于0');
|
|
|
|
|
+ this.$set(this.form, 'sampleQualifiedNumber', 0);
|
|
|
} else {
|
|
} else {
|
|
|
- const maxNoQualified = list.reduce(
|
|
|
|
|
- (max, item) =>
|
|
|
|
|
- Math.max(max, Number(item.noQualifiedQuantity) || 0),
|
|
|
|
|
- 0
|
|
|
|
|
- );
|
|
|
|
|
- this.$set(this.form, 'sampleNoQualifiedNumber', maxNoQualified);
|
|
|
|
|
|
|
+ this.$set(this.form, 'sampleQualifiedNumber', qualifiedNumber);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 损耗数逻辑:从下方 lossNumberUnqualified 取最大值,lossNumberUnqualified = 总数量 - lossNumber
|
|
|
|
|
+ if(this.qms_defaultDisposalType) {
|
|
|
|
|
+ const maxLossNumberUnqualified = newVal.reduce((max, item) => {
|
|
|
|
|
+ const val = Number(item.lossNumberUnqualified) || 0;
|
|
|
|
|
+ return val > max ? val : max;
|
|
|
|
|
+ }, 0);
|
|
|
|
|
+ this.$set(this.form, 'lossNumberUnqualified', maxLossNumberUnqualified);
|
|
|
|
|
+ const lossUnqualified =
|
|
|
|
|
+ (Number(this.form.sampleQuantity) || 0) - maxLossNumberUnqualified;
|
|
|
|
|
+ if (lossUnqualified < 0) {
|
|
|
|
|
+ this.$set(this.form, 'lossNumber', lossUnqualified || 0);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$set(this.form, 'lossNumber', lossUnqualified);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const lossNumberUnqualified = Number(this.form.lossNumberUnqualified) || 0;
|
|
|
|
|
+ const sampleNoQualifiedNumber = Number(this.form.sampleNoQualifiedNumber) || 0;
|
|
|
|
|
+ if(lossNumberUnqualified > sampleNoQualifiedNumber) {
|
|
|
|
|
+ this.$set(this.form, 'sampleNoQualifiedNumber', lossNumberUnqualified);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- const total = Number(this.form.sampleQuantity) || 0;
|
|
|
|
|
- this.$set(
|
|
|
|
|
- this.form,
|
|
|
|
|
- 'sampleQualifiedNumber',
|
|
|
|
|
- Math.max(total - (Number(this.form.sampleNoQualifiedNumber) || 0), 0)
|
|
|
|
|
- );
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
@@ -844,6 +871,22 @@
|
|
|
this.$set(this.tableData, index, data);
|
|
this.$set(this.tableData, index, data);
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
|
|
+ //当 qms_defaultDisposalType 为 true 时,损耗数自动同步合格/不合格数
|
|
|
|
|
+ syncLossNumber(row, index) {
|
|
|
|
|
+ if (!this.qms_defaultDisposalType) return;
|
|
|
|
|
+ this.$set(
|
|
|
|
|
+ this.tableData[index],
|
|
|
|
|
+ 'lossNumber',
|
|
|
|
|
+ Number(row.qualifiedQuantity) || 0
|
|
|
|
|
+ );
|
|
|
|
|
+ this.$set(
|
|
|
|
|
+ this.tableData[index],
|
|
|
|
|
+ 'lossNumberUnqualified',
|
|
|
|
|
+ Number(row.noQualifiedQuantity) || 0
|
|
|
|
|
+ );
|
|
|
|
|
+ this.initData();
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
async open({ workData, row, list }, type, pageName) {
|
|
async open({ workData, row, list }, type, pageName) {
|
|
|
this.tableData = [];
|
|
this.tableData = [];
|
|
|
console.log(workData, row, list, 'workDataworkData');
|
|
console.log(workData, row, list, 'workDataworkData');
|
|
@@ -894,6 +937,13 @@
|
|
|
this.tableData = JSON.parse(JSON.stringify(list));
|
|
this.tableData = JSON.parse(JSON.stringify(list));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ //当 qms_defaultDisposalType 为 true 时,初始化时同步损耗数
|
|
|
|
|
+ if (this.qms_defaultDisposalType) {
|
|
|
|
|
+ this.tableData.forEach((item, index) => {
|
|
|
|
|
+ this.syncLossNumber(item, index);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
this.visible = true;
|
|
this.visible = true;
|
|
|
},
|
|
},
|
|
|
formSampleQuantityChange() {
|
|
formSampleQuantityChange() {
|
|
@@ -948,6 +998,26 @@
|
|
|
this.$set(this.tableData[index], 'qualifiedQuantity', 0);
|
|
this.$set(this.tableData[index], 'qualifiedQuantity', 0);
|
|
|
this.$set(this.tableData[index], 'noQualifiedQuantity', qualified);
|
|
this.$set(this.tableData[index], 'noQualifiedQuantity', qualified);
|
|
|
}
|
|
}
|
|
|
|
|
+ //当 qms_defaultDisposalType 为 true 时,损耗数自动同步合格/不合格数
|
|
|
|
|
+ this.syncLossNumber(row, index);
|
|
|
|
|
+ },
|
|
|
|
|
+ formSampleNoQualifiedNumberChange() {
|
|
|
|
|
+ if (+this.form.sampleNoQualifiedNumber < 0) {
|
|
|
|
|
+ this.form.sampleNoQualifiedNumber = 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const sampleNoQualifiedNumber = Number(this.form.sampleNoQualifiedNumber) || 0;
|
|
|
|
|
+ const lossNumberUnqualified = Number(this.form.lossNumberUnqualified) || 0;
|
|
|
|
|
+ if(lossNumberUnqualified && sampleNoQualifiedNumber && sampleNoQualifiedNumber < lossNumberUnqualified) {
|
|
|
|
|
+ this.$message.error("样品不合格数不能小于损耗数(不合格数)")
|
|
|
|
|
+ this.$set(this.form, 'sampleNoQualifiedNumber', lossNumberUnqualified);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (+this.form.sampleNoQualifiedNumber > this.form.sampleQuantity) {
|
|
|
|
|
+ this.form.sampleNoQualifiedNumber = this.form.sampleQuantity;
|
|
|
|
|
+ }
|
|
|
|
|
+ this.form.sampleQualifiedNumber =
|
|
|
|
|
+ this.form.sampleQuantity - this.form.sampleNoQualifiedNumber;
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
handleClose() {
|
|
handleClose() {
|
|
@@ -1004,6 +1074,9 @@
|
|
|
if (type == 'noQualifiedQuantity' && item[type] > 0) {
|
|
if (type == 'noQualifiedQuantity' && item[type] > 0) {
|
|
|
this.$set(this.tableData[index], 'qualityResults', 2);
|
|
this.$set(this.tableData[index], 'qualityResults', 2);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ //当 qms_defaultDisposalType 为 true 时,损耗数自动同步合格/不合格数
|
|
|
|
|
+ this.syncLossNumber(item, index);
|
|
|
}
|
|
}
|
|
|
//损耗数
|
|
//损耗数
|
|
|
if (type == 'lossNumber' || type == 'lossNumberUnqualified') {
|
|
if (type == 'lossNumber' || type == 'lossNumberUnqualified') {
|