Quellcode durchsuchen

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/YangHuCost

zhongzewei vor 6 Jahren
Ursprung
Commit
1b951991b6

+ 8 - 3
modules/reports/util/rpt_yanghu_data_util.js

@@ -259,6 +259,7 @@ class Rpt_Data_Extractor {
                         gljAssitantObj.componentGljIds[COMPONENT_GLJID_PRE + gljItem.glj_id] = gljItem;
                     }
                 }
+                //顺便做个排序(跟UI一致的排序)
             }
             let rationGLJDatas = getModuleDataByKey(rawDataObj.prjData, "ration_glj");
             let rationDatas = getModuleDataByKey(rawDataObj.prjData, "ration");
@@ -1163,9 +1164,13 @@ function sortData(sourceData, sortCfg, prjData) {
             break;
         case "self_define":
             if (sortCfg[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]) {
-                let selfDefFunc = null;
-                eval('selfDefFunc = ' + sortCfg[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]);
-                tempRstArr.sort(selfDefFunc);
+                let selfDefFuncA = null;
+                eval('selfDefFuncA = ' + sortCfg[JV.PROP_SORT_TYPE_SELF_DEFINE_LOGIC]);
+                if (selfDefFuncA !== null) {
+                    tempRstArr.sort(selfDefFuncA);
+                } else {
+                    console.log('sorting function is null!!!');
+                }
             }
             replaceActDataArr(sourceData, tempRstArr);
             break;

+ 3 - 3
test/unit/reports/test_rpt_test_template.js

@@ -30,10 +30,10 @@ let demoPrjId = - 1;
 // let demoRptId = 6; //封面
 // let demoRptId = 22; //03
 // let demoRptId = 26; //07
-// let demoRptId = 28; //09
+let demoRptId = 28; //09
 // let demoRptId = 24; //05
 // let demoRptId = 20; //01
-let demoRptId = 23; //04 综合费率表
+// let demoRptId = 23; //04 综合费率表
 
 let pagesize = "A4";
 //288: 11-2表(新)
@@ -47,7 +47,7 @@ let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 // demoPrjId = 2260; //QA:
 // demoPrjId = 410; //QA:
 // demoPrjId = 313; //PROD:
-demoPrjId = 446; //PROD:
+demoPrjId = 435; //PROD:
 // demoPrjId = 4107; //UAT:
 //*/
 let userId_Dft = userId_Leng;

+ 16 - 13
web/building_saas/main/js/models/calc_program.js

@@ -49,7 +49,7 @@ let calcTools = {
     },
     isTotalCostBill: function (treeNode) {
         return treeNode.data.flagsIndex && treeNode.data.flagsIndex.fixed && treeNode.data.flagsIndex.fixed.flag &&
-            treeNode.data.flagsIndex.fixed.flag == fixedFlag.ENGINEERINGCOST;
+            treeNode.data.flagsIndex.fixed.flag == fixedFlag.TOTAL_COST;
     },
     isRationCategory: function(treeNode){
         return treeNode.sourceType === ModuleNames.ration;
@@ -496,17 +496,20 @@ let calcTools = {
             (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SC_SBF'));
 
         if (rcj ||
-            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF'))
-            ) {
+            (treeNode.data.subType === gljType.MAIN_MATERIAL && calcTools.inBase(baseName, 'ZCF'))) {
+            let nodeQ = calcTools.uiNodeQty(treeNode) ? calcTools.uiNodeQty(treeNode) : 0;
             if (treeNode.data.type == rationType.volumePrice){
-                let nodeQ = calcTools.uiNodeQty(treeNode) ? calcTools.uiNodeQty(treeNode) : 0;
                 result = treeNode.data.marketUnitFee ? (parseFloat(treeNode.data.marketUnitFee) * nodeQ).toDecimal(decimalObj.ration.unitPrice) : 0
             }
+            else if (treeNode.data.type == rationType.gljRation){
+                let prc = 0;
+                if (treeNode.data.subType === gljType.EQUIPMENT && calcTools.inBase(baseName, 'SC_SBF'))
+                    prc = gljOprObj.getMarketPrice(treeNode)
+                else
+                    prc = gljOprObj.getBasePrice(treeNode);
+                result = (prc * nodeQ).toDecimal(decimalObj.ration.unitPrice);
+            }
 
-            else if (treeNode.data.type == rationType.gljRation)
-            // result = treeNode.data.basePrice ? parseFloat(treeNode.data.basePrice).toDecimal(decimalObj.ration.unitPrice) : 0;
-            // 这里因为是算基数所以要取基价,但不能直接取basePrice,受限于项目属性的三个选项。
-                result = gljOprObj.getBasePrice(treeNode);
         }
         else if (treeNode.data.subType === gljType.GENERAL_MACHINE && calcTools.inBase(baseName, 'JSRGF')) {
             let glj = {
@@ -1733,7 +1736,7 @@ class CalcProgram {
 
             // 第1、2部分以外的叶子清单在没有公式的情况下可以手工修改综合单价并参与计算。
             // 2017-09-27 需求改了,除了第 1 、 2.2部分以外,都可以手工修改综合单价、综合合价并参与计算
-            if(!calcTools.isFBFX(treeNode) && !calcTools.isTechMeasure(treeNode)){ // if(!calcTools.isInheritFrom(treeNode, [fixedFlag.SUB_ENGINERRING, fixedFlag.MEASURE]))
+            if(!calcTools.isFBFX(treeNode) && !calcTools.isTechMeasure(treeNode)){
                 if (treeNode.data.feesIndex && treeNode.data.feesIndex.common){
                     let ftObj = {};
                     ftObj.fieldName = 'common';
@@ -1786,8 +1789,8 @@ class CalcProgram {
                 calcTools.initSummaryFee(treeNode);
                 treeNode.data.summaryFees.totalFee = tf;
                 treeNode.data.summaryFees.estimateFee = calcTools.getFee(treeNode, 'estimate.totalFee');
-                treeNode.data.summaryFees.safetyFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.SAFETY_CONSTRUCTION), 'common.totalFee');
-                treeNode.data.summaryFees.chargeFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.CHARGE), 'common.totalFee');
+                // treeNode.data.summaryFees.safetyFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.SAFETY_CONSTRUCTION), 'common.totalFee');
+                // treeNode.data.summaryFees.chargeFee = calcTools.getFee(calcTools.getNodeByFlag(fixedFlag.CHARGE), 'common.totalFee');
             }
 
             treeNode.data.calcTemplate = {"calcItems": []};
@@ -2084,8 +2087,8 @@ class CalcProgram {
         let baseNodes = [], me = this;
         baseNodes.push(calcTools.getNodeByFlag(fixedFlag.SUB_ENGINERRING));
         baseNodes.push(calcTools.getNodeByFlag(fixedFlag.MEASURE));
-        baseNodes.push(calcTools.getNodeByFlag(fixedFlag.OTHER));
-        baseNodes.push(calcTools.getNodeByFlag(fixedFlag.CHARGE));
+        // baseNodes.push(calcTools.getNodeByFlag(fixedFlag.OTHER));
+        // baseNodes.push(calcTools.getNodeByFlag(fixedFlag.CHARGE));
         return me.getTotalFee(baseNodes, excludeNodes, tender);
     };
 

+ 8 - 2
web/building_saas/main/js/views/glj_view.js

@@ -759,6 +759,11 @@ var gljOprObj = {
             return scMathUtil.roundForObj(treeNode.data.marketUnitFee,getDecimal("glj.unitPrice"));
         }
     },
+    getMarketPrice:function (treeNode) {//造价书中的工料机修改的节点要用到
+        let proGLJ =  projectObj.project.projectGLJ;
+        let glj =_.find(proGLJ.datas.gljList, {'id': treeNode.data.projectGLJID});
+        return proGLJ.getMarketPrice(glj);
+    },
     calcPriceDiff:function (glj) {
         let calcOptions=projectInfoObj.projectInfo.property.calcOptions;
         return gljUtil.calcPriceDiff(glj,calcOptions);
@@ -922,7 +927,7 @@ var gljOprObj = {
     updateRationTypeGLJ: function (value, node, fieldName,editingText) {
         let newval;
         let updatePrice = false;
-        if (fieldName == "marketUnitFee") {
+        if (fieldName == "marketUnitFee" || fieldName == "feesIndex.common.unitFee") {
             updatePrice = true;
             if (value == null) {
                 newval = 0;
@@ -930,7 +935,8 @@ var gljOprObj = {
                 var decimal = getDecimal("glj.unitPrice");
                 newval = number_util.checkNumberValue(value, decimal);
             }
-        } else {
+        }
+        else {
             if (value != null) {
                 projectObj.project.projectGLJ.updatePropertyFromMainSpread(node, fieldName, value,editingText);
                 return;

+ 9 - 5
web/building_saas/main/js/views/project_view.js

@@ -449,11 +449,14 @@ var projectObj = {
         } else if (value !== calcFees.getFee(node.data, fieldName)||fieldName == 'quantity') {//工程量需要进行转换,所以做特殊处理
             if (fieldName === 'code' && value != '' && !calcTools.isVolumePrice(node)) {
                 projectObj.updateCode(node, value);
-            } else if(fieldName ==='feeRate'){
+            }
+            else if(fieldName ==='feeRate'){
                 project.FeeRate.updateFeeRateFromBills(value,node,fieldName);
-            } else if(fieldName ==='contain'){//编辑含量
+            }
+            else if(fieldName ==='contain'){//编辑含量
                 project.Ration.updateContain(value,node);
-            } else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee'||fieldName === 'feesIndex.common.totalFee' || fieldName === 'programID' ||
+            }
+            else if (fieldName === 'quantity' || fieldName === 'marketUnitFee' || fieldName === 'feesIndex.common.unitFee'||fieldName === 'feesIndex.common.totalFee' || fieldName === 'programID' ||
                 fieldName === 'subType' || fieldName === 'calcBase' || fieldName === 'isSubcontract'){
                 if (fieldName === 'quantity') {
                     quantityEditObj.checkingAndUpdate(editingText,node);
@@ -474,7 +477,7 @@ var projectObj = {
                                 fieldName = 'marketUnitFee';
                             }
                         }
-                        if(fieldName === 'feesIndex.common.totalFee'){//修改了综合合价后,反算综合单价,然后再由计算程序算个综合合价出来
+                        else if(fieldName === 'feesIndex.common.totalFee'){//修改了综合合价后,反算综合单价,然后再由计算程序算个综合合价出来
                             let unitfee = 0;
                             if(node.data.quantity){//如果工程量为0或空,综合合单直接填到综合单价
                                 let t_quantity = scMathUtil.roundForObj(node.data.quantity,getDecimal("quantity",node));
@@ -511,7 +514,8 @@ var projectObj = {
                 };
                 project.calcProgram.calcAndSave(node);
                 gljOprObj.showRationGLJSheetData();
-            } else if (node.sourceType === project.Bills.getSourceType()&&fieldName === 'unit'){
+            }
+            else if (node.sourceType === project.Bills.getSourceType()&&fieldName === 'unit'){
                 node.updateData[fieldName] = value;
                 node.changed = true;
                 if(node.data.quantity){