element-ui Cascader 级联选择器多级禁用

                      

<template>
    <div>
      <el-cascader 
      ref="cascader" 
      v-model="checked" 
      :options="options" 
      :props="props"
      clearable
      @change="handleChange" />
    </div>
</template>
<script>
export default {
    data() {
        return {
            props: {
                multiple: true,
                emitPath: false
            },
            checked: [],
            options: [{
                value: 1,
                label: '东南',
                disabled: false,
                children: [{
                    value: 2,
                    label: '上海',
                    disabled: false,
                    children: [
                        {
                            value: 3,
                            label: '普陀',
                            disabled: false
                        },
                        {
                            value: 4,
                            label: '黄埔',
                            disabled: false
                        },
                        {
                            value: 5,
                            label: '徐汇',
                            disabled: false
                        }
                    ]
                }, {
                    value: 7,
                    label: '江苏',
                    disabled: false,
                    children: [
                        {
                            value: 8,
                            label: '南京',
                            disabled: false
                        },
                        {
                            value: 9,
                            label: '苏州',
                            disabled: false
                        },
                        {
                            value: 10,
                            label: '无锡',
                            disabled: false
                        }
                    ]
                }, {
                    value: 12,
                    label: '浙江',
                    disabled: false,
                    children: [
                        {
                            value: 13,
                            label: '杭州',
                            disabled: false
                        },
                        {
                            value: 14,
                            label: '宁波',
                            disabled: false
                        },
                        {
                            value: 15,
                            label: '嘉兴',
                            disabled: false
                        }
                    ]
                }]
            }, {
                value: 17,
                label: '西北',
                disabled: false,
                children: [{
                    value: 18,
                    label: '陕西',
                    disabled: false,
                    children: [
                        {
                            value: 19,
                            label: '西安',
                            disabled: false
                        },
                        {
                            value: 20,
                            label: '延安',
                            disabled: false
                        }
                    ]
                }, {
                    value: 21,
                    label: '新疆维吾尔族自治区',
                    disabled: false,
                    children: [
                        {
                            value: 22,
                            label: '乌鲁木齐',
                            disabled: false
                        },
                        {
                            value: 23,
                            label: '克拉玛依',
                            disabled: false
                        }
                    ]
                }]
            }]
        }
    },
    methods: {
        handleChange() {
            setTimeout(() => {
                let nodePach = [], _that = this
                try {
                    _that.$refs.cascader.checkedNodes.map(item => {
                        nodePach.push(...item.path)
                    })
                    this.options.forEach(item => {
                        item.children = this.disabledData(item.children, nodePach, item.value)
                    })
                } catch (e) {

                }
            }, 10)
        },
        disabledData(data, nodePach, parentId) {
            return data.map(item => {
                if (item.children != null && item.children.length > 0) {
                    item.children = this.disabledData(item.children, nodePach, parentId)
                }
                if (nodePach.length > 0 && nodePach.indexOf(item.value) === -1 && nodePach.indexOf(parentId) !== -1) {
                    item.disabled = true
                } else {
                    item.disabled = false
                }
                return item
            })
        }
    }
}
</script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值