首页 > 其他分享 >分享 vxe-table 实现打印出货单、自定义打印单据

分享 vxe-table 实现打印出货单、自定义打印单据

时间:2024-11-21 14:31:28浏览次数:1  
标签:code name 自定义 vxe 打印 num table 3%

在公司开发列表时,经常会遇到需求打印出货单,接下来分享如何在 vxe-table 灵活的使用打印功能,非常简单就能实现能自定义的出货单打印。

安装

npm install [email protected] [email protected]
// ...
import VxeUI from 'vxe-pc-ui'
import 'vxe-pc-ui/lib/style.css'
import VxeUITable from 'vxe-table'
import 'vxe-table/lib/style.css'
// ...

createApp(App).use(VxeUI).use(VxeUITable).mount('#app')
// ...

页面效果

页面上的打印区用蓝色边框标注了,方便看出效果

点击打印后,完整的将指定的区域打印出来,也可以添加自定义内容,非常灵活。
不仅支持去掉页头、页尾,自定义标题、分页等等,灵活自定义程度非常高

<template>
  <div>
    <vxe-button content="点击打印" @click="printEvent"></vxe-button>

    <div style="border: 1px solid #409eff; padding: 16px">
      <div ref="topElRef">
        <div style="margin-bottom: 8px;">
          <div style="display: inline-block;width: 100%;">
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">商品名称:Vxe 企业授权</div>
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">发货单号:X2665847132654</div>
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">发货日期:2024-12-01</div>
          </div>
          <div style="display: inline-block;width: 100%;">
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">收货姓名:小徐</div>
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">收货地址:火星第七区18号001</div>
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">联系电话:10086</div>
          </div>
        </div>
      </div>

      <vxe-table
        border
        ref="tableRef"
        height="300"
        :print-config="{}"
        :data="tableData">
        <vxe-column type="checkbox" width="60"></vxe-column>
        <vxe-column type="seq" width="60"></vxe-column>
        <vxe-column field="name" title="名称"></vxe-column>
        <vxe-column field="code" title="编码"></vxe-column>
        <vxe-column field="num" title="数量"></vxe-column>
        <vxe-column field="price" title="价格"></vxe-column>
        <vxe-column field="taxRate" title="税率"></vxe-column>
      </vxe-table>

      <div ref="bottomElRef">
        <div style="margin-top: 30px;text-align: right;">
          <div style="display: inline-block;width: 100%;">
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;"></div>
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">创建人:小徐</div>
            <div style="float: left; width: 33.33%;height: 28px;line-height: 28px;">创建日期:2024-12-01</div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import { VxeUI } from 'vxe-table'

export default {
  data () {
    const tableData = [
      { id: 10001, name: '筛选插件', code: 'T1', price: 1200, num: 1, taxRate: '3%' },
      { id: 10002, name: '区域选取插件', code: 'T2', price: 16840, num: 3, taxRate: '3%' },
      { id: 10003, name: '单元格选取插件', code: 'T3', price: 8460, num: 3, taxRate: '3%' },
      { id: 10004, name: 'Excel 筛选插件', code: 'T4', price: 980, num: 2, taxRate: '3%' },
      { id: 10005, name: '零代码平台模板', code: 'T5', price: 23199, num: 5, taxRate: '3%' },
      { id: 10006, name: '后台管理系统模板', code: 'T6', price: 899, num: 7, taxRate: '3%' },
      { id: 10007, name: '低代码设计器插件', code: 'T7', price: 1688, num: 4, taxRate: '3%' },
      { id: 10008, name: '可视化拖拽插件', code: 'T8', price: 1299, num: 4, taxRate: '3%' }
    ]
    return {
      tableData
    }
  },
  methods: {
    async printEvent () {
      const $table = this.$refs.tableRef
      if ($table) {
        const printRest = await $table.getPrintHtml()
        const topEl = this.$refs.topElRef
        const bottomEl = this.$refs.bottomElRef
        const topHtml = topEl ? topEl.innerHTML : ''
        const bottomHtml = bottomEl ? bottomEl.innerHTML : ''
        VxeUI.print({
          title: '出货单据',
          pageBreaks: [
            // 第一页
            {
              bodyHtml: topHtml + printRest.html + bottomHtml
            }
          ]
        })
      }
    }
  }
}
</script>

https://gitee.com/xuliangzhan/vxe-table

标签:code,name,自定义,vxe,打印,num,table,3%
From: https://www.cnblogs.com/qaz666/p/18560674

相关文章

  • 打印和PDF管理软件:BatchOutput XLS macOS高效工作软件激活安装包
    BatchOutputXLS是一款专为Mac平台设计的打印和PDF管理软件。它支持批量处理XLS(Excel)文件,具备强大的批量打印功能,用户可以将多个XLS文档添加到打印列表中,一次性完成打印任务。此外,该软件还能将XLS文档转换为PDF格式,便于文件的保存和分享。BatchOutputXLS以其高效、稳定、易用的......
  • 一段VUE代码:通过组件封装全局方法、自定义指令和注册组件
    index.js//插件定义第一种方式,对象:拥有install()方法的对象constmyPlugin={install(app,options){//配置全局方法app.config.globalProperties.globalMethod=function(value){returnvalue.toLowerCase();};//注册全局组件ap......
  • OpenLayers教程12_WebGL自定义着色器:实现高级渲染效果
    在OpenLayers中使用WebGL自定义着色器实现高级渲染效果目录一、引言二、WebGL自定义着色器的优势三、示例应用:实现动态渲染效果1.项目结构2.主要代码实现3.运行与效果四、代码讲解与扩展1.动态圆的半径和填充颜色2.动态透明度与边框效果五、总结六、参考资......
  • python 自定义数据分页
    defpaginate_data(data_list,size_page,current_page):"""数据分页函数:paramdata_list:list,数据列表:paramsize_page:int,每页的数量:paramcurrent_page:int,当前页码:return:tuple,(总页数,当前页码,当前页的数据列表)"""......
  • 自定义类型结构体(中)
    目录结构体内存对齐对齐规则例子一练习3练习4-结构体嵌套问题为什么存在内存对齐平台原因(移植原因)性能原因修改默认对齐数感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接......
  • React+AntD Table支持下拉分页和自定义输入分页条数
    实例支持在下拉分页框内输入分页条数来实现自定义分页代码usePageSizeSelect.jsimport{useEffect,useState}from"react";importBusfrom"../../utils/eventBus";exportfunctionusePageSizeSelect(){constonInputKeyDown=(e)=>{consttemp......
  • React+AntD文件上传并自定义上传逻辑
    上传组件DragClickUpload.tsximport{CloudUploadOutlined}from'@ant-design/icons';importtype{UploadProps}from'antd';import{message,Upload}from'antd';importReact,{useState}from'react';importaxiosfrom&......
  • SMARTFORMS函数调用完整示例:打印工厂物料信息
    首先规划想要打印的效果和信息,这里示例的是想要打印物料数据库里面的信息。①对相关数据表创建表结构:SE11 注意数据类型,数量quan需要参考类型:创建表结构:②创建一个REPORT程序,并对相关的字段、变量、内表进行声明,并写一个SELECTION界面和一些基础的取数等,具体代码如下:DATA......
  • Ingress nginx自定义错误页面
     Ingressnginx自定义错误页面的深度定制1、错误页面状态码网站运行过程中难免出现问题,为用户抛出一个错误页面,常见的错误页面包含403、404、500、502、503、504状态码,这些常见的错误页面状态码的含义如下403Forbidden404NotFound500InternalServerEroor502......
  • RedMine自定义--新增复制问题标题和链接按钮
    前言:Redmine本身的复制链接按钮只能复制问题的链接详情,复制出来的格式是:ip.xxxx/issues/200  这次自定义出来一个按钮,希望可以复制问题的标题和链接,这样发送问题给别人时能先知道这个问题大概是什么 一:首先找到redmine菜单栏的代码路径,在:redmine/app/views/issues的_action......