import type { AppRouteRecord } from '@/types/router' /** * 前端路由(5 个一级菜单分组:市场、生产、质检、运营支撑、系统管理) * 与后端菜单对齐时请同步 `backend/app/api/menu.py`。 */ export const sqxpAdminRoutes: AppRouteRecord[] = [ // ═══════════════════════════════════════════════════════════════════════════ // 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: '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' } } ] }, // ── 科研捐赠 ────────────────────────────────────────────────────────── { 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' }, props: { bizType: 'pilot_service' } }, { 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' }, props: { bizType: 'pilot_service' } }, { 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' }, props: { bizType: 'pilot_service' } }, { 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' }, props: { bizType: 'pilot_service' } } ] }, // ── 基础实验 ────────────────────────────────────────────────────────── { 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' }, props: { bizType: 'basic_experiment' } }, { id: 'BEX00000000000000000000000000003', name: 'BasicExperimentPaymentConfirm', path: 'payment-confirm', component: '/pilot-service/clinical-payment-confirm/index', meta: { title: '缴退费财务确认', keepAlive: true, menuCode: 'basic-experiment:payment-confirm:list' }, props: { bizType: 'basic_experiment' } }, { 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' }, props: { bizType: 'basic_experiment' } } ] }, // ── 市场基础信息 ───────────────────────────────────────────────────── { 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: '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: '95000000000000000000000000000003', name: 'MarketMyMaterialUsage', path: 'my-material-usage', component: '/cell-storage/my-material-usage/index', meta: { title: '我的物料领用记录', keepAlive: true, menuCode: 'market:material-usage: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' } } ] } ] }, // ═══════════════════════════════════════════════════════════════════════════ // 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' }, props: { bizType: 'clinical_application' } }, { 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' }, props: { bizType: 'clinical_application' } }, { 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' }, props: { bizType: 'clinical_application' } }, { 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: false, isHide: 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' }, props: { bizType: 'clinical_application' } } ] }, // ── 生产管理 ────────────────────────────────────────────────────────── { id: 'PRM00000000000000000000000000001', name: 'ProductionManage', path: 'production', component: '', meta: { title: '生产管理', icon: 'grid', keepAlive: false, roles: ['admin'] }, children: [ { id: '95200000000000000000000000000001', name: 'ProductionPreTransitSample', path: 'pre-transit-sample', component: '/production/pre-transit-sample/index', meta: { title: '预产及在途样本', keepAlive: true, menuCode: 'production:preTransitSample:list' } }, { 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: '90000000000000000000000000000012', name: 'ProductionTask', path: 'production-task', component: '/production/production-task/index', meta: { title: '生产任务', keepAlive: false, isHide: true, menuCode: 'production: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', /** 入口已转移至入库生产工单卡片,此路由保留但隐藏菜单 */ hidden: true } }, { 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: '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, 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: '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: '90000000000000000000000000000009', name: 'ProductionEquipment', path: 'equipment', component: '/production/equipment/index', meta: { title: '设备管理', keepAlive: true, menuCode: 'production:equipment:list' } }, { id: '90000000000000000000000000000010', name: 'ProductionProcessRoute', path: 'process-route', component: '/production/process-route/index', meta: { title: '工艺路线管理', keepAlive: false, isHide: true, menuCode: 'production:process-route: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: '70000000000000000000000000000001', name: 'QualityInspectionPreTransitSample', path: 'pre-transit-sample', component: '/quality-inspection/pre-transit-sample/index', meta: { title: '预产及在途样本', keepAlive: true, menuCode: 'biz:preTransitSample:list' } }, { 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: '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: '/market/cell-storage/storage-release-review', meta: { title: '入库放行审核', keepAlive: false, isHide: true } } ] }, // ── 质检基础信息 ────────────────────────────────────────────────────── { 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: '95300000000000000000000000000001', name: 'QualityInspectionInspectionItemTemplate', path: 'inspection-item-template', component: '/quality-inspection/inspection-item-template/index', meta: { title: '检测项目模版', keepAlive: true, menuCode: 'biz:qcInspectionItemTemplate: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: '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' } }, { 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' } } ] } ] }, // ═══════════════════════════════════════════════════════════════════════════ // 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) // 二级菜单:系统管理、OA审批(旧工作流侧栏隐藏) // ═══════════════════════════════════════════════════════════════════════════ { 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审批(钉钉交互;旧工作流菜单位 isHide,见 F14)────────────────── { 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: 'OA000000000000000000000000000109', name: 'OaApprovalDrafts', path: 'drafts', component: '/oa-approval/drafts/index', meta: { title: '草稿箱', keepAlive: true, menuCode: 'oa:drafts' } }, { 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: 'OA000000000000000000000000000108', name: 'OaApprovalReceiveAccounts', path: 'receive-accounts', component: '/oa-approval/receive-accounts/index', meta: { title: '收款账户管理', keepAlive: true, menuCode: 'oa:receive-accounts:list' } }, { 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: '1000000000000000000000000000oa01', name: 'OaFormDesignerSpike', path: 'oa-form-designer-spike', component: '/oa-approval/form-designer-spike/index', meta: { title: 'OA表单设计器Spike', keepAlive: false, isHide: true } } ] }, // ── 旧工作流管理(过渡保留,侧栏隐藏)────────────────────────────────── { 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, icon: 'workflow', 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' } } ] } ] } ]