¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog title="æ ç¾æå°" :visible.sync="isShow" width="600px" top="5vh" @close="$emit('closePrintDialog')"> |
| | | <div style="width:100%;height: 400px;overflow-y: auto;text-align: left"> |
| | | <div class="dia_body"> |
| | | <el-checkbox |
| | | style="margin: 10px 5px;" |
| | | :indeterminate="isIndeterminate" |
| | | v-model="checkAll" |
| | | @change="handleCheckAllChange">å
¨é</el-checkbox> |
| | | <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList"> |
| | | <el-card class="box-card" v-for="(item, i) in barcodeData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;"> |
| | | <el-checkbox :label="i" :key="i" style="position: relative;top:0;left:10px"><br></el-checkbox> |
| | | <div> |
| | | <div class="titleH1" style="text-align: center; margin-bottom: 2px;font-size: 16px">æ£æµä¸å¿æ ·åæ è¯å¡</div> |
| | | <div style="text-align: center;"> |
| | | <barcode :value="item.barcode" :height="34" :width="2" :displayValue="false"></barcode> |
| | | </div> |
| | | <div style="margin-left: 20px;text-align: left"> |
| | | <div class="item"> |
| | | <span class="full-title">ææåç§°</span>: |
| | | <span class="info">{{ item.sampleName }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title">ææåå®¶</span>: |
| | | <span class="info">{{ item.supplierName }}</span> |
| | | </div> |
| | | <div class="item2"> |
| | | <span class="full-title">è§æ ¼åå·</span>: |
| | | <span class="info">{{ item.partDesc }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title">å§ææ¥æ</span>: |
| | | <span class="info">{{ item.sendTime }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title">å§æäºº</span>: |
| | | <span class="info2">{{ item.prepareUser }}</span> |
| | | <span class="full-title">æ£æµç¼å·</span>: |
| | | <span class="info">{{ item.entrustCode }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title">æ ·åæ°é</span>: |
| | | <span class="info2">{{ item.sampleNumber }}</span> |
| | | <span class="full-title">æ ·åæ è¯</span>: |
| | | <span class="info">{{ item.color }}</span> |
| | | </div> |
| | | <div style="font-weight: bold;display: flex;align-items: center;"> |
| | | <span class="full-title">æ ·åç¶æ</span>: |
| | | <el-radio-group v-model="item.labelStatus" style="margin-top: 7px;margin-left: 4px;" v-removeAriaHidden> |
| | | <el-radio label="0" style="font-weight: bold;margin-right: 7px;">å¾
æ£</el-radio> |
| | | <el-radio label="1" style="font-weight: bold;margin-right: 7px;">卿£</el-radio> |
| | | <el-radio label="2" style="font-weight: bold;margin-right: 7px;">å·²æ£</el-radio> |
| | | </el-radio-group> |
| | | <span> |
| | | <el-radio style="margin-left: 14px;margin-top: 3px;" |
| | | @click.native.prevent="changeIsLeave(item)" |
| | | :label="true" size="small" v-model="item.isLeave">çæ ·</el-radio> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="$emit('closePrintDialog')">å æ¶</el-button> |
| | | <el-button type="primary" @click="submitPrint">æ å°</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | <div class="el-dialog-body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;"> |
| | | <div id="printOrder" class="printOrder" ref="printOrder"> |
| | | <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> |
| | | <div> |
| | | <div class="titleH1" style="text-align: center;margin-bottom: 1px">æ£æµä¸å¿æ ·åæ è¯å¡</div> |
| | | <div style="text-align: center;"> |
| | | <barcode :value="item.barcode" :height="22" :width="1.6" :displayValue="false"></barcode> |
| | | </div> |
| | | <div style="margin-left: 12px;text-align: left"> |
| | | <div class="item"> |
| | | <span class="full-title4">ææåç§°:</span> |
| | | <span class="info4">{{ item.sampleName }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">ææåå®¶</span>: |
| | | <span class="info">{{ item.supplierName }}</span> |
| | | </div> |
| | | <div class="item2"> |
| | | <span class="full-title4">è§æ ¼åå·:</span> |
| | | <span class="info4">{{ item.partDesc }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">å§ææ¥æ</span>: |
| | | <span class="info">{{ item.sendTime }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">å§æäºº</span>: |
| | | <span class="info3">{{ item.prepareUser }}</span> |
| | | <span class="full-title2">æ£æµç¼å·</span>: |
| | | <span class="info">{{ item.entrustCode }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">æ ·åæ°é</span>: |
| | | <span class="info3">{{ item.sampleNumber }}</span> |
| | | <span class="full-title2">æ ·åæ è¯</span>: |
| | | <span class="info">{{ item.color }}</span> |
| | | </div> |
| | | <div> |
| | | <span class="full-title2">æ ·åç¶æ</span>: |
| | | <span style="white-space: nowrap;margin-left: 2px"> |
| | | å¾
æ£<span class="scor" v-if="item.labelStatus!='0'"></span><span class="checked" v-if="item.labelStatus=='0'">â</span> |
| | | 卿£<span class="scor" v-if="item.labelStatus!='1'"></span><span class="checked" v-if="item.labelStatus=='1'">â</span> |
| | | å·²æ£<span class="scor" v-if="item.labelStatus!='2'"></span><span class="checked" v-if="item.labelStatus=='2'">â</span> |
| | | çæ ·<span class="scor" v-if="!item.isLeave"></span><span class="checked" v-if="item.isLeave">â</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import PrintJS from "print-js"; |
| | | |
| | | export default { |
| | | name: "printDialog", |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: {}, |
| | | props: { |
| | | printDialog: { |
| | | type: Boolean, |
| | | default: () => false |
| | | }, |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | isShow: this.printDialog, |
| | | loadPint:false, |
| | | isIndeterminate:false, // å¤éæ¡æ ·å¼ |
| | | checkAll: false, |
| | | checkIndexList:[], // éæ©è¦æå°çæ°æ® |
| | | barcodeData: [], |
| | | printLoading: false, |
| | | checkDataList: [] |
| | | } |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // è·åè¦æå°çæ°æ® |
| | | getLabelPrinting(selection){ |
| | | try { |
| | | this.loadPint = true; |
| | | let ids = [] |
| | | selection.map(m=> { |
| | | ids.push(m.id) |
| | | }) |
| | | this.$axios.post(this.$api.materialInspection.printLabel,{ |
| | | ids: ids |
| | | },{ |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | }, |
| | | noQs:true |
| | | }).then(res => { |
| | | if (res.code === 200 && res.data.length > 0) { |
| | | res.data.forEach(item => { |
| | | console.log('item---', item) |
| | | item.sendTime = item.sendTime && item.sendTime.substring(0, 10) |
| | | item.sampleNumber = item.qtyArrived + item.buyUnitMeas |
| | | this.$set(item, 'barcode', item.entrustCode) |
| | | this.$set(item, 'isLeave', item.labelStatus === '2') |
| | | }) |
| | | this.barcodeData = res.data |
| | | } |
| | | }) |
| | | } catch (e) { |
| | | console.log('è·åè¦æå°çæ°æ®---', e) |
| | | } |
| | | |
| | | }, |
| | | changeIsLeave (item) { |
| | | const index = this.barcodeData.findIndex(val => val.entrustCode === item.entrustCode) |
| | | if (index > -1) { |
| | | this.barcodeData[index].isLeave = !this.barcodeData[index].isLeave |
| | | } |
| | | }, |
| | | // å
¨éå¤éæ¡åè° |
| | | handleCheckAllChange(val) { |
| | | if(val){ |
| | | for(var i=0;i<this.barcodeData.length;i++){ |
| | | this.checkIndexList.push(i) |
| | | } |
| | | this.checkDataList = this.barcodeData |
| | | }else{ |
| | | this.checkIndexList = [] |
| | | this.checkDataList = [] |
| | | } |
| | | this.isIndeterminate = false; |
| | | }, |
| | | changeType (type) { |
| | | type = type === '1' ? '0' : '1' |
| | | }, |
| | | //éæ©è¦æå°çäºç»´ç |
| | | changePrintCode(){ |
| | | let indexList = this.checkIndexList |
| | | let arr = [] |
| | | indexList.forEach(i=>{ |
| | | if (i !== undefined) { |
| | | arr.push(this.barcodeData[i]) |
| | | } |
| | | }) |
| | | console.log('arr---', arr) |
| | | this.checkDataList = arr |
| | | }, |
| | | // æäº¤æå° |
| | | submitPrint(){ |
| | | if(this.checkDataList.length < 1){ |
| | | this.$message.warning("è¯·éæ©è¦æå°çæ¡å½¢ç ") |
| | | return |
| | | } |
| | | this.printDialogVisible = false; |
| | | PrintJS({ |
| | | targetStyles: ["*"], // 使ç¨domçæææ ·å¼ï¼å¾éè¦ |
| | | printable: 'printOrder',//é¡µé¢ |
| | | type: "html",//ææ¡£ç±»å |
| | | maxWidth:360, |
| | | header: '', |
| | | style: |
| | | `@page { |
| | | margin: 0.4cm; |
| | | margin-right: 0.4cm; |
| | | margin-top: 0.4cm; |
| | | margin-bottom: 0.4cm; |
| | | padding-bottom: 0px; |
| | | size: 400px 75px collapse; |
| | | } |
| | | html{ |
| | | zoom:100%; |
| | | |
| | | } |
| | | @media print{ |
| | | width: 400px; |
| | | height: 75px; |
| | | margin:0; |
| | | }`, |
| | | onPrintDialogClose: this.erexcel=false, |
| | | font_size: '0.29cm', |
| | | }); |
| | | }, |
| | | }, |
| | | watch:{ |
| | | printDialog(newVal){ |
| | | if(!newVal){ |
| | | this.barcodeData = [] |
| | | this.checkIndexList = [] |
| | | this.checkDataList = [] |
| | | this.isIndeterminate = true; |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .item { |
| | | margin-bottom: 4px; |
| | | } |
| | | .item2 { |
| | | margin-bottom: 8px; |
| | | vertical-align: top; |
| | | } |
| | | .full-title { |
| | | display: inline-block; |
| | | width: 80px; |
| | | text-align-last: justify; |
| | | } |
| | | .full-title2 { |
| | | display: inline-block; |
| | | width: 50px; |
| | | text-align-last: justify; |
| | | } |
| | | .full-title4 { |
| | | display: inline-block; |
| | | width: 53px; |
| | | text-align-last: justify; |
| | | vertical-align: top; |
| | | } |
| | | .info { |
| | | margin-left: 2px; |
| | | } |
| | | .info2 { |
| | | margin-left: 2px; |
| | | margin-right: 30px; |
| | | width: 80px; |
| | | display: inline-block; |
| | | } |
| | | .info3 { |
| | | margin-left: 2px; |
| | | margin-right: 30px; |
| | | width: 50px; |
| | | display: inline-block; |
| | | } |
| | | .info4 { |
| | | display: inline-block; |
| | | margin-left: 2px; |
| | | white-space: normal; |
| | | width: 260px; |
| | | } |
| | | .checkboxInfo { |
| | | display: inline-block; |
| | | margin-left: 10px; |
| | | } |
| | | .scor{ |
| | | width: 0.06cm; |
| | | height: 0.06cm; |
| | | border-radius: 1px; |
| | | border: 1px solid #000; |
| | | display: inline-block; |
| | | margin-right: 14px; |
| | | margin-left: 4px; |
| | | } |
| | | .checked { |
| | | margin-right: 14px; |
| | | margin-left: 4px; |
| | | } |
| | | >>> .el-checkbox { |
| | | margin-right: 10px; |
| | | } |
| | | >>> .el-card { |
| | | border: none; |
| | | } |
| | | >>>.el-card__body { |
| | | padding: 4px 2px 6px 14px; |
| | | } |
| | | </style> |