网站首页 > 精选文章 正文

编辑排版 | 宋大狮
平台运营 | 小唐狮
ONE 问题描述
2023年4月22号记,久违了大家。
今天要和大家分享的是关于如何实现表单、表格等自定义内容的打印功能。
最近在后台项目中,有遇到打印详情页的需求,因为开发中此功能用的次数不多,所以放在此处仅做一下记录,以供大家查阅。
具体的需求:在表格的操作栏中,点击打印按钮,会弹出一个对话弹框,弹框里会预览要打印的详情内容,然后在弹框中可以点击确认打印,可以点击取消关闭。
具体的问题:1、点击打印按钮,弹出的对话弹框中的内容总是显示第一次打开时的内容,不会重新变化;2、如何实现打印功能;3、如何实现只打印对话弹框中的指定内容。
今天,我们就在这篇文章,用最简洁的语言,来好好地理理上述问题。
TWO 问题解决
一、代码总览
1、打印功能实现代码
1、安装依赖vue3-print-nb
npm install vue3-print-nb --save
2、main.ts中添加
import print from "vue3-print-nb";
.use(print)
3、布局中添加
要打印的内容,最外层盒子加上id
<div class="mod-sys_country__syscountry" id="printMe">
打印按钮
<button v-print="printObj">Print local range</button>
4、逻辑中添加相关配置
data(){
return {
printObj: {
id: "printMe",
popTitle: '',
extraCss: "https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css",
extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
}
}
},
5、样式中添加
<style media="print">
@page{
size: auto;
margin-bottom: 0;
}
</style>
2、弹出的对话框实现代码
1、弹出的对话弹框
<el-dialog v-model="dialogFormVisible" title="Shipping address" destroy-on-close>
2、要打印的内容,此处封装成了组件
<printCustomerDetail :printId="printId" :AuditMethod="AuditMethod" :printLevel="printLevel" ref="printRef"> </printCustomerDetail>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogFormVisible = false">Cancel</el-button>
3、确认打印按钮,点击开始打印
<el-button type="primary" @click="dialogFormVisible = false" v-print="printObj"> Confirm </el-button>
</span>
</template>
</el-dialog>
二、问题解析
1、问:点击打印按钮,弹出的对话弹框中的内容总是显示第一次打开时的内容,不会重新变化。
答:这是element的Dialog 组件本身存在的问题, dialog作为父组件调用子组件时,仅仅只渲染一次,就不再进行渲染。解决的方法有两种,一种是在Dialog 组件中添加属性destroy-on-close,默认为false,功能是当关闭 Dialog 时,销毁其中的元素;一种是在Dialog 组件外边加上一个div标签,加上v-if ,条件和Dialog 出现的条件一致,这样每次渲染完都会进行摧毁,再重新调用组件,每次都会重新进行渲染。
2、问:如何实现打印功能。
答:使用vue3-print-nb库的v-print指令。
3、问:如何实现只打印对话弹框中的指定内容。
答:对要打印的内容,最外层盒子加上id,并在配置中指定对应的id。
- END -
- 上一篇: Vue合理配置WebSocket并实现群聊
- 下一篇: elementUI属性事件方法汇总和快速查询
猜你喜欢
- 2024-12-15 WEB前端面试题
- 2024-12-15 前端开发应该开始使用Tailwind CSS的六个原因
- 2024-12-15 在 React 中进行事件驱动的状态管理「实践」
- 2024-12-15 2024年你应该使用的15个JavaScript库
- 2024-12-15 JavaScript 的强大之处
- 2024-12-15 前端新手必看!HTML、CSS 和 JavaScript 详解与实用案例全攻略
- 2024-12-15 第02节:导入Element-plus组件完成Layout布局
- 2024-12-15 哇~ css用这个框架写,也太香了吧~赶紧收藏
- 2024-12-15 Java实现图片上传功能(前后端:vue+springBoot)
- 2024-12-15 H5小游戏开发教程之页面基础布局的开发
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)