| <template> | 
|   <GlobalWindow | 
|     :title="title" | 
|     width="527px" | 
|     :visible.sync="visible" | 
|   > | 
|     <div v-show="needSelect"> | 
|   | 
|       <div class="print-title">选择打印样式:</div> | 
|       <div style="margin: 5px 0 20px 0; display: flex;"> | 
|         <div :class="type==0 ? 'btn-select' : 'btn-normal'" @click="type=0"> | 
|           <div class="btn">横版样式</div> | 
|         </div> | 
|         <div style="width:10px"></div> | 
|         <div :class="type==1 ? 'btn-select' : 'btn-normal'" @click="type=1"> | 
|           <div class="btn">竖版样式</div> | 
|         </div> | 
|       </div> | 
|     </div> | 
|     <div class="print-title">打印样式预览:</div> | 
|     <div class="tip">当前标签尺寸为{{ type==0 ? '70mm x 35mm,' : '30mm x 30mm,编码最大支持8个字符,' }}打印时请根据需要自行缩放</div> | 
|     <div v-if="type==0" id="qr1" style="width:100%;"> | 
|       <div | 
|         v-for="(item, index) in qrList"  | 
|         :key="index"  | 
|       > | 
|         <div style="margin: 0 2mm 0; height: 35mm; width: 74mm;border: 1px solid #000;display: flex;"> | 
|           <div style="height: 35mm;width: 35mm;"> | 
|             <vue-qr style="margin:4.5mm 3.87mm" :text="qrStr(item.code)" :size="98" :margin="0"/> | 
|           </div> | 
|           <div | 
|             style="margin: 4.5mm 0;display: flex;flex-direction: column;justify-content: space-between; flex: 1" | 
|           > | 
|             <div style="font-size: 12px;font-weight: Bold;color: #010101;">{{ item.department }}</div> | 
|             <div style="font-size: 14px;color: #010101;">{{item.title}}</div> | 
|             <div style="font-size: 14px;color: #010101;">{{ item.code }}</div> | 
|             <div style="font-size: 10px;color: #010101;">{{ item.content }}</div> | 
|           </div> | 
|         </div> | 
|         <div v-if="index != qrList.length-1" style="height: 6mm;background-color: #fff;"></div> | 
|       </div> | 
|     </div> | 
|     <div v-else id="qr2" style="width: 100%; display:flex; flex-flow: wrap;justify-content: space-between;"> | 
|         <div v-for="(item, index) in qrList" :key="index" style="height: 30mm;width: 30mm;border: 1px solid #ccc;" :style="index<4?'margin: 0;':'margin: 1.2mm 0 0; padding: 1mm 0mm'"> | 
|         <!-- <div v-for="(item, index) in qrList" :key="index" style="height: 32mm;width: 30mm;border: 1px solid #ccc;" :style="index<4?'margin: 0;':'margin: 16.5mm 0 0; padding: 1mm 0mm'"> --> | 
|           <div style="height: 22mm;width: 22mm; margin: 1.5mm 2mm 0mm;" > | 
|             <vue-qr style="margin: 2mm 4mm 0mm 3mm;" :text="qrStr(item.code)" :size="70" :margin="0"/> | 
|           </div> | 
|           <div style="text-align: center; font-size: 14px; height:4mm; font-weight: 700; line-height:5mm ">{{ item.code }}</div> | 
|           <!-- <div style="text-align: center; font-size: 12px; height:5mm; line-height:5mm ">XS123458</div> --> | 
|         </div> | 
|     </div> | 
|     <div slot="footer" class="window__header"> | 
|       <el-button type="primary" @click="cancel" plain>返回</el-button> | 
|       <el-button type="primary" @click="submit">去打印</el-button> | 
|     </div> | 
|   </GlobalWindow> | 
| </template> | 
|   | 
| <script> | 
| import BaseOpera from '@/components/base/BaseOpera' | 
| import GlobalWindow from '@/components/common/GlobalWindow' | 
| import VueQr from 'vue-qr' | 
| import printJS from 'print-js' | 
| export default { | 
|   name: 'QrCodeLabel', | 
|   extends: BaseOpera, | 
|   components: { GlobalWindow, VueQr }, | 
|   data () { | 
|     return { | 
|       // 表单数据 | 
|       type: 0, // 0 横版 1、竖版 | 
|       qrList: [], | 
|       prefix: '', | 
|       needSelect: false, | 
|       userInfo: {} | 
|     } | 
|   }, | 
|   created () { | 
|     this.config({ | 
|       api: '/ext/materialExt', | 
|       'field.id': 'id' | 
|     }) | 
|     this.userInfo = this.$store.state.userInfo | 
|   }, | 
|   methods: { | 
|     open (title, qrList, prefix, needSelect=false) { | 
|       this.type = 0 | 
|       this.title = title | 
|       this.qrList = qrList | 
|       this.prefix = prefix | 
|       this.needSelect = needSelect | 
|       this.visible = true | 
|     }, | 
|     qrStr (code) { | 
|       return this.prefix + code | 
|     }, | 
|     cancel () { | 
|       this.visible = false | 
|     }, | 
|     submit () { | 
|        | 
|       printJS( | 
|         { | 
|           printable: this.type === 0 ? "qr1" : 'qr2', | 
|           type:'html', | 
|           header:null, | 
|           targetStyles:['*'], | 
|           style:"@page {margin: 6mm}", | 
|           onPrintDialogClose: () => { | 
|             this.visible = false | 
|           } | 
|         } | 
|       ) | 
|        | 
|     } | 
|   } | 
| } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| .print-title { | 
|   width: 100px; | 
|   text-align: right; | 
|   height: 14px; | 
|   line-height: 14px; | 
|   font-size: 14px; | 
|   font-weight: 500; | 
|   color: #222222; | 
|   padding: 10px 0; | 
|    | 
| } | 
| .tip { | 
|   color: #999; | 
|   font-size: 12px; | 
| } | 
| .btn { | 
|   margin: 0 16px; | 
|   height: 38px; | 
|   line-height: 38px; | 
|   font-size: 14px; | 
|   border-radius: 2px; | 
|   cursor: pointer; | 
| } | 
| .btn-select { | 
|   border-radius: 2px; | 
|   background-color: #305ED5; | 
|   color: #fff; | 
| } | 
| .btn-normal { | 
|   border-radius: 2px; | 
|   background-color: #F4F5FA; | 
|   color: #305ED5; | 
| } | 
|   | 
| .ss { | 
|   font-size: 16px; | 
|   font-weight: Bold; | 
|   color: #010101; | 
|   display: flex; | 
|   flex-direction: column; | 
|   justify-content: space-between; | 
| } | 
| </style> |