wui-print
Version:
前端打印插件,包含打印设计器、打印表单、打印API
76 lines (75 loc) • 3.57 kB
JavaScript
import { deepCopy } from "../../print-designer-utils";
import printDesignerStyleHelper from "../../print-designer-style-helper";
import complexTableTools from "./complex-table-tools";
import createTableHeader from "./create-table-header";
export default ({ printData, printConfig, formConfig, layoutConfig, createHtmlByComponentItem, errorLogs } = {}) => {
const createComplexTableHtml = (complexTableDetails) => {
return _createHtml({ complexTableDetails });
};
function _createHtml({ complexTableDetails } = {}) {
let complexTableHtml = "";
let { spanHeaderCellDict, spanHeaderCellList } = complexTableTools.createHeaderSpanDetails({ complexTableDetails });
let headerRowLength = complexTableDetails.props.headerRow;
let colLength = complexTableDetails.props.col;
let tableData = complexTableTools.getTableData({ complexTableDetails, printData });
for (let rowIndex = 0; rowIndex < headerRowLength; rowIndex++) {
let headerCellHtml = ``;
for (let colIndex = 0; colIndex < colLength; colIndex++) {
let nowCellHtml = createTableHeader.getHeaderCellHtml({ rowIndex, colIndex, spanHeaderCellList, complexTableDetails });
headerCellHtml += nowCellHtml;
}
let rowHtml = `<tr class="complex-table-header-tr" header-index="${rowIndex}">${headerCellHtml}</tr>`;
complexTableHtml += rowHtml;
}
for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++) {
let contentCellHtml = ``;
for (let colIndex = 0; colIndex < colLength; colIndex++) {
let nowCellHtml = _getContentCellHtml({ rowIndex, colIndex, tableData, complexTableDetails });
contentCellHtml += nowCellHtml;
}
let rowHtml = `<tr class="complex-table-content-tr" content-index="${rowIndex}">${contentCellHtml}</tr>`;
complexTableHtml += rowHtml;
}
complexTableHtml = `<table
class="print-complex-table"
style="${printDesignerStyleHelper.createComplexTableStyle({
propsConfig: complexTableDetails.props,
styleConfig: complexTableDetails.style
})}"
cellspacing="0"
cellpadding="0">${complexTableHtml}
</table>`;
return complexTableHtml;
}
function _getContentCellHtml({ rowIndex, colIndex, tableData, complexTableDetails } = {}) {
let propsConfig = complexTableDetails.props;
let styleConfig = complexTableDetails.style;
let contentCellHtml = "";
contentCellHtml = `<td style="${printDesignerStyleHelper.createComplexTableContentTdStyle({
complexTablePropsConfig: propsConfig,
complexTableStyleConfig: styleConfig
})}"><div style="${printDesignerStyleHelper.createComplexTableContentTdContainerStyle({
complexTablePropsConfig: propsConfig,
complexTableStyleConfig: styleConfig
})}">${_createContentTdText({ rowIndex, colIndex, tableData, complexTableDetails })}</div></td>`;
return contentCellHtml;
}
function _createContentTdText({ rowIndex, colIndex, tableData, complexTableDetails } = {}) {
let propsConfig = complexTableDetails.props;
if (!propsConfig.columnsField || !propsConfig.columnsField[colIndex]) {
return "";
}
let columnField = propsConfig.columnsField[colIndex].field;
if (!tableData[rowIndex]) {
return "";
}
let nowContentTdText = tableData[rowIndex][columnField];
if (!!nowContentTdText || nowContentTdText === 0) {
return nowContentTdText;
}
return "";
}
return {
createComplexTableHtml
};
};