UNPKG

wui-print

Version:

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

159 lines (158 loc) 6.85 kB
import printDesignerStyleHelper from "../print-designer-style-helper"; import createHtmlUtils from "./create-html-utils"; export default ({ printData, printConfig, formConfig, layoutConfig, errorLogs } = {}) => { const createInputHtml = (componentItem) => { let text = printData[componentItem.props.field]; let inputHtml = `<div class="print-form_input print-form_input--${_getComponentSize( componentItem )} ${createHtmlUtils.formatComponentClass({ componentItem })}" style="${printDesignerStyleHelper.createInputStyle({ styleConfig: componentItem.style })}">${text}</div>`; return _createFormItemHtml(componentItem, inputHtml); }; const createTextareaHtml = (componentItem) => { let text = printData[componentItem.props.field]; let inputHtml = `<div class="print-form_textarea print-form_textarea--${_getComponentSize( componentItem )} ${createHtmlUtils.formatComponentClass({ componentItem })}" style="${printDesignerStyleHelper.createTextareaStyle({ styleConfig: componentItem.style })}">${text}</div>`; return _createFormItemHtml(componentItem, inputHtml); }; const createRadioHtml = (componentItem) => { let value = printData[componentItem.props.field]; let dataSource = []; if (Array.isArray(componentItem.props.dataSource)) { dataSource = componentItem.props.dataSource; } let radioGroupHtml = ``; dataSource.forEach((item, index) => { let radioClassList = []; if (item.value === value) { radioClassList.push("print-form_radio--active"); } let radioHtml = `<div class="print-form_radio ${radioClassList.join(" ")}"> <div class="print-form_radio-icon"></div> <div class="print-form_radio-label">${item.label}</div> </div>`; radioGroupHtml += radioHtml; }); radioGroupHtml = `<div class="print-form_radio-group print-form_radio-group--${_getComponentSize( componentItem )} ${createHtmlUtils.formatComponentClass({ componentItem })}">${radioGroupHtml}</div>`; return _createFormItemHtml(componentItem, radioGroupHtml); }; const createCheckboxHtml = (componentItem) => { let value = printData[componentItem.props.field]; let dataSource = []; if (Array.isArray(componentItem.props.dataSource)) { dataSource = componentItem.props.dataSource; } let valueList = value.split(","); let checkboxGroupHtml = ``; dataSource.forEach((item, index) => { let checkboxClassList = []; if (valueList.indexOf(item.value) >= 0) { checkboxClassList.push("print-form_checkbox--active"); } let checkboxHtml = `<div class="print-form_checkbox ${checkboxClassList.join(" ")}"> <div class="print-form_checkbox-icon"></div> <div class="print-form_checkbox-label">${item.label}</div> </div>`; checkboxGroupHtml += checkboxHtml; }); checkboxGroupHtml = `<div class="print-form_checkbox-group print-form_checkbox-group--${_getComponentSize( componentItem )} ${createHtmlUtils.formatComponentClass({ componentItem })}">${checkboxGroupHtml}</div>`; return _createFormItemHtml(componentItem, checkboxGroupHtml); }; const createSelectHtml = (componentItem) => { let value = printData[componentItem.props.field]; let dataSource = []; if (Array.isArray(componentItem.props.dataSource)) { dataSource = componentItem.props.dataSource; } let nowItem = dataSource.find((item, index) => { return item.value === value; }); let nowLabel = ""; if (!!nowItem) { nowLabel = nowItem.label; } let selectHtml = `<div class="print-form_select print-form_select--${_getComponentSize( componentItem )} ${createHtmlUtils.formatComponentClass({ componentItem })}">${nowLabel}</div>`; return _createFormItemHtml(componentItem, selectHtml); }; const createDatetimeHtml = (componentItem) => { let text = printData[componentItem.props.field]; let datetimeHtml = `<div class="print-form_datetime print-form_datetime--${_getComponentSize( componentItem )} ${createHtmlUtils.formatComponentClass({ componentItem })}" style="${printDesignerStyleHelper.createTextareaStyle({ styleConfig: componentItem.style })}">${text}</div>`; return _createFormItemHtml(componentItem, datetimeHtml); }; function _createFormItemHtml(componentItem, componentHtml) { let formItemLabelHtml; if (!componentItem.formItemProps.label) { formItemLabelHtml = ""; } else if (!formConfig.props.labelWidth && !componentItem.formItemProps.labelWidth) { formItemLabelHtml = ""; } else { formItemLabelHtml = `<label class="print-form-item_label" style="${printDesignerStyleHelper.createFormItemLabelStyle({ styleConfig: componentItem.style, formConfigProps: formConfig.props, formItemProps: componentItem.formItemProps })}"><p style="${printDesignerStyleHelper.createFormItemLabelContentStyle({ styleConfig: componentItem.style, formConfigProps: formConfig.props, formItemProps: componentItem.formItemProps })}">${componentItem.formItemProps.label}</p></label>`; } let formItemContentHtml = `<div class="print-form-item_content" style="${printDesignerStyleHelper.createFormItemMainStyle({ styleConfig: componentItem.style })}">${componentHtml}</div>`; let formItemProps = !!componentItem.formItemProps ? componentItem.formItemProps : {}; let formItemClassList = []; if (!!formItemProps.labelPosition) { formItemClassList.push(`print-form-item_label-${formItemProps.labelPosition}`); } let formItemClassStr = formItemClassList.join(" "); let formItemHtml = `<div class="print-form-item ${formItemClassStr} ${createHtmlUtils.formatComponentClass({ componentItem })}" style="${printDesignerStyleHelper.createFormItemStyle({ styleConfig: componentItem.style })}">${formItemLabelHtml}${formItemContentHtml}</div>`; return formItemHtml; } function _getComponentSize(componentItem) { if (!!componentItem.formComponentProps && !!componentItem.formComponentProps.size) { return componentItem.formComponentProps.size; } if (!!formConfig.props && !!formConfig.props.size) { return formConfig.props.size; } return "default"; } return { createInputHtml, createTextareaHtml, createRadioHtml, createCheckboxHtml, createSelectHtml, createDatetimeHtml }; };