123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- '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 = [];
- };
- 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 = [];
- 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, 1, 0, $CURRENT_RPT, customizeCfg));
- 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;
- 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);
- 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);
- 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.outputDiscreteInfo(tab[JV.NODE_DISCRETE_INFO], bands, dataObj, unitFactor, pageStatus, page - 1, 1, 0, customizeCfg));
- }
- }
- }
- return rst;
- };
- return JpcBillTabResult;
- };
- module.exports = new JpcBillTabSrv();
|