소스 검색

调整取费方式、暂估计算的逻辑结构:从proj_setting移到project.propert,使项目属性能够集中处理,结构更合理。

Chenshilong 7 년 전
부모
커밋
6a14d2cd32

+ 4 - 3
modules/main/models/proj_setting_model.js

@@ -3,7 +3,8 @@
  */
 
 let baseModel = require('./base_model');
-import {default as projSettingSchema, collectionName as collectionName, settingConst as settingConst} from "./schemas/proj_setting";
+// import {default as projSettingSchema, collectionName as collectionName, settingConst as settingConst} from "./schemas/proj_setting";
+import {default as projSettingSchema, collectionName as collectionName} from "./schemas/proj_setting";
 
 class projSettingModel extends baseModel {
 
@@ -16,13 +17,13 @@ class projSettingModel extends baseModel {
         this.model.findOne({"projectID": projectID}, '-_id', function (err, result) {
             if (!err) {
                 let data = JSON.parse(JSON.stringify(result));
-                if (!data.billsCalcMode) {
+/*                if (!data.billsCalcMode) {
                     data.billsCalcMode = settingConst.billsCalcMode.rationContent;
                 }
                 if (!data.zanguCalcMode) {
                     data.zanguCalcMode = settingConst.zanguCalcMode.common;
                 }
-                data.settingConst = settingConst;
+                data.settingConst = settingConst;*/
                 callback(0, collectionName, data);
             } else {
                 callback(1, '查询数据失败。', null);

+ 8 - 7
modules/main/models/schemas/proj_setting.js

@@ -5,24 +5,24 @@
 let mongoose = require("mongoose");
 let Schema = mongoose.Schema;
 let collectionName = 'proj_setting';
-let settingConst = {
+/*let settingConst = {
     billsCalcMode: {
         rationContent: 0, rationPriceConverse: 1, rationPrice: 2, billsPrice: 3
     },
     zanguCalcMode: {
         common: 0, gatherMaterial: 1
     }
-}
-let billsCalcModeConst = {
+}*/
+/*let billsCalcModeConst = {
     
-};
+};*/
 let projSettingSchema = {
     projectID: Number,
     // 列设置
     main_tree_col: {
         type: Schema.Types.Mixed,
         default: {}
-    },
+    }/*,
     billsCalcMode: {
         type: Number,
         default: settingConst.billsCalcMode.rationContent
@@ -30,7 +30,8 @@ let projSettingSchema = {
     zanguCalcMode: {
         type: Number,
         default: settingConst.zanguCalcMode.common
-    }
+    }*/
 };
 let model = mongoose.model(collectionName, new Schema(projSettingSchema, {versionKey: false, collection: collectionName}));
-export {model as default, collectionName as collectionName, settingConst as settingConst};
+// export {model as default, collectionName as collectionName, settingConst as settingConst};
+export {model as default, collectionName as collectionName};

+ 4 - 0
modules/pm/models/project_model.js

@@ -104,6 +104,10 @@ ProjectsDAO.prototype.updateUserProjects = async function(userId, datas, callbac
                     data.updateData.property.basicInformation = basicInformation;
                     //工程特征
                     data.updateData.property.projectFeature = projectFeature;
+
+                    data.updateData.property.billsCalcMode = 0;
+                    data.updateData.property.zanguCalcMode = 0;
+
                 }
                 newProject = new Projects(data.updateData);
                 // 查找同级是否存在同名数据

+ 2 - 2
web/building_saas/main/js/calc/bills_calc.js

@@ -268,8 +268,8 @@ class BillsCalcHelper {
         let nodeCalc = nodeCalcObj, virData= null, decimal = this.project.Decimal;
 
         // 清单单价:套用定额计算程序
-        // if (this.project.calcFlag === billsPrice) {
-        if (this.project.projSetting.billsCalcMode === billsPrice) {
+        // if (this.project.projSetting.billsCalcMode === billsPrice) {
+        if (this.project.property.billsCalcMode === leafBillGetFeeType.billsPrice) {
             rationCalcObj.calcGljs = this.getBillsGLjs(node);
             console.log(rationCalcObj.calcGljs);
             rationCalcObj.calcFields = rationCalcFields;

+ 5 - 5
web/building_saas/main/js/models/calc_program.js

@@ -702,7 +702,7 @@ class CalcProgram {
                             rttf = parseFloat(data.feesIndex[ft.type].tenderTotalFee);
                         };
 
-                        if (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationContent) {
+                        if (me.project.property.billsCalcMode === leafBillGetFeeType.rationContent) {
                             buf = (buf + (ruf * rq / bq).toDecimal(decimalObj.process)).toDecimal(decimalObj.process);
                             btuf = (btuf + (rtuf * rq / bq).toDecimal(decimalObj.process)).toDecimal(decimalObj.process);
                         };
@@ -711,11 +711,11 @@ class CalcProgram {
                         sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);
                     };
 
-                    if (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPriceConverse || me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPrice) {
+                    if (me.project.property.billsCalcMode === leafBillGetFeeType.rationPriceConverse || me.project.property.billsCalcMode === leafBillGetFeeType.rationPrice) {
                         buf = (sum_rtf / bq).toDecimal(decimalObj.process);
                         btuf = (sum_rttf / bq).toDecimal(decimalObj.process);
                     };
-                    if (isBaseFeeType(ft.type) || (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPrice && ft.type == "common")){
+                    if (isBaseFeeType(ft.type) || (me.project.property.billsCalcMode === leafBillGetFeeType.rationPrice && ft.type == "common")){
                         btf = sum_rtf;
                         bttf = sum_rttf;
                     }
@@ -768,7 +768,7 @@ class CalcProgram {
             let b = treeNode.data.calcBaseValue ? treeNode.data.calcBaseValue : 0;
             let uf = (b * f * q / 100).toDecimal(decimalObj.bills.unitPrice);
             let tuf = uf;
-            let tf = (me.project.projSetting.billsCalcMode === leafBillGetFeeType.rationPrice) ? (b * f / 100).toDecimal(decimalObj.bills.totalPrice) : (uf * q).toDecimal(decimalObj.bills.totalPrice);
+            let tf = (me.project.property.billsCalcMode === leafBillGetFeeType.rationPrice) ? (b * f / 100).toDecimal(decimalObj.bills.totalPrice) : (uf * q).toDecimal(decimalObj.bills.totalPrice);
             let ttf = tf;
 
             delete treeNode.data.fees;    // 直接删掉再新增,不用一个个费判断更新,效率更高。
@@ -856,7 +856,7 @@ class CalcProgram {
                 // me.calcLeafBillChildren(treeNode);
 
                 // 清单单价计算模式下的叶子清单:取自己的计算程序ID,找到自己的计算程序计算。(汇总清单所有定额的工料机)
-                if (me.project.projSetting.billsCalcMode === leafBillGetFeeType.billsPrice)
+                if (me.project.property.billsCalcMode === leafBillGetFeeType.billsPrice)
                     treeNode.calcType = treeNodeCalcType.ctBillCalcProgram;
                 else                                        // 前三种计算模式下的叶子清单:汇总定额的计算程序的费用类别
                     treeNode.calcType = treeNodeCalcType.ctGatherRationsFees;

+ 4 - 0
web/building_saas/main/js/models/main_consts.js

@@ -122,3 +122,7 @@ const leafBillGetFeeType = {
     billsPrice: 3
 };
 
+const zanguCalcMode = {
+    common: 0,
+    gatherMaterial: 1
+};

+ 8 - 5
web/building_saas/main/js/models/project.js

@@ -295,21 +295,23 @@ var PROJECT = {
         };
 
         project.prototype.setBillsCalcMode = function (calcMode) {
-            this.projSetting.billsCalcMode = calcMode;
+            this.property.billsCalcMode = calcMode;
             this.initCalcFields();
         };
 
         project.prototype.initCalcFields = function () {
-            let settingConst = this.projSetting.settingConst;
+            // let settingConst = this.projSetting.settingConst;
             if (this.calcFields) {
                 for (let field of this.calcFields) {
                     // unitFeeCalcFlag
                     if (field.type === 'zangu') {
                         field.unitFeeFlag = converseUnitFeeFlag;
                     } else {   
-                        if (this.projSetting.billsCalcMode === settingConst.billsCalcMode.rationContent) {
+                        // if (this.projSetting.billsCalcMode === settingConst.billsCalcMode.rationContent) {
+                        if (this.property.billsCalcMode === leafBillGetFeeType.rationContent) {
                             field.unitFeeFlag = rationContentUnitFeeFlag;
-                        } else if ( this.projSetting.billsCalcMode === settingConst.billsCalcMode.billsPrice) {
+                        // } else if ( this.projSetting.billsCalcMode === settingConst.billsCalcMode.billsPrice) {
+                        } else if ( this.property.billsCalcMode === leafBillGetFeeType.billsPrice) {
                             field.unitFeeFlag = billsPriceUnitFeeFlag;
                         } else {
                             field.unitFeeFlag = averageQtyUnitFeeFlag;
@@ -317,7 +319,8 @@ var PROJECT = {
                     }
                     // totalFeeCalcFlag
                     if (field.type === 'common') {
-                        if (this.projSetting.billsCalcMode === settingConst.billsCalcMode.rationPriceConverse) {
+                        // if (this.projSetting.billsCalcMode === settingConst.billsCalcMode.rationPriceConverse) {
+                        if (this.property.billsCalcMode === leafBillGetFeeType.rationPriceConverse) {
                             field.totalFeeFlag = sumTotalFeeFlag;
                         } else {
                             field.totalFeeFlag = totalFeeFlag;

+ 2 - 2
web/building_saas/main/js/views/main_tree_col.js

@@ -37,7 +37,7 @@ let MainTreeCol = {
         calcProgramName: function (node) {
             if (
                 node.sourceType === projectObj.project.Ration.getSourceType() ||
-                (projectObj.project.calcProgram.isLeafBill(node) && projectObj.project.projSetting.billsCalcMode === leafBillGetFeeType.billsPrice)
+                (projectObj.project.calcProgram.isLeafBill(node) && projectObj.project.property.billsCalcMode === leafBillGetFeeType.billsPrice)
             ) return false
             else return true;
         },
@@ -132,7 +132,7 @@ let MainTreeCol = {
         calcProgramName: function (node) {
             if (
                 node.sourceType === projectObj.project.Ration.getSourceType() ||
-                (projectObj.project.calcProgram.isLeafBill(node) && projectObj.project.projSetting.billsCalcMode === leafBillGetFeeType.billsPrice)
+                (projectObj.project.calcProgram.isLeafBill(node) && projectObj.project.property.billsCalcMode === leafBillGetFeeType.billsPrice)
             ) {
                 var names = new GC.Spread.Sheets.CellTypes.ComboBox();
                 names.items(projectObj.project.calcProgram.compiledTemplateNames);

+ 27 - 21
web/building_saas/main/js/views/project_view.js

@@ -361,10 +361,11 @@ var projectObj = {
         this.project = PROJECT.createNew(scUrlUtil.GetQueryString('project'), userID);
         this.project.loadDatas(function (err) {
             if (!err) {
+                that.project.property = projectInfoObj.projectInfo.property;
                 that.project.calcProgram.compileAllTemps();
                 that.project.calcBase.init(that.project);
                 that.project.calcFields = JSON.parse(JSON.stringify(feeType));
-                that.project.initCalcFields();
+                // that.project.initCalcFields();
                 let str = JSON.stringify(that.project.projSetting.main_tree_col);
                 that.project.projSetting.mainGridSetting = JSON.parse(str);
                 that.project.projSetting.mainGridSetting.frozenCols = 4;
@@ -616,40 +617,45 @@ $('#poj-set').on('show.bs.modal', function () {
         }
     }
     if (projectObj.project) {
-        let mode = projectObj.project.projSetting.billsCalcMode;
-        let settingConst = projectObj.project.projSetting.settingConst;
-        setCalcFlag($('#rationContent'), settingConst.billsCalcMode.rationContent, mode);
-        setCalcFlag($('#rationPriceConverse'), settingConst.billsCalcMode.rationPriceConverse, mode);
-        setCalcFlag($('#rationPrice'), settingConst.billsCalcMode.rationPrice, mode);
-        setCalcFlag($('#billsPrice'), settingConst.billsCalcMode.billsPrice, mode);
+        // let mode = projectObj.project.projSetting.billsCalcMode;
+        // let settingConst = projectObj.project.projSetting.settingConst;
+        let mode = projectObj.project.property.billsCalcMode ? projectObj.project.property.billsCalcMode : leafBillGetFeeType.rationContent;
+        setCalcFlag($('#rationContent'), leafBillGetFeeType.rationContent, mode);
+        setCalcFlag($('#rationPriceConverse'), leafBillGetFeeType.rationPriceConverse, mode);
+        setCalcFlag($('#rationPrice'), leafBillGetFeeType.rationPrice, mode);
+        setCalcFlag($('#billsPrice'), leafBillGetFeeType.billsPrice, mode);
 
-        mode = projectObj.project.projSetting.zanguCalcMode;
-        setCalcFlag($('#zangu_common'), settingConst.zanguCalcMode.common, mode);
-        setCalcFlag($('#zangu_gatherMatherial'), settingConst.zanguCalcMode.gatherMaterial, mode);
+        // mode = projectObj.project.projSetting.zanguCalcMode;
+        mode = projectObj.project.property.zanguCalcMode ? projectObj.project.property.zanguCalcMode : zanguCalcMode.common;
+        setCalcFlag($('#zangu_common'), zanguCalcMode.common, mode);
+        setCalcFlag($('#zangu_gatherMatherial'), zanguCalcMode.gatherMaterial, mode);
     }
 });
 $('#property_ok').click(function () {
     let project = projectObj.project, reCalc= false;
-    let mode = parseInt($("input[name='calcFlag']:checked").val());
-    let zanguMode = parseInt($("input[name='zangu']:checked").val());
-    if (mode !== project.projSetting.billsCalcMode) {
-        project.setBillsCalcMode(mode);
+    let billMode = parseInt($("input[name='calcFlag']:checked").val());
+    if (billMode !== project.property.billsCalcMode) {
+        // project.setBillsCalcMode(mode);
+        project.property.billsCalcMode = billMode;
         reCalc = true;
-    }
-    if (zanguMode !== project.projSetting.zanguCalcMode) {
-        project.projSetting.zanguCalcMode = zanguMode;
+    };
+
+    let zanguMode = parseInt($("input[name='zangu']:checked").val());
+    if (zanguMode !== project.property.zanguCalcMode) {
+        project.property.zanguCalcMode = zanguMode;
         reCalc = true;
-    }
+    };
+
     if (labourCoeView.needSave()){
         labourCoeView.save();
         reCalc = true;
     }
 
     if (reCalc) {
-        project.pushNow('', [project.projSetting.moduleName], [{
+/*        project.pushNow('', [project.projSetting.moduleName], [{
             projectID: project.ID(),
-            billsCalcMode: project.projSetting.billsCalcMode
-        }]);
+            billsCalcMode: project.property.billsCalcMode
+        }]);*/
         project.calcProgram.calcAllNodes(calcAllType.catBills);
     }
 });