使用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 相关文章推荐
如果文字过长,则将过长的部分变成省略号显示
Jun 26 Javascript
JavaScript 布尔操作符解析  &amp;&amp; || !
Aug 10 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
JavaScript常用的弹出广告及背投广告实现方法
Feb 06 Javascript
尝试动手制作javascript放大镜效果
Dec 25 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
JS脚本实现定时到网站上签到/签退功能
Apr 22 Javascript
纯js+css实现在线时钟
Aug 18 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 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
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
js操作iframe的一些方法介绍
2013/06/25 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
Python3写入文件常用方法实例分析
2015/05/22 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
python记录程序运行时间的三种方法
2017/07/14 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
django框架ModelForm组件用法详解
2019/12/11 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
暑期实践思想汇报
2014/01/06 职场文书
买房子个人收入证明
2014/01/16 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
实习生评语
2014/04/26 职场文书
企业读书活动总结
2014/06/30 职场文书
先进典型发言材料
2014/12/30 职场文书
旷课检讨书
2015/01/26 职场文书
党员承诺书范文2015
2015/04/27 职场文书
天堂的孩子观后感
2015/06/11 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
python pyhs2 的安装操作
2021/04/07 Python
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js