'use strict'; const JV = require('./jpc_value_define'); const JE = require('./jpc_rte'); const JpcFieldHelper = require('./helper/jpc_helper_field'); const JpcBandHelper = require('./helper/jpc_helper_band'); const JpcCommonHelper = require('./helper/jpc_helper_common'); const JpcDiscreteHelper = require('./helper/jpc_helper_discrete'); const JpcTextHelper = require('./helper/jpc_helper_text'); const JpcCommonOutputHelper = require('./helper/jpc_helper_common_output'); const JpcAreaHelper = require('./helper/jpc_helper_area'); const JpcBillTabSrv = function() {}; JpcBillTabSrv.prototype.createNew = function() { const JpcBillTabResult = {}; JpcBillTabResult.initialize = function() { const me = this; me.disp_fields_idx = []; me.signatureRst = []; me.signatureDateRst = []; me.signatureAuditRst = []; }; JpcBillTabResult.sorting = function(rptTpl) { const me = this; JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT][JV.PROP_BILL_FIELDS], null, me.disp_fields_idx); }; JpcBillTabResult.paging = function(rptTpl, dataObj) { let rst = 0; function getDataLength(fields_str) { const dataFields = dataObj[fields_str]; if (dataFields && dataFields.length > 0) { rst = dataFields[0].length; } } if (rptTpl[JV.NODE_FIELD_MAP]) { if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) { getDataLength(JV.DATA_DETAIL_DATA); } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) { getDataLength(JV.DATA_MASTER_DATA); } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) { getDataLength(JV.DATA_DISCRETE_DATA); } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_PARAMS]) { rst = 1; } } return rst; }; JpcBillTabResult.outputAsPreviewPage = function(rptTpl, bands, controls, $CURRENT_RPT) { const me = this; let rst = []; // const vIdx = []; // 只预览第一页的数据 const pageStatus = [true, true, false, true, false, false, false, false]; JpcBandHelper.setBandArea(bands, rptTpl, pageStatus, true, false); const unitFactor = JpcCommonHelper.getUnitFactor(rptTpl); rst = rst.concat(me.outputPreviewContent(rptTpl, bands, unitFactor, controls, pageStatus)); rst = rst.concat(JpcDiscreteHelper.outputPreviewDiscreteInfo(rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], bands, unitFactor, pageStatus)); return rst; }; JpcBillTabResult.outputAsSimpleJSONPage = function(rptTpl, dataObj, page, bands, controls, $CURRENT_RPT, customizeCfg) { const me = this; let rst = []; me.signatureRst = []; me.signatureDateRst = []; me.signatureAuditRst = []; const tabRstLst = []; // 1. calculate the band position const pageStatus = [true, false, false, false, false, false, false, false]; JpcBandHelper.setBandArea(bands, rptTpl, pageStatus); // 2. start to output detail-part const unitFactor = JpcCommonHelper.getUnitFactor(rptTpl); // 2.1 output content tabRstLst.push(me.outputContent(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus, $CURRENT_RPT, customizeCfg)); // 2.2 output discrete tabRstLst.push(JpcDiscreteHelper.outputDiscreteInfo(rptTpl[JV.NODE_BILL_INFO][JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 0, 1, 0, $CURRENT_RPT, customizeCfg, me.signatureRst, me.signatureDateRst, me.signatureAuditRst)); for (let i = 0; i < tabRstLst.length; i++) { rst = rst.concat(tabRstLst[i]); tabRstLst[i] = null; } return rst; }; JpcBillTabResult.outputPreviewContent = function(rptTpl, bands, unitFactor, controls, pageStatus) { let rst = []; const tab = rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT]; const band = bands[tab[JV.PROP_BAND_NAME]]; if (band) { if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) { const tab_fields = tab[JV.PROP_BILL_FIELDS]; for (let i = 0; i < tab_fields.length; i++) { const tab_field = tab_fields[i]; if (!(tab_field[JV.PROP_HIDDEN])) { const cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, '', controls); cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false); rst.push(cellItem); } } if (tab[JV.PROP_TEXT]) { rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0)); } if (tab[JV.PROP_TEXTS]) { for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) { rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0)); } } if (tab[JV.NODE_DISCRETE_INFO]) { rst = rst.concat(JpcDiscreteHelper.outputPreviewDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, unitFactor, pageStatus)); } } } return rst; }; JpcBillTabResult.outputContent = function(rptTpl, dataObj, page, bands, unitFactor, controls, pageStatus, $CURRENT_RPT, customizeCfg) { const me = this; let rst = []; const tab = rptTpl[JV.NODE_BILL_INFO][JV.NODE_BILL_CONTENT]; const band = bands[tab[JV.PROP_BAND_NAME]]; if (band) { if (pageStatus[band[JV.BAND_PROP_DISPLAY_TYPE]]) { const tab_fields = tab[JV.PROP_BILL_FIELDS]; let data_details = null; if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) { data_details = dataObj[JV.DATA_DETAIL_DATA]; } else if (rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) { data_details = dataObj[JV.DATA_MASTER_DATA]; } let flexiblePrecisionRefObj = null; let flexibleRefField; let precision_ref_data; let isPic = false; for (let i = 0; i < tab_fields.length; i++) { const tab_field = tab_fields[i]; let data_field = null; const map_data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT); isPic = (map_data_field.isPic !== undefined && map_data_field.isPic); if (me.disp_fields_idx.length > i && me.disp_fields_idx[i] !== JV.BLANK_FIELD_INDEX && (typeof me.disp_fields_idx[i] !== 'object')) { data_field = data_details[me.disp_fields_idx[i]]; } else { if (map_data_field) { data_field = map_data_field[JV.PROP_AD_HOC_DATA]; } } if (map_data_field && map_data_field[JV.PROP_PRECISION] && map_data_field.flexiblePrecisionRefObj) { if (flexiblePrecisionRefObj === null) { flexiblePrecisionRefObj = {}; flexibleRefField = JE.F(map_data_field[JV.PROP_PRECISION][JV.PROP_FLEXIBLE_REF_FILED_ID], $CURRENT_RPT); precision_ref_data = dataObj[map_data_field.DataNodeName][flexibleRefField.DataSeq]; for (const decimalObj of map_data_field.flexiblePrecisionRefObj) { flexiblePrecisionRefObj['refUnit_' + decimalObj.unit] = decimalObj.decimal; } } JpcFieldHelper.resetFlexibleFormat(tab_field, precision_ref_data, flexiblePrecisionRefObj, page - 1, customizeCfg); } else { if (page === 1) JpcFieldHelper.resetFormat(tab_field, map_data_field, customizeCfg); } if (!(tab_field[JV.PROP_HIDDEN])) { const val = JpcFieldHelper.getValue(data_field, page - 1); const cellItem = JpcCommonOutputHelper.createCommonOutput(tab_field, val, controls); cellItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false); if (isPic && cellItem[JV.PROP_VALUE] !== undefined && cellItem[JV.PROP_VALUE] !== null && cellItem[JV.PROP_VALUE] !== '') { if (Array.isArray(me.signatureRst)) { if (cellItem[JV.PROP_VALUE][0] !== '/') { cellItem[JV.PROP_VALUE] = '/' + cellItem[JV.PROP_VALUE]; } const signatureItem = { signature_name: JV.SIGNATURE_NAME_DUMMY, path: cellItem[JV.PROP_VALUE], pic: null }; // 这里的pic数据在指标中里已经处理过了 signatureItem[JV.PROP_CONTROL] = cellItem[[JV.PROP_CONTROL]]; signatureItem[JV.PROP_STYLE] = cellItem[[JV.PROP_STYLE]]; signatureItem[JV.PROP_AREA] = cellItem[JV.PROP_AREA]; me.signatureRst.push(signatureItem); cellItem[JV.PROP_VALUE] = ''; } } rst.push(cellItem); // 不管是不是Pic,都得保留一个壳子 } } if (tab[JV.PROP_TEXT]) { rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, 1, 0, 1, 0)); } if (tab[JV.PROP_TEXTS]) { for (let j = 0; j < tab[JV.PROP_TEXTS].length; j++) { rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, 1, 0, 1, 0)); } } if (tab[JV.NODE_DISCRETE_INFO]) { rst = rst.concat(JpcDiscreteHelper.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 0, 1, 0, customizeCfg, me.signatureRst, me.signatureDateRst, me.signatureAuditRst)); } } } return rst; }; return JpcBillTabResult; }; module.exports = new JpcBillTabSrv();