Explorar o código

代码整合。

chenshilong %!s(int64=7) %!d(string=hai) anos
pai
achega
f653dca9b3

+ 3 - 2
web/building_saas/main/js/models/calc_program.js

@@ -1804,8 +1804,9 @@ class CalcProgram {
             for (let node of treeNodes){delete node.changed};
             projectObj.mainController.refreshTreeNode(treeNodes);
 
-            // 批量树结点计算后,计算程序早已物是人非,所以这里要重新计算一下。
-            if (activeSubSheetIsCalcProgram()) calcProgramObj.refreshCurCalcProgram();
+            // 批量树结点计算后,计算程序早已物是人非,所以这里要重新计算一下。警告:第二个参数千万不能改成3,否则死循环!
+            if (activeSubSheetIsCalcProgram())
+                calcProgramObj.refreshCalcProgram(projectObj.project.mainTree.selected, 2);
             $.bootstrapLoading.end();
         });
     };

+ 3 - 14
web/building_saas/main/js/models/fee_rate.js

@@ -172,7 +172,7 @@ var FeeRate = {
             var node = project.mainTree.selected;
             if(node){
                 if (node.sourceType==='ration' && calcProgramObj.sheet) {
-                    calcProgramObj.showData(node);
+                    calcProgramObj.refreshCalcProgram(node, 3);
                 }
             }
         };
@@ -184,17 +184,6 @@ var FeeRate = {
             }
         };
         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);
-             }
-             }
-             project.calcProgram.calcAllNodesAndSave(calcAllType.catAll);
-             project.markUpdateProject({projectID:project.ID(),feeRateID:this.getActivateFeeRateFileID()},"feeRate");
-             socket.emit('feeRateChangeNotify', this.getActivateFeeRateFileID());*/
            this.onFeeRatesChange([{rateID:rateID,value:value}]);
         };
 
@@ -206,7 +195,7 @@ var FeeRate = {
             }
             if(node){
                 if (node.sourceType==='ration' && calcProgramObj.sheet) {
-                    calcProgramObj.showData(node);
+                    calcProgramObj.refreshCalcProgram(node, 3);
                 }
             }
             project.calcProgram.calcAllNodesAndSave(calcAllType.catAll);
@@ -221,7 +210,7 @@ var FeeRate = {
             var node = project.mainTree.selected;
             if(node){
                 if (node.sourceType==='ration' && calcProgramObj.sheet) {
-                    calcProgramObj.showData(node);
+                    calcProgramObj.refreshCalcProgram(node, 3);
                 }
             }
             project.calcProgram.calcAllNodesAndSave(calcAllType.catAll);

+ 2 - 1
web/building_saas/main/js/models/ration_glj.js

@@ -166,7 +166,8 @@ var ration_glj = {
                 if(isDef(node)){
                     project.calcProgram.calcAndSave(node);
                 }
-                if (activeSubSheetIsCalcProgram()) calcProgramObj.showData(node, false);
+                if (activeSubSheetIsCalcProgram())
+                    calcProgramObj.refreshCalcProgram(node, 1);
             });
         };
         ration_glj.prototype.getGljByRationID = function(rationID){

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

@@ -178,7 +178,8 @@ let calcProgramManage = {
                     $.bootstrapLoading.end();
                 }
             });
-            if (activeSubSheetIsCalcProgram()) calcProgramObj.refreshCurCalcProgram();
+            if (activeSubSheetIsCalcProgram())
+                calcProgramObj.refreshCalcProgram(projectObj.project.mainTree.selected, 1);
         }
         else{
             let data = {

+ 17 - 14
web/building_saas/main/js/views/calc_program_view.js

@@ -39,23 +39,26 @@ let calcProgramObj = {
         sheetCommonObj.initSheet(me.sheet, me.setting, 1);
     },
 
-    showData: function (treeNode, needCalc = true) {
+    // 刷新显示当前选中树结点的计算程序。
+    // treeNode:末指定时默认是造价书当前选中树结点
+    // refreshKind: 1 仅刷新 2 计算并刷新但无需保存 3 计算保存并刷新
+    refreshCalcProgram: function (treeNode, refreshKind = 1) {
         var me = this;
         me.treeNode = treeNode;
-        if (needCalc){
-            projectObj.project.calcProgram.calcAndSave(treeNode);
-        };
-        me.datas = treeNode.data.calcTemplate ? treeNode.data.calcTemplate.calcItems : [];
-        sheetCommonObj.initSheet(me.sheet, me.setting, me.datas.length);
-        sheetCommonObj.showData(me.sheet, me.setting, me.datas);
-    },
 
-    refreshCurCalcProgram: function () {     // 刷新显示当前选中树结点的计算程序
-        var me = this;
-        let treeNode = projectObj.project.mainTree.selected;
-        me.treeNode = treeNode;
-        projectObj.project.calcProgram.innerCalc(treeNode, []);
-        delete treeNode.changed;
+        switch (refreshKind) {
+            case 1:
+                // doNothing
+                break;
+            case 2:
+                projectObj.project.calcProgram.innerCalc(treeNode, []);
+                delete treeNode.changed;
+                break;
+            case 3:
+                projectObj.project.calcProgram.calcAndSave(treeNode);
+                break;
+        }
+
         me.datas = treeNode.data.calcTemplate ? treeNode.data.calcTemplate.calcItems : [];
         sheetCommonObj.initSheet(me.sheet, me.setting, me.datas.length);
         sheetCommonObj.showData(me.sheet, me.setting, me.datas);

+ 2 - 5
web/building_saas/main/js/views/project_view.js

@@ -36,7 +36,8 @@ var projectObj = {
             subViewObj.loadComments(node);
         }
         gljOprObj.showDataIfRationSelect(node);
-        if (activeSubSheetIsCalcProgram()) calcProgramObj.showData(node);
+        if (activeSubSheetIsCalcProgram())
+            calcProgramObj.refreshCalcProgram(node, 3);
 
         //zhong 2017-9-1 特征及内容
         if(pageCCOprObj.active){
@@ -394,10 +395,6 @@ var projectObj = {
             project.Ration.updateRationCodes([{'node':node,value:value}]);
           //  this.updateRationCode(node, value);  // 新套定额适合实时计算
             // 这里因异步问题暂时缺少工料机价格。该过程移到:ration_glj.js的refreshAfterSave方法中。
-            /*project.calcProgram.calcAndSave(node);
-            if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
-                calcProgramObj.showData(node, false);
-            };*/
         }
     },
     updateNodeField : function (node,value,filedID,callback) {

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

@@ -94,7 +94,7 @@ $("#linkJSCX").click(function(){        // 计算程序
     if (!projectObj.mainController.tree.selected)
         projectObj.mainController.tree.selected = projectObj.mainController.tree.firstNode();
     let sel = projectObj.mainController.tree.selected;
-    calcProgramObj.showData(sel);
+    calcProgramObj.refreshCalcProgram(sel, 3);
     gljOprObj.activeTab='#linkJSCX';
 });