ElementUI 树形控件el-tree懒加载并设置默认展开和选中的效果

使用elementui树组件,通过懒加载加载数据,并设置默认展开和全部选中的效果。

<el-tree
      :load="loadNode"
      node-key="org_id"
      is-connection-line
      show-checkbox
      lazy
      :default-checked-keys="defaultSelectCids"
      :default-expanded-keys="defaultExpandedCids"
      :props="defaultProps"
      @check-change="handleCheckChange"
      ref="orgTreeData"
    >
      <span class="custom-tree-node" slot-scope="{ node, data }">
        <span>{{ node.label }}</span>
        <span style="padding-left: 10px"> {{ data.in_service.count }} </span>
      </span>
    </el-tree>

主要设置load替换data属性。

还设置属性lazy,以及default-checked-keys和default-expanded-keys属性。并配置options的isLeaf属性。

dataTree = [];
  defaultProps = {
    children: 'child',
    label: 'org_name',
    isLeaf: data => {
      return !data.has_child;
    },
  };
  defaultExpandedCids = []; // 选出所有pid为0的 cid节点
  defaultSelectCids = []; // 选出所有cid
async loadNode(node, resolve) {
    if (!node.data) {
      const res = await this.getOrg(null);
      if (res && Array.isArray(res)) {
        res.forEach(item => {
          if (item.has_child && item.parent.id === 0) {
            this.defaultExpandedCids.push(item.org_id);
          }
          this.defaultSelectCids.push(item.org_id);
        });
      }
      resolve(res);
    } else {
      resolve(await this.getOrg(node.data.org_id));
    }
  }
  handleCheckChange(data, checked, indeterminate) {
    console.log(data, checked, indeterminate, this.$refs.orgTreeData.getCheckedKeys());
  }
  async getOrg(orgId) {
    
    this.orgTreeLoading = true;
    const {
      data: { tree_data = {} },
      error,
    } = await http.API();
    if (!error) {
      this.orgTreeLoading = false;
      return new Promise(resolve => {
        resolve(tree_data);
      });
    }
  }

效果图如下

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值