使用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 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
判断JS对象是否拥有某种属性的两种方式
Dec 02 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
js类式继承与原型式继承详解
Apr 07 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
vue实现广告栏上下滚动效果
Nov 26 Vue.js
修改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网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
JS中script标签defer和async属性的区别详解
2016/08/12 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
修改Nodejs内置的npm默认配置路径方法
2018/05/13 NodeJs
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Python多进程编程常用方法解析
2020/03/26 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
英国领先的在线高尔夫商店:Gamola Golf
2019/11/16 全球购物
经典c++面试题五
2014/12/17 面试题
最常使用的求职信
2014/05/25 职场文书
春节超市活动方案
2014/08/14 职场文书
鲁迅故居导游词
2015/02/05 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android