Browse Source

连续输出

TonyKang 4 years ago
parent
commit
0c7eb88854

+ 21 - 2
app/public/report/js/rpt_main.js

@@ -184,6 +184,13 @@ let zTreeOprObj = {
         document.getElementById("cfg_rpt_vertical_line").checked = cfg.showVerticalLine;
         document.getElementById("cfg_rpt_fill_zero").checked = cfg.fillZero;
         document.getElementById("cfg_rpt_narrow").checked = cfg.isNarrow;
+        document.getElementById("cfg_rpt_close_warter_mark").checked = cfg.closeWarterMark;
+        if (PAGE_SHOW['closeWatermark'] === 0) {
+            $("#cfg_rpt_close_warter_mark_div")[0].style.display = '';
+        } else {
+            $("#cfg_rpt_close_warter_mark_div")[0].style.display = 'none';
+        }
+        document.getElementById("cfg_rpt_continuous").checked = cfg.continuousOutput;
     },
     extractRptCfg: function (cfg) {
         cfg.margins.Left = $("#elementMargin_Left")[0].value;
@@ -546,6 +553,7 @@ let rptControlObj = {
             let refRptTplIds = [], rpt_sheet_names = [];
             rptControlObj.getTplIdsCommon(refRptTplIds, rpt_sheet_names);
             let params = rptControlObj.creatCommonExportParam(refRptTplIds);
+            params.closeWatermark = getCloseWatermarkForExcel();
             await rptCustomObj.getCustomSelect(params);
             params.rpt_names = rpt_sheet_names;
             params.rptName = TENDER_NAME;
@@ -574,6 +582,7 @@ let rptControlObj = {
             let rpt_names = [];
             rptControlObj.getTplIdsCommon(refRptTplIds, rpt_names);
             let params = rptControlObj.creatCommonExportParam(refRptTplIds);
+            params.closeWatermark = getCloseWatermarkForExcel();
             await rptCustomObj.getCustomSelect(params);
             params.isOneSheet = true;
             params.rpt_names = rpt_names;
@@ -916,7 +925,17 @@ function getStageTimes() {
 function getCloseWatermark() {
     return PAGE_SHOW['closeWatermark'];
 }
+function getCloseWatermarkForExcel() {
+    if (PAGE_SHOW['closeWatermark'] === 1 || CUST_CFG.closeWarterMark) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
 function getExcelOutputOption() {
-    return 'normal'; // 目前是普通方式
-    // return 'infinity'; // 连续输出方式
+    if (CUST_CFG.continuousOutput) {
+        return 'infinity'; // 连续输出方式
+    } else {
+        return 'normal'; // 目前是普通方式
+    }
 }

+ 19 - 6
app/reports/rpt_component/jpc_flow_tab.js

@@ -520,6 +520,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
             rst = me.segments.length;
             // const pageStatus = [true, true, false, true, true, true, false, false];
             const pageStatus = [true, true, false, true, true, true, true, true];
+            const grpPageInfo = {};
             for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
                 if (segIdx === me.segments.length - 1) {
                     pageStatus[JV.STATUS_REPORT_END] = true;
@@ -527,15 +528,23 @@ JpcFlowTabSrv.prototype.createNew = function() {
                 if (segIdx > 0) {
                     pageStatus[JV.STATUS_REPORT_START] = false;
                 }
+                const grpSeqInfo = (me.group_node_info) ? me.group_node_info[segIdx] : null;
+                const grpRecAmt = (grpSeqInfo) ? (grpSeqInfo.length * me.group_lines_amt) : 0;
+                grpPageInfo[JV.PROP_SEG_GRP_IDX] = 0;
+                grpPageInfo[JV.PROP_INSERTED_GRP_REC] = 0;
+                grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO] = [];
+                grpPageInfo[JV.PROP_GRP_LINES] = me.group_lines_amt;
                 JpcBandHelper.setBandArea(bands, rptTpl, pageStatus, !me.isEx, me.isEx);
                 maxRowRec = JpcFlowTabHelper.getMaxRowsPerPage(bands, rptTpl, me.isEx);
-                // console.log('presetup maxRowRec: ' + maxRowRec);
-                // console.log('presetup me.segments[segIdx].length: ' + me.segments[segIdx].length);
+                me.setupAutoHeightData(bands, segIdx, rptTpl, dataObj, $CURRENT_RPT, defProperties, outputType);
+                let adHocAutoHeightAmt = 0;
+                for (let loop = 0; loop < me.auto_height_info[segIdx].length; loop++) {
+                    adHocAutoHeightAmt += (me.auto_height_info[segIdx][loop] - 1);
+                }
                 me.pageStatusLst.push(pageStatus.slice(0));
                 pageIdx++;
-                const grpSeqInfo = (me.group_node_info) ? me.group_node_info[segIdx] : null;
-                const rowAmt = Math.max(maxRowRec, me.segments[segIdx].length);
-                private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, 0, rowAmt, me.page_seg_map, segIdx, pageIdx, null, false, me.auto_height_info, 0);
+                const rowAmt = Math.max(maxRowRec, me.segments[segIdx].length + adHocAutoHeightAmt);
+                private_addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, 0, rowAmt, me.page_seg_map, segIdx, pageIdx, grpPageInfo, false, me.auto_height_info, 0);
             }
             // 目前不支持flowTabEx
         } else {
@@ -809,7 +818,11 @@ JpcFlowTabSrv.prototype.createNew = function() {
             // 2. then reset the band height
             const tab = rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_CONTENT];
             const flowContentBand = bands[tab[JV.PROP_BAND_NAME]];
-            const rowAmt = Math.max(maxRowRec, me.segments[segIdx].length); // 如不满一页,则需要填充满一页
+            let adHocAutoHeightAmt = 0;
+            for (let loop = 0; loop < me.auto_height_info[segIdx].length; loop++) {
+                adHocAutoHeightAmt += (me.auto_height_info[segIdx][loop] - 1);
+            }
+            const rowAmt = Math.max(maxRowRec, me.segments[segIdx].length + adHocAutoHeightAmt); // 如不满一页,则需要填充满一页
             const actH = JpcFlowTabHelper.getActualContentAreaHeight(bands, rptTpl, me.segments, rowAmt, page, me.isEx);
             // console.log('page:' + page);
             // console.log('maxRowRec:' + maxRowRec);

+ 5 - 0
app/view/report/index.ejs

@@ -105,6 +105,7 @@
                                     <div class="btn-group" role="group" aria-label="Button group with nested dropdown">
                                         <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#paper" onclick="zTreeOprObj.renderRptCfg(CUST_CFG)"><i class="fa fa-file-o"></i> 纸张</button>
                                         <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#format" onclick="zTreeOprObj.renderRptCfg(CUST_CFG)"><i class="fa fa-bold"></i> 格式</button>
+                                        <button type="button" class="btn btn-outline-primary btn-sm" data-toggle="modal" data-target="#setting" onclick="zTreeOprObj.renderRptCfg(CUST_CFG)"><i class="fa fa-cog"></i> 设置</button>
                                     </div>
                                 </div>
                                 <div class="panel-foot text-muted">
@@ -286,6 +287,10 @@
     const ORG_CUST_TREE_NODES = JSON.parse(JSON.stringify(CUST_TREE_NODES));
     let CUST_CFG = <%- cust_cfg %>;
     CUST_CFG = JSON.parse(CUST_CFG[0].cfg_content);
+    CUST_CFG.closeWarterMark = (PAGE_SHOW['closeWatermark'] === 1);
+    if (!CUST_CFG.hasOwnProperty('continuousOutput')) {
+        CUST_CFG.continuousOutput = false;
+    }
     const PROJECT_ID = <%- project_id %>;
     const TENDER_ID = <%- tender_id %>;
     const TENDER_NAME = '<%- tender_name %>';

+ 40 - 5
app/view/report/rpt_all_popup.ejs

@@ -75,8 +75,28 @@
                         <select class="form-control form-control-sm" id="cfg_border_thick" onchange="rptControlObj.changeBorderWeight(this)"><option>1</option><option>2</option></select>
                     </div>
                 </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-link btn-sm float-left" data-dismiss="modal" onclick="rptControlObj.restoreFormat(); zTreeOprObj.changeCfg();">恢复默认值</button>
+                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">取消</button>
+                <a href="javascript:void(0)" class="btn btn-primary btn-sm" data-dismiss="modal" onclick="rptControlObj.confirmCfgChange()">确定</a>
+            </div>
+        </div>
+    </div>
+</div>
+<!--弹出设置-->
+<div class="modal fade" id="setting" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">设置</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
                 <div class="row mb-1">
-                    <div class="col-4">
+                    <div class="col-12 mb-1">
                         <div class="form-check">
                             <label class="form-check-label">
                                 <input type="checkbox" class="form-check-input" id="cfg_rpt_vertical_line" onchange="rptControlObj.changeCfgOption('showVerticalLine', this)">
@@ -84,7 +104,7 @@
                             </label>
                         </div>
                     </div>
-                    <div class="col-4">
+                    <div class="col-12 mb-1">
                         <div class="form-check">
                             <label class="form-check-label">
                                 <input type="checkbox" class="form-check-input" id="cfg_rpt_narrow" onchange="rptControlObj.changeCfgOption('isNarrow', this)">
@@ -92,7 +112,7 @@
                             </label>
                         </div>
                     </div>
-                    <div class="col-4">
+                    <div class="col-12 mb-1">
                         <div class="form-check">
                             <label class="form-check-label">
                                 <input type="checkbox" class="form-check-input" id="cfg_rpt_fill_zero" onchange="rptControlObj.changeCfgOption('fillZero', this)">
@@ -100,11 +120,26 @@
                             </label>
                         </div>
                     </div>
+                    <div class="col-12 mb-1" id="cfg_rpt_close_warter_mark_div" >
+                        <div class="form-check">
+                            <label class="form-check-label">
+                                <input type="checkbox" class="form-check-input" id="cfg_rpt_close_warter_mark" onchange="rptControlObj.changeCfgOption('closeWarterMark', this)">
+                                导出Excel-不带水印和签名
+                            </label>
+                        </div>
+                    </div>
+                    <div class="col-12 mb-1">
+                        <div class="form-check">
+                            <label class="form-check-label">
+                                <input type="checkbox" class="form-check-input" id="cfg_rpt_continuous" onchange="rptControlObj.changeCfgOption('continuousOutput', this)">
+                                导出Excel-连续输出(仅流水内容报表有效)
+                            </label>
+                        </div>
+                    </div>
                 </div>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-link btn-sm float-left" data-dismiss="modal" onclick="rptControlObj.restoreFormat(); zTreeOprObj.changeCfg();">恢复默认值</button>
-                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">取消</button>
+                <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">取消</button>
                 <a href="javascript:void(0)" class="btn btn-primary btn-sm" data-dismiss="modal" onclick="rptControlObj.confirmCfgChange()">确定</a>
             </div>
         </div>