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

ShenNiusModularity项目源码学习(22:ShenNius.Admin.Mvc项目分析-7)

  角色列表页面用于新建、编辑、删除系统角色,同时设置角色的菜单访问权限。该页面对应的文件Index.cshtml位于ShenNius.Admin.Mvc项目的Areas\Sys\Views\Role内,同目录下还有Modify.cshtml(新建、编辑角色)、SetMenu.cshtml(设置角色的菜单权限),页面使用的控制器类RoleController.cs位于Areas\Sys\Controllers内,页面调用的WebApi接口是ShenNius.Admin.API项目内Controllers\Sys的RoleController.cs,主要使用其中的Deletes、SoftDelete、GetListPages、Add、Modify等函数。
在这里插入图片描述
  主页面布局比较简单,上方为工具栏,下面是数据表格显示区域。页面加载后,调用WebApi接口GetListPages分页获取已定义的角色数据。
在这里插入图片描述
  分别定义事件处理函数处理工具栏按钮点击事件及数据行中的按钮点击事件,新建和编辑按钮调用的都是Modify.cshtml页面,而删除按钮的话,点击工具栏中的删除按钮,处理逻辑是将选中的记录软删除,后续还能在回收站中恢复,而点击数据行中的删除按钮,则是直接删除数据库中的数据,无法恢复。
  Modify.cshtml页面布局比较简单,用的layui的表单样式,只是在点击“确认保存”按钮时根据是否存在角色id判断是新建(调用Add)还是编辑操作(调用Modify)。
在这里插入图片描述
在这里插入图片描述
  设置权限页面左侧显示当前角色能访问的菜单列表,打钩的即为可访问菜单,点击下方的“保存菜单权限”调用WebApi接口MenuController.AddPermissions保存当前角色的菜单列表。
在这里插入图片描述
在这里插入图片描述
  设置权限页面加载后,调用WebApi接口MenuController.TreeByRole函数通过ShenNius.Infrastructure项目的MenuRepository.TreeRoleIdAsync函数获取所有菜单列表及当前角色可用的菜单列表,用这些数据初始化页面左侧的树组件,同时调用WebApi接口MenuController.BtnCode函数初始化右侧的按钮列表。
  当勾选左侧的菜单节点时,会触发右侧表格组件的重加载事件,根据当前勾选的菜单显示当前角色在勾选菜单中的可用按钮设置。点击右侧表格中的操作列,设置某一按钮的操作权限,会实时调用WebApi接口MenuController.SetBtnPermissions保存当前页面中的按钮权限。
  权限设置方式用着不是很方便,右侧的按钮列表只有在左侧菜单节点勾选时才会重载,取消勾选或者点击菜单名称右侧的列表都不会刷新,最好能点击菜单名称就能重新加载右侧按钮列表。

在这里插入图片描述

参考文献:
[1]https://gitee.com/shenniu_code_group/shen-nius.-modularity

http://www.xdnf.cn/news/2301.html

相关文章:

  • 【深度强化学习 DRL 快速实践】稀疏奖励问题 sparse reward
  • 高中数学联赛模拟试题精选第17套几何题
  • C++中const的应用(1)之const 形参和实参以及成员函数的 const 和重载
  • 从循环角度分析逐位分离法
  • 形象的讲解什么是Gateway网关
  • leetcode110 平衡二叉树
  • Ubuntu 之软件包管理系统
  • 前端技术个人求职简历模板
  • new/delete 重载与对象池实现
  • 高性能电脑系统优化工具Advanced SystemCare PRO v18.3.0.240 解锁永久专业版
  • 学习Spire.Office for Java版本的科学实践
  • 栈与队列 Part 2
  • 【NeurlPS 2024】MAR:无矢量量化的自回归图像生成
  • Jquery -函数调用使用创建立即执行函数
  • 代码随想录回文子序列
  • MQL5教程 06 EA开发实战
  • 【免费项目分享】(项目加说明文档)基于Go语言的城市电动汽车充电桩管理系统设计与实现
  • 深度学习原理与Pytorch实战
  • B. And It‘s Non-Zero
  • 八、Constants(常量)
  • Spring 学习笔记之 @Transactinal实现原理
  • Loki日志体系的搭建
  • Linux: 如何在VMware上安装Ubuntu操作系统
  • Redis 数据类型全览:特性、场景与操作实例
  • 泽润新能IPO隐忧:募资缩水2亿元,毛利率两连降,内控存瑕疵?
  • Eigen稀疏矩阵类 (SparseMatrix)
  • VS2019 与gitcode团队管理
  • QT6 源(52)篇二:存储 c 语言字符串的类 QByteArray 的使用举例,
  • Git基本操作
  • 第34课 常用快捷操作——按“空格键”旋转图元