当前位置: 首页 > news >正文

VUE3 + Elementui-Plus 之 树形组件el-tree 一键展开(收起);一键全选(不全选)

需求: 产品要求权限树形结构添加外部复选框进行全部展开或收起;全选或不全选。

实现步骤:
tree组件部分:

<div class="role-handle"><div>权限选择(可多选)</div><div><el-checkbox v-model="expandAll" @change="toggleExpandAll"> 展开/折叠 </el-checkbox><el-checkbox v-model="checkAll" @change="handleCheckAllChange"> 全选/全不选 </el-checkbox></div></div>
<el-treeref="treeRef"node-key="code"show-checkboxv-loading="loading"element-loading-text="权限资源加载中..."class="el-tree":indent="12":data="treeData":props="defaultProps":highlight-current="true":default-expand-all="false":expand-on-click-node="false":default-checked-keys="menuIds":default-expanded-keys="expandedKeys"@check="handleCheckChange"/>

ts部分:

const checkAll: any = ref(false);
const expandAll: any = ref(false);
//略去其他变量;可查看文档自行配置
// 展开
const toggleExpandAll = (type: any) => {//expandAll.value = type; 调整赋值位置checkbox卡顿明细减轻if (type) {expandAll.value = true;Object.values(treeRef.value.store.nodesMap).forEach((v: any) => v.expand());return;}expandAll.value = false;Object.values(treeRef.value.store.nodesMap).forEach((v: any) => v.collapse());
};
// 全选
const handleCheckAllChange = (val: any) => {setCheckedRecursive(treeData.value, val);
};
const setCheckedRecursive = (nodes: any, checked: any) => {for (const node of nodes) {treeRef.value.setChecked(node.code, checked);if (node.child && node.child.length > 0) {setCheckedRecursive(node.child, checked);}}
};

页面效果:
默认状态
在这里插入图片描述

展开状态
在这里插入图片描述

折叠状态
在这里插入图片描述

全选状态
在这里插入图片描述
全不选状态
在这里插入图片描述
注意:以上方法会展开或折叠所有节点;全选或全不选节点。
问题:数据量过大以上操作会有明显卡顿;有高效解决方法的朋友可以交流。
修改TODO:调整checkbox赋值世纪后,checkbox卡顿明细减轻。

http://www.lryc.cn/news/340777.html

相关文章:

  • 【Godot4自学手册】第三十七节钥匙控制开门
  • GitHub repository - Pulse - Contributors - Network
  • RocketMQ 10 面试题FAQ
  • 【Spring进阶系列丨第十篇】基于注解的面向切面编程(AOP)详解
  • Leetcode 152. 乘积最大子数组和Leetcode 162. 寻找峰值
  • 项目实战之网络电话本之发送邮件名片和导出word版个人信息
  • 前端面试问题汇总 - HTTP篇
  • Java的IO流
  • Node.js 中的 RSA 加密、解密、签名与验证详解
  • vue+element作用域插槽
  • MUSA模型
  • avicat连接异常,错误编号2059-authentication plugin…
  • 阿里云云效CI/CD配置
  • 个人开发者,Spring Boot 项目如何部署
  • 【Spring进阶系列丨第九篇】基于XML的面向切面编程(AOP)详解
  • 学习记录:转发和重定向
  • 实现(图像、视频等)数据上云存储
  • LeetCode 454.四数相加II
  • GoogleNet网络训练集和测试集搭建
  • 将数字状态码在后台转换为中文状态
  • 2017NOIP普及组真题 4. 跳房子
  • 网络与 Internet因特网的基本概念
  • vue-router 中 router-link 与 a 标签的区别
  • MySQL基础知识——MySQL事务
  • 【架构方法论(一)】架构的定义与架构要解决的问题
  • 基于springboot实现人口老龄化社区服务与管理系统项目【项目源码+论文说明】计算机毕业设计
  • 代码随想录算法训练营第三十七天| LeetCode 738.单调递增的数字、总结
  • C++动态内存管理 解剖new/delete详细讲解(operator new,operator delete)
  • python-re正则笔记0.2.0
  • .NET SignalR Redis实时Web应用