UNPKG

wui-print

Version:

前端打印插件,包含打印设计器、打印表单、打印API

103 lines (102 loc) 3.83 kB
import useComplexTableFixed from "./use-complex-table-fiexd"; import useComplexTableAuto from "./use-complex-table-auto"; import useComplexTablePagination from "./use-complex-table-pagination"; import { deepCopy } from "../../print-designer-utils"; export default ({ printData, printConfig, formConfig, layoutConfig, printedRowCount = 0, printedRows = [], continuePrintElements, tablePaginationElements } = {}) => { const formatLayoutConfig = () => { let printModeDetails = _getPrintModeDetails(); let newLayoutConfig = _formatPrintPagination(); if (printModeDetails.type == "default") { // 默认模式 return newLayoutConfig; } let continueConfig = printModeDetails.type == "continuePrint" ? printModeDetails.layoutConfigItem : false; let tablePaginationConfig = printModeDetails.type == "tablePagination" ? printModeDetails.layoutConfigItem : false; if (!!continueConfig && continueConfig.props.canContinue && continueConfig.props.continuePrintMode == "fixedHeight") { // 需要续打 固定高度 const complexTableFixedInstance = useComplexTableFixed({ printData, printConfig, formConfig, layoutConfig: newLayoutConfig, printedRowCount }); return complexTableFixedInstance.formatLayoutConfig(); } if (!!continueConfig && !!continueConfig.props.canContinue && continueConfig.props.continuePrintMode == "autoHeight") { // 需要续打 自适应高度 const complexTableAutoInstance = useComplexTableAuto({ printData, printConfig, formConfig, layoutConfig: newLayoutConfig, printedRows, continuePrintElements }); return complexTableAutoInstance.formatLayoutConfig(); } if (!!tablePaginationConfig) { //启用分页 const complexTablePaginationInstance = useComplexTablePagination({ printData, printConfig, formConfig, layoutConfig: newLayoutConfig, tablePaginationElements }); return complexTablePaginationInstance.formatLayoutConfig(); } return newLayoutConfig; }; function _getPrintModeDetails() { let printModeDetails = { type: "default", layoutConfigItem: false }; if (!layoutConfig || layoutConfig.length <= 0) { return printModeDetails; } layoutConfig.forEach((item, index) => { if (!!printModeDetails.layoutConfigItem) { return; } let nowProps = !!item.props ? item.props : {}; if (item.type == "complexTable" && !!nowProps.canContinue) { printModeDetails.type = "continuePrint"; printModeDetails.layoutConfigItem = deepCopy(item); } else if (item.type == "complexTable" && !!nowProps.isPaginationMode && !!nowProps._paginationModePreview) { printModeDetails.type = "tablePaginationPreview"; printModeDetails.layoutConfigItem = deepCopy(item); } else if (item.type == "complexTable" && !!nowProps.isPaginationMode && !nowProps._paginationModePreview) { printModeDetails.type = "tablePagination"; printModeDetails.layoutConfigItem = deepCopy(item); } }); return printModeDetails; } function _formatPrintPagination() { let layoutConfigCopy = deepCopy(layoutConfig); let newLayoutConfig = []; let printPaginationConfig = [{ type: "pageBottom" }, { type: "pageBreak" }, { type: "pageTop" }]; layoutConfigCopy.forEach((item, index) => { if (item.type == "printPagination") { newLayoutConfig.push(...printPaginationConfig); return; } newLayoutConfig.push(item); }); return newLayoutConfig; } return { formatLayoutConfig }; };