wui-print
Version:
前端打印插件,包含打印设计器、打印表单、打印API
103 lines (102 loc) • 3.83 kB
JavaScript
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
};
};