|
|
|
|
<template>
|
|
|
|
|
<el-dialog title="选择问题零件" append-to-body :modelValue="showDialog" width="90%" @close="closeDialog" @opened="opened">
|
|
|
|
|
<el-row >
|
|
|
|
|
<el-col :span="10">
|
|
|
|
|
<el-form :inline="true" v-model="searchForm" v-show="rsId === null">
|
|
|
|
|
<el-form-item label="生产订单号">
|
|
|
|
|
<el-input style="width: 150px;" placeholder="请输入生产订单号" v-model="searchForm.woCode"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="流程卡号">
|
|
|
|
|
<el-input style="width: 150px;" placeholder="请输入流程卡号" v-model="searchForm.cardNo"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button type="primary" icon="el-icon-search" @click="openZlSystem">搜 索 </el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="14">
|
|
|
|
|
<div class="right_box">
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<span>比例:</span>
|
|
|
|
|
<el-input v-model="qcReviewSheet.scale" @input="handleScale"></el-input>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<span>不合格数量:</span>
|
|
|
|
|
<el-input v-model="qcReviewSheet.unqualifiedQty" @input="handleUnqual"></el-input>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<span>上级编号:</span>
|
|
|
|
|
<el-input style="width: 150px;" v-model="qcReviewSheet.supCode"></el-input>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<el-checkbox v-model="qcReviewSheet.batchProblem">批次性问题</el-checkbox>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<el-checkbox v-model="qcReviewSheet.typicalProblem">典型问题</el-checkbox>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<el-checkbox v-model="qcReviewSheet.lowError">低级错误</el-checkbox>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="right_item">
|
|
|
|
|
<el-checkbox v-model="qcReviewSheet.qualityProblem" :disabled=qualityProblemAbled>质量问题</el-checkbox>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<div>
|
|
|
|
|
<el-table :data="tableData" style="width: 100%" @row-click="rowClick" :row-class-name="rowClass" @current-change="currentRow">
|
|
|
|
|
<el-table-column type="index" width="50"></el-table-column>
|
|
|
|
|
<el-table-column prop="poorReason" label="简单原因" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<div>
|
|
|
|
|
<el-select v-model="scope.row.poorReason">
|
|
|
|
|
<el-option v-for="item in reasonData" :key="item.bcId" :value="item.bcId" :label="item.code + item.name"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="不良描述" prop="poorMemo" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<div>
|
|
|
|
|
<el-input v-model="scope.row.poorMemo"></el-input>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="车间订单号" prop="prWorkPlan.prWorkOrder.woCode" width="200" align="center"></el-table-column>
|
|
|
|
|
<el-table-column label="发现工序" prop="prWorkPlan.procedureSet.ppsName" width="150" align="center"></el-table-column>
|
|
|
|
|
<el-table-column label="流程卡号" prop="prWorkPlan.prWorkOrder.cardNo" width="200" align="center"></el-table-column>
|
|
|
|
|
<el-table-column label="批次号" prop="prWorkPlan.prWorkOrder.batchNo" width="200" align="center"></el-table-column>
|
|
|
|
|
<el-table-column label="总数量" prop="prWorkPlan.prWorkOrder.makeQty" width="200" align="center"></el-table-column>
|
|
|
|
|
<el-table-column label="物料号" prop="prWorkPlan.prWorkOrder.pjYieldOrder.partCode" width="200" align="center"></el-table-column>
|
|
|
|
|
<el-table-column label="物料名称" prop="prWorkPlan.prWorkOrder.pjYieldOrder.partName" width="200" align="center"></el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<el-pagination
|
|
|
|
|
style="display: flex;justify-content: end;margin-top: 20px;"
|
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
|
@current-change="handleCurrentChange"
|
|
|
|
|
:current-page="page.currentPage"
|
|
|
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
|
|
|
:page-size="page.pageSize"
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
|
|
|
:total="page.total">
|
|
|
|
|
</el-pagination>
|
|
|
|
|
</div>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<div class="btn_box">
|
|
|
|
|
<el-button type="primary" plain @click="insertFaultEvent()">插入一行</el-button>
|
|
|
|
|
<el-button type="danger" plain @click="deleteFaultEvent()">删除选择行</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="table_box">
|
|
|
|
|
<el-table ref="faultTable" height="240" :data="faultList" @selection-change="handleSelectionChange" @select="selectChangeData">
|
|
|
|
|
<el-table-column type="selection" width="55"></el-table-column>
|
|
|
|
|
<el-table-column label="故障类别" prop="faultType.rstId" align="center" width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.faultType.rstId">
|
|
|
|
|
<el-option v-for="item in errorTypeArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="问题大类" prop="questClass.rstId" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.questClass.rstId" :disabled="!scope.row.faultType.rstId">
|
|
|
|
|
<el-option v-for="item in errorBigArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="问题小类" prop="questSubClass.rstId" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.questSubClass.rstId" :disabled="!scope.row.questClass.rstId">
|
|
|
|
|
<el-option v-for="item in errorSmallArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="比例" prop="proportion" align="center" width="80">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.proportion" @input="(value) =>changeProportion(value,scope.$index)"></el-input>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="数量" prop="faultQty" align="center" width="80">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.faultQty" @input="(value) =>changeFaultQty(value,scope.$index)"></el-input>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="备注" prop="memo" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.memo"></el-input>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</div>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<div class="btn_box">
|
|
|
|
|
<el-button type="primary" plain @click="insertDutyEvent()">插入一行</el-button>
|
|
|
|
|
<el-button type="danger" plain @click="deleteDutyEvent()">删除选择行</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="table_box">
|
|
|
|
|
<el-table :data="dutyList" height="240" @selection-change="handleDutyChange" @select="selectChangeDutyData">
|
|
|
|
|
<el-table-column type="selection" width="55px"></el-table-column>
|
|
|
|
|
<el-table-column label="责任零件" prop="dutyPart" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.dutyPart" v-if="trialType == 1"></el-input>
|
|
|
|
|
<el-select v-model="scope.row.dutyPart" v-if="trialType == 2">
|
|
|
|
|
<el-option v-for="item in dutyPartArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="责任批号" prop="dutyBatch" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.dutyBatch">
|
|
|
|
|
<el-option v-for="item in dutyBatchArr" :key="item.value" :value="item.value" :label="item.label"></el-option>
|
|
|
|
|
<!-- <el-option v-for="item in dutyBatchArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option> -->
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="相关零件" prop="relevantPart" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.relevantPart">
|
|
|
|
|
<el-option v-for="item in relevantPartArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="相关批号" prop="relevantBatch" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.relevantBatch">
|
|
|
|
|
<el-option v-for="item in relevantBatchArr" :key="item.rstId" :value="item.rstId" :label="item.rstName"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="数量(件)" prop="dutyQty" align="center" width="80">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.dutyQty"></el-input>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="单位" prop="unit" align="center" width="80">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.unit"></el-input>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="备注" prop="memo">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.memo"></el-input>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</div>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<div class="btn_box">
|
|
|
|
|
<el-button plain @click="closeDialog">关闭</el-button>
|
|
|
|
|
<el-button type="primary" @click="submit(-1)">保存</el-button>
|
|
|
|
|
<el-button plain @click="submit(1)">提交质保</el-button>
|
|
|
|
|
<el-button plain @click="submit(2)">提交工艺</el-button>
|
|
|
|
|
<el-button plain @click="submit(3)">提交设计</el-button>
|
|
|
|
|
<el-button plain @click="submit(4)">提交设计变更</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
props:{
|
|
|
|
|
showDialog: {
|
|
|
|
|
type: Boolean,
|
|
|
|
|
default: false
|
|
|
|
|
},
|
|
|
|
|
rsId: {
|
|
|
|
|
type: Number,
|
|
|
|
|
default: null
|
|
|
|
|
},
|
|
|
|
|
trialType: {
|
|
|
|
|
type: Number,
|
|
|
|
|
default: null
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
data(){
|
|
|
|
|
return{
|
|
|
|
|
searchForm:{},
|
|
|
|
|
qcReviewSheet:{
|
|
|
|
|
scale: 0,
|
|
|
|
|
unqualifiedQty: 0,
|
|
|
|
|
supCode: '',
|
|
|
|
|
batchProblem: false,
|
|
|
|
|
lowError: false,
|
|
|
|
|
qualityProblem: false,
|
|
|
|
|
typicalProblem: false
|
|
|
|
|
}, //顶部右侧数据
|
|
|
|
|
qualityProblemAbled:false,
|
|
|
|
|
tableData:[],
|
|
|
|
|
page:{
|
|
|
|
|
total:0,
|
|
|
|
|
pageSize:10,
|
|
|
|
|
currentPage:1
|
|
|
|
|
},
|
|
|
|
|
faultList:[],
|
|
|
|
|
errorTypeArr:[],
|
|
|
|
|
errorBigArr:[],
|
|
|
|
|
errorSmallArr:[],
|
|
|
|
|
checkFaultList:[],
|
|
|
|
|
dutyList:[],
|
|
|
|
|
dutyPartArr:[], //责任零件选择列表
|
|
|
|
|
dutyBatchArr:[], //责任批号选择列表
|
|
|
|
|
relevantPartArr:[], //相关零件选择列表
|
|
|
|
|
relevantBatchArr:[], //相关批号选择列表
|
|
|
|
|
workCheck:null, //选中的行
|
|
|
|
|
deleteArr:[], //删除的右下角表格数据
|
|
|
|
|
rightData:[], //接口获取的右下角数据
|
|
|
|
|
updateData:[], //修改的右下角表格数据
|
|
|
|
|
deleteFault:[], //删除的左下角数据
|
|
|
|
|
leftData:[], //接口获取的左下角数据
|
|
|
|
|
updateLeftData:[], //修改的左下角表格数据
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mounted(){
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
methods:{
|
|
|
|
|
closeDialog(){
|
|
|
|
|
this.dutyList = []
|
|
|
|
|
this.faultList = []
|
|
|
|
|
this.$emit('closeDialog');
|
|
|
|
|
},
|
|
|
|
|
handleScale(value){
|
|
|
|
|
// 只允许数字和小数点(如果你想限制小数点后的位数,可以更复杂地处理)
|
|
|
|
|
// // 移除非数字字符,只允许数字输入
|
|
|
|
|
console.log("value.replace(/[^\d]/g, '')=====================",value.replace(/[^\d]/g, ''))
|
|
|
|
|
this.qcReviewSheet.scale = value.replace(/[^\d]/g, '') < 0 ? 0 : value.replace(/[^\d]/g, '') > 100 ? 100 : value.replace(/[^\d]/g, '');
|
|
|
|
|
},
|
|
|
|
|
handleUnqual(value){
|
|
|
|
|
// 只允许数字和小数点(如果你想限制小数点后的位数,可以更复杂地处理)
|
|
|
|
|
// // 移除非数字字符,只允许数字输入
|
|
|
|
|
console.log("value.replace(/[^\d]/g, '')=====================",value.replace(/[^\d]/g, ''))
|
|
|
|
|
this.qcReviewSheet.unqualifiedQty = value.replace(/[^\d]/g, '') < 0 ? 0 : value.replace(/[^\d]/g, '') > 1000000 ? 1000000 : value.replace(/[^\d]/g, '');
|
|
|
|
|
},
|
|
|
|
|
opened(){
|
|
|
|
|
if(this.rsId === null){
|
|
|
|
|
this.qualityProblemAbled = false
|
|
|
|
|
this.faultList = []
|
|
|
|
|
this.tableData = [
|
|
|
|
|
{
|
|
|
|
|
poorReason:'',
|
|
|
|
|
poorMemo:'',
|
|
|
|
|
prWorkPlan:{
|
|
|
|
|
prWorkOrder:{
|
|
|
|
|
woCode:'WO-2303196151-R02',
|
|
|
|
|
cardNo:'101682589001',
|
|
|
|
|
batchNo:'Y049230421301',
|
|
|
|
|
makeQty:5,
|
|
|
|
|
pjYieldOrder:{
|
|
|
|
|
partCode:'21E8-010-662-E9',
|
|
|
|
|
partName:'24插头密封盖'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
procedureSet:{
|
|
|
|
|
ppsName:'涂色标test'
|
|
|
|
|
},
|
|
|
|
|
qualifiedQty:1
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
poorReason:'',
|
|
|
|
|
poorMemo:'',
|
|
|
|
|
prWorkPlan:{
|
|
|
|
|
prWorkOrder:{
|
|
|
|
|
woCode:'WO-2303196151-R02',
|
|
|
|
|
cardNo:'101682589001',
|
|
|
|
|
batchNo:'Y049230421301',
|
|
|
|
|
makeQty:5,
|
|
|
|
|
pjYieldOrder:{
|
|
|
|
|
partCode:'21E8-010-662-E9',
|
|
|
|
|
partName:'24插头密封盖'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
procedureSet:{
|
|
|
|
|
ppsName:'涂色标test'
|
|
|
|
|
},
|
|
|
|
|
qualifiedQty:1
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
poorReason:'',
|
|
|
|
|
poorMemo:'',
|
|
|
|
|
prWorkPlan:{
|
|
|
|
|
prWorkOrder:{
|
|
|
|
|
woCode:'WO-2303196151-R02',
|
|
|
|
|
cardNo:'101682589001',
|
|
|
|
|
batchNo:'Y049230421301',
|
|
|
|
|
makeQty:5,
|
|
|
|
|
pjYieldOrder:{
|
|
|
|
|
partCode:'21E8-010-662-E9',
|
|
|
|
|
partName:'24插头密封盖'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
procedureSet:{
|
|
|
|
|
ppsName:'涂色标test'
|
|
|
|
|
},
|
|
|
|
|
qualifiedQty:1
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}else{
|
|
|
|
|
this.qualityProblemAbled = true
|
|
|
|
|
this.tableData = [
|
|
|
|
|
{
|
|
|
|
|
poorReason:'',
|
|
|
|
|
poorMemo:'',
|
|
|
|
|
prWorkPlan:{
|
|
|
|
|
prWorkOrder:{
|
|
|
|
|
woCode:'WO-2303196151-R02',
|
|
|
|
|
cardNo:'101682589001',
|
|
|
|
|
batchNo:'Y049230421301',
|
|
|
|
|
makeQty:5,
|
|
|
|
|
pjYieldOrder:{
|
|
|
|
|
partCode:'21E8-010-662-E9',
|
|
|
|
|
partName:'24插头密封盖'
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
procedureSet:{
|
|
|
|
|
ppsName:'涂色标test'
|
|
|
|
|
},
|
|
|
|
|
qualifiedQty:1
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
this.workCheck = this.tableData[0]
|
|
|
|
|
this.rowClick(this.workCheck)
|
|
|
|
|
this.dutyList = [
|
|
|
|
|
{rdId:21,dutyPart:3,dutyBatch:'Y049230421301',_select:false,relevantPart:null,relevantBatch:null,dutyQty:null,unit:null,memo:null},
|
|
|
|
|
{rdId:23,dutyPart:4,dutyBatch:'Y0262304159',_select:false,relevantPart:null,relevantBatch:null,dutyQty:null,unit:null,memo:null},
|
|
|
|
|
]
|
|
|
|
|
this.rightData = [
|
|
|
|
|
{rdId:21,dutyPart:3,dutyBatch:'Y049230421301',_select:false,relevantPart:null,relevantBatch:null,dutyQty:null,unit:null,memo:null},
|
|
|
|
|
{rdId:23,dutyPart:4,dutyBatch:'Y0262304159',_select:false,relevantPart:null,relevantBatch:null,dutyQty:null,unit:null,memo:null},
|
|
|
|
|
]
|
|
|
|
|
this.faultList = [
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
rfId:21,
|
|
|
|
|
faultType:{rstId:30001},
|
|
|
|
|
questClass:{rstId:30001001},
|
|
|
|
|
questSubClass:{rstId:30001001001},
|
|
|
|
|
proportion:5,
|
|
|
|
|
faultQty:2,
|
|
|
|
|
memo:null,_select:false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
rfId:22,
|
|
|
|
|
faultType:{rstId:30002},
|
|
|
|
|
questClass:{rstId:30001002},
|
|
|
|
|
questSubClass:{rstId:30001001003},
|
|
|
|
|
proportion:5,
|
|
|
|
|
faultQty:2,
|
|
|
|
|
memo:null,_select:false,
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
this.leftData = [
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
rfId:21,
|
|
|
|
|
faultType:{rstId:30001},
|
|
|
|
|
questClass:{rstId:30001001},
|
|
|
|
|
questSubClass:{rstId:30001001001},
|
|
|
|
|
proportion:5,
|
|
|
|
|
faultQty:2,
|
|
|
|
|
memo:null,_select:false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
rfId:22,
|
|
|
|
|
faultType:{rstId:30002},
|
|
|
|
|
questClass:{rstId:30001002},
|
|
|
|
|
questSubClass:{rstId:30001001003},
|
|
|
|
|
proportion:5,
|
|
|
|
|
faultQty:2,
|
|
|
|
|
memo:null,_select:false,
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
this.page.total = this.tableData.length
|
|
|
|
|
}
|
|
|
|
|
this.reasonData = [
|
|
|
|
|
{bcId: 2,code: "BCL",keyValue: 2,name: "表处理",type: 4},
|
|
|
|
|
{bcId: 3,code: "JJ",keyValue: 3,name: "机架",type:4},
|
|
|
|
|
{bcId: 4,code: "RCL",keyValue: 4,name: "热处理",type:4},
|
|
|
|
|
{bcId: 5,code: "SBSK",keyValue: 5,name: "设备失控"},
|
|
|
|
|
]
|
|
|
|
|
this.errorTypeArr = [
|
|
|
|
|
{"keyValue": 30001,"parentId": 300,"rstId": 30001,"rstName": "壳体类","rstType": 2},
|
|
|
|
|
{"keyValue": 30002,"parentId": 300,"rstId": 30002,"rstName": "针孔类","rstType": 2},
|
|
|
|
|
{"keyValue": 30003,"parentId": 300,"rstId": 30003,"rstName": "绝缘类","rstType": 2}
|
|
|
|
|
]
|
|
|
|
|
this.errorBigArr = [
|
|
|
|
|
{"keyValue": 30001001,"parentId": 30001,"rstId": 30001001,"rstName": "外观质量","rstType": 3},
|
|
|
|
|
{"keyValue": 30001002,"parentId": 30001,"rstId": 30001002,"rstName": "尺寸问题","rstType": 3},
|
|
|
|
|
{"keyValue": 30001003,"parentId": 30001,"rstId": 30001003,"rstName": "镀层质量","rstType": 3},
|
|
|
|
|
{ "keyValue": 30001004,"parentId": 30001,"rstId": 30001004,"rstName": "材料问题","rstType": 3},
|
|
|
|
|
{"keyValue": 30001005,"parentId": 30001,"rstId": 30001005,"rstName": "包装问题","rstType": 3}
|
|
|
|
|
]
|
|
|
|
|
this.errorSmallArr = [
|
|
|
|
|
{"keyValue": 30001001001,"parentId": 30001001,"rstId": 30001001001,"rstName": "划伤、磕碰伤","rstType": 4},
|
|
|
|
|
{"keyValue": 30001001003,"parentId": 30001001,"rstId": 30001001003,"rstName": "零件缺口、掉块","rstType": 4},
|
|
|
|
|
{"keyValue": 30001001002,"parentId": 30001001,"rstId": 30001001002,"rstName": "表面脏污、发黄、发黑","rstType": 4},
|
|
|
|
|
{"keyValue": 30001001004,"parentId": 30001001,"rstId": 30001001004,"rstName": "麻点、麻坑","rstType": 4},
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
insertFaultEvent(row = -1) {
|
|
|
|
|
const record = { faultType: {}, questClass: {}, questSubClass: {},_select:false};
|
|
|
|
|
this.faultList.push(record)
|
|
|
|
|
},
|
|
|
|
|
changeProportion(value,index){
|
|
|
|
|
if(this.faultList.length != 0){
|
|
|
|
|
this.faultList[index].proportion = value.replace(/[^\d]/g, '') < 0 ? 0 : value.replace(/[^\d]/g, '') > 100 ? 100 : value.replace(/[^\d]/g, '')
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
changeFaultQty(value,index){
|
|
|
|
|
if(this.faultList.length != 0){
|
|
|
|
|
this.faultList[index].faultQty = value.replace(/[^\d]/g, '') < 0 ? 0 : value.replace(/[^\d]/g, '')
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
handleSelectionChange(list){
|
|
|
|
|
this.checkFaultList = list
|
|
|
|
|
},
|
|
|
|
|
selectChangeData(list,val){
|
|
|
|
|
val._select = !val._select
|
|
|
|
|
},
|
|
|
|
|
deleteFaultEvent(){
|
|
|
|
|
let arr = this.faultList.filter(item => item._select)
|
|
|
|
|
if(arr.length != 0){
|
|
|
|
|
this.$confirm('确定将选择数据删除?', {
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
|
type: 'warning',
|
|
|
|
|
}).then(() =>{
|
|
|
|
|
if(this.rsId){
|
|
|
|
|
let faultDate = this.faultList.filter(item => item._select)
|
|
|
|
|
this.deleteFault = faultDate.filter(item => item.rfId)
|
|
|
|
|
}
|
|
|
|
|
let arr = this.faultList.filter(item => item._select == false)
|
|
|
|
|
this.faultList = arr
|
|
|
|
|
})
|
|
|
|
|
}else{
|
|
|
|
|
this.$message.error('请至少选择一条数据进行操作!')
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
handleDutyChange(list){
|
|
|
|
|
this.checkFaultList = list
|
|
|
|
|
},
|
|
|
|
|
selectChangeDutyData(list,val){
|
|
|
|
|
val._select = !val._select
|
|
|
|
|
},
|
|
|
|
|
deleteDutyEvent(){
|
|
|
|
|
let arr = this.dutyList.filter(item => item._select)
|
|
|
|
|
if(arr.length != 0){
|
|
|
|
|
this.$confirm('确定将选择数据删除?', {
|
|
|
|
|
confirmButtonText: '确定',
|
|
|
|
|
cancelButtonText: '取消',
|
|
|
|
|
type: 'warning',
|
|
|
|
|
}).then(() =>{
|
|
|
|
|
if(this.rsId){
|
|
|
|
|
let deleteData = this.dutyList.filter(item => item._select)
|
|
|
|
|
this.deleteArr = deleteData.filter(item => item.rdId)
|
|
|
|
|
}
|
|
|
|
|
let arr = this.dutyList.filter(item => item._select == false)
|
|
|
|
|
this.dutyList = arr
|
|
|
|
|
})
|
|
|
|
|
}else{
|
|
|
|
|
this.$message.error('请至少选择一条数据进行操作!')
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 责任零件
|
|
|
|
|
insertDutyEvent(row = -1) {
|
|
|
|
|
const record = {_select:false};
|
|
|
|
|
this.dutyList.push(record)
|
|
|
|
|
},
|
|
|
|
|
//点击行
|
|
|
|
|
rowClick(row){
|
|
|
|
|
// this.$set(row, 'isSelect', true);
|
|
|
|
|
row.isSelect = true
|
|
|
|
|
this.workCheck = row;
|
|
|
|
|
console.log('work---------------------',this.workCheck)
|
|
|
|
|
const makeQty = row.prWorkPlan.qualifiedQty;
|
|
|
|
|
if (this.qcReviewSheet.unqualifiedQty) {
|
|
|
|
|
this.qcReviewSheet.scale = Math.round((this.qcReviewSheet.unqualifiedQty / makeQty) * 100)
|
|
|
|
|
}
|
|
|
|
|
if (
|
|
|
|
|
this.qcReviewSheet.scale &&
|
|
|
|
|
(this.qcReviewSheet.unqualifiedQty == null ||
|
|
|
|
|
this.qcReviewSheet.unqualifiedQty == '' ||
|
|
|
|
|
this.qcReviewSheet.unqualifiedQty <= 0)
|
|
|
|
|
) {
|
|
|
|
|
this.qcReviewSheet.unqualifiedQty = Math.round((this.qcReviewSheet.scale / 100) * makeQty, 0)
|
|
|
|
|
}
|
|
|
|
|
if (
|
|
|
|
|
row.prWorkPlan != null &&
|
|
|
|
|
row.prWorkPlan.prWorkOrder != null &&
|
|
|
|
|
row.prWorkPlan.prWorkOrder.pjYieldOrder != null
|
|
|
|
|
) {
|
|
|
|
|
const partCode = row.prWorkPlan.prWorkOrder.pjYieldOrder.partCode;
|
|
|
|
|
const batchNo = row.prWorkPlan.prWorkOrder.batchNo;
|
|
|
|
|
//调用接口获取责任零件/责任批号选择列表数据
|
|
|
|
|
this.dutyPartArr = []
|
|
|
|
|
this.dutyBatchArr = [
|
|
|
|
|
{label:'Y049230421301',value:'Y049230421301'},
|
|
|
|
|
{label:'Y0262304159',value:'Y0262304159'},
|
|
|
|
|
{label:'Y8892304821',value:'Y8892304821'},
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
currentRow(row, oldRow) {
|
|
|
|
|
if (oldRow) {
|
|
|
|
|
// this.$set(oldRow, 'isSelect', false);
|
|
|
|
|
oldRow.isSelect = false
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
rowClass({ row }) {
|
|
|
|
|
if (row.isSelect) {
|
|
|
|
|
return 'selectRow';
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 查找数组不同项
|
|
|
|
|
findDifferentObjects(arr1, arr2,type){
|
|
|
|
|
const result = [];
|
|
|
|
|
|
|
|
|
|
// 遍历第一个数组
|
|
|
|
|
arr1.forEach(obj1 => {
|
|
|
|
|
// 查找第二个数组中具有相同id的对象
|
|
|
|
|
// let foundObj = type == 1 ? arr2.find(obj2 => obj2[type] === obj1[type]) : arr2.find(obj2 => obj2[type] === obj1[type]);
|
|
|
|
|
const foundObj = arr2.find(obj2 => obj2[type] === obj1[type]);
|
|
|
|
|
// 检查是否找到具有相同id的对象,并且至少一个字段值不同
|
|
|
|
|
if (foundObj) {
|
|
|
|
|
const fields = Object.keys(obj1); // 获取所有字段名
|
|
|
|
|
let isDifferent = false;
|
|
|
|
|
// if(type == 1){
|
|
|
|
|
// fields.forEach(field => {
|
|
|
|
|
// if (obj1[field] !== foundObj[field]) {
|
|
|
|
|
// isDifferent = true;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// }else{
|
|
|
|
|
fields.forEach(field => {
|
|
|
|
|
if (JSON.stringify(obj1[field] ) !== JSON.stringify(foundObj[field])) {
|
|
|
|
|
isDifferent = true;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// 如果至少一个字段不同,则添加到结果数组中
|
|
|
|
|
if (isDifferent) {
|
|
|
|
|
result.push({ ...obj1, ...foundObj }); // 可以选择合并两个对象或者只添加一个对象,取决于你的需求
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
return result;
|
|
|
|
|
},
|
|
|
|
|
//提交
|
|
|
|
|
submit(val){
|
|
|
|
|
if (this.workCheck === null) {
|
|
|
|
|
this.$message.error('请至少选择一条数据进行操作!');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if(this.faultList.length != 0){
|
|
|
|
|
let tmp = this.faultList.find(item => JSON.stringify(item.faultType) == '{}' || JSON.stringify(item.questClass) == '{}' || JSON.stringify(item.questSubClass) == '{}')
|
|
|
|
|
if(tmp){
|
|
|
|
|
this.$message.error('请填写完整数据!')
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(this.dutyList.length != 0){
|
|
|
|
|
let tmp = this.dutyList.find(item => !item.dutyPart || !item.dutyBatch)
|
|
|
|
|
if(tmp){
|
|
|
|
|
this.$message.error('请填写完整数据!')
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.updateData = []
|
|
|
|
|
if(this.rsId){
|
|
|
|
|
let updateArr = this.findDifferentObjects(this.rightData,this.dutyList,'rdId')
|
|
|
|
|
this.updateData = updateArr
|
|
|
|
|
|
|
|
|
|
let updataLeftArr = this.findDifferentObjects(this.leftData,this.faultList,'rfId')
|
|
|
|
|
this.updateLeftData = updataLeftArr
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
let rdList = [];
|
|
|
|
|
const rdDelete = [];
|
|
|
|
|
rdList = this.dutyList.filter(item => !item.rdId)
|
|
|
|
|
rdList = rdList.concat(this.updateData)
|
|
|
|
|
if (this.deleteArr.length > 0) {
|
|
|
|
|
this.deleteArr.forEach((obj) => {
|
|
|
|
|
if (obj.rdId) {
|
|
|
|
|
rdDelete.push(obj.rdId);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let rfList = [];
|
|
|
|
|
const rfDelete = [];
|
|
|
|
|
rfList = this.faultList.filter(item => !item.rfId)
|
|
|
|
|
rfList = rfList.concat(this.updateLeftData)
|
|
|
|
|
if (this.deleteFault.length > 0) {
|
|
|
|
|
this.deleteFault.forEach((obj) => {
|
|
|
|
|
if (obj.rfId) {
|
|
|
|
|
rfDelete.push(obj.rfId);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
setTimeout(() =>{
|
|
|
|
|
this.closeDialog()
|
|
|
|
|
},500)
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.right_box{
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
.right_item{
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-right: 5px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-input{
|
|
|
|
|
width: 100px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-table {
|
|
|
|
|
tr {
|
|
|
|
|
&.selectRow {
|
|
|
|
|
background-color: #6acaf0 !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.btn_box{
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: end;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.table_box{
|
|
|
|
|
width: 99%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</style>
|