Files
pj_admin_cloud/src/views/supermarketerp/supermarketUtils.ts
T

49 lines
1.1 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 = (
editableTableRef: any,
baseDataInfoRef: any,
editableTableData: any,
tableChunkSize: number = 20,
printTitle: string = "",
) => {
const $table = editableTableRef
const formPrintHtml = baseDataInfoRef ? baseDataInfoRef.innerHTML : ""
if ($table && formPrintHtml) {
// 分割每页20条
Promise.all(
chunk(editableTableData, 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,
})
})
}
}