antd+vue:tree组件:父级节点禁止选择并不展示选择框——基础积累

antd+vue:tree组件:父级节点禁止选择并不展示选择框——基础积累

  • 1.判断哪些是父节点,给父节点添加`disabled`属性——this.permissionList是数据源
  • 2.通过css样式来处理`disabled`的父节点
  • 3.完整代码如下:

最近在写后台管理系统的时候,遇到一个需求:就是权限管理,一般权限管理根据功能分类,是会分不同级别的。

效果图如下:

在这里插入图片描述
今天后端提了一个需求,如下:就是无论是哪一层的父级节点,都不展示选择框,仅仅当作一个折叠项目展示。

原话:这一层权限能改成不需要勾选么?就当个分组用
在这里插入图片描述
最终的效果图如下:
在这里插入图片描述
解决思路:

1.判断哪些是父节点,给父节点添加disabled属性——this.permissionList是数据源

通过递归的方法来判断是否是父节点。

filterMenuList(arr, item) {arr.forEach((child) => {if (child.children && child.children.length > 0) {child.disabled = true;child = this.filterMenuList(child.children, item);}});return item;
},

使用递归方法:

this.permissionList.forEach((item) => {if (item.permissions && item.permissions.length > 0) {item = this.filterMenuList(item.permissions, item);}
});

通过上面的方法,可以给父节点添加disabled为true的属性了。
在这里插入图片描述

2.通过css样式来处理disabled的父节点

/deep/li.ant-tree-treenode-disabled> span.ant-tree-checkbox.ant-tree-checkbox-disabled {display: none !important;
}
/deep/.ant-treeli.ant-tree-treenode-disabled> .ant-tree-node-content-wrapper> span {color: rgba(0, 0, 0, 0.65) !important;
}

3.完整代码如下:

<template><a-modaltitle="编辑API权限":visible.sync="visible":width="800":maskClosable="true"@cancel="handleClose"@ok="handleSubmit"><div id="topId"></div><a-tabs tab-position="left"><a-tab-paneforceRenderv-for="(group, index) in permissionList":key="index + 1":tab="group.displayName"><a-treeref="permissionTree"v-model="group.value"checkablecheckStrictly:defaultExpandAll="true":treeData="group.permissions":replaceFields="replaceFields"@check="onCheck($event, group)"></a-tree></a-tab-pane></a-tabs></a-modal>
</template>
<script>
import { putApiPermission } from '@/services/menu';
export default {name: 'addPermissionList',components: {},data() {return {visible: false,loadLoading: false,permissionList: [],id: undefined,replaceFields: {value: 'permissionName',title: 'displayName',children: 'children',key: 'permissionName',},menuRoteIds: [],};},methods: {onCheck(obj, item) {item.value = obj.checked || [];this.$forceUpdate();},handleShow(row, permissionList) {this.visible = true;this.id = row.id;this.permissionList = [...permissionList];this.menuRoteIds = [...row.permissionNames];this.permissionList.forEach((item) => {item.value = [];if (this.menuRoteIds.includes(item.groupName)) {item.value.push(item.groupName);}if (item.permissions && item.permissions.length > 0) {item = this.filterMenuList(item.permissions, item);}});this.$nextTick(() => {document.getElementById('topId').scrollIntoView(true);});},filterMenuList(arr, item) {arr.forEach((child) => {if (this.menuRoteIds.includes(child.permissionName)) {item.value.push(child.permissionName);}if (child.children && child.children.length > 0) {child.disabled = true;child = this.filterMenuList(child.children, item);}});return item;},handleClose() {this.visible = false;},handleSubmit() {let arr = [];this.permissionList &&this.permissionList.forEach((item) => {arr = arr.concat(item.value);});let params = {permissionNames: arr || [],};this.loadLoading = true;putApiPermission(this.id, params).then(() => {this.$message.success('保存成功');this.$emit('ok');this.handleClose();}).finally(() => {this.loadLoading = false;});},},
};
</script>
<style scoped>
/deep/.ant-modal-body {height: 500px;overflow-y: auto;
}
/deep/li.ant-tree-treenode-disabled> span.ant-tree-checkbox.ant-tree-checkbox-disabled {display: none !important;
}/deep/.ant-treeli.ant-tree-treenode-disabled> .ant-tree-node-content-wrapper> span {color: rgba(0, 0, 0, 0.65) !important;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文物数字化建模纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、文物3D数字化建模的特点 文物埋在地下历经千年&#xff0c;由于时…

常见数据结构

数据结构概述 数据结构是计算机底层存储、组织数据的方式&#xff0c;是指数据相互之间是以什么方式排列在一起的。 通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。 栈 栈数据结构的执行特点&#xff1a;后进先出&#xff0c;先进后出。 栈模型…

基于ssm一中体育馆管理系统的设计与实现论文

镇赉县一中体育馆管理系统的设计与实现 摘要 随着信息互联网购物的飞速发展&#xff0c;一般有能力的机构管理系统。本文介绍了镇赉县一中体育馆管理系统的开发全过程。通过分析企业对于镇赉县一中体育馆管理系统的需求&#xff0c;创建了一个计算机管理镇赉县一中体育馆管理…

spring 笔记八 SpringMVC异常处理和SpringMVC拦截器

文章目录 SpringMVC拦截器拦截器&#xff08;interceptor&#xff09;的作用拦截器和过滤器区别拦截器是快速入门拦截器方法说明 SpringMVC拦截器拦截器&#xff08;interceptor&#xff09;的作用拦截器和过滤器区别拦截器是快速入门拦截器方法说明 SpringMVC异常处理异常处理…

为了吃鸡苦练狙击,避免坑队友自己造一个狙击游戏!

引言 一文教会你造一个简易的狙击游戏。 说到狙击&#xff0c;相信大家都不陌生&#xff0c;无论是影视作品还是网络游戏&#xff0c;都经常能看到狙击枪的身影&#xff0c;最深刻的是它能够从百里之外&#xff0c;一枪爆头。 本文将介绍如何在Cocos Creator中造一个简易的狙…

Axie Infinity 之后,Ronin 的潜力何在?

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;Ronin Dashboard 备受欢迎的 Web3 游戏 Pixels 在 2023 年 10 月下旬从 Polygon 迁移到了专为游戏设计的区块链 Ronin。Pixels 此前作为 Polygon 上活跃用户&#xff08;钱包数量&#xff09;最多的 Web3 游戏&…

『OPEN3D』1.5.2 动手实现点云栅格/体素最近邻

本专栏地址: https://blog.csdn.net/qq_41366026/category_12186023.html?spm=1001.2014.3001.5482 NEARBY6实现的voxel可视化 一种NEARBY14实现的可视化voxel

CT成像技术—20231210

本文要说的是扇束重排&#xff0c;对于扇束及锥束直接重建公式&#xff0c;可以看我做的PDF https://github.com/leslielee619/CTRec/blob/main/重建公式.pdf 在说重排之前&#xff0c;我还想对那个文件内容补充两点&#xff1a; 1、FDK算法或Feldkamp算法&#xff0c;出自Fel…

springAop有哪五种通知类型?可根据图标查看!

Spring AOP的通知类型有以下几种&#xff08;后面是图标变化&#xff09;&#xff1a; 1.Before通知&#xff1a; 在目标方法执行前执行。 上白下红&#xff0c;方法前执行。 2.After通知&#xff1a; 在目标方法执行后&#xff08;无论是否发生异常&#xff09;执行。 图标…

实验06:VLAN配置

1.实验目的&#xff1a; VLAN&#xff08;Virtual Local Area Network&#xff09;是一种通过逻辑方式而不是物理方式划分局域网的技术&#xff0c;可以提高网络性能、安全性和管理效率。VLAN的划分方法有基于端口、基于MAC地址、基于协议和基于IP组播等。VLAN之间的通信需要路…

第十一章 React 封装自定义组件

一、专栏介绍 &#x1f30d;&#x1f30d; 欢迎加入本专栏&#xff01;本专栏将引领您快速上手React&#xff0c;让我们一起放弃放弃的念头&#xff0c;开始学习之旅吧&#xff01;我们将从搭建React项目开始&#xff0c;逐步深入讲解最核心的hooks&#xff0c;以及React路由、…

2024 年值得收藏的 10 款 iPhone 数据恢复软件评论

iPhone 让您将数字生活装在口袋里。从您所爱之人的照片和视频&#xff0c;到与学校和工作相关的文档&#xff0c;再到重要的备忘录和日历约会&#xff0c;iPhone 内的微型存储芯片可以容纳的数据量是惊人的。 唯一的问题是&#xff0c;很快就会丢失这些数据。一次错误的点击或…