使用layui+ajax實現(xiàn)簡單的菜單權(quán)限管理及排序的方法
**簡單的例子使用的layui框架,并沒有使用他的ztree插件,只用ajax配合sql完成最簡單的一二級菜單權(quán)限控制及其排序功能。
先看數(shù)據(jù)庫設(shè)計:**
user表:
role表:
menu表:
user_role表:
role_menu表:
在這里 menu的id依然是主鍵,多了mid也就是菜單id,pare_menu_id也就是這個菜單對應(yīng)的父級菜單的菜單id(mid);沒有的話,就是0,也就是一級菜單,在這里,一級菜單的mid必須滿足為整千數(shù),或者萬也行,其子菜單在mid+999范圍內(nèi);
sql查詢結(jié)果:
前臺數(shù)據(jù)處理方法:
//菜單循環(huán)遍歷打印拼接操作 $(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++){ //繼續(xù)遍歷這幾條數(shù)據(jù) if(data[j].mid > data[i].mid && data[j].mid < (data[i].mid)+1000){ //取出這個父元素所對應(yīng)的子元素 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是默認排序
下面我們將用戶管理放在第一位??磮D
將order設(shè)置為一結(jié)果如圖:
這樣用戶管理就去了第一位;
sql實現(xiàn):
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,多表關(guān)聯(lián)查詢就可以了;(因為用的是sm框架單純的springMvc+mybatis+html)
關(guān)于權(quán)限,當然不同用戶看到的東西不同;至于菜單的權(quán)限,我是在role_menu表中加了status,默認都是0;admin用戶的都是1;因為如果是角色的菜單授權(quán)很麻煩;干脆都給他賦予權(quán)限,之不過狀態(tài)這里給她控制一下就可以了,也就是添加一個菜單,就給這個表每個角色添加一條數(shù)除admin其余為status=0;**
以上這篇使用layui+ajax實現(xiàn)簡單的菜單權(quán)限管理及排序的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript實現(xiàn)的可變動態(tài)數(shù)字鍵盤控件方式實例代碼
本篇文章主要介紹了JavaScript實現(xiàn)的可變動態(tài)數(shù)字鍵盤控件方式實例代碼,具有一定的參考價值,有興趣的可以了了解一下2017-07-07javascript跳轉(zhuǎn)與返回和刷新頁面的實例代碼
這篇文章主要介紹了javascript跳轉(zhuǎn)與返回和刷新頁面的實例代碼,簡單介紹了javascript中window.open()與window.location.href的區(qū)別,感興趣的朋友一起看看吧2019-11-11通過javascript的匿名函數(shù)來分析幾段簡單有趣的代碼
想起自己很久以前學(xué)習(xí)javascript的經(jīng)歷,也曾經(jīng)碰到過幾個由匿名函數(shù)造成的困擾(其中一個就是由閉包引起的),下面就整理幾段簡單代碼討論一下,讓我們大家一起進步。2010-06-06JS組件Bootstrap dropdown組件擴展hover事件
bootstrap的下拉組件,需要點擊click時,方可展示下拉列表。因此對于喜歡簡單少操作的大家來說,點擊一下多少帶來不便,因此,引入hover監(jiān)聽,鼠標經(jīng)過自動展示下拉框。這篇文章主要介紹了JS組件Bootstrap dropdown組件擴展hover事件,感興趣的小伙伴們可以參考一下2016-04-04微信小程序scroll-view橫向滑動嵌套for循環(huán)的示例代碼
這篇文章主要介紹了微信小程序scroll-view橫向滑動嵌套for循環(huán)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09使用Chrome調(diào)試JavaScript的斷點設(shè)置和調(diào)試技巧
這篇文章主要介紹了使用Chrome調(diào)試JavaScript的斷點設(shè)置和調(diào)試技巧,需要的朋友可以參考下2014-12-12