import type { RouteRecordRaw } from 'vue-router';

import { preferences } from '@vben/preferences';

import { BasicLayout } from '#/layouts';

/** 基本路由，这些路由是必须存在的 */
const basicRoutes: RouteRecordRaw[] = [
  {
    component: BasicLayout,
    meta: {
      order: -1,
      title: '首页',
      i18nCode: 'page.dashboard.title',
      icon: 'lucide:layout-dashboard',
    },
    path: '/',
    name: 'Basic',
    redirect: preferences.app.defaultHomePath,
    children: [
      {
        name: 'Home',
        path: preferences.app.defaultHomePath,
        component: () => import('#/views/_core/home/index.vue'),
        meta: {
          affixTab: false,
          title: '首页',
          i18nCode: 'routes.basic.home',
          icon: 'icon-ym icon-ym-nav-home-fill',
        },
      },
    ],
  },
  {
    path: '/common-route',
    name: 'commonRoute',
    component: BasicLayout,
    meta: {
      title: 'commonRoute',
    },
    children: [
      {
        path: '/messageRecord',
        component: () => import('#/views/_core/messageRecord/index.vue'),
        name: 'messageRecord',
        meta: {
          title: '站内消息',
          i18nCode: 'routes.basic.messageRecord',
          icon: 'icon-ym icon-ym-sysNotice',
        },
      },
      {
        path: '/externalLink',
        component: () => import('#/views/common/externalLink/index.vue'),
        name: 'externalLink',
        meta: {
          title: '链接',
          i18nCode: 'routes.basic.externalLink',
          icon: 'icon-ym icon-ym-generator-link',
        },
      },
      {
        path: '/addFlow/:id',
        component: () => import('#/views/workFlow/addFlow/index.vue'),
        name: 'addFlow',
        meta: {
          title: '发起流程',
          i18nCode: 'routes.workFlow-addFlow',
          icon: 'icon-ym icon-ym-app-rename',
          ignoreAccess: true,
        },
      },
      {
        path: '/workFlowDetail',
        component: () => import('#/views/workFlow/workFlowDetail/index.vue'),
        name: 'workFlowDetail',
        meta: {
          title: '流程详情',
          i18nCode: 'routes.basic.workFlowDetail',
          icon: 'icon-ym icon-ym-workFlow',
          ignoreAccess: true,
        },
      },
      {
        path: '/previewModel',
        component: () => import('#/views/common/dynamicModel/index.vue'),
        name: 'previewModel',
        meta: {
          title: '功能预览',
          i18nCode: 'routes.basic.previewModel',
          icon: 'icon-ym icon-ym-btn-preview',
        },
      },
      {
        path: '/dataManage',
        component: () => import('#/views/common/dynamicModel/index.vue'),
        name: 'dataManage',
        meta: {
          title: '数据管理',
          i18nCode: 'routes.basic.dataManage',
          icon: 'icon-ym icon-ym-webForm',
        },
      },
      {
        path: '/tms/question/create',
        name: 'TmsQuestionCreate',
        component: () => import('#/views/x/tms/question/Form.vue'),
        meta: {
          title: '创建试题',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/question',
        },
      },
      {
        path: '/tms/question/edit/:id',
        name: 'TmsQuestionEdit',
        component: () => import('#/views/x/tms/question/Form.vue'),
        meta: {
          title: '编辑试题',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/question',
        },
      },
      {
        path: '/tms/selfTest/exam',
        name: 'TmsSelfTestExam',
        component: () => import('#/views/x/tms/selfTest/exam.vue'),
        meta: {
          title: '自我检测答题',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/selfTest',
        },
      },
      {
        path: '/tms/onlineExam/exam',
        name: 'TmsOnlineExamTake',
        component: () => import('#/views/x/tms/onlineExam/exam.vue'),
        meta: {
          title: '在线考试答题',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/onlineExam',
        },
      },
      {
        path: '/tms/onlineExam/detail/:id',
        name: 'TmsOnlineExamDetail',
        component: () => import('#/views/x/tms/onlineExam/Detail.vue'),
        meta: {
          title: '考试详情',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/onlineExam',
        },
      },
      {
        path: '/tms/examGrade/session/:id',
        name: 'TmsExamGradeSession',
        component: () => import('#/views/x/tms/examGrade/Session.vue'),
        meta: {
          title: '答卷列表',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/examGrade',
        },
      },
      {
        path: '/tms/examGrade/mark/:id',
        name: 'TmsExamGradeMark',
        component: () => import('#/views/x/tms/examGrade/Mark.vue'),
        meta: {
          title: '阅卷',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/examGrade',
        },
      },
      {
        path: '/tms/examScore/detail/:id',
        name: 'TmsExamScoreDetail',
        component: () => import('#/views/x/tms/examScore/Detail.vue'),
        meta: {
          title: '考生试卷列表',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/examScore',
        },
      },
      {
        path: '/tms/examScore/paper/:id',
        name: 'TmsExamScorePaper',
        component: () => import('#/views/x/tms/examScore/Paper.vue'),
        meta: {
          title: '考生试卷详情',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/examScore',
        },
      },
      {
        path: '/tms/trainArchive',
        name: 'TmsTrainArchiveBasic',
        component: () => import('#/views/x/tms/trainArchive/index.vue'),
        meta: {
          title: '个人培训档案',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
      {
        path: '/tms/trainRecord',
        name: 'TmsTrainRecordBasic',
        component: () => import('#/views/x/tms/trainRecord/index.vue'),
        meta: {
          title: '个人培训记录',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
      {
        path: '/tms/trainRecord/catalog/:id',
        name: 'TmsTrainRecordCatalog',
        component: () => import('#/views/x/tms/trainRecord/Catalog.vue'),
        meta: {
          title: '培训目录',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/trainRecord',
        },
      },
      {
        path: '/tms/record',
        name: 'TmsRecordBasic',
        component: () => import('#/views/x/tms/record/index.vue'),
        meta: {
          title: '培训记录',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
      {
        path: '/tms/record/ready',
        name: 'TmsRecordReady',
        component: () => import('#/views/x/tms/record/index.vue'),
        meta: {
          title: '可归档列表',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/record',
        },
      },
      {
        path: '/tms/record/archived',
        name: 'TmsRecordArchived',
        component: () => import('#/views/x/tms/record/index.vue'),
        meta: {
          title: '已归档列表',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/record',
        },
      },
      {
        path: '/tms/record/detail/:id',
        name: 'TmsRecordDetail',
        component: () => import('#/views/x/tms/record/Detail.vue'),
        meta: {
          title: '培训记录详情',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/record',
        },
      },
      {
        path: '/tms/record/sign/:id',
        name: 'TmsRecordSign',
        component: () => import('#/views/x/tms/record/Sign.vue'),
        meta: {
          title: '培训签到',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/record',
        },
      },
      {
        path: '/tms/record/edit/:id',
        name: 'TmsRecordEdit',
        component: () => import('#/views/x/tms/record/Edit.vue'),
        meta: {
          title: '修改培训记录',
          hideInMenu: true,
          ignoreAccess: true,
          currentActiveMenu: '/tms/record',
        },
      },
      {
        path: '/tms/trainMode',
        name: 'TmsTrainModeBasic',
        component: () => import('#/views/x/tms/trainMode/index.vue'),
        meta: {
          title: '培训方式',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
      {
        path: '/tms/signMode',
        name: 'TmsSignModeBasic',
        component: () => import('#/views/x/tms/signMode/index.vue'),
        meta: {
          title: '签到方式',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
      {
        path: '/tms/evalMode',
        name: 'TmsEvalModeBasic',
        component: () => import('#/views/x/tms/evalMode/index.vue'),
        meta: {
          title: '考核方式',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
      {
        path: '/tms/course',
        name: 'TmsCourseBasic',
        component: () => import('#/views/x/tms/course/index.vue'),
        meta: {
          title: '培训课程',
          hideInMenu: true,
          ignoreAccess: true,
        },
      },
    ],
  },
  {
    name: 'join',
    path: '/join',
    component: () => import('#/views/_core/join/index.vue'),
    meta: {
      hideMenu: true,
      title: '',
    },
  },
];

export { basicRoutes };
