VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)

2023-11-01

产品需求:

  1. 最后一级节点中列表节点为必选项
  2. 勾选列表节点之外的同级节点,列表节点自动勾选
  3. 取消列表节点勾选,其他同级节点也取消勾选(即列表节点为必选项)
  4. 列表之外的节点可单独操作(勾选或取消勾选)

实现步骤:

HTML中定义:

<el-tree
   ref="tree"
   node-key="code"
   show-checkbox
   class="el-tree"
   :indent="0"
   :data="routeList"
   :props="defaultProps"
   :highlight-current="true"
   :default-expand-all="true"
   :expand-on-click-node="false"
   :render-content="renderContent"
   :default-checked-keys="menuIds"
   @check="handleCheckChange" //本次需求需要事件
   @node-expand="handleExpand"
 />

methods中定义:

setRequiredNodeChecked(data) {
      for (let i = 0; i < data.length; i++) {
        if (data[i].type) {
          this.$refs.tree.setChecked(data[i].code, true)
        }
      }
    },
    setNodeUnChecked(data) {
      for (let i = 0; i < data.length; i++) {
        this.$refs.tree.setChecked(data[i].code, false)
      }
    },
    fetchCheckedNodeParent(data, findKey, callback) {
      for (let i = 0; i < data.length; i++) {
        const item = data[i]
        if (item.code && item.code === findKey) {
          callback(data)
          return true
        }
        if (item.childrens && item.childrens.length) {
          const result = this.fetchCheckedNodeParent(item.childrens, findKey, callback)
          if (result) {
            return true
          }
        }
      }
      return false
    },
    checkRequired(currentData, checkedKeys, halfCheckedNodes) {
      const currentKey = currentData.code
      const currentType = currentData.type
      if (checkedKeys.includes(currentKey)) {
        // 当前选中
        this.fetchCheckedNodeParent(halfCheckedNodes, currentKey, this.setRequiredNodeChecked)
      } else if (currentType) {
        // 取消选中,但当前项是必选项(如果取消勾选的是列表,那么其余同级节点全部取消勾选)
        this.fetchCheckedNodeParent(halfCheckedNodes, currentKey, this.setNodeUnChecked)
      }
    },
    // 点击节点
    handleCheckChange(data, node) {
      this.checkRequired(data, node.checkedKeys, node.halfCheckedNodes)
    }

看效果:
在这里插入图片描述
勾选列表之外的节点,列表节点自动勾选(如果取消列表勾选,其他同级节点全部自动取消勾选),单独操作列表节点可正常勾选反选,亲测有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项) 的相关文章

随机推荐

  • PyCharm中导入库的方法

    两种方法 1 搜索添加 列表中是已经存在的库 若需要添加库 点击 搜索 待库安装完成 即可使用 2 利用终端命令 输入代码 回车 即可完成 numpy库为例 我的是已经存在了
  • 【抽样技术】CH2 简单随机抽样

    目录 前言 一 定义 二 概述 1 总体 2 单元 3 抽样比 4 样本抽取原则 5 在抽样理论中的地位与作用 三 参数估计 1 参数表示 2 对总体特征的估计思路 3 对总体均值的估计 1 引理 2 对总体均值的估计 4 方差和协方差的估
  • ROS2学习笔记(三)从turtlesim学习ROS2主题

    从turtlesim学习ROS2主题 前言 学习ROS2的路 并不能通过学习ROS1代替 因为ROS2的 内核 不同于ROS1 必须认认真真从头开始重新学习 Ubuntu版本 20 04 ROS版本 Foxy 学习笔记回顾 ROS2学习笔记
  • Teamviewer检测为商业用途的解决方案

    Teamviewer检测为商业用途的解决方案 注意 Teamviewer远程链接需要两台计算机参与 需要在两台计算机上都安装Teamviewer软件 所以在链接中出现被检测到商业用途 并不知道到底是哪一台计算机上的电脑出现问题 所以如果按照
  • solr之lucene全文检索的基本原理

    一 总论 根据http lucene apache org java docs index html定义 Lucene是一个高效的 基于Java的全文检索库 所以在了解Lucene之前要费一番工夫了解一下全文检索 那么什么叫做全文检索呢 这
  • 从零开始学matplotlib画图(三): 堆积图

    堆积图常用于综合展示不同分类的指标趋势以及它们的总和的趋势 比如说 我们想看一下过去二十年来中国人口总量的变化趋势 同时 我们又想看一下男 女性人口各自的变化趋势 甚至我们还想看一下它们各自占比的变化趋势 这时 我们就可以用堆积图来更高效
  • 空类中都有哪些东西

    定义一个空类 里面什么内容都没有 class A 想想看 它的大小应该是多少 要计算一个类对象的大小 要知道这么几点 类大小是非静态数据成员的类型大小之和 若类中定义了虚函数 需要考虑到虚表指针也占用类对象的内存空间 32位机器下占用四字节
  • matlab如何显示神经网络的均方误差,matlab神经网络工具箱

    1 输入nftool 点击next 2 输入特征X 和目标值Y如下 注意按行 按列 3 设置训练集 验证集 测试机比例 一般默认为0 7 0 15 0 15 4 设置隐藏层个数 需要调的参数之一 5 选择优化算法 默认如图 点击train进
  • sklearn学习笔记

    sklearn简介 2007年 数据科学家大卫 库尔纳佩 David Cournapeau 等人发起了机器学习的开源项目 sklearn 至今已逾十载 到目前为止 它已成为一款非常成熟的知名机器学习框架 sklearn 是一款开源的 Pyt
  • qt 简易画板换线宽

    画板如图所示 想实现线宽变化后 画图工具的线宽可以变化 主窗口是editpicture 画板为paintwidget 算是两个类之间传递数据 想用spinbox的valuechange信号 在主窗口中添加connect area为paint
  • 全国二等计算机,喜报丨热烈祝贺赵思哲同学获得2020全国青少年信息学奥林匹克联赛全国二等奖...

    日前 由CCF主办的2020全国青少年信息学奥林匹克联赛 NOIP 顺利举行 共有来自全国31个省市自治区 含港澳 的选手参赛 经过激烈角逐 我校2020级6班赵思哲同学取得了全国二等奖的优异成绩 全国青少年信息学奥林匹克联赛 NOIP 是
  • Entity Framework Core-数据库优先

    数据库优先是EF Core会根据数据库自动创建Entity Context 因此首先你得先创建数据库 我们通过一个Company数据库做个演示 1 SQL Server中创建数据库 在Visual Studio中打开View gt SQL
  • 模拟电子技术动画-PN结(动画是转的)内容再修改

    1 空穴和电子 动画中空穴是红的 电子是蓝的 其实我一直对空穴这个概念很抵触 因为从这个动画上来看空穴是不动的 但讲PN结 三极管的时候都会把空穴当成运动的载流子 虽然似乎也不是很难理解 标题 2 PN结 标题
  • 强大的BaseRecyclerViewAdapterHelper使用

    介绍 相信大家RecyclerView应该不会陌生 大多数开发者应该都使用上它了 它也是google推荐替换ListView的控件 但是用过它的同学应该都知道它在某些方面并没有ListView使用起来方便 需要我们额外的编写代码 今天就给大
  • postgresql模糊查询(like和~)引用变量

    群里看到关于变量替换语句的问题 兴趣来了就研究一下 过滤包含pg sleep的查询 拼接terminate backend命令 postgres set querystr pg sleep postgres echo querystr pg
  • 刷脸会员结合能力在场景中也在做深度应用

    技术的更新与升级 刷脸的之后 需要号码输入 许多人仍然觉得麻烦 对于是否可能技术升级的问题 零售行业负责人解释道 支付宝刷脸支付整个支付过程可以在10秒内完成 是普通消费者可以接受的时间 在目前阶段可以满足大部分消费者的支付需求 在支付快速
  • Unity中设置物体的透明度

    Unity中设置物体的透明度 Unity中设置物体的透明度 不要再用Metial aa new Metial 因为不再支持 改用matial color Color red 来进行相关设置 在ANDROID端基本是不支持的 PC端目前好像还
  • ProGuard代码混淆器如何使用

    一 概述 1 ProGuard简介 背景 ProGuard 是一个免费的 Java 类文件的压缩 优化 混肴器 它删除没有用的类 字段 方法与属性 使字节码最大程度地优化 使用简短且无意义的名字来重命名类 字段和方法 使用场景 我们在工程应
  • Idea系列文章2-依赖包的引入

    Idea系列文章 IDEA 全称 IntelliJ IDEA 是java编程语言开发的集成环境 IntelliJ在业界被公认为最好的java开发工具 尤其在智能代码助手 代码自动提示 重构 JavaEE支持 各类版本工具 git svn等
  • VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)

    产品需求 最后一级节点中列表节点为必选项 勾选列表节点之外的同级节点 列表节点自动勾选 取消列表节点勾选 其他同级节点也取消勾选 即列表节点为必选项 列表之外的节点可单独操作 勾选或取消勾选 实现步骤 HTML中定义