树形表格保存展开关闭状态

 编辑数据后,记录用户操作行的展开和关闭
注意,以下列子是默认展开,记录合上的状态
注意 row-key 需要给每行一个key
expand-change 点击行的操作
<el-table
       ref="tableItem"
       slot="table"
       :data="tableBox.list"
       height="100%"
       class="flex-su-order-1"
       style="width: 100%;margin-bottom: 20px;"
       :row-key="rowKye"
       border
       default-expand-all
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
       @expand-change="defaultExpandedKeys"
     >
methods 方法
data中 defaultExpandedKeysList 存放数据
getList(){
	在数据返回后
	 this.$nextTick(function() {
	 //手动设置展开或合拢
       this.expandableListView()
     })
}
//表格的每个key
rowKye(val) {
      return val.id
    },
    //点击行的操作 expanded false为合上保存数据
    defaultExpandedKeys(expandedRows, expanded) {
      const number = this.defaultExpandedKeysList.indexOf(expandedRows)
      if (!expanded) {
        this.defaultExpandedKeysList.push(expandedRows)
      } else {
        this.defaultExpandedKeysList.splice(number, 1)
      }
    },
//下面两个方法其实就是简单的遍历 匹配 把需要合龙 手动处理下
    expandableListView() {
      if (this.defaultExpandedKeysList.length > 0) {
        let idList = this.defaultExpandedKeysList.map(ele => ele.id)
        //this.tableBox.list 就是表格的数据
        this.doClose(this.tableBox.list, idList)
      }
    },
    doClose(val, idList) {
      val.forEach(deptElement => {
        if (idList.includes(deptElement.id)) {
        //false是合拢
          this.$refs.tableItem.toggleRowExpansion(deptElement, false)
        }
        if (!isEmpty(deptElement.children)) {
          this.doClose(deptElement.children, idList)
        }
      })
    },
代码可以直接用



















