element-ui出的treeselect下拉树组件基本使用,以及只能选择叶子节点的功能,给节点添加按钮操作

news2024/11/27 20:32:00

element-ui出的treeselect下拉树组件基本使用:Vue通用下拉树组件@riophae/vue-treeselect的使用-CSDN博客

vue-treeselect 问题合集、好用的树形下拉组件(vue-treeselect的使用、相关问题解决方案)-CSDN博客

需求1:treeselect下拉树组件只能选择叶子节点,其他父节点均为点击展开功能(不选中)

v-model绑定的值要设为null,不能设为'' ,否则会回显unknown 

options属性为绑定的树

normalizer就是把我们自己的后端返的数据格式按树插件需要的格式转换 ;

@select为选中某个节点时触发,

disable-branch-nodes属性是禁用节点属性(针对需求1这个属性一定要设置,否则不生效)

             <treeselect
                v-model="partId"
                :options="icdTree"
                :normalizer="tenantIdnormalizerPart"
                noOptionsText="暂无数据"
                placeholder="请选择"             
                @select="partChange"
                :disable-branch-nodes="true">
              </treeselect>
        //获取tree数据时,就要递归tree标记叶子节点了
        getIcdDict({level:1}).then(res => {
          const temp = res.data
          this.markLeafNodes(temp)
          this.icdTree = temp
          let findItem = this.getNode(this.icdTree,'diagnosisId',curBtn[0].searchKey.bodyId[0])
          this.partId = findItem.diagnosisId
        }),
        //标记叶子节点方法
        markLeafNodes(list) {
          list.forEach(item => {
            item.show = false
            if(item.children.length == 0){
              item.isLeaf = true
            }else{
              this.markLeafNodes(item.children)
            }
          })
        },
        //递归tree找到某个节点对象
        getNode(data, key, value) {
          let result = null;
          let fn = function (d) {
            if (Array.isArray(d)) { // 判断是否是数组
                for (let i = 0; i < d.length; i++) {
                  const e = d[i];
                  if (e[key] == value) { // 数据循环每个子项,并且判断子项下边是否有id值
                      result = e; // 返回的结果等于每一项
                      break;
                  } else if (e.children) {
                      fn(e.children); // 递归调用下边的子项
                  }
                }
            }
          }
          fn(data); // 调用一下
          return result;
        },
        tenantIdnormalizerPart(node, instanceId) {
          if (node.children && !node.children.length) {
            delete node.children; 
          }
          //这里判断node节点如果是叶子节点,则设置当前节点的isDisabled属性为false(节点不禁用,可选)
          if(node.isLeaf){
            node['isDisabled'] = false;
          }
          return {
            id: node.diagnosisId,
            label: node.diagnosisContent,
            children: node.children,
          };
        },

需求2:treeselect下拉树组件叶子节点添加按钮功能

参考文章:12.element-ui组件 el-tree 树菜单 鼠标滑过mouseenter,mouseleave移入移出节点,显示操作按钮 新增,删除等(element)_el-tree-select 鼠标移入事件-CSDN博客 

需要用到treeselect组件的插槽:slot="option-label",

插槽slot=“option-label” 是下拉框的值,

插槽slot=“value-label” 是输入框回显的值,

接上面代码

              <treeselect
                v-model="partId"
                :options="icdTree"
                :normalizer="tenantIdnormalizerPart"
                noOptionsText="暂无数据"
                placeholder="请选择"             
                @select="partChange"
                :disable-branch-nodes="true">
                    <div slot="option-label" slot-scope="{ node}" @mouseover="handleMsenter(node)" @mouseleave="handleMsLeave(node)">
                  <span>
                    <span>{{ node.label }}</span>
                    <span v-show="node.show && node.isLeaf" size="small" type="text" style="margin-left:50px;color:#1890ff" @mousedown="msAdd(node)">添加</span>
                  </span>
                </div>
              </treeselect>
//注意此处添加按钮如果使用el-button,和@click事件,那么点击事件是不会被触发的,此处使用span标签+@mousedown事件,就可以成功触发事件。

    handleMsenter(node){
      this.$set(node,'show',true)
    },
    handleMsLeave(node){
      this.$set(node,'show',false)
    },
    msAdd(node){
      //添加事件todo....
    },
   

    

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1530432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构和算法模块——队列(多例子+图文)

一文帮你看懂队列 什么是线性表为什么要学习线性表&#xff0c;它有什么用处和好处&#xff1f;基本概念分类存储结构结构特点 队列为什么要学习队列&#xff1f;基本概念数据结构基本操作 待填坑 什么是线性表 为什么要学习线性表&#xff0c;它有什么用处和好处&#xff1f;…

【测试开发学习流程】MySQL函数运算(中)(下)

前言&#xff1a; 这些天还要搞毕业论文&#xff0c;东西少了点&#xff0c;大家将就看看QWQ 目录 1 MySQL的数据处理函数 1.1 文本处理函数 1.2 日期与时间函数 1.3 数值处理函数 1.4 系统函数 2 聚集运算 2.1 聚集函数 2.2 流程函数 1 MySQL的数据处理函数 MySQL支…

云手机在海外电商中的应用优势

随着海外市场的不断拓展&#xff0c;电商行业对于高效、安全的工具需求日益增长。在这一背景下&#xff0c;云手机作为一种新型服务&#xff0c;为海外电商提供了强大的支持和便利。云手机对传统物理手机起到了非常好的延展和补充作用&#xff0c;拓展了更广泛的应用场景&#…

windows管理github代码

资料 windows SSH下载github

【数字IC/FPGA】书籍推荐(0)----《Verilog 传奇--从电路出发的HDL代码设计》

在下这几年关于数字电路、Verilog、FPGA和IC方面的书前前后后都读了不少&#xff0c;发现了不少好书&#xff0c;也在一些废话书上浪费过时间。接下来会写一系列文章&#xff0c;把一部分读过的书做个测评&#xff0c;根据个人标准按十分制满分来打分并分享给大家。 定位 书名…

游戏反云手机检测方案

游戏风险环境&#xff0c;是指独立于原有设备或破坏设备原有系统的环境。常见的游戏风险环境有&#xff1a;云手机、虚拟机、虚拟框架、iOS越狱、安卓设备root等。 这类风险环境可以为游戏外挂、破解提供所需的高级别设备权限&#xff0c;当游戏处于这些风险环境下&#xff0c…

<深度学习初识>——《深度学习笔记》

深度学习笔记 一、人工智能简介 1.人工智能发展的重要时间节点 1.1人工智能孕育期 1.2人工智能诞生期 1.3人工智能第一次浪潮的发展 1.4人工智能的第一次寒冬 第一次寒冬主要面临的几个问题&#xff1a; 1.5人工智能第二次浪潮的发展 1.6人工智能的第二次寒冬 1.7人工智能第…

FREERTOS队列集和事件标志组

队列集 一个队列只允许任务间传递的消息为同一种数据类型&#xff0c;如果需要在任务间传递不同数据类型的消息时&#xff0c;那么就可以使用队列集&#xff01; 作用&#xff1a;用于对多个队列或信号量&#xff08;信号量本质上也是个队列&#xff09;进行“监听”&#xff…

python(Django)之登录功能实现

1、创建登陆函数 def login(request):if request.POST:username password username request.POST.get(username)password request.POST.get(password)user auth.authenticate(usernameusername, passwordpassword)if user is not None and user.is_active:auth.login(req…

医药工厂5G智能制造数字孪生可视化平台,推进医药企业数字化转型

医药工厂5G智能制造数字孪生可视化平台&#xff0c;推进医药企业数字化转型。随着科技的不断发展&#xff0c;数字化转型已成为医药企业不可或缺的一部分。5G智能制造医药工厂数字孪生可视化平台作为数字化转型的重要工具&#xff0c;正在逐步改变医药企业的生产方式和管理模式…

MATLAB:函数与数值积分

一、数学函数图像的绘制 clc,clear fh (x)2*exp(-x).*sin(x); Xrange [0,8]; gx (x)3*exp(-x)*0.8.*sin(x); fplot(fh,Xrange,r-*,LineWidth,1.5) hold on grid on fplot(gx,Xrange,b-o,LineWidth,1.5) axis([-0.5,8.5,-0.1,0.85]) legend(fh (x)2*exp(-x).*sin(x),gx (x…

QB PHP 多语言配置

1&#xff1a; 下载QBfast .exe 的文件 2&#xff1a; 安装的时候 &#xff0c;一定点击 仅为我 安装 而不是 所有人 3&#xff1a; 如果提示 更新就 更新 &#xff0c; 安装如2 4&#xff1a; 如果遇到 新增 或者编辑已经 配置的项目时 不起作用 &#xff1a; 右…

【Linux】编译器-gcc/g++的使用(预处理、编译、汇编、连接)

目录 01.预处理&#xff08;宏替换&#xff09; 02.编译&#xff08;生成汇编&#xff09; 03.汇编&#xff08;生成机器可识别码&#xff09; 04.连接&#xff08;生成可执行文件或库文件&#xff09; 05.选项 编译器在编译代码时包含以下四个步骤&#xff1a;1.预处理 2…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记15_虚拟助手

1. 虚拟助手 1.1. 站在全球视角&#xff0c;这些公司是&#xff1a;亚马逊、脸书、谷歌和苹果 1.1.1. 苹果的Siri 1.1.2. 亚马逊的Alexa 1.1.3. 脸书Messenger应用上的M 1.1.4. 谷歌语音助手Assistant 1.2. 借由人工智能技术&#xff0c;虚拟助手将对用户的个人电子档案、…

机器学习 - 选择模型

接着这一篇博客做进一步说明&#xff1a; 机器学习 - 准备数据 PyTorch moduleExplaintorch.nnContains all of the building blocks for computational graphs (essentially a series of computations executed in a particular way). nn 模块为用户提供了丰富的神经网络组件…

【软件】项目管理工具focalboard使用docker部署

github官方网址 使用宝塔进入docker从官方进行镜像仓库拉去mattermost/focalboard 容器》添加容器》容器名》镜像》暴露端口》加号》添加 注意的是原始容器端口号为8000和9092

Vue使用qrcodejs2实现生成二维码

Vue使用qrcodejs2实现生成二维码示例 业务需求 比如说我们需要对下方的列表数据访问地址列进行生成二维码&#xff0c;扫描后跳转对应的地址。 安装qrcodejs2依赖 npm i qrcodejs2引用 在我们需要使用的页面进行引用qrcodejs2 import QRCode from qrcodejs2定义我们的二维…

业务服务:redisson

文章目录 前言一、配置1. 添加依赖2. 配置文件/类3. 注入redission3. 封装工具类 二、应用1. RedisUtils工具类的基本使用 三、队列1. 工具类2. 普通队列2. 有界队列&#xff08;限制数据量&#xff09; 前言 redission是一个开源的java redis的客户端&#xff0c;在其基础上进…

备战蓝桥杯---牛客寒假训练营2VP

题挺好的&#xff0c;收获了许多 1.暴力枚举&#xff08;许多巧妙地处理细节方法&#xff09; n是1--9,于是我们可以直接暴力&#xff0c;对于1注意特判开头0但N&#xff01;1&#xff0c;对于情报4&#xff0c;我们可以把a,b,c,d的所有取值枚举一遍&#xff0c;那么如何判断有…

机器学习——编程实现从零构造训练集的决策树

自己搭建一棵决策树【长文预警】 忙了一个周末就写到了“构建决策树”这一步&#xff0c;还没有考虑划分测试集、验证集、“缺失值、连续值”&#xff0c;预剪枝、后剪枝的部分&#xff0c;后面再补吧&#xff08;挖坑&#xff09; 第二节内容&#xff1a;验证集划分\k折交叉…