element-ui el-cascader级联选择器设置指定层级不能选中

有时候用element-ui el-cascader级联选择器添加分类时会遇到最多添加几级的限定.看了文档,只要给需要禁止选择的选项添加disabled属性就可以.但是使用一层一层循环遍历数据感觉很麻烦,自己写了个遍历的方法,纪录下,方便以后使用

贴代码

cascader.vue

<template>
  <el-dialog
    title="添加分类"
    :visible.sync="dialogVisible"
    width="500px">
    <div class="role_contanier">
      <el-form label-width="80px" :model="typeInfo">
        <el-form-item label="分类名称">
          <el-input v-model="typeInfo.name"></el-input>
        </el-form-item>
        <el-form-item label="分类组">
          <el-cascader
            v-model="typeInfo.group"
            :options="typeOptions"
            :props="props"
            @change="handleChange">
          </el-cascader>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="submitForm">添加</el-button>
        </el-form-item>
      </el-form>
    </div>
    <span slot="footer" class="dialog-footer">
      <el-button @click="dialogVisible = false">取 消</el-button>
      <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
    </span>
  </el-dialog>
</template>

  <script>
  export default {
    props: {

    },
    data() {
      return {
        dialogVisible: false,
        typeInfo: {
          group: ‘‘,
          name: ‘‘
        },
        typeOptions: [], // 分类层级选项
        props: {
          label: ‘name‘, // 显示的选项
          value: ‘id‘, // 选择的value值
          children: ‘childs‘, // 子级属性名
          checkStrictly: true // 可以选择任意一级
        } // 指定层级属性
      }
    },
    created() {
      this.getTypeOptions()
    },
    mounted() {

    },
    methods: {
      // 获取分类级别
      getTypeOptions () {
        // 假设后台返回的数据 4级
        let resDate = [{
          id: 1,
          name: ‘食品‘,
          childs: [
            {id: 3, name: ‘进口食品‘, childs: [
                {id: 5, name: ‘果干‘, childs: [{id: 7, name: ‘坚果‘,}]},
                {id: 6, name: ‘面包‘}
              ]
            },
            {id: 4, name: ‘国内食品‘}
          ]
          }, {id: 2, name: ‘清洁‘}
        ]
        // 限制只能添加4级分类
        this.setDisable (1, resDate, 3)
        console.log(resDate)
        this.typeOptions = resDate
        this.dialogVisible = true
      },

      // 超过3级,不能选中,子级分类最多4级
      /**
       * count: 当前层级
       * data: 当前层级的数据
       * maxNum: 最多不能超过几级
      */
      setDisable (count, data, maxNum) {
        if (count > maxNum) { //最多几级就写几
          data.forEach(v => {
            v.disabled = true // 超过设定的最大级数,给这一集的数据添加disabled属性
          })
        } else {
          data.forEach(v => {
            if (v.childs && v.childs.length) {
              count++
              this.setDisable(count, v.childs, maxNum)
            }
          })
        }
      },
      // 添加分类
      submitForm () {

      },
      handleChange (val) {
        console.log(val)
      }
    }
  }
  </script>

  <style>

  </style>

效果图: 第4级,(坚果不能被选中,也就不能再往下添加分类)

原文地址:https://www.cnblogs.com/steamed-twisted-roll/p/11744020.html

时间: 2024-10-10 03:15:34

element-ui el-cascader级联选择器设置指定层级不能选中的相关文章

Element中的Cascader 级联选择器高度问题解决方案

今天在做黑马项目的时候遇到了级联选择器的一个坑. 高度不适配. 在你的全局global.css里面添加 .el-cascader-menu { height: 300px; } 就可以解决了. 这是element的新版本的坑. 原文地址:https://www.cnblogs.com/famensaodiseng/p/12155684.html

vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、一级mockjs用法、路由懒加载三种方式

不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p>Element UI简单Cascader级联选择器使用</p> <el-cascader :options='options' v-model="selectedOptions" @change="handleChange"> </el-

ElementUI 之 Cascader 级联选择器指定 value label

ElementUI 的 Cascader 级联选择器个人觉得很好用,但是对 :options="options" 里的数据格式是有特定要求的:input 框显示的值是 options 里的 label 值.如果 options 的键值对不是 value label ,就需要 props 来配置. 如何配置 value label? <el-cascader v-model="data" :options="options" placehol

element-ui Cascader 级联选择器示例

<html> <head>test</head> <style> @import url("http://unpkg.com/[email protected]/lib/theme-chalk/index.css"); </style> <body> <script src="http://unpkg.com/vue/dist/vue.js"></script> <

基于Element UI Cascader 级联选择器的中国省市区级联数据

安装 npm install element-china-area-data -save 在线演示:https://plortinus.github.io/element-china-area-data/index.html github:https://github.com/airyland/china-area-data 引入 import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, 

Cascader 级联选择器hover选择效果

官网例子 <div class="block"> <span class="demonstration">hover 触发子菜单</span> <el-cascader v-model="value" :options="options" :props="{ expandTrigger: 'hover' }" 这样是不生效的 @change="handle

element ui 中的时间选择器,禁用今天以前的时间

<el-date-picker v-model="baseInfo.addTime" type="datetime" placeholder="选择时间" :picker-options="pickerOptions"></el-date-picker> pickerOptions: { disabledDate(time) { return time.getTime() < Date.now()

ElementUI Cascader 级联选择器 hover触发不好用以及图标不显示问题

如以上图中单选按钮没有出现 应该是elementUI 的版本比较低了 可以手动升级版本 进入package.json文件 将elementUI 的版本手动更改为最高版本 ,然后执行npn install命令即可. 原文地址:https://www.cnblogs.com/sky-zky/p/12530752.html

基于element ui的级联选择器组件实现的分类后台接口

今天在做资产管理系统的时候遇到一个分类的级联选择器,前端是用的element的组件,需要后台提供接口支持.     这个组件需要传入的数据结构大概是这样的,详细的可参考官方案例: [{ value: '1001', label: 'IT固定资产', children: [{ value: '100101', label: '服务器' }, { value: '100102', label: '笔记本' }, { value: '100103', label: '平板电脑' }, { value: