Bläddra i källkod

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/ConstructionCost

zhangweicheng 4 år sedan
förälder
incheckning
30cb7c29b1

+ 3 - 3
modules/reports/rpt_component/jpc_flow_tab.js

@@ -85,7 +85,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                 if (segAutoHeightInfo[segIdx].length > startRecIdx + vi) {
                     couldBreak = private_addAutoHeightPageValue(vi);
                     // if (couldBreak) break;
-                } else if (vIdx.length < maxRecPerPage) {
+                } else if (vIdx.length > 0 && vIdx.length < maxRecPerPage) {
                     vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_NORMAL, JV.BLANK_VALUE_INDEX]);
                 }
             } else {
@@ -637,7 +637,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                                 if (currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt + maxRowRec >= ttlSegRecAmt) {
                                     pageStatus[JV.STATUS_SEGMENT_END] = true;
                                     private_resetBandArea();
-                                    let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt + adHocAutoHeightAmt, maxRowRec, me.isEx);
+                                    let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt, maxRowRec, me.isEx);
                                     if (hasAdHocRow) {
                                         //add page info(pre segment end)
                                         pageStatus[JV.STATUS_SEGMENT_END] = false;
@@ -655,7 +655,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
                                 if (currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt + maxRowRec >= ttlSegRecAmt) {
                                     pageStatus[JV.STATUS_SEGMENT_END] = true;
                                     private_resetBandArea();
-                                    let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt + adHocAutoHeightAmt, maxRowRec, me.isEx);
+                                    let hasAdHocRow = !JpcFlowTabHelper.chkSegEnd(bands, rptTpl, ttlSegRecAmt, currentRecAmt + accAutoHeightAmt + adHocAutoHeightAmt, maxRowRec, me.isEx);
                                     if (hasAdHocRow) {
                                         //add page info(pre segment end)
                                         pageStatus[JV.STATUS_SEGMENT_END] = false;

+ 1 - 1
public/web/rpt_value_define.js

@@ -290,7 +290,7 @@ const JV = {
     SIZE_16K: [7.75, 10.75],
     SIZE_EXECUTIVE: [7.25, 10.5],
 
-    OUTPUT_OFFSET: [2,2,1,3],
+    OUTPUT_OFFSET: [1,1,1,1],
     OFFSET_IDX_LEFT: 0,
     OFFSET_IDX_RIGHT: 1,
     OFFSET_IDX_TOP: 2,

+ 63 - 1
web/building_saas/main/js/models/calc_base.js

@@ -364,9 +364,33 @@ let cbTools = {
         }
         return this.isDef(bills.feesIndex[feeField]) && this.isDef(bills.feesIndex[feeField][subFeeField]) ? bills.feesIndex[feeField][subFeeField] : 0;
     },
+
+    // 获取固定清单下,相关取费类别费用
+    getFeeWithTypeByFlag: function (fixedFlag, programID, feeName, tender) {
+        const node = calcTools.getNodeByFlag(fixedFlag);
+        if (!node) {
+            return 0;
+        }
+        const leafNodes = calcTools.getLeafBills(node);
+        let fee = 0;
+        const feeField = tender ? `${feeName}.tenderTotalFee` : `${feeName}.totalFee`;
+        leafNodes.forEach(node => {
+            (node.children || []).forEach(rationNode => {
+                if (rationNode.data.programID === programID) {
+                    const rationFee = calcTools.getFee(rationNode, feeField);
+                    fee = scMathUtil.roundForObj(fee + rationFee, decimalObj.process);
+                }
+            });
+        });
+        return scMathUtil.roundForObj(fee, decimalObj.bills.totalPrice);
+    }
 };
 
 let baseFigureTemplate = {
+    'FR': function () {
+        const feeRate = calcBase.curNode ? calcBase.curNode.data.feeRate : null;
+        return rate = !commonUtil.isEmptyVal(feeRate) && !isNaN(feeRate) ? +feeRate * 0.01 : 1;
+    },
     'FBFXGCF': function (tender) {
         let feeField = 'common',
             subFeeField = tender ? 'tenderTotalFee' : 'totalFee';
@@ -424,6 +448,24 @@ let baseFigureTemplate = {
         }
         return rst;
     },
+    'FBFXRGTSFDERGF': function (tender) {
+        const programID = projectObj.project.calcProgram.compiledTemplateMaps['人工土石方工程'];
+        return cbTools.getFeeWithTypeByFlag(fixedFlag.SUB_ENGINERRING, programID, 'labour', tender);
+    },
+    'FBFXJXBPTSFDERGF': function (tender) {
+        const programID = projectObj.project.calcProgram.compiledTemplateMaps['机械(爆破)土石方工程'];
+        return cbTools.getFeeWithTypeByFlag(fixedFlag.SUB_ENGINERRING, programID, 'labour', tender);
+    },
+    'FBFXJXBPTSFDEJXF': function (tender) {
+        const programID = projectObj.project.calcProgram.compiledTemplateMaps['机械(爆破)土石方工程'];
+        return cbTools.getFeeWithTypeByFlag(fixedFlag.SUB_ENGINERRING, programID, 'machine', tender);
+    },
+    'FBFXDERGFTSFCW': function (tender) {
+        return (this['FBFXDEJJRGF'](tender) - this['FBFXRGTSFDERGF'](tender) - this['FBFXJXBPTSFDERGF'](tender)).toDecimal(decimalObj.bills.totalPrice);
+    },
+    'FBFXDEJXFTSFCW': function (tender) {
+        return (this['FBFXDEJJJXF'](tender) - this['FBFXJXBPTSFDEJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
+    },
     'FBFXDEJJZJGCF': function (tender) {
         return (this['FBFXDEJJRGF'](tender) + this['FBFXDEJJCLF'](tender) + this['FBFXDEJJJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
     },
@@ -511,8 +553,26 @@ let baseFigureTemplate = {
         }
         return rst;
     },
+    JSCSXMRGTSFDERGF: function (tender) {
+        const programID = projectObj.project.calcProgram.compiledTemplateMaps['人工土石方工程'];
+        return cbTools.getFeeWithTypeByFlag(fixedFlag.CONSTRUCTION_TECH, programID, 'labour', tender);
+    },
+    JSCSXMJXBPTSFDERGF: function (tender) {
+        const programID = projectObj.project.calcProgram.compiledTemplateMaps['机械(爆破)土石方工程'];
+        return cbTools.getFeeWithTypeByFlag(fixedFlag.CONSTRUCTION_TECH, programID, 'labour', tender);
+    },
+    JSCSXMJXBPTSFDEJXF: function (tender) {
+        const programID = projectObj.project.calcProgram.compiledTemplateMaps['机械(爆破)土石方工程'];
+        return cbTools.getFeeWithTypeByFlag(fixedFlag.CONSTRUCTION_TECH, programID, 'machine', tender);
+    },
+    JSCSXMDERGFTSFCW: function (tender) {
+        return (this['JSCSXMDEJJRGF'](tender) - this['JSCSXMRGTSFDERGF'](tender) - this['JSCSXMJXBPTSFDERGF'](tender)).toDecimal(decimalObj.bills.totalPrice);
+    },
+    JSCSXMDEJXFTSFCW: function (tender) {
+        return (this['FBFXDEJJRGF'](tender) - this['JSCSXMRGTSFDERGF'](tender) - this['JSCSXMJXBPTSFDERGF'](tender)).toDecimal(decimalObj.bills.totalPrice);
+    },
     'JSCSXMDEJJZJGCF': function (tender) {
-        return (this['JSCSXMDEJJRGF'](tender) + this['JSCSXMDEJJCLF'](tender) + this['JSCSXMDEJJJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
+        return (this['JSCSXMDEJJJXF'](tender) + this['JSCSXMJXBPTSFDEJXF'](tender)).toDecimal(decimalObj.bills.totalPrice);
     },
     'QTXMF': function (tender) {
         let feeField = 'common',
@@ -1590,6 +1650,7 @@ let cbCalctor = {
 };
 
 let calcBase = {
+    curNode: null,
     errMsg: '表达式不正确',
     success: false,
     //清单固定行
@@ -1625,6 +1686,7 @@ let calcBase = {
             $CBP = cbParser,
             $CBC = cbCalctor;
         try {
+            this.curNode = node;
             me.success = false;
             me.errMsg = '表达式不正确';
             //分析输入式合法性

+ 3 - 0
web/building_saas/main/js/views/calc_base_view.js

@@ -161,6 +161,9 @@ let calcBaseView = {
     toViewData: function (obj) {
         let rst = [];
         for(let figure in obj){
+            if (figure === '费率') {
+                continue;
+            }
             let figureObj = Object.create(null);
             figureObj.base = figure;
             figureObj.price = projectObj.project.calcBase.getBase(figure);

+ 8 - 1
web/building_saas/report/js/jpc_output.js

@@ -113,6 +113,13 @@ let JpcCanvasOutput = {
             if (rst.length === 0) rst.push(''); //什么都没有,也得整个空串
             return rst;
         }
+        function _chkIfShinkFirst(control, actLines) {
+            let rst = false;
+            if (control.ShrinkFirst === 'T' && control.Wrap !== 'T' && actLines > 1) {
+                rst = true;
+            }
+            return rst;
+        }
         function private_drawText(val, area, font, control) {
             let dftFontHeight = 12;
             let output = [];
@@ -218,7 +225,7 @@ let JpcCanvasOutput = {
                     let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + 4));
                     lines = (lines === 0)?1:lines;
                     let actLines = private_splitString(val, validAreaTxtWidth, ctx);
-                    if (actLines.length > lines && dftFontHeight >= 6) {
+                    if ((actLines.length > lines || _chkIfShinkFirst(control, actLines.length)) && dftFontHeight >= 6) {
                         dftFontHeight--;
                         ctx.font = "" + dftFontHeight + "px " + font[JV.PROP_NAME];
                     } else {

+ 11 - 0
web/over_write/js/chongqing_2018.js

@@ -257,6 +257,11 @@ if(typeof baseFigureMap !== 'undefined'){
         '分部分项定额施工机具使用费': {base: 'FBFXDEJJJXF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
         '分部分项主材费': {base: 'FBFXZCF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
         '分部分项人工工日': {base: 'FBFXRGGR', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
+        '分部分项人工土石方定额人工费': {base: 'FBFXRGTSFDERGF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
+        '分部分项机械(爆破)土石方定额人工费': {base: 'FBFXJXBPTSFDERGF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
+        '分部分项机械(爆破)土石方定额施工机具使用费': {base: 'FBFXJXBPTSFDEJXF', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
+        '分部分项定额人工费(土石方除外)': {base: 'FBFXDERGFTSFCW', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
+        '分部分项定额施工机具使用费(土石方除外)': {base: 'FBFXDEJXFTSFCW', fixedFlag: fixedFlag.SUB_ENGINERRING, class: 'FBFX'},
         '措施项目费': {base: 'CSXMF', fixedFlag: fixedFlag.MEASURE, class: 'CSXM'},
         '组织措施项目费': {base: 'ZZCSXMF', fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: 'CSXM'},
         '组织措施项目定额人工费': {base: 'ZZCSXMDEJJRGF', fixedFlag: fixedFlag.CONSTRUCTION_ORGANIZATION, class: 'CSXM'},
@@ -269,11 +274,17 @@ if(typeof baseFigureMap !== 'undefined'){
         '技术措施项目定额施工机具使用费': {base: 'JSCSXMDEJJJXF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
         '技术措施项目主材费': {base: 'JSCSXMZCF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
         '技术措施项目人工工日': {base: 'JSCSXMRGGR', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
+        '技术措施项目人工土石方定额人工费': {base: 'JSCSXMRGTSFDERGF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
+        '技术措施项目机械(爆破)土石方定额人工费': {base: 'JSCSXMJXBPTSFDERGF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
+        '技术措施项目机械(爆破)土石方定额施工机具使用费': {base: 'JSCSXMJXBPTSFDEJXF', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
+        '技术措施项目定额人工费(土石方除外)': {base: 'JSCSXMDERGFTSFCW', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
+        '技术措施项目定额施工机具使用费(土石方除外)': {base: 'JSCSXMDEJXFTSFCW', fixedFlag: fixedFlag.CONSTRUCTION_TECH, class: 'CSXM'},
         '其他项目费': {base: 'QTXMF',  fixedFlag: fixedFlag.OTHER, class: 'QTXM'},
         '规费': {base: 'GF', fixedFlag: fixedFlag.CHARGE, class: 'GF'},
         '税金': {base: 'SJ', fixedFlag: fixedFlag.TAX, class: 'SJ'},
         '增值税': {base: 'ZZS', class: 'SJ', fixedFlag: fixedFlag.ADDED_VALUE_TAX},
         //不于清单直接关联==========
+        '费率': { base: 'FR', class: 'NONE' },
         '建筑面积': {base: 'JZMJ', class: 'FBFX'},
         '人材机价差': {base: 'RCJJC', class: 'RCJ'},
         '人工价差': {base: 'RGJC', class: 'RCJ'},