Files
zkxw/backend/app/api/menu.py
T
2026-05-17 12:31:11 +08:00

206 lines
7.6 KiB
Python

"""运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,供后端菜单模式联调)"""
from fastapi import APIRouter, Depends
from app.core.menu_guard import require_admin_or_super_admin
from app.core.response import success_response
router = APIRouter(prefix="/web/menu", tags=["菜单管理"])
# 与 web-admin/src/router/modules/sqxp.ts 一致:Demo、系统管理、基础信息管理 等
STATIC_MENU_TREE = [
{
"id": "10000000000000000000000000000002",
"name": "Demo",
"path": "/demo",
"component": "/index/index",
"meta": {
"title": "Demo",
"icon": "ri:layout-grid-line",
"keepAlive": False,
"roles": ["admin"],
},
"children": [
{
"id": "10000000000000000000000000000001_child",
"name": "Console",
"path": "console",
"component": "/dashboard/console/index",
"meta": {
"title": "工作台",
"icon": "ri:home-smile-2-line",
"keepAlive": True,
"fixedTab": True,
"menuCode": "dashboard",
},
},
{
"id": "10000000000000000000000000000005",
"name": "Unit",
"path": "unit",
"component": "/system/unit/index",
"meta": {"title": "商品单位", "keepAlive": True},
},
{
"id": "10000000000000000000000000000021",
"name": "OrderList",
"path": "order",
"component": "/system/order/index",
"meta": {"title": "订单列表", "keepAlive": True},
},
{
"id": "10000000000000000000000000000006",
"name": "Product",
"path": "product",
"component": "/system/product/index",
"meta": {"title": "商品管理", "keepAlive": True},
},
{
"id": "10000000000000000000000000000004",
"name": "Category",
"path": "category",
"component": "/system/category/index",
"meta": {"title": "商品分类", "keepAlive": True},
},
{
"id": "10000000000000000000000000000007",
"name": "User",
"path": "user",
"component": "/system/user/index",
"meta": {"title": "用户管理", "keepAlive": True},
},
{
"id": "10000000000000000000000000000008",
"name": "UserDetail",
"path": "user/detail",
"component": "/system/user/detail",
"meta": {"title": "用户详情", "isHide": True, "keepAlive": True},
},
],
},
{
"id": "20000000000000000000000000000001",
"name": "System",
"path": "/system",
"component": "/index/index",
"meta": {
"title": "系统管理",
"icon": "ri:settings-3-line",
"keepAlive": False,
"roles": ["admin"],
},
"children": [
{
"id": "20000000000000000000000000000002",
"name": "Tenant",
"path": "tenant",
"component": "/system/tenant/index",
"meta": {"title": "租户管理", "keepAlive": True},
},
],
},
{
"id": "40000000000000000000000000000001",
"name": "BasicInfo",
"path": "/basic-info",
"component": "/index/index",
"meta": {
"title": "基础信息管理",
"icon": "ri:folder-user-line",
"keepAlive": False,
"roles": ["admin"],
},
"children": [
{
"id": "40000000000000000000000000000002",
"name": "BizCustomer",
"path": "customer",
"component": "/basic-info/customer/index",
"meta": {"title": "客户管理", "keepAlive": True},
},
{
"id": "40000000000000000000000000000003",
"name": "BizCellSampleType",
"path": "cell-sample-type",
"component": "/basic-info/cell-sample-type/index",
"meta": {"title": "细胞样本类型管理", "keepAlive": True},
},
{
"id": "40000000000000000000000000000004",
"name": "BizCollectionRegion",
"path": "collection-region",
"component": "/basic-info/collection-region/index",
"meta": {"title": "采集地区及医院管理", "keepAlive": True},
},
{
"id": "40000000000000000000000000000005",
"name": "BizCollectionProtocolNo",
"path": "collection-protocol-no",
"component": "/basic-info/collection-protocol-no/index",
"meta": {"title": "采集协议号管理", "keepAlive": True},
},
{
"id": "40000000000000000000000000000006",
"name": "BizSampleCode",
"path": "sample-code",
"component": "/basic-info/sample-code/index",
"meta": {"title": "样本编码管理", "keepAlive": True},
},
],
},
{
"id": "50000000000000000000000000000001",
"name": "CellStorage",
"path": "/cell-storage",
"component": "/index/index",
"meta": {
"title": "细胞存储管理",
"icon": "ri:test-tube-line",
"keepAlive": False,
"roles": ["admin"],
},
"children": [
{
"id": "50000000000000000000000000000002",
"name": "CellStorageProtocol",
"path": "protocol",
"component": "/cell-storage/protocol/index",
"meta": {"title": "采集协议单", "keepAlive": True},
},
{
"id": "50000000000000000000000000000007",
"name": "CellStoragePaymentInfo",
"path": "payment-info",
"component": "/cell-storage/payment-info/index",
"meta": {"title": "缴费信息", "keepAlive": True},
},
{
"id": "50000000000000000000000000000003",
"name": "CellStorageProtocolAudit",
"path": "protocol-audit",
"component": "/cell-storage/protocol-audit/index",
"meta": {"title": "采集协议单审核", "keepAlive": True},
},
{
"id": "50000000000000000000000000000004",
"name": "CellStoragePaymentConfirm",
"path": "payment-confirm",
"component": "/cell-storage/payment-confirm/index",
"meta": {"title": "缴费确认(财务)", "keepAlive": True},
},
{
"id": "50000000000000000000000000000005",
"name": "CellStorageRefundConfirm",
"path": "refund-confirm",
"component": "/cell-storage/refund-confirm/index",
"meta": {"title": "退费确认(财务)", "keepAlive": True},
},
],
},
]
@router.get("/list")
async def get_menu_list(_user: dict = Depends(require_admin_or_super_admin)):
"""获取菜单列表(与当前前端路由一致)"""
return success_response({"menuList": STATIC_MENU_TREE})