浏览代码

update FeeRate

zhangweicheng 7 年之前
父节点
当前提交
9ad9ba0286

+ 41 - 41
web/building_saas/main/js/models/fee_rate.js

@@ -15,15 +15,6 @@ var FeeRate = {
             this.datas = datas;
             socketObject.connect();
         };
-   /*     FeeRate.prototype.getViewDatas = function(){
-            var  rates=[];
-            _.forEach(this.datas,function (item) {
-                if(item.status == 'activate'){
-                    rates= item.rates;
-                }
-            })
-            return rates;
-        };*/
         FeeRate.prototype.getActivateFeeRate = function () {
             var feeRate={
                 rates:[]
@@ -126,7 +117,8 @@ var FeeRate = {
             doc.rate.rate =doc.rate.rate.toDecimal(feeRate_consts.decimal);
             this.updateFeeRate(query,doc);
             if(this.ifRateChange(params)){
-                this.synchronizeFeeRate();
+                //this.synchronizeFeeRate();
+                this.onFeeRateChange(params.dataItem.ID,params.dataItem.rate);
             }
         };
 
@@ -139,7 +131,6 @@ var FeeRate = {
         FeeRate.prototype.updateFeeRate=function (query,doc) {
           var updateData = this.getUpdateData('ut_update',query,doc,'update_rates');
             project.pushNow('updateFeeRate',[this.sourceType],updateData);
-            socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());
         };
         FeeRate.prototype.updateStatusBySelected = function (updateTasks) {
             var updateData = [];
@@ -155,20 +146,52 @@ var FeeRate = {
             var node = project.mainTree.selected;
             if(node){
                 if (node.sourceType==='ration' && calcProgramObj.sheet) {
-                    project.calcProgram.compileAllTemps();
                     calcProgramObj.showData(node);
                 }
             }
         };
         FeeRate.prototype.ifRateChange=function (params) {
-            if(params.dataItem.rate!=params.oldDataItem.rate){
+            if(params.dataItem.memo==params.oldDataItem.memo){
                 return true;
             }else {
                 return false;
             }
         };
-        FeeRate.prototype.onFeeRateChange=function (feeRateID,) {
-
+        FeeRate.prototype.onFeeRateChange=function (rateID,value) {
+            var node = project.mainTree.selected;
+            this.refreshCalProgramByRateID(rateID,value);
+            this.refreshBillsByRateID(rateID,value);
+            if(node){
+                if (node.sourceType==='ration' && calcProgramObj.sheet) {
+                    calcProgramObj.showData(node);
+                }
+            }
+            socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());
+        };
+        FeeRate.prototype.refreshCalProgramByRateID=function (rateID,value) {
+            var templates = project.calcProgram.datas.templates;
+            for(var i =0;i<templates.length;i++){
+                _.forEach(templates[i].calcItems,function (item) {
+                    if(item.feeRateID==rateID){
+                        item.feeRate = value;
+                    }
+                })
+            }
+            project.calcProgram.compileAllTemps();
+            rationPM.refreshDetailSheet();
+        };
+        FeeRate.prototype.refreshBillsByRateID=function(rateID,value){
+            var nodes = _.filter(projectObj.project.mainTree.items,function (n) {
+                if(n.sourceType==ModuleNames.bills&&n.data.feeRateID==rateID){
+                    n.data.feeRate=number_util.roundToString(value,feeRate_consts.decimal);
+                    return true;
+                }else {
+                    return false;
+                }
+            })
+            if(nodes.length>0){
+                projectObj.mainController.refreshTreeNode(nodes)
+            }
         };
         FeeRate.prototype.changeFeeRateStandard=function(newVal,callback){
             var me =this;
@@ -238,8 +261,8 @@ var FeeRate = {
                     var data=me.getfbUpdateData(rate,bill,value);
                     this.setFeeRateToBill(data,function (result) {
                         if(data.hasOwnProperty('feeRate')){
-                            me.refreshBillsByRateID(rate,value);
-                            socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
+                            rate.rate=value;
+                            me.onFeeRateChange(rate.ID,value);
                         }else {
                             bill.feeRate=value;
                             projectObj.mainController.refreshTreeNode([node])
@@ -284,33 +307,10 @@ var FeeRate = {
                 }
             }
             CommonAjax.post('/feeRates/updateFeeRate', data, function (data) {
-                for(var i =0;i<rationPM.datas.length;i++){
-                    _.forEach(rationPM.datas[i].calcItems,function (item) {
-                        if(item.feeRateID==rate.ID){
-                            item.feeRate = value;
-                        }
-                    })
-                }
                 rate.rate=value;
-                project.calcProgram.compileAllTemps();
-                rationPM.refreshDetailSheet();
-                socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
+                me.onFeeRateChange(rate.ID,value);
             });
         }
-        FeeRate.prototype.refreshBillsByRateID=function(rate,value){
-            rate.rate=value;
-            var nodes = _.filter(projectObj.project.mainTree.items,function (n) {
-                if(n.sourceType==ModuleNames.bills&&n.data.feeRateID==rate.ID){
-                    n.data.feeRate=number_util.roundToString(value,feeRate_consts.decimal);
-                    return true;
-                }else {
-                    return false;
-                }
-            })
-            if(nodes.length>0){
-                projectObj.mainController.refreshTreeNode(nodes)
-            }
-        };
 
         FeeRate.prototype.getfbUpdateData=function (rate,bill,value) {
             var data={};

+ 4 - 2
web/building_saas/main/js/views/calc_program_manage.js

@@ -113,8 +113,10 @@ let rationPM = {
     },
     refreshDetailSheet:function () {
         var me=this;
-        var mainSheetIndex = me.mainSpread.getActiveSheet().getActiveRowIndex();
-        sheetCommonObj.showData(me.detailSpread.getSheet(0), me.detailSetting,me.datas[mainSheetIndex].calcItems);
+        if(me.mainSpread&&me.detailSpread){
+            var mainSheetIndex = me.mainSpread.getActiveSheet().getActiveRowIndex();
+            sheetCommonObj.showData(me.detailSpread.getSheet(0), me.detailSetting,me.datas[mainSheetIndex].calcItems);
+        }
     }
 
 };

+ 5 - 1
web/building_saas/main/js/views/fee_rate_view.js

@@ -350,6 +350,10 @@ var feeRateObject={
             this.mainViews.destroy();
             this.mainViews = null;
         }
+        if(subRateObject.views){
+            subRateObject.views.destroy();
+            subRateObject.views = null;
+        }
         this.activateFeeRate = projectObj.project.FeeRate.getActivateFeeRate();
         this.datas = this.activateFeeRate.rates;
         this.mainViews = new GC.Spread.Views.DataView($('#divFee')[0],
@@ -648,7 +652,7 @@ var feeRateObject={
         var data={'projectID': projectObj.project.ID(),'templatesID': calInfo.template.ID,'calcItem': calInfo.calcItem};
         rationPM.saveCalcItem(data,function (result) {
             calInfo.calcItem.feeRate=rate.rate;
-            project.calcProgram.compileAllTemps();
+            projectObj.project.calcProgram.compileAllTemps();
             rationPM.refreshDetailSheet();
             $("#fee_rate_tree").modal('hide');
         });