使用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 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
Prototype String对象 学习
Jul 19 Javascript
9个JavaScript评级/投票插件
Jan 18 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
Oct 10 Javascript
jQuery AJAX timeout 超时问题详解
Jun 21 Javascript
聊一聊Vue.js过渡效果
Sep 07 Javascript
Node.js Express 框架 POST方法详解
Jan 23 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
详解js创建对象的几种方法及继承
Apr 12 Javascript
JS async 函数的含义和用法实例总结
Apr 08 Javascript
javascript实现点击小图显示大图
Nov 29 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
Javascript Global对象
2009/08/13 Javascript
javascript Keycode对照表
2009/10/24 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
关于Layui Table隐藏列问题
2019/09/16 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
js+h5 canvas实现图片验证码
2020/10/11 Javascript
js实现扫雷源代码
2020/11/27 Javascript
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
django解决跨域请求的问题详解
2019/01/20 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
django实现更改数据库某个字段以及字段段内数据
2020/03/31 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
我的求职计划书
2014/01/10 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
求职意向书范文
2014/04/01 职场文书
办理房产过户的委托书
2014/09/14 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
会议通知
2015/04/15 职场文书
质检员工作总结2015
2015/04/25 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android