Procházet zdrojové kódy

保存使用新的回调机制。

chenshilong před 7 roky
rodič
revize
d0dea6e684
1 změnil soubory, kde provedl 29 přidání a 9 odebrání
  1. 29 9
      web/building_saas/main/js/models/calc_program.js

+ 29 - 9
web/building_saas/main/js/models/calc_program.js

@@ -1048,14 +1048,14 @@ class CalcProgram {
     };
 
     // 存储、刷新零散的多个结点。
-    saveNodes(treeNodes){
+    saveNodes(treeNodes, callback){
         if (treeNodes.length < 1) {
             $.bootstrapLoading.end();
             return;
         }
 
         let me = this;
-        me.project.beginUpdate('');
+/*        me.project.beginUpdate('');
         for (let node of treeNodes){
             if (node.changed){
                 let data = calcTools.cutNodeForSave(node);
@@ -1063,15 +1063,35 @@ class CalcProgram {
                 me.project.push(node.sourceType, [newData]);
             }
         };
-        me.project.endUpdate();
+        me.project.endUpdate();*/
 
-        for (let node of treeNodes){delete node.changed};
-        projectObj.mainController.refreshTreeNode(treeNodes);
-
-        // 批量树结点计算后,计算程序早已物是人非,所以这里要重新计算一下。
-        if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
-            calcProgramObj.refreshCurNodeCalcItems(me.project.mainTree.selected);
+        let dataArr = [];
+        for (let node of treeNodes){
+            if (node.changed){
+                let data = calcTools.cutNodeForSave(node);
+                let newData = {'type': node.sourceType, 'data': data};
+                dataArr.push(newData);
+            }
+        };
+        if (dataArr.length < 1) {
+            $.bootstrapLoading.end();
+            return;
         };
+
+        me.project.updateNodes(dataArr, function (data) {
+            if(callback){
+                callback(data);
+            };
+
+            for (let node of treeNodes){delete node.changed};
+            projectObj.mainController.refreshTreeNode(treeNodes);
+
+            // 批量树结点计算后,计算程序早已物是人非,所以这里要重新计算一下。
+            if (activeSubSheetIs(subSheetIndex.ssiCalcProgram)) {
+                calcProgramObj.refreshCurNodeCalcItems(me.project.mainTree.selected);
+            };
+            $.bootstrapLoading.end();
+        });
     };
 
     // 只计算treeNode自身。changedArr: 外部传来的一个数组,专门存储发生变动的节点。