解决 element-plus Cascader 级联选择器权限问题(非条件下禁用)

业务需求:多账号登录的时候,每个账号只能选择属于自己所属条件下的标签,

 <div class="card-header-right">
      <el-cascader placeholder="筛选条件" clearable :style="[null, ''].includes(searchArr) ? 'width:200px' : 'width:' + (searchArr.join('/').length * 18 + 10) + 'px;max-width:450px;min-width:200px'"v-model="searchArr" size="default" :props="cityData"  @change="search(0)">
      </el-cascader>
 </div>

解决这个问题是 处理好props

const cityData = {
            lazy: true,
            checkStrictly: true,
            async lazyLoad(node, resolve) {//element-plus框架自有
                const { level, value, pathValues ,checked} = node
                let res
                if (level == 0) {
                    res = await getCity()
                } else if (level == 1) {
                    res = await getYwdw({ city: value })
                } else if (level == 2) {
                    res = await getDydjByUnit({
                        city: pathValues[0],
                        ywdwmc: pathValues[1],
                    })
                } else if (level == 3) {
                    res = await getStation({
                        city: pathValues[0],
                        ywdwmc: pathValues[1],
                        dydj: pathValues[2],
                    })
                }
                console.log('res级联',node);
              //   let isChecked=true
              //  nextTick(()=>{
              //   if(node.pathLabels.includes(city.value)){
              //     isChecked=false 
              //       }
              //  })
                let nodes = res.data.map((item) => {
                  if(level == 0&&city.value){
                    if(item.value!==city.value){//
                      item.disabled=true
                    }
                  }
                  if(level==1){
                    if(!node.pathLabels.includes(city.value)){//
                      item.disabled=true
                    }
                  }
                  if (level == 2) {
                      item.label = kVObj[item.label]
                      if(!node.pathLabels.includes(city.value)){//重点:
                      item.disabled=true  
                    } 
                  }
                  if (level == 3) {
                        let obj = JSON.parse(JSON.stringify(item))
                        item.label = obj.value
                        item.value = obj.label + '&&&&' + obj.value
                        if(!node.pathLabels.includes(city.value)){//重点:筛选条件
                      item.disabled=true
                    }
                  }
                  
                  item.leaf = level >= 3
                  return item
                })
              
                
                resolve(nodes)
            },
        }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值