import type { RouteRecordRaw } from 'vue-router' import type { Component } from 'vue' type PrototypeRoute = readonly [path: string, name: string, title: string] type ModuleView = () => Promise const moduleViews = { customerManagement: () => import('@/prototype/modules/customer-management/ModuleView.vue'), domesticWarehouse: () => import('@/prototype/modules/domestic-warehouse/ModuleView.vue'), overseasDelivery: () => import('@/prototype/modules/overseas-delivery/ModuleView.vue'), overseasAcceptance: () => import('@/prototype/modules/overseas-delivery/AcceptanceWorkbench.vue'), overseasInventory: () => import('@/prototype/modules/overseas-inventory/ModuleView.vue'), serviceCenter: () => import('@/prototype/modules/service-center/ModuleView.vue'), supplierCenter: () => import('@/prototype/modules/supplier-center/ModuleView.vue'), containerManagement: () => import('@/prototype/modules/container-management/ModuleView.vue'), overseasBusiness: () => import('@/prototype/modules/overseas-business/ModuleView.vue'), overseasWarehouseOrders: () => import('@/prototype/modules/overseas-warehouse-orders/ModuleView.vue'), fbaReturns: () => import('@/prototype/modules/fba-returns/ModuleView.vue'), finance: () => import('@/prototype/modules/finance/ModuleView.vue'), vehicleManagement: () => import('@/prototype/modules/vehicle-management/ModuleView.vue'), reports: () => import('@/prototype/modules/reports/ModuleView.vue'), general: () => import('@/prototype/modules/general/ModuleView.vue'), sales: () => import('@/prototype/modules/sales/ModuleView.vue'), messages: () => import('@/prototype/modules/messages/ModuleView.vue'), systemManagement: () => import('@/prototype/modules/system-management/ModuleView.vue'), } satisfies Record function createRoutes(view: ModuleView, routes: PrototypeRoute[]): RouteRecordRaw[] { return routes.map(([path, name, title]) => ({ path, name, component: view, props: { title, description: `用于承载${title}相关业务信息` }, meta: { title, description: `用于承载${title}相关业务信息` }, })) } export const prototypeModuleRoutes: RouteRecordRaw[] = [ { path: 'prototype/overseas-delivery/acceptance-workbench', name: 'overseas-acceptance-workbench', component: moduleViews.overseasAcceptance, props: { title: '尾程业务全流程验收', description: '覆盖尾程订单、海外入库、排车、出库与库存验收' }, meta: { title: '尾程业务全流程验收', description: '覆盖尾程订单、海外入库、排车、出库与库存验收' }, }, ...createRoutes(moduleViews.customerManagement, [ ['prototype/customer-management/warehouse-tier-fee', 'warehouse-tier-fee', '海外仓阶梯费用'], ]), ...createRoutes(moduleViews.domesticWarehouse, [ ['prototype/domestic-warehouse/inbound-list', 'inbound-list', '入库单列表'], ['prototype/domestic-warehouse/inbound-dedup', 'inbound-dedup', '入库单测量'], ['prototype/domestic-warehouse/inbound-measure', 'inbound-measure', '测量数据审核'], ['prototype/domestic-warehouse/inbound-receive', 'inbound-receive', '接收审核'], ['prototype/domestic-warehouse/location-management', 'domestic-location-management', '库位管理'], ['prototype/domestic-warehouse/pallet-management', 'domestic-pallet-management', '托盘管理'], ]), ...createRoutes(moduleViews.overseasDelivery, [ ['prototype/overseas-delivery/dispatch-list', 'outbound-dispatch', '派送单列表'], ['prototype/overseas-delivery/vehicle-scheduling', 'outbound-vehicle', '排车列表'], ['prototype/overseas-delivery/bol', 'outbound-bol', 'BOL'], ['prototype/overseas-delivery/self-pickup', 'outbound-selfpick', '自提单'], ]), ...createRoutes(moduleViews.overseasInventory, [ ['prototype/overseas-inventory/stock-list', 'overseas-stock', '暂扣库存'], ['prototype/overseas-inventory/inbound-orders', 'overseas-inbound', '海外入库单'], ['prototype/overseas-inventory/outbound-orders', 'overseas-outbound', '出库单'], ['prototype/overseas-inventory/relabel-orders', 'overseas-relabel', '换标订单'], ]), ...createRoutes(moduleViews.serviceCenter, [ ['prototype/service-center/booking-list', 'booking-list', '订舱列表'], ['prototype/service-center/truck-list', 'truck-list', '拖车列表'], ]), ...createRoutes(moduleViews.supplierCenter, [ ['prototype/supplier-center/supplier-list', 'supplier-list', '供应商列表'], ]), ...createRoutes(moduleViews.containerManagement, [ ['prototype/container-management/container-list', 'container-list', '货柜列表'], ['prototype/container-management/manifest', 'container-manifest', '装柜清单'], ['prototype/container-management/preload-list', 'container-preload', '预装清单'], ]), ...createRoutes(moduleViews.overseasBusiness, [ ['prototype/overseas-business/users', 'overseas-users', '用户管理'], ['prototype/overseas-business/purchase-orders', 'overseas-purchase', '采购订单'], ['prototype/overseas-business/local-truck', 'overseas-truck', '本土卡车'], ['prototype/overseas-business/local-looseboard', 'overseas-looseboard', '本土散板'], ]), ...createRoutes(moduleViews.overseasWarehouseOrders, [ ['prototype/overseas-warehouse-orders/return-inbound', 'overseas-order-inbound', '退货入库'], ['prototype/overseas-warehouse-orders/return-relabel', 'overseas-order-relabel', '退货换标'], ['prototype/overseas-warehouse-orders/return-outbound', 'overseas-order-outbound', '退货出库'], ]), ...createRoutes(moduleViews.fbaReturns, [ ['prototype/fba-returns/inbound-orders', 'fba-inbound-order', '入库单'], ['prototype/fba-returns/relabel-orders', 'fba-relabel-order', '换标单'], ['prototype/fba-returns/outbound-orders', 'fba-outbound-order', '出库单'], ['prototype/fba-returns/pallet-management', 'fba-pallet', '托盘管理'], ['prototype/fba-returns/carton-management', 'fba-carton', '箱号管理'], ['prototype/fba-returns/product-catalog', 'fba-product', '产品库'], ['prototype/fba-returns/return-stock', 'fba-return-stock', '退货库存'], ]), ...createRoutes(moduleViews.finance, [ ['prototype/finance/customer-arap', 'customer-arap', '客户应收应付'], ['prototype/finance/customer-reconciliation', 'customer-recon-stmt', '客户对账单'], ['prototype/finance/settlement-ar', 'settlement-ar', '结算单应收'], ['prototype/finance/settlement-ap', 'settlement-ap', '结算单应付'], ['prototype/finance/cost-analysis', 'finance-cost', '费用分析'], ['prototype/finance/profit-report', 'profit', '利润表'], ]), ...createRoutes(moduleViews.vehicleManagement, [ ['prototype/vehicle-management/vehicle-list', 'vehicle-list', '车辆列表'], ]), ...createRoutes(moduleViews.reports, [ ['prototype/reports/overview', 'report-overview', '报表总览'], ['prototype/reports/income-expense', 'report-income', '收支报表'], ['prototype/reports/ar-aging', 'report-ar-aging', '应收账龄分析'], ['prototype/reports/cost-composition', 'report-cost', '费用构成分析'], ['prototype/reports/freight', 'report-freight', '运费报表'], ['prototype/reports/business-statistics', 'report-business', '业务统计报表'], ]), ...createRoutes(moduleViews.general, [ ['prototype/general/product-information', 'general-product', '产品信息'], ['prototype/general/fee-items', 'general-fee', '费用项目'], ['prototype/general/pallet-management', 'general-pallet', '托盘管理'], ['prototype/general/location-management', 'general-location', '库位/货架管理'], ]), ...createRoutes(moduleViews.sales, [ ['prototype/sales/visit-records', 'sales-visits', '拜访记录'], ['prototype/sales/commission', 'sales-commission', '销售提成'], ]), ...createRoutes(moduleViews.messages, [ ['prototype/messages/management', 'message-management', '消息管理'], ['prototype/messages/templates', 'message-template', '模板管理'], ]), ...createRoutes(moduleViews.systemManagement, [ ['prototype/system-management/tenant-management', 'tenant-management', '租户管理'], ['prototype/system-management/brand-settings', 'brand-settings', '品牌设置'], ]), ]