UNPKG

wui-print

Version:

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

85 lines (84 loc) 3.99 kB
import { deepCopy, camelToKebab } 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 print-complex-table--pagination-preview" 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 class="content-text" 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 ""; } if (!tableData[rowIndex]) { return ""; } let columnField = propsConfig.columnsField[colIndex].field; let columnFieldList = columnField.split("&#"); let nowContentTdText = ""; columnFieldList.forEach((filed) => { let columnItemText = tableData[rowIndex][filed]; if (!columnItemText && columnItemText !== 0) { return; } columnItemText = `${columnItemText}`; columnItemText = columnItemText .replace(/[\s\n]+$/, "") .replace(/ /g, "&nbsp;") .replace(/\n/g, "<br>"); nowContentTdText += columnItemText; }); return nowContentTdText; } return { createComplexTableHtml }; };