<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 v-if="resultVal!=null && dataForm.id!=null">查看-原材料检验</h2>
|
<h2 v-else>编辑-原材料检验</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" :disabled="resultVal!=null && dataForm.id!=null">
|
<el-button
|
slot="append"
|
icon="el-icon-search"
|
:disabled="resultVal!=null && dataForm.id!=null"
|
@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" :disabled="resultVal!=null" />
|
</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" disabled />
|
</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" disabled />
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item prop="projectName" label="项目名称">
|
<el-input v-model="dataForm.projectName" disabled >
|
</el-input>
|
</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-if="dataForm.id==null" size="small" @click="clickAddLine">添加检验行</el-button>
|
<el-button v-if="resultVal==null || dataForm.id==null" size="small" @click="addTeatValueColumn()">添加检测值列</el-button>
|
<el-button v-if="resultVal==null || dataForm.id==null" 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="list.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 || (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.testValueList[index]"
|
@blur="updateTestValue(scope.row,index)" placeholder="请输入检测值"></el-input> -->
|
|
<el-autocomplete
|
:disabled="scope.row.equipmentId == null || (dataForm.id!=null&&resultVal!=null)"
|
class="inline-input"
|
v-model="scope.row.testValueList[index]"
|
:fetch-suggestions="querySearch"
|
placeholder="请输入内容"
|
@select="handleSelect"
|
></el-autocomplete>
|
|
</el-tooltip>
|
</template>
|
</el-table-column>
|
|
<el-table-column prop="deviceName" label="试验设备" min-width="260">
|
<template slot-scope="scope">
|
<el-select :disabled="resultVal!=null && dataForm.id!=null" style="width:100%"
|
v-model="scope.row.equipmentId" filterable @change="updateDevice(scope.row,scope.$index)">
|
<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.testState == '1'">合格</el-tag>
|
<el-tag type="danger" v-else-if="scope.row.testState == '0'">不合格</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作">
|
<template>
|
<el-button type="text" :disabled="resultVal!=null && dataForm.id!=null" @click="showDialog()" size="small">上报</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-col>
|
</el-row>
|
</div>
|
</div>
|
<rawMaterialPartDialog :paramObj="paramObj" :currshowlist.sync="showPart" @listenToPartEvent="selectPart" />
|
<el-dialog
|
title="上报"
|
:visible.sync="dialogVisible"
|
width="30%" class="l-mes">
|
<el-row>
|
<el-col>
|
<span>不合格数量:</span>
|
<el-input type="number" v-model="unqualifiedNum" placeholder="请输入不合格数量"/>
|
</el-col>
|
<el-col>
|
<span>实检数量:</span>
|
<el-input type="number" placeholder="请输入实检数量" v-model="fiedNum"/>
|
</el-col>
|
</el-row>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button type="primary" @click="submitSave()">确 定</el-button>
|
</span>
|
</el-dialog>
|
<!-- <rawMaterialPartDialog :currentRow ="currentRow" @costPlannedAmountChange="costPlannedAmountChange"/> -->
|
</div>
|
</template>
|
|
<script>
|
import {
|
selectDevice,
|
addRawInspects,
|
getObj,
|
updateRawInsProduct,
|
updateRawInspectsById,
|
updateDeviceById, } from '@/api/quality/rawMaterial'
|
import rawMaterialPartDialog from '@/views/common/rawMaterial-part'
|
import { log } from 'util'
|
export default {
|
// props:['currentRow'],
|
computed:{},
|
components:{
|
rawMaterialPartDialog
|
},
|
data(){
|
return{
|
currentRow:[],
|
userlist:[],
|
fiedNum: null,
|
unqualifiedNum: null,
|
dialogVisible:false,
|
resultVal: null,
|
projectList: [],
|
paramObj: {},
|
IFSData: [],
|
showPart: false,
|
// 添加列
|
empiricalValueAdd: 1,
|
// 编辑时存储最长的列数字,做删除判断
|
empiricalValueAddMaxNumber: 0,
|
columnList: [],
|
dataForm:{
|
id: null,
|
judgeState: null,
|
formTime: '',
|
message: '',
|
name: '',
|
code: '88.118.1/A0498220',
|
specs: '',
|
unit: '',
|
number: '',
|
supplier: '',
|
rawInsProducts: [{
|
equipmentId: 0,
|
name: '',
|
required: '',
|
testValue: '',
|
unit: '',
|
testValueList: []
|
}]
|
},
|
form: null,
|
list:[],
|
conclusion: null,
|
conclusionTable: [{
|
code: '',
|
name: '',
|
userName: '',
|
testState: ''
|
}],
|
dataRule: {},
|
deviceList: [],
|
restaurants:[],
|
whetherNot:'',
|
}
|
},
|
beforeUpdate(){
|
this.$nextTick(()=>{
|
this.$refs.table.doLayout();
|
})
|
},
|
mounted(){
|
this.dataForm.id = this.$route.query.id
|
this.resultVal = this.$route.query.resultVal
|
if(this.resultVal == null){
|
let val = sessionStorage.getItem("raw-resultVal-"+this.dataForm.id)
|
val == undefined ? null : this.resultVal=val
|
}
|
this.init()
|
this.getDeviceList()
|
this.restaurants = this.loadAll();
|
// this.costPlannedAmountChange()
|
},
|
watch:{
|
dialogVisible(newVal){
|
if(newVal){
|
this.unqualifiedNum = null
|
this.fiedNum = null
|
}
|
},
|
|
},
|
methods:{
|
//项目
|
// xxxx(){
|
// console.log(currentRow);
|
// },
|
// 事件处理函数
|
// costPlannedAmountChange(value) {
|
// console.log("==>");
|
// console.log(value.rawInsProducts);
|
// this.userlist = value.rawInsProducts
|
// this.list = this.userlist
|
// console.log(this.list);
|
// },
|
querySearch(queryString, cb) {
|
var restaurants = this.restaurants;
|
var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
|
|
cb(results);
|
},
|
createFilter(queryString) {
|
return (restaurant) => {
|
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
|
};
|
},
|
loadAll(){
|
return [
|
{"value":"是"},
|
{"value":"否"}
|
];},
|
handleSelect(item) {
|
console.log(item);
|
},
|
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) {
|
console.log("成功--",param);
|
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.dataForm.projectName = param.projectName
|
this.projectList = param.rawInsProducts == null ? [] : param.rawInsProducts
|
// param.rawInsProducts.forEach(item=>{
|
// this.list.push(item)
|
// })
|
}
|
},
|
queryCode(){
|
this.paramObj = {
|
code: this.dataForm.code
|
}
|
console.log(this.paramObj);
|
this.showPart = true
|
},
|
updateDevice(row,index){
|
if(this.dataForm.id != null){
|
updateDeviceById({equiomentId:row.equipmentId,rpId:row.rpId}).then(res=>{
|
this.list[index].testValue = ''
|
this.list[index].testState = null
|
this.list[index].testValueList = []
|
}).catch(error=>{
|
console.log(error)
|
})
|
}
|
},
|
checkTestState(){
|
let resultVal = '1'
|
this.list.forEach(item=>{
|
if(item.children){
|
if(obj.testState == 0){
|
resultVal = '0'
|
}
|
}
|
})
|
this.resultVal = resultVal
|
this.conclusionTable[0].testState = resultVal
|
sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,resultVal)
|
},
|
showDialog(){
|
let pro = this.list.filter(item => {
|
return item.testState == 0;
|
})
|
if (pro.length > 0) {
|
this.dialogVisible = true
|
}else{
|
this.submitSave()
|
}
|
},
|
//上报
|
submitSave(){
|
let data = {
|
id: this.dataForm.id,
|
number: this.unqualifiedNum,
|
toLocationNo: this.fiedNum
|
}
|
updateRawInspectsById(data).then(res => {
|
if(res.data.code == 0){
|
sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data)
|
this.$message.success("上报成功");
|
this.dialogVisible = false
|
}
|
});
|
this.checkTestState()
|
},
|
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,index){
|
if(row.rpId == null || row.testValueList[index]==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(",")
|
if(arr.length > this.empiricalValueAdd){
|
this.empiricalValueAdd = arr.length
|
}
|
}
|
this.list.push({
|
equipmentId: item.equiomentId,
|
deviceName: item.deviceName,
|
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(','),
|
testState: this.resultVal==null?null:this.resultVal
|
}]
|
}).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("保存成功")
|
this.$router.go(-1)
|
}).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>
|