| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 | 
							- '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];
 
-                     if (!JpcDiscreteHelper.setupSignatureFieldParam(me.signatureRst, me.signatureDateRst, me.signatureAuditRst, $CURRENT_RPT, band, unitFactor, tab_field)) {
 
-                         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 (JE.isSignature(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT)) {
 
-                         // 这里输出到signatureRst
 
-                         const map_data_field = JE.F(tab_field[JV.PROP_FIELD_ID], $CURRENT_RPT);
 
-                         const signatureItem = { signature_name: map_data_field[JV.PROP_NAME], path: null, pic: null };
 
-                         signatureItem[JV.PROP_CONTROL] = tab_field[[JV.PROP_CONTROL]];
 
-                         signatureItem[JV.PROP_STYLE] = tab_field[[JV.PROP_STYLE]];
 
-                         signatureItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
 
-                         me.signatureRst.push(signatureItem);
 
-                     } else if (JE.isDynamicParam(tab_field[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
 
-                         // 这里输出到signatureDateRst
 
-                         let pID = 0;
 
-                         if (tab_field.hasOwnProperty(JV.PROP_PARAM_ID)) {
 
-                             pID = tab_field[JV.PROP_PARAM_ID];
 
-                         } else {
 
-                             pID = tab_field[JV.PROP_ID];
 
-                         }
 
-                         const param = JE.P(pID, $CURRENT_RPT);
 
-                         const signatureDateItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(tab_field, tab_field[JV.PROP_DFT_VALUE], true);
 
-                         signatureDateItem.signature_name = param[JV.PROP_NAME];
 
-                         signatureDateItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
 
-                         me.signatureDateRst.push(signatureDateItem);
 
-                     } else if (JE.isSignatureAudit(tab_field[JV.PROP_PARAM_ID], $CURRENT_RPT)) {
 
-                         let pID = 0;
 
-                         if (tab_field.hasOwnProperty(JV.PROP_PARAM_ID)) {
 
-                             pID = tab_field[JV.PROP_PARAM_ID];
 
-                         } else {
 
-                             pID = tab_field[JV.PROP_ID];
 
-                         }
 
-                         const param = JE.P(pID, $CURRENT_RPT);
 
-                         const signatureAuditItem = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(tab_field, tab_field[JV.PROP_DFT_VALUE], true);
 
-                         signatureAuditItem.signature_name = param[JV.PROP_NAME];
 
-                         signatureAuditItem[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, 1, 0, false, false);
 
-                         me.signatureAuditRst.push(signatureAuditItem);
 
-                     } else {
 
-                         //
 
-                     }
 
-                     */
 
-                 }
 
-                 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();
 
 
  |