/*
 * @Author: donghao donghao@supervision.ltd
 * @Date: 2024-03-27 14:56:27
 * @LastEditors: donghao donghao@supervision.ltd
 * @LastEditTime: 2024-05-20 15:20:34
 * @FilePath: \general-ai-manage\config\routes.ts
 * @Description: 页面路由池
 */
/**
 * @name umi 的路由配置
 * @description 只支持 path,component,routes,redirect,wrappers,name,icon 的配置
 * @param path  path 只支持两种占位符配置,第一种是动态参数 :id 的形式,第二种是 * 通配符,通配符只能出现路由字符串的最后。
 * @param component 配置 location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径,也可以是相对路径,如果是相对路径,会从 src/pages 开始找起。
 * @param routes 配置子路由,通常在需要为多个路径增加 layout 组件时使用。
 * @param redirect 配置路由跳转
 * @param wrappers 配置路由组件的包装组件,通过包装组件可以为当前的路由组件组合进更多的功能。 比如,可以用于路由级别的权限校验
 * @param name 配置路由的标题,默认读取国际化文件 menu.ts 中 menu.xxxx 的值,如配置 name 为 login,则读取 menu.ts 中 menu.login 的取值作为标题
 * @param icon 配置路由的图标,取值参考 https://ant.design/components/icon-cn, 注意去除风格后缀和大小写,如想要配置图标为 <StepBackwardOutlined /> 则取值应为 stepBackward 或 StepBackward,如想要配置图标为 <UserOutlined /> 则取值应为 user 或者 User
 * @doc https://umijs.org/docs/guides/routes
 */

// 主页路由模块
export const homeRoute = [
  {
    name: 'home-business-project',
    path: '/home/business-project',
    component: './Project/BusinessProject',
    access: 'canReadMenu',
    key: 'BusinessProject001',
    level: 1, // 一级菜单
  },
];

/**
 * @模型路由模块
 * @param modelRouteIndex 一级菜单
 * @param subModelRoute 二级菜单
 * @param level 菜单级数
 * @param isHideMenu 是否隐藏菜单
 * @param icon 字体图标
 * @param rootMenuKey 根目录key 识别高亮
 */

const modelRouteIndex = {
  name: 'model-manage',
  path: '/home/model-index',
  component: './Model/ModelIndex',
  access: 'canReadMenu',
  // menuIcon: 'icon-moxingliebiao-unselected',
  key: 'model000',
};
const subModelRoute = [
  {
    name: 'model-index',
    path: '/home/model-index',
    component: './Model/ModelIndex',
    access: 'canReadMenu',
    // menuIcon: 'icon-moxingliebiao-unselected',
    defaultIcon: 'modelListActiveIcon',
    // activeIcon: modelListActiveIicon,
    key: 'model001',
    rootMenuKey: 'model000',
  },
  {
    name: 'model-runtime-lib',
    path: '/home/runtime-lib',
    component: './Model/ModelRuntimeLib',
    access: 'canReadMenu',
    key: 'model002',
    menuIcon: 'icon-moxingyunhangku-unselected',
    level: 2,
    rootMenuKey: 'model000',
  },
  {
    name: 'model-detail',
    path: '/home/model-detail/:id',
    component: './Model/ModelDetail',
    access: 'canReadMenu',
    key: 'model003',
    isHideMenu: true,
    level: 2,
    rootMenuKey: 'model000',
  },
];

export const modelRoute = [
  {
    ...modelRouteIndex,
    level: 1,
    subMenu: [...subModelRoute],
  },
  ...subModelRoute,
];

/**
 * @外部菜单
 */
export const outerMenuRoute = {
  name: 'home',
  path: '/home',
  layout: false,
  access: 'canReadMenu',
  component: '@/layouts/HomeLayout',
  routes: [...homeRoute, ...modelRoute],
};

/**
 * @内部菜单
 */
export const innerMenuRoutes = [
  {
    name: 'business-info-index',
    path: '/business/index',
    component: './Project/BusinessInfo',
    access: 'canReadMenu',
    key: '1001',
    menuIcon: 'icon-qiyexinxi',
  },
  {
    name: 'business-device-group',
    path: '/business/deviceGroup',
    component: './Business/DeviceGroup',
    access: 'canReadMenu',
    key: '1002',
    menuIcon: 'icon-jiedianshezhi',
  },
  {
    name: 'business-model-index',
    path: '/business/businessModel',
    component: './Business/BusinessModel',
    access: 'canReadMenu',
    key: '1003',
    menuIcon: 'icon-yewumoxing',
  },
  {
    name: 'business-server-state',
    path: '/business/serverState',
    component: './Business/BusinessState',
    access: 'canReadMenu',
    key: '1004',
    menuIcon: 'icon-fuwuqizhuangtai',
  },
  {
    name: 'business-device-state',
    path: '/business/deviceState',
    component: './Business/BusinessState/deviceSate',
    access: 'canReadMenu',
    key: '1005',
    menuIcon: 'icon-shebeizhuangtai',
  },
];

// 全路由模块
export default [
  outerMenuRoute,
  {
    path: '/user',
    layout: false,
    routes: [
      {
        name: 'login',
        path: '/user/login',
        component: './User/Login',
      },
    ],
  },
  ...innerMenuRoutes,
  {
    path: '/',
    redirect: '/home/business-project',
  },
  {
    path: '*',
    layout: false,
    component: './404',
  },
  // test demo
  {
    path: '/admin',
    name: 'admin',
    icon: 'crown',
    routes: [
      {
        path: '/admin',
        redirect: '/admin/sub-page',
      },
      {
        path: '/admin/sub-page',
        name: 'sub-page',
        component: './Admin',
      },
    ],
  },
];