使用生成条形码并打印和vue-print-nb以及报错问题的解决

 更新时间:2025年07月27日 15:00:00   作者:胡乱更法  
在TypeScript项目中,正确安装vue3-print-nb并配置env.d.ts声明模块,添加tsconfig.json的include路径,确保全局挂载以实现条形码和批量打印功能

生成条形码并打印和vue-print-nb以及报错

借鉴网上大多数vue-print-nb安装打印,发现在自己的项目(ts语法下)中会发现模块引入错误

所以换成    

npm install vue3-print-nb  //重新安装

vue-print-nb在自己的项目中无法使用,故此更换

引入后需要在根目录下的env.d.ts中引入

declare module 'vue3-print-nb' {
   const install: (app: App) => void
   const print: (options?: PrintOptions) => void
   export default { install, print }
  }

引入后需要在tsconfig.json文件里的include中添加env.d.ts的路径

也可以在ts项目下的默认下的types下的文件中引入也可以,或者全局搜索   declare module,在添加,这在样mian.ts下引入   import print from 'vue3-print-nb'  不会报类型报错,在进行全局挂载

使用条形码多批量打印

 <div class="preview-area" id="printTest">
            <div v-for="(item, index) in data" :key="index">
                <svg :ref="el => setBarcodeRef(el, index)"></svg>
                <p style="page-break-after: always"></p>
            </div>
        </div>
      <el-button v-print="printObj" ref="printBtn" style="display: none;"></el-button>
</div>


const data = ref([])
const barcodeRefs = ref([])
const printBtn = ref(null)

const printObj = reactive({
    id: 'printTest',
    beforeOpenCallback(vue) {
        vue.printLoading = true
    },
    openCallback(vue) {
        vue.printLoading = false
    },
    closeCallback(vue) {
        console.log('关闭了打印工具')
    }
})
//获取每一个对应的svg
const setBarcodeRef = (el, index) => {
    barcodeRefs.value[index] = el
}
//list为数据源    调用showPrint进行数据调用
const showPrint = async (list) => {
    data.value = list
    await nextTick()
    await generateBarcode(list)
    // 生成完成后自动触发打印
    await nextTick()
    printBtn.value.$el.click()
}

const generateBarcode = async (list) => {
    try {
        list.forEach((item, index) => {
            if(barcodeRefs.value[index]) {
                JsBarcode(barcodeRefs.value[index], item.LocationCode, {
                    format: "CODE128",
                    lineColor: "#000",
                    width: 2,
                    height: 60,
                    displayValue: true,
                    fontSize: 16,
                    margin: 10
                });
            }
        })
    } catch (error) {
        console.error('生成条形码失败:', error);
    }
};

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue3+TypeScript项目中安装PDF.js详细的步骤

    Vue3+TypeScript项目中安装PDF.js详细的步骤

    这篇文章主要介绍了Vue3+TypeScript项目中安装PDF.js详细的步骤,通过示例代码详细介绍了包括安装步骤、基础使用示例、创建可复用PDF查看器组件、注意事项等,需要的朋友可以参考下
    2026-01-01
  • Vue 封装公告滚动的方法

    Vue 封装公告滚动的方法

    文章介绍了如何在需求系统中创建一个位于页面上方的公告展示组件,展示了如何在App.vue或其他页面组件中使用这个公告组件,感兴趣的朋友一起看看吧
    2025-01-01
  • 深入浅出分析vue2和vue3的区别

    深入浅出分析vue2和vue3的区别

    这篇文章主要介绍了vue2和vue3的区别,较为详细的分析了vue2与vue3的常见区别与使用方法,需要的朋友可以参考下
    2023-06-06
  • vue实现动态控制el-table表格列的展示与隐藏

    vue实现动态控制el-table表格列的展示与隐藏

    这篇文章主要介绍了vue实现动态控制el-table表格列的展示与隐藏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Vue的Eslint配置文件eslintrc.js说明与规则介绍

    Vue的Eslint配置文件eslintrc.js说明与规则介绍

    最近在跟着视频敲项目时,代码提示出现很多奇奇怪怪的错误提示,百度了一下是eslintrc.js文件没有配置相关命令,ESlint的语法检测真的令人抓狂,现在总结一下这些命令的解释
    2020-02-02
  • 写一个Vue Popup组件

    写一个Vue Popup组件

    这篇文章主要介绍了写一个Vue Popup组件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Vue路由 重定向和别名的区别说明

    Vue路由 重定向和别名的区别说明

    这篇文章主要介绍了Vue路由 重定向和别名的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 关于el-scrollbar滚动条初始化不显示的问题及解决

    关于el-scrollbar滚动条初始化不显示的问题及解决

    这篇文章主要介绍了关于el-scrollbar滚动条初始化不显示的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue中使用mixin扩展组件功能的基本步骤

    Vue中使用mixin扩展组件功能的基本步骤

    Mixin是面向对象程序设计语言中的类,提供了方法的实现,其他类可以访问mixin类的方法而不必成为其子类在Vue中,可以使用mixin来扩展组件的功能,本文给大家介绍了Vue中如何使用mixin扩展组件功能,需要的朋友可以参考下
    2024-11-11
  • vue3父子组件通信之子组件修改父组件传过来的值

    vue3父子组件通信之子组件修改父组件传过来的值

    这篇文章主要介绍了vue3父子组件通信之子组件修改父组件传过来的值,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-05-05

最新评论