import type { AppRouteRecord } from '@/types/router' /** * 前端路由(13 个一级菜单:细胞存储、科研捐赠、中试服务、临床应用、 * 质检管理、生产管理、运营支撑、市场基础信息、质检基础信息、生产基础信息、 * 系统基础信息、工作流管理、系统管理) * 与后端菜单对齐时请同步 `backend/app/api/menu.py`。 */ export const sqxpAdminRoutes: AppRouteRecord[] = [ // ────────────────────────────────────────────── // 1. 细胞存储 // ────────────────────────────────────────────── { id: 'CEL00000000000000000000000000001', 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, 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: '904b5173519411f1944300163e3bdd96', name: 'CellStoragePaymentInfo', path: 'payment-info', component: '/cell-storage/payment-info/index', meta: { title: '缴费信息', keepAlive: false, isHide: true, menuCode: 'cellStorage:paymentInfo: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: '50000000000000000000000000000005', name: 'CellStorageRefundConfirm', path: 'refund-confirm', component: '/cell-storage/refund-confirm/index', meta: { title: '退费确认(财务)', keepAlive: false, isHide: true, menuCode: 'biz:cellStorageRefundConfirm:list' } }, { id: '50000000000000000000000000000011', name: 'CellStorageSampleReceptionInfo', path: 'sample-reception-info', component: '/cell-storage/sample-reception-info/index', meta: { title: '样本接收信息', keepAlive: false, isHide: true, menuCode: 'cell-storage:sample-reception-info:list' } }, { id: '50000000000000000000000000000012', name: 'CellStorageStorageEntryInfo', path: 'storage-entry-info', component: '/cell-storage/storage-entry-info/index', meta: { title: '样本入库信息', keepAlive: false, isHide: true, menuCode: 'cell-storage:storage-entry-info:list' } }, { id: '50000000000000000000000000000006', name: 'CellStorageStorageCert', path: 'storage-cert', component: '/cell-storage/storage-cert/index', meta: { title: '储存证管理', keepAlive: false, isHide: true, menuCode: 'cell-storage:storage-cert:list' } }, { id: '50000000000000000000000000000008', name: 'CellStorageFullmoonTodo', path: 'fullmoon-todo', component: '/cell-storage/fullmoon-todo/index', meta: { title: '满月待办管理', keepAlive: false, isHide: true, menuCode: 'cell-storage:fullmoon-todo:list' } } ] }, // ────────────────────────────────────────────── // 2. 科研捐赠 // ────────────────────────────────────────────── { id: 'RSC00000000000000000000000000001', name: 'ResearchDonation', path: '/research-donation', component: '/index/index', 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' } } ] }, // ────────────────────────────────────────────── // 3. 中试服务 // ────────────────────────────────────────────── { id: 'PIL00000000000000000000000000001', name: 'PilotService', path: '/pilot-service', component: '/index/index', 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: 'PIL00000000000000000000000000002', name: 'PilotCheckupManagement', path: 'checkup-management', component: '/pilot-service/checkup-management/index', meta: { title: '体检管理', keepAlive: false, isHide: true, menuCode: 'pilot-service:checkup-management:list' } }, { id: 'PIL00000000000000000000000000003', name: 'PilotInfusionSchedule', path: 'infusion-schedule-management', component: '/pilot-service/infusion-schedule-management/index', meta: { title: '输注计划管理', keepAlive: false, isHide: true, menuCode: 'pilot-service:infusion-schedule-management: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' } } ] }, // ────────────────────────────────────────────── // 4. 临床应用 // ────────────────────────────────────────────── { id: 'CLI00000000000000000000000000001', name: 'ClinicalApplication', path: '/clinical-application', component: '/index/index', meta: { title: '临床应用', icon: 'ri:heart-pulse-line', keepAlive: false, roles: ['admin'] }, children: [ { id: 'CLI00000000000000000000000000002', name: 'ClinicalApplicationList', path: 'clinical-application', component: '/pilot-service/pilot-application/index', meta: { title: '临床申请单', keepAlive: true, menuCode: 'clinical-application:application:list' }, props: { bizType: 'clinical_application' } }, { id: 'CLI00000000000000000000000000003', name: 'ClinicalCheckupManagement', path: 'clinical-checkup-management', component: '/pilot-service/checkup-management/index', meta: { title: '体检管理', keepAlive: true, menuCode: 'clinical-application:checkup-management:list' }, props: { bizType: 'clinical_application' } }, { id: 'CLI00000000000000000000000000004', name: 'ClinicalInfusionSchedule', path: 'clinical-infusion-schedule-management', component: '/pilot-service/infusion-schedule-management/index', meta: { title: '输注计划管理', keepAlive: true, menuCode: 'clinical-application:infusion-schedule-management:list' }, props: { bizType: 'clinical_application' } }, { id: 'CLI00000000000000000000000000005', name: 'ClinicalPaymentInfo', path: 'clinical-payment-info', component: '/pilot-service/clinical-payment-info/index', meta: { title: '缴费信息', keepAlive: 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, 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, menuCode: 'clinical-application:outbound-release-review:list' }, props: { bizType: 'clinical_application' } } ] }, // ────────────────────────────────────────────── // 5. 质检管理 // ────────────────────────────────────────────── { id: 'QCM00000000000000000000000000001', name: 'QualityManage', path: '/quality-manage', component: '/index/index', 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: '70000000000000000000000000000008', name: 'QualityInspectionQcTask', path: 'qc-task', component: '/quality-inspection/qc-task/index', meta: { title: '质检任务', keepAlive: false, isHide: true, menuCode: 'biz:qcTask:list' } }, { name: 'QualityInspectionStorageReleaseReviewRedirect', path: 'storage-release-review', redirect: '/cell-storage/storage-release-review', meta: { title: '入库放行审核', keepAlive: false, isHide: true } } ] }, // ────────────────────────────────────────────── // 6. 生产管理 // ────────────────────────────────────────────── { id: 'PRM00000000000000000000000000001', name: 'ProductionManage', path: '/production', component: '/index/index', 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: '90000000000000000000000000000012', name: 'ProductionTask', path: 'production-task', component: '/production/production-task/index', meta: { title: '生产任务', keepAlive: false, isHide: true, menuCode: 'production:task:list' } } ] }, // ────────────────────────────────────────────── // 7. 运营支撑 // ────────────────────────────────────────────── { id: 'OPS00000000000000000000000000001', name: 'Operations', path: '/operations', component: '/index/index', 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' } } ] }, // ────────────────────────────────────────────── // 8. 市场基础信息 // ────────────────────────────────────────────── { id: 'MKT00000000000000000000000000001', name: 'MarketInfo', path: '/market-info', component: '/index/index', 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: '125', name: 'BizSampleCode', path: 'sample-code', component: '/basic-info/sample-code/index', meta: { title: '样本编码管理', keepAlive: false, isHide: true, menuCode: 'biz:sampleCode:list' } }, { id: '123', name: 'BizCollectionRegion', path: 'collection-region', component: '/basic-info/collection-region/index', meta: { title: '细胞采集基础信息维护', keepAlive: true, menuCode: 'biz:collectionRegion:list' } }, { id: '124', name: 'BizCollectionProtocolNo', path: 'collection-protocol-no', component: '/basic-info/collection-protocol-no/index', meta: { title: '采集协议号管理', keepAlive: false, isHide: true, menuCode: 'biz:collectionProtocolNo: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: '80000000000000000000000000000003', name: 'CellProductSpec', path: 'cell-product-spec', component: '/pilot-service/cell-product-spec/index', meta: { title: '细胞产品规格管理', keepAlive: false, isHide: true, menuCode: 'pilot-service:cell-product-spec:list' } }, { id: '80000000000000000000000000000004', name: 'CellProductPrice', path: 'cell-product-price', component: '/pilot-service/cell-product-price/index', meta: { title: '细胞产品价格体系管理', keepAlive: false, isHide: true, menuCode: 'pilot-service:cell-product-price:list' } }, { id: '80000000000000000000000000000005', name: 'ProjectPriceSystem', path: 'project-price-system', component: '/pilot-service/project-price-system/index', meta: { title: '细胞产品项目价格管理', keepAlive: false, isHide: true, menuCode: 'pilot-service:project-price-system: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: '50000000000000000000000000000010', name: 'MarketMaterialStockLog', path: 'material-stock-log', component: '/cell-storage/material-stock-log/index', meta: { title: '市场物料变动记录', keepAlive: false, isHide: true, menuCode: 'biz:materialStockLog: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: '80000000000000000000000000000008', name: 'ChannelServiceOrder', path: 'channel-service-order', component: '/pilot-service/channel-service-order/index', meta: { title: '渠道服务购买订单', keepAlive: false, isHide: true, menuCode: 'pilot-service:channel-service-order: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' } } ] }, // ────────────────────────────────────────────── // 9. 质检基础信息 // ────────────────────────────────────────────── { id: 'QCB00000000000000000000000000001', name: 'QualityBase', path: '/quality-base', component: '/index/index', 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: '70000000000000000000000000000004', name: 'QualityInspectionThirdPartyCompany', path: 'third-party-company', component: '/quality-inspection/third-party-company/index', meta: { title: '第三方检测公司及项目', keepAlive: false, isHide: true, menuCode: 'biz:qcThirdPartyCompany:list' } }, { id: '70000000000000000000000000000009', name: 'QualityInspectionQcMaterial', path: 'qc-material', component: '/quality-inspection/qc-material/index', meta: { title: '质检物料库', keepAlive: true, menuCode: 'biz:qcMaterial:list' } }, { id: '70000000000000000000000000000010', name: 'QualityInspectionQcMaterialUsage', path: 'qc-material-usage', component: '/quality-inspection/qc-material-usage/index', meta: { title: '质检物料变动记录', keepAlive: false, isHide: true, menuCode: 'biz:qcMaterialUsage:list' } } ] }, // ────────────────────────────────────────────── // 10. 生产基础信息 // ────────────────────────────────────────────── { id: 'PRB00000000000000000000000000001', name: 'ProductionBase', path: '/production-base', component: '/index/index', meta: { title: '生产基础信息', icon: 'ri:tools-line', keepAlive: false, roles: ['admin'] }, children: [ { id: '90000000000000000000000000000002', name: 'ProductionConsumable', path: 'consumable', component: '/production/consumable/index', meta: { title: '耗材管理', keepAlive: true, menuCode: 'production:consumable:list' } }, { id: '90000000000000000000000000000007', name: 'ProductionConsumablePack', path: 'consumable-pack', component: '/production/consumable-pack/index', meta: { title: '耗材包管理', keepAlive: false, isHide: true, menuCode: 'production:consumable-pack:list' } }, { id: '90000000000000000000000000000003', name: 'ProductionReagent', path: 'reagent', component: '/production/reagent/index', meta: { title: '试剂管理', keepAlive: 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: '90000000000000000000000000000006', name: 'ProductionOutputType', path: 'output-type', component: '/production/output-type/index', meta: { title: '工艺产出物类型', keepAlive: false, isHide: true, menuCode: 'production:output-type:list' } }, { id: '90000000000000000000000000000008', name: 'ProductionProcess', path: 'process', component: '/production/process/index', meta: { title: '工艺库管理', keepAlive: true, menuCode: 'production:process:list' } }, { id: '90000000000000000000000000000010', name: 'ProductionProcessRoute', path: 'process-route', component: '/production/process-route/index', meta: { title: '工艺路线管理', keepAlive: false, isHide: true, menuCode: 'production:process-route:list' } } ] }, // ────────────────────────────────────────────── // 11. 系统基础信息 // ────────────────────────────────────────────── { id: 'SYSB000000000000000000000000000001', name: 'SystemBase', path: '/system-base', component: '/index/index', 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' } } ] }, // ────────────────────────────────────────────── // 12. 工作流管理 // ────────────────────────────────────────────── { id: 'WKF00000000000000000000000000001', name: 'Workflow', path: '/workflow', component: '/index/index', meta: { title: '工作流管理', icon: 'workflow', keepAlive: false, roles: ['admin'] }, children: [ { id: '10000000000000000000000000000wf01', name: 'WorkflowProcess', path: 'process', component: '/system/workflow/process/index', meta: { title: '流程配置', keepAlive: true, icon: 'workflow', menuCode: 'workflow:process' } }, { id: '10000000000000000000000000000wf02', name: 'WorkflowPending', path: 'pending', component: '/system/workflow/task-pending/index', meta: { title: '待办中心', keepAlive: true, menuCode: 'workflow:pending' } }, { id: '10000000000000000000000000000wf03', name: 'WorkflowCompleted', path: 'completed', component: '/system/workflow/task-completed/index', meta: { title: '已办中心', keepAlive: true, menuCode: 'workflow:completed' } }, { id: '10000000000000000000000000000wf05', name: 'WorkflowMyApplications', path: 'my-applications', component: '/system/workflow/my-applications/index', meta: { title: '我的申请', keepAlive: true, menuCode: 'workflow:myApplications' } }, { id: '10000000000000000000000000000wf04', name: 'LeaveRequest', path: 'leave', component: '/system/leave/index', meta: { title: '请假申请', keepAlive: true, menuCode: 'workflow:leave' } } ] }, // ────────────────────────────────────────────── // 13. 系统管理 // ────────────────────────────────────────────── { id: 'SYSM000000000000000000000000000001', name: 'SystemManage', path: '/system', component: '/index/index', 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 } } ] } ]