在vue中实现批量打印分页功能

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title></title>
    <script src="./plugin/vue.js"></script>
    <!-- 引入组件库 -->
    <script src="./plugin/element.js"></script>
    <script src="./plugin/en.js"></script>
    <script src="./plugin/axios.min.js"></script>
  </head>

  <style>
    * {
      padding: 0;
      margin: 0;
    }
    .print {
      padding: 40px;
    }
    table {
      width: 100%;
      margin: 20px;
    }
    td {
      padding: 5px 10px;
    }
    .order,
    .number {
      padding: 10px 20px;
    }
    button {
      padding-left: 40px;
      width: 120px;
      height: 60px;
    }
  </style>
  <body>
    <div id="app">
      <button @click="printButton">Print</button>
      <div class="print">
        <table border cellpadding="0" cellspacing="0" v-for="(item,index) in 100" style="height: 240px; width: 95%" :style="{'page-break-after': (index+1)%5===0&&'always'}">
          <tr>
            <td rowspan="5" class="order">500</td>
            <td rowspan="5" class="number">A34535</td>
            <td>资产名称:</td>
            <td>研磨夹具</td>
            <td>规格型号:</td>
            <td>ST/PC</td>
          </tr>
          <tr>
            <td>制造商:</td>
            <td></td>
            <td>入账日期::</td>
            <td>ST/PC</td>
          </tr>
          <tr>
            <td>供应商:</td>
            <td></td>
            <td>归属建设项目:</td>
            <td></td>
          </tr>
          <tr>
            <td>资产地点:</td>
            <td>ST/PC</td>
            <td>使用部门:</td>
            <td></td>
          </tr>
          <tr>
            <td>管理人:</td>
            <td>ST/PC</td>
            <td></td>
            <td></td>
          </tr>
        </table>
      </div>
    </div>
    <script>
      window.onload = function () {
        new Vue({
          el: '#app',
          data: function () {
            return {}
          },
          created() {},
          mounted() {},
          methods: {
            printButton() {
              var body = document.body.innerHTML
              document.body.innerHTML = document.querySelector('.print').innerHTML
              window.print()
              window.close()
              document.body.innerHTML = body
              location.reload()
            }
          }
        })
      }
    </script>
  </body>
</html>

注意点: 打印的样式只能写在行内才能生效。分页样式是 page-break-after:always 。
动态添加这个样式。就能实现一页放几个

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、功能背景 vue项目支持打印快递面单功能,需进行优化支持一次打印多张面单; 二、实现思路 1.后台配合提供一次...
    Smile_smile_阅读 4,904评论 0 1
  • 一、使用window.print()打印 ,打开一个新窗口,实现多页打印效果,但样式会丢失,只能内嵌样式; ...
    ll66_阅读 2,710评论 0 0
  • 项目需要 将文本和列表框打印到客户准备的固定大小的材料上期初效果是这样,如下图 这样得设置纸张大小,边距,居中,而...
    老板下碗面阅读 1,734评论 5 0
  • 在调用 window.print() 时,可以实现打印效果,但内容太多时要进行分页打印。 在样式中有规定几个打...
    小海怪的互联网阅读 448评论 0 1
  • 2017-01-31 CSS 打印 简介 本文主要讲解如何使用 CSS 控制打印样式。 基本概念 使用 CSS 可...
    videring阅读 820评论 1 0