vue打印插件vue-print-nb
你猜我为啥秃头 人气:01.引入插件npm install vue-print-nb --save
在main.js中引入
import Print from 'vue-print-nb'Vue.use(Print)
2.html代码
<div class="box"> <div id="printTest" class="upTable"> <table> <tr> <td class="title" colspan="4">木材检尺报告书</td> </tr> <tr> <td class="one">船名</td> <td style="width:190px">{{ goods.shipName }}</td> <td class="one">输出国</td> <td>{{ goods.exportCountry }}</td> </tr> <tr> <td class="one">树种</td> <td>{{ variety }}</td> <td class="one">委托方/货主</td> <td>{{ goods.goodsMaster }}</td> </tr> <tr> <td class="one">申报材积</td> <td>{{ goods.declareWoodVolume }}立方米</td> <td class="one">申报数量</td> <td>{{ goods.declareNumber }}根</td> </tr> <tr> <td class="one">存放地点</td> <td>{{ goods.goodsYard }}</td> <td class="one">卸毕时间</td> <td v-if="goods.unloadTime">{{ goods.unloadTime.substring(0,10) }}</td> <td v-else /> </tr> <tr> <td class="one">检验标准</td> <td colspan="3">GB/T 144-2013 国家标准</td> </tr> <tr> <td class="title2" colspan="4">检验结果</td> </tr> </table> <table class="dataTable"> <tr> <td style="width:210px">垛位号</td> <td style="width:100px">长度</td> <td style="width:100px">已检整木</td> <td style="width:100px">材积</td> <td style="width:100px">断木</td> <td style="width:0">未检整木</td> </tr> <tr v-for="(item,index) in shortData" :key="index"> <td>{{ item.placeNumber }}</td> <td>{{ item.placeLength }}</td> <td>{{ item.zs }}</td> <td>{{ item.woodVolume }}</td> <td>{{ item.damagedWood }}</td> <td>{{ item.notCheckWood }}</td> </tr> <tr> <td style="width:210px">合计</td> <td style="width:100px" /> <td style="width:100px">{{ zsAll }}</td> <td style="width:100px">{{ woodVolumeAll }}</td> <td style="width:100px">{{ damagedWoodAll }}</td> <td style="width:0px">{{ notCheckWoodAll }}</td> </tr> </table> </div> <el-button v-print="'#printTest'" type="primary" style="margin-top:20px"> 打印 </el-button> </div>
3.js代码
<script> export default { props: ['catList', 'goods'], data() { return { //和下边 <style media="printTest"> 一起的作用是去掉页眉页脚、去掉多出空白页的问题 printObj: { id: 'printTest', popTitle: '', ectraHead: '' }, shortData: [], variety: '', zsAll: 0, // 已检整木 总数 woodVolumeAll: 0, // 材积 damagedWoodAll: 0, // 断木 notCheckWoodAll: 0, // 未检整木 updateTime: '' } }, methods: { //这里的数据是在父页面传来的 getvariety(variety, catList, goods) { this.variety = variety this.shortData = catListthis.goods = goods// 合计 let zsAll = 0 let woodVolumeAll = 0 let damagedWoodAll = 0 let notCheckWoodAll = 0 this.shortData.map((item) => { zsAll += item.zs woodVolumeAll += item.woodVolume damagedWoodAll += item.damagedWood notCheckWoodAll += item.notCheckWood }) this.zsAll = zsAll this.woodVolumeAll = woodVolumeAll this.damagedWoodAll = damagedWoodAll this.notCheckWoodAll = notCheckWoodAll }, } } </script>
4.样式
<style media="printTest"> @page { size: auto; margin: 3mm; } html { background-color: #ffffff; height: auto; margin: 0px; body { border: solid 1px #ffffff; margin: 10mm 15mm 10mm 15mm; </style> <style lang="less" scoped> .upTable{ width: 100%; height: 50%; margin-top: 10px; table{ width: 100%; border-collapse:collapse } td{ border: 1px solid #000; font-size: 18px; text-align: center; font-family: Source Han Sans CN; font-weight: 450; color: #000000; .title{ font-size: 20px; height: 50px; font-weight: 550; .one{ width: 20%; height: 40px; .title2{ height: 45px; .dataTable{ border-top: 0px solid #000000; td{ // border: 1px solid #000; font-size: 18px; text-align: center; font-family: Source Han Sans CN; font-weight: 450; color: #000000; padding: 5px 0; } } .el-button{ margin-right: 20px; margin-left: 20px; width: 100px; padding: 12px 0;
加载全部内容