Files
pj_admin_cloud/src/views/supermarketerp/supermarketUtils.ts
T
2025-08-05 16:57:44 +08:00

43 lines
1.0 KiB
TypeScript

import { VxeUI } from "vxe-table"
// 数组分块分组
function chunk<T>(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,
})
})
}
}