element Cascader 实现选择一级二级隐藏多选框 实现只有第三级可多选

该代码示例展示了如何在Vue.js应用中使用el-cascader组件来处理区域选择。组件配置了点击触发展开、可清空、标签折叠等特性,并在值改变时进行详细的数据对比和处理。同时,用CSS隐藏了一级和二级的复选框。
摘要由CSDN通过智能技术生成
<template>
  <div id="index" class="flex_direction_box">
    <el-cascader
      ref="myCascader"
      expand-trigger="click"
      v-model="areaDropValue1"
      :options="district"
      :props="areaProps1"
      clearable
      collapse-tags
      popper-class="disableFirstAndSecondLevel"
      @change="areaDropChange1"
    ></el-cascader>
  </div>
</template>
<script>
export default {
  data() {
    return {
      district: [
        {
          v: "1",
          n: "北京",
          c: [
            {
              v: "2816",
              n: "密云区",
              c: [
                { v: "6667", n: "城区" },
                { v: "2862", n: "城区以外" },
              ],
            },
            {
              v: "72",
              n: "朝阳区",
              c: [
                { v: "2819", n: "三环到四环之间" },
                { v: "2839", n: "四环到五环之间" },
                { v: "2840", n: "五环到六环之间" },
                { v: "4137", n: "管庄" },
                { v: "4139", n: "北苑" },
                { v: "4211", n: "定福庄" },
                { v: "2799", n: "三环以内" },
              ],
            },
          ],
        },
      ],
      areaProps1: {
        label: "n",
        value: "v",
        children: "c",
        multiple: true,
        checkStrictly: true,
      },
      shareScopeEnd: [],
    };
  },
  methods: {
    areaDropChange1(val) {
      console.log(
        val,
        this.areaDropValue1,
        this.$refs.myCascader.getCheckedNodes()
      );
      let changeFlag = false;
      let changeItem = null;
      if (this.shareScopeEnd.length == 0) {
        this.areaDropValue1 = val;
      } else {
        //与原数组比对
        this.areaDropValue1.forEach((item) => {
          if (item[0] !== this.shareScopeEnd[0][0]) {
            //一级标签不同
            changeFlag = true;
            changeItem = item;
          } else if (item[1] !== this.shareScopeEnd[0][1]) {
            //一级标题相同但二级标签不同
            changeFlag = true;
            changeItem = item;
          } else if (
            (!item[2] && this.shareScopeEnd[0][2]) ||
            (item[2] && !this.shareScopeEnd[0][2])
          ) {
            //一二极相同三级不同或从无到有
            changeFlag = true;
            changeItem = item;
          }
        });
      }
      if (changeFlag) {
        this.areaDropValue1 = [];
        this.areaDropValue1.push(changeItem);
      }
      this.shareScopeEnd = this.areaDropValue1;
    },
  },
};
</script>
<style lang="scss">
.disableFirstAndSecondLevel{
  .el-cascader-panel {
    .el-scrollbar:first-child {
      .el-checkbox {
        display: none !important;
      }
    }
    .el-scrollbar:nth-child(2) {
      .el-checkbox {
        display: none !important;
      }
    }
  }
}
</style>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值