<template>
|
<div style="height: 100%">
|
<div class="page-header">
|
<div class="header-left">
|
<a @click="$router.go(-1)"><i class="icon-btn-back"></i></a>
|
<h2>编辑-原材料检验</h2>
|
</div>
|
<div class="btn-group header-right">
|
<el-button @click="save()" v-if="this.dataForm.id==null">保存</el-button>
|
</div>
|
</div>
|
<div class="page-main">
|
<div class="rawMaterial-basic">
|
<el-form
|
:model="dataForm"
|
:rules="dataRule"
|
ref="dataForm"
|
style="width: 100%"
|
class="l-mes"
|
label-width="110px">
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="零件号" prop="code">
|
<el-input v-model="dataForm.code">
|
<el-button
|
slot="append"
|
icon="el-icon-search"
|
@click="queryCode()"></el-button>
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item prop="name" label="原材料名称">
|
<el-input v-model="dataForm.name" disabled >
|
</el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item prop="formTime" label="来料日期">
|
<el-date-picker
|
style="width:100%"
|
v-model="dataForm.formTime"
|
type="datetime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
disabled>
|
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="规格型号" prop="specs">
|
<el-input v-model="dataForm.specs" disabled></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item prop="unit" label="单位">
|
<el-input
|
v-model="dataForm.unit"
|
disabled
|
></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="供应商名称" prop="supplier">
|
<el-input v-model="dataForm.supplier" disabled />
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="数量" prop="number">
|
<el-input v-model="dataForm.number" />
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="报检日期" prop="createTime" v-if="dataForm.id!=null">
|
<el-input v-model="dataForm.createTime" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="报检人" prop="createUser" v-if="dataForm.id!=null">
|
<el-input v-model="dataForm.createUser" />
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</div>
|
<div class="rawMaterial-detail">
|
<el-row style="width:100%;z-index: 10;height:50px;">
|
<el-col :span="19">检验项目</el-col>
|
<el-col :span="5">
|
<div style="width:100%;text-align: right;">
|
<el-button v-show="dataForm.id==null" size="small" @click="clickAddLine">添加检验行</el-button>
|
<el-button size="small" @click="addTeatValueColumn()">添加检测值列</el-button>
|
<el-button size="small" @click="delTeatValueColumn()">删除检测值列</el-button>
|
</div>
|
</el-col>
|
</el-row>
|
<el-row style="width:100%;">
|
<el-col :span="24">
|
<el-table :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
|
:cell-style="{textAlign:'center'}" ref="table"
|
:data="list" border style="width: 100%;" height="400">
|
<el-table-column type="index" label="序号" width="60">
|
</el-table-column>
|
<el-table-column prop="name" label="项目" width="260">
|
<template slot-scope="scope">
|
<el-select v-if="projectList.length > 0" :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name"
|
filterable allow-create placeholder="请输入或选择项目名称" style="width:100%" @change="changeName(scope.$index,scope.row)">
|
<el-option v-for="(item,index) in projectList" :key="index" :label="item.name" :value="item.name"/>
|
</el-select>
|
<el-input v-else :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name"
|
placeholder="请输入项目名称"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="unit" label="单位" width="260">
|
<template slot-scope="scope">
|
<el-input :disabled="dataForm.id != null" v-model="scope.row.unit" placeholder="请输入单位"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="required" label="标准值" width="260">
|
<template slot-scope="scope">
|
<el-input :disabled="dataForm.id != null" v-model="scope.row.required"
|
placeholder="请输入标准值"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column prop="testValue" label="检测值" min-width="260" v-for="(item, index) in empiricalValueAdd"
|
:key="index">
|
<template slot-scope="scope">
|
<el-tooltip :disabled="scope.row.equipmentId != null" class="item" effect="dark" content="请先选择设备!"
|
placement="top-start">
|
<el-input :disabled="scope.row.equipmentId == null" v-model="scope.row.testValueList[index]"
|
@blur="updateTestValue(scope.row)" placeholder="请输入检测值"></el-input>
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
<el-table-column prop="deviceName" label="试验设备" min-width="260">
|
<template slot-scope="scope">
|
<el-select style="width:100%" v-model="scope.row.equipmentId" filterable @change="updateDevice(scope.row)">
|
<el-option v-for="(item,index) in deviceList"
|
:key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column fixed="right" v-if="dataForm.id != null" prop="testState" label="结论" min-width="150">
|
<template slot-scope="scope">
|
<span v-if="scope.row.testState == 0" style="color:#F56C6C">不合格</span>
|
<span v-else-if="scope.row.testState == 1" style="color:#67C23A">合格</span>
|
<span v-else>暂无结论</span>
|
</template>
|
</el-table-column>
|
<el-table-column fixed="right" style="background-color: white;" v-if="dataForm.id == null" label="操作" width="150">
|
<template slot-scope="scope">
|
<el-button type="text" @click="clickDeleteline(scope)">取消</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-col>
|
</el-row>
|
</div>
|
<div class="rawMaterial-result">
|
<el-row>
|
<el-col :span="24">检验结论</el-col>
|
</el-row>
|
<el-row style="width:100%">
|
<el-col :span="24">
|
<el-table border height="90" :data="conclusionTable" ref="conclusion" v-model="conclusion"
|
:header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}"
|
:cell-style="{textAlign:'center'}">
|
<el-table-column prop="code" label="物料编号"></el-table-column>
|
<el-table-column prop="name" label="物料名称"></el-table-column>
|
<el-table-column prop="userName" label="检验员"></el-table-column>
|
<el-table-column prop="judgeState" label="检验结论">
|
<template slot-scope="scope">
|
<el-tag type="success" v-if="scope.row.judgeState == 1">合格</el-tag>
|
<el-tag type="danger" v-else-if="scope.row.judgeState == 0">不合格</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作">
|
<template>
|
<el-button type="text" @click="submitSave()" size="small">上报</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-col>
|
</el-row>
|
</div>
|
</div>
|
<rawMaterialPartDialog :paramObj="paramObj" :currshowlist.sync="showPart" @listenToPartEvent="selectPart" />
|
</div>
|
</template>
|
|
<script>
|
import {
|
selectDevice,
|
addRawInspects,
|
getObj,
|
updateRawInsProduct,
|
updateRawInspectsById,
|
chooseIFS,
|
selectHisByCode,
|
updateDeviceById, } from '@/api/quality/rawMaterial'
|
import rawMaterialPartDialog from '@/views/common/rawMaterial-part'
|
export default {
|
computed:{},
|
components:{
|
rawMaterialPartDialog
|
},
|
data(){
|
return{
|
projectList: [],
|
paramObj: {},
|
IFSData: [],
|
showPart: false,
|
// 添加列
|
empiricalValueAdd: 1,
|
// 编辑时存储最长的列数字,做删除判断
|
empiricalValueAddMaxNumber: 0,
|
columnList: [],
|
dataForm:{
|
id: null,
|
judgeState: null,
|
formTime: '',
|
message: '',
|
name: '',
|
code: '88.118.1/A0487643',
|
specs: '',
|
unit: '',
|
number: '',
|
supplier: '',
|
rawInsProducts: [{
|
equipmentId: 0,
|
name: '',
|
required: '',
|
testValue: '',
|
unit: '',
|
testValueList: []
|
}]
|
},
|
form: null,
|
list:[],
|
conclusion: null,
|
conclusionTable: [{
|
code: '',
|
name: '',
|
userName: '',
|
testState: ''
|
}],
|
dataRule: {},
|
deviceList: [],
|
}
|
},
|
beforeUpdate(){
|
this.$nextTick(()=>{
|
this.$refs.table.doLayout();
|
})
|
},
|
mounted(){
|
this.dataForm.id = this.$route.query.id
|
this.init()
|
this.getDeviceList()
|
},
|
watch:{
|
|
},
|
methods:{
|
changeName(index,row){
|
this.projectList.forEach(item=>{
|
if(row.name == item.name){
|
this.list[index].unit = item.unit
|
this.list[index].required = item.required
|
}
|
})
|
},
|
// 确认回调
|
selectPart(param, nodePart, index) {
|
if (typeof param !== 'undefined') {
|
this.dataForm.code = param.code
|
this.dataForm.name = param.name
|
this.dataForm.formTime = param.formTime
|
this.dataForm.unit = param.unit
|
this.dataForm.specs = param.specs
|
this.dataForm.supplier = param.supplier
|
this.dataForm.number = param.number
|
this.dataForm.message = param.message
|
this.projectList = param.rawInsProducts
|
}
|
},
|
queryCode(){
|
this.paramObj = {
|
code: this.dataForm.code
|
}
|
this.showPart = true
|
},
|
updateDevice(row){
|
if(this.dataForm.id != null){
|
updateDeviceById({equiomentId:row.equipmentId,rpId:row.rpId}).then(res=>{
|
}).catch(error=>{
|
console.log(error)
|
})
|
}
|
},
|
submitSave(){
|
let pro = this.list.filter(item => {
|
return item.testState == 0;
|
})
|
if (pro.length > 0) {
|
this.$prompt('请输入不合格数量', '不合格数量', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
inputPattern: /^\d+$/,
|
inputErrorMessage: '请输入正确数字格式'
|
}).then(({ value }) => {
|
let data = {
|
id: this.dataForm.id,
|
number: value
|
}
|
updateRawInspectsById(data).then(res => {
|
this.$message.success("上报成功");
|
});
|
}).catch(() => {});
|
}else{
|
updateRawInspectsById({id:this.dataForm.id,number:0}).then(res => {
|
this.$message.success("上报成功");
|
});
|
}
|
this.init()
|
},
|
addTeatValueColumn(){
|
this.empiricalValueAdd = this.empiricalValueAdd + 1;
|
},
|
// 添加行
|
clickAddLine() {
|
let obj = {
|
equipmentId: null,
|
name: "",
|
required: "",
|
testValue: "",
|
unit: "",
|
testState: null,
|
testValueList: [],
|
};
|
this.list.push(obj);
|
},
|
// 删除行
|
clickDeleteline(scope) {
|
this.list.splice(scope.$index, 1);
|
},
|
delTeatValueColumn(){
|
if (this.empiricalValueAdd - 1 === 0) { } else {
|
if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) {
|
this.empiricalValueAdd = this.empiricalValueAdd - 1;
|
this.list.forEach(i => {
|
i.testValueList.splice(this.empiricalValueAdd, 1);
|
});
|
}
|
}
|
},
|
updateTestValue(row){
|
if(row.rpId == null){
|
return
|
}
|
let obj = {
|
equiomentId: row.equipmentId,
|
rpId: row.rpId,
|
testValue: row.testValueList.join(",")
|
}
|
updateRawInsProduct(obj).then(res=>{
|
if(res.data.code === 0){
|
this.$message.success("更新成功")
|
this.init()
|
}else{
|
this.$message.success("更新失败")
|
}
|
}).catch(error=>{
|
this.$message.error(error)
|
})
|
},
|
init(){
|
if(this.dataForm.id){
|
getObj(this.dataForm.id).then(res=>{
|
let data = res.data.data
|
this.dataForm.name = data.name
|
this.dataForm.formTime = data.formTime
|
this.dataForm.code = data.code
|
this.dataForm.specs = data.specs
|
this.dataForm.unit = data.runit
|
this.dataForm.supplier = data.supplier
|
this.dataForm.number = data.number
|
this.dataForm.createTime = data.creatTime
|
this.dataForm.createUser = data.createUser
|
// this.dataForm.judgeState = data.judgeState
|
let userNameList = []
|
this.list = []
|
data.children.forEach(item=>{
|
userNameList.push(item.userName)
|
let arr = []
|
if(item.testValue != undefined ){
|
arr = item.testValue.split(",")
|
this.empiricalValueAdd = arr.length
|
}else{
|
this.empiricalValueAdd = 1
|
}
|
this.list.push({
|
equipmentId: item.equiomentId,
|
name: item.rpName,
|
required: item.required,
|
testValue: item.testValue,
|
unit: item.rpUnit,
|
testState: item.testState,
|
rpId: item.rpId,
|
testValueList: arr
|
})
|
})
|
this.conclusionTable = [{
|
code: data.code,
|
name: data.name,
|
userName: Array.from(new Set(userNameList)).join(','),
|
judgeState: data.judgeState
|
}]
|
}).catch(error=>{
|
this.$message.error("获取失败",error)
|
})
|
}else{
|
this.conclusionTable = []
|
}
|
},
|
save(){
|
let data = this.dataForm
|
data.rawInsProducts = this.list
|
data.rawInsProducts.forEach(item=>{
|
let val = item.testValueList.join(",")
|
item.testValue = val
|
})
|
addRawInspects(data).then(res=>{
|
this.$message.success("保存成功")
|
}).catch(error=>{
|
this.$message.error(error)
|
})
|
},
|
getDeviceList(){
|
selectDevice(null).then(res=>{
|
this.deviceList = res.data.data
|
})
|
},
|
},
|
}
|
</script>
|
|
<style>
|
.rawMaterial-detail {
|
width: 100%;
|
height: 470px;
|
padding: 10px 20px;
|
display: flex;
|
border: 1px solid #ddd;
|
background-color: #fff;
|
margin-top: 10px;
|
box-sizing: border-box;
|
flex-wrap: wrap;
|
}
|
|
.rawMaterial-result {
|
width: 100%;
|
height: 150px;
|
padding: 10px 20px;
|
display: flex;
|
border: 1px solid #ddd;
|
background-color: #fff;
|
margin-top: 10px;
|
box-sizing: border-box;
|
flex-wrap: wrap;
|
}
|
|
.rawMaterial-basic {
|
background-color: #fff;
|
height: 155px;
|
display: flex;
|
flex-wrap: wrap;
|
padding: 10px 20px;
|
border: 1px solid #ddd;
|
box-sizing: border-box;
|
}
|
|
.rawMaterial-related-stock-part {
|
background-color: #fff;
|
width: 100%;
|
height: 220px;
|
border: 1px solid #ddd;
|
padding: 10px 20px 0px 20px;
|
box-sizing: border-box;
|
}
|
|
.rawMaterial-bom {
|
background-color: #fff;
|
width: 100%;
|
height: 499px;
|
border: 1px solid #ddd;
|
padding: 10px 20px;
|
box-sizing: border-box;
|
}
|
|
.rawMaterial-bom .el-card__header {
|
padding: 1px 20px;
|
border-bottom: 0px solid #ebeef5;
|
}
|
|
.rawMaterial-bom .el-card__body {
|
height: calc(100% - 22px);
|
}
|
|
.rawMaterial-bom .el-card__body .el-collapse {
|
height: 100%;
|
overflow: auto;
|
}
|
|
.rawMaterial-technology-params {
|
background-color: #fff;
|
width: calc(52% - 20px);
|
float: left;
|
height: 719px;
|
border: 1px solid #ddd;
|
padding: 10px 20px;
|
margin-left: 20px;
|
}
|
|
.rawMaterial-structure {
|
background-color: #fff;
|
width: 35%;
|
float: left;
|
height: 719px;
|
border: 1px solid #ddd;
|
padding: 10px 20px;
|
box-sizing: border-box;
|
}
|
|
.rawMaterial-flow {
|
background-color: #fff;
|
width: calc(65% - 20px);
|
float: left;
|
height: 719px;
|
border: 1px solid #ddd;
|
padding: 10px 20px;
|
margin-left: 20px;
|
box-sizing: border-box;
|
}
|
|
/*自定义disabled状态下checkbox的样式*/
|
.completeproductstructure-checkout
|
.el-checkbox__input.is-disabled.is-checked
|
.el-checkbox__inner {
|
background-color: #006eff;
|
border-color: #006eff;
|
}
|
|
.completeproductstructure-checkout
|
.el-checkbox__input.is-disabled.is-checked
|
+ span.el-checkbox__label {
|
color: #006eff;
|
border-color: #006eff;
|
}
|
|
.completeproductstructure-checkout
|
.el-checkbox__input.is-disabled
|
.el-checkbox__inner {
|
background-color: #ffffff;
|
cursor: pointer;
|
}
|
|
.completeproductstructure-checkout
|
.el-checkbox__input.is-disabled
|
+ span.el-checkbox__label {
|
color: #606266;
|
cursor: pointer;
|
}
|
|
.completeproductstructure-checkout .el-checkbox__inner::after {
|
border: 1px solid #fff !important;
|
border-left: 0 !important;
|
border-top: 0 !important;
|
cursor: pointer !important;
|
}
|
|
.rawMaterial-bom-div {
|
width: 100%;
|
margin-bottom: 5px;
|
}
|
|
.rawMaterial-technology-div {
|
width: 100%;
|
margin-bottom: 5px;
|
margin-right: 10px;
|
}
|
|
.rawMaterial-technology-div .el-collapse {
|
border-top: 0px;
|
border-bottom: 0px;
|
}
|
|
.structure-detail-table th.gutter {
|
display: table-cell !important;
|
width: 10px !important;
|
}
|
|
.structure-detail-table colgroup.gutter {
|
display: table-cell !important;
|
width: 10px !important;
|
}
|
|
.final-product-checkout .el-card__header {
|
padding: 0px 20px;
|
border-bottom: 0px;
|
}
|
|
.final-product-checkout .el-card__body {
|
padding: 0px 20px 20px;
|
}
|
|
.orimaterial-quantity .el-card__header {
|
padding: 0px 20px;
|
border-bottom: 0px;
|
}
|
|
.orimaterial-quantity .el-card__body {
|
padding: 0px 20px 20px;
|
}
|
|
.rawMaterial-materialcost-table th.gutter {
|
display: table-cell !important;
|
width: 10px !important;
|
}
|
|
.rawMaterial-materialcost-table colgroup.gutter {
|
display: table-cell !important;
|
width: 10px !important;
|
}
|
|
.GooFlow .ico .ico_start:before {
|
color: red;
|
}
|
.highlight-tab-class {
|
color: #006eff;
|
background: #e4e7ed;
|
border-top: 1px solid #006eff;
|
}
|
.unhighlight-tab-class {
|
border: 1px solid #e4e7ed;
|
border-bottom: none;
|
}
|
</style>
|