Browse Source

多对多克隆。

chenshilong 6 years ago
parent
commit
6dd5bc9f0c

+ 2 - 6
web/building_saas/main/js/models/bills.js

@@ -801,9 +801,7 @@ var Bills = {
                 };
 
                 if (isDeleteChild){
-                    controller.tree.selected = parentNode;
-                    let idxN = project.mainTree.items.indexOf(parentNode);
-                    projectObj.mainSpread.getActiveSheet().setSelection(idxN, 0, 1, 2);
+                    calcTools.forceSelect(parentNode);
                 }
             }, function () {
                 $.bootstrapLoading.end();
@@ -826,9 +824,7 @@ var Bills = {
             if (!(node.children.length && node.children.length > 0)) return;
             let me = this;
             let firstChild = node.firstChild();
-            projectObj.mainController.tree.selected = firstChild;
-            let idx = projectObj.project.mainTree.items.indexOf(firstChild);
-            projectObj.mainSpread.getActiveSheet().setSelection(idx, 0, node.children.length, 2);
+            calcTools.forceSelect(firstChild, node.children.length);
             me.deleteSelectedNodes(true, node);
         };
         bills.prototype.setNodeToMapAndArray=function (node,map,array) {

+ 7 - 0
web/building_saas/main/js/models/calc_program.js

@@ -222,6 +222,13 @@ let calcTools = {
 
         return leafBills;
     },
+    forceSelect: function (treeNode, rowsCount = 1, colsCount = 2){
+        projectObj.mainController.tree.selected = treeNode;
+        let idx = projectObj.project.mainTree.items.indexOf(treeNode);
+        let sheet = projectObj.mainSpread.getActiveSheet();
+        sheet.setSelection(idx, 0, rowsCount, colsCount);
+        sheet.showRow(idx, GC.Spread.Sheets.VerticalPosition.center);
+    },
 
     initFees: function (treeNode){
         if (!treeNode.data.fees) {

+ 9 - 4
web/building_saas/main/js/views/project_view.js

@@ -3028,14 +3028,19 @@ $(function () {
             case 2:
                 let bills = calcTools.getLeafBills(projectNode);
                 for (let bill of bills){
-                    projectObj.mainController.tree.selected = bill;
-                    let idx = projectObj.project.mainTree.items.indexOf(bill);
-                    projectObj.mainSpread.getActiveSheet().setSelection(idx, 0, 1, 2);
+                    calcTools.forceSelect(bill);
                     blockLibObj.oneToOneClone(bill, block, options);
                 };
                 break;
             case 3:
-
+                let mtmBills = calcTools.getLeafBills(projectNode);
+                let mtmBlocks = blockLibObj.mainTree.selected.children;
+                for (let mtmBill of mtmBills){
+                    for (let mtmBlock of mtmBlocks){
+                        calcTools.forceSelect(mtmBill);
+                        blockLibObj.oneToOneClone(mtmBill, mtmBlock, options);
+                    };
+                };
                 break;
         }
     });