中航光电热表web
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.

480 lines
24 KiB

<template>
<el-dialog title="新增" append-to-body :modelValue="openShow" width="70%" @close="closeDialog" fullscreen>
3 months ago
<div class="test_type">
<span>审理类型</span>
<el-radio-group v-model="testType" @change="changeType" :disabled="type == 'view'">
3 months ago
<el-radio :value="1">erp审理</el-radio>
<el-radio :value="2">内部审理</el-radio>
</el-radio-group>
</div>
<div class="test_type" v-if="testType == 1">
<span>历史订单</span>
<el-select v-model="detailInfo.refWoId" placeholder="请选择" style="width: 400px;" :disabled="type == 'view'"
@change="changeHistoryOrder">
<el-option v-for="item in historyList" :key="item.woId" :label="item.woInfo" :value="item.woId" />
<!-- <el-option label="订单2" value="2" /> -->
</el-select>
</div>
3 months ago
<el-descriptions title="订单信息" border :column="4" label-width="110">
<el-descriptions-item label="车间订单号:">{{detailInfo.woCode}}</el-descriptions-item>
<el-descriptions-item label="发现工序:">{{detailInfo.productionDisposition}}</el-descriptions-item>
<el-descriptions-item label="流程卡号:">{{detailInfo.cardNo}}</el-descriptions-item>
<el-descriptions-item label="批次号:">{{detailInfo.batchNo}}</el-descriptions-item>
<el-descriptions-item label="总数量:">{{detailInfo.totalNum}}</el-descriptions-item>
<el-descriptions-item label="物料号:">{{detailInfo.partCode}}</el-descriptions-item>
<el-descriptions-item label="物料名称:">{{detailInfo.materialName}}</el-descriptions-item>
3 months ago
<el-descriptions-item label="不良原因:">
<el-input v-model="detailInfo.poorReason" placeholder="请输入" :disabled="type == 'view'" />
</el-descriptions-item>
<el-descriptions-item label="不良描述:">
<el-input v-model="detailInfo.poorDesc" type="textarea" :rows="3" placeholder="请输入" :disabled="type == 'view'" style="width: 40%;" />
</el-descriptions-item>
</el-descriptions>
3 months ago
<el-descriptions v-if="testType == 1" class="margin-top" title="质量信息" border :column="3" label-width="110" style="margin-bottom: 24px;">
<!-- <el-descriptions-item label="历史订单:">
<el-select v-model="value" placeholder="请选择" style="width: 400px;" :disabled="type == 'view'">
<el-option label="订单1" value="1" />
<el-option label="订单2" value="2" />
</el-select>
</el-descriptions-item> -->
<el-descriptions-item label="处置单类型:">
<el-select v-model="detailInfo.reviewOrderMode" placeholder="请选择" style="width: 400px;" :disabled="type == 'view'">
<el-option label="零件模式" value="1" />
<el-option label="装配模式" value="2" />
3 months ago
<!-- <el-option label="售后模式" value="3" /> -->
</el-select>
</el-descriptions-item>
<el-descriptions-item label="不合格数:">
<el-input v-model="detailInfo.unqualifiedQty" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="比例:">
<el-input v-model="detailInfo.scale" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="上级编码:">
<el-input v-model="detailInfo.upCode" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
</el-descriptions-item>
<el-descriptions-item label="">
<el-checkbox-group v-model="checkList" :disabled="type == 'view'">
<el-checkbox label="批次性问题" value="isBatProblem" />
<el-checkbox label="典型问题" value="isClassicProblem" />
<el-checkbox label="低级错误" value="isLowError" />
<el-checkbox label="质量问题" value="isQualityProblem" />
</el-checkbox-group>
</el-descriptions-item>
</el-descriptions>
3 months ago
<el-descriptions v-if="testType == 2" class="margin-top" title="质量信息" border :column="3" label-width="110" style="margin-bottom: 24px;">
<el-descriptions-item label="比例:">
<el-input v-model="detailInfo.scale" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
3 months ago
</el-descriptions-item>
<el-descriptions-item label="不合格数:">
<el-input v-model="detailInfo.unqualifiedQty" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
3 months ago
</el-descriptions-item>
<el-descriptions-item label="处置类型">
<el-radio-group v-model="disposalType" :disabled="type == 'view'">
3 months ago
<el-radio :value="1">返修</el-radio>
<el-radio :value="2">报废</el-radio>
</el-radio-group>
</el-descriptions-item>
<el-descriptions-item label="返修数量:">
<el-input v-model="detailInfo.reDoNum" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
3 months ago
</el-descriptions-item>
<el-descriptions-item label="报废数量:">
<el-input v-model="detailInfo.scrapNum" placeholder="请输入" style="width: 400px;" :disabled="type == 'view'"/>
3 months ago
</el-descriptions-item>
<el-descriptions-item label="">
<el-checkbox-group v-model="checkList" :disabled="type == 'view'">
<el-checkbox label="批次性问题" value="isBatProblem" />
<el-checkbox label="典型问题" value="isClassicProblem" />
<el-checkbox label="低级错误" value="isLowError" />
<el-checkbox label="质量问题" value="isQualityProblem" />
3 months ago
</el-checkbox-group>
</el-descriptions-item>
</el-descriptions>
<!--
<el-form :model="form" label-width="auto">
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="历史订单:">
<el-select v-model="value" placeholder="请选择">
<el-option label="订单1" value="1" />
<el-option label="订单2" value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处置单类型:">
<el-select v-model="value" placeholder="请选择">
<el-option label="零件模式" value="1" />
<el-option label="装配模式" value="2" />
<el-option label="售后模式" value="3" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="不合格数:">
<el-input v-model="input" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="比例:">
<el-input v-model="input" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="上级编码:">
<el-input v-model="input" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="">
<el-checkbox-group v-model="checkList">
<el-checkbox label="批次性问题" value="Value A" />
<el-checkbox label="典型问题" value="Value B" />
<el-checkbox label="低级错误" value="Value C" />
<el-checkbox label="质量问题" value="Value disabled" />
</el-checkbox-group>
</el-form-item>
</el-col>
</el-row>
</el-form> -->
<!-- <el-descriptions title="故障信息" border :column="4"></el-descriptions> -->
3 months ago
<el-row :gutter="24" v-if="testType == 1" >
<el-col :span="24" style="margin-bottom: 24px;">
<div class="btn_box">
<el-button type="primary" :disabled="type == 'view'" plain @click="insertFaultEvent()">插入一行</el-button>
<el-button type="danger" :disabled="type == 'view'" plain @click="deleteFaultEvent()">删除选择行</el-button>
</div>
<div class="table_box">
<el-table ref="faultTable" height="240" :data="faultList" @selection-change="handleSelectionChange"
@select="selectChangeData" border>
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="故障类别" prop="ngType2Id" align="center">
<template #header>
<span><i style="color:red">*</i>故障类别</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.ngType2Id" :disabled="type == 'view'">
<el-option v-for="item in errorTypeArr" :key="item.id" :value="item.id"
:label="item.name"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="问题大类" prop="ngType3Id" align="center">
<template #header>
<span><i style="color:red">*</i>问题大类</span>
</template>
<template #default="scope">
3 months ago
<el-select v-model="scope.row.ngType3Id" :disabled="!scope.row.ngType2Id || type == 'view'"
@change="changeBigQuestion" >
<el-option v-for="item in errorBigArr" :key="item.id" :value="item.id"
:label="item.name"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="问题小类" prop="ngType4Id" align="center">
<template #header>
<span><i style="color:red">*</i>问题小类</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.ngType4Id"
3 months ago
:disabled="!scope.row.ngType3Id || type == 'view'" >
<el-option v-for="item in errorSmallArr" :key="item.id" :value="item.id"
:label="item.name"></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column label="比例" prop="scale" align="center">
<template #default="scope">
<el-input v-model="scope.row.scale" :disabled="type == 'view'"
@input="(value) => changeProportion(value, scope.$index)"></el-input>
</template>
</el-table-column>
<el-table-column label="数量" prop="qty" align="center">
<template #default="scope">
<el-input v-model="scope.row.qty" :disabled="type == 'view'"
@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" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="24">
<div class="btn_box">
<el-button type="primary" :disabled="type == 'view'" plain @click="insertDutyEvent()">插入一行</el-button>
<el-button type="danger" :disabled="type == 'view'" plain @click="deleteDutyEvent()">删除选择行</el-button>
</div>
<div class="table_box">
<el-table :data="dutyList" height="240" @selection-change="handleDutyChange"
@select="selectChangeDutyData" border>
<el-table-column type="selection" width="55px"></el-table-column>
<el-table-column label="责任零件" prop="dutyPart" align="center">
<template #header>
<span><i style="color:red">*</i>责任零件</span>
</template>
<template #default="scope">
<el-input v-model="scope.row.dutyPart" v-if="detailInfo.reviewOrderMode == 1" :disabled="type == 'view'"></el-input>
<el-select v-model="scope.row.dutyPart" v-if="detailInfo.reviewOrderMode == 2" :disabled="type == 'view'">
<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 #header>
<span><i style="color:red">*</i>责任批号</span>
</template>
<template #default="scope">
<el-select v-model="scope.row.dutyBatch" :disabled="type == 'view'">
<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" :disabled="type == 'view'">
<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" :disabled="type == 'view'">
<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="qty" align="center">
<template #default="scope">
<el-input v-model="scope.row.qty" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
<el-table-column label="单位" prop="unit">
<template #default="scope">
<el-input v-model="scope.row.unit" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="memo">
<template #default="scope">
<el-input v-model="scope.row.memo" :disabled="type == 'view'"></el-input>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
<template #footer>
<span class="dialog-footer">
<el-button plain @click="closeDialog">取消</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" @click="submit(21)">保存</el-button>
<el-button type="primary" v-if="testType == 2 && type != 'view'" @click="submitInside">提交</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(22)">提交质保</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(23)">提交工艺</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(24)">提交设计</el-button>
<el-button type="primary" v-if="testType == 1 && type != 'view'" plain @click="submit(25)">提交设计变更</el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import {getFaultClassList,getQuestionClassList,getQuestionClassList2,getProductionDispositionDetail,
createProductionDisposition,getHistoryOrderList,setHistoryOrderValue} from "@/api/qualityManagement/productionTesting/productionDisposition"
export default {
props: {
showDialog: {
type: Boolean,
default: false
},
moldAddMore: {
type: Boolean,
default: false
},
rsId:{
type: String,
default: ''
},
type:{
type: String,
default: ''
}
},
data() {
return {
openShow: false,
tableData: [],
3 months ago
form: {},
testType: 1,
disposalType:1, //处置类型
3 months ago
faultList:[],
dutyList:[],
errorTypeArr:[], //故障类别
errorBigArr:[], //问题大类
errorSmallArr:[], //问题小类
detailInfo:{},
checkList:[],
historyList:[],
}
},
mounted() {
this.openShow = this.showDialog
this.getError()
this.getQuestionBig()
this.getDetail()
this.getHistory()
// this.getQuestionSmall()
},
methods: {
// 获取历史订单
getHistory(){
getHistoryOrderList({}).then(res =>{
this.historyList = res.data.data
})
},
// 修改历史订单
changeHistoryOrder(val){
setHistoryOrderValue({
id:this.rsId,
woId:val
}).then(res =>{
console.log('res1----------------',res)
getProductionDispositionDetail({
woId:val
}).then(res =>{
console.log('res2--------------------------------',res)
})
})
},
getDetail(){
getProductionDispositionDetail({
id:this.rsId
}).then(res =>{
this.detailInfo = res.data.data
this.testType = res.data.data.bizType == 3 ? 1 : 2
this.disposalType = res.data.data.bizType == 3 ? '' : res.data.data.bizType
this.checkList = []
this.checkList.push(
res.data.data.isBatProblem == 1 ? 'isBatProblem' : null,
res.data.data.isClassicProblem == 1 ? 'isClassicProblem' : null,
res.data.data.isLowError == 1 ? 'isLowError' : null,
res.data.data.isQualityProblem == 1 ? 'isQualityProblem' : null,
)
})
},
// 获取故障类别下拉
getError(){
getFaultClassList().then(res => {
this.errorTypeArr = res.data.data
})
},
// 获取问题大类
getQuestionBig(){
getQuestionClassList().then(res => {
this.errorBigArr = res.data.data
})
},
changeBigQuestion(val){
this.getQuestionSmall(val)
},
// 获取问题小类
getQuestionSmall(val){
getQuestionClassList2({
parentId:val
}).then(res => {
this.errorSmallArr = res.data.data
})
},
3 months ago
insertFaultEvent(){
this.faultList.push({_select:false})
},
insertDutyEvent(){
this.dutyList.push({_select:false})
},
closeDialog() {
this.openShow = false
this.$emit('closeDialog');
},
3 months ago
changeType(val){
console.log('val---------------------',val)
},
3 months ago
submit(val){
this.detailInfo.bizType = this.testType == 1 ? 3 : this.testType == 2 ? this.disposalType == 1 ? 1 : 2 : ''
this.detailInfo.isBatProblem = this.checkList.includes('isBatProblem') ? 1 : 0
this.detailInfo.isClassicProblem = this.checkList.includes('isClassicProblem') ? 1 : 0
this.detailInfo.isLowError = this.checkList.includes('isLowError') ? 1 : 0
this.detailInfo.isQualityProblem = this.checkList.includes('isQualityProblem') ? 1 : 0
this.detailInfo.faultList = this.faultList
this.detailInfo.dutyList = this.dutyList
this.detailInfo.submitType = val
3 months ago
console.log('detail---------------------',this.detailInfo)
},
3 months ago
// 内部审理提交
submitInside(){
// if(this.disposalType == 1){
// let params = {
3 months ago
// }
// }
// this.detailInfo = {
// ...this.detailInfo,
// bizType:this.testType == 1 ? 3 : this.testType == 2 ? this.disposalType == 1 ? 1 : 2 : ''
// }
console.log('check===============',this.checkList.includes('isQualityProblem'))
this.detailInfo.bizType = this.testType == 1 ? 3 : this.testType == 2 ? this.disposalType == 1 ? 1 : 2 : ''
this.detailInfo.isBatProblem = this.checkList.includes('isBatProblem') ? 1 : 0
this.detailInfo.isClassicProblem = this.checkList.includes('isClassicProblem') ? 1 : 0
this.detailInfo.isLowError = this.checkList.includes('isLowError') ? 1 : 0
this.detailInfo.isQualityProblem = this.checkList.includes('isQualityProblem') ? 1 : 0
this.detailInfo.submitType = 10
console.log('detailInfo-----------------',this.detailInfo)
createProductionDisposition(this.detailInfo).then(res =>{
if(res.data.code == 200){
this.$message.success('提交成功')
this.closeDialog(true)
3 months ago
}
})
3 months ago
},
}
}
</script>
<style lang="scss" scoped>
3 months ago
.test_type{
display: flex;
align-items: center;
margin-bottom: 20px;
}
.margin-top {
margin-top: 24px;
}
.btn_box {
margin-top: 0 !important;
margin-bottom: 12px;
}
.table_box {
width: 100%;
}
</style>