| <template> | 
|   <GlobalWindow | 
|     :title="title" | 
|     width="390px" | 
|     :visible.sync="visible" | 
|   > | 
|     <div class="print-title">打印样式预览:</div> | 
|     <div class="tip">当前标签尺寸为{{  '80mm x 80mm,' }}打印时请根据需要自行缩放</div> | 
|     <div style="width:100%;"> | 
|       <div style="height:10px;background-color:#fff"></div> | 
|       <div id="qr1" style="width:100%;"> | 
|         <div | 
|           v-for="(item, index) in qrList"  | 
|           :key="index"  | 
|         > | 
|           <div | 
|             style=" | 
|               background-color:#fff; | 
|               padding: 10px 0; | 
|               margin: 1px auto; | 
|               height: 322px; | 
|               width: 303px;" | 
|           > | 
|             <table | 
|               border="1" | 
|               width="294px" | 
|               style=" | 
|                 margin: -5px 5px 0 0px; | 
|                 border-collapse:collapse" | 
|             > | 
|               <caption | 
|                 style=" | 
|                   margin-bottom:15px; | 
|                   font-size:16px; | 
|                   line-height:16px; | 
|                   font-weight: 700;" | 
|               >{{ item.dmodel.name }} 产品加工流转卡</caption> | 
|               <tbody style="text-align: center; color: #333; font-size:12px; margin-top:10px"> | 
|                 <tr> | 
|                   <td style="width:70px;height:21px">产品编码</td> | 
|                   <td style="text-align:left">{{ item.mmodel && item.mmodel.code }}</td> | 
|                   <td colspan="3" rowspan="7"> | 
|                     <div style=" | 
|                       width: 79px; | 
|                       height:150px; | 
|                       margin: 5px auto; | 
|                       color: #999;" | 
|                     > | 
|                       <vue-qr :text="qrStr(item.code)" :size="79" :margin="0"/> | 
|                       <div>扫码查看</div> | 
|                       <div>详细信息</div> | 
|                     </div> | 
|                   </td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td style="height:21px">产品名称</td> | 
|                   <td style="text-align:left">{{ item.mmodel&&item.mmodel.name }}</td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td style="height:21px">生产批次</td> | 
|                   <td style="text-align:left">{{ item.batch }}</td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td style="height:21px">生产工单</td> | 
|                   <td style="text-align:left">{{ item.code }}</td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td style="height:21px">生产工序</td> | 
|                   <td style="text-align:left">{{ item.procedureName }}</td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td style="height:21px">生产设备</td> | 
|                   <td style="text-align:left">{{ item.pgmodel.code }}</td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td style="height:21px">加工数量</td> | 
|                   <td style="text-align:left">{{ item.planNum + (item.umodel && item.umodel.name) }}</td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td>作业人员</td> | 
|                   <td style="text-align:left; height:16px;line-height:16px;" colspan="2"> | 
|                     <!-- <span style="width:100%; overflow: hidden;text-overflow: ellipsis;">{{ proStr(item.proUserList)  }}</span> --> | 
|                     <div style=" | 
|                       width:100%;  | 
|                       overflow: hidden; | 
|                       text-overflow: ellipsis; | 
|                       display: -webkit-box;  | 
|                       -webkit-box-orient: vertical; | 
|                       -webkit-line-clamp: 1;" | 
|                     >{{ proStr(item.proUserList) }}</div> | 
|                   </td> | 
|                 </tr> | 
|                 <tr> | 
|                   <td>打印信息</td> | 
|                   <td style="text-align:left; line-height:16px;" colspan="2"> | 
|                     <div>{{ userInfo.realname + ', ' + current}}</div> | 
|                   </td> | 
|                 </tr> | 
|               </tbody> | 
|             </table> | 
|             <div | 
|               style=" | 
|                 border-right: 1px solid #111; | 
|                 border-bottom: 1px solid #111; | 
|                 border-left: 1px solid #111; | 
|                 width: 292px; | 
|                 line-height: 26px; | 
|                 min-height: 26px; | 
|                 font-size: 12px; | 
|                 margin: 0 0 1px 0px; | 
|                 display:flex; | 
|                 text-align: center; | 
|                 " | 
|             > | 
|             <!--  --> | 
|               <div style="width: 30px; border-right: 1px solid #111; position:relative;"> | 
|                 <div style="position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;height: 26px;">N</div> | 
|               </div> | 
|               <div  | 
|                 style=" | 
|                   flex: 1; | 
|                   overflow: hidden; | 
|                   text-overflow: ellipsis; | 
|                   display: -webkit-box; | 
|                   -webkit-line-clamp: 2; | 
|                   line-clamp: 2; | 
|                   -webkit-box-orient: vertical; | 
|                   height: 26px; | 
|                   line-height: 13px; | 
|                 " | 
|               >{{ routeStr(item.routeProcedureList) }}</div> | 
|             </div> | 
|           </div> | 
|   | 
|           <div v-if="index != qrList.length - 1" style="height:5px;background-color:#fff;"></div> | 
|       </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' | 
| import { Divider } from 'element-ui' | 
|   | 
| export default { | 
|   name: 'OrderQrCodeLabel', | 
|   extends: BaseOpera, | 
|   components: { GlobalWindow, VueQr, Divider }, | 
|   data () { | 
|     return { | 
|       // 表单数据 | 
|       qrList: [], | 
|       prefix: '', | 
|       needSelect: false, | 
|       current: '', | 
|       userInfo: {}, | 
|       printing: false | 
|     } | 
|   }, | 
|   created () { | 
|     this.config({ | 
|       api: '/ext/materialExt', | 
|       'field.id': 'id' | 
|     }) | 
|     this.userInfo = this.$store.state.userInfo | 
|   }, | 
|   methods: { | 
|     open (title, qrList, prefix) { | 
|       // console.log(this.$store.state.userInfo) | 
|       this.title = title | 
|       this.qrList = qrList | 
|       this.prefix = prefix | 
|       let d = new Date() | 
|       let month = d.getMonth() + 1 | 
|       let day = d.getDate() | 
|       let hours = d.getHours() | 
|       let minutes = d.getMinutes() | 
|       this.current = (month < 10 ? ('0' + month) : month)  | 
|                       + '-' + (day < 10 ? ('0' + day) : day) | 
|                       + ' ' + (hours < 10 ? ('0' + hours) : hours) | 
|                       + ':' + (minutes < 10 ? ('0' + minutes) : minutes) | 
|                  | 
|       this.visible = true | 
|     }, | 
|     qrStr (code) { | 
|       return this.prefix + code | 
|     }, | 
| //  /ext/workorderCheckAttrExt/delete/{id}  点检 删除接口 | 
| // /ext/workorderCheckExt/delete/{id}  检验删除接口 | 
|     routeStr (routeProcedureList) { | 
|       let list = JSON.parse(JSON.stringify(routeProcedureList)) | 
|       if (!list) { | 
|         return '-' | 
|       } | 
|       list = list.map((item, index, arr) => { | 
|         return item.pmodel.name | 
|       }) | 
|       // console.log(list) | 
|       if (list.length > 0) { | 
|          | 
|         return list.join(' > ') | 
|       } | 
|       return '-' | 
|     }, | 
|     cancel () { | 
|       this.visible = false | 
|     }, | 
|     submit () { | 
|       // console.log('提交'); | 
|       this.printing = true | 
|       printJS( | 
|         { | 
|           printable: 'qr1', | 
|           type:'html', | 
|           header:null, | 
|           targetStyles:['*'], | 
|           style:"@page {margin: 3mm}", | 
|           onPrintDialogClose: () => { | 
|             this.printing = false | 
|             this.visible = false | 
|           } | 
|         } | 
|       ) | 
|     }, | 
|     proStr (proUserList) { | 
|       return proUserList.map((item) => { return item.proUserDepartName}).join(',') | 
|     } | 
|   } | 
| } | 
| </script> | 
|   | 
| <style lang="scss" scoped> | 
| #qr1 { | 
|   @media print { | 
|     .border-style { | 
|       border: 1px solid #fff; | 
|     } | 
|   }  | 
| } | 
| #qr1 { | 
|   .border-style { | 
|     border: 1px solid #ccc; | 
|   } | 
| } | 
|   | 
|   | 
| .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 { | 
|   // width: inherit; | 
|   border-radius: 2px; | 
|   background-color: #F4F5FA; | 
|   color: #305ED5; | 
| } | 
|   | 
| .foot-table-style { | 
|   border-right: 1px solid #111; | 
|   border-bottom: 1px solid #111; | 
|   border-left: 1px solid #111; | 
|   width: 422px; | 
|   height: 26px;  | 
|   line-height: 26px; | 
|   font-size: 12px; | 
|   margin: 0 15px 15px 15px; | 
|   display:flex; | 
|   text-align: center; | 
| } | 
| </style> |