【前端项目笔记】4 权限管理

权限管理

效果展示:
(1)权限列表
在这里插入图片描述
(2)角色列表
在这里插入图片描述
其中的分配权限功能
在这里插入图片描述

权限列表功能开发

新功能模块,需要创建新分支
git branch 查看所有分支(*表示当前分支)
git checkout -b rights 创建新分支rights并切换到该分支上
git push -u origin rights 把本地的rights分支推送到云端origin仓库进行保存分支名为rights

先创建对应的组件再创建对应的路由规则
在这里插入图片描述
在这里插入图片描述
结果展示
在这里插入图片描述

绘制权限列表的基本页面布局

面包屑导航+卡片视图(Table数据表格)
在这里插入图片描述

权限列表的数据获取

在这里插入图片描述

权限列表数据的表格渲染

在这里插入图片描述

角色列表功能开发

用户、角色、权限之间的关系

用户代表电商后台管理系统的每一个账号
权限代表账号所拥有的能力,对一个列表来说分为增删改查这些操作
角色代表不同用户拥有的不同权限
首先把权限分配给不同的角色,再把角色分配给对应的用户(把用户绑定了不同角色,每个角色下拥有不同权限)
在这里插入图片描述

角色列表路由切换

创建组件+创建对应路由规则
在这里插入图片描述
在这里插入图片描述

角色列表基础布局+获取角色列表相关数据

基础布局:
面包屑导航+卡片视图区域(添加角色按钮+Table列表)
在这里插入图片描述
获取角色列表数据
在这里插入图片描述

表格中角色列表数据的渲染

在这里插入图片描述
增删改查

添加角色:

  1. 点击按钮弹出添加角色的对话框并添加表单校验规则
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 添加角色表单关闭对话框后的重置
    在这里插入图片描述

  3. 添加角色前的表单预校验并实现真正的添加角色功能
    在这里插入图片描述在这里插入图片描述

修改角色:
4. 添加修改角色表单的内容并撰写对应验证规则
在这里插入图片描述
在这里插入图片描述
5. 展示修改角色的对话框
在这里插入图片描述
在这里插入图片描述
6. 修改表单后关闭对话框需要进行重置操作
在这里插入图片描述

  1. 预校验及修改角色信息操作
    在这里插入图片描述
    在这里插入图片描述

删除角色:
8. 在删除角色之前先弹出提示是否确认删除的对话框(弹框MessageBox)
在这里插入图片描述
9. 判断是否确认删除,确认发送delete请求(通过id删除用户),取消返回提示信息
在这里插入图片描述

角色下权限数据的渲染

pre标签,主要用来渲染带有转义字符的(空格符和换行符等) 的文本内容(字符串)

  1. 通过作用域插槽拿到scope.row,通过scope.row拿到对应的角色信息
  2. 通过三层for循环把对应的权限渲染出来,每循环一次往tag里放标签
    通过scope.row.children拿到一级权限
    在这里插入图片描述
    在正常形态下,:span默认为24。假如:span为12,那么就是原本列数的一半。
    一级权限的美化:
    在这里插入图片描述
    在这里插入图片描述
    二级权限及三级权限:
    在这里插入图片描述
    将一级权限和二级权限纵向居中
    在这里插入图片描述
    在这里插入图片描述
    为展开项中每一个权限标签增加一个删除小图标并实现删除权限功能:
    在这里插入图片描述

为每个标签添加closable属性,可定义标签是否可移除
在这里插入图片描述
首先设置第三权限的删除操作:
在这里插入图片描述
**☆优化点:**解决删除权限后关闭展开项无法及时看到删除哪项权限的问题。由于delete请求返回的data, 是当前角色下最新的权限数据,故可用res.children = res.data 为当前角色重新赋值权限,避免当前页面的完整渲染,提升用户体验。
在这里插入图片描述
为第二权限、第一权限增加删除功能:
在这里插入图片描述

分配权限功能的实现

弹出对话框,以树形结构获取所有权限数据:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在对话框中显示树形结构数据:
在这里插入图片描述
在这里插入图片描述
组件按需导入+全局注册:
在这里插入图片描述
树形控件基本展示:
在这里插入图片描述
进一步优化树形控件:

  1. 在每个节点前添加复选框show-checkbox
  2. 选中某节点时不能只是选中文本,要默认选中它的id值
    在这里插入图片描述3. 默认展开所有节点
    在这里插入图片描述
    在这里插入图片描述

已有权限在树上的默认勾选功能

在点按钮的同时,将当前角色的所有第三权限的id放到一个数组中,通过属性绑定将这个数组交给default-checked-keys
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以递归的方式获取第三权限的id:
在这里插入图片描述
在showSetRightDialog函数中调用getLeafKeys函数
在这里插入图片描述
在这里插入图片描述
解决bug:
关闭分配权限对话框未清空之前的权限数据,导致后面角色的对话框包含之前的数据(每次点开不同角色的分配角色对话框,数据越来越多)
解决方法:每次关闭对话框清空defKeys数组
在这里插入图片描述
在这里插入图片描述

具体分配权限的功能

  1. 在点击“分配权限”按钮时,先立即把该角色的id保存到data中供后面发送请求使用
    在这里插入图片描述
    在这里插入图片描述

  2. 点击“确定”按钮时,把所有全选中节点的id和半选中节点的id合并成完整数组
    tree组件中获取全节点和半节点的id值以数组形式返回的两个函数
    在这里插入图片描述
    在这里插入图片描述
    JavaScript中的三个点(…)扩展运算符是一种简写语法,用于取出参数对象的所有可遍历属性,值的集合,展开为函数参数列表或数组。
    在这里插入图片描述

  3. 把这个数组拼接形成字符串(中间以’,'拼接)发送角色授权的请求
    在这里插入图片描述

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

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

相关文章

审稿人:拜托,请把模型时间序列去趋势!!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 时间序列分析是数据科学中一个重要的领域。通过对时间序列数据的分析,我们可以从数据中发现规律、预测未来趋势以及做出决策…

web中间件漏洞-Resin漏洞-密码爆破、上传war

web中间件漏洞-Resin漏洞-密码爆破、上传webshell 使用爆破结果resin/resin进入后台,选择deploy。想部署webshell,得使用SSL方式请求,访问https://192.168.1.2:8443/resin-admin/index.php?qdeploy&s0(注:如果使用最新的火狐浏览器或者谷…

[论文笔记]Are Large Language Models All You Need for Task-Oriented Dialogue?

引言 今天带来论文Are Large Language Models All You Need for Task-Oriented Dialogue?的笔记。 主要评估了LLM在完成多轮对话任务以及同外部数据库进行交互的能力。在明确的信念状态跟踪方面,LLMs的表现不及专门的任务特定模型。然而,如果为它们提…

C语言中字符串处理函数

目录 前言 1. strlen 测字符串长度函数 2.字符串拷贝函数 2.1strcpy 2.2 strncpy 3.strcat字符串追加函数 4. strcmp/strncmp 比较函数 5.字符查找函数 5.1 strchr 5.2 strrchr 6.atoi/atol/atof字符串转换数值 总结 前言 从0开始记录我的学习历程,我会尽…

一小时搞定JavaScript(1)——JS基础

前言,本篇文章是依据bilibili博主(波波酱老师)的学习笔记,波波酱老师讲的很好,很适合速成!!! 本篇文章会与java进行对比学习,因为JS中很多语法和java是相同的,所以大家最好熟悉Java语言后再来进行学习,效果更佳,见效更快. 文章目录 1.基本语法1.1 JS语言的特点1.2 创建一个JS文…

开发一个软件自动运行工具不可缺少的源代码分享!

在软件开发领域,自动运行工具扮演着至关重要的角色,它们能够简化软件部署、提升运行效率,并在很大程度上降低人为操作失误的可能性。 而一个高效的自动运行工具的背后,往往是经过精心设计与实现的源代码在默默支撑,本…

如何解决资源管理器被结束任务后的问题,怎么重启或新建资源管理器任务?

服务器上运行的东西太多,修改个文件夹的名字导致卡死。结束任务后导致系统页面空白。(关闭了windows资源管理器) 按CtrlShiftDelete没有反应。 按CtrlShiftEsc没有反应。 按CtrlShiftEnd没有反应。 按CtrlALTEnd有反应。 (win2012) 输入…

贝锐蒲公英异地组网方案:实现制药设备远程监控、远程运维

公司业务涉及放射性药品的生产与销售,在全国各地拥有20多个分公司。由于药品的特殊性,在日常生产过程中,需要符合药品监管规范要求,对各个分部的气相、液相设备及打印机等进行监管,了解其运行数据及工作情况。 为满足这…

QT截图程序三-截取自定义多边形

上一篇文章QT截图程序,可多屏幕截图二,增加调整截图区域功能-CSDN博客描述了如何截取,具备调整边缘功能后已经方便使用了,但是与系统自带的程序相比,似乎没有什么特别,只能截取矩形区域。 如果可以按照自己…

conda创建虚拟环境报错解决

1.报错截图 2.解决办法 查看当前所有虚拟环境 conda env list 解决办法 解决方法 bash conda config --add channels conda-forge conda config --set channel_priority strict conda config --set channel_priority flexible

GitLab项目组相关操作(创建项目组Group、创建项目组的项目、为项目添加成员并赋予权限)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 君不见,黄河之水天上来,奔流到海不复回。 君不见,高堂明镜悲白发,朝如青丝暮成雪。 ——《将…

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 (1)灵活配置和个性化 (2)适应不同网络带宽,提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…

【Day01】0基础微信小程序入门-学习笔记

文章目录 今日学习目标小程序简介1. 小程序和普通网页开发的区别2. 体验小程序 第一个小程序1.第一个小程序-注册2.第一个小程序-安装开发者工具3.第一个小程序-创建小程序项目 小程序代码构成1.小程序代码构成-项目结构2. 小程序代码构成-JSON文件3. 小程序代码构成-WXML模板4…

【DKN: Deep Knowledge-Aware Network for News Recommendation】

DKN: Deep Knowledge-Aware Network for News Recommendation 摘要 在线新闻推荐系统旨在解决新闻信息爆炸的问题,为用户进行个性化推荐。 总体而言,新闻语言高度凝练,充满知识实体和常识。 然而,现有的方法并没有意识到这些外部…

Javase.String 类

String 类 【本节目标】1. String类的重要性2. 常用方法2.1 字符串构造2.2 String对象的比较2.3 字符串查找2.4 转化2.5 字符串替换2.7 字符串截取2.8 其他操作方法2.9 字符串的不可变性2.10 字符串修改 3. StringBuilder和StringBuffer3.2 面试题: 4. String类oj4.…

软件开发为什么写日志,怎样写日志,什么时候写日志?

目录 一、为什么需要写日志 二、什么时候写日志 三、日志是写给谁看的 四、日志里都要写什么 五、日志的组织形式应该怎样 六、综上所述 在软件系统中,记录日志是基本且必要的操作,这一点几乎是所有开发者的共识。各种编程语言中都有众多的日志框架…

基于MATLAB的误码率与信噪比(附完整代码与分析)

目录 一. 写在前面 二. 如何计算误码率 三. 带噪声的误码率分析 3.1 代码思路 3.2 MATLAB源代码及分析 四. 总结 4.1 输入参数 4.2 规定比特长度 4.3 特殊形式比较 一. 写在前面 (1)本文章主要讨论如何仿真误码率随着信噪比变化的图像 &#…

112、路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…

Java基础16(集合框架 List ArrayList容器类 ArrayList底层源码解析及扩容机制)

目录 一、什么是集合? 二、集合接口 三、List集合 四、ArrayList容器类 1. 常用方法 1.1 增加 1.2 查找 int size() E get(int index) int indexOf(Object c) boolean contains(Object c) boolean isEmpty() List SubList(int fromindex,int …

QT-QPainter实现一个可切换的开关控件

1、效果 2、核心代码 #ifndef SWITCH_H #define SWITCH_H #include <QWidget> #include <QTimer>