You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
9.2 KiB
275 lines
9.2 KiB
<template> |
|
<basic-container> |
|
<el-form ref="form" :model="formData" :rules="rules" inline label-width="80px"> |
|
<el-row :gutter="24"> |
|
<el-col :span="12"> |
|
<el-form-item label="流程卡号" prop="cardNo"> |
|
<el-input |
|
ref="codeFocus" |
|
v-model="formData.cardNo" |
|
placeholder="请扫描流程卡号" |
|
@keyup.enter.native="codeKeyUp" |
|
/> |
|
</el-form-item> |
|
</el-col> |
|
<el-col :span="24"> |
|
<el-descriptions |
|
:column="3" |
|
label-width="100px" |
|
:content-style="{ 'min-width': '120px' }" |
|
class="margin-top" |
|
border |
|
> |
|
<el-descriptions-item> |
|
<template #label> 流程卡号 </template> |
|
{{ tableObj.cardNo }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 车间订单号 </template> |
|
{{ tableObj.woCode }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 批次 </template> |
|
{{ tableObj.batchNo }} |
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item> |
|
<template #label> 零件号 </template> |
|
{{ tableObj.partCode }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 零件名称 </template> |
|
{{ tableObj.partName }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 上序号 </template> |
|
{{ tableObj.frontOrders }} |
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item> |
|
<template #label> 上序名称 </template> |
|
{{ tableObj.frontPpsName }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 工序号 </template> |
|
{{ tableObj.orders }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 工序名称 </template> |
|
{{ tableObj.ppsName }} |
|
</el-descriptions-item> |
|
|
|
<el-descriptions-item> |
|
<template #label> 加工班组 </template> |
|
{{ tableObj.makeTeam }} |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 检验数量 </template> |
|
<el-input v-model="tableObj.makeQty" placeholder="请输入" type="number" min="0" /> |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 是否合格 </template> |
|
<div> |
|
<el-radio |
|
v-model="fillInObj.checkResult" |
|
:label="1" |
|
@input="checkResulInput($event, fillInObj)" |
|
>合格</el-radio |
|
> |
|
<el-radio |
|
v-model="fillInObj.checkResult" |
|
:label="2" |
|
@input="checkResulInput($event, fillInObj)" |
|
>不合格</el-radio |
|
> |
|
<el-radio |
|
v-model="fillInObj.checkResult" |
|
:label="-1" |
|
@input="checkResulInput($event, fillInObj)" |
|
>NA</el-radio |
|
> |
|
</div> |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 合格数量 </template> |
|
<el-input |
|
v-model="fillInObj.qualifiedQty" |
|
placeholder="请输入" |
|
type="number" |
|
min="0" |
|
/> |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 不合格数量 </template> |
|
<el-input |
|
v-model="fillInObj.unqualifiedQty" |
|
placeholder="请输入" |
|
type="number" |
|
min="0" |
|
@change="unqualifiedQtyChange" |
|
/> |
|
</el-descriptions-item> |
|
<!-- 比例 --> |
|
<el-descriptions-item> |
|
<template #label> 比例(%) </template> |
|
<el-input v-model="fillInObj.scale" placeholder="请输入" type="number" /> |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 不良原因 </template> |
|
<!-- <poor-reason v-model="fillInObj.poorReason" placeholder="请选择" @change="prChange" /> --> |
|
<el-select v-model="fillInObj.poorReason" placeholder="请选择" @change="prChange"> |
|
<el-option |
|
v-for="item in poorReasonList" |
|
:key="item.dictValue" |
|
:label="item.dictValue" |
|
:value="item.dictValue" |
|
></el-option> |
|
</el-select> |
|
</el-descriptions-item> |
|
<el-descriptions-item> |
|
<template #label> 不良描述 </template> |
|
<el-input |
|
v-model="fillInObj.poorMemo" |
|
:autosize="{ minRows: 2, maxRows: 5 }" |
|
type="textarea" |
|
/> |
|
</el-descriptions-item> |
|
</el-descriptions> |
|
</el-col> |
|
</el-row> |
|
</el-form> |
|
<span style="text-align: center; display: block; margin: 20px 0px 10px 0px"> |
|
<el-button slot="right" type="primary" :disabled="isDisabled" @click="onSubmit" |
|
>保存</el-button |
|
> |
|
</span> |
|
</basic-container> |
|
</template> |
|
<script> |
|
import { loadProTest, saveProCheck } from '@/api/workCheck/index.js'; |
|
// defective_cause |
|
import { getDictionary } from '@/api/system/dict'; |
|
export default { |
|
data() { |
|
return { |
|
formData: { |
|
cardNo: null, |
|
}, |
|
rules: { |
|
cardNo: [{ required: true, message: '请输入', trigger: 'blur' }], |
|
}, |
|
tableObj: { |
|
makeQty: null, |
|
}, |
|
fillInObj: { |
|
checkResult: 1, |
|
qualifiedQty: null, |
|
unqualifiedQty: null, |
|
scale: 0, |
|
poorReason: '', |
|
poorMemo: '', |
|
}, |
|
isDisabled: false, |
|
poorReasonList: [], //不良原因 |
|
}; |
|
}, |
|
mounted(){ |
|
this.getDictionary() |
|
}, |
|
methods: { |
|
getDictionary(){ |
|
getDictionary({code:'defective_cause'}).then(res => { |
|
this.poorReasonList = res.data.data; |
|
}); |
|
}, |
|
unqualifiedQtyChange(v) { |
|
this.fillInObj.unqualifiedQty = v; |
|
// this.$set(this.qcReviewSheet, 'unqualifiedQty', v); |
|
const makeQty = this.tableObj.makeQty; |
|
if (v > makeQty) { |
|
this.$message.error('不合格数不能大于' + makeQty); |
|
this.$set(this.fillInObj, 'unqualifiedQty', null); |
|
this.$set(this.fillInObj, 'scale', null); |
|
} else { |
|
this.$set(this.fillInObj, 'scale', Math.round((v / makeQty) * 100)); |
|
} |
|
}, |
|
checkResulInput(v, item) { |
|
if (v === 2) { |
|
this.fillInObj.unqualifiedQty = this.tableObj.makeQty; |
|
this.fillInObj.qualifiedQty = 0; |
|
} else { |
|
this.fillInObj.qualifiedQty = this.tableObj.makeQty; |
|
this.fillInObj.unqualifiedQty = 0; |
|
} |
|
}, |
|
prChange(id, item) { |
|
// this.fillInObj.poorReason = ''; |
|
// if (item) { |
|
// this.fillInObj.poorReason = item.name; |
|
// } else { |
|
// this.fillInObj.poorReason = ''; |
|
// } |
|
}, |
|
codeKeyUp() { |
|
if (this.formData.cardNo) { |
|
loadProTest({ cardNo: this.formData.cardNo }).then(res => { |
|
this.tableObj = res.data.data; |
|
this.fillInObj = { |
|
checkResult: 1, |
|
qualifiedQty: this.tableObj.makeQty, |
|
unqualifiedQty: 0, |
|
scale: 0, |
|
poorReason: '', |
|
poorMemo: '', |
|
}; |
|
}); |
|
} |
|
}, |
|
onSubmit() { |
|
this.isDisabled = true; |
|
this.$refs.form.validate(valid => { |
|
if (valid) { |
|
const num = Number(this.fillInObj.unqualifiedQty) + Number(this.fillInObj.qualifiedQty); |
|
if (num > this.tableObj.makeQty) { |
|
this.$message.warning('合格与不合格数量之和不能大于检验数量!!!'); |
|
return; |
|
} |
|
if (this.fillInObj.checkResult === 2) { |
|
if (this.fillInObj.poorReason === '' || this.fillInObj.poorMemo === '') { |
|
this.$message.warning('请填写原因或描述!!!'); |
|
return; |
|
} |
|
} |
|
if (Number(this.fillInObj.scale) > 100 || Number(this.fillInObj.scale) < 0) { |
|
this.$message.warning('比例所填值的范围在0~100!!!'); |
|
return; |
|
} |
|
this.fillInObj.makeQty = this.tableObj.makeQty; |
|
this.fillInObj.wpId = this.tableObj.wpId; |
|
saveProCheck(this.fillInObj) |
|
.then(res => { |
|
this.$message.success('检验成功!!!'); |
|
this.tableObj = { |
|
makeQty: null, |
|
}; |
|
this.fillInObj = { |
|
checkResult: 1, |
|
qualifiedQty: null, |
|
unqualifiedQty: null, |
|
scale: 0, |
|
poorReason: '', |
|
poorMemo: '', |
|
}; |
|
this.formData.cardNo = ''; |
|
this.isDisabled = false; |
|
}) |
|
.catch(err => {}); |
|
} |
|
}); |
|
}, |
|
}, |
|
}; |
|
</script> |
|
<style lang="scss" scoped> |
|
</style> |