From 786563298fa34e83409aec052a1bf21329164d67 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期一, 06 五月 2024 14:58:56 +0800 Subject: [PATCH] 2023-11-20 过程检bug修改 --- src/views/quality/processInspect/processInspect-form.vue | 506 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 383 insertions(+), 123 deletions(-) diff --git a/src/views/quality/processInspect/processInspect-form.vue b/src/views/quality/processInspect/processInspect-form.vue index 7695830..d91e8d5 100644 --- a/src/views/quality/processInspect/processInspect-form.vue +++ b/src/views/quality/processInspect/processInspect-form.vue @@ -27,6 +27,11 @@ <el-form-item label="杞﹂棿璁㈠崟鍙�" prop="moNo"> <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null" v-model="processInspectVo.moNo" placeholder="璇疯緭鍏ヨ溅闂磋鍗曞彿" autocomplete="off" > + <!-- <el-button + slot="append" + icon="el-icon-search" + :disabled="resultVal!=null" + @click="queryCode"></el-button> --> <el-button slot="append" icon="el-icon-full-screen" @@ -100,103 +105,238 @@ </div> </el-form> </div> - <div class="finishedProduct-detail"> - <el-row style="width:100%;z-index: 10;height:30px;"> - <el-col :span="12" class="inspectionProject_span">妫�楠岄」鐩�</el-col> - <el-col v-if="resultVal == null" :span="12" class="inspectionProject_span" style="text-align: right;"> - <el-button size="mini" @click="clickAddInspectionColumn()">娣诲姞妫�娴嬪�煎垪</el-button> - <el-button size="mini" @click="clickDeleteInspectionColumn()">鍒犻櫎妫�娴嬪�煎垪</el-button> - </el-col> - </el-row> - <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' }" - :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="搴忓彿" show-overflow-tooltip width="60"></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"></el-table-column> - <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" - 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.empiricalValueAddss[index]" - @blur="changeState(scope.row,true)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> - <span v-if="resultVal != null && processInspectVo.id != 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> + <div> + <el-tabs class="finishedProduct-detail" @tab-click="tabsClick"> + <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> + </el-row> + <el-row> + <el-col :span="24"> + <el-table border + :data="inspectionItems" + height="400" + :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" prop="parentIndex" label="搴忓彿" width="60"> + <template scope="scope"> + <span v-if="scope.row.isIndex">{{scope.row.parentIndex}}</span> + </template> + </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"></el-table-column> + <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" + 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.empiricalValueAddss[index]" + @blur="changeState(scope.row,true)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input> + <span v-if="resultVal != null && processInspectVo.id != 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="200"> + <template slot-scope="scope"> + <span v-if="resultVal != null && scope.row.iname != null" + v-text="scope.row.ename"></span> + <div v-else> + <el-select style="width:60%" v-model="scope.row.eId" v-if="scope.row.iname != null" + filterable @change="updateDevice(scope.row, scope.$index)"> + <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 show-overflow-tooltip + label="妫�楠屾弿杩�" width="140" style="text-align: center;"> + <template slot-scope="scope"> + <el-col> + <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"> + <span style="color: #34BD66;" v-if="scope.row.iresult == 1">鍚堟牸</span> + <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">涓嶅悎鏍�</span> + <span v-else>鏆傛棤缁撹</span> + </div> + </template> + </el-table-column> + </el-table> + </el-col> + </el-row> + </el-tab-pane> + <el-tab-pane label="闄勪欢涓婁紶" type="card"> + <div style="display: flex;justify-content:flex-end;"> + <div></div> + </div> + <div + v-loading="progrecessFileLoading" + element-loading-text="璇风◢绛夛紝鏂囦欢涓婁紶涓�" + > + <el-upload + :disabled="processInspectVo.proInsNo==null || (resultVal!=null && resultVal!='')" + drag + ref="upload" + action="/mes/rawInsProduct/upload" + :auto-upload="true" + :headers="headers" + :before-upload="submitUpload" + :on-success="uploadSuccess" + :data="paramData" + :with-credentials="true" + :show-file-list="false" + > + <i class="el-icon-upload"></i> + <div class="el-upload__text"> + 灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em> + </div> + </el-upload> + </div> + <el-table :data="processConfigFileTableData" height="260px"> + <el-table-column + prop="rawInsNo" + align="center" + width="120" + 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 align="center" label="鎿嶄綔"> + <template slot-scope="scope"> + <el-button + @click="delProcessConfigFile(scope.row)" + type="text" + size="small" + :disabled="(resultVal!=null && resultVal!='')" + >鍒犻櫎</el-button + > + <el-button + @click="downloadProcessConfigFile(scope.row)" + type="text" + size="small" + >涓嬭浇</el-button + > + </template> + </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="deviceName" label="璇曢獙璁惧" min-width="200"> - <template slot-scope="scope"> - <span v-if="resultVal != null && scope.row.iname != null" - v-text="scope.row.ename"></span> - <div v-else> - <el-select style="width:60%" v-model="scope.row.eId" v-if="scope.row.iname != null" - filterable @change="updateDevice(scope.row, scope.$index)"> - <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 + prop="originalFileName" + align="center" + label="鍘熸枃浠跺悕" + width="200" + > </el-table-column> - <el-table-column show-overflow-tooltip - label="妫�楠屾弿杩�" width="140" style="text-align: center;"> - <template slot-scope="scope"> - <el-col> - <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 prop="fileName" align="center" label="鏂囦欢鍚庣紑"> </el-table-column> - <el-table-column label="缁撹" fixed="right" min-width="100"> - <template slot-scope="scope"> - <div v-if="scope.row.iname != null"> - <span style="color: #34BD66;" v-if="scope.row.iresult == 1">鍚堟牸</span> - <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">涓嶅悎鏍�</span> - <span v-else>鏆傛棤缁撹</span> - </div> - </template> + <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-col> - </el-row> + </el-tab-pane> + </el-tabs> </div> <div class="finishedProduct-result"> <el-row style="width:100%"> @@ -251,6 +391,7 @@ <el-button type="primary" @click="deviceCode = false">纭� 瀹�</el-button> </span> </el-dialog> + <processPart :paramObj="paramObj" :currshowlist.sync="workshop" /> </div> </template> @@ -261,17 +402,38 @@ queryById, updateDeviceBypppId, updateProcessInsProduct, + updateProcessInsProduct2, updateProcessInspectsById, } 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 + qrCodeApp,processPart }, data() { return { + progrecessFileLoading: false, + processConfigFileTableData: [], + headers: { + Authorization: 'Bearer ' + getStore({ name: 'access_token' }) + }, + paramData: { + rawInsNo: '', + lineNumber: '', + type: 2 + }, + paramObj:{}, qrcode: false, row: null, proIndex: 0, @@ -291,6 +453,7 @@ resultVal: null, technologyList: [], deviceList: [], + workshop:false,//杞﹂棿寮圭獥 hasChildren: true, optionsSamplename: [], // 娣诲姞鍒� @@ -313,6 +476,8 @@ }, inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� inspectionResultForm: [], + configFileTableData:[], + dataForm:null } }, watch: { @@ -335,6 +500,97 @@ this.init() }, methods: { + 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: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning', + closeOnClickModal: false + }).then(function() { + return deleteProcessConfigFile(row.id) + }).then((data) => { + this.getConfigFiles() + }) + }, + getConfigFiles() { + const param = { + no: this.processInspectVo.rawInsNo, + lineNumber: this.processInspectVo.id, + type: 2 + } + getProcessConfigFiles(param).then((res) => { + this.processConfigFileTableData = res.data.data + }) + }, + downloadProcessConfigFile(row) { + downloadProcessConfigFile({ + bucket: row.bucketName, + fileName: row.fileName, + originalFileName: row.originalFileName + }) + }, + submitUpload() { + this.paramData.no = this.processInspectVo.proInsNo + this.paramData.lineNumber = this.processInspectVo.id + this.progrecessFileLoading = true + }, + uploadSuccess() { + this.progrecessFileLoading = false + this.getConfigFiles() + }, + tabsClick(tab,even){ + if(tab.index == 1){ + if(this.processInspectVo.proInsNo==null){ + this.$message.error("璇峰厛淇濆瓨杩囩▼妫�楠屼俊鎭�") + return + } + this.getConfigFiles(); + } + }, + queryCode(){ + this.workshop = true + }, cancelCodeDialog(){ this.qrcode = false }, @@ -453,6 +709,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 @@ -464,7 +721,9 @@ this.processInspectVo.unit = result.punit this.processInspectVo.quantity = result.quantity let userList = [] - result.children.forEach(item => { + result.children.forEach((item,index) => { + item.isIndex = true; + item.parentIndex = index + 1; item.iid = Math.random() if (item.children != undefined) { item.children.forEach(obj => { @@ -475,7 +734,7 @@ if (obj.inspectionValue) { arr = obj.inspectionValue.split(",") } - obj.empiricalValueAddss = arr + this.$set(obj, "empiricalValueAddss", arr) if(!obj.inote){ obj.inote = null } @@ -508,6 +767,7 @@ userName: Array.from(new Set(userList)).join(","), result: this.resultVal == null ? rVal : this.resultVal, }] + this.getProcessConfigFile() }).catch(error => { console.log(error) }) @@ -551,30 +811,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 @@ -619,6 +879,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 @@ -666,7 +927,7 @@ } else { if (_than.empiricalValueAddMaxNumber != _than.empiricalValueAdd - 1) { _than.empiricalValueAdd = _than.empiricalValueAdd - 1; - _than.changeRowResult() + // _than.changeRowResult() _than.inspectionItems.forEach(i => { if(i.children){ i.children.forEach(ele=>{ @@ -674,6 +935,7 @@ }) } }); + _than.saveTable(); } } }, @@ -688,14 +950,12 @@ <style scoped> .finishedProduct-detail { width: 100%; - height: 470px; + height: 520px; padding: 10px 20px; - display: flex; border: 1px solid #ddd; background-color: #fff; margin-top: 10px; box-sizing: border-box; - flex-wrap: wrap; } .finishedProduct-result { -- Gitblit v1.9.3