Pārlūkot izejas kodu

fix: 报表模板新增交叉行合计

lishihao 4 mēneši atpakaļ
vecāks
revīzija
719e3be742

+ 57 - 1
modules/reports/rpt_component/jpc_cross_tab.js

@@ -319,6 +319,12 @@ JpcCrossTabSrv.prototype.createNew = function () {
       null,
       me.col_sum_fields_idx
     );
+    JpcFieldHelper.findAndPutDataFieldIdx(
+      rptTpl,
+      rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM][JV.PROP_CROSS_FIELDS],
+      null,
+      me.col_sum_fields_idx
+    );
     //pre-sum the data(for col sum display)
     let data_details = dataObj[JV.DATA_DETAIL_DATA],
       data_fields = [];
@@ -679,7 +685,20 @@ JpcCrossTabSrv.prototype.createNew = function () {
         unitFactor
       )
     );
-    //7. 离散
+    //7. 交叉行合计
+    rst = rst.concat(
+      me.outputPreviewRowTabSum(
+        rptTpl,
+        bands,
+        controls,
+        $CURRENT_RPT,
+        customizeCfg,
+        maxRowRec,
+        maxColRec,
+        unitFactor
+      )
+    );
+    //8. 离散
     rst = rst.concat(
       JpcDiscreteHelper.outputPreviewDiscreteInfo(
         rptTpl[JV.NODE_CROSS_INFO][JV.NODE_DISCRETE_INFO],
@@ -790,6 +809,29 @@ JpcCrossTabSrv.prototype.createNew = function () {
       unitFactor
     );
   };
+  // 交叉行合计
+  JpcCrossTabResult.outputPreviewRowTabSum = function (
+    rptTpl,
+    bands,
+    controls,
+    $CURRENT_RPT,
+    customizeCfg,
+    maxRowRec,
+    maxColRec,
+    unitFactor
+  ) {
+    return this.private_OutputPreviewCommon(
+      rptTpl,
+      bands,
+      controls,
+      $CURRENT_RPT,
+      customizeCfg,
+      1,
+      maxColRec,
+      rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM],
+      unitFactor
+    );
+  };
   JpcCrossTabResult.outputPreviewTabExt = function (
     rptTpl,
     bands,
@@ -1019,6 +1061,20 @@ JpcCrossTabSrv.prototype.createNew = function () {
         )
       );
       //2.4 Sum-Tab Row
+      // 新增的交叉行合计
+      tabRstLst.push(
+        me.outputTabSum(
+          rptTpl,
+          dataObj,
+          page,
+          bands,
+          unitFactor,
+          JV.NODE_CROSS_ROW_SUM,
+          controls,
+          $CURRENT_RPT,
+          customizeCfg
+        )
+      );
       //2.4 Sum-tab Col
       tabRstLst.push(
         me.outputTabSum(

+ 24 - 1
web/maintain/report/js/rpt_tpl_data_map.js

@@ -344,6 +344,13 @@ let dataInfoMapTreeOprObj = {
       isParent: true,
       Title: "",
     };
+    // 交叉行合计
+    let rootRowSumNode = {
+      Name: JV.NODE_CROSS_ROW_SUM,
+      type: "cross_row_sum",
+      isParent: true,
+      Title: "",
+    };
     let rootRowExtNode = {
       Name: JV.NODE_CROSS_ROW_EXT,
       type: "cross_row_ext",
@@ -376,6 +383,7 @@ let dataInfoMapTreeOprObj = {
     rst.push(rootColNode);
     rst.push(rootFieldNode);
     rst.push(rootColSumNode);
+    rst.push(rootRowSumNode);
     rst.push(rootRowExtNode);
     rst.push(rootRowExtSumNode);
     rst.push(discreteNode);
@@ -409,7 +417,13 @@ let dataInfoMapTreeOprObj = {
       rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL],
       rptTpl
     );
-
+    //  交叉行合计
+    me.private_build_content_field_data(
+      rootRowSumNode,
+      rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM],
+      JV.PROP_CROSS_FIELDS,
+      rptTpl
+    );
     me.private_build_cross_field_text_data(
       rootRowExtNode,
       rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_EXT],
@@ -1203,6 +1217,15 @@ let dataInfoMapTreeOprObj = {
           rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_CONTENT] = newCrossContent;
         } else if (node[JV.PROP_NAME] === JV.NODE_CROSS_ROW_SUM) {
           //暂时木有,空白
+          let newCrossSumRow = {};
+          newCrossSumRow[JV.PROP_BAND_NAME] = node[JV.PROP_BAND_NAME];
+          newCrossSumRow[JV.PROP_CROSS_FIELDS] = [];
+          for (let subNode of node.items) {
+            let f = {};
+            me.private_copy_field_properties(subNode, f);
+            newCrossSumRow[JV.PROP_CROSS_FIELDS].push(f);
+          }
+          rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_SUM] = newCrossSumRow;
         } else if (node[JV.PROP_NAME] === JV.NODE_CROSS_COL_SUM) {
           let newCrossSumCol = {};
           newCrossSumCol[JV.PROP_BAND_NAME] = node[JV.PROP_BAND_NAME];

+ 1 - 1
web/maintain/report/js/rpt_tpl_main.js

@@ -1401,7 +1401,7 @@ let zTreeOprObj = {
                 );
               }
             });
-            if (me.currentNode.flags.hasOwnProperty("aidReportID")) {
+            if (me.currentNode.flags?.hasOwnProperty("aidReportID")) {
               let val = me.currentNode.flags["aidReportID"];
               $("#select_aid_report_data_select").val(val);
             }