diff --git a/src/components/TreeTable/index.vue b/src/components/TreeTable/index.vue index 2c2f7418..9ce7a503 100644 --- a/src/components/TreeTable/index.vue +++ b/src/components/TreeTable/index.vue @@ -147,16 +147,18 @@ export default { }) } }, - updateTreeArray(index, item) { - const { _id } = item - const data = this.data - - for (let i = 0; i < data.length; i++) { - if (data[i]._id === _id) { - data.splice(i, 1, Object.assign({}, item)) - break + updateTreeNode(item) { + return new Promise(resolve => { + const { _id, _parent } = item + const index = _id.split('-').slice(-1)[0] // get last index + if (_parent) { + _parent.children.splice(index, 1, item) + resolve(this.data) + } else { + this.data.splice(index, 1, item) + resolve(this.data) } - } + }) } } } diff --git a/src/views/tree-table/custom/index.vue b/src/views/tree-table/custom/index.vue index 63b258b4..11e47912 100644 --- a/src/views/tree-table/custom/index.vue +++ b/src/views/tree-table/custom/index.vue @@ -127,18 +127,8 @@ export default { this.tempItem = Object.assign({}, row) this.dialogFormVisible = true }, - updateItem() { - const data = this.$refs.TreeTable.getData() - const { _id } = this.tempItem - - for (let i = 0; i < data.length; i++) { - if (data[i]._id === _id) { - data.splice(i, 1, Object.assign({}, this.tempItem)) - this.$refs.TreeTable.updateTreeArray(i, this.tempItem) - break - } - } - + async updateItem() { + await this.$refs.TreeTable.updateTreeNode(this.tempItem) this.dialogFormVisible = false }, addMenuItem(row, type) {