diff --git a/components/panel/formSlot.vue b/components/panel/formSlot.vue index bd9ea82..587d417 100644 --- a/components/panel/formSlot.vue +++ b/components/panel/formSlot.vue @@ -889,9 +889,7 @@ export default { // 已展开,则收起该节点及其后续展开 this.expandedDeptIds = this.expandedDeptIds.slice(0, colIndex); // 清除后续列的 padding-top - for (let i = colIndex + 1; i <= Object.keys(this.columnPaddingTops).length; i++) { - this.$delete(this.columnPaddingTops, i); - } + this.clearColumnPaddingTops(colIndex); } else { // 未展开或展开了其他节点,则设置当前节点为展开,并截断后续 this.expandedDeptIds = this.expandedDeptIds.slice(0, colIndex); @@ -904,6 +902,16 @@ export default { }); } }, + // 清除指定列之后所有列的 padding-top + clearColumnPaddingTops(colIndex) { + let newPaddingTops = {}; + Object.keys(this.columnPaddingTops).forEach(key => { + if (Number(key) <= colIndex) { + newPaddingTops[key] = this.columnPaddingTops[key]; + } + }); + this.columnPaddingTops = newPaddingTops; + }, // 滚动子级列,使其顶部与父级节点垂直对齐 alignColumnToParent(colIndex, deptIndex) { let that = this; @@ -918,7 +926,9 @@ export default { let offset = parentRect.top - firstRect.top; if (offset > 0) { // 给子级列设置相同的 padding-top,使子级列第一项与父级节点垂直对齐 - that.$set(that.columnPaddingTops, colIndex + 1, offset); + let newPaddingTops = Object.assign({}, that.columnPaddingTops); + newPaddingTops[colIndex + 1] = offset; + that.columnPaddingTops = newPaddingTops; } }).exec(); }).exec();