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

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,
      })
    },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容