vue+element 级联菜单实现动态懒加载

官方文档给的api

// 1:html代码块

 <el-cascader @change="workUnitChnge"
              v-model="workUnitArr"
              :options="workUnitList"
              :props="cascaderProps"
              :placeholder="expertApplicationData.workUnit || '请选择'"
               clearable>
 </el-cascader>

// 2: js代码部分(ts)

  说明:1:进入页面首先加载顶层数据(第一级数据放入list里)
        2:如果层级不固定有多少层级最后后端返回一个字段代表当前级是否有下级数据来显示当前级是否可 
          展开(leaf:true/false)
        3:如果固定只有三级那么下边case到2为止
        4: this.commonSystemSrv.getDeptTree 后端接口
 
  get cascaderProps() {
    return {
      value: 'id',
      label: 'name',
      lazy: true,
      lazyLoad: this.lazyLoad
    };
  }
  async lazyLoad(node, resolve) {
    const level = node.level;
    let result;
    switch (level) {
      case 0:
        result = this.workUnitList;
        result.forEach(item => {
          item.value = item.id;
          item.label = item.name;
          item.leaf = item.childNum === 0 ? true : false;
        });
        resolve(result);
        break;
      case 1:
        this.commonSystemSrv.getDeptTree(node.data.id).then(res => {
          result = res;
          result.forEach(item => {
            item.value = item.id;
            item.label = item.name;
            item.leaf = item.childNum === 0 ? true : false;
          });
          resolve(result);
        });
        break;
      case 2:
        this.commonSystemSrv.getDeptTree(node.data.id).then(res => {
          result = res;
          result.forEach(item => {
            item.value = item.id;
            item.label = item.name;
            item.leaf = item.childNum === 0 ? true : false;
          });
          resolve(result);
        });
        break;
      case 3:
        this.commonSystemSrv.getDeptTree(node.data.id).then(res => {
          result = res;
          result.forEach(item => {
            item.value = item.id;
            item.label = item.name;
            item.leaf = item.childNum === 0 ? true : false;
          });
          resolve(result);
        });
        break;
      case 4:
        this.commonSystemSrv.getDeptTree(node.data.id).then(res => {
          result = res;
          result.forEach(item => {
            item.value = item.id;
            item.label = item.name;
            item.leaf = item.childNum === 0 ? true : false;
          });
          resolve(result);
        });
        break;
      case 5:
        this.commonSystemSrv.getDeptTree(node.data.id).then(res => {
          result = res;
          result.forEach(item => {
            item.value = item.id;
            item.label = item.name;
            item.leaf = item.childNum === 0 ? true : false;
          });
          resolve(result);
        });
        break;
      case 6:
        this.commonSystemSrv.getDeptTree(node.data.id).then(res => {
          result = res;
          result.forEach(item => {
            item.value = item.id;
            item.label = item.name;
            item.leaf = item.childNum === 0 ? true : false;
          });
          resolve(result);
        });
        break;
      default:
        break;
    }
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值