| | |
| | | import type { AppRouteModule } from '/@/router/types'; |
| | | import type { AppRouteModule } from '@/router/types'; |
| | | |
| | | import { getParentLayout, LAYOUT } from '/@/router/constant'; |
| | | import { t } from '/@/hooks/web/useI18n'; |
| | | import { getParentLayout, LAYOUT } from '@/router/constant'; |
| | | import { t } from '@/hooks/web/useI18n'; |
| | | |
| | | const feat: AppRouteModule = { |
| | | path: '/feat', |
| | |
| | | { |
| | | path: 'icon', |
| | | name: 'IconDemo', |
| | | component: () => import('/@/views/demo/feat/icon/index.vue'), |
| | | component: () => import('@/views/demo/feat/icon/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.icon'), |
| | | }, |
| | | }, |
| | | { |
| | | path: 'screenshot', |
| | | name: 'Screenshot', |
| | | component: () => import('@/views/demo/feat/screenshot/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.screenShot'), |
| | | }, |
| | | }, |
| | | { |
| | | path: 'ws', |
| | | name: 'WebSocket', |
| | | component: () => import('/@/views/demo/feat/ws/index.vue'), |
| | | component: () => import('@/views/demo/feat/ws/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.ws'), |
| | | }, |
| | |
| | | path: 'request', |
| | | name: 'RequestDemo', |
| | | // @ts-ignore |
| | | component: () => import('/@/views/demo/feat/request-demo/index.vue'), |
| | | component: () => import('@/views/demo/feat/request-demo/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.requestDemo'), |
| | | }, |
| | |
| | | { |
| | | path: 'session-timeout', |
| | | name: 'SessionTimeout', |
| | | component: () => import('/@/views/demo/feat/session-timeout/index.vue'), |
| | | component: () => import('@/views/demo/feat/session-timeout/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.sessionTimeout'), |
| | | }, |
| | |
| | | { |
| | | path: 'print', |
| | | name: 'Print', |
| | | component: () => import('/@/views/demo/feat/print/index.vue'), |
| | | component: () => import('@/views/demo/feat/print/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.print'), |
| | | }, |
| | |
| | | { |
| | | path: 'tabs', |
| | | name: 'TabsDemo', |
| | | component: () => import('/@/views/demo/feat/tabs/index.vue'), |
| | | component: () => import('@/views/demo/feat/tabs/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.tabs'), |
| | | hideChildrenInMenu: true, |
| | |
| | | { |
| | | path: 'detail/:id', |
| | | name: 'TabDetail', |
| | | component: () => import('/@/views/demo/feat/tabs/TabDetail.vue'), |
| | | component: () => import('@/views/demo/feat/tabs/TabDetail.vue'), |
| | | meta: { |
| | | currentActiveMenu: '/feat/tabs', |
| | | title: t('routes.demo.feat.tabDetail'), |
| | |
| | | { |
| | | path: 'flat', |
| | | name: 'BreadcrumbFlatDemo', |
| | | component: () => import('/@/views/demo/feat/breadcrumb/FlatList.vue'), |
| | | component: () => import('@/views/demo/feat/breadcrumb/FlatList.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.breadcrumbFlat'), |
| | | }, |
| | |
| | | { |
| | | path: 'flatDetail', |
| | | name: 'BreadcrumbFlatDetailDemo', |
| | | component: () => import('/@/views/demo/feat/breadcrumb/FlatListDetail.vue'), |
| | | component: () => import('@/views/demo/feat/breadcrumb/FlatListDetail.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.breadcrumbFlatDetail'), |
| | | hideMenu: true, |
| | |
| | | { |
| | | path: 'children', |
| | | name: 'BreadcrumbChildrenDemo', |
| | | component: () => import('/@/views/demo/feat/breadcrumb/ChildrenList.vue'), |
| | | component: () => import('@/views/demo/feat/breadcrumb/ChildrenList.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.breadcrumbChildren'), |
| | | }, |
| | |
| | | { |
| | | path: 'childrenDetail', |
| | | name: 'BreadcrumbChildrenDetailDemo', |
| | | component: () => import('/@/views/demo/feat/breadcrumb/ChildrenListDetail.vue'), |
| | | component: () => import('@/views/demo/feat/breadcrumb/ChildrenListDetail.vue'), |
| | | meta: { |
| | | currentActiveMenu: '/feat/breadcrumb/children', |
| | | title: t('routes.demo.feat.breadcrumbChildrenDetail'), |
| | |
| | | { |
| | | path: 'context-menu', |
| | | name: 'ContextMenuDemo', |
| | | component: () => import('/@/views/demo/feat/context-menu/index.vue'), |
| | | component: () => import('@/views/demo/feat/context-menu/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.contextMenu'), |
| | | }, |
| | |
| | | { |
| | | path: 'download', |
| | | name: 'DownLoadDemo', |
| | | component: () => import('/@/views/demo/feat/download/index.vue'), |
| | | component: () => import('@/views/demo/feat/download/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.download'), |
| | | }, |
| | |
| | | { |
| | | path: 'click-out-side', |
| | | name: 'ClickOutSideDemo', |
| | | component: () => import('/@/views/demo/feat/click-out-side/index.vue'), |
| | | component: () => import('@/views/demo/feat/click-out-side/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.clickOutSide'), |
| | | }, |
| | |
| | | { |
| | | path: 'img-preview', |
| | | name: 'ImgPreview', |
| | | component: () => import('/@/views/demo/feat/img-preview/index.vue'), |
| | | component: () => import('@/views/demo/feat/img-preview/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.imgPreview'), |
| | | }, |
| | |
| | | { |
| | | path: 'copy', |
| | | name: 'CopyDemo', |
| | | component: () => import('/@/views/demo/feat/copy/index.vue'), |
| | | component: () => import('@/views/demo/feat/copy/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.copy'), |
| | | }, |
| | | }, |
| | | { |
| | | path: 'ellipsis', |
| | | name: 'EllipsisDemo', |
| | | component: () => import('@/views/demo/feat/ellipsis/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.ellipsis'), |
| | | }, |
| | | }, |
| | | { |
| | | path: 'msg', |
| | | name: 'MsgDemo', |
| | | component: () => import('/@/views/demo/feat/msg/index.vue'), |
| | | component: () => import('@/views/demo/feat/msg/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.msg'), |
| | | }, |
| | |
| | | { |
| | | path: 'watermark', |
| | | name: 'WatermarkDemo', |
| | | component: () => import('/@/views/demo/feat/watermark/index.vue'), |
| | | component: () => import('@/views/demo/feat/watermark/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.watermark'), |
| | | }, |
| | |
| | | { |
| | | path: 'ripple', |
| | | name: 'RippleDemo', |
| | | component: () => import('/@/views/demo/feat/ripple/index.vue'), |
| | | component: () => import('@/views/demo/feat/ripple/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.ripple'), |
| | | }, |
| | |
| | | { |
| | | path: 'full-screen', |
| | | name: 'FullScreenDemo', |
| | | component: () => import('/@/views/demo/feat/full-screen/index.vue'), |
| | | component: () => import('@/views/demo/feat/full-screen/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.fullScreen'), |
| | | }, |
| | |
| | | { |
| | | path: '/error-log', |
| | | name: 'ErrorLog', |
| | | component: () => import('/@/views/sys/error-log/index.vue'), |
| | | component: () => import('@/views/sys/error-log/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.errorLog'), |
| | | }, |
| | |
| | | { |
| | | path: 'customExport', |
| | | name: 'CustomExport', |
| | | component: () => import('/@/views/demo/excel/CustomExport.vue'), |
| | | component: () => import('@/views/demo/excel/CustomExport.vue'), |
| | | meta: { |
| | | title: t('routes.demo.excel.customExport'), |
| | | }, |
| | |
| | | { |
| | | path: 'jsonExport', |
| | | name: 'JsonExport', |
| | | component: () => import('/@/views/demo/excel/JsonExport.vue'), |
| | | component: () => import('@/views/demo/excel/JsonExport.vue'), |
| | | meta: { |
| | | title: t('routes.demo.excel.jsonExport'), |
| | | }, |
| | |
| | | { |
| | | path: 'arrayExport', |
| | | name: 'ArrayExport', |
| | | component: () => import('/@/views/demo/excel/ArrayExport.vue'), |
| | | component: () => import('@/views/demo/excel/ArrayExport.vue'), |
| | | meta: { |
| | | title: t('routes.demo.excel.arrayExport'), |
| | | }, |
| | |
| | | { |
| | | path: 'importExcel', |
| | | name: 'ImportExcel', |
| | | component: () => import('/@/views/demo/excel/ImportExcel.vue'), |
| | | component: () => import('@/views/demo/excel/ImportExcel.vue'), |
| | | meta: { |
| | | title: t('routes.demo.excel.importExcel'), |
| | | }, |
| | |
| | | { |
| | | path: 'testTab/:id', |
| | | name: 'TestTab', |
| | | component: () => import('/@/views/demo/feat/tab-params/index.vue'), |
| | | component: () => import('@/views/demo/feat/tab-params/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.tab'), |
| | | carryParam: true, |
| | |
| | | { |
| | | path: 'testTab/id1', |
| | | name: 'TestTab1', |
| | | component: () => import('/@/views/demo/feat/tab-params/index.vue'), |
| | | component: () => import('@/views/demo/feat/tab-params/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.tab1'), |
| | | carryParam: true, |
| | |
| | | { |
| | | path: 'testTab/id2', |
| | | name: 'TestTab2', |
| | | component: () => import('/@/views/demo/feat/tab-params/index.vue'), |
| | | component: () => import('@/views/demo/feat/tab-params/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.tab2'), |
| | | carryParam: true, |
| | |
| | | { |
| | | path: 'sub1', |
| | | name: 'TestParam_1', |
| | | component: () => import('/@/views/demo/feat/menu-params/index.vue'), |
| | | component: () => import('@/views/demo/feat/menu-params/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.menu1'), |
| | | ignoreKeepAlive: true, |
| | |
| | | { |
| | | path: 'sub2', |
| | | name: 'TestParam_2', |
| | | component: () => import('/@/views/demo/feat/menu-params/index.vue'), |
| | | component: () => import('@/views/demo/feat/menu-params/index.vue'), |
| | | meta: { |
| | | title: t('routes.demo.feat.menu2'), |
| | | ignoreKeepAlive: true, |