欢迎光临
我们一直在努力

若依框架集成vue-print-designer 实现可视化打印模板设计

在企业级后台管理系统开发中,打印表单、票据、标签等需求十分常见,基于若依(RuoYi)框架开发的项目也不例外。传统手写打印逻辑不仅需要处理繁琐的排版、分页代码,后续需求变更时还需反复修改代码,开发效率低且维护成本高。而vue-print-designer作为一款轻量、高效的开源可视化打印设计器,完美解决了这一痛点,支持拖拽式模板设计、多格式导出、跨框架兼容,能无缝集成到若依框架中,让打印功能开发从「重编码」变为「轻配置」。

本文将详细介绍若依前后端分离版集成vue-print-designer的完整步骤,帮助开发者快速在项目中实现可视化打印模板设计能力。 vue-print-designer项目地址:https://gitee.com/theGreatOldFive/vue-print-designer

一、环境准备

  • 基础环境:确保本地已安装Node.js(>=16.0.0)、npm(>=7.0.0),若依框架前后端项目能正常启动运行;
  • 若依框架:支持Vue2/Vue3版本的前后端分离版,本文适配主流的若依Vue3版本,Vue2版本仅需微调引入方式;
  • 依赖准备:vue-print-designer已做工程化封装,支持npm一键安装,无需额外配置编译环境。
  • 二、核心集成步骤

    2.1 安装vue-print-designer依赖

    进入若依前端项目根目录(默认ruoyi-ui),执行以下命令安装依赖,该命令会自动将依赖添加至package.json中:

    npm i vue-print-designer

    2.2 全局引入打印设计器组件

    若依框架推荐全局引入通用组件,便于在项目各处直接使用。打开若依前端项目的入口文件(Vue3为src/main.ts,Vue2为src/main.js),添加以下引入代码,同时引入组件样式,保证界面正常渲染:

    // Vue3/若依Vue3版本
    import { createApp } from 'vue'
    import App from './App.vue'
    import router from './router'
    // 引入vue-print-designer组件及样式
    import 'vue-print-designer';
    import 'vue-print-designer/style.css';

    const app = createApp(App)
    app.use(router).mount('#app')

    // Vue2/若依Vue2版本
    import Vue from 'vue'
    import App from './App'
    import router from './router'
    // 引入vue-print-designer组件及样式
    import 'vue-print-designer';
    import 'vue-print-designer/style.css';

    new Vue({
    el: '#app',
    router,
    components: { App },
    template: '<App/>'
    })

    2.3 创建打印设计专属页面

    遵循若依框架的目录规范,在src/views下新建打印设计模块目录printDesign,并创建页面文件index.vue,该页面作为vue-print-designer在若依中的载体,同时适配若依的页面样式与布局规范:

    <template>
    <!– 若依标准页面容器,保证与框架样式统一 –>
    <div class="app-container">
    <div class="page-header-wrapper">
    <h2>打印模板设计器</h2>
    <p>支持拖拽设计表单/票据/标签,一键预览、打印、导出</p>
    </div>
    <!– 打印设计器核心组件,设置宽高占满容器 –>
    <print-designer id="ruoyi-print-designer" style="width: 100%; height: calc(100vh – 120px);"></print-designer>
    </div>
    </template>

    <script setup name="PrintDesign">
    // 可在此处扩展业务逻辑,如绑定动态业务数据、监听打印/导出事件
    import { onMounted } from 'vue'

    onMounted(() => {
    // 获取设计器实例,后续可对接若依的业务接口
    const designer = document.querySelector('#ruoyi-print-designer')
    console.log('打印设计器实例初始化完成', designer)
    })
    </script>

    <style scoped>
    .page-header-wrapper {
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid #e6e6e6;
    }
    </style>

    2.4 配置若依框架路由

    若依框架的侧边栏与路由强绑定,需在路由配置中添加打印设计页面的路由信息,遵循若依的路由配置规范。打开src/router/index.js,在constantRoutes(静态路由,无需权限即可访问)或asyncRoutes(动态路由,需配置权限)中添加以下配置,本文以静态路由为例:

    import Layout from '@/layout'

    export const constantRoutes = [
    // 原有路由(如首页、登录页)
    {
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    children: [{
    path: 'dashboard',
    name: 'Dashboard',
    component: () => import('@/views/dashboard/index'),
    meta: { title: '首页', icon: 'dashboard' }
    }]
    },
    // 新增打印设计器路由
    {
    path: '/printDesign',
    component: Layout,
    hidden: false,
    children: [{
    path: 'index',
    name: 'PrintDesign',
    component: () => import('@/views/printDesign/index'),
    meta: { title: '打印模板设计', icon: 'print' } // 配置侧边栏标题和图标
    }]
    }
    ]

    2.5 配置若依菜单与权限(可选)

    若需对打印设计功能做权限管控,可通过若依的「系统管理-菜单管理」配置菜单与权限标识,步骤如下:

  • 登录若依后台管理系统,进入「系统管理 -> 菜单管理」,点击「新增」;
  • 配置菜单信息:菜单类型选择「菜单」,菜单名称填写「打印模板设计」,路由地址填写「printDesign/index」,父菜单选择根目录或自定义模块,图标填写「print」(与路由meta中的icon一致);
  • 配置权限标识:如填写「system:print:view」,用于控制不同角色的访问权限;
  • 点击「提交」后,在「系统管理 -> 角色管理」中为对应角色分配该菜单权限,刷新页面后,侧边栏即可显示带权限控制的打印设计菜单。
  • 三、功能测试与验证

    完成以上配置后,启动若依前后端项目,进行功能测试,核心测试步骤如下:

  • 启动若依后端服务,再启动前端项目(npm run dev),登录后台系统;
  • 在侧边栏找到「打印模板设计」菜单,点击进入页面,即可看到vue-print-designer的可视化设计界面;
  • 测试核心功能:拖拽文本/表格/二维码/条码等组件至画布、调整组件样式、预览打印效果、导出PDF/图片、配置打印参数等。
  • 在这里插入图片描述

    四、拓展能力:对接若依业务数据与高级打印功能

    vue-print-designer提供了丰富的API与拓展能力,可轻松对接若依框架的业务数据,满足企业级复杂打印需求,核心拓展能力如下:

    4.1 动态绑定业务数据

    通过设计器实例的setVariables方法,可将若依中获取的业务数据(如订单、用户、单据数据)绑定至打印模板,实现动态数据填充:

    // 在printDesign/index.vue的onMounted中扩展
    onMounted(async () => {
    const designer = document.querySelector('#ruoyi-print-designer')
    // 调用若依的业务接口获取数据(示例为订单数据)
    const res = await getOrderDetail({ orderId: 1001 })
    // 绑定动态变量至设计器
    designer.setVariables({
    orderNo: res.data.orderNo,
    userName: res.data.userName,
    createTime: res.data.createTime,
    amount: res.data.amount
    }, { merge: true })
    })

    4.2 企业级打印能力

    vue-print-designer不仅支持浏览器常规打印,还提供静默打印、云打印能力,配合官方配套的PrintDot Client桌面打印助手(支持Windows/macOS/Linux),可实现无人值守场景的自动打印,解决浏览器打印的兼容性问题:

    // 静默打印(需配合PrintDot Client)
    await designer.print({ mode: 'silent' })
    // 导出PDF并自定义文件名
    await designer.export({ type: 'pdf', filename: '若依订单打印.pdf' })

    4.3 模板复用与二次开发

    设计完成的打印模板可导出为JSON格式,可将模板数据存储至若依的数据库中,实现模板的云端管理与复用;同时vue-print-designer的代码结构清晰,支持自定义组件扩展、国际化配置,可根据企业业务需求做二次开发,完美适配若依的定制化开发场景。

    五、总结

    vue-print-designer与若依框架的集成过程简单高效,仅需5个核心步骤即可在若依项目中实现可视化打印模板设计能力,彻底告别手写打印逻辑的繁琐与低效。该组件作为专为业务打印打造的开源工具,具备拖拽式设计、多格式导出、跨框架兼容、高度可扩展等特性,与若依框架的适配性良好,样式与布局可无缝融合,大幅提升了企业级后台系统打印功能的开发效率与维护性。

    无论是ERP系统的单据打印、电商后台的快递面单设计,还是财务系统的票据打印,vue-print-designer都能满足多样化的打印需求,是若依框架开发中打印功能的优质解决方案。更多详细的API文档与使用示例,可前往项目仓库查看:https://gitee.com/theGreatOldFive/vue-print-designer。

    赞(0)
    未经允许不得转载:171主机测评 » 若依框架集成vue-print-designer 实现可视化打印模板设计
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址