diff --git a/pear_admin/apis/passport.py b/pear_admin/apis/passport.py index 18bb95c..11caad1 100644 --- a/pear_admin/apis/passport.py +++ b/pear_admin/apis/passport.py @@ -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"]) diff --git a/static/config/pear.config.json b/static/config/pear.config.json index 1b2f74f..d8af15c 100644 --- a/static/config/pear.config.json +++ b/static/config/pear.config.json @@ -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": "首页" } diff --git a/static/data/ums_rights.csv b/static/data/ums_rights.csv index 4888aa2..8249d70 100644 --- a/static/data/ums_rights.csv +++ b/static/data/ums_rights.csv @@ -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 \ No newline at end of file +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 \ No newline at end of file