| | |
| | | <h2 v-else>编辑-原材料检验</h2> |
| | | </div> |
| | | <div class="btn-group header-right"> |
| | | <el-button @click="save()" v-if="this.dataForm.id==null">保存</el-button> |
| | | <el-button @click="save()" type="primary" v-if="this.dataForm.id==null">保存</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="page-main"> |
| | |
| | | label-width="110px"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="原材料检验编号" prop="rawInsNo"> |
| | | <el-input v-model="dataForm.rawInsNo" disabled> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="零件号" prop="code"> |
| | | <el-input v-model="dataForm.code" :disabled="resultVal!=null && dataForm.id!=null"> |
| | | <el-button |
| | | <!-- <el-button |
| | | slot="append" |
| | | icon="el-icon-search" |
| | | :disabled="resultVal!=null && dataForm.id!=null" |
| | | @click="queryCode()"></el-button> |
| | | @click="queryCode()"></el-button> --> |
| | | <el-button |
| | | slot="append" |
| | | icon="el-icon-full-screen" |
| | | :disabled="resultVal!=null && dataForm.id!=null" |
| | | @click="Turnonthecamera"></el-button> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="formTime" label="来料日期"> |
| | | <el-date-picker |
| | | <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 label="规格型号" prop="specs"> |
| | | <el-input v-model="dataForm.specs" disabled></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="unit" label="单位"> |
| | | <el-input |
| | |
| | | <el-input v-model="dataForm.number" :disabled="resultVal!=null" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="projectName" label="项目名称"> |
| | | <el-form-item prop="projectName" label="项目名称" v-if="dataForm.id!=null"> |
| | | <el-tooltip :disabled="dataForm.projectName==null" :content="dataForm.projectName"> |
| | | <el-input v-model="dataForm.projectName" disabled ></el-input> |
| | | </el-tooltip> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="报检日期" prop="createTime" v-if="dataForm.id!=null"> |
| | | <el-input v-model="dataForm.createTime" disabled /> |
| | |
| | | </div> |
| | | |
| | | |
| | | |
| | | |
| | | <div class="rawMaterial-detail"> |
| | | <el-row style="width:100%;z-index: 10;height:50px;"> |
| | | <el-col :span="18">检验项目</el-col> |
| | |
| | | </el-row> |
| | | <el-row style="width:100%;"> |
| | | <el-col :span="24"> |
| | | <el-table |
| | | :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" |
| | | <el-table |
| | | :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" |
| | | :cell-style="{textAlign:'center'}" |
| | | ref="table" |
| | | :data="list" |
| | | border |
| | | :data="list" |
| | | border |
| | | style="width: 100%;" |
| | | height="400" |
| | | row-key="iid" |
| | | default-expand-all |
| | | row-key="iid" |
| | | default-expand-all |
| | | :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> |
| | | <el-table-column type="index" label="序号" width="60"> |
| | | </el-table-column> |
| | |
| | | <el-input :disabled="dataForm.id != null" v-model="scope.row.unit" placeholder="请输入单位"></el-input> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | </el-table-column> |
| | | <el-table-column prop="required" label="标准值" width="260"> |
| | | <template slot-scope="scope"> |
| | |
| | | <el-select style="width:100%" allow-create filterable default-first-option |
| | | :disabled="scope.row.deviceId == null || (dataForm.id!=null&&resultVal!=null)" |
| | | v-model="scope.row.testValueList[index]" |
| | | placeholder="请输入或选择检测值" @change="updateTestValue(scope.row,scope.$index)"> |
| | | placeholder="请输入或选择检测值" |
| | | @change="changeState(scope.row,scope.$index)"> |
| | | <el-option label="是" value="是"/> |
| | | <el-option label="否" value="否"/> |
| | | </el-select> |
| | |
| | | <el-table-column prop="deviceName" label="试验设备" min-width="260"> |
| | | <template slot-scope="scope"> |
| | | <div v-if="!scope.row.children"> |
| | | <el-select :disabled="dataForm!=null && resultVal!=null" style="width:100%" |
| | | <el-select :disabled="dataForm!=null && resultVal!=null" style="width:100%" |
| | | v-model="scope.row.deviceId" filterable @change="updateDevice(scope.row,scope.$index)"> |
| | | <el-option v-for="(item,index) in deviceList" |
| | | <el-option v-for="(item,index) in deviceList" |
| | | :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | <el-table-column prop="note" label="检验描述" width="260" > |
| | | <template slot-scope="scope"> |
| | | <div v-if="!scope.row.children"> |
| | | <el-input :disabled="scope.row.deviceId == null || (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.note" placeholder="检验描述"></el-input> |
| | | <el-input @blur="changeState(scope.row, scope.$index)" :disabled="scope.row.deviceId == null || (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.note" placeholder="检验描述"></el-input> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | |
| | | <div class="rawMaterial-result"> |
| | | <el-row> |
| | | <el-col :span="24">检验结论</el-col> |
| | |
| | | <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'}" |
| | | :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-button type="primary" @click="submitSave()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="扫描" |
| | | :visible.sync="qrcode" |
| | | width="60%"> |
| | | <div style="height: 100vh;width: 100%;"> |
| | | <qr-code-app ref="codeCompont" @ok="getResultInfo" @cancelCodeDialog="cancelCodeDialog"></qr-code-app> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="qrcode = false">取 消</el-button> |
| | | <el-button type="primary" @click="qrcode = false">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | import { |
| | | selectDevice, |
| | | addRawInspects, |
| | | getObj, |
| | | updateRawInsProduct, |
| | | updateRawInspectsById, |
| | | updateDeviceById, } from '@/api/quality/rawMaterial' |
| | | updateDeviceById, chooseIFS} from '@/api/quality/rawMaterial' |
| | | import rawMaterialPartDialog from '@/views/common/rawMaterial-part' |
| | | export default { |
| | | import qrCodeApp from '@/views/common/qrCodeApp' |
| | | export default { |
| | | components:{ |
| | | rawMaterialPartDialog, |
| | | qrCodeApp |
| | | }, |
| | | computed:{}, |
| | | components:{ |
| | | rawMaterialPartDialog |
| | | }, |
| | | data(){ |
| | | return{ |
| | | qrcode: false, |
| | | userdata:[], |
| | | currentRow:[], |
| | | userlist:[], |
| | |
| | | this.$refs.table.doLayout(); |
| | | }) |
| | | }, |
| | | mounted(){ |
| | | created(){ |
| | | this.dataForm.id = this.$route.query.id |
| | | this.resultVal = this.$route.query.resultVal |
| | | if(this.resultVal == null){ |
| | |
| | | }, |
| | | }, |
| | | 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 |
| | | } |
| | | }) |
| | | getResultInfo(data){ |
| | | console.log("扫描出的二维码值",JSON.stringify(data)); |
| | | let obj=JSON.parse(data) |
| | | let info={"code":obj["part_no"]} |
| | | this.paramObj = info |
| | | this.showPart = true |
| | | }, |
| | | cancelCodeDialog(){ |
| | | this.qrcode = false |
| | | }, |
| | | // 打开相机 |
| | | Turnonthecamera() { |
| | | console.log("执行"); |
| | | this.qrcode = true |
| | | this.$refs.codeCompont.openCamera() |
| | | // this.camera = 'rear' |
| | | }, |
| | | // 扫码结果回调 |
| | | // onDecode(result) { |
| | | // console.log(result) |
| | | // this.turnCameraOff() |
| | | // }, |
| | | // 相机反转 |
| | | // switchCamera() { |
| | | // switch (this.camera) { |
| | | // case 'front': |
| | | // this.camera = 'rear' |
| | | // break |
| | | // case 'rear': |
| | | // this.camera = 'front' |
| | | // break |
| | | // default: |
| | | // this.$toast('错误') |
| | | // } |
| | | // }, |
| | | // 关闭相机 |
| | | // turnCameraOff() { |
| | | // this.camera = 'off' |
| | | // this.qrcode = false |
| | | // }, |
| | | // 打开手电筒 |
| | | // ClickFlash() { |
| | | // switch (this.torchActive) { |
| | | // case true: |
| | | // this.torchActive = false |
| | | // break |
| | | // case false: |
| | | // this.torchActive = true |
| | | // break |
| | | // default: |
| | | // this.$toast('错误') |
| | | // } |
| | | // }, |
| | | |
| | | // 检查是否调用摄像头 |
| | | // async onInit(promise) { |
| | | // try { |
| | | // await promise |
| | | // } catch (error) { |
| | | // if (error.name === 'StreamApiNotSupportedError') { |
| | | // } else if (error.name === 'NotAllowedError') { |
| | | // this.errorMessage = 'Hey! I need access to your camera' |
| | | // } else if (error.name === 'NotFoundError') { |
| | | // this.errorMessage = 'Do you even have a camera on your device?' |
| | | // } else if (error.name === 'NotSupportedError') { |
| | | // this.errorMessage = |
| | | // 'Seems like this page is served in non-secure context (HTTPS, localhost or file://)' |
| | | // } else if (error.name === 'NotReadableError') { |
| | | // this.errorMessage = |
| | | // "Couldn't access your camera. Is it already in use?" |
| | | // } else if (error.name === 'OverconstrainedError') { |
| | | // this.errorMessage = |
| | | // "Constraints don't match any installed camera. Did you asked for the front camera although there is none?" |
| | | // } else { |
| | | // this.errorMessage = 'UNKNOWN ERROR: ' + error.message |
| | | // } |
| | | // } |
| | | // }, |
| | | // 确认回调 |
| | | selectPart(param, nodePart, index) { |
| | | console.log(param) |
| | | if (typeof param !== 'undefined') { |
| | | this.dataForm.rawInsNo = param.rawInsNo |
| | | this.dataForm.code = param.code |
| | | this.dataForm.name = param.name |
| | | this.dataForm.formTime = param.formTime |
| | |
| | | } |
| | | this.showPart = true |
| | | }, |
| | | updateDevice(row,index){ |
| | | if(this.dataForm.id != null){ |
| | | updateDeviceById({deviceId:row.deviceId,rpId:row.rpId}).then(res=>{ |
| | | this.list[index].testValue = '' |
| | | this.list[index].testState = null |
| | | this.list[index].testValueList = [] |
| | | }).catch(error=>{ |
| | | console.log(error) |
| | | updateDevice(row, index) { |
| | | updateDeviceById({ deviceId: row.deviceId, rpId: row.rpId }).then(res => { |
| | | row.testValue = null |
| | | row.testState = null |
| | | row.testValueList = [] |
| | | row.note = null |
| | | }).catch(error => { |
| | | console.log(error) |
| | | }) |
| | | } |
| | | }, |
| | | checkTestState(){ |
| | | let resultVal = '1' |
| | | this.list.forEach(item=>{ |
| | | if(item.children){ |
| | | if(obj.testState == 0){ |
| | | resultVal = '0' |
| | | } |
| | | item.children.forEach(ele=>{ |
| | | if(ele.testState == 0){ |
| | | resultVal = '0' |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | this.resultVal = resultVal |
| | |
| | | let data = { |
| | | id: this.dataForm.id, |
| | | number: this.unqualifiedNum, |
| | | result: this.conclusionTable[0].testState |
| | | } |
| | | updateRawInspectsById(data).then(res => { |
| | | if(res.data.code == 0){ |
| | | if(res.data.code == 0 && (res.data.data=='1'|| res.data.data=='0')){ |
| | | sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data) |
| | | this.$message.success("上报成功"); |
| | | this.dialogVisible = false |
| | | }else{ |
| | | this.$message.error("上报失败,",res.data.data); |
| | | } |
| | | this.dialogVisible = false |
| | | this.checkTestState() |
| | | }); |
| | | this.checkTestState() |
| | | }, |
| | | addTeatValueColumn(){ |
| | | this.empiricalValueAdd = this.empiricalValueAdd + 1; |
| | |
| | | if (arr.length > this.empiricalValueAdd) { |
| | | this.empiricalValueAdd = arr.length |
| | | } |
| | | }) |
| | | this.list.push(ele) |
| | | }) |
| | | }else{ |
| | | ele.children.push({ |
| | | deviceId: null, |
| | |
| | | name: null, |
| | | unit: null, |
| | | userName: null, |
| | | testValue: null, |
| | | testValue: '', |
| | | testValueList: [], |
| | | note: null, |
| | | testState: null |
| | | testState: '' |
| | | }) |
| | | this.list.push(ele) |
| | | } |
| | | |
| | | }, |
| | | changeRowResult(){ |
| | | if(this.list){ |
| | | this.list.forEach(e=>{ |
| | | if(e.children){ |
| | | e.children.forEach(i=>{ |
| | | if(i.testValueList.length>1){ |
| | | let arr = i.testValue.split(",") |
| | | arr.splice((arr.length-1),1) |
| | | let obj = { |
| | | deviceId: i.deviceId, |
| | | rpId: i.rpId, |
| | | testValue: arr.join(","), |
| | | note: i.note |
| | | } |
| | | updateRawInsProduct(obj).then(res=>{ |
| | | if(res.data.code === 0){ |
| | | this.init() |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | delTeatValueColumn(){ |
| | | if (this.empiricalValueAdd - 1 === 0) { } else { |
| | | if (this.empiricalValueAdd - 1 > 0) { |
| | | if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { |
| | | this.empiricalValueAdd = this.empiricalValueAdd - 1; |
| | | this.changeRowResult() |
| | | this.list.forEach(i => { |
| | | i.testValueList.splice(this.empiricalValueAdd, 1); |
| | | if(i.children){ |
| | | i.children.forEach(ele=>{ |
| | | ele.testValueList.splice(this.empiricalValueAdd, 1); |
| | | }) |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }, |
| | | updateTestValue(row,index){ |
| | | console.log(row); |
| | | if(row.rpId == null){ |
| | | return |
| | | } |
| | | let val = row.testValueList.join(","); |
| | | let obj = { |
| | | deviceId: row.deviceId, |
| | | rpId: row.rpId, |
| | | testValue: val, |
| | | note: row.note |
| | | } |
| | | 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.rawInsNo = data.rawInsNo |
| | | this.dataForm.name = data.name |
| | | this.dataForm.formTime = data.formTime |
| | | this.dataForm.code = data.code |
| | |
| | | } |
| | | ele.iid = Math.random() |
| | | ele.father = item.rpFather |
| | | if (item.children != undefined) { |
| | | item.children.forEach(obj => { |
| | | let arr= [] |
| | | if(obj.userName){ |
| | | userNameList.push(obj.userName) |
| | | } |
| | | let arr= [] |
| | | if(obj.testValue){ |
| | | arr = obj.testValue.split(",") |
| | | } |
| | | if (arr.length > this.empiricalValueAdd) { |
| | | this.empiricalValueAdd = arr.length |
| | | } |
| | | let o = { |
| | | deviceId: obj.deviceId, |
| | |
| | | ele.children.push(o) |
| | | }) |
| | | this.list.push(ele) |
| | | }} |
| | | }) |
| | | let rVal = '1' |
| | | this.list.forEach(item=>{ |
| | | if(item.children){ |
| | | item.children.forEach(ele=>{ |
| | | if(ele.testState == 0){ |
| | | rVal = '0' |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | this.conclusionTable = [{ |
| | | code: data.code, |
| | | name: data.name, |
| | | userName: Array.from(new Set(userNameList)).join(','), |
| | | testState: this.resultVal==null?null:this.resultVal |
| | | testState: this.resultVal==null?rVal:this.resultVal |
| | | }] |
| | | }).catch(error=>{ |
| | | this.$message.error("获取失败",error) |
| | |
| | | }else{ |
| | | this.conclusionTable = [] |
| | | } |
| | | }, |
| | | changeState(row, index) { |
| | | if(row){ |
| | | let isTrue = true |
| | | for(var i=0;i<row.testValueList.length;i++){ |
| | | let val = row.testValueList[i] |
| | | let reg = /^[0-9]*[1-9][0-9]*$/ |
| | | console.log(['是','否'].includes(val)); |
| | | if(!reg.test(val) && !['是','否'].includes(val)){ |
| | | this.$message.error("请输入数字或选择是否") |
| | | row.testValueList[i] = null |
| | | isTrue = false |
| | | } |
| | | } |
| | | if(!isTrue){ |
| | | return |
| | | } |
| | | } |
| | | if (row.rpId != null && row.rpId != '') { |
| | | let val = row.testValueList.join(",") |
| | | if (val === undefined || val === '' || val === null) { |
| | | return |
| | | } |
| | | let obj = { |
| | | deviceId: row.deviceId, |
| | | rpId: row.rpId, |
| | | testValue: val, |
| | | note: row.note |
| | | } |
| | | updateRawInsProduct(obj).then(res => { |
| | | if (res.data.code == 0) { |
| | | this.$message.success("更新成功") |
| | | } else { |
| | | this.$message.error("更新失败") |
| | | } |
| | | this.init() |
| | | }) |
| | | } |
| | | }, |
| | | // 删除子项目 |
| | | delChildren(row,index,isParent) { |
| | |
| | | }, |
| | | //添加子项目 |
| | | addChildren(row){ |
| | | console.log(row); |
| | | let obj = { |
| | | deviceId: null, |
| | | deviceName: null, |
| | |
| | | }, |
| | | save(){ |
| | | let data = this.dataForm |
| | | this.list.forEach(item=>{ |
| | | item.children.forEach(c=>{ |
| | | c.testValue=c.testValueList.join(",") |
| | | }) |
| | | }) |
| | | data.rawInsProducts = this.list |
| | | addRawInspects(data).then(res=>{ |
| | | this.$message.success("保存成功") |