|
|
@@ -63,9 +63,10 @@
|
|
|
<el-input
|
|
|
v-model="row.sampleNoQualifiedNumber"
|
|
|
@input="formSampleNoQualifiedNumberChange"
|
|
|
- placeholder="请输入"
|
|
|
+ @blur="formSampleNoQualifiedNumberChange"
|
|
|
+ placeholder="自动取值(质检项中最大不合格数)"
|
|
|
type="number"
|
|
|
- :disabled="type == 'detail'"
|
|
|
+ :disabled="type == 'detail' || qms_defaultDisposalType"
|
|
|
>
|
|
|
<template slot="append">{{ form.measureUnit }}</template>
|
|
|
</el-input>
|
|
|
@@ -164,7 +165,7 @@
|
|
|
<el-input
|
|
|
v-model="row.lossNumber"
|
|
|
placeholder="请输入"
|
|
|
- :disabled="type == 'detail'"
|
|
|
+ :disabled="type == 'detail' || qms_defaultDisposalType"
|
|
|
type="number"
|
|
|
@input="inputValue('lossNumber', row, $index)"
|
|
|
@click.native="curretNum = row.lossNumber"
|
|
|
@@ -176,7 +177,7 @@
|
|
|
<el-input
|
|
|
v-model="row.lossNumberUnqualified"
|
|
|
placeholder="请输入"
|
|
|
- :disabled="type == 'detail'"
|
|
|
+ :disabled="type == 'detail' || qms_defaultDisposalType"
|
|
|
type="number"
|
|
|
@input="inputValue('lossNumberUnqualified', row, $index)"
|
|
|
@click.native="curretNum = row.lossNumberUnqualified"
|
|
|
@@ -214,6 +215,7 @@
|
|
|
placeholder="请选择"
|
|
|
style="width: 100%"
|
|
|
:disabled="type == 'detail'"
|
|
|
+ @change="handleQualityResultChange(row, $index)"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in qualityResultsList"
|
|
|
@@ -421,14 +423,6 @@
|
|
|
label: '样品数',
|
|
|
showOverflowTooltip: true
|
|
|
},
|
|
|
- {
|
|
|
- minWidth: 180,
|
|
|
- prop: 'sampleNoQualifiedNumber',
|
|
|
- slot: 'sampleNoQualifiedNumber',
|
|
|
- align: 'center',
|
|
|
- label: '样品不合格数',
|
|
|
- showOverflowTooltip: true
|
|
|
- },
|
|
|
{
|
|
|
minWidth: 140,
|
|
|
prop: 'sampleQualifiedNumber',
|
|
|
@@ -445,6 +439,15 @@
|
|
|
label: '样品合格数',
|
|
|
showOverflowTooltip: true
|
|
|
},
|
|
|
+ {
|
|
|
+ minWidth: 180,
|
|
|
+ prop: 'sampleNoQualifiedNumber',
|
|
|
+ headerSlot: 'isRequired',
|
|
|
+ slot: 'sampleNoQualifiedNumber',
|
|
|
+ align: 'center',
|
|
|
+ label: '样品不合格数',
|
|
|
+ showOverflowTooltip: true
|
|
|
+ },
|
|
|
{
|
|
|
minWidth: 140,
|
|
|
prop: 'lossNumber',
|
|
|
@@ -748,7 +751,8 @@
|
|
|
label: '让步接收'
|
|
|
}
|
|
|
],
|
|
|
- qms_qualityResultContent: 1
|
|
|
+ qms_qualityResultContent: 1,
|
|
|
+ qms_defaultDisposalType: false
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -756,8 +760,60 @@
|
|
|
return this.form.sampleQuantity;
|
|
|
}
|
|
|
},
|
|
|
+ watch: {
|
|
|
+ // 任意质检项的不合格数变更时,自动同步最大不合格数到样品不合格数
|
|
|
+ tableData: {
|
|
|
+ deep: true,
|
|
|
+ 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 {
|
|
|
+ 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 lossNumber = Number(this.form.lossNumber) || 0;
|
|
|
+ const sampleQuantity = Number(this.form.sampleQuantity) || 0;
|
|
|
+ const maxLossNumber = sampleQuantity - maxLossNumberUnqualified;
|
|
|
+ if(lossNumber > maxLossNumber) {
|
|
|
+ this.$set(this.form, 'lossNumber', maxLossNumber);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const lossNumberUnqualified = Number(this.form.lossNumberUnqualified) || 0;
|
|
|
+ const sampleNoQualifiedNumber = Number(this.form.sampleNoQualifiedNumber) || 0;
|
|
|
+ if(lossNumberUnqualified > sampleNoQualifiedNumber) {
|
|
|
+ this.$set(this.form, 'sampleNoQualifiedNumber', lossNumberUnqualified);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
created() {
|
|
|
+ parameterGetByCode({
|
|
|
+ code: 'default_disposal_type'
|
|
|
+ }).then((res) => {
|
|
|
+ this.qms_defaultDisposalType = res?.value == 1 ? true : false;
|
|
|
+ });
|
|
|
this.requestDict('质检计划类型');
|
|
|
this.requestDict('取样类型');
|
|
|
this.requestDict('质检标准类型');
|
|
|
@@ -814,6 +870,22 @@
|
|
|
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) {
|
|
|
this.tableData = [];
|
|
|
console.log(workData, row, list, 'workDataworkData');
|
|
|
@@ -864,6 +936,13 @@
|
|
|
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;
|
|
|
},
|
|
|
formSampleQuantityChange() {
|
|
|
@@ -887,13 +966,52 @@
|
|
|
]);
|
|
|
});
|
|
|
}
|
|
|
- this.form.sampleQualifiedNumber = this.form.sampleQuantity;
|
|
|
- this.form.sampleNoQualifiedNumber = 0;
|
|
|
+ // 样品数变化后,重新计算合格数/不合格数
|
|
|
+ this.form.sampleNoQualifiedNumber = this.tableData.length
|
|
|
+ ? this.tableData.reduce(
|
|
|
+ (max, item) =>
|
|
|
+ Math.max(max, Number(item.noQualifiedQuantity) || 0),
|
|
|
+ 0
|
|
|
+ )
|
|
|
+ : 0;
|
|
|
+ this.form.sampleQualifiedNumber =
|
|
|
+ this.form.sampleQuantity - this.form.sampleNoQualifiedNumber;
|
|
|
+ },
|
|
|
+
|
|
|
+ handleOneKeyQualified() {
|
|
|
+ this.tableData.forEach((item, index) => {
|
|
|
+ this.$set(this.tableData[index], 'qualityResults', 1);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 切换质检结果(合格/不合格)时,若合格数与不合格数其一为 0,则互换两个数值
|
|
|
+ handleQualityResultChange(row, index) {
|
|
|
+ const qualified = Number(row.qualifiedQuantity) || 0;
|
|
|
+ const noQualified = Number(row.noQualifiedQuantity) || 0;
|
|
|
+ // 切换为合格:noQualifiedQuantity -> qualifiedQuantity
|
|
|
+ if (row.qualityResults == 1 && qualified === 0 && noQualified > 0) {
|
|
|
+ this.$set(this.tableData[index], 'qualifiedQuantity', noQualified);
|
|
|
+ this.$set(this.tableData[index], 'noQualifiedQuantity', 0);
|
|
|
+ }
|
|
|
+ // 切换为不合格:qualifiedQuantity -> noQualifiedQuantity
|
|
|
+ if (row.qualityResults == 2 && noQualified === 0 && qualified > 0) {
|
|
|
+ this.$set(this.tableData[index], 'qualifiedQuantity', 0);
|
|
|
+ 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;
|
|
|
}
|
|
|
@@ -901,12 +1019,6 @@
|
|
|
this.form.sampleQuantity - this.form.sampleNoQualifiedNumber;
|
|
|
},
|
|
|
|
|
|
- handleOneKeyQualified() {
|
|
|
- this.tableData.forEach((item, index) => {
|
|
|
- this.$set(this.tableData[index], 'qualityResults', 1);
|
|
|
- });
|
|
|
- },
|
|
|
-
|
|
|
handleClose() {
|
|
|
this.visible = false;
|
|
|
|
|
|
@@ -961,6 +1073,9 @@
|
|
|
if (type == 'noQualifiedQuantity' && item[type] > 0) {
|
|
|
this.$set(this.tableData[index], 'qualityResults', 2);
|
|
|
}
|
|
|
+
|
|
|
+ //当 qms_defaultDisposalType 为 true 时,损耗数自动同步合格/不合格数
|
|
|
+ this.syncLossNumber(item, index);
|
|
|
}
|
|
|
//损耗数
|
|
|
if (type == 'lossNumber' || type == 'lossNumberUnqualified') {
|