使用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 相关文章推荐
使用javascript实现Iframe自适应高度
Dec 24 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
Mar 26 Javascript
JavaScript类型系统之正则表达式
Jan 05 Javascript
JS简单随机数生成方法
Sep 05 Javascript
js querySelector() 使用方法
Dec 21 Javascript
通过sails和阿里大于实现短信验证
Jan 04 Javascript
JavaScript初学者必看“new”
Jun 12 Javascript
vue判断input输入内容全是空格的方法
Mar 02 Javascript
Node.js 使用jade模板引擎的示例
May 11 Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 Javascript
uni-app 组件里面获取元素宽高的实现
Dec 27 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 Javascript
修改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
中国的第一台收音机
2021/03/01 无线电
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
Laravel框架数据库CURD操作、连贯操作总结
2014/09/03 PHP
PHP使用JSON和将json还原成数组
2015/02/12 PHP
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
详解Python中heapq模块的用法
2016/06/28 Python
python numpy 按行归一化的实例
2019/01/21 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
党员转正党支部意见
2015/06/02 职场文书