feature: 动态生成菜单栏
This commit is contained in:
@@ -1,3 +1,6 @@
|
||||
from collections import OrderedDict
|
||||
from copy import deepcopy
|
||||
|
||||
from flask import Blueprint, make_response, redirect, request
|
||||
from flask_jwt_extended import (
|
||||
create_access_token,
|
||||
@@ -10,7 +13,7 @@ from flask_jwt_extended import (
|
||||
)
|
||||
|
||||
from pear_admin.extensions import db
|
||||
from pear_admin.orms import UserORM
|
||||
from pear_admin.orms import RightsORM, UserORM
|
||||
|
||||
passport_api = Blueprint("passport", __name__)
|
||||
|
||||
@@ -46,3 +49,27 @@ def logout():
|
||||
unset_access_cookies(response)
|
||||
unset_refresh_cookies(response)
|
||||
return response
|
||||
|
||||
|
||||
@passport_api.get("/menu")
|
||||
@jwt_required()
|
||||
def menus_api():
|
||||
rights_orm_list = RightsORM.query.filter(RightsORM.type != "auth").all()
|
||||
rights_list = [rights_orm.menu_json() for rights_orm in rights_orm_list]
|
||||
rights_list.sort(key=lambda x: (x["pid"], x["id"]), reverse=True)
|
||||
|
||||
menu_dict_list = OrderedDict()
|
||||
for menu_dict in rights_list:
|
||||
if menu_dict["id"] in menu_dict_list.keys(): # 如果当前节点已经存在与字典中
|
||||
# 当前节点添加子节点
|
||||
menu_dict["children"] = deepcopy(menu_dict_list[menu_dict["id"]])
|
||||
menu_dict["children"].sort(key=lambda item: item["sort"])
|
||||
# 删除子节点
|
||||
del menu_dict_list[menu_dict["id"]]
|
||||
|
||||
if menu_dict["pid"] not in menu_dict_list:
|
||||
menu_dict_list[menu_dict["pid"]] = [menu_dict]
|
||||
else:
|
||||
menu_dict_list[menu_dict["pid"]].append(menu_dict)
|
||||
|
||||
return sorted(menu_dict_list.get(0), key=lambda item: item["sort"])
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
"image": "/static/admin/images/logo.png"
|
||||
},
|
||||
"menu": {
|
||||
"data": "/static/admin/data/menu.json",
|
||||
"data": "/api/v1/menu",
|
||||
"method": "GET",
|
||||
"accordion": true,
|
||||
"collapse": false,
|
||||
"control": false,
|
||||
"controlWidth": 500,
|
||||
"select": "10",
|
||||
"select": "126",
|
||||
"async": true
|
||||
},
|
||||
"tab": {
|
||||
@@ -20,7 +20,7 @@
|
||||
"preload": true,
|
||||
"max": "30",
|
||||
"index": {
|
||||
"id": "10",
|
||||
"id": "126",
|
||||
"href": "view/analysis/index.html",
|
||||
"title": "首页"
|
||||
}
|
||||
|
||||
+11
-10
@@ -1,27 +1,28 @@
|
||||
id,name,code,type,url,icon,status,sort,open_type,pid
|
||||
100,系统管理,ums:rights,menu,,layui-iconlayui-icon-set-fill,,2,,0
|
||||
101,权限管理,ums:rights:list,path,/rights,,,1,,100
|
||||
100,系统管理,ums:rights,menu,,layui-icon layui-icon-set-fill,,2,,0
|
||||
101,权限管理,ums:rights:list,path,/views/rights,layui-icon layui-icon-console,,1,,100
|
||||
102,新增权限,ums:rights:create,auth,,,,0,,101
|
||||
103,修改权限,ums:rights:update,auth,,,,0,,101
|
||||
104,获取权限,ums:rights:read,auth,,,,0,,101
|
||||
105,删除权限,ums:rights:delete,auth,,,,0,,101
|
||||
106,角色管理,ums:role,path,/role,,,2,,100
|
||||
106,角色管理,ums:role,path,/views/role,layui-icon layui-icon-console,,2,,100
|
||||
107,新增角色,ums:role:create,auth,,,,0,,106
|
||||
109,修改角色,ums:role:update,auth,,,,0,,106
|
||||
108,查询角色,ums:role:read,auth,,,,0,,106
|
||||
110,删除角色,ums:role:delete,auth,,,,0,,106
|
||||
111,部门管理,ums:department,path,/department,,,3,,100
|
||||
111,部门管理,ums:department,path,/views/department,layui-icon layui-icon-console,,3,,100
|
||||
112,新建部门,ums:department:create,auth,,,,0,,111
|
||||
113,修改部门,ums:department:update,auth,,,,0,,111
|
||||
114,删除部门,ums:department:delete,auth,,,,0,,111
|
||||
115,查询部门,ums:department:read,auth,,,,0,,111
|
||||
116,员工管理,ums:user,path,/user,,,4,,100
|
||||
116,员工管理,ums:user,path,/views/user,layui-icon layui-icon-console,,4,,100
|
||||
117,新增员工,ums:user:create,auth,,,,0,,116
|
||||
118,修改员工,ums:user:update,auth,,,,0,,116
|
||||
119,查询员工,ums:user:read,auth,,,,0,,116
|
||||
120,查询员工,ums:user:read,auth,,,,0,,116
|
||||
121,数据图表,,menu,,layui-iconlayui-icon-chart,,3,,0
|
||||
122,折线图,,path,/echarts/line,layui-iconlayui-icon-face-smile,,0,,121
|
||||
123,柱状图,,path,/echarts/column,layui-iconlayui-icon-face-smile,,0,,121
|
||||
124,工作空间,,menu,,layui-iconlayui-icon-console,,1,,0
|
||||
125,控制后台,,path,/person,layui-iconlayui-icon-console,,0,,124
|
||||
121,数据图表,,menu,,layui-icon layui-icon-chart,,3,,0
|
||||
122,折线图,,path,/views/echarts/line,layui-icon layui-icon-face-smile,,0,,121
|
||||
123,柱状图,,path,/views/echarts/column,layui-iconlayui-icon-face-smile,,0,,121
|
||||
124,工作空间,,menu,,layui-icon layui-icon-console,,1,,0
|
||||
125,工作台,,path,/view/console/index.html,layui-icon layui-icon-console,,2,_component,124
|
||||
126,首页,,path,/view/analysis/index.html,layui-icon layui-icon-console,,1,_component,124
|
||||
|
Reference in New Issue
Block a user