Browse Source

插入、删除行,刷新行引用显示。
项目汇总金额。

chenshilong 7 years ago
parent
commit
8544b58d78

+ 16 - 1
modules/main/models/bills.js

@@ -12,6 +12,7 @@ let consts = require('./project_consts');
 let projectConsts = consts.projectConst;
 let commonConsts = consts.commonConst;
 let quantity_detial = require('../facade/quantity_detail_facade');
+let projectModel = require('../../pm/models/project_schema');
 
 
 let billsSchema = new Schema({
@@ -91,7 +92,21 @@ class billsModel extends baseModel {
             return function (cb) {
                 switch (doc.updateType) {
                     case commonConsts.UT_UPDATE:
-                        bills.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID,deleteInfo: null}, doc.updateData, cb);
+                        async.parallel([      // CSL,2018.01.10 如果是总造价清单,要将4个汇总金额写到projects表中
+                            function (asyncCB) {
+                                bills.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID,deleteInfo: null}, doc.updateData, asyncCB);
+                            },
+                            function (asyncCB) {
+                                if (doc.updateData.SummaryFees){
+                                    // console.log('%%%%%%%%%%%%%%%%%%%  ' + doc.updateData.projectID + ' | ' + JSON.stringify(doc.updateData.SummaryFees));
+                                    projectModel.update({ID: doc.updateData.projectID}, {"SummaryFees": doc.updateData.SummaryFees}, asyncCB);
+                                }else {
+                                    asyncCB(null, {});
+                                };
+                            }
+                        ], function(err,result){
+                            cb(err, {});
+                        });
                         break;
                     case commonConsts.UT_CREATE:
                         bills.create(doc.updateData, cb);

+ 7 - 0
modules/pm/models/project_schema.js

@@ -7,6 +7,7 @@ let Schema = mongoose.Schema;
 let deleteSchema = require('../../../public/models/delete_schema');
 
 let collectionName = 'projects';
+
 let ProjectSchema = new Schema({
     "ID": Number,
     "ParentID": Number,
@@ -22,6 +23,12 @@ let ProjectSchema = new Schema({
     "property": {
         type: Schema.Types.Mixed,
         default: {}
+    },
+    "SummaryFees":{
+        totalFee: String,
+        estimateFee: String,
+        safetyFee: String,
+        chargeFee: String
     }
 });
 

+ 3 - 0
public/web/tree_sheet/tree_sheet_controller.js

@@ -39,6 +39,7 @@ var TREE_SHEET_CONTROLLER = {
                         that.setTreeSelected(newNode);
                         that.sheet.setSelection(newNode.serialNo(), sels[0].col, 1, 1);
                         that.sheet.showRow(newNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
+                        cbTools.refreshFormulaNodes();
                     });
                 }
             }
@@ -51,6 +52,7 @@ var TREE_SHEET_CONTROLLER = {
                         that.sheet.deleteRows(sels[0].row, that.tree.selected.posterityCount() + 1);
                         that.setTreeSelected(that.tree.items[sels[0].row]);
                     });
+                    cbTools.refreshFormulaNodes();
                 }
             }
         };
@@ -63,6 +65,7 @@ var TREE_SHEET_CONTROLLER = {
                         that.sheet.deleteRows(row,1);
                         next?that.setTreeSelected(that.tree.items[row]):"";
                     });
+                    cbTools.refreshFormulaNodes();
                 }
             }
 

+ 2 - 0
web/building_saas/main/js/controllers/project_controller.js

@@ -12,6 +12,7 @@ ProjectController = {
             sc.setTreeSelected(newNode);
             sc.sheet.setSelection(newNode.serialNo(), sels[0].col, 1, 1);
             sc.sheet.showRow(newNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
+            cbTools.refreshFormulaNodes();
         });
     },
     syncDisplayNewRationGljNode:function (sc,newNode) {
@@ -19,6 +20,7 @@ ProjectController = {
             sc.sheet.addRows(newNode.serialNo(), 1);
             TREE_SHEET_HELPER.refreshTreeNodeData(sc.setting, sc.sheet, [newNode], false);
             sc.sheet.showRow(newNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
+            cbTools.refreshFormulaNodes();
         });
     },
     addBills: function (project, sheetController, std) {

+ 7 - 3
web/building_saas/main/js/models/calc_base.js

@@ -25,7 +25,7 @@ let cbTools = {
     findBill: function (fixedFlag) {
         let bills = projectObj.project.Bills.datas;
         for(let i = 0, len = bills.length; i < len; i++){
-            if(bills[i].flagsIndex.flag === fixedFlag){
+            if(bills[i].flagsIndex && bills[i].flagsIndex.fixed && bills[i].flagsIndex.fixed.flag && bills[i].flagsIndex.fixed.flag === fixedFlag){
                 return bills[i];
             }
         }
@@ -303,8 +303,12 @@ let cbTools = {
     },
     // 刷新全部行引用的公式清单。 CSL, 2018-01-05
     refreshFormulaNodes: function () {
-        let nodes = this.getFormulaNodes();
-        if (nodes.length > 0) projectObj.mainController.refreshTreeNode(nodes);
+        try {
+            let nodes = this.getFormulaNodes();
+            if (nodes.length > 0) projectObj.mainController.refreshTreeNode(nodes);
+        } catch (err) {
+            console.log(err.message);
+        }
     },
     // 判断结点是否被其它结点的表达式引用。
     isUsedByFormula: function(node){

+ 26 - 1
web/building_saas/main/js/models/calc_program.js

@@ -433,6 +433,10 @@ let treeNodeTools = {
     isNullBill: function (treeNode) {
         return this.isLeafBill(treeNode) && (treeNode.children.length === 0) && (!treeNode.data.calcBase);
     },
+    isEngineeringCostBill: function (treeNode) {
+        return treeNode.data.flagsIndex && treeNode.data.flagsIndex.fixed && treeNode.data.flagsIndex.fixed.flag &&
+            treeNode.data.flagsIndex.fixed.flag == fixedFlag.ENGINEERINGCOST;
+    },
 
     isRationCategory: function(treeNode){
         return treeNode.sourceType === ModuleNames.ration;
@@ -465,7 +469,17 @@ let treeNodeTools = {
         };
         treeNode.changed = true;
     },
-
+    initSummaryFee(treeNode){
+        if (!treeNode.data.SummaryFees){
+            treeNode.data.SummaryFees = {
+                totalFee: 0,
+                estimateFee: 0,
+                safetyFee: 0,
+                chargeFee: 0
+            };
+            treeNode.changed = true;
+        };
+    },
     getCalcType(treeNode) {
         if (this.isRationCategory(treeNode)){
             return treeNodeCalcType.ctRationCalcProgram;
@@ -721,6 +735,7 @@ class CalcProgram {
                     contain:node.data.contain,
                     quantityEXP:node.data.quantityEXP
                 };
+                if (node.data.SummaryFees) data.SummaryFees = node.data.SummaryFees;
                 if(node.sourceType==ModuleNames.ration && node.data.type==rationType.gljRation){//定额类型的工料机做特殊处理
                     data.code=node.data.code;
                     data.projectGLJID = node.data.projectGLJID;
@@ -913,6 +928,16 @@ class CalcProgram {
                     treeNode.data.feesIndex.common.tenderUnitFee = tuf;
                     treeNode.data.feesIndex.common.tenderTotalFee = ttf;
                     treeNode.changed = true;
+                    // 如果是总造价清单,还要做单项工程、建设项目金额汇总
+                    if (treeNodeTools.isEngineeringCostBill(treeNode)){
+                        treeNodeTools.initSummaryFee(treeNode);
+                        treeNode.data.SummaryFees.totalFee = tf;
+                        treeNode.data.SummaryFees.estimateFee = 0;//treeNode.data.feesIndex.zangu.totalFee;
+                        let bill_safe = cbTools.findBill(fixedFlag.SAFETY_CONSTRUCTION);
+                        treeNode.data.SummaryFees.safetyFee = bill_safe?bill_safe.feesIndex.common.totalFee:0;
+                        let bill_charge = cbTools.findBill(fixedFlag.CHARGE);
+                        treeNode.data.SummaryFees.chargeFee = bill_charge?bill_charge.feesIndex.common.totalFee:0;
+                    }
                 }
             };
             treeNode.data.calcTemplate = {"calcItems": []};

+ 0 - 12
web/building_saas/main/js/views/project_view.js

@@ -501,7 +501,6 @@ var projectObj = {
                     },
                     callback: function (key, opt) {
                         ProjectController.addRootBill(project, controller);
-                        cbTools.refreshFormulaNodes();
                     },
                     visible: function(key, opt){
                         return project.mainTree.selected&&project.mainTree.selected.parent==null;
@@ -528,7 +527,6 @@ var projectObj = {
                     },
                     callback: function (key, opt) {
                         ProjectController.addFB(project, controller);
-                        cbTools.refreshFormulaNodes();
                     },
                     visible: function(key, opt){
                         return project.Bills.isFBFX(project.mainTree.selected );//不属于分部分项的话隐藏
@@ -562,7 +560,6 @@ var projectObj = {
                     },
                     callback: function (key, opt) {
                         ProjectController.addFX(project, controller);
-                        cbTools.refreshFormulaNodes();
                     },
                     visible: function(key, opt){
                         return project.Bills.isFBFX(project.mainTree.selected );//不属于分部分项的话隐藏
@@ -582,7 +579,6 @@ var projectObj = {
                             }
                         }
                         ProjectController.addBills(project, controller);
-                        cbTools.refreshFormulaNodes();
                     },
                      visible: function(key, opt){
                          return  project.Bills.isFBFX(project.mainTree.selected)==true?false:true;//不属于分部分项的话隐藏
@@ -597,7 +593,6 @@ var projectObj = {
                     },
                     callback: function (key, opt) {
                         ProjectController.addRation(project, controller, rationType.ration);
-                        cbTools.refreshFormulaNodes();
                     },
                     visible: function(key, opt){
                         var selected = project.mainTree.selected;
@@ -617,7 +612,6 @@ var projectObj = {
                     },
                     callback: function (key, opt) {
                         ProjectController.addRation(project, controller, rationType.volumePrice);
-                        cbTools.refreshFormulaNodes();
                     },
                     visible: function(key, opt){
                         var selected = project.mainTree.selected;
@@ -646,7 +640,6 @@ var projectObj = {
                             }
                         }
                         getGLJData('insert');// ProjectController.addRation(project, controller, rationType.volumePrice);
-                        cbTools.refreshFormulaNodes();
                     },
                     visible: function(key, opt){
                         var selected = project.mainTree.selected;
@@ -680,7 +673,6 @@ var projectObj = {
                                 controller.delete();
                             };
                             projectObj.converseCalculateBills(parent);
-                            cbTools.refreshFormulaNodes();
                         }
                     }
                 },
@@ -835,8 +827,6 @@ $('#insert').click(function () {
     } else if (selected.sourceType === project.Ration.getSourceType()) {
         ProjectController.addRation(project, controller, selected.data.type);
     };
-
-    cbTools.refreshFormulaNodes();
 });
 $('#delete').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;
@@ -858,8 +848,6 @@ $('#delete').click(function () {
         };
         projectObj.converseCalculateBills(parent);
     };
-
-    cbTools.refreshFormulaNodes();
 });
 $('#upLevel').click(function () {
     var controller = projectObj.mainController, project = projectObj.project;