|
@@ -13,6 +13,8 @@ from utils.ry_system_util import *
|
|
|
import json
|
|
|
from sqlalchemy.sql import func
|
|
|
from common.auth_user import *
|
|
|
+import traceback
|
|
|
+
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
@@ -122,72 +124,63 @@ async def getRouters(request: Request, db: Session = Depends(get_db),
|
|
|
def build_menu_tree(menus, parent_menu):
|
|
|
menu_tree = [] # 初始化一个列表来存储菜单树结构
|
|
|
for menu in menus:
|
|
|
+ menu_data = {
|
|
|
+ "component":menu.component or 'Layout',
|
|
|
+ "hidden":menu.visible == '1',
|
|
|
+ "name":menu.path,
|
|
|
+ "path":'/'+menu.path,
|
|
|
+ "redirect":'noRedirect',
|
|
|
+ # "alwaysShow":True,
|
|
|
+ "meta":{
|
|
|
+ "title":menu.menu_name,
|
|
|
+ 'icon' : menu.icon,
|
|
|
+ 'noCache' : menu.is_cache == '1',
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
if menu.is_frame==0:
|
|
|
- menu_data = Router_frame(
|
|
|
- component=menu.component or 'Layout',
|
|
|
- hidden=menu.visible == '1',
|
|
|
- name=menu.path,
|
|
|
- path='/'+menu.path,
|
|
|
- meta = Meta(
|
|
|
- title=menu.menu_name,
|
|
|
- icon=menu.icon,
|
|
|
- noCache=menu.is_cache == '1',
|
|
|
- link = menu.path
|
|
|
- ),
|
|
|
- children=[]
|
|
|
- )
|
|
|
- else:
|
|
|
- menu_data = Router(
|
|
|
- name=menu.path,#menu.menu_name,
|
|
|
- path='/'+menu.path,
|
|
|
- hidden=menu.visible == '1',
|
|
|
- component=menu.component or 'Layout',
|
|
|
- meta=Meta(
|
|
|
- title=menu.menu_name,
|
|
|
- icon=menu.icon,
|
|
|
- noCache=menu.is_cache == '1'
|
|
|
- ),
|
|
|
- children=[] # 初始化 children 列表,即使没有子菜单
|
|
|
- )
|
|
|
+ menu_data['meta']['link']=menu.path
|
|
|
+
|
|
|
# 如果菜单有子菜单,则递归构建子菜单
|
|
|
if menu.menu_type == 'M': # 假设 'M' 表示目录类型
|
|
|
- query = db.query(SysMenu)
|
|
|
- query = query.filter_by(parent_id=menu.menu_id)
|
|
|
- query = query.filter(SysMenu.del_flag != '2')
|
|
|
+ # query = db.query(SysMenu)
|
|
|
+ # query = query.filter_by(parent_id=menu.menu_id)
|
|
|
+ # query = query.filter(SysMenu.del_flag != '2')
|
|
|
# children_menus = db.query(SysMenu).filter_by(parent_id=menu.menu_id).all()
|
|
|
- children_menus = query.all()
|
|
|
- menu_data.children = build_menu_tree(children_menus, menu)
|
|
|
+ # children_menus = query.all()
|
|
|
+ # menu_data['redirect'] ='noRedirect'
|
|
|
+ menu_data['alwaysShow'] =True
|
|
|
+ children_menus = parent_id_get_menu_info(db,menu.menu_id)
|
|
|
+ if len(children_menus)>0:
|
|
|
+ menu_data['children'] = build_menu_tree(children_menus, menu)
|
|
|
+
|
|
|
else:
|
|
|
- del menu_data.children #没有子菜单,删除children 列表
|
|
|
- del menu_data.redirect
|
|
|
- del menu_data.alwaysShow
|
|
|
- menu_data.path = menu_data.path[1:]
|
|
|
- print(menu_data)
|
|
|
+ menu_data['path'] = menu_data['path'][1:]
|
|
|
menu_tree.append(menu_data) # 将当前菜单数据添加到菜单树列表
|
|
|
return menu_tree
|
|
|
|
|
|
# 构建顶级菜单的树形结构
|
|
|
routers = build_menu_tree(menus, None)
|
|
|
# routers_dict = [router.dict() for router in routers]
|
|
|
- routers_dict = []
|
|
|
- for router in routers:
|
|
|
- router_info = router.dict()
|
|
|
- if len(router_info['children'])==0:
|
|
|
- del router_info['children']
|
|
|
- del router_info['redirect']
|
|
|
- del router_info['alwaysShow']
|
|
|
- router_info['path'] = router_info['path'] #[1:]
|
|
|
-
|
|
|
- routers_dict.append(router_info)
|
|
|
+ # routers_dict = []
|
|
|
+ # for router in routers:
|
|
|
+ # router_info = router.dict()
|
|
|
+ # if len(router_info['children'])==0:
|
|
|
+ # del router_info['children']
|
|
|
+ # del router_info['redirect']
|
|
|
+ # del router_info['alwaysShow']
|
|
|
+ # router_info['path'] = router_info['path'] #[1:]
|
|
|
+ #
|
|
|
+ # routers_dict.append(router_info)
|
|
|
# 返回构建好的路由数据
|
|
|
return {
|
|
|
"code": 200,
|
|
|
"msg": "操作成功",
|
|
|
- "data": routers_dict #[router.dict() for router in routers] # 如果没有顶级菜单,返回空列表
|
|
|
+ "data": routers #[router.dict() for router in routers] # 如果没有顶级菜单,返回空列表
|
|
|
}
|
|
|
except Exception as e:
|
|
|
- # 处理异常,返回错误信息
|
|
|
- raise HTTPException(status_code=500, detail=str(e))
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
|
|
|
|
|
|
@router.get('/qydt/getRouters')
|
|
@@ -206,71 +199,63 @@ async def getRouters(request: Request, db: Session = Depends(get_db),
|
|
|
def build_menu_tree(menus, parent_menu):
|
|
|
menu_tree = [] # 初始化一个列表来存储菜单树结构
|
|
|
for menu in menus:
|
|
|
- if menu.is_frame==0:
|
|
|
- menu_data = Router_frame(
|
|
|
- component=menu.component or 'Layout',
|
|
|
- hidden=menu.visible == '1',
|
|
|
- name=menu.path,
|
|
|
- path='/'+menu.path,
|
|
|
- meta = Meta(
|
|
|
- title=menu.menu_name,
|
|
|
- icon=menu.icon,
|
|
|
- noCache=menu.is_cache == '1',
|
|
|
- link = menu.path
|
|
|
- ),
|
|
|
- children=[]
|
|
|
- )
|
|
|
- else:
|
|
|
- menu_data = Router(
|
|
|
- name=menu.path,#menu.menu_name,
|
|
|
- path='/'+menu.path,
|
|
|
- hidden=menu.visible == '1',
|
|
|
- component=menu.component or 'Layout',
|
|
|
- meta=Meta(
|
|
|
- title=menu.menu_name,
|
|
|
- icon=menu.icon,
|
|
|
- noCache=menu.is_cache == '1'
|
|
|
- ),
|
|
|
- children=[] # 初始化 children 列表,即使没有子菜单
|
|
|
- )
|
|
|
+ menu_data = {
|
|
|
+ "component": menu.component or 'Layout',
|
|
|
+ "hidden": menu.visible == '1',
|
|
|
+ "name": menu.path,
|
|
|
+ "path": '/' + menu.path,
|
|
|
+ "redirect": 'noRedirect',
|
|
|
+ # "alwaysShow":True,
|
|
|
+ "meta": {
|
|
|
+ "title": menu.menu_name,
|
|
|
+ 'icon': menu.icon,
|
|
|
+ 'noCache': menu.is_cache == '1',
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if menu.is_frame == 0:
|
|
|
+ menu_data['meta']['link'] = menu.path
|
|
|
+
|
|
|
# 如果菜单有子菜单,则递归构建子菜单
|
|
|
if menu.menu_type == 'M': # 假设 'M' 表示目录类型
|
|
|
- query = db.query(SysMenu)
|
|
|
- query = query.filter_by(parent_id=menu.menu_id)
|
|
|
- query = query.filter(SysMenu.del_flag != '2')
|
|
|
+ # query = db.query(SysMenu)
|
|
|
+ # query = query.filter_by(parent_id=menu.menu_id)
|
|
|
+ # query = query.filter(SysMenu.del_flag != '2')
|
|
|
# children_menus = db.query(SysMenu).filter_by(parent_id=menu.menu_id).all()
|
|
|
- children_menus = query.all()
|
|
|
- menu_data.children = build_menu_tree(children_menus, menu)
|
|
|
+ # children_menus = query.all()
|
|
|
+ # menu_data['redirect'] ='noRedirect'
|
|
|
+ menu_data['alwaysShow'] = True
|
|
|
+ children_menus = parent_id_get_menu_info(db, menu.menu_id)
|
|
|
+ if len(children_menus) > 0:
|
|
|
+ menu_data['children'] = build_menu_tree(children_menus, menu)
|
|
|
+
|
|
|
else:
|
|
|
- del menu_data.children #没有子菜单,删除children 列表
|
|
|
- del menu_data.redirect
|
|
|
- del menu_data.alwaysShow
|
|
|
- menu_data.path = menu_data.path[1:]
|
|
|
+ menu_data['path'] = menu_data['path'][1:]
|
|
|
menu_tree.append(menu_data) # 将当前菜单数据添加到菜单树列表
|
|
|
return menu_tree
|
|
|
|
|
|
# 构建顶级菜单的树形结构
|
|
|
routers = build_menu_tree(menus, None)
|
|
|
# routers_dict = [router.dict() for router in routers]
|
|
|
- routers_dict = []
|
|
|
- for router in routers:
|
|
|
- router_info = router.dict()
|
|
|
- if len(router_info['children'])==0:
|
|
|
- del router_info['children']
|
|
|
- del router_info['redirect']
|
|
|
- del router_info['alwaysShow']
|
|
|
- router_info['path'] = router_info['path'][1:]
|
|
|
-
|
|
|
- routers_dict.append(router_info)
|
|
|
+ # routers_dict = []
|
|
|
+ # for router in routers:
|
|
|
+ # router_info = router.dict()
|
|
|
+ # if len(router_info['children'])==0:
|
|
|
+ # del router_info['children']
|
|
|
+ # del router_info['redirect']
|
|
|
+ # del router_info['alwaysShow']
|
|
|
+ # router_info['path'] = router_info['path'] #[1:]
|
|
|
+ #
|
|
|
+ # routers_dict.append(router_info)
|
|
|
# 返回构建好的路由数据
|
|
|
return {
|
|
|
"code": 200,
|
|
|
"msg": "操作成功",
|
|
|
- "data": routers_dict #[router.dict() for router in routers] # 如果没有顶级菜单,返回空列表
|
|
|
+ "data": routers # [router.dict() for router in routers] # 如果没有顶级菜单,返回空列表
|
|
|
}
|
|
|
except Exception as e:
|
|
|
- # 处理异常,返回错误信息
|
|
|
- raise HTTPException(status_code=500, detail=str(e))
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
|
|
|
|
|
|
@router.get('/list')
|