Переглянути джерело

收起的节点进行上下移时,显示问题

zhongzewei 6 роки тому
батько
коміт
607b154c14

+ 16 - 8
public/web/tree_sheet/tree_sheet_controller.js

@@ -207,29 +207,37 @@ var TREE_SHEET_CONTROLLER = {
         controller.prototype.upMove = function () {
             var that = this, sels = this.sheet.getSelections();
             if (this.tree.selected) {
-                if (this.tree.selected.upMove()) {
-                    TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () {
+                TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () {
+                    TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected,that.tree.selected.serialNo(),true);//为了处理移动前子项是隐藏的情况,先把所有的列设置为显示
+                    TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected.preSibling,that.tree.selected.preSibling.serialNo(),true);
+                    if (that.tree.selected.upMove()) {
                         TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [that.tree.selected, that.tree.selected.nextSibling], true);
+                        TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected,that.tree.selected.serialNo());
+                        TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected.nextSibling,that.tree.selected.nextSibling.serialNo());
                         that.sheet.setSelection(that.tree.selected.serialNo(), sels[0].col, 1, 1);
                         if (that.event.refreshBaseActn) {
                             that.event.refreshBaseActn(that.tree);
                         }
-                    });
-                }
+                    }
+                });
             }
         };
         controller.prototype.downMove = function () {
             var that = this, sels = this.sheet.getSelections();
             if (this.tree.selected) {
-                if (this.tree.selected.downMove()) {
-                    TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () {
+                TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () {
+                    TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected,that.tree.selected.serialNo(),true);//为了处理移动前子项是隐藏的情况,先把所有的列设置为显示
+                    TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected.nextSibling,that.tree.selected.nextSibling.serialNo(),true);
+                    if (that.tree.selected.downMove()) {
                         TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [that.tree.selected, that.tree.selected.preSibling], true);
+                        TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected,that.tree.selected.serialNo());
+                        TREE_SHEET_HELPER.refreshChildrenVisiable(that.sheet,that.tree,that.tree.selected.preSibling,that.tree.selected.preSibling.serialNo());
                         that.sheet.setSelection(that.tree.selected.serialNo(), sels[0].col, 1, 1);
                         if (that.event.refreshBaseActn) {
                             that.event.refreshBaseActn(that.tree);
                         }
-                    });
-                }
+                    }
+                });
             }
         };
 

+ 8 - 0
public/web/tree_sheet/tree_sheet_helper.js

@@ -156,6 +156,14 @@ var TREE_SHEET_HELPER = {
             }
         });
     },
+    refreshChildrenVisiable:function(sheet,tree,node,row,visiable){
+        let iCount = node.posterityCount(), i, child;
+        for (i = 0; i < iCount; i++) {
+            child = tree.items[row + i +1];
+            sheet.setRowVisible(row + i + 1, visiable?visiable:child.visible, GC.Spread.Sheets.SheetArea.viewport);
+        }
+        sheet.invalidateLayout();
+    },
     showTreeData: function (setting, sheet, tree) {
         var indent = 20;
         var halfBoxLength = 5;