window.print()打印 抬头页尾固定 中间表格自动分页

news/2024/11/15 3:54:55 标签: javascript, 前端, 开发语言

window.print()打印 抬头页尾固定 中间表格自动分页
在这里插入图片描述

直接上代码:
<template>
  <div class="receipt-order-print-sp" ref="receiptOrderPrintref" hidden="hidden" style="margin-left: -10px;">
    <table
      width="100%"
      border="1"
      style="text-align:left;border-collapse:collapse;table-layout:fixed;word-break:break-all"
    >
      <thead>
        <tr>
          <td colspan="12" style="border: 1px solid #FFFFFF;border-bottom: 1px solid #000;">
            <div class="title" style="padding-top: 12px;">
            <img class="logoimg" src="../../../../public/static/file/logo.png" />
            销售出货单
          </div>
          <div class="summarysp" style="padding-bottom: 12px;">
            <div class="col3">客戶:{{ row.customerName }}</div>
            <div class="col4">单据编号: {{ row.shipmentOrderNo }}</div>
            <div class="col3" style="margin: 4px 0;">送货地址: {{ row.deliveryAddress }}</div>
            <div class="col4" style="margin: 4px 0;">单据日期: {{ row.createTime }}</div>
            <div class="col4" style="width: 30%;">联系人: {{ row.contactPerson }}</div>
            <div class="col4">联系电话: {{ row.phone }}</div>
          </div>
		</td>
          
        </tr>
        <div style="margin-top: 10px;"></div>
        <tr class="tab-top" style="height: 20px;">
          <th colspan="1">序号</th>
          <th colspan="2">存货名称</th>
          <th colspan="2">规格型号</th>
          <th colspan="1">单位</th>
          <th colspan="1">数量</th>
          <th colspan="1">销售金额</th>
          <th colspan="1">赠品</th>
          <th colspan="3">备注</th>
        </tr>
      </thead>
      <tbody style="page-break-before: auto;">
        <tr v-for="(it, index) in row.details" :key="index" class="tdcenter">
          <td colspan="1">{{ index + 1 }}</td>
          <td colspan="2">{{ it.itemName || '' }}</td>
          <td colspan="2">{{ it.specificationModel || '' }}</td>
          <td colspan="1">{{ it.unit || '' }}</td>
          <td colspan="1">{{ it.planQuantity }}</td>
          <td colspan="1">{{ it.price }}</td>
          <td colspan="1"></td>
          <td colspan="3">{{ it.remark }}</td>
        </tr>
        <tr class="tdcenter">
          <td colspan="1"></td>
          <td colspan="2">合计:</td>
          <td colspan="2"></td>
          <td colspan="1"></td>
          <td colspan="1">{{ row.totalCount }}</td>
          <td colspan="1"></td>
          <td colspan="1"></td>
          <td colspan="3"></td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td colspan="12" style="border: 1px solid #FFFFFF">
          <div class="foot" style="margin-top: 4px;">
            <div>第一联:存根联(白) 第二联:客户联(红) 第三联:回执联(蓝) 第四联:运输(绿) 第五联:仓库(黄)</div>
          </div>
          <div class="foot" style="margin-top: 4px;">
            <div class="summarysp">
              <div class="col4" style="width: 30%;">制单人:{{ nickName }}</div>
              <div class="col4">审核人: {{ row.handledBy }}</div>
            </div>
          </div>
          <div style="margin-top: 30px;">
            <div class="col3">送货车牌号:</div>
            <div style="margin-top: 4px;font-size: 12px;width: 100%;display: flex;">
              <span style="width: 60%;display: inline-block;">送货司机及电话号码: </span>
              <span style="display: inline-block;">收货单位及收货人签字盖章: </span>
            </div>
          </div>
        </td>
        </tr>
      </tfoot>
    </table>
  </div>
</template>

<script>
import { mapGetters } from 'vuex'

export default {
  props: ['row', 'list', 'printnum'],
  computed: {
    ...mapGetters([
      'nickName'
    ]),
  },
  methods: {
    start() {
      this.$print(this.$refs.receiptOrderPrintref, {}, 'A4')
    },
  }
}
</script>

<style lang="stylus" media="print">
@page {
  size: auto;
  margin: 0; /* 设置页面边距 */
}

@media print {
  body {
    margin: 0;
    padding: 0;
  }

  table {
    width: 100%;
    table-layout: fixed;
    page-break-inside: avoid;
    page-break-after: avoid;
    page-break-before: avoid;
    border-collapse: collapse;
    border-spacing: 0;
    word-break: break-all; /* 防止内容溢出 */
  }

  thead {
    display: table-header-group; /* 固定表头 */
  }
  tfoot {
    display: table-footer-group; /* 固定表尾 */
  }

  tr {
    page-break-inside: avoid; /* 防止表格行被切割 */
  }
  
  th, td {
    border: 0.05rem solid #000;
    font-size: 12px;
    word-break: break-all; /* 防止内容溢出 */
  }

  .receipt-order-print-sp {
    width: 100% !important;
    font-size: 12px;
    padding: 0 12px;
    line-height: 1.8;
  }

  .summarysp {
    display: flex;
    flex-wrap: wrap;
    font-size: 12px !important;
  }

  .col3 {
    width: 66%;
    font-size: 12px;
  }

  .col4 {
    font-size: 12px;
  }

  .title {
    font-size: 22px;
    text-align: center;
    line-height: 30px;
  }

  .logoimg {
    width: 53.28px;
    height: 18px;
    margin-right: 10px;
  }

  .foot {
    font-size: 12px;
  }

  .common-table {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    border-spacing: 0;
  }

  .common-table th, .common-table td {
    border-color: black;
  }

  .tdcenter td {
    padding: 5px;
    text-align: center;
  }
  .tab-top{
    th{
      border: 1px solid #000;
      text-align: center;
    }
  }
}
</style>

{
border-color: black;
}

.tdcenter td {
padding: 5px;
text-align: center;
}
.tab-top{
th{
border: 1px solid #000;
text-align: center;
}
}
}



http://www.niftyadmin.cn/n/5752611.html

相关文章

认识QT以及QT的环境搭建

认识QT 什么是QT&#xff1f; Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。 认识客户端 现在我们所说的客户端开发其实大致分为三种&#xff1a; 1.网页前端开发。 2.桌面应用开发&#xff08;电脑的应用层序&#xff09; 3.移动应用开发。 而我们的QT的主战场就是在…

vue 依赖注入(Provide、Inject )和混入(mixins)

Prop 逐级透传问题​ 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用 props。想象一下这样的结构&#xff1a;有一些多层级嵌套的组件&#xff0c;形成了一棵巨大的组件树&#xff0c;而某个深层的子组件需要一个较远的祖先组件中的部分数据。…

Gradle 创建Spring Boot项目

在 Spring Boot 项目中&#xff0c;Gradle 插件可以让你更方便地管理依赖、打包、运行和测试 Spring Boot 应用。以下是如何使用 Spring Boot Gradle 插件的详细指南&#xff1a; 1. 引入 Spring Boot 插件 在 build.gradle 中引入 Spring Boot 插件可以为项目提供各种便捷的…

丹摩征文活动 | 丹摩智算平台:服务器虚拟化的璀璨明珠与实战秘籍

丹摩DAMODEL&#xff5c;让AI开发更简单&#xff01;算力租赁上丹摩&#xff01; 目录 一、引言 二、丹摩智算平台概述 &#xff08;一&#xff09;平台架构 &#xff08;二&#xff09;平台特点 三、服务器虚拟化基础 &#xff08;一&#xff09;虚拟化的概念 &#xf…

12306中如何知道用户使用的哪种登录方式?(用户名、邮箱、手机号)

手机号一定不带符号&#xff08;必须为11位纯数字&#xff09;&#xff0c;邮箱一定带有符号用户名不能用纯数字用户名不能是11位的手机号格式&#xff08;正则匹配&#xff09;增加一个标识字段表明是手机号登录&#xff08;例如&#xff1a;手机号 验证码&#xff0c;有标识…

力扣589:N叉树的先序遍历

给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔&#xff08;请参见示例&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [1,null,3,2,4,null,5,6] 输出&…

【大数据测试HBase数据库 — 详细教程(含实例与监控调优)】

大数据测试HBase数据库 1. 环境准备与安装1.1 安装 HBase 环境1.1.1 下载与安装 HBase1.1.2 配置 HBase 2. 功能测试2.1 创建表和插入数据2.2 查询数据2.3 更新数据2.4 删除数据2.5 查看表格结构 3. 性能测试3.1 使用 HBase 自带的性能测试工具3.2 使用 YCSB 进行性能测试 4. 容…

深入理解 React 架构从概览到核心机制

开发领域&#xff1a;前端开发 | AI 应用 | Web3D | 元宇宙 技术栈&#xff1a;JavaScript、React、ThreeJs、WebGL、Go 经验经验&#xff1a;6年 前端开发经验&#xff0c;专注于图形渲染和AI技术 开源项目&#xff1a;github 晓智元宇宙、数字孪生引擎、前端面试题 大家好&am…