使用layui+ajax实现简单的菜单权限管理及排序的方法


Posted in Javascript onSeptember 10, 2019

**简单的例子使用的layui框架,并没有使用他的ztree插件,只用ajax配合sql完成最简单的一二级菜单权限控制及其排序功能。

先看数据库设计:**

user表:

使用layui+ajax实现简单的菜单权限管理及排序的方法

role表:

使用layui+ajax实现简单的菜单权限管理及排序的方法

menu表:

使用layui+ajax实现简单的菜单权限管理及排序的方法

user_role表:

使用layui+ajax实现简单的菜单权限管理及排序的方法

role_menu表:

使用layui+ajax实现简单的菜单权限管理及排序的方法

在这里 menu的id依然是主键,多了mid也就是菜单id,pare_menu_id也就是这个菜单对应的父级菜单的菜单id(mid);没有的话,就是0,也就是一级菜单,在这里,一级菜单的mid必须满足为整千数,或者万也行,其子菜单在mid+999范围内;

sql查询结果:

使用layui+ajax实现简单的菜单权限管理及排序的方法

前台数据处理方法:

//菜单循环遍历打印拼接操作
  $(function () {
  $.ajax( {
   url : projectName+'/sys/menu/findMenuByRole',
   type : 'post',
   dataType : 'json',
   success : function(data) {
   var menu = ""; //定义变量存储
   for(var i = 0;i<data.length;i++){
    menu += "<li class='layui-nav-item '>"
    if(data[i].pareMenuId == 0){ //取出父元素的菜单,拼进页面
    menu += "<a href='javascript:;'>"+data[i].menuName+"</a>"
    for(var j = 0;j<data.length;j++){ //继续遍历这几条数据
     if(data[j].mid > data[i].mid && data[j].mid < (data[i].mid)+1000){ //取出这个父元素所对应的子元素
     menu += "<dl class='layui-nav-child'>"
     menu += "<dd>"
     menu +=  "<a href='"+data[j].menuPath+"' target='option'>"+'     '+data[j].menuName+"</a>"
     menu += "</dd>"
     menu += "</dl>"
     }
    }
    }
    menu += "</li>";
   }
   $("#nav").html(menu);
   var element = layui.element;
   element.init()//初始化element事件,使菜单展开
   }
  });
  })

效果如下:

图1是默认排序

使用layui+ajax实现简单的菜单权限管理及排序的方法

下面我们将用户管理放在第一位。看图

使用layui+ajax实现简单的菜单权限管理及排序的方法

将order设置为一结果如图:

使用layui+ajax实现简单的菜单权限管理及排序的方法

这样用户管理就去了第一位;

sql实现:

SELECT
  t1.*
  FROM
  (
  SELECT
   sys_menu.id,
   sys_menu.mid,
   sys_menu.menu_name,
   sys_menu.menu_path,
   sys_menu.pare_menu_id,
   sys_menu.`status`,
   sys_menu.`order`,
   abc.`status` AS status2
  FROM
   sys_menu
  INNER JOIN (
   SELECT
   *
   FROM
   role_menu
   WHERE
   id IN (
    SELECT
    min(id)
    FROM
    role_menu
    GROUP BY
    role_id,
    menu_id
   )
   AND role_menu.`status` = 1
  ) abc ON abc.menu_id = sys_menu.id
  INNER JOIN sys_role ON sys_role.id = abc.role_id
  INNER JOIN user_role ON user_role.role_id = sys_role.id
  INNER JOIN sys_user ON sys_user.id = user_role.user_id
  WHERE
   sys_user.id = #{id}
  AND sys_menu.`status` = 1
  ORDER BY
   mid
  ) t1
 ORDER BY
  t1.pare_menu_id,
  t1.`order`;

**上图#{id}就是用户的id,多表关联查询就可以了;(因为用的是sm框架单纯的springMvc+mybatis+html)

关于权限,当然不同用户看到的东西不同;至于菜单的权限,我是在role_menu表中加了status,默认都是0;admin用户的都是1;因为如果是角色的菜单授权很麻烦;干脆都给他赋予权限,之不过状态这里给她控制一下就可以了,也就是添加一个菜单,就给这个表每个角色添加一条数除admin其余为status=0;**

以上这篇使用layui+ajax实现简单的菜单权限管理及排序的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery控制左右箭头滚动图片列表的实例
May 20 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
Jan 24 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
JS表的模拟方法
Feb 05 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
AngularJS通过$http和服务器通信详解
Sep 21 Javascript
Javascript 普通函数和构造函数的区别
Nov 05 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 Javascript
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
修改layui的后台模板的左侧导航栏可以伸缩的方法
Sep 10 #Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 #Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
Sep 10 #Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
Sep 10 #Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 10 #Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 #Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
Sep 10 #Javascript
You might like
php封装的smarty类完整实例
2016/10/19 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
js批量设置样式的三种方法不推荐使用with
2013/02/25 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
jQuery动态地获取系统时间实现代码
2013/05/24 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
Python3 replace()函数使用方法
2018/03/19 Python
python+flask实现API的方法
2018/11/21 Python
代码详解django中数据库设置
2019/01/28 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
德语专业求职信
2014/03/12 职场文书
房屋转让协议书
2014/04/11 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
迁户口计划生育证明
2014/10/19 职场文书
2015年财政所工作总结
2015/04/25 职场文书
社会实践活动总结格式
2015/05/11 职场文书
小学语文国培研修日志
2015/11/13 职场文书