UNPKG

wui-print

Version:

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

124 lines (123 loc) 5.08 kB
import printDesignerStyleHelper from "../print-designer-style-helper"; import createHtmlUtils from "./create-html-utils"; export default ({ printData, printConfig, formConfig, layoutConfig, errorLogs } = {}) => { const createPageTopHtml = (componentItem) => { let pageBreakHtml = `<div class="print-page-top"></div>`; return pageBreakHtml; }; const createPageBottomHtml = (componentItem) => { let pageBreakHtml = `<div class="print-page-bottom"></div>`; return pageBreakHtml; }; const createPageBreakHtml = (componentItem) => { let pageBreakHtml = `<div class="print-page-break"></div>`; return pageBreakHtml; }; const createTextHtml = (componentItem) => { let titleHtml = `<div class="${createHtmlUtils.formatComponentClass({ componentItem, className: "print-text" })}" style="${printDesignerStyleHelper.createTextStyle({ styleConfig: componentItem.style })}">${componentItem.props.defaultContent}</div>`; return titleHtml; }; const createDynamicTextHtml = (componentItem) => { let text = printData[componentItem.props.field]; let textHtml = `<div class="${createHtmlUtils.formatComponentClass({ componentItem, className: "print-dynamic-text" })}" style="${printDesignerStyleHelper.createDynamicTextStyle({ styleConfig: componentItem.style })}"> <div class="print-dynamic-text_label" style="${printDesignerStyleHelper.createDynamicTextLabelStyle({ styleConfig: componentItem.style })}">${componentItem.props.label}</div> <div class="print-dynamic-text_content" style="${printDesignerStyleHelper.createDynamicTextContentStyle({ styleConfig: componentItem.style })}">${text}</div> </div>`; return textHtml; }; const createTableHtml = (componentItem) => { let tableHtml = `<table class="${createHtmlUtils.formatComponentClass({ componentItem, className: "print-table" })}" cellpadding="0" cellspacing="0" style="${printDesignerStyleHelper.createTableStyle({ styleConfig: componentItem.style })}">${_createTableHeaderHtml(componentItem)}${_createTableContentHtml(componentItem)}</table>`; return tableHtml; }; function _createTableHeaderHtml(componentItem) { let tableHeaderHtml = ""; componentItem.columns.forEach((columnItem, columnIndex) => { tableHeaderHtml += `<th style="${printDesignerStyleHelper.createTableHeaderStyle({ tableStyleConfig: componentItem.style, columnStyleConfig: columnItem.style })}">${columnItem.props.headerTitle}</th>`; }); tableHeaderHtml = `<tr>${tableHeaderHtml}</tr>`; return tableHeaderHtml; } function _createTableContentHtml(componentItem) { let tableData = printData[componentItem.props.field]; let tableContentHtml = ""; tableData.forEach((tableDataItem, tableDataIndex) => { let trHtml = ""; componentItem.columns.forEach((columnItem, columnIndex) => { trHtml += `<td style="${printDesignerStyleHelper.createTableCellStyle({ tableStyleConfig: componentItem.style, columnStyleConfig: columnItem.style })}">${tableDataItem[columnItem.props.field]}</td>`; }); trHtml = `<tr>${trHtml}</tr>`; tableContentHtml += trHtml; }); return tableContentHtml; } const createBarcodeHtml = (componentItem) => { let barcodeHtml = `<div class="${createHtmlUtils.formatComponentClass({ componentItem, className: "print-barcode" })}" style="${printDesignerStyleHelper.createBarcodeContainerStyle({ styleConfig: componentItem.style })}"><svg name="barcode_${componentItem.id}"></svg></div>`; return barcodeHtml; }; const createQrcodeHtml = (componentItem) => { let barcodeHtml = `<div class="${createHtmlUtils.formatComponentClass({ componentItem, className: "print-qrcode" })}" style="${printDesignerStyleHelper.createQrcodeContainerStyle({ styleConfig: componentItem.style })}"><div name="qrcode_${componentItem.id}"></div></div>`; return barcodeHtml; }; const createImageHtml = (componentItem) => { let propsConfig = componentItem.props; let imageSrc = ""; if (!!propsConfig && !propsConfig.field && !!propsConfig.src) { imageSrc = propsConfig.src; } else if (!!propsConfig && !!propsConfig.field) { imageSrc = printData[propsConfig.field]; } let imageHtml = `<div class="${createHtmlUtils.formatComponentClass({ componentItem, className: "print-image" })}" style="${printDesignerStyleHelper.createImageContainerStyle({ styleConfig: componentItem.style })}"><img src="${imageSrc}" /></div>`; return imageHtml; }; return { createPageTopHtml, createPageBottomHtml, createPageBreakHtml, createTextHtml, createDynamicTextHtml, createTableHtml, createBarcodeHtml, createQrcodeHtml, createImageHtml }; };