美文网首页
qrcode批量打印,分页可选择打印项

qrcode批量打印,分页可选择打印项

作者: Amanda妍 | 来源:发表于2024-01-02 14:57 被阅读0次
image.png
image.png image.png

html部分

<el-dialog :title="previewForm.title" v-model="previewForm.visible" width="680px" :destroy-on-close="true">
      <div class="patient-container-box">
        <div class="patient-container" :id="'printDiv' + index" v-for="(item, index) in printPatientList">
          <div class="check-box" @click="handlePrintPatient(item)" v-if="!isPrint">
            <img class="check-select" v-show="item.checked" src="https://cdn.xun-qi.cn/seer/upload/upload/img/base/media/Group 3055@2x_1701334097260.png"/>
            <img class="check-select" v-show="!item.checked" src="https://cdn.xun-qi.cn/seer/upload/upload/img/base/media/Rectangle 8209@2x_1701334097259.png"/>
          </div>
          <div class="bottom-content">
            <div class="qrcode" :ref="item.id + 'qrcode'"></div>
            <img class="qrcodeImg" :id="item.id + 'qrCodeImg'" height="161" width="161"/>
            <div class="basic-info">
              <span class="name">{{ $tools.nameDesensitize(item.name) }}</span>
              <span class="sex">{{ item.sex }}</span>
              <span class="age" v-if="item.age">{{ item.age }}岁</span>
            </div>
            <div class="idcard" v-if="item.idcard">身份证:{{ $tools.idCardDesensitizePatient(item.idcard) }}</div>

            <div class="remark" v-if="printPatientRemark">患者备注:{{ printPatientRemark }}</div>
          </div>
        </div>
      </div>
      <template #footer>
        <div class="dialog-footer">
          <el-button @click="previewForm.visible = false">关闭</el-button>
          <el-button type="primary" @click="totalPrint">打印</el-button>
        </div>
      </template>
    </el-dialog>

js具体打印实现

    totalPrint(flag) {
      const data =  this.autoPrintPatientList
      if (data.length === 0) return this.$message.error('请选择要打印的患者!')
      this.isPrint = true

      const styleSheet = `<style>
        body{
          margin: 0;
          padding: 0;
        }
      .patient-container {
        background: url('https://cdn.xun-qi.cn/seer/upload/upload/img/base/media/Group 4771@2x_1704180130683.png') no-repeat;
        width: 10cm;
        height: 18cm;
        background-size: 100% 100%;
        margin:auto auto;
        padding: 8px;
        box-sizing: border-box;
        page-break-after: always;


        .check-box {
          margin-bottom: 24px;

          .check-select {
            width: 14px;
            height: auto;
          }
        }

        .bottom-content {
           margin-top: 85px;
           text-align: center;

          .qrcode {
            width: 160px;
            height: 160px;
            margin: 12px auto;
            display: none;
          }

           .qrcodeImg{
              width: 161px;
              display: inline-block;
              height: 161px;
              margin: 0 auto 34px;
            }

          .basic-info {
            text-align: center;
            font-size: 16px;
            font-weight: 400;
            color: #000000;
            line-height: 25px;
            margin: 0 4px;

            .sex {
              margin: 0 8px;
            }
          }


          .idcard {
            font-size: 14px;
            color: #000;
            margin-bottom: 24px;
            line-height: 22px;
          }

          .remark {
            font-size: 12px;
            font-weight: 400;
            color: #2E3131;
            line-height: 19px;

          }
        }
      }
    </style>`

      this.$nextTick(() => {


        //打印
        let newWin = window.open('') //新打开一个空窗口
        newWin.document.write('<style media="print">@page {size: auto; margin: 0;}</style>'); //解决出现页眉页脚和路径的问题

        data.map((item, i) => {

          //处理qrcode生成的二维码无法打印的问题
          let qrcodeEl = this.$refs[item.id + 'qrcode'][0]
          let canvasUrl = qrcodeEl.getElementsByTagName('canvas')[0].toDataURL('image/jpg')
          let qrCodeImgEl = document.getElementById([item.id + 'qrCodeImg'])
          qrCodeImgEl.setAttribute('src', canvasUrl)
          qrcodeEl.innerHTML = ''

          let imageToPrint = document.getElementById('printDiv' + i) //获取需要打印的内容
          newWin.document.write(imageToPrint.outerHTML) //将需要打印的内容添加进新的窗口
        })

        this.previewForm.visible = false

        newWin.document.head.innerHTML = styleSheet //给打印的内容加上样式
        newWin.document.close() //在IE浏览器中使用必须添加这一句
        newWin.focus() //在IE浏览器中使用必须添加这一句

        setTimeout(() => {
          newWin.print() //打开打印窗口
          newWin.close() //关闭打印窗口

        }, 500)

      })
    },

qrcode生成二维码部分

handlePreview() {
      this.printForm.visible = false
      this.previewForm.visible = true
      this.$nextTick(() => {
        if (this.printPatientList.length > 0) {
          this.printPatientList.forEach(item => {
            item.checked = true
            this.generateQrcode(this.$refs[item.id + 'qrcode'][0], item.id)
          })

          this.autoPrintPatientList = this.printPatientList
        }
      })

    },

    generateQrcode(tg, id) {
      if (tg) tg.innerHTML = ''
      //todo url待修改
      const url = `${id}`
      this.$qrcode({
        target: tg,
        width: 78,
        height: 78,
        text: url,
      })
    },

相关文章

  • 【vue学习】整合Lodop

    前端实现自动打印 批量打印 vue中使用lodop调用标签打印机 利用lodop打印控件轻松实现批量打印 本文主要...

  • 页面内容打印和导出

    打印: 分页打印-CSS的page-break-after:always样式解决分页问题 导出:

  • 基于react-PC端打印分页技术解决方案

    基于react-PC端打印分页技术解决方案 前言 最近的项目在实现PC端打印时遇到了个大坑:打印分页,区区一个分页...

  • 2021-10-08-如何批量打印

    如何批量打印pdf word等,比如发票 wps批量打印功能 福昕pdf批量打印功能 先把pdf合并成一个文件,然...

  • 打印设置

    * 分页线预览:视图-分页预览 * 打印标题:页面布局-打印标题-工作表-顶端标题行 * 添加页眉、页码:页面布局...

  • 快递鸟对接 - 数据验证不通过

    对接快递鸟电子面单批量打印 批量打印的流程: 1、先调用电子面单打印接口获得必须字段:OrderCode(订单号)...

  • excel中实用的打印技巧,看一次就会了

    本文介绍了一些基本打印技巧、分页打印、每页打印标题行、打印背景图片、打印页码等功能。这些功能基本涵盖了日常打印需求...

  • Excel技巧之分页打印

    如何将一个excel表按部门分页打印? 将部门按顺序排列排序后 设置打印标题:页面布局->打印标题->顶端标题打印...

  • CAD插件batchplot 3.5.9批量打印破解版免费下载附

    batchplot是一款非常实用的autocad批量打印工具,支持批量打印AutoCAD图纸文件,通过这款软件可以...

  • JAVA批量打印报表

    不使用工具条上的打印按钮,用java怎么实现批量打印皕杰报表? 解决方案: 皕杰报表提供了批量打印的工具类Repo...

网友评论

      本文标题:qrcode批量打印,分页可选择打印项

      本文链接:https://www.haomeiwen.com/subject/oaipndtx.html