Prechádzať zdrojové kódy

大司空code sync(多个指标自动行高紧密输出)

TonyKang 3 rokov pred
rodič
commit
e5b5562a4b

+ 18 - 21
modules/reports/rpt_component/jpc_flow_tab.js

@@ -85,7 +85,8 @@ JpcFlowTabSrv.prototype.createNew = function(){
                 if (segAutoHeightInfo[segIdx].length > startRecIdx + vi) {
                     couldBreak = private_addAutoHeightPageValue(vi);
                     // if (couldBreak) break;
-                } else if (vIdx.length > 0 && vIdx.length < maxRecPerPage) {
+                // } else if (vIdx.length > 0 && vIdx.length < maxRecPerPage) {
+                } else if (vIdx.length < maxRecPerPage) {
                     vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]);
                 }
             } else {
@@ -360,6 +361,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
             };
             let private_get_max_lines_of_the_record = function(theRecIdx) {
                 let rst = 1;
+                let maxAmt = 1;
                 for (let loop = 0; loop < me.auto_height_fields_idx.length; loop++) {
                     /*
                      let data_field = null;
@@ -383,23 +385,19 @@ JpcFlowTabSrv.prototype.createNew = function(){
                         let value = JpcFieldHelper.getValue(data_field, theRecIdx);
                         let area = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, 1, 1, 0, 1, 0, 1, 0, false, false);
                         if (value !== null && value !== undefined) {
-                            value = value.replace('\t', '');
-                            value = value.replace(reg1, '|').replace(reg2, '|').replace(reg3, '|').replace(reg4, '|');
+                            if (typeof value === "string") {
+                                value = value.replace('\t', '');
+                                value = value.replace(reg1, '|').replace(reg2, '|').replace(reg3, '|').replace(reg4, '|');
+                            } else {
+                                value = '' + value;
+                            }
                         } else {
                             value = '';
                         }
                         JpcFieldHelper.setValue(data_field, theRecIdx, value);
                         let values = value.split('|');
-                        if (values.length > rst) rst = values.length;
+                        // if (values.length > rst) rst = values.length; // 考虑到紧凑输出,不能那么快设置rst
                         let font = private_get_font(tab_field[JV.PROP_FONT]);
-                        // if (font) {
-                        //     let fontFile = __dirname.slice(0, __dirname.length - 14) + '/util/pdf_base_files/' + fontUtil.getActualFont(font[JV.FONT_PROPS[0]], (font[JV.FONT_PROPS[3]] === 'T'), (font[JV.FONT_PROPS[4]] === 'T')) + '.ttf';
-                        //     doc.font(fontFile);
-                        //     doc.fontSize(parseInt(font[JV.FONT_PROPS[JV.FONT_PROP_IDX_HEIGHT]]));
-                        // } else {
-                        //     doc.font(__dirname.slice(0, __dirname.length - 14) + '/util/pdf_base_files/Smart.ttf');
-                        //     doc.fontSize(12);
-                        // }
                         let chkFontName = '宋体';
                         let chkFontHeight = 12;
                         if (font) {
@@ -418,20 +416,17 @@ JpcFlowTabSrv.prototype.createNew = function(){
                                 splitStrArr.push(i);
                             }
                         }
-                        if (accAmt > rst) rst = accAmt;
-                        if (rst > 3) {
+                        if (accAmt > 3) {
                             // 新优化,计算实际能显示完的真正行数
                             const rowHeight = JpcFlowTabHelper.getRowHeight(bands, rptTpl, me.isEx);
-                            let tmpFV = ((chkFontHeight + JV.CLOSE_OUTPUT_ROW_BUFFER) * rst) / rowHeight;
+                            let tmpFV = ((chkFontHeight + JV.CLOSE_OUTPUT_ROW_BUFFER) * accAmt) / rowHeight;
                             let tmpAmt = Math.floor(tmpFV);
-                            // tmpAmt += Math.ceil((tmpFV - tmpAmt) / 0.5);
-                            // if (tmpFV - tmpAmt >= 0.5 && rst > 6) {
-                            //     tmpAmt++;
-                            // }
                             if (Math.ceil(tmpFV) > tmpAmt) {
                                 tmpAmt++;
                             }
-                            rst = tmpAmt;
+                            if (maxAmt < tmpAmt) maxAmt = tmpAmt;
+                        } else {
+                            if (maxAmt < accAmt) maxAmt = accAmt;
                         }
                         // if (hasSplitStr && outputType !== JV.OUTPUT_TYPE_EXCEL) {
                         if (hasSplitStr) {
@@ -451,6 +446,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                         //      根据最新需求,暂时不考虑excel类型输出,换回原来逻辑
                     }
                 }
+                if (rst < maxAmt) rst = maxAmt; // 最后才设置最大结果
                 return rst;
             };
             for (let tabField of tab_fields) {
@@ -1331,6 +1327,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                 //这里不管是不是附属autoheight指标,有足够的条件单独处理
                 if (QUOTA_Rate >= 2) {
                     //压缩超过一半空间的话,说明给的行高度太高了,需要另外一些特殊处理,后期有需要再加
+                    console.log('压缩率异常!!!!!');
                 } else {
                     //正常的压缩比例
                     let startIdx = 0, endIdx = 0;
@@ -1466,7 +1463,7 @@ function setupControl(mergeCell, controls) {
         mergeCell[JV.PROP_CONTROL].Shrink = "T";
         mergeCell[JV.PROP_CONTROL].Vertical = "top";
         mergeCell[JV.PROP_CONTROL].Wrap = (mergeCell[JV.PROP_IS_AUTO_HEIGHT])?'T':'F',
-            mergeCell[JV.PROP_CONTROL].VerticalForExcel = "center";
+        mergeCell[JV.PROP_CONTROL].VerticalForExcel = "center";
         orgCtrl = mergeCell[JV.PROP_CONTROL];
     }
     if (mergeCell[JV.PROP_IS_AUTO_HEIGHT]) {

+ 23 - 23
web/building_saas/report/html/rpt_select_projects.html

@@ -12,29 +12,29 @@
                     <ul id="prjFolderTree" class="ztree"></ul>
                 </div>
             </div>
-            <div class="modal-footer" id="divReqBillSummary" style="display:none">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.requestBillsSummaryRpt()" class="btn btn-primary" data-dismiss="modal">确定</a>
-            </div>
-            <div class="modal-footer" id="divReqGljSummary" style="display:none">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.requestGljSummaryRpt()" class="btn btn-primary" data-dismiss="modal" >确定</a>
-            </div>
-            <div class="modal-footer" id="divReqCommonSummaryExcel" style="display:none">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.requestSumAndNormalRptForAllInOneExcel()" class="btn btn-primary" data-dismiss="modal">确定</a>
-            </div>
-            <div class="modal-footer" id="divReqCommonSummaryMultiExcel" style="display:none">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.requestSumAndNormalRptForMultiExcel()" class="btn btn-primary" data-dismiss="modal">确定</a>
-            </div>
-            <div class="modal-footer" id="divReqCommonSummaryPDF" style="display:none">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.requestSumAndNormalRptForPDF_Ex()" class="btn btn-primary" data-dismiss="modal">确定</a>
-            </div>
-            <div class="modal-footer" id="divReqCustomSelect" style="display:none">
-                <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
-                <a onclick="zTreeOprObj.requestNormalReportAfterSelection()" class="btn btn-primary" data-dismiss="modal">确定</a>
+            <div class="modal-footer" >
+                <div class="form-group">
+                    <div class="row">
+                        <div class="col-md-12">
+                            <!-- <label >汇总最低层次</label>
+                            <select id="summaryTypeOptions" name="summaryTypeOptions">
+                                <option>项</option>
+                                <option>目</option>
+                                <option>节</option>
+                                <option>细目</option>
+                                <option>最底层</option>
+                            </select>
+                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -->
+                            <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                            <a id="divReqBillSummary" style="display:none" onclick="zTreeOprObj.requestBillsSummaryRpt()" class="btn btn-primary" data-dismiss="modal">确定</a>
+                            <a id="divReqGljSummary" style="display:none" onclick="zTreeOprObj.requestGljSummaryRpt()" class="btn btn-primary" data-dismiss="modal" >确定</a>
+                            <a id="divReqCommonSummaryExcel" style="display:none" onclick="zTreeOprObj.requestSumAndNormalRptForAllInOneExcel()" class="btn btn-primary" data-dismiss="modal">确定</a>
+                            <a id="divReqCommonSummaryMultiExcel" style="display:none" onclick="zTreeOprObj.requestSumAndNormalRptForMultiExcel()" class="btn btn-primary" data-dismiss="modal">确定</a>
+                            <a id="divReqCommonSummaryPDF" style="display:none" onclick="zTreeOprObj.requestSumAndNormalRptForPDF_Ex()" class="btn btn-primary" data-dismiss="modal">确定</a>
+                            <a id="divReqCustomSelect" style="display:none" onclick="zTreeOprObj.requestNormalReportAfterSelection()" class="btn btn-primary" data-dismiss="modal">确定</a>
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
     </div>

+ 6 - 0
web/building_saas/report/js/rpt_main.js

@@ -72,6 +72,7 @@ let zTreeOprObj = {
     selectedPrjIDs: [],
     isFreeUser: true,
     waterMarks: [],
+    summaryBillsLv: [],
     countChkedRptTpl: function () {
         let me = zTreeOprObj;
         if (me.treeObj) {
@@ -1368,4 +1369,9 @@ function activeBranchAfterPrjSelection(idStr) {
     $("#divReqCommonSummaryPDF")[0].style.display = "none";
     $("#divReqCustomSelect")[0].style.display = "none";
     $(`#${idStr}`)[0].style.display = "";
+    zTreeOprObj.summaryBillsLv = [];
+}
+
+function changeSummaryBillsLv(newLv) {
+    zTreeOprObj.summaryBillsLv = newLv;
 }