"""运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)""" 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 一致:5 个一级菜单分组 STATIC_MENU_TREE = [ # ──────────────────────────────────────────── # 1. 市场 (menu:market) # ──────────────────────────────────────────── { "id": "TOP00000000000000000000000000001", "name": "Market", "path": "/market", "component": "/index/index", "meta": { "title": "市场", "icon": "ri:store-2-line", "keepAlive": False, "isTopMenu": True, "menuCode": "menu:market", "roles": ["admin"], }, "children": [ # 细胞存储 { "id": "CEL00000000000000000000000000001", "name": "CellStorage", "path": "cell-storage", "component": "", "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, "isHide": True, "menuCode": "biz:cellStorageProtocol:list"}, }, { "id": "50000000000000000000000000000003", "name": "CellStorageProtocolAudit", "path": "protocol-audit", "component": "/cell-storage/protocol-audit/index", "meta": {"title": "采集协议单", "keepAlive": True, "menuCode": "biz:cellStorageProtocolAudit:list"}, }, { "id": "50000000000000000000000000000013", "name": "CellStorageSampleInfo", "path": "sample-info", "component": "/cell-storage/sample-info/index", "meta": {"title": "样本信息管理", "keepAlive": True, "menuCode": "cell-storage:sample-info:list"}, }, { "id": "50000000000000000000000000000004", "name": "CellStoragePaymentConfirm", "path": "payment-confirm", "component": "/cell-storage/payment-confirm/index", "meta": {"title": "缴退费财务确认及开票", "keepAlive": True, "menuCode": "biz:cellStoragePaymentConfirm:list"}, }, { "id": "70000000000000000000000000000011", "name": "CellStorageStorageReleaseReview", "path": "storage-release-review", "component": "/quality-inspection/storage-release-review/index", "meta": {"title": "入库放行审核", "keepAlive": True, "menuCode": "biz:storageReleaseReview:list"}, }, ], }, # 科研捐赠 { "id": "RSC00000000000000000000000000001", "name": "ResearchDonation", "path": "research-donation", "component": "", "meta": { "title": "科研捐赠", "icon": "ri:hand-heart-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "60000000000000000000000000000002", "name": "ResearchDonationList", "path": "list", "component": "/research-donation/list/index", "meta": {"title": "捐赠协议单录入", "keepAlive": True, "isHide": True, "menuCode": "biz:researchDonation:list"}, }, { "id": "60000000000000000000000000000003", "name": "ResearchDonationAudit", "path": "audit", "component": "/research-donation/audit/index", "meta": {"title": "捐赠协议单", "keepAlive": True, "menuCode": "biz:researchDonationAudit:list"}, }, { "id": "60000000000000000000000000000004", "name": "ResearchDonationSampleInfo", "path": "sample-info", "component": "/research-donation/sample-info/index", "meta": {"title": "样本信息管理", "keepAlive": True, "menuCode": "research-donation:sample-info:list"}, }, ], }, # 中试服务 { "id": "PIL00000000000000000000000000001", "name": "PilotService", "path": "pilot-service", "component": "", "meta": { "title": "中试服务", "icon": "ri:flask-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "80000000000000000000000000000010", "name": "PilotApplication", "path": "pilot-application", "component": "/pilot-service/pilot-application/index", "meta": {"title": "中试服务申请单", "keepAlive": True, "menuCode": "pilot-service:pilot-application:list"}, }, { "id": "PIL00000000000000000000000000004", "name": "PilotOutboundRelease", "path": "outbound-release-review", "component": "/pilot-service/outbound-release-review/index", "meta": {"title": "出库放行审核", "keepAlive": True, "menuCode": "pilot-service:outbound-release-review:list"}, }, ], }, # 基础实验 { "id": "BEX00000000000000000000000000001", "name": "BasicExperiment", "path": "basic-experiment", "component": "", "meta": { "title": "基础实验", "icon": "ri:flask-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "BEX00000000000000000000000000002", "name": "BasicExperimentApplication", "path": "application", "component": "/pilot-service/pilot-application/index", "meta": { "title": "基础实验申请单", "keepAlive": True, "menuCode": "basic-experiment:application:list", }, }, { "id": "BEX00000000000000000000000000003", "name": "BasicExperimentPaymentConfirm", "path": "payment-confirm", "component": "/pilot-service/clinical-payment-confirm/index", "meta": { "title": "缴退费财务确认", "keepAlive": True, "menuCode": "basic-experiment:payment-confirm:list", }, }, { "id": "BEX00000000000000000000000000004", "name": "BasicExperimentOutboundRelease", "path": "outbound-release-review", "component": "/pilot-service/outbound-release-review/index", "meta": { "title": "出库放行审核", "keepAlive": True, "menuCode": "basic-experiment:outbound-release-review:list", }, }, ], }, # 市场基础信息 { "id": "MKT00000000000000000000000000001", "name": "MarketInfo", "path": "market-info", "component": "", "meta": { "title": "市场基础信息", "icon": "ri:price-tag-3-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "122", "name": "BizCellSampleType", "path": "cell-sample-type", "component": "/basic-info/cell-sample-type/index", "meta": {"title": "细胞样本基础信息维护", "keepAlive": True, "menuCode": "biz:cellSampleType:list"}, }, { "id": "123", "name": "BizCollectionRegion", "path": "collection-region", "component": "/basic-info/collection-region/index", "meta": {"title": "细胞采集基础信息维护", "keepAlive": True, "menuCode": "biz:collectionRegion:list"}, }, { "id": "80000000000000000000000000000002", "name": "CellProductType", "path": "cell-product-type", "component": "/pilot-service/cell-product-type/index", "meta": {"title": "细胞产品基础信息维护", "keepAlive": True, "menuCode": "pilot-service:cell-product-type:list"}, }, { "id": "40000000000000000000000000000007", "name": "BasicInfoInsuranceCompany", "path": "insurance-company", "component": "/basic-info/insurance-company/index", "meta": {"title": "保险公司及险种价格", "keepAlive": True, "menuCode": "basic-info:insurance-company:list"}, }, { "id": "80000000000000000000000000000007", "name": "CheckupInstitution", "path": "checkup-institution", "component": "/pilot-service/checkup-institution/index", "meta": {"title": "体检机构及项目价格", "keepAlive": True, "menuCode": "pilot-service:checkup-institution:list"}, }, { "id": "50000000000000000000000000000009", "name": "MarketMaterial", "path": "material", "component": "/cell-storage/material/index", "meta": {"title": "市场物料库", "keepAlive": True, "menuCode": "biz:material:list"}, }, { "id": "95000000000000000000000000000003", "name": "MarketMyMaterialUsage", "path": "my-material-usage", "component": "/cell-storage/my-material-usage/index", "meta": { "title": "我的物料领用记录", "keepAlive": True, "menuCode": "market:material-usage:list", }, }, { "id": "121", "name": "BizCustomer", "path": "customer", "component": "/basic-info/customer/index", "meta": {"title": "客户管理", "keepAlive": True, "menuCode": "biz:customer:list"}, }, { "id": "80000000000000000000000000000006", "name": "Channel", "path": "channel", "component": "/pilot-service/channel/index", "meta": {"title": "渠道信息管理", "keepAlive": True, "menuCode": "pilot-service:channel:list"}, }, { "id": "80000000000000000000000000000009", "name": "ChannelServiceOrderFinance", "path": "channel-service-order-finance", "component": "/pilot-service/channel-service-order-finance/index", "meta": {"title": "渠道服务订单(财务确认)", "keepAlive": True, "menuCode": "pilot-service:channel-service-order-finance:list"}, }, ], }, ], }, # ──────────────────────────────────────────── # 2. 生产 (menu:production) # ──────────────────────────────────────────── { "id": "TOP00000000000000000000000000002", "name": "Production", "path": "/production-group", "component": "/index/index", "meta": { "title": "生产", "icon": "ri:building-4-line", "keepAlive": False, "isTopMenu": True, "menuCode": "menu:production", "roles": ["admin"], }, "children": [ # 临床应用 { "id": "CLI00000000000000000000000000001", "name": "ClinicalApplication", "path": "clinical-application", "component": "", "meta": { "title": "临床应用", "icon": "ri:heart-pulse-line", "keepAlive": False, "isHide": True, "roles": ["admin"], }, "children": [ { "id": "CLI00000000000000000000000000002", "name": "ClinicalApplicationList", "path": "clinical-application", "component": "/pilot-service/pilot-application/index", "meta": { "title": "临床申请单", "keepAlive": True, "isHide": True, "menuCode": "clinical-application:application:list", }, }, { "id": "CLI00000000000000000000000000003", "name": "ClinicalCheckupManagement", "path": "clinical-checkup-management", "component": "/pilot-service/checkup-management/index", "meta": { "title": "体检管理", "keepAlive": True, "isHide": True, "menuCode": "clinical-application:checkup-management:list", }, }, { "id": "CLI00000000000000000000000000004", "name": "ClinicalInfusionSchedule", "path": "clinical-infusion-schedule-management", "component": "/pilot-service/infusion-schedule-management/index", "meta": { "title": "输注计划管理", "keepAlive": False, "isHide": True, "menuCode": "clinical-application:infusion-schedule-management:list", }, }, { "id": "CLI00000000000000000000000000005", "name": "ClinicalPaymentInfo", "path": "clinical-payment-info", "component": "/pilot-service/clinical-payment-info/index", "meta": { "title": "缴费信息", "keepAlive": False, "isHide": True, "menuCode": "clinical-application:payment-info:list", }, }, { "id": "CLI00000000000000000000000000006", "name": "ClinicalPaymentConfirm", "path": "clinical-payment-confirm", "component": "/pilot-service/clinical-payment-confirm/index", "meta": { "title": "缴退费财务确认", "keepAlive": True, "isHide": True, "menuCode": "clinical-application:payment-confirm:list", }, }, { "id": "CLI00000000000000000000000000007", "name": "ClinicalRefundConfirm", "path": "clinical-refund-confirm", "component": "/pilot-service/clinical-refund-confirm/index", "meta": {"title": "退费确认(财务)", "keepAlive": True, "menuCode": "clinical-application:refund-confirm:list"}, }, { "id": "CLI00000000000000000000000000008", "name": "ClinicalOutboundRelease", "path": "clinical-outbound-release-review", "component": "/pilot-service/outbound-release-review/index", "meta": { "title": "出库放行审核", "keepAlive": True, "isHide": True, "menuCode": "clinical-application:outbound-release-review:list", }, }, ], }, # 生产管理 { "id": "PRM00000000000000000000000000001", "name": "ProductionManage", "path": "production", "component": "", "meta": { "title": "生产管理", "icon": "grid", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "61000000000000000000000000000003", "name": "ProductionStorageFacility", "path": "storage-facility", "component": "/operations/storage-facility/index", "meta": {"title": "库位管理", "keepAlive": True, "menuCode": "operations:storage-facility:list"}, }, { "id": "90000000000000000000000000000013", "name": "CellProduct", "path": "cell-product", "component": "/production/cell-product/index", "meta": {"title": "细胞产品库", "keepAlive": True, "menuCode": "production:cell-product:list"}, }, { "id": "90000000000000000000000000000011", "name": "ProductionWorkOrder", "path": "production-work-order", "component": "/production/production-work-order/index", "meta": {"title": "生产工单", "keepAlive": True, "menuCode": "production:work-order:list"}, }, { "id": "94000000000000000000000000000001", "name": "ProductionMyProductionTask", "path": "my-production-task", "component": "/production/my-production-task/index", "meta": {"title": "我的生产任务", "keepAlive": True, "menuCode": "production:my-task:list"}, }, { "id": "94000000000000000000000000000002", "name": "ProductionMyMaterialUsage", "path": "my-production-material-usage", "component": "/production/my-production-material-usage/index", "meta": { "title": "我的物料领用记录", "keepAlive": True, "menuCode": "production:my-material-usage:list", }, }, { "id": "91000000000000000000000000000001", "name": "ProductionSampleReceptionCompletion", "path": "sample-reception-completion", "component": "/production/sample-reception-completion/index", "meta": { "title": "样本接收信息完善", "keepAlive": True, "menuCode": "production:sample-reception-completion:list", }, }, { "id": "95000000000000000000000000000003", "name": "ProductionCleanroomGarment", "path": "cleanroom-garment", "component": "/production/cleanroom-garment/index", "meta": { "title": "洁净服管理", "keepAlive": True, "menuCode": "production:cleanroom-garment:list", }, }, { "id": "95300000000000000000000000000001", "name": "ProductionWasteOutput", "path": "waste-output", "component": "/production/waste-output/index", "meta": { "title": "废弃物管理", "keepAlive": True, "menuCode": "production:waste-output:list", }, }, ], }, # 生产基础信息 { "id": "PRB00000000000000000000000000001", "name": "ProductionBase", "path": "production-base", "component": "", "meta": { "title": "生产基础信息", "icon": "ri:tools-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "90000000000000000000000000000014", "name": "ProductionMaterial", "path": "production-material", "component": "/production/production-material/index", "meta": {"title": "生产物料库", "keepAlive": True, "menuCode": "production:material:list"}, }, { "id": "90000000000000000000000000000002", "name": "ProductionConsumable", "path": "consumable", "component": "/production/consumable/index", "meta": { "title": "耗材管理", "keepAlive": True, "isHide": True, "menuCode": "production:consumable:list", }, }, { "id": "90000000000000000000000000000003", "name": "ProductionReagent", "path": "reagent", "component": "/production/reagent/index", "meta": { "title": "试剂管理", "keepAlive": True, "isHide": True, "menuCode": "production:reagent:list", }, }, { "id": "90000000000000000000000000000004", "name": "ProductionSop", "path": "sop", "component": "/production/sop/index", "meta": {"title": "SOP文档", "keepAlive": True, "menuCode": "production:sop-document:list"}, }, { "id": "90000000000000000000000000000005", "name": "ProductionProcessCategory", "path": "process-category", "component": "/production/process-category/index", "meta": {"title": "工艺基础信息维护", "keepAlive": True, "menuCode": "production:process-category:list"}, }, { "id": "90000000000000000000000000000008", "name": "ProductionProcess", "path": "process", "component": "/production/process/index", "meta": {"title": "工艺库管理", "keepAlive": True, "menuCode": "production:process:list"}, }, { "id": "90000000000000000000000000000009", "name": "ProductionEquipment", "path": "equipment", "component": "/production/equipment/index", "meta": {"title": "设备管理", "keepAlive": True, "menuCode": "production:equipment:list"}, }, ], }, ], }, # ──────────────────────────────────────────── # 3. 质检 (menu:quality) # ──────────────────────────────────────────── { "id": "TOP00000000000000000000000000003", "name": "Quality", "path": "/quality-group", "component": "/index/index", "meta": { "title": "质检", "icon": "ri:shield-check-line", "keepAlive": False, "isTopMenu": True, "menuCode": "menu:quality", "roles": ["admin"], }, "children": [ # 质检管理 { "id": "QCM00000000000000000000000000001", "name": "QualityManage", "path": "quality-manage", "component": "", "meta": { "title": "质检管理", "icon": "ri:shield-check-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "70000000000000000000000000000002", "name": "QualityInspectionSampleReception", "path": "sample-reception", "component": "/quality-inspection/sample-reception/index", "meta": {"title": "样本接收", "keepAlive": True, "menuCode": "biz:sampleReception:list"}, }, { "id": "70000000000000000000000000000007", "name": "QualityInspectionQcWorkOrder", "path": "qc-work-order", "component": "/quality-inspection/qc-work-order/index", "meta": {"title": "质检工单", "keepAlive": True, "menuCode": "biz:qcWorkOrder:list"}, }, { "id": "71000000000000000000000000000002", "name": "QualityInspectionEnvDetectRecord", "path": "env-detect-record", "component": "/quality-inspection/env-detect-record/index", "meta": {"title": "环境检测管理", "keepAlive": True, "menuCode": "biz:envDetectRecord:list"}, }, { "id": "92000000000000000000000000000001", "name": "QualityInspectionMyQcMaterialUsage", "path": "my-qc-material-usage", "component": "/quality-inspection/my-qc-material-usage/index", "meta": { "title": "我的物料领用记录", "keepAlive": True, "menuCode": "biz:myQcMaterialUsage:list", }, }, { "id": "93000000000000000000000000000001", "name": "QualityInspectionMyQcTask", "path": "my-qc-task", "component": "/quality-inspection/my-qc-task/index", "meta": { "title": "我的质检任务", "keepAlive": True, "menuCode": "biz:myQcTask:list", }, }, ], }, # 质检基础信息 { "id": "QCB00000000000000000000000000001", "name": "QualityBase", "path": "quality-base", "component": "", "meta": { "title": "质检基础信息", "icon": "ri:clipboard-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "70000000000000000000000000000003", "name": "QualityInspectionSampleReceptionCheckItem", "path": "sample-reception-check-item", "component": "/quality-inspection/sample-reception-check-item/index", "meta": {"title": "接收检查项配置", "keepAlive": True, "menuCode": "biz:sampleReceptionCheckItem:list"}, }, { "id": "70000000000000000000000000000006", "name": "QualityInspectionLabTestItem", "path": "lab-test-item", "component": "/quality-inspection/lab-test-item/index", "meta": {"title": "质检项目管理", "keepAlive": True, "menuCode": "biz:qcLabTestItem:list"}, }, { "id": "71000000000000000000000000000001", "name": "QualityInspectionEnvDetectItem", "path": "env-detect-item", "component": "/quality-inspection/env-detect-item/index", "meta": {"title": "环境检测项维护", "keepAlive": True, "menuCode": "biz:envDetectItem:list"}, }, { "id": "70000000000000000000000000000009", "name": "QualityInspectionQcMaterial", "path": "qc-material", "component": "/quality-inspection/qc-material/index", "meta": {"title": "质检物料库", "keepAlive": True, "menuCode": "biz:qcMaterial:list"}, }, { "id": "95100000000000000000000000000001", "name": "QualityInspectionQcMaterialAmountAuth", "path": "qc-material-amount-auth", "component": "/quality-inspection/qc-material-amount-auth/index", "meta": { "title": "质检物料金额查看授权", "keepAlive": True, "menuCode": "biz:qcMaterialAmountAuth:list", }, }, ], }, ], }, # ──────────────────────────────────────────── # 4. 运营支撑 (menu:operations) # ──────────────────────────────────────────── { "id": "TOP00000000000000000000000000004", "name": "OperationsGroup", "path": "/operations-group", "component": "/index/index", "meta": { "title": "运营支撑", "icon": "ri:settings-3-line", "keepAlive": False, "isTopMenu": True, "menuCode": "menu:operations", "roles": ["admin"], }, "children": [ # 系统基础信息 { "id": "SYSB000000000000000000000000000001", "name": "SystemBase", "path": "system-base", "component": "", "meta": { "title": "系统基础信息", "icon": "ri:archive-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "107", "name": "Site", "path": "site", "component": "/system/site/index", "meta": {"title": "站点管理", "keepAlive": True, "menuCode": "system:site:list"}, }, { "id": "109", "name": "Unit", "path": "unit", "component": "/system/unit/index", "meta": {"title": "物品单位管理", "keepAlive": True, "menuCode": "system:unit:list"}, }, { "id": "110", "name": "Express", "path": "express", "component": "/system/express/index", "meta": {"title": "快递公司", "keepAlive": True, "menuCode": "system:express:list"}, }, ], }, # 运营支撑 { "id": "OPS00000000000000000000000000001", "name": "Operations", "path": "operations", "component": "", "meta": { "title": "运营支撑", "icon": "operation", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "61000000000000000000000000000002", "name": "CleanRoom", "path": "clean-room", "component": "/operations/clean-room/index", "meta": {"title": "洁净室管理", "keepAlive": True, "menuCode": "operations:clean-room:list"}, }, { "id": "61000000000000000000000000000004", "name": "ExhibitionAppointment", "path": "exhibition-appointment", "component": "/operations/exhibition-appointment/index", "meta": {"title": "展馆预约", "keepAlive": True, "menuCode": "operations:exhibition-appointment:list"}, }, ], }, ], }, # ──────────────────────────────────────────── # 5. 系统管理 (menu:system-manage) # ──────────────────────────────────────────── { "id": "TOP00000000000000000000000000005", "name": "SystemManageGroup", "path": "/system-manage", "component": "/index/index", "meta": { "title": "系统管理", "icon": "ri:server-line", "keepAlive": False, "isTopMenu": True, "menuCode": "menu:system-manage", "roles": ["admin"], }, "children": [ # 系统管理 { "id": "SYSM000000000000000000000000000001", "name": "SystemManage", "path": "system", "component": "", "meta": { "title": "系统管理", "icon": "ri:settings-3-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "101", "name": "Tenant", "path": "tenant", "component": "/system/tenant/index", "meta": {"title": "租户管理", "keepAlive": True, "menuCode": "system:tenant:list"}, }, { "id": "102", "name": "Dict", "path": "dict", "component": "/system/dict/index", "meta": {"title": "字典管理", "keepAlive": True, "menuCode": "system:dict:list"}, }, { "id": "106", "name": "Menu", "path": "menu", "component": "/system/menu/index", "meta": {"title": "菜单管理", "keepAlive": True, "menuCode": "system:menu:list"}, }, { "id": "103", "name": "Dept", "path": "dept", "component": "/system/dept/index", "meta": {"title": "组织管理", "keepAlive": True, "menuCode": "system:dept:list"}, }, { "id": "105", "name": "Role", "path": "role", "component": "/system/role/index", "meta": {"title": "角色管理", "keepAlive": True, "menuCode": "system:role:list"}, }, { "id": "104", "name": "User", "path": "user", "component": "/system/user/index", "meta": {"title": "用户管理", "keepAlive": True, "menuCode": "system:user:list"}, }, { "id": "108", "name": "Post", "path": "post", "component": "/system/post/index", "meta": {"title": "职位管理", "keepAlive": True, "menuCode": "system:post:list"}, }, { "id": "10000000000000000000000000000008", "name": "UserDetail", "path": "user/detail", "component": "/system/user/detail", "meta": {"title": "用户详情", "isHide": True, "keepAlive": True}, }, ], }, # OA审批(钉钉交互) { "id": "OA000000000000000000000000000001", "name": "OaApproval", "path": "oa-approval", "component": "", "meta": { "title": "OA审批", "icon": "ri:auction-line", "keepAlive": False, "roles": ["admin"], }, "children": [ { "id": "OA000000000000000000000000000101", "name": "OaApprovalApps", "path": "apps", "component": "/oa-approval/apps/index", "meta": {"title": "审批管理", "keepAlive": True, "menuCode": "oa:apps:list"}, }, { "id": "OA000000000000000000000000000103", "name": "OaApprovalStart", "path": "start", "component": "/oa-approval/start/index", "meta": {"title": "发起审批", "keepAlive": True, "menuCode": "oa:start"}, }, { "id": "OA000000000000000000000000000104", "name": "OaApprovalPending", "path": "pending", "component": "/oa-approval/pending/index", "meta": {"title": "待处理", "keepAlive": True, "menuCode": "oa:pending"}, }, { "id": "OA000000000000000000000000000105", "name": "OaApprovalDone", "path": "done", "component": "/oa-approval/done/index", "meta": {"title": "已处理", "keepAlive": True, "menuCode": "oa:done"}, }, { "id": "OA000000000000000000000000000106", "name": "OaApprovalMine", "path": "mine", "component": "/oa-approval/mine/index", "meta": {"title": "我发起的", "keepAlive": True, "menuCode": "oa:mine"}, }, { "id": "OA000000000000000000000000000107", "name": "OaApprovalCc", "path": "cc", "component": "/oa-approval/cc/index", "meta": {"title": "抄送我的", "keepAlive": True, "menuCode": "oa:cc"}, }, { "id": "OA000000000000000000000000000201", "name": "OaApprovalDesigner", "path": "designer/:id", "component": "/oa-approval/designer/index", "meta": { "title": "审批设计", "keepAlive": False, "isHide": True, "menuCode": "oa:designer", }, }, { "id": "OA000000000000000000000000000202", "name": "OaApprovalInstanceDetail", "path": "instances/:id", "component": "/oa-approval/instances/detail", "meta": { "title": "审批详情", "keepAlive": False, "isHide": True, "menuCode": "oa:instance:detail", }, }, ], }, # 旧工作流管理(侧栏隐藏) { "id": "WKF00000000000000000000000000001", "name": "Workflow", "path": "workflow", "component": "", "meta": { "title": "工作流管理", "icon": "workflow", "keepAlive": False, "isHide": True, "roles": ["admin"], }, "children": [ { "id": "10000000000000000000000000000wf01", "name": "WorkflowProcess", "path": "process", "component": "/system/workflow/process/index", "meta": { "title": "流程配置", "keepAlive": True, "isHide": True, "menuCode": "workflow:process", }, }, { "id": "10000000000000000000000000000wf02", "name": "WorkflowPending", "path": "pending", "component": "/system/workflow/task-pending/index", "meta": { "title": "待办中心", "keepAlive": True, "isHide": True, "menuCode": "workflow:pending", }, }, { "id": "10000000000000000000000000000wf03", "name": "WorkflowCompleted", "path": "completed", "component": "/system/workflow/task-completed/index", "meta": { "title": "已办中心", "keepAlive": True, "isHide": True, "menuCode": "workflow:completed", }, }, { "id": "10000000000000000000000000000wf05", "name": "WorkflowMyApplications", "path": "my-applications", "component": "/system/workflow/my-applications/index", "meta": { "title": "我的申请", "keepAlive": True, "isHide": True, "menuCode": "workflow:myApplications", }, }, { "id": "10000000000000000000000000000wf04", "name": "LeaveRequest", "path": "leave", "component": "/system/leave/index", "meta": { "title": "请假申请", "keepAlive": True, "isHide": True, "menuCode": "workflow:leave", }, }, ], }, ], }, ] @router.get("/list") async def get_menu_list(_user: dict = Depends(require_admin_or_super_admin)): """获取菜单列表(与当前前端路由一致)""" return success_response({"menuList": STATIC_MENU_TREE})