From ef4e46f182aee6253805e66286dee847c573cbde Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 22 五月 2024 17:18:34 +0800 Subject: [PATCH] 完成原材料、产品检验、过程检,包装检键盘切换输入框 --- src/views/quality/processInspect/processInspect-form.vue | 410 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 362 insertions(+), 48 deletions(-) diff --git a/src/views/quality/processInspect/processInspect-form.vue b/src/views/quality/processInspect/processInspect-form.vue index 99272dd..b2dc4c5 100644 --- a/src/views/quality/processInspect/processInspect-form.vue +++ b/src/views/quality/processInspect/processInspect-form.vue @@ -110,6 +110,10 @@ <el-tab-pane label="妫�楠岄」鐩�"> <el-row> <el-col v-if="resultVal == null" :span="24" class="inspectionProject_span" style="text-align: right;"> + <el-button size="small" + type="primary" + v-if="inspectionItems&&inspectionItems.length>0" + @click="saveTable()">淇濆瓨</el-button> <el-button size="mini" @click="clickAddInspectionColumn()">娣诲姞妫�娴嬪�煎垪</el-button> <el-button size="mini" @click="clickDeleteInspectionColumn()">鍒犻櫎妫�娴嬪�煎垪</el-button> </el-col> @@ -142,7 +146,9 @@ class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" - @blur="changeState(scope.row,true)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> + @blur="changeState(scope.row,true)" placeholder="璇疯緭鍏ユ娴嬪��" + :id="`detectionValue${index}`+scope.$index" + @keyup.native="moveFocus($event, scope.$index, `detectionValue${index}`)"></el-input> <span v-if="resultVal != null && processInspectVo.id != null" v-text="scope.row.empiricalValueAddss[index]"></span> </el-tooltip> @@ -188,7 +194,9 @@ class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.inote" - @blur="changeState(scope.row)" placeholder="璇疯緭鍏ユ楠屾弿杩�"></el-input> + @blur="changeState(scope.row)" placeholder="璇疯緭鍏ユ楠屾弿杩�" + :id="`remark`+scope.$index" + @keyup.native="moveFocus($event, scope.$index, `remark`)"></el-input> <span v-if="resultVal != null && processInspectVo.id != null" v-text="scope.row.inote"></span> </el-tooltip> @@ -284,6 +292,54 @@ </el-table-column> </el-table> </el-tab-pane> + <el-tab-pane label="闄勪欢"> + <el-table :data="configFileTableData" height="400px"> + <el-table-column + prop="orderNumber" + align="center" + label="璁㈠崟鍙�" + show-overflow-tooltip + > + </el-table-column> + <el-table-column + prop="originalFileName" + align="center" + label="鍘熸枃浠跺悕" + width="200" + > + </el-table-column> + <el-table-column prop="fileName" align="center" label="鏂囦欢鍚庣紑"> + </el-table-column> + <el-table-column prop="createUser" align="center" label="涓婁紶浜�"> + </el-table-column> + <el-table-column + prop="createTime" + align="center" + label="涓婁紶鏃堕棿" + show-overflow-tooltip + > + </el-table-column> + <el-table-column prop="updateUser" align="center" label="鏇存柊浜�"> + </el-table-column> + <el-table-column + prop="updateTime" + align="center" + label="鏇存柊鏃堕棿" + show-overflow-tooltip + > + </el-table-column> + <el-table-column fixed="right" align="center" label="鎿嶄綔"> + <template slot-scope="scope"> + <el-button + @click="downloadProcessConfigFiles(scope.row)" + type="text" + size="small" + >涓嬭浇</el-button + > + </template> + </el-table-column> + </el-table> + </el-tab-pane> </el-tabs> </div> <div class="finishedProduct-result"> @@ -339,6 +395,27 @@ <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button> </span> </el-dialog> + <el-dialog + title="涓嶅悎鏍间俊鎭�" + :visible.sync="unqualified" + width="30%"> + <div style="height: 30vh;width: 100%;"> + <el-form :model="ruleForm" :rules="unqualifiedRules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> + <el-form-item label="涓嶅悎鏍兼暟閲�" prop="number"> + <el-input v-model="ruleForm.number"></el-input> + </el-form-item> + <el-form-item label="鎵规鍙�" prop="outBatchNo"> + <el-select v-model="ruleForm.outBatchNo" multiple placeholder="璇烽�夋嫨鎵规鍙�" style="width: 100%;" :multiple-limit="Number(ruleForm.number)"> + <el-option :label="m" :value="m" v-for="(m,i) in outBatchNoList" :key="i"></el-option> + </el-select> + </el-form-item> + </el-form> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="unqualified = false">鍙� 娑�</el-button> + <el-button type="primary" :loading="loading" @click="handleSubmit">纭� 瀹�</el-button> + </span> + </el-dialog> <processPart :paramObj="paramObj" :currshowlist.sync="workshop" /> </div> </template> @@ -350,24 +427,45 @@ queryById, updateDeviceBypppId, updateProcessInsProduct, + updateProcessInsProduct2, updateProcessInspectsById, + selOutBatchNo, } from '@/api/quality/processInspect' import { getProcessConfigFiles, deleteProcessConfigFile, downloadProcessConfigFile } from '@/api/quality/attachment' +import { getProcessConfigFile } from '@/api/plan/manufacturingorder' import processPart from '@/views/common/processinspect-part' import { selectDevice } from '@/api/quality/processInspect' import qrCodeApp from '@/views/common/qrCodeApp' import { validatePositiveInteger } from '@/util/validate' import { getStore } from '@/util/store' +import * as customerorder from '@/api/plan/customerorder' export default { components:{ qrCodeApp,processPart }, data() { return { + outBatchNoList:[], + unqualifiedInfo:null, + loading:false, + ruleForm:{ + number:'', + outBatchNo:[] + }, + unqualifiedRules:{ + number: [ + { required: true, message: '璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', trigger: 'blur' }, + { pattern: /^\d+$/, message: '璇疯緭鍏ユ暟瀛�', trigger: 'blur' } + ], + outBatchNo: [ + { required: true, message: '璇烽�夋嫨鎵规鍙�', trigger: 'change' }, + ], + }, + unqualified:false, progrecessFileLoading: false, processConfigFileTableData: [], headers: { @@ -421,9 +519,25 @@ }, inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� inspectionResultForm: [], + configFileTableData:[], + dataForm:null, + keyfield:['remark'], + keyfield0:['detectionValue0'] } }, watch: { + empiricalValueAdd(newVal){ + if(newVal!=this.keyfield0.length){ + if(newVal>this.keyfield0.length){ + this.keyfield0 = [] + for(let i=0;i<newVal;i++){ + this.keyfield0.push('detectionValue'+i) + } + }else{ + this.keyfield0.splice(this.keyfield0.length-1,1); + } + } + } }, beforeUpdate() { this.$nextTick(() => { @@ -441,8 +555,55 @@ val == undefined ? this.resultVal = null : this.resultVal = val } this.init() + this.selOutBatchNo() }, methods: { + selOutBatchNo(){ + selOutBatchNo({id:this.$route.query.id}).then((res)=>{ + this.outBatchNoList = res.data.data + }) + }, + getProcessConfigFile(){ + getProcessConfigFile({ + orderNumber: this.dataForm.orderNumber, + lineNumber: this.dataForm.customerNo + }).then((res)=>{ + this.configFileTableData = res.data.data + }) + }, + downloadProcessConfigFiles(row){ + customerorder.downloadProcessConfigFile( + row.fileName, + row.bucketName, + row.originalFileName + ) + }, + saveTable(){ + let processInsProduct = []; + this.inspectionItems.forEach((item) => { + if(item.children&&item.children.length>0){ + item.children.forEach((child)=>{ + let obj = {} + obj.id = child.iid; + obj.eId = child.eId; + obj.note = child.inote; + obj.inspectionValue = child.empiricalValueAddss.join(','); + obj.required = child.required; + processInsProduct.push(obj) + }) + } + }) + if(processInsProduct.length>0){ + updateProcessInsProduct2(processInsProduct).then(res => { + if (res.data.code == 0) { + this.$message.success("鏇存柊鎴愬姛") + } else { + this.$message.error("鏇存柊澶辫触") + } + this.init() + }) + } + }, delProcessConfigFile(row) { this.$confirm('鏄惁鍒犻櫎璇ラ檮浠�', '鎻愮ず', { confirmButtonText: '纭畾', @@ -553,27 +714,30 @@ number: 0, result: this.inspectionResultForm[0].result } + this.unqualifiedInfo = obj; if (pro > 0) { - this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - inputPattern: /^\d+$/, - inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' - }).then(({ value }) => { - obj.number = value - updateProcessInspectsById(obj).then(res => { - let data = res.data.data - if (data) { - if (data.indexOf("鎴愬姛") > 0) { - this.$message.success(data); - this.checkTestState() - } else { - this.$message.warning(data); - } - return - } - }); - }).catch(() => { }); + this.unqualified = true; + this.$refs.ruleForm.resetFields(); + // this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { + // confirmButtonText: '纭畾', + // cancelButtonText: '鍙栨秷', + // inputPattern: /^\d+$/, + // inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' + // }).then(({ value }) => { + // obj.number = value + // updateProcessInspectsById(obj).then(res => { + // let data = res.data.data + // if (data) { + // if (data.indexOf("鎴愬姛") > 0) { + // this.$message.success(data); + // this.checkTestState() + // } else { + // this.$message.warning(data); + // } + // return + // } + // }); + // }).catch(() => { }); } else { updateProcessInspectsById(obj).then(res => { let data = res.data.data @@ -589,6 +753,36 @@ }); } this.init() + }, + handleSubmit(){ + this.$refs.ruleForm.validate((valid) => { + if (valid) { + if(this.ruleForm.outBatchNo.length!=this.ruleForm.number){ + this.$message.error(`璇烽�夋嫨${this.ruleForm.number}涓壒娆″彿`) + return + } + this.loading = true; + let obj = {number:this.ruleForm.number,outBatchNo:this.ruleForm.outBatchNo.join(','),...this.unqualifiedInfo}; + updateProcessInspectsById(obj).then(res => { + let data = res.data.data + if (data) { + if (data.indexOf("鎴愬姛") > 0) { + this.$message.success(data); + this.$refs.ruleForm.resetFields(); + this.unqualified = false; + this.checkTestState() + this.init() + } else { + this.$message.warning(data); + } + return + } + this.loading = false; + }); + } else { + return false; + } + }); }, checkTestState() { let resultVal = '1' @@ -611,6 +805,7 @@ queryById(id).then(res => { let result = res.data.data this.processInspectVo.moNo = result.moNo + this.dataForm = result; this.processInspectVo.operationTaskId = result.technologyOperationName this.processInspectVo.proInsNo = result.proInsNo this.processInspectVo.projectName = result.projectName @@ -635,9 +830,11 @@ if (obj.inspectionValue) { arr = obj.inspectionValue.split(",") } - obj.empiricalValueAddss = arr + this.$set(obj, "empiricalValueAddss", arr) + this.$set(obj, "inote", obj.inote) if(!obj.inote){ - obj.inote = null + // obj.inote = null + this.$set(obj, "inote", null) } if (arr.length > this.empiricalValueAdd) { this.empiricalValueAdd = arr.length @@ -668,6 +865,7 @@ userName: Array.from(new Set(userList)).join(","), result: this.resultVal == null ? rVal : this.resultVal, }] + this.getProcessConfigFile() }).catch(error => { console.log(error) }) @@ -711,30 +909,30 @@ return } } - if (row.iid != null && row.iid != '') { - let str = "" - row.empiricalValueAddss.forEach(e => { - str += e + "," - }) - str = str.slice(0, -1); - if (str === undefined || str === '' || str === null) { - return - } - let obj = { - devideId: row.eId, - ppid: row.iid, - inspectionValue: str, - note : row.inote - } - updateProcessInsProduct(obj).then(res => { - if (res.data.code == 0) { - this.$message.success("鏇存柊鎴愬姛") - } else { - this.$message.error("鏇存柊澶辫触") - } - this.init() - }) - } + // if (row.iid != null && row.iid != '') { + // let str = "" + // row.empiricalValueAddss.forEach(e => { + // str += e + "," + // }) + // str = str.slice(0, -1); + // if (str === undefined || str === '' || str === null) { + // return + // } + // let obj = { + // devideId: row.eId, + // ppid: row.iid, + // inspectionValue: str, + // note : row.inote + // } + // updateProcessInsProduct(obj).then(res => { + // if (res.data.code == 0) { + // this.$message.success("鏇存柊鎴愬姛") + // } else { + // this.$message.error("鏇存柊澶辫触") + // } + // this.init() + // }) + // } }, addTestProject() { let val = this.processInspectVo @@ -779,6 +977,7 @@ this.processInspectVo.orderNumber = data.orderNumber this.processInspectVo.projectName = data.projectName this.processInspectVo.customerName = data.customerName + this.processInspectVo.customerNo = data.customerNo this.processInspectVo.material = data.material this.processInspectVo.specs = data.specs this.processInspectVo.unit = data.unit @@ -834,13 +1033,128 @@ }) } }); + _than.saveTable(); } } }, // 娣诲姞妫�楠屽�煎垪 clickAddInspectionColumn() { this.empiricalValueAdd = this.empiricalValueAdd + 1; + }, + moveFocus(event, index, key) { + console.log(key, index,key) + let keyfield = this.insertArrayAt(this.keyfield,0,this.keyfield0); + // enter閿� + // if (event.keyCode === 13) { // 鍥炶溅 + // if (index === this.getLen() - 1 && key === keyfield[keyfield.length - 1]) { // 鏈�鍚庝竴琛屾渶鍚庝竴涓� + // console.log('鏈�鍚庝竴琛屾渶鍚庝竴涓棤娉曞洖杞�') + // return + // } + // this.$nextTick(() => { + // event.target.blur() + // }) + // if (key === keyfield[keyfield.length - 1]) { // 褰撳墠琛屾渶鍚庝竴涓�,璺宠浆涓嬩竴琛岀涓�涓� + + // } else { // 璺宠浆涓嬩竴涓� + // const nextkeyindex = keyfield.findIndex(k => k === key) + 1 + // this.$nextTick(() => { + // document.getElementById(keyfield[nextkeyindex] + index).focus() + // }) + // } + // } + + // 鍚戜笂 =38 + if (event.keyCode === 38) { + console.log('鍚戜笂') + if (index === 0) { // 绗竴琛� + console.log('绗竴琛屾棤娉曞悜涓�') + return + } + document.getElementById(key + index).blur() + let i = 0; + while (true){ + let dom = document.getElementById(key + (index - 1-i)) + if(dom){ + dom.focus() + return + }else if((index-1-i)==0){ + return + } + i++ + } } + + // 涓� = 40 + if (event.keyCode === 40) { + console.log('鍚戜笅') + if (index === this.getLen() - 1) { // 鏈�鍚庝竴琛� + console.log('鏈�鍚庝竴琛屾棤娉曞悜涓�') + return + } + document.getElementById(key + index).blur() + this.$nextTick(() => { + let i = 0; + while (true){ + let dom = document.getElementById(key + (index + 1+i)) + console.log(dom,key + (index + 1+i)) + if(dom){ + dom.focus() + return + }else if((index+1+i)==this.getLen() - 1){ + return + } + i++ + } + }) + } + + // 宸� = 37 + if (event.keyCode === 37) { + console.log('鍚戝乏') + if (index === 0 && key === keyfield[0]) { // 绗竴琛岀涓�涓� + console.log('绗竴琛岀涓�涓棤娉曞悜宸�') + return + } + document.getElementById(key + index).blur() + const prevkeyindex = keyfield.findIndex(k => k === key) - 1 + this.$nextTick(() => { + let dom = document.getElementById(keyfield[prevkeyindex] + index) + if(dom){ + dom.focus() + } + }) + } + + // 鍙� = 39 + if (event.keyCode === 39) { + console.log('鍚戝彸') + if (index === this.getLen() - 1 && key === keyfield[keyfield.length - 1]) { // 鏈�鍚庝竴琛屾渶鍚庝竴涓� + console.log('鏈�鍚庝竴琛屾渶鍚庝竴涓棤娉曞悜鍙�') + return + } + document.getElementById(key + index).blur() + const nextkeyindex = keyfield.findIndex(k => k === key) + 1 + this.$nextTick(() => { + let dom = document.getElementById(keyfield[nextkeyindex] + index) + if(dom){ + dom.focus() + } + }) + } + }, + insertArrayAt(arr1, index, arr2) { + return arr1.slice(0, index).concat(arr2, arr1.slice(index)); + }, + getLen(){ + let arr = [] + this.inspectionItems.forEach(item => { + arr.push(item) + item.children.forEach(child => { + arr.push(child) + }) + }) + return arr.length + } }, } </script> -- Gitblit v1.9.3