import type { RouteRecordStringComponent } from '@vben/types'; import { $t } from '@vben/locales'; const { version, // vite inject-metadata 插件注入的全局变量 } = __VBEN_ADMIN_METADATA__ || {}; /** * 该文件放非后台返回的路由 比如个人中心 等需要跳转显示的页面 * 也可以直接在菜单管理配置 */ const localRoutes: RouteRecordStringComponent[] = [ { component: '/_core/profile/index', meta: { icon: 'mingcute:profile-line', title: $t('ui.widgets.profile'), hideInMenu: true, requireHomeRedirect: true, }, name: 'Profile', path: '/profile', }, { component: '/food-labeling/labeling/label-templates/editor/index', meta: { hideInMenu: true, title: 'foodLabeling.labeling.labelTemplates', activePath: '/label-templates', requireHomeRedirect: true, }, name: 'FoodLabelingLabelTemplateEditor', path: '/label-templates/editor', }, ]; /** 泰额业务页统一关闭路由 KeepAlive,避免多标签切换时 tabbar parentNode 报错 */ const foodLabelingRouteMeta = { keepAlive: false, noCache: true, }; const managementRouteMeta = foodLabelingRouteMeta; const labelingRouteMeta = foodLabelingRouteMeta; /** * 泰额版本地菜单(对齐美国版平台端侧边栏,JWT 暂不支持 Yi 后台菜单接口) */ export const localMenuList: RouteRecordStringComponent[] = [ { meta: { order: -1, title: 'page.dashboard.title', }, name: 'Dashboard', path: '/', redirect: '/analytics', children: [ { name: 'Analytics', path: '/analytics', component: '/food-labeling/dashboard/index', meta: { affixTab: true, title: 'foodLabeling.dashboard.title', ...foodLabelingRouteMeta, }, }, { name: 'Workspace', path: '/workspace', component: '/dashboard/workspace/index', meta: { hideInMenu: true, title: 'page.dashboard.workspace', }, }, ], }, { meta: { icon: 'lucide:tags', order: 10, title: 'foodLabeling.labeling.root', }, name: 'FoodLabelingLabeling', path: '/labeling', redirect: '/labels', children: [ { name: 'FoodLabelingLabels', path: '/labels', component: '/food-labeling/labeling/labels/index', meta: { icon: 'lucide:tag', title: 'foodLabeling.labeling.labels', ...labelingRouteMeta, }, }, { name: 'FoodLabelingLabelCategories', path: '/label-categories', component: '/food-labeling/labeling/label-categories/index', meta: { icon: 'lucide:folder-tree', title: 'foodLabeling.labeling.labelCategories', ...labelingRouteMeta, }, }, { name: 'FoodLabelingLabelTypes', path: '/label-types', component: '/food-labeling/labeling/label-types/index', meta: { icon: 'lucide:layers', title: 'foodLabeling.labeling.labelTypes', ...labelingRouteMeta, }, }, { name: 'FoodLabelingLabelTemplates', path: '/label-templates', component: '/food-labeling/labeling/label-templates/index', meta: { icon: 'lucide:layout-template', title: 'foodLabeling.labeling.labelTemplates', ...labelingRouteMeta, }, }, { name: 'FoodLabelingMultipleOptions', path: '/multiple-options', component: '/food-labeling/labeling/multiple-options/index', meta: { icon: 'lucide:list-checks', title: 'foodLabeling.labeling.multipleOptionSets', ...labelingRouteMeta, }, }, ], }, { meta: { icon: 'lucide:boxes', order: 15, title: 'foodLabeling.modules.section', }, name: 'FoodLabelingModules', path: '/modules', redirect: '/training', children: [ { name: 'FoodLabelingTraining', path: '/training', component: '/food-labeling/modules/training/index', meta: { icon: 'lucide:graduation-cap', title: 'foodLabeling.modules.menuTraining', ...managementRouteMeta, }, }, { name: 'FoodLabelingAlerts', path: '/alerts', component: '/food-labeling/modules/alerts/index', meta: { icon: 'lucide:bell', title: 'foodLabeling.modules.menuAlerts', ...managementRouteMeta, }, }, { name: 'FoodLabelingTasks', path: '/tasks', component: '/food-labeling/modules/tasks/index', meta: { icon: 'lucide:list-todo', title: 'foodLabeling.modules.menuTasks', ...managementRouteMeta, }, }, { name: 'FoodLabelingSensors', path: '/sensors', component: '/food-labeling/modules/sensors/index', meta: { icon: 'lucide:activity', title: 'foodLabeling.modules.menuSensors', ...managementRouteMeta, }, }, { name: 'FoodLabelingFoodWaste', path: '/food-waste', component: '/food-labeling/modules/food-waste/index', meta: { icon: 'lucide:apple', title: 'foodLabeling.modules.menuFoodWaste', ...managementRouteMeta, }, }, { name: 'FoodLabelingELabelModule', path: '/e-label-module', component: '/food-labeling/modules/e-label/index', meta: { icon: 'lucide:file-digit', title: 'foodLabeling.modules.menuELabel', ...managementRouteMeta, }, }, ], }, { meta: { icon: 'lucide:cloud-cog', order: 5, title: 'foodLabeling.platform.section', }, name: 'FoodLabelingPlatform', path: '/platform', redirect: '/platform/tenants', children: [ { name: 'FoodLabelingPlatformTenants', path: '/platform/tenants', component: '/food-labeling/platform/tenants/index', meta: { icon: 'lucide:building', title: 'foodLabeling.platform.tenants', ...managementRouteMeta, }, }, ], }, { meta: { icon: 'lucide:building-2', order: 20, title: 'foodLabeling.management.section', }, name: 'FoodLabelingManagement', path: '/management', redirect: '/account-management', children: [ { name: 'FoodLabelingAccountManagement', path: '/account-management', component: '/food-labeling/management/account-management/index', meta: { icon: 'lucide:users', title: 'foodLabeling.management.accountManagement', ...managementRouteMeta, }, }, { name: 'FoodLabelingMenuManagement', path: '/menu-management', component: '/food-labeling/management/menu-management/index', meta: { icon: 'lucide:utensils', title: 'foodLabeling.management.menuManagement', ...managementRouteMeta, }, }, { name: 'FoodLabelingDevices', path: '/devices', component: '/food-labeling/modules/devices/index', meta: { icon: 'lucide:smartphone', title: 'foodLabeling.modules.menuDevices', ...managementRouteMeta, }, }, { name: 'FoodLabelingReports', path: '/reports', component: '/food-labeling/management/reports/index', meta: { icon: 'lucide:file-bar-chart', title: 'foodLabeling.management.reports', /** 报表含 ECharts,标记已加载以减少过渡动画 */ loaded: true, ...managementRouteMeta, }, }, { name: 'FoodLabelingInvoices', path: '/invoices', component: '/food-labeling/modules/invoices/index', meta: { icon: 'lucide:receipt', title: 'foodLabeling.modules.menuInvoices', ...managementRouteMeta, }, }, { name: 'FoodLabelingQrCodes', path: '/qr-codes', component: '/food-labeling/modules/qr-codes/index', meta: { icon: 'lucide:qr-code', title: 'foodLabeling.modules.menuQrCodes', ...managementRouteMeta, }, }, { name: 'FoodLabelingSupport', path: '/support', component: '/food-labeling/management/support/index', meta: { icon: 'lucide:life-buoy', title: 'foodLabeling.management.support', ...managementRouteMeta, }, }, { name: 'FoodLabelingApi', path: '/api-settings', component: '/food-labeling/modules/api/index', meta: { icon: 'lucide:code-2', title: 'foodLabeling.modules.menuApi', ...managementRouteMeta, }, }, ], }, ...localRoutes, ];