local.ts 4.66 KB
import type { RouteRecordStringComponent } from '@vben/types';

/**
 * 非菜单路由(个人中心等)
 */
const localRoutes: RouteRecordStringComponent[] = [
  {
    component: '/_core/profile/index',
    meta: {
      icon: 'mingcute:profile-line',
      title: 'ui.widgets.profile',
      hideInMenu: true,
      requireHomeRedirect: true,
    },
    name: 'Profile',
    path: '/profile',
  },
];

/**
 * 泰额版本地菜单(对齐美国版平台端 Sidebar,路径与 US RBAC Router 一致)
 * meta.title 使用 i18n key:foodLabeling.*
 */
export const localMenuList: RouteRecordStringComponent[] = [
  {
    component: 'BasicLayout',
    meta: {
      order: -1,
      title: 'page.dashboard.title',
      noBasicLayout: true,
    },
    name: 'Dashboard',
    path: '/',
    redirect: '/analytics',
    children: [
      {
        name: 'Analytics',
        path: '/analytics',
        component: '/dashboard/analytics/index',
        meta: {
          affixTab: true,
          icon: 'lucide:area-chart',
          title: 'page.dashboard.analytics',
        },
      },
      {
        name: 'Workspace',
        path: '/workspace',
        component: '/dashboard/workspace/index',
        meta: {
          icon: 'carbon:workspace',
          title: 'page.dashboard.workspace',
        },
      },
    ],
  },
  {
    component: 'BasicLayout',
    meta: {
      order: 10,
      icon: 'lucide:tags',
      title: 'foodLabeling.labeling.root',
    },
    name: 'Labeling',
    path: '/labeling',
    redirect: '/labels',
    children: [
      {
        name: 'Labels',
        path: '/labels',
        component: '/food-labeling/labeling/labels/index',
        meta: {
          icon: 'lucide:tag',
          title: 'foodLabeling.labeling.labels',
        },
      },
      {
        name: 'LabelCategories',
        path: '/label-categories',
        component: '/food-labeling/labeling/label-categories/index',
        meta: {
          icon: 'lucide:layers',
          title: 'foodLabeling.labeling.labelCategories',
        },
      },
      {
        name: 'LabelTypes',
        path: '/label-types',
        component: '/food-labeling/labeling/label-types/index',
        meta: {
          icon: 'lucide:type',
          title: 'foodLabeling.labeling.labelTypes',
        },
      },
      {
        name: 'LabelTemplates',
        path: '/label-templates',
        component: '/food-labeling/labeling/label-templates/index',
        meta: {
          icon: 'lucide:layout-template',
          title: 'foodLabeling.labeling.labelTemplates',
        },
      },
      {
        name: 'LabelTemplateEditor',
        path: '/label-templates/editor',
        component: '/food-labeling/labeling/label-templates/editor/index',
        meta: {
          hideInMenu: true,
          title: 'foodLabeling.labelTemplates.editorPageTitle',
          activePath: '/label-templates',
        },
      },
      {
        name: 'MultipleOptionSets',
        path: '/multiple-options',
        component: '/food-labeling/labeling/multiple-options/index',
        meta: {
          icon: 'lucide:list-tree',
          title: 'foodLabeling.labeling.multipleOptionSets',
        },
      },
    ],
  },
  {
    component: 'BasicLayout',
    meta: {
      order: 20,
      icon: 'lucide:building-2',
      title: 'foodLabeling.management.section',
    },
    name: 'Management',
    path: '/management',
    redirect: '/account-management',
    children: [
      {
        name: 'AccountManagement',
        path: '/account-management',
        component: '/food-labeling/management/account-management/index',
        meta: {
          icon: 'lucide:users',
          keepAlive: false,
          noCache: true,
          title: 'foodLabeling.management.accountManagement',
        },
      },
      {
        name: 'MenuManagement',
        path: '/menu-management',
        component: '/food-labeling/management/menu-management/index',
        meta: {
          icon: 'lucide:utensils-crossed',
          keepAlive: false,
          noCache: true,
          title: 'foodLabeling.management.menuManagement',
        },
      },
      {
        name: 'Reports',
        path: '/reports',
        component: '/food-labeling/management/reports/index',
        meta: {
          icon: 'lucide:file-text',
          keepAlive: false,
          noCache: true,
          title: 'foodLabeling.management.reports',
        },
      },
      {
        name: 'Support',
        path: '/support',
        component: '/food-labeling/management/support/index',
        meta: {
          icon: 'lucide:help-circle',
          keepAlive: false,
          noCache: true,
          title: 'foodLabeling.management.support',
        },
      },
    ],
  },
  ...localRoutes,
];