From dce1a39a7c7c52d36007e2b134def3d2bfb85ce0 Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期四, 04 一月 2024 13:58:13 +0800 Subject: [PATCH] 质检模块修改 --- src/views/quality/finishedProductInspection/finishedProduct-form.vue | 330 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 271 insertions(+), 59 deletions(-) diff --git a/src/views/quality/finishedProductInspection/finishedProduct-form.vue b/src/views/quality/finishedProductInspection/finishedProduct-form.vue index ec1d6f6..0ca060a 100644 --- a/src/views/quality/finishedProductInspection/finishedProduct-form.vue +++ b/src/views/quality/finishedProductInspection/finishedProduct-form.vue @@ -8,57 +8,70 @@ <h2 v-else>缂栬緫-浜у搧妫�楠屽崟</h2> </div> <div class="btn-group header-right"> - <el-button @click="addTestProject" v-if="processInspectVo.id==null">鐢熸垚妫�楠岄」鐩�</el-button> + <el-button type="primary" @click="addTestProject" v-if="processInspectVo.id==null">鐢熸垚妫�楠岄」鐩�</el-button> </div> </div> <div class="page-main"> <div class="finishedProduct-basic"> - <el-form :model="processInspectVo" ref="addInspectionform" class="l-mes" - label-position="right" label-width="120px" style="width: 100%" size="small"> + <el-form :model="processInspectVo" :rules="processInspectRules" ref="addInspectionform" class="l-mes" + label-position="right" label-width="120px" style="width: 100%" size="small"> <div class="formwrapper"> <el-row> <el-col :span="6"> + <el-form-item label="浜у搧妫�楠岀紪鍙凤細"> + <el-input @blur="selectInfoByOrderId" disabled + v-model="processInspectVo.finInsNo" autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="6"> <el-form-item label="璁㈠崟鍙凤細"> <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null" - v-model="processInspectVo.orderNumber" placeholder="璇疯緭鍏ヨ鍗曞彿" autocomplete="off" /> + v-model="processInspectVo.orderNumber" autocomplete="off" /> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="鎶ュ伐鍗曞彿锛�"> + <el-input disabled v-model="processInspectVo.productNo" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="瀹㈡埛鍚嶇О锛�"> - <el-input disabled v-model="processInspectVo.prname" - placeholder="璇疯緭鍏ュ鎴峰悕绉�" autocomplete="off" /> + <el-input disabled v-model="processInspectVo.prname" autocomplete="off" /> </el-form-item> </el-col> + </el-row> + <el-row> <el-col :span="6"> <el-form-item label="宸ョ▼鍚嶇О锛�"> - <el-input disabled v-model="processInspectVo.sname" - placeholder="璇疯緭鍏ュ伐绋嬪悕绉�" autocomplete="off" /> + <el-input disabled v-model="processInspectVo.sname" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="浜у搧鍚嶇О锛�"> + <el-tooltip class="item" effect="dark" :content="processInspectVo.material"> <el-select style="width: 100%" @change="changeOptionsSamplename" :disabled="processInspectVo.id != null" v-model="processInspectVo.material" size="small" placeholder="璇烽�夋嫨浜у搧鍚嶇О"> <el-option v-for="(item,index) in optionsSamplename" :key="index" :label="item.material" :value="item.materialCode"> </el-option> </el-select> + </el-tooltip> </el-form-item> </el-col> - </el-row> - <el-row> <el-col :span="6"> - <el-form-item label="浜у搧缂栫爜锛�"> - <el-input disabled v-model="processInspectVo.mcode" - placeholder="璇疯緭鍏ヤ骇鍝佺紪鐮�" autocomplete="off" /> + <el-form-item label="浜у搧缂栧彿锛�"> + <el-input disabled v-model="processInspectVo.mcode" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input disabled v-model="processInspectVo.specificationsModel" - placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> + <el-tooltip class="item" effect="dark" :content="processInspectVo.specificationsModel"> + <el-input disabled v-model="processInspectVo.specificationsModel" autocomplete="off" /> + </el-tooltip> </el-form-item> </el-col> + </el-row> + <el-row> <el-col :span="6"> <el-form-item label="鍗曚綅锛�"> <el-input disabled v-model="processInspectVo.unit" @@ -69,6 +82,17 @@ <el-form-item label="鏁伴噺锛�"> <el-input v-model="processInspectVo.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" :disabled="processInspectVo.id != null" /> + </el-form-item> + </el-col> + <el-col :span="6" v-if="processInspectVo.id != null"> + <el-form-item label="鎵规鍙凤細"> + <el-input v-model="processInspectVo.outBatchNo" autocomplete="off" disabled /> + </el-form-item> + </el-col> + <el-col :span="6" v-if="processInspectVo.id != null"> + <el-form-item label="浜у搧鍚堟牸搴撲綅锛�" prop="locName"> + <el-input v-model="processInspectVo.locName" clearable style="width:100%" placeholder="璇烽�夋嫨鍚堟牸搴撲綅" disabled autocomplete="off"> + </el-input> </el-form-item> </el-col> </el-row> @@ -86,38 +110,85 @@ <el-row style="width:100%;"> <el-col :span="24"> <el-table border :data="inspectionItems" height="400" - :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" + :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" :cell-style="{textAlign:'center'}" row-key="iid" default-expand-all style="width: 100%" ref="table" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> <el-table-column type="index" label="搴忓彿" width="60"></el-table-column> - <el-table-column label="椤圭洰" prop="father" width="240" ></el-table-column> - <el-table-column prop="iname" label="鎸囨爣" width="240" ></el-table-column> - <el-table-column prop="iunit" label="鍗曚綅" width="240" ></el-table-column> - <el-table-column prop="required" label="鏍囧噯鍊�" width="240" ></el-table-column> + <el-table-column label="椤圭洰" prop="father" show-overflow-tooltip width="140" ></el-table-column> + <el-table-column prop="iname" label="鎸囨爣" show-overflow-tooltip width="140" ></el-table-column> + <el-table-column prop="iunit" label="鍗曚綅" show-overflow-tooltip width="140" ></el-table-column> + <el-table-column prop="required" label="鏍囧噯鍊�" width="140" show-overflow-tooltip ></el-table-column> <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="妫�娴嬪��" - width="240" style="text-align: center;"> + width="140" style="text-align: center;"> <template slot-scope="scope"> - <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" - 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, index)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> - <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> + <el-col v-if="scope.row.itype === '1'"> + <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" + 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)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> + <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> </el-tooltip> + </el-col> + <el-col v-else> + <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" + class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> + <el-select style="width: 100%;" @change="changeState(scope.row)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="璇烽�夋嫨"> + <el-option v-for="item in dataVal" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <span v-if="resultVal != null && processInspectVo.id != null" + v-text="scope.row.empiricalValueAddss[index]"></span> + </el-tooltip> + </el-col> </template> </el-table-column> - <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="250"> + <el-table-column prop="deviceName" label="璇曢獙璁惧" min-width="200"> <template slot-scope="scope"> <span v-if="resultVal!=null && processInspectVo.id!=null" v-text="scope.row.ename"></span> <div v-else> - <el-select style="width:100%" v-model="scope.row.eId" + <el-select style="width:60%" v-model="scope.row.eId" v-if="scope.row.iname != null" 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-option v-for="(item,index) in deviceList" + :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option> </el-select> + <el-button + size="small" + slot="append" + icon="el-icon-full-screen" + v-if="scope.row.iname != null" + @click="codeDevice(scope.row,scope.$index)"></el-button> </div> </template> </el-table-column> + <el-table-column prop="inspectionValue" + label="妫�楠屾弿杩�" width="140" style="text-align: center;"> + <template slot-scope="scope"> + <el-col v-if="scope.row.itype === '1'"> + <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" + 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> + + <span v-if="resultVal != null && processInspectVo.id != null" + v-text="scope.row.inote"></span> + </el-tooltip> + </el-col> + <el-col v-else> + <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" + 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> + <span v-if="resultVal != null && processInspectVo.id != null" + v-text="scope.row.inote"></span> + </el-tooltip> + </el-col> + </template> + </el-table-column> <el-table-column label="缁撹" fixed="right" min-width="100"> <template slot-scope="scope"> <div v-if="scope.row.iname!=null"> @@ -138,10 +209,10 @@ <el-row style="width:100%;"> <el-col :span="24"> <el-table border height="90" :data="inspectionResultForm" - :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" - :cell-style="{textAlign:'center'}"> - <el-table-column prop="materialCode" label="鐗╂枡缂栧彿"></el-table-column> - <el-table-column prop="material" label="鐗╂枡鍚嶇О"></el-table-column> + :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" + :cell-style="{textAlign: 'center'}"> + <el-table-column prop="materialCode" width="200" label="鐗╂枡缂栧彿" show-overflow-tooltip></el-table-column> + <el-table-column prop="material" width="200" label="鐗╂枡鍚嶇О" show-overflow-tooltip></el-table-column> <el-table-column prop="userName" label="妫�楠屽憳"></el-table-column> <el-table-column prop="result" label="妫�楠岀粨璁�"> <template slot-scope="scope"> @@ -159,22 +230,52 @@ </el-row> </div> </div> + <el-dialog + title="璁惧鎵弿" + :visible.sync="deviceCode" + width="60%"> + <div style="height: 100vh;width: 100%;"> + <qr-code-app ref="codeDeviceCompont" @ok="getDeviceResultInfo" @cancelCodeDialog="cancelDeviceCodeDialog"></qr-code-app> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="deviceCode = false">鍙� 娑�</el-button> + <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button> + </span> +</el-dialog> </div> </template> <script> -import { +import { chooseMater, addFinish, queryById, updateDeviceById, updateFinishedInsProduct, updateFinishedInspectById, + selectDeviceAPI, + updateLocationIdById, } from '@/api/quality/finishedProduct' -import { selectDevice } from '@/api/quality/rawMaterial' + import { getIfsLocationByGroupCopyAll } from '@/api/warehouse/location' + import { remote } from '@/api/admin/dict' + import qrCodeApp from '@/views/common/qrCodeApp' export default { + components:{ + qrCodeApp + }, data() { return { + row: null, + proIndex: 0, + deviceCode: false, + locationList: [], + dataVal: [{ + label: '鏄�', + value: '鏄�' + }, { + label: '鍚�', + value: '鍚�' + }], resultVal: null, deviceList: [], hasChildren: true, @@ -183,18 +284,26 @@ empiricalValueAdd: 1, // 缂栬緫鏃跺瓨鍌ㄦ渶闀跨殑鍒楁暟瀛楋紝鍋氬垹闄ゅ垽鏂� empiricalValueAddMaxNumber: 0, + processInspectRules: { + locName: [{required: true,message:'璇烽�夋嫨搴撲綅鍙�',trigger:'blur'}] + }, processInspectVo: { id: null, + finInsNo: null, material: null, mcode: null, prname: null, sname: null, - orderNumber: "ZTTIC20230001", + orderNumber: null, qualityTraceability: null, quantity: null, specificationsModel: null, unit: null, - technologyId: null + technologyId: null, + documentId: null, + outBatchNo: null, + locName: null, + productNo: null, }, inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� inspectionResultForm: [], @@ -212,14 +321,50 @@ mounted() { this.getDeviceList() this.processInspectVo.id = this.$route.query.id - this.resultVal = this.$route.query.resultVal + this.resultVal = this.$route.params.resultVal if(this.resultVal == null){ - let val = sessionStorage.getItem("finished-resultVal"); + let val = sessionStorage.getItem("finished-resultVal-"+this.processInspectVo.id); val == undefined ? this.resultVal=null : this.resultVal = val } + this.getIfsLocation() this.init() }, methods: { + cancelDeviceCodeDialog(){ + this.deviceCode = false + }, + getDeviceResultInfo(val){ + let id=val.split("id@")[1] + if(id!=undefined&&id!=''&&id!=null){ + let filterData=this.deviceList.filter(item=>{ + return item.id==id + })[0] + console.log(filterData); + this.row.eId=Number(id) + this.updateDevice(this.row) + }else{ + this.$message({ + message: '鏈瘑鍒嚭璁¢噺鍣ㄥ叿淇℃伅锛�', + type: 'warning' + }); + } + }, + codeDevice(row,index){ + this.row=row + console.log("row",row); + this.deviceCode =true + this.$refs.codeDeviceCompont.openCamera() + this.proIndex=index + }, + getIfsLocation(){ + getIfsLocationByGroupCopyAll({locationGroup: '1'}).then(res=>{ + if(res.status===200){ + this.locationList = res.data.data + } + }).catch(error=>{ + console.error(error); + }) + }, submitSave(){ let pro = 0 this.inspectionItems.forEach(item => { @@ -230,6 +375,11 @@ pro+=arr.length } }) + let obj = { + id: this.processInspectVo.id, + number: 0, + result: this.inspectionResultForm[0].result + } if (pro > 0) { this.$prompt('璇疯緭鍏ヤ笉鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�', { confirmButtonText: '纭畾', @@ -237,11 +387,8 @@ inputPattern: /^\d+$/, inputErrorMessage: '璇疯緭鍏ユ纭暟瀛楁牸寮�' }).then(({ value }) => { - let data = { - id: this.processInspectVo.id, - number: value - } - updateFinishedInspectById(data).then(res => { + obj.number = value + updateFinishedInspectById(obj).then(res => { if(res.data.data.indexOf("鎴愬姛") > 0){ this.$message.success("涓婃姤鎴愬姛"); this.checkTestState() @@ -251,7 +398,7 @@ }); }).catch(() => {}); }else{ - updateFinishedInspectById({id:this.processInspectVo.id,number:0}).then(res => { + updateFinishedInspectById(obj).then(res => { if(res.data.data.indexOf("鎴愬姛") > 0){ this.$message.success("涓婃姤鎴愬姛"); this.checkTestState() @@ -275,13 +422,14 @@ }) this.resultVal = resultVal this.inspectionResultForm[0].result = resultVal - sessionStorage.setItem("finished-resultVal",resultVal) + sessionStorage.setItem("finished-resultVal-"+this.processInspectVo.id,resultVal) }, init(){ let id = this.processInspectVo.id if(id != null){ queryById(id).then(res=>{ let result = res.data.data + this.processInspectVo.finInsNo = result.finInsNo this.processInspectVo.orderNumber = result.orderNumber this.processInspectVo.mcode = result.materialCode this.processInspectVo.prname = result.customerName @@ -290,6 +438,10 @@ this.processInspectVo.specificationsModel = result.specs this.processInspectVo.unit = result.punit this.processInspectVo.quantity = result.quantity + this.processInspectVo.documentId = result.documentId + this.processInspectVo.outBatchNo = result.outBatchNo + this.processInspectVo.locName = result.locName + this.processInspectVo.productNo = result.productNo let userList = [] result.children.forEach(item=>{ item.iid = Math.random() @@ -303,6 +455,9 @@ arr = obj.inspectionValue.split(",") } obj.empiricalValueAddss = arr + if(obj.note){ + snote=obj.inote + } if(arr.length > this.empiricalValueAdd){ this.empiricalValueAdd = arr.length } @@ -310,24 +465,51 @@ } }) this.inspectionItems = result.children + let rVal = '' + let passNum = 0 + let unPassNum = 0 + this.inspectionItems.forEach(item => { + if (item.children) { + item.children.forEach(obj => { + if(obj.iresult == 0){ + unPassNum += 1 + } + if(obj.iresult == 1){ + passNum+=1 + } + }) + } + }) + rVal = (passNum+unPassNum)>0 ? unPassNum>0 ? '0' :'1' : '' this.inspectionResultForm = [{ materialCode: result.materialCode, material: result.material, userName: Array.from(new Set(userList)).join(","), - result: this.resultVal==null ? '' : this.resultVal, + result: this.resultVal==null ? rVal : this.resultVal, }] }).catch(error=>{ - console.log(error) + console.error(error) }) } }, getDeviceList(){ - selectDevice(null).then(res=>{ + selectDeviceAPI(null).then(res=>{ this.deviceList = res.data.data }) }, updateDevice(row){ - updateDeviceById({equiomentId:row.eId,fpid:row.iId}).then(res=>{ + let rowId=JSON.stringify(row.iid) + updateDeviceById({deviceId:row.eId,fpid:row.iid}).then(res=>{ + this.inspectionItems.forEach(obj=>{ + obj.children.forEach(c=>{ + if(c.iid==rowId){ + c.inspectionValue = null + c.iresult = null + c.empiricalValueAddss = [] + c.inote='' + } + }) + }) }).catch(error=>{ console.log(error) }) @@ -341,8 +523,9 @@ this.processInspectVo.material = sample.material this.processInspectVo.specificationsModel = sample.specs this.processInspectVo.unit = sample.unit + this.processInspectVo.documentId = sample.documentId }, - changeState(row, index) { + changeState(row) { if (row.iid != null && row.iid != '') { let str = "" row.empiricalValueAddss.forEach(e => { @@ -353,9 +536,10 @@ return } let obj = { - equiomentId: row.eId, + deviceId: row.eId, fpid: row.iid, - inspectionValue: str + inspectionValue: str, + note : row.inote } updateFinishedInsProduct(obj).then(res=>{ if(res.data.code == 0){ @@ -370,6 +554,7 @@ addTestProject() { let val = this.processInspectVo let data = { + finInsNo: val.finInsNo, customerName: val.prname, material: val.material, materialCode: val.mcode, @@ -378,12 +563,12 @@ quantity: val.quantity, specs: val.specificationsModel, unit: val.unit, + documentId: val.documentId } addFinish(data).then(res=>{ let id = res.data.data if(id != null){ queryById(id).then(response=>{ - console.log(response.data.data.children) let proList = response.data.data.children proList.forEach(item=>{ item.iid = Math.random(); @@ -422,8 +607,34 @@ this.processInspectVo.material = null this.processInspectVo.specificationsModel = null this.processInspectVo.unit = null + this.processInspectVo.documentId = null } }) + }, + changeRowResult(){ + if(this.inspectionItems){ + this.inspectionItems.forEach(e=>{ + if(e.children){ + e.children.forEach(i=>{ + if(i.empiricalValueAddss.length>1){ + let arr = i.inspectionValue.split(",") + arr.splice((arr.length-1),1) + let obj = { + devideId: i.eId, + fpid: row.iid, + inspectionValue: arr.join(","), + note : i.inote + } + updateFinishedInsProduct(obj).then(res => { + if (res.data.code == 0) { + this.init() + } + }) + } + }) + } + }) + } }, // 鍒犻櫎妫�楠屽�煎垪 clickDeleteInspectionColumn() { @@ -431,6 +642,7 @@ } else { if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { this.empiricalValueAdd = this.empiricalValueAdd - 1; + this.changeRowResult() this.inspectionItems.forEach(i => { i.empiricalValueAddss.splice(this.empiricalValueAdd, 1); }); @@ -458,7 +670,7 @@ flex-wrap: wrap; } -.finishedProduct-result { +basic.finishedProduct-result { width: 100%; height: 150px; padding: 10px 20px; @@ -472,7 +684,7 @@ .finishedProduct-basic { background-color: #fff; - height: 120px; + height: 155px; display: flex; flex-wrap: wrap; padding: 10px 20px; @@ -514,4 +726,4 @@ border-top: 0 !important; cursor: pointer !important; } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3