|
|
@@ -24,10 +24,15 @@
|
|
|
:disabled="btnType == 'detail'"
|
|
|
></DictSelection>
|
|
|
</el-form-item>
|
|
|
- </el-col> -->
|
|
|
+ </el-col>-->
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="产品名称:" prop="productName">
|
|
|
- <el-input v-model="form.productName" @click.native="addProduct" readonly placeholder="请选择" />
|
|
|
+ <el-input
|
|
|
+ v-model="form.productName"
|
|
|
+ @click.native="addProduct"
|
|
|
+ readonly
|
|
|
+ placeholder="请选择"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
@@ -65,29 +70,54 @@
|
|
|
</el-row>
|
|
|
<div style="text-align: right;margin-bottom: 22px;">
|
|
|
<div @click="toggleExpand">
|
|
|
- <div v-if="isExpanded"><i class="el-icon-arrow-up"></i>收起</div>
|
|
|
- <div v-if="!isExpanded"><i class="el-icon-arrow-down"></i>展开更多</div>
|
|
|
+ <div v-if="isExpanded">
|
|
|
+ <i class="el-icon-arrow-up"></i>收起
|
|
|
+ </div>
|
|
|
+ <div v-if="!isExpanded">
|
|
|
+ <i class="el-icon-arrow-down"></i>展开更多
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-if="isExpanded">
|
|
|
<el-row>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="质检部门" prop="groupId">
|
|
|
- <deptSelect :disabled="btnType == 'detail'" v-model="form.groupId" @changeGroup="searchDeptNodeClick" />
|
|
|
+ <deptSelect
|
|
|
+ :disabled="btnType == 'detail'"
|
|
|
+ v-model="form.groupId"
|
|
|
+ @changeGroup="searchDeptNodeClick"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="质检人" prop="qualityId">
|
|
|
- <el-select :disabled="btnType == 'detail'" v-model="form.qualityId" @change="changeExecutor" size="small"
|
|
|
- style="width: 100%" filterable>
|
|
|
- <el-option v-for="item in executorList" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
|
|
+ <el-select
|
|
|
+ :disabled="btnType == 'detail'"
|
|
|
+ v-model="form.qualityId"
|
|
|
+ @change="changeExecutor"
|
|
|
+ size="small"
|
|
|
+ style="width: 100%"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in executorList"
|
|
|
+ :key="item.id"
|
|
|
+ :value="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="质检时间:" prop="qualityTime">
|
|
|
- <el-date-picker class="w100" v-model="form.qualityTime" type="date" value-format="yyyy-MM-dd"
|
|
|
- :disabled="btnType == 'detail'" placeholder="请选择"></el-date-picker>
|
|
|
+ <el-date-picker
|
|
|
+ class="w100"
|
|
|
+ v-model="form.qualityTime"
|
|
|
+ type="date"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ :disabled="btnType == 'detail'"
|
|
|
+ placeholder="请选择"
|
|
|
+ ></el-date-picker>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
@@ -99,12 +129,26 @@
|
|
|
<el-row>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="合格数:" prop="qualifiedNumber">
|
|
|
- <el-input v-model="form.qualifiedNumber" placeholder="请输入"></el-input>
|
|
|
+ <el-input
|
|
|
+ type="number"
|
|
|
+ :min="0"
|
|
|
+ @input="limitation('qualifiedNumber')"
|
|
|
+ @blur="quantityCalculation"
|
|
|
+ v-model="form.qualifiedNumber"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="不合格数:" prop="noQualifiedNumber">
|
|
|
- <el-input v-model="form.noQualifiedNumber" placeholder="请输入"></el-input>
|
|
|
+ <el-input
|
|
|
+ type="number"
|
|
|
+ :min="0"
|
|
|
+ @input="limitation('noQualifiedNumber')"
|
|
|
+ @blur="quantityCalculation"
|
|
|
+ v-model="form.noQualifiedNumber"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
@@ -127,21 +171,36 @@
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="检验标准" prop="inspectionStandards">
|
|
|
<!-- 计量 计重 -->
|
|
|
- <el-select style="width: 100%" v-model="form.inspectionStandards" placeholder="请选择"
|
|
|
- :disabled="parseInt(qualityType1) == 1 || parseInt(qualityType1) == 3">
|
|
|
- <el-option v-for="item in inspectionStandardsList" :label="item.label" :value="item.value"
|
|
|
- :key="item.value">
|
|
|
- </el-option>
|
|
|
+ <el-select
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="form.inspectionStandards"
|
|
|
+ placeholder="请选择"
|
|
|
+ :disabled="parseInt(qualityType1) == 1 || parseInt(qualityType1) == 3"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in inspectionStandardsList"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ :key="item.value"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="检验方式:" prop="qualityMode">
|
|
|
<!-- <DictSelection dictName="取样类型" v-model="form.qualityMode" :disabled="qualityType == 1"></DictSelection> -->
|
|
|
- <el-select style="width: 100%" v-model="form.qualityMode" placeholder="请选择"
|
|
|
- :disabled="parseInt(qualityType1) == 1 || parseInt(qualityType1) == 3">
|
|
|
- <el-option v-for="item in qualityModeList" :label="item.label" :value="item.value" :key="item.value">
|
|
|
- </el-option>
|
|
|
+ <el-select
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="form.qualityMode"
|
|
|
+ placeholder="请选择"
|
|
|
+ :disabled="parseInt(qualityType1) == 1 || parseInt(qualityType1) == 3"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in qualityModeList"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ :key="item.value"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -160,7 +219,7 @@
|
|
|
</DictSelection>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- </el-col> -->
|
|
|
+ </el-col>-->
|
|
|
<!-- <el-col :span="6" v-if="btnType != 'detail'">
|
|
|
<el-form-item label="取样数量:" prop="sampleNumber" :rules="{
|
|
|
required: form.qualityMode == 2 ? true : false,
|
|
|
@@ -176,41 +235,88 @@
|
|
|
</DictSelection>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- </el-col> -->
|
|
|
+ </el-col>-->
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="合格证号:" prop="certificateNumber">
|
|
|
- <el-input v-model="form.certificateNumber" :disabled="btnType == 'detail'" placeholder="请输入"></el-input>
|
|
|
+ <el-input
|
|
|
+ v-model="form.certificateNumber"
|
|
|
+ :disabled="btnType == 'detail'"
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
<el-col :span="6" v-if="parseInt(qualityType1) == 2">
|
|
|
<el-form-item label="工艺路线:">
|
|
|
- <el-input @click.native="openVersion" clearable v-model="form.produceRoutingName"
|
|
|
- :disabled="btnType == 'detail'" placeholder="请选择" />
|
|
|
+ <el-input
|
|
|
+ @click.native="openVersion"
|
|
|
+ clearable
|
|
|
+ v-model="form.produceRoutingName"
|
|
|
+ :disabled="btnType == 'detail'"
|
|
|
+ placeholder="请选择"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6" v-if="parseInt(qualityType1) == 2">
|
|
|
<el-form-item label="工序:">
|
|
|
- <el-select style="width: 100%" v-model="form.produceTaskId" placeholder="请选择" clearable
|
|
|
- @change="produceTaskChange" :disabled="btnType == 'detail'">
|
|
|
- <el-option v-for="item in produceTaskList" :key="item.id" :label="item.name" :value="item.id">
|
|
|
- </el-option>
|
|
|
+ <el-select
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="form.produceTaskId"
|
|
|
+ placeholder="请选择"
|
|
|
+ clearable
|
|
|
+ @change="produceTaskChange"
|
|
|
+ :disabled="btnType == 'detail'"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in produceTaskList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <!-- <el-col :span="6">
|
|
|
+ <el-form-item label="质检类型:">
|
|
|
+ <el-input
|
|
|
+ v-model="form.certificateNumber"
|
|
|
+ disabled
|
|
|
+ placeholder="请输入"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col> -->
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="质检类型:" prop="qualityType">
|
|
|
+ <DictSelection
|
|
|
+ dictName="质检计划类型"
|
|
|
+ v-model="form.qualityType"
|
|
|
+ disabled
|
|
|
+ ></DictSelection>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="质检结果:" prop="qualityResults" v-if="form.qualityMode == 2">
|
|
|
- <el-select v-model="form.qualityResults" placeholder="请选择" style="width: 100%"
|
|
|
- :disabled="btnType == 'issued'" clearable>
|
|
|
- <el-option label="合格" :value=1 />
|
|
|
- <el-option label="不合格" :value=2 />
|
|
|
+ <!-- <el-form-item label="质检结果:" prop="qualityResults" v-if="form.qualityMode == 2"> -->
|
|
|
+ <el-form-item label="质检结果:" prop="qualityResults">
|
|
|
+ <el-select
|
|
|
+ v-model="form.qualityResults"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ :disabled="btnType == 'issued'"
|
|
|
+ >
|
|
|
+ <el-option label="合格" :value="1" />
|
|
|
+ <el-option label="不合格" :value="2" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
<el-form-item label="备注:" prop="remark">
|
|
|
- <el-input type="textarea" v-model="form.remark" placeholder="请输入" :disabled="btnType == 'issued'" />
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ v-model="form.remark"
|
|
|
+ placeholder="请输入"
|
|
|
+ :disabled="btnType == 'issued'"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
@@ -234,7 +340,7 @@ import EquipmentDialog from './EquipmentDialog.vue';
|
|
|
import { getUserPage } from '@/api/system/organization';
|
|
|
|
|
|
import { getProduceTaskList } from '@/api/aps';
|
|
|
-import { getByCode } from "@/api/system/dictionary-data";
|
|
|
+import { getByCode } from '@/api/system/dictionary-data';
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
@@ -246,7 +352,7 @@ export default {
|
|
|
props: {
|
|
|
form: {
|
|
|
type: Object,
|
|
|
- default: () => { }
|
|
|
+ default: () => {}
|
|
|
},
|
|
|
btnType: {
|
|
|
type: String,
|
|
|
@@ -259,7 +365,7 @@ export default {
|
|
|
sampleList: {
|
|
|
type: Array,
|
|
|
default: () => []
|
|
|
- },
|
|
|
+ }
|
|
|
},
|
|
|
watch: {
|
|
|
'form.qualityMode': {
|
|
|
@@ -281,9 +387,22 @@ export default {
|
|
|
console.log('清空样品清单');
|
|
|
// this.$emit('table2');
|
|
|
}
|
|
|
- },
|
|
|
- immediate: false
|
|
|
+ },
|
|
|
+ immediate: false
|
|
|
},
|
|
|
+ // 新增 *** 监听合格率更改 质检结果
|
|
|
+ 'form.qualificationRate': {
|
|
|
+ handler(newVal) {
|
|
|
+ if (newVal == '100.00%' || newVal == '100%' || newVal == '100.0%') {
|
|
|
+ this.$set(this.form, 'qualityResults', 1);
|
|
|
+ } else {
|
|
|
+ this.$set(this.form, 'qualityResults', 2);
|
|
|
+ // this.$emit('table2');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ immediate: false,
|
|
|
+ deep: true
|
|
|
+ }
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
@@ -310,13 +429,15 @@ export default {
|
|
|
],
|
|
|
qualityResults: [
|
|
|
{ required: true, message: '请选择质检结果', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ inspectionStandards: [
|
|
|
+ { required: true, message: '请选择检验标准', trigger: 'change' }
|
|
|
]
|
|
|
},
|
|
|
produceTaskList: [],
|
|
|
inspectionStandardsList: [],
|
|
|
qualityModeList: [],
|
|
|
isExpanded: false
|
|
|
-
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
@@ -324,6 +445,27 @@ export default {
|
|
|
this.getQualityModeList('quality_method_code');
|
|
|
},
|
|
|
methods: {
|
|
|
+ // *** 只能输入大于0的数字
|
|
|
+ limitation(val) {
|
|
|
+ this.form[val] =
|
|
|
+ this.form[val].replace(/[^\d]/g, '').replace(/^0+/, '') || '0';
|
|
|
+ },
|
|
|
+ // *** 计算合格数 不合格数
|
|
|
+ quantityCalculation() {
|
|
|
+ let qualifiedNumber = this.form.qualifiedNumber - 0;
|
|
|
+ let noQualifiedNumber = this.form.noQualifiedNumber - 0;
|
|
|
+ let total = qualifiedNumber + noQualifiedNumber;
|
|
|
+ let passRate = ((qualifiedNumber / total) * 100).toFixed(2);
|
|
|
+ let failureRate = ((noQualifiedNumber / total) * 100).toFixed(2);
|
|
|
+ this.form.qualificationRate = passRate + '%';
|
|
|
+ this.form.noQualificationRate = failureRate + '%';
|
|
|
+ if (total != this.form.total) {
|
|
|
+ this.$message.warning('合格数加上不合格数需要等于总数量');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+
|
|
|
toggleExpand() {
|
|
|
this.isExpanded = !this.isExpanded;
|
|
|
},
|
|
|
@@ -419,7 +561,7 @@ export default {
|
|
|
}
|
|
|
const res = await getUserPage(data);
|
|
|
this.executorList = res.list;
|
|
|
- } catch (error) { }
|
|
|
+ } catch (error) {}
|
|
|
},
|
|
|
// 人员选择
|
|
|
changeExecutor(val) {
|
|
|
@@ -443,11 +585,16 @@ export default {
|
|
|
},
|
|
|
|
|
|
//更新合格率
|
|
|
- updateQualificationRate(qualifiedNumber,noQualifiedNumber,qualificationRate, noQualificationRate) {
|
|
|
- this.form.qualifiedNumber = qualifiedNumber;
|
|
|
- this.form.noQualifiedNumber = noQualifiedNumber;
|
|
|
- this.form.qualificationRate = qualificationRate + '%';
|
|
|
- this.form.noQualificationRate = noQualificationRate + '%';
|
|
|
+ updateQualificationRate(
|
|
|
+ qualifiedNumber,
|
|
|
+ noQualifiedNumber,
|
|
|
+ qualificationRate,
|
|
|
+ noQualificationRate
|
|
|
+ ) {
|
|
|
+ this.form.qualifiedNumber = qualifiedNumber;
|
|
|
+ this.form.noQualifiedNumber = noQualifiedNumber;
|
|
|
+ this.form.qualificationRate = qualificationRate + '%';
|
|
|
+ this.form.noQualificationRate = noQualificationRate + '%';
|
|
|
}
|
|
|
}
|
|
|
};
|