瀏覽代碼

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

TonyKang 4 年之前
父節點
當前提交
212582ab90

+ 10 - 8
modules/main/facade/installation_facade.js

@@ -90,14 +90,16 @@ async function copyInstallationFeeFromLib(projectID,engineering_id) {
     let ration_lib = engineering.ration_lib;
     let installationFeeList = [];
     for(let rl of ration_lib){
-        let newInstallationFee = await getInstallationFeeFromLib(rl.id);
-        if(newInstallationFee){
-            newInstallationFee.libID = rl.id;
-            newInstallationFee.libName = rl.name;
-            newInstallationFee.projectID = projectID;
-            newInstallationFee.ID = uuidV1();
-            installationFeeList.push(newInstallationFee);
-        }
+        if(rl.isDefault === true){//取默认的定额库ID;
+            let newInstallationFee = await getInstallationFeeFromLib(rl.id);
+            if(newInstallationFee){  
+                newInstallationFee.libID = rl.id;
+                newInstallationFee.libName = rl.name;
+                newInstallationFee.projectID = projectID;
+                newInstallationFee.ID = uuidV1();
+                installationFeeList.push(newInstallationFee);
+            }
+        } 
     }
     if(installationFeeList.length > 0){
         await installationFeeModel.insertMany(installationFeeList);

+ 3 - 0
web/building_saas/css/custom.css

@@ -529,3 +529,6 @@ margin-right: 100px !important;
   display: inline-block;
 }
 
+#div_more_dropdown_right{
+  transform: translate3d(-105px, 32px, 0px)!important
+}

+ 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 = '表达式不正确';
             //分析输入式合法性

+ 1 - 1
web/building_saas/main/js/models/project_glj.js

@@ -319,7 +319,7 @@ ProjectGLJ.prototype.updatePrice = function (recode, updateField, newval,from,td
     let pgljID = from=="rg"?recode.projectGLJID:recode.id;//和定额工料机统一接口,项目工料机ID取值不一样
     let glj = _.find(projectGljs, {'id': pgljID});
     let udoc = tdoc?tdoc:{};//20200728 新增价格来源,默认为空
-    if(updateField == 'market_price') udoc = {"priceFrom":"",infoPrice:null};
+    if(updateField == 'market_price') udoc = {"priceFrom":"",infoPrice:null,...udoc};
     if (glj) {
         if(glj.unit_price[updateField] == newval){
             return;

+ 3 - 1
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);
@@ -291,7 +294,6 @@ let calcBaseView = {
             if(!toggle || toggle !== 'calcBase'){
                 return;
             }
-            debugger;
             //bills
             if(me.curType === me.type.bills){
                 let selected = projectObj.project.mainTree.selected;

+ 1 - 1
web/building_saas/main/js/views/project_glj_view.js

@@ -1827,7 +1827,7 @@ let projectGljObject = {
   },
   applyInfoPrice: function (projectGLJData, price, coe) {
     let priceFrom = this.getPriceFrom();
-    let infoPrice = price * coe;
+    let infoPrice =  scMathUtil.roundForObj(price * coe,getDecimal("glj.unitPrice")) ;
     let marketPrice =  gljUtil.calcMarketPriceByInfoPrice(infoPrice,projectGLJData.purchaseFeeRate,getDecimal("glj.unitPrice"));
     projectObj.project.projectGLJ.updatePrice(projectGLJData, "market_price", marketPrice, 'pg', {
      priceFrom,infoPrice

+ 6 - 5
web/building_saas/main/js/views/project_property_compare.js

@@ -71,8 +71,8 @@ let compareObject = {
         let rootParjects = parentMap['-1'];
         let options = [];
         for(let r of rootParjects){
-            [newPath,project] =  setProjectPath(r,parentMap,"");
-            if(newPath && project)options.push({path:newPath,ID:project.ID})
+             setProjectPath(r,parentMap,"");
+            //if(newPath && project)options.push({path:newPath,ID:project.ID})
         }   
         compareObject.options = options;
         let rootProject  = _.find(projects,{'ID':projectObj.project.property.rootProjectID});
@@ -80,11 +80,12 @@ let compareObject = {
 
         function setProjectPath(project,parentMap,namePath){
             let newPath = project.ParentID == -1?project.name:`${namePath}/${project.name}`;
-            if(project.projType === commonConstants.projectType.Project) return [newPath,project];
-            
+            if(project.projType === commonConstants.projectType.Project){
+                options.push({path:newPath,ID:project.ID});
+            } 
             if(parentMap[project.ID]){
                 for(let c of parentMap[project.ID]){
-                   return setProjectPath(c,parentMap,newPath)
+                    setProjectPath(c,parentMap,newPath);
                 }
             }
         }

+ 0 - 1
web/building_saas/main/js/views/project_property_projFeature.js

@@ -446,7 +446,6 @@ let projFeatureView = {
                 var offset = margin + rectW + indent;
                 var recode = data[options.row];
                 if (recode && recode.hasOwnProperty('items')) {
-                    debugger;
                     drowRect(ctx, x, y, w, h);
                     var collapsed = recode.collapsed == undefined ? true : recode.collapsed;//options.sheet.getTag(options.row,options.col);
                     drowSymbol(ctx, x, y, w, h, collapsed);

+ 0 - 1
web/building_saas/pm/js/pm_import.js

@@ -313,7 +313,6 @@ const importView = (() => {
         });
         //下一步
         $('#import-next').click(function () {
-            debugger;
             let file = $('#customFile')[0].files[0];
             if (!file) {
                 showUploadAlert(false, '请选择导入文件。');

+ 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'},

+ 0 - 1
web/over_write/js/chongqing_2018_import.js

@@ -1606,7 +1606,6 @@ const importXML = (() => {
 
     //从xml文件中提取数据
     async function extractData(file, escape = false) {
-        debugger;
         //将二进制文件转换成字符串
         let xmlStr = await util.readAsTextSync(file);
         if (escape) {