使用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 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
jquery 查找select ,并触发事件的实现代码
Mar 30 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
Dec 11 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
jqGrid用法汇总(全经典)
Jun 28 Javascript
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
Nov 28 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 Javascript
使用uni-app开发微信小程序的实现
Dec 13 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/03 新手入门
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
Python读写文件基础知识点
2019/06/10 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python实现canny边缘检测
2020/09/14 Python
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
应届电子商务毕业自荐书范文
2014/02/11 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
2014年度个人工作总结
2014/11/07 职场文书
家属慰问信
2015/02/14 职场文书
煤矿安全保证书
2015/02/27 职场文书
2016年五一促销广告语
2016/01/28 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书