使用vue-print-nb实现打印功能
一、安装依赖:npm install vue-print-nb --save,并且在main.js中引入
- //引入
-
- import Print from 'vue-print-nb' // 打印
-
- Vue.use(Print)
二、在组件需要打印的区域元素标签上加 id="printArea"
- <div id="printArea" class="printArea">
- <div class="print-title">生产任务单div>
- <table class="print-table" border="1" cellspacing="0">
- <tr>
- <td rowspan="2">产品代码td><td rowspan="2">{{ valPrint.productId }}td>
- <td>产品名称td><td>{{ valPrint.productName }}td>
- <td>生产数量td><td>{{ valPrint.planCount }}td>
- <td>计划日期td><td>{{ valPrint.planStarttime }}td>
- tr>
- <tr>
- <td>生产任务号td><td>{{ valPrint.planId }}td>
- <td>规格型号td><td>{{ valPrint.productSpec }}td>
- <td>预计完成日期td><td>{{ valPrint.planEndtime }}td>
- tr>
- <tr>
- <td>说明td>
- <td colspan="4">
- <el-input v-model="tableData.textarea" type="textarea" :rows="4" placeholder="请输入说明内容" style="width: 90%" />
- td>
- <td>卡类型td>
- <td colspan="2">
- <el-input v-model="tableData.type" placeholder="请输入卡类型" style="width: 90%" />
- td>
- tr>
- table>
- <div>
三、在组件的打印按钮标签上使用指令 v-print="print", 其中print是配置对象
<el-button v-print="print" type="primary">打印el-button>
四、定义print配置对象
- print: {
- id: 'printArea',
- popTitle: '打印', // 打印配置页上方标题
- extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
- preview: '', // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
- previewTitle: '', // 打印预览的标题(开启预览模式后出现),
- previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
- zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
- previewBeforeOpenCallback() {}, //预览窗口打开之前的callback(开启预览模式调用)
- previewOpenCallback() {}, // 预览窗口打开之后的callback(开启预览模式调用)
- beforeOpenCallback() {}, // 开启打印前的回调事件
- openCallback() {}, // 调用打印之后的回调事件
- closeCallback() {}, //关闭打印的回调事件(无法确定点击的是确认还是取消)
- url: '',
- standard: '',
- extraCss: '',
- },
五、其他配置
1、打印过滤(隐藏打印区域不需要打印的内容)
// 在组件的打印区域里,给需要隐藏的内容的标签上添加class="noprint",即可
2、打印样式
在全局样式中,新增<style media="print">标签,添加打印时才生效的样式
- @media print {
- .el-textarea__inner{
- border: none !important;
- }
- .el-input__inner{
- border: none !important;
- }
- .el-input__suffix{
- display: none;
- }
- }