From 901d81f1c56281bab87044d2ff562d8ed8601efa Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 11 三月 2024 09:25:17 +0800 Subject: [PATCH] 完成包装核对功能 --- src/views/quality/Packaging_ledger/index.vue | 591 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 474 insertions(+), 117 deletions(-) diff --git a/src/views/quality/Packaging_ledger/index.vue b/src/views/quality/Packaging_ledger/index.vue index ce34a87..7f70b34 100644 --- a/src/views/quality/Packaging_ledger/index.vue +++ b/src/views/quality/Packaging_ledger/index.vue @@ -8,18 +8,18 @@ :isShowHide="true" :prelang="prelang" :ajaxFun="ajaxFun" - :options="options" - @currentChange="handleCurrentChange" + :options="options" + @handleSelectionChange="handleSelectionChange" ref="processconfiguration" > - <template #toolbar></template> + <template #toolbar></template> </ttable> </el-col> <el-col :span="13" style="padding-left: 10px"> <el-card> <div slot="header"> <el-row> - <el-col :span="8"> + <el-col :span="6"> <span>瑁呯鏄庣粏</span> </el-col> <el-col :span="8" :offset="4"> @@ -33,6 +33,16 @@ </el-col> <el-col :span="2"> <el-button + v-if="!isCheck && permissions.quality_packaging_ledger_info_add" + style="float: right; padding: 3px 6px;color:#fff;background-color: #9f7b95;" + type="text" + @click="handleCheck" + >鏍稿 + </el-button> + </el-col> + <el-col :span="2"> + <el-button + v-if="!isCheck && permissions.quality_packaging_ledger_info_add" style="float: right; padding: 3px 0" type="text" @click="addpreserve" @@ -41,6 +51,7 @@ </el-col> <el-col :span="2"> <el-button + v-if="!isCheck && permissions.quality_packaging_ledger_info_add" style="float: right; padding: 3px 0" type="text" @click="relateOperationParam()" @@ -50,67 +61,75 @@ </el-row> </div> <el-table - :data="testStandardParams" - id="testStandardParamTable" - ref="testStandardParam" - - highlight-current-row - height="700" - style="width: 100%" - class="l-mes-table" - border - stripe - > - <el-table-column - type ="index" - label="搴忓彿" - align="center" - width="50" - /> - <el-table-column - label="浜у搧" - prop="product" - align="center" - /> - <el-table-column - label="浜у搧缂栧彿" - prop="productNo" - align="center" - > - </el-table-column> - <el-table-column - label="瑙勬牸鍨嬪彿" - prop="specs" - align="center" - > - </el-table-column> - <el-table-column - label="鍗曚綅" - prop="unit" - align="center" - > - </el-table-column> - <el-table-column - label="鏁伴噺" - prop="number" - align="center" - width="80" - > - <template slot-scope="scope"> - <el-input v-model="scope.row.number"></el-input> - </template> - </el-table-column> - <el-table-column label="鍗曚綅" prop="unit" align="center" /> - <el-table-column - fixed="right" - label="鎿嶄綔" - align="center" - width="80"> - <template slot-scope="scope"> - <el-button @click="deleteadd(scope.row)" size="small">鍒犻櫎</el-button> - </template> - </el-table-column> - </el-table> + :data="testStandardParams" + id="testStandardParamTable" + ref="testStandardParam" + + highlight-current-row + height="700" + style="width: 100%" + class="l-mes-table" + border + stripe + > + <el-table-column + type ="index" + label="搴忓彿" + align="center" + width="50" + /> + <el-table-column + label="浜у搧" + prop="product" + show-overflow-tooltip + align="center" + /> + <el-table-column + label="浜у搧缂栧彿" + prop="productNo" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鎵规鍙�" + prop="outBatchNo" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="瑙勬牸鍨嬪彿" + prop="specs" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鍗曚綅" + prop="unit" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鏁伴噺" + prop="number" + align="center" + show-overflow-tooltip + width="80" + ></el-table-column> + <el-table-column + v-if="permissions.quality_packaging_ledger_info_operate" + fixed="right" + label="鎿嶄綔" + align="center" + width="80"> + <template slot-scope="scope"> + <el-button type="text" @click="deleteadd(scope.row)" icon="el-icon-delete" size="small">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> </el-card> </el-col> </el-row> @@ -118,8 +137,7 @@ <!-- 鏂板 --> <packfrom :currshowlist.sync="addOrUpdateVisible" - @way = "wayRenovate" - > + @refreshDataList="getData"> </packfrom> <packfromadd :currshowlist.sync="increase" @@ -127,20 +145,159 @@ @handleSelectionChange = "preserve" > </packfromadd> - </basic-container> + </basic-container> + <el-dialog title="鏍囩鍒楄〃" top="5vh" :visible.sync="diaPrintTab" width="500px"> + <div style="width:100%;height: 400px;overflow-y: auto;"> + <div class="dia_body" id="qrCard"> + <el-card v-for="(item, i) in qrData" :key="i" > + <div> + <table border="2px" class="x1111116"> + <tr class="x1111113"> + <td class="x1111114" colspan=6> + <div style="height: 60px;display: flex;margin-top: 4px;"> + <div style="margin-top: 5px;"> + <img width="150" height="48" src="../../../../public/img/image001.jpg" alt="IMG_256"> + </div> + <div style="margin-left: 45px;margin-top: 15px ;"> + <span lang="EN-US" class="x1111111">涓ぉ娴锋磱绉戞妧鏈夐檺鍏徃</span> + </div> + </div> + </td> + </tr> + <tr class="x1111117"> + <td class="x1111114"> + <span style="font-family: 瀹嬩綋;text-align: center;">鍖� 瑁� 浜�:</span> + </td> + <td class="x1111114" colspan=4 >{{ item.createUser }} </td> + <td class="x1111114" rowspan=3 > + <div style="padding: 1px;"> + <vueQr :text=str+item.packageBoxId :size="110" :margin="1"></vueQr> + </div> + </td> + </tr> + <tr class="x1111117"> + <td class="x1111114"> + <span style="font-family: 瀹嬩綋;text-align: center;">鍖� 瑁� 缂栧彿锛�</span> + </td> + <td class="x1111114" colspan=4>{{ item.packageNo }}</td> + </tr> + <tr class="x1111117"> + <td class="x1111114"> + <span style="font-family: 瀹嬩綋;text-align: center;">鍚� 鍚� 鍙凤細</span> + </td> + <td class="x1111114" colspan=4>{{ item.contractNo }}</td> + </tr> + <tr class="x1111113"> + <td class="x1111114" colspan=6> + <div style="height: 75px;" > + <p><span lang="EN-US" class="x1111112">鍦板潃锛氭睙鑻忕渷鍗楅�氱粡娴庢妧鏈紑鍙戝尯甯稿叴璺�96鍙�</span></p> + <p><span lang="EN-US" class="x1111112">鐢佃瘽/浼犵湡锛�0513鈥�89191125</span></p> + </div> + </td> + </tr> + </table> + </div> + <!-- <el-row> + <el-col :span="10" :offset="3">搴忓彿锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">鍖呰缂栧彿锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.packageNo }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">鍖呰鍙拌处浜岀淮鐮侊細</el-col> + <el-col :span="10"> + <vueQr :text=str+item.packageBoxId :size="110" :margin="1"></vueQr> + </el-col> + </el-row> + <div style="background-color: blueviolet;height: 80px;"> + 1111 + </div> --> + </el-card> + </div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="diaPrintTab = false">鍙� 娑�</el-button> + <el-button type="primary" @click="printFun">鎵� 鍗�</el-button> + </span> + </el-dialog> + <input type="password" id="ScanCodeInfo" v-model="codeInfo" @keyup.enter="keyup" style="opacity: 0;height: 0px;margin: 0px;padding: 0px;position: absolute;top: 0;"></input> + <el-dialog title="鏍稿鍒楄〃" top="5vh" :visible.sync="checkShow" width="800px"> + <el-table + :data="testStandardParams" + id="testStandardParamTable" + ref="testStandardParam" + + highlight-current-row + height="700" + style="width: 100%" + class="l-mes-table" + border + stripe + > + <el-table-column + type ="index" + label="搴忓彿" + align="center" + width="50" + /> + <el-table-column + label="浜у搧缂栧彿" + prop="productNo" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="浜у搧鍚嶇О" + prop="product" + show-overflow-tooltip + align="center" + /> + <el-table-column + label="鎵规鍙�" + prop="outBatchNo" + show-overflow-tooltip + align="center" + > + </el-table-column> + <el-table-column + label="鏍稿" + prop="isCheck" + align="center" + show-overflow-tooltip + width="80" + > + <template slot-scope="scope"> + <i class="el-icon-check" v-if="scope.row.isCheck"></i> + <i v-else></i> + </template> + </el-table-column> + </el-table> + </el-dialog> </div> </template> <script> -import { pagedata,dropById,list,saveList,deledata,sAuditstatus} from '@/api/quality/Packaging_ledger' +import { pagedata,dropById,list,saveList,deledata,sAuditstatus,qualityPackageBoxDetail,qualityPackageBox} from '@/api/quality/Packaging_ledger' import ttable from '@/views/common/ztt-table.vue' import packfrom from './pack-from.vue' import packfromadd from './pack-fromadd.vue' +import vueQr from 'vue-qr' +import PrintJS from 'print-js' +import { mapGetters } from 'vuex' export default { data(){ return { + str:"https://ztms-mes.chinaztt.cn/#/pack?id=", + qrData:[], + diaPrintTab: false, + checkShow:false, + multipleSelection: [], + isCheck: false, dataway:{}, - goid:'', + datalist:[], testStandardParams: [], packageBoxId:{}, prelang: 'operation', @@ -155,7 +312,7 @@ border: true, // 鏄惁鏈夌旱鍚戣竟妗� lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇 fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮� - multiSelect: false, // + multiSelect: true, // isEdit:false, seqNo: true, isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳 @@ -230,28 +387,8 @@ searchInfoType: 'datetimerange', }, ], - toolbar: [ - { - text: '鏂板', - type: 'primary', - fun: this.addOrUpdateHandle - }, - ], - operator: [ - { - text: '妫�楠�', - icon: 'el-icon-delete', - type: 'text', - size: 'small', - fun: this.check - },{ - text: '鍒犻櫎', - icon: 'el-icon-delete', - type: 'text', - size: 'small', - fun: this.deleteHandle - } - ], + toolbar: [], + operator: null, operatorConfig: { fixed: 'right', label: '鎿嶄綔', @@ -259,17 +396,138 @@ minWidth: 120 } }, + codeInfo:null, + startTime: null, } }, components: { - ttable, - packfrom, - packfromadd - }, - watch: { - + ttable, + packfrom, + packfromadd, + vueQr + }, + created(){ + if(this.permissions.quality_packaging_ledger_add){ + this.table.toolbar.push({ + text: '鏂板', + type: 'primary', + fun: this.addOrUpdateHandle + }) + } + if(this.permissions.quality_packaging_ledger_labelprint){ + this.table.toolbar.push({ + text: '鏍囩鎵撳嵃', + type: 'primary', + fun: this.printLabel + }) + this.table.toolbar.push({ + text: '涓嬭浇瑁呯娓呭崟', + type: 'primary', + fun: this.downOrder + }) + } + let arr = [] + if(this.permissions.quality_packaging_ledger_inspect){ + arr.push({ + text: '妫�楠�', + icon: 'el-icon-position', + type: 'text', + size: 'small', + fun: this.check, + show: { + val: [ + '鑽夌', + '鏈姤妫�', + ], + key: 'state' + } + }) + } + if(this.permissions.quality_packaging_ledger_del){ + arr.push({ + text: '鍒犻櫎', + icon: 'el-icon-delete', + type: 'text', + size: 'small', + fun: this.deleteHandle + }) + } + this.table.operator = arr.length>0 ? arr : null + }, + computed:{ + ...mapGetters(['permissions']) + }, + watch: { + diaPrintTab(newVal){ + if(!newVal){ + this.qrData = [] + } }, + checkShow(newVal){ + if(newVal){ + // this.$message.success('鎵爜锛氭墦寮�') + let input = document.getElementById('ScanCodeInfo'); + input.focus(); + this.startTime = setInterval(()=>{ + input.focus() + },1000) + }else{ + this.$message.warning('鎵爜锛氬叧闂�') + clearInterval(this.startTime) + } + } + }, methods: { + //鍖呰璇︽儏 + + //鎵撳嵃鎸夐挳 + printFun() { + this.diaPrintTab = false; + PrintJS({ + printable: 'qrCard',//椤甸潰 + type: "html",//鏂囨。绫诲瀷 + maxWidth:450, + targetStyles:['*'], + style: `@page { + margin:0; + padding: 0; + size: 323px 210px; + } + html{ + zoom:100%; + } + @media print{ + width: 323px; + height: 210px; + margin:7cm 0mm 0mm 0mm; + padding: 0mm 10mm; + }`, + onPrintDialogClose: this.erexcel=false, + targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� + font_size: '', + }); + }, + handleSelectionChange(val){ + this.multipleSelection = val + let lastRow = val[val.length - 1] + this.handleCurrentChange(lastRow) + }, + printLabel(){ + if(this.multipleSelection.length==0){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + return + } + this.diaPrintTab = true + this.multipleSelection.forEach(item=>{ + const obj = { + packageNo: item.packageNo, + contractNo: item.contractNo, + packageBoxId:item.id, + createUser:item.createUser + } + this.qrData.push(obj) + }) + }, // 鑾峰彇鏁版嵁鍒楄〃 getData() { this.$refs.processconfiguration.refreshData() @@ -289,17 +547,19 @@ }) }, handleCurrentChange(row){ - console.log(row,"涓�琛�"); + if(row.state=='鏈姤妫�'){ + this.isCheck = false + }else{ + this.isCheck = true + } this.dataway = row this.packageBoxId = { packageBoxId:row.id } - this.goid = row.id this.rightquery() }, rightquery(){ - list({packageBoxId:this.goid}).then((res) =>{ - console.log(res,"nihaoa"); + list({packageBoxId:this.packageBoxId.packageBoxId}).then((res) =>{ this.testStandardParams = res.data.data }) }, @@ -312,24 +572,65 @@ } }, preserve(datalist){ - this.testStandardParams = datalist - + this.testStandardParams = this.testStandardParams.concat(datalist); + console.log(this.testStandardParams,"---------start"); + this.datalist = datalist }, //鍙宠竟淇濆瓨 addpreserve(){ - console.log(this.testStandardParams,"淇濆瓨鏁版嵁"); - this.testStandardParams.forEach(el => { - el.packageBoxId =this.goid + this.datalist.forEach(el => { + el.packageBoxId =this.packageBoxId.packageBoxId }); - saveList(this.testStandardParams).then((res) =>{ - console.log(res,"淇濆瓨鎴愬姛"); - this.$message.success('淇濆瓨鎴愬姛') - this.rightquery() + console.log(this.datalist); + // return + saveList(this.datalist).then((res) =>{ + if(res.status===200){ + this.$message.success('淇濆瓨鎴愬姛') + this.datalist = null + this.rightquery() + } + }).catch(error=>{ + console.error(error); }) + }, + // 鏍稿 + handleCheck(){ + if(this.testStandardParams.length>0){ + this.checkShow = true; + }else{ + this.$message.warning('鏆傛棤鏍稿鏄庣粏') + } + }, + keyup(e){ + var code = '' + var str = {} + var that = this; + try{ + code = JSON.parse(this.codeInfo) + if(code.moNo2==null||code.moNo2==undefined||code.moNo2==''){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') + }else{ + str = { + moNo2: code.moNo2, + } + qualityPackageBoxDetail({ + outBatchNo:str.moNo2, + packageBoxId:that.packageBoxId.packageBoxId + }).then(res=>{ + if(res.data.data){ + that.rightquery() + }else{ + that.$message.error('璇ユ壒娆″彿涓嶅湪瑁呯娓呭崟鍐�') + } + }) + } + }catch(e){ + this.$message.error('璇ヤ簩缁寸爜鏈夎') + } + this.codeInfo = null }, //鍒犻櫎 deleteadd(row){ - console.log(row,""); deledata({id:row.id}).then((res)=>{ this.$message.success('鍒犻櫎鎴愬姛') this.rightquery() @@ -337,7 +638,6 @@ }, //瀹℃牳 check(row){ - console.log(row,"瀹℃牳"); let packageBox = { id:row.id, packageNo:row.packageNo, @@ -349,8 +649,65 @@ this.$message.success('妫�楠屾垚鍔�') }) }, + downOrder(){ + if(this.multipleSelection.length==0){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + return + }else{ + qualityPackageBox({id:this.multipleSelection[this.multipleSelection.length-1].id}).then(response=>{ + console.log(response) + // 澶勭悊杩斿洖鐨勬枃浠舵祦 + const blob = response.data + const link = document.createElement('a') + link.href = URL.createObjectURL(blob) + const disposition = response.headers['content-disposition'] + let temp = disposition.substring(disposition.lastIndexOf('=') + 1) + link.download = decodeURI(temp) + document.body.appendChild(link) + link.click() + window.setTimeout(function () { + URL.revokeObjectURL(blob) + document.body.removeChild(link) + }, 0) + }).catch((error) => { + console.error(error) + }) + } + } }, - computed: { - }, } -</script> \ No newline at end of file +</script> +<style> +.x1111111{ + color: black; + font-size: 18pt; + font-family: 榛戜綋; + justify-content: center; + text-align: center; +} +.x1111113{ + border: 1px solid black; + height: 40px; +} +.x1111117{ + border: 1px solid black; + height: 40px; +} +.x1111116{ + border: 1px solid black; + height: 200px; + width: 445px; +} +.x1111114{ + border: 1px solid black; + width: 80px; +} +.x1111115{ + border: 1px solid black; +} +.x1111112{ + color: black; + font-size: 12pt; + font-family: 瀹嬩綋; +} +</style> -- Gitblit v1.9.3