Jelajahi Sumber

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

Chenshilong 7 tahun lalu
induk
melakukan
fb96aeb9e7

+ 7 - 2
modules/main/models/proj_setting_model.js

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

+ 9 - 1
modules/main/models/schemas/proj_setting.js

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

+ 13 - 5
web/building_saas/main/js/models/bills.js

@@ -261,23 +261,31 @@ var Bills = {
             this.project.pushNow('updateBills', this.getSourceType(), updateData);
         };
 
-        bills.prototype.updateAll = function () {
+        bills.prototype.getUpdateAllData = function () {
             let updateData = [];
             for (let data of this.datas) {
                 updateData.push({'updateType': 'ut_update', 'updateData': tools.formatBillsUpdateData(data)});
             }
-            this.project.pushNow('updateAllBills', this.getSourceType(), updateData);
+            return updateData;
         };
 
-        bills.prototype.updateNodes = function (nodes, updateNow) {
+        bills.prototype.updateAll = function () {
+            this.project.pushNow('updateAllBills', this.getSourceType(), this.getUpdateAllData());
+        };
+
+        bills.prototype.getUpdateNodesData = function (nodes) {
             let updateData = [];
             for (let node of nodes) {
                 updateData.push({'updateType': 'ut_update', 'updateData': tools.formatBillsUpdateData(node.data)});
             }
+            return updateData;
+        }
+
+        bills.prototype.updateNodes = function (nodes, updateNow) {
             if (updateNow) {
-                this.project.pushNow('updateBills', this.getSourceType(), updateData);
+                this.project.pushNow('updateBills', this.getSourceType(), this.getUpdateNodesData(nodes));
             } else {
-                this.project.push(this.getSourceType(), updateData);
+                this.project.push(this.getSourceType(), this.getUpdateNodesData(nodes));
             }
         };
 

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

@@ -289,21 +289,25 @@ var PROJECT = {
             }
         };
 
-        project.prototype.setCalcFlag = function (calcFlag) {
-            this.calcFlag = calcFlag;
+        project.prototype.setBillsCalcMode = function (calcMode) {
+            this.projSetting.billsCalcMode = calcMode;
+            this.initCalcFields();
+        };
+
+        project.prototype.initCalcFields = function () {
             if (this.calcFields) {
                 for (let field of this.calcFields) {
                     // unitFeeCalcFlag
-                    if (this.calcFlag === rationContent) {
+                    if (this.projSetting.billsCalcMode === this.projSetting.billsCalcModeConst.rationContent) {
                         field.unitFeeFlag = rationContentUnitFeeFlag;
-                    } else if ( this.calcFlag === billsPrice) {
+                    } else if ( this.projSetting.billsCalcMode === this.projSetting.billsCalcModeConst.billsPrice) {
                         field.unitFeeFlag = billsPriceUnitFeeFlag;
                     } else {
                         field.unitFeeFlag = averageQtyUnitFeeFlag;
                     }
                     // totalFeeCalcFlag
                     if (field.type === 'common') {
-                        if (this.calcFlag === rationPriceConverse) {
+                        if (this.projSetting.billsCalcMode === this.projSetting.billsCalcModeConst.rationPriceConverse) {
                             field.totalFeeFlag = sumTotalFeeFlag;
                         } else {
                             field.totalFeeFlag = totalFeeFlag;

+ 18 - 7
web/building_saas/main/js/views/project_view.js

@@ -290,7 +290,7 @@ var projectObj = {
         this.project.loadDatas(function (err) {
             if (!err) {
                 that.project.calcFields = JSON.parse(JSON.stringify(feeType));
-                that.project.setCalcFlag(rationContent);
+                that.project.initCalcFields();
 
                 let str = JSON.stringify(that.project.projSetting.main_tree_col);
                 that.project.projSetting.mainGridSetting = JSON.parse(str);
@@ -539,11 +539,22 @@ $('#downMove').click(function () {
     }
 });
 
-$('#rationContent').val(rationContent);
-$('#rationPrice').val(rationPrice);
-$('#rationPriceConverse').val(rationPriceConverse);
-$('#billsPrice').val(billsPrice);
+$('#poj-set').on('show.bs.modal', function () {
+    if (projectObj.project) {
+        $('#rationContent').val(projectObj.project.projSetting.billsCalcModeConst.rationContent);
+        $('#rationPrice').val(projectObj.project.projSetting.billsCalcModeConst.rationPrice);
+        $('#rationPriceConverse').val(projectObj.project.projSetting.billsCalcModeConst.rationPriceConverse);
+        $('#billsPrice').val(projectObj.project.projSetting.billsCalcModeConst.billsPrice);
+    }
+});
 $('#property_ok').click(function () {
-    projectObj.project.setCalcFlag(parseInt($("input[name='calcFlag']:checked").val()));
-    projectObj.calculateAll();
+    let project = projectObj.project, mode = parseInt($("input[name='calcFlag']:checked").val());
+    if (mode !== project.projSetting.billsCalcMode) {
+        project.setBillsCalcMode();
+        projectObj.calculateAll();
+        project.pushNow('editBillsCalcMode',
+            [project.projSetting.moduleName, project.Bills.getSourceType()],
+            [{projectID: project.ID(), billsCalcMode: project.projSetting.billsCalcMode}, project.Bills.getUpdateAllData()]
+        );
+    }
 });