【共享单车】—— React后台管理系统开发手记:权限设置和菜单调整(未完)...
前言:以下内容基于React全家桶+AntD实战课程的学习实践过程记录。最终成果github地址:https://github.com/66Web/react-antd-manager,欢迎star。
一、创建角色
- 权限菜单设计:RBAC权限模型(详解链接)
- RBAC,即基于角色的访问控制(Role-Based Access Control),是优秀的权限控制模型
- 主要通过角色和权限建立管理,再赋予用户不同的角色,来实现权限控制的目标
- 角色列表展示:对应Easy Mock数据接口/role/list
{"code": 0,"list": {"item_list|7": [{"id|+1": 1,"role_name": /(管理人员)|(客服专员)|(财务专员)|(市场专员)|(人力专员)|(研发)|(测试)|(系统管理员)/,"status|0-1": 1,"authorize_user_name": "@cname","authorize_time": 1521270166000,"create_time": 1499305790000,"menus": ["/home", "/ui/buttons", "/ui/modals", "/ui/loadings", "/ui/notification", "/ui/messages", "/ui/tabs", "/ui/gallery", "/ui/carousel", "/ui"]}]},"page": 1,"page_size": 10,"total_count": 25,"page_count": 3 }
调用封装好的axios.requestList()获取角色数据
componentWillMount(){this.requestList(); }requestList = ()=>{axios.requestList(this, '/role/list', {}) }
使用封装好的ETable组件实现角色列表的展示
<div className="content-wrap"><ETableupdateSelectedItem={Utils.updateSelectedItem.bind(this)}selectedRowKeys={this.state.selectedRowKeys}dataSource={this.state.list}columns={columns}/> </div>
创建角色:Modal弹框中嵌入表单子组件
表单组件:RoleForm = Form.create({})(RoleForm)实现表单数据的双向绑定
// 角色创建 class RoleForm extends React.Component{render(){const { getFieldDecorator } = this.props.form;const formItemLayout = {labelCol: {span: 5},wrapperCol: {span: 16}};return (<Form layout="horizontal"><FormItem label="角色名称" {...formItemLayout}>{getFieldDecorator('role_name',{initialValue:''})(<Input type="text" placeholder="请输入角色名称"/>)}</FormItem><FormItem label="状态" {...formItemLayout}>{getFieldDecorator('state',{initialValue:1})(<Select><Option value={1}>开启</Option><Option value={0}>关闭</Option></Select>)}</FormItem></Form>);} } RoleForm = Form.create({})(RoleForm);
Modal弹框中应用表单组件:通过wrappedComponentRef={(inst) => this.roleForm = inst }获取表单元素的数据对象
<Modaltitle="创建角色"visible={this.state.isRoleVisible}onOk={this.handleRoleSubmit}onCancel={()=>{this.roleForm.props.form.resetFields();//表单重置this.setState({isRoleVisible:false})}}><RoleForm wrappedComponentRef={(inst) => this.roleForm = inst }/> </Modal>
点击【创建角色】按钮弹出弹框:给onClick事件绑定this.handleRole(),设置this.state.isRoleVisible为true
点击【OK】提交创建角色:给onOk事件绑定this.handleRoleSubmit()。①通过this.roleForm.props.form.getFieldsValue()获取表单的值,赋给params;②接口访问成功后,关闭弹框,刷新列表数据。
// 角色提交 handleRoleSubmit = ()=>{let data = this.roleForm.props.form.getFieldsValue(); //获取表单的值axios.ajax({url:'role/create', //Easy Mock中只有{"code": 0}data:{params:{...data}}}).then((res)=>{if(res.code === 0){this.setState({isRoleVisible:false //关闭弹框})this.requestList(); //刷新列表数据}}) }
二、设置权限
- 设置权限表单组件 :AntD Tree树形结构组件的使用
- TreeNode树形节点:const TreeNode = Tree.TreeNode;
- 加载完整的权限列表:本地定义menuConfig.js权限列表文件,通过递归方法渲染TreeNode
import menuConfig from '../../config/menuConfig'renderTreeNodes = (data,key='') => {return data.map((item) => {let parentKey = key+item.key;if (item.children) {return (<TreeNode title={item.title} key={parentKey} dataRef={item} className="op-role-tree">{this.renderTreeNodes(item.children,parentKey)}</TreeNode>);} else if (item.btnList) {return (<TreeNode title={item.title} key={parentKey} dataRef={item} className="op-role-tree">{ this.renderBtnTreedNode(item,parentKey) }</TreeNode>);}return <TreeNode {...item} />;}); };renderBtnTreedNode = (menu,parentKey='')=> {const btnTreeNode = []menu.btnList.forEach((item)=> {// console.log(parentKey+'-btn-'+item.key);btnTreeNode.push(<TreeNode title={item.title} key={parentKey+'-btn-'+item.key} className="op-role-tree"/>);})return btnTreeNode; }<Tree checkabledefaultExpandAll><TreeNode title="平台权限" key="platform_all">{this.renderTreeNodes(menuConfig)}</TreeNode> </Tree>
- Modal弹框中应用表单组件:
- 点击【设置权限】按钮弹出弹框:判断若没有this.state.selectedItem,提示需“选择”
//权限设置 handlePermission = ()=>{if (!this.state.selectedItem) {Modal.info({title: '信息',content: '请选择一个角色'})return;}this.setState({isPermVisible: true,detailInfo: this.state.selectedItem //角色详细信息});let menuList = this.state.selectedItem.menus; //角色权限this.setState({menuInfo:menuList}) }
- 点击【OK】提交权限:给onOk事件绑定this.handlePermEditSubmit()
三、菜单调整
四、用户授权
注:项目来自慕课网
转载于:https://www.cnblogs.com/ljq66/p/10232666.html
【共享单车】—— React后台管理系统开发手记:权限设置和菜单调整(未完)...相关推荐
- 【开发篇】10分钟快速搭建React后台管理系统模板
React后台管理系统模板 github 我又回来了!!!学完前端react,再学spring,这周或者下周写spring有关的!!! 一.准备React 1.建立react应用 npx create ...
- 视频教程-SSM后台管理系统开发实战-Java
SSM后台管理系统开发实战 5年IT从业经验,目前职位是Java高级工程师.架构师,在gitchat发布有<SSM博客系统开发实战>达人课,CSDN博客专家,博客专栏作者,梦境网项目独立开 ...
- 【SpringBoot】33、SpringBoot+LayUI后台管理系统开发脚手架
Asurplus-Vue:[SpringBoot]五十四.SpringBoot+VUE后台管理系统开发脚手架 本期给大家推荐我自己写一个开源项目:Asurplus-LayUI,本着减少大量重复开发工作 ...
- SSM后台管理系统开发实战
一.简介: 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建.功能实现到最后的Linux系统部署全过程.本课程使用SpringMVC + Spring + Mybatis作为主体框架 ...
- 大事件后台管理系统开发实战(下)
文章目录 续前篇:大事件后台管理系统开发实战(中) 1. 文章类别 1.1 点击编辑按钮展示修改文章分类的弹出层 1.2 为修改文章分类的弹出层填充表单数据 1.3 更新文章分类的数据 1.4 删除文 ...
- Vue 2.x 实战之后台管理系统开发(二)
1. 导语 承接上文:Vue 2.x 实战之后台管理系统开发(一) 在上一篇文章中,我详细叙述了如何创建项目框架和引入各种后台常用插件,做好这些准备工作后,我们就可以着手进行页面的开发了.在开发过程中 ...
- 从头开始react后台管理系统-安装ant-Design
从头开始react后台管理系统-安装ant-Design introduce 在做微信小程序, 想着顺便做一个管理系统的 随便扯扯 我是个菜鸡,很菜很菜的菜鸡,春招各家凉,现在还是0offer.心情很 ...
- Thinkphp实战教程后台管理系统开发
目录 ├─Thinkphp5 后台管理开发.png ├─Thinkphp5 后台管理开发.xmind ├─Thinkphp实战教程后台管理系统开发-1.课程介绍及大纲.mp4 ├─Thinkphp实战 ...
- React后台管理系统-品类选择器二级联动组件
React后台管理系统-品类选择器二级联动组件 品类选择器二级联动 posted on 2018-06-26 22:21 gisery 阅读( ...) 评论( ...) 编辑 收藏
最新文章
- C++知识点37——拷贝构造函数
- DPDK — PDUMP 抓包工具
- Boost.MultiIndex 复合键的例子
- .NET Core 3.0之深入源码理解Startup的注册及运行
- opensource项目_最佳Opensource.com:政府
- 违法收集使用个人信息 抖音、快手、猎聘等105款App被点名
- 通过yum安装php7
- vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
- 单体应用架构和微服务架构的区别
- 堆-动态的排序(洛谷1801-黑匣子)
- dax powerbi 生成表函数_如何用Power BI对数据建模?
- elm的 java包_Elm架构
- time.h中定义的函数
- weblogic部署springboot项目
- java多线程listview_Android_listview分页加载更多
- 9. 面向对象基础(下)
- 图书信息管理系统 数据结构 C语言版
- Fidder快速上手使用
- 中兴通讯年报或亏损29亿 (zz)
- C# Websocket连接(wss)
热门文章
- vue指令:v-cloak渲染指令(v-cloak 指令是解决屏幕闪动的好方法)
- ubuntu21.04中文冒号变乱码问题解决
- hbase 2.2.6表及数据的增删改查命令行示例
- Linux使用ffmpeg合并视频
- 解决git bash右键菜单消失的问题
- Python Django jsonpickle序列化隐藏部分字段代码示例
- python3多个变量赋值
- Linux shell逻辑运算
- 卡尔曼滤波、粒子滤波【通俗解释】
- 张新、黎民、王亮三位老师分别来自湖南、广西、甘肃,分别教语文、数学和英语。已知:(1)张新不是湖南人,黎明不是广西人;(2)湖南的老师不教英语;(3)广西的老师教语文;(4)黎民不教数学。由此可知,王