menu.py 816 B

1234567891011121314151617181920212223242526272829303132333435
  1. """菜单 Schema 定义"""
  2. from typing import Optional, List
  3. from pydantic import BaseModel
  4. class MenuMeta(BaseModel):
  5. """菜单元信息"""
  6. title: str
  7. icon: Optional[str] = None
  8. keepAlive: Optional[bool] = False
  9. isHide: Optional[bool] = False
  10. isIframe: Optional[bool] = False
  11. link: Optional[str] = None
  12. showBadge: Optional[bool] = False
  13. showTextBadge: Optional[str] = None
  14. isHideTab: Optional[bool] = False
  15. class MenuItem(BaseModel):
  16. """菜单项"""
  17. id: int
  18. name: str
  19. path: str
  20. component: Optional[str] = None
  21. redirect: Optional[str] = None
  22. meta: Optional[MenuMeta] = None
  23. children: Optional[List["MenuItem"]] = None
  24. class MenuListResponse(BaseModel):
  25. """菜单列表响应"""
  26. menuList: List[MenuItem]
  27. MenuItem.model_rebuild()