数据列表如何实现单条记录部分数据的打印?

2023-10-25 14:17:04 浏览数 (3)

问题

在数据列表里,数据是一条一条循环出来的,如果我们想实现打印单条数据,打印出来的每条数据都是相同的

描述

页面布局大致如下:

页面上添加了一个打印按钮,微搭本地不提供打印功能,打印功能的实现是调用了一个print自定义方法,打印指定的容器container1

自定义的print方法:

代码语言:javascript复制
export default async function({event, data}) {
  console.log('data.target',data.target)
const element = document.querySelector(`#container1`) // 选择到要打印的组件id或者class,转换为canvas,其中 idXXX 表示要打印的元素
  if(!element) {
    throw new Error('要打印的内容不存在')
  }
  const { width, height } = element.getBoundingClientRect()
  const canvas = await window.html2canvas(element)
​
  // 打印
  let winPrint = window.open('', '', `left=0,top=0,width=${width},height=${height},toolbar=0,scrollbars=0,status=0`);
  winPrint.document.body.appendChild(canvas);
  winPrint.document.close();
  winPrint.focus();
  winPrint.print();
  winPrint.close();
}

因为打印的数据是循环出来的,当我们点击打印按钮时,

此时我们点击的是第二条数据,但是在打印预览页展示的还是第一条数据信息。

同样的,无论我们点击哪一条数据的打印,打印预览页都是第一条的信息,所以我们无法直接在数据列表内实现打印不同数据的功能

总结

目前的解决办法是新建一个页面,跳转到新页面传递参数,新页面内只展示单条数据,在新页面内打印。但是这种办法还需要跳转页面,操作上不够简便。

0 人点赞