使用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 对Cookie 操作的封装小结
Dec 31 Javascript
javascript中的return和闭包函数浅析
Jun 06 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
jquery实现移动端点击图片查看大图特效
Sep 11 Javascript
JQuery实现的按钮倒计时效果
Dec 23 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 Javascript
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
微信小程序如何获取用户收货地址
Nov 27 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 Javascript
JavaScript定时器设置、使用与倒计时案例详解
Jul 08 Javascript
vscode 插件开发 + vue的操作方法
Jun 05 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
详解vue 组件
2020/06/11 Javascript
Python多进程原理与用法分析
2018/08/21 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python 实现自动导入缺失的库
2019/10/29 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
python FTP编程基础入门
2021/02/27 Python
CSS3实现时间轴特效
2020/11/02 HTML / CSS
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
护理专业推荐信
2013/11/07 职场文书
出纳岗位职责
2013/11/09 职场文书
海南地接欢迎词
2014/01/14 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
教师教育教学随笔
2015/08/15 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle