首页 > 其他分享 >vue3.0使用batchBarCode打印单个或当前页一维码

vue3.0使用batchBarCode打印单个或当前页一维码

时间:2024-07-22 11:32:00浏览次数:15  
标签:const 当前页 打印 value vue3.0 innerHTML batchBarCode div ref

1. 在main.ts中导入 import JsBarcode from 'jsbarcode' //导入一维码插件 app.component('JsBarcode', JsBarcode)  

2. 单个打印

 1       <!-- 条形码 -->
 2       <el-dialog v-model="BarCodeVisible" width="60%" title="条形码" @close="closeBarCode">
 3         <div id="barcodeimg" style="text-align: center; border: solid 2px black">
 4           <img ref="barcodeRef" />
 5           <div style="font-size: 25px; font-weight: bold">{{ barCodeMessage.name }}</div>
 6         </div>
 7         <template #footer>
 8           <el-button v-has-permission="'update'" type="primary" plain @click="prinfBarCode">打印</el-button>
 9           <el-button @click="closeBarCode">关闭</el-button>
10         </template>
11       </el-dialog>
 1 //条形码格式
 2 const options = reactive({
 3   format: 'CODE128', // 格式
 4   height: 100,
 5   width: 5,
 6   fontSize: 16,
 7   background: '#ffffff',
 8   lineColor: 'black'
 9 })
10 
11 const BarCodeVisible = ref(false)
12 const barcodeRef = ref(null)
13 
14 const barCodeMessage = ref()
15 //打开条形码弹窗
16 const openBarcode = (vol?: JSON) => {
17   barCodeMessage.value = vol
18 
19   setTimeout(() => {
20     JsBarcode(barcodeRef.value, vol.id, options)
21   }, 1000)
22 
23   BarCodeVisible.value = true
24 }
25 
26 //关闭条形码弹窗
27 const closeBarCode = () => {
28   BarCodeVisible.value = false
29 }
30 
31 //打印条形码
32 const prinfBarCode = () => {
33   const printDiv = document.createElement('div') // 创建一个新的div
34   printDiv.innerHTML = document.getElementById('barcodeimg').outerHTML // 把要打印的内容放到一个新的div里
35   document.body.innerHTML = printDiv.innerHTML
36   setTimeout(() => {
37     window.print()
38     location.reload()
39   }, 500)
40 }

3. 当前页打印

 

 1  <!-- 当前页条形码 -->
 2       <el-dialog v-model="batchBarCodeVisible" width="60%" title="当前页条形码" @close="closeBatchBarCode">
 3         <div id="batchBarcodeimg">
 4           <div
 5             v-for="item in batchBarCodeMessage"
 6             :key="item.key"
 7             style="text-align: center; border: solid 2px black; margin-bottom: 10px"
 8           >
 9             <img ref="batchBarcodeRef" />
10             <div style="font-size: 25px; font-weight: bold">{{ item.name }}</div>
11           </div>
12         </div>
13         <template #footer>
14           <el-button v-has-permission="'update'" type="primary" plain @click="prinfBatchBarCode">打印</el-button>
15           <el-button @click="closeBatchBarCode">关闭</el-button>
16         </template>
17       </el-dialog>

 

 

 

 1 const batchBarCodeVisible = ref(false)
 2 const batchBarCodeMessage = ref()
 3 const batchBarcodeRef = ref(null)
 4 const BarCodeloading = ref(false)
 5 //打开批量条形码生成弹窗
 6 const openBatchBarCode = () => {
 7   if (pagination.pageSize > 30) {
 8     ElMessage.error('不能打印超过30条以上的条形码!')
 9     return
10   }
11   batchBarCodeMessage.value = dataList
12     .filter(x => x.type != 'T')
13     .map(item => {
14       return {
15         id: item.id,
16         name: item.name
17       }
18     })
19 
20   setTimeout(() => {
21     batchBarCodeMessage.value.forEach(element => {
22       JsBarcode(batchBarcodeRef.value, element.id, options)
23     })
24   }, 1000)
25 
26   BarCodeloading.value = true
27   setTimeout(() => {
28     BarCodeloading.value = false
29   }, 4000)
30 
31   batchBarCodeVisible.value = true
32 }
33 
34 //关闭弹窗
35 const closeBatchBarCode = () => {
36   batchBarCodeVisible.value = false
37 }
38 
39 //打印当前页条码
40 const prinfBatchBarCode = () => {
41   const printDiv = document.createElement('div') // 创建一个新的div
42   printDiv.innerHTML = document.getElementById('batchBarcodeimg').outerHTML // 把要打印的内容放到一个新的div里
43   document.body.innerHTML = printDiv.innerHTML
44   setTimeout(() => {
45     window.print()
46     location.reload()
47   }, 500)
48 }

 

注:批量打印太多有点问题

1.测试50条会导致浏览器卡死,所以做了限制

2.加载一维码有点慢,所以做了加载处理

标签:const,当前页,打印,value,vue3.0,innerHTML,batchBarCode,div,ref
From: https://www.cnblogs.com/LaoMa0109/p/18315705

相关文章

  • 小程序获取当前页面栈及应用
    前言:小程序跳转路由,会在页面栈里留下记录的,有的时候,我们就可以利用页面栈的记录来做一些便捷的操作。获取当前页面栈:varpages=getCurrentPages();console.log('pages',pages)console.log('pagesLength',pages.length)官网地址:getCurrentPages()|uni-app官网 应用:......
  • vue2.0和vue3.0同时使用
    背景:原先电脑上安装了vue2.0和node14.17.6版本,后面新项目使用的是vue3.0和node 16.6.1。通过nvm安装node 16.6.1的时候,不小心把原来的2.0环境给搞坏了。目的:本文将通过文字描述(都是cmd命令,截图感觉没啥意义)的方式,讲述卸载和安装多版本node的vue环境前言:步骤中所有的命令都......
  • Vue3.0+typescript+Vite+Pinia+Element-plus搭建vue3框架!
    使用Vite快速搭建脚手架命令行选项直接指定项目名称和想要使用的模板,Vite+Vue项目,运行(推荐使用yarn)#npm6.xnpminitvite@latestmy-vue-app--templatevue#npm7+,需要额外的双横线:npminitvite@latestmy-vue-app----templatevue#yarnyarncreatevite......
  • VUE3.0的安装教程
    一、下载nodejs    访问nodejs官网或者中文网:nodejs中文网  二、点击下载得到的.msi文件   (1) 点击next (2)接收协议,下一步        三、配置npm相关文件  (1)打开刚才安装node.js的文件夹,在里面新建两个文件夹,分别为node_......
  • VUE3.0 中如何使用SVG图标
    1.文件下新建SvgIcon文件夹以及子文件index.js,index.vue,svg文件夹(用于存放svg图片) 2.编写index.vue组件<template><svg:class="svgClass"aria-hidden="true"><use:xlink:href="iconName"/></svg></template><......
  • 如何使用 JavaScript 获取当前页面帧率 FPS
    可以通过计算每秒 window.requestAnimationFrame 的调用频率来做为FPS值。它接收一个回调函数,该回调函数会在浏览器下一次重绘之前执行。所以只要我们循环调用并记录单位时间内的调用次数就能计算当前页面的帧率了。效果展示在线预览-使用JavaScript获取当前页面帧率FP......
  • Vue3.0
    Vue2中的optionsAPI和Vue3.0中compositionAPIoptionsAPI示例compositionAPI是一组基于函数的API,可以更灵活的组织组件的逻辑createAPP函数的第一个参数即compositionAPI对象用于创建应用实例createApp({setup(){ constcount=ref(0)return{......
  • 表格复选框的勾选,翻页后,表格顶部的删除按钮,是删除当前页的选中还是包括之前的选中?
    表格复选框的勾选状态在用户翻页后如何处理以及顶部的删除按钮作用范围(是仅删除当前页选中项还是包括前一页已选中的项),取决于应用程序的具体设计和实现方式。通常存在以下两种情况:仅删除当前页选中项:如果应用程序设计为每次翻页后仅保留当前页面的选中状态,即不跨页记忆选中......
  • 点击菜单生成tabs(vue3.0)
    1.安装vuex npminstallvuex@next--save在main.js中引用vuex2.在main.js同级目录新建store/store.js文件 代码:import{createStore}from'vuex'exportdefaultcreateStore({ state:{ tabsList:[] }, mutations:{ addTab(state,tab){ //判断是否......
  • 获取layui表格(table)当前页的页码值和当前页的数据条数
    获取layui表格(table)当前页的页码值和当前页的数据条数在浏览器查看源码,获取当前页面的数据条数如下核心代码$(".layui-laypage-limits").find("option:selected").val()//分页数目$(".layui-laypage-skip").find("input").val()//当前页码值//转载请保留原创地址http:......