|
|
@@ -19,6 +19,19 @@ from .schema import (
|
|
|
MenuUpdateSchema,
|
|
|
)
|
|
|
|
|
|
+def _transform_external_menus(items: list[dict]) -> None:
|
|
|
+ """递归转换外链菜单的路由和组件路径"""
|
|
|
+ for item in items:
|
|
|
+ if item.get("type") == 4:
|
|
|
+ original_url = item.get("route_path", "")
|
|
|
+ route_name = item.get("route_name") or "external"
|
|
|
+ item["route_path"] = f"/{route_name}"
|
|
|
+ item["component_path"] = "module_system/menu/ExternalLink"
|
|
|
+ # 把原始 URL 存入 params,供 ExternalLink 组件读取
|
|
|
+ item["params"] = [{"key": "url", "value": original_url}]
|
|
|
+ if item.get("children"):
|
|
|
+ _transform_external_menus(item["children"])
|
|
|
+
|
|
|
|
|
|
class MenuService:
|
|
|
"""
|
|
|
@@ -99,25 +112,9 @@ class MenuService:
|
|
|
# 使用traversal_to_tree构建树形结构
|
|
|
tree = traversal_to_tree(menu_dict_list)
|
|
|
# 对外链菜单(type=4)转换路由数据
|
|
|
- MenuService._transform_external_menus(tree)
|
|
|
+ _transform_external_menus(tree)
|
|
|
return tree
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- @staticmethod
|
|
|
- def _transform_external_menus(items: list[dict]) -> None:
|
|
|
- """递归转换外链菜单的路由和组件路径"""
|
|
|
- for item in items:
|
|
|
- if item.get("type") == 4:
|
|
|
- original_url = item.get("route_path", "")
|
|
|
- route_name = item.get("route_name") or "external"
|
|
|
- item["route_path"] = f"/{route_name}"
|
|
|
- item["component_path"] = "module_system/menu/ExternalLink"
|
|
|
- # 把原始 URL 存入 params,供 ExternalLink 组件读取
|
|
|
- item["params"] = [{"key": "url", "value": original_url}]
|
|
|
- if item.get("children"):
|
|
|
- MenuService._transform_external_menus(item["children"])
|
|
|
-
|
|
|
@classmethod
|
|
|
async def create_menu_service(cls, auth: AuthSchema, data: MenuCreateSchema) -> dict:
|
|
|
"""
|