import { VxeUI } from "vxe-table" // 数组分块分组 function chunk(array: T[], size: number): T[][] { if (size <= 0) { throw new Error("组的大小必须大于0") } const result: T[][] = [] for (let i = 0; i < array.length; i += size) { result.push(array.slice(i, i + size)) } return result } // 表格分页 + 表单信息 打印 export const tablePrint = (vxeTableRef: any, baseInfoRef: any, vxeTableData: any, tableChunkSize: number = 20, printTitle: string = "") => { const $table = vxeTableRef const formPrintHtml = baseInfoRef ? baseInfoRef.innerHTML : "" if ($table && formPrintHtml) { // 分割每页20条 Promise.all( chunk(vxeTableData, tableChunkSize).map((pageData: any, index: number) => { return $table .getPrintHtml({ data: pageData, }) .then(({ html }: any) => { return { bodyHtml: index === 0 ? formPrintHtml + html : html, } }) }), ).then((pageBreaks) => { VxeUI.print({ title: printTitle, showPageNumber: true, pageBreaks, }) }) } }