mirror of
https://github.com/jeecgboot/JeecgBoot.git
synced 2026-02-04 01:25:34 +08:00
前端和后端源码,合并到一个git仓库中,方便用户下载,避免前后端不匹配的问题
This commit is contained in:
73
jeecgboot-vue3/src/router/routes/basic.ts
Normal file
73
jeecgboot-vue3/src/router/routes/basic.ts
Normal file
@ -0,0 +1,73 @@
|
||||
import type { AppRouteRecordRaw } from '/@/router/types';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
import { REDIRECT_NAME, LAYOUT, EXCEPTION_COMPONENT, PAGE_NOT_FOUND_NAME } from '/@/router/constant';
|
||||
|
||||
// 404 on a page
|
||||
export const PAGE_NOT_FOUND_ROUTE: AppRouteRecordRaw = {
|
||||
path: '/:path(.*)*',
|
||||
name: PAGE_NOT_FOUND_NAME,
|
||||
component: LAYOUT,
|
||||
meta: {
|
||||
title: 'ErrorPage',
|
||||
hideBreadcrumb: true,
|
||||
hideMenu: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '/:path(.*)*',
|
||||
name: PAGE_NOT_FOUND_NAME,
|
||||
component: EXCEPTION_COMPONENT,
|
||||
meta: {
|
||||
title: 'ErrorPage',
|
||||
hideBreadcrumb: true,
|
||||
hideMenu: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const REDIRECT_ROUTE: AppRouteRecordRaw = {
|
||||
path: '/redirect',
|
||||
component: LAYOUT,
|
||||
name: 'RedirectTo',
|
||||
meta: {
|
||||
title: REDIRECT_NAME,
|
||||
hideBreadcrumb: true,
|
||||
hideMenu: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '/redirect/:path(.*)',
|
||||
name: REDIRECT_NAME,
|
||||
component: () => import('/@/views/sys/redirect/index.vue'),
|
||||
meta: {
|
||||
title: REDIRECT_NAME,
|
||||
hideBreadcrumb: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const ERROR_LOG_ROUTE: AppRouteRecordRaw = {
|
||||
path: '/error-log',
|
||||
name: 'ErrorLog',
|
||||
component: LAYOUT,
|
||||
redirect: '/error-log/list',
|
||||
meta: {
|
||||
title: 'ErrorLog',
|
||||
hideBreadcrumb: true,
|
||||
hideChildrenInMenu: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'list',
|
||||
name: 'ErrorLogList',
|
||||
component: () => import('/@/views/sys/error-log/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.basic.errorLogList'),
|
||||
hideBreadcrumb: true,
|
||||
currentActiveMenu: '/error-log',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
68
jeecgboot-vue3/src/router/routes/index.ts
Normal file
68
jeecgboot-vue3/src/router/routes/index.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import type { AppRouteRecordRaw, AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/routes/basic';
|
||||
|
||||
import { mainOutRoutes } from './mainOut';
|
||||
import { PageEnum } from '/@/enums/pageEnum';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const modules = import.meta.glob('./modules/**/*.ts', { eager: true });
|
||||
|
||||
const routeModuleList: AppRouteModule[] = [];
|
||||
|
||||
// 加入到路由集合中
|
||||
Object.keys(modules).forEach((key) => {
|
||||
const mod = (modules as Recordable)[key].default || {};
|
||||
const modList = Array.isArray(mod) ? [...mod] : [mod];
|
||||
routeModuleList.push(...modList);
|
||||
});
|
||||
|
||||
export const asyncRoutes = [PAGE_NOT_FOUND_ROUTE, ...routeModuleList];
|
||||
|
||||
export const RootRoute: AppRouteRecordRaw = {
|
||||
path: '/',
|
||||
name: 'Root',
|
||||
redirect: PageEnum.BASE_HOME,
|
||||
meta: {
|
||||
title: 'Root',
|
||||
},
|
||||
};
|
||||
|
||||
export const LoginRoute: AppRouteRecordRaw = {
|
||||
path: '/login',
|
||||
name: 'Login',
|
||||
//新版后台登录,如果想要使用旧版登录放开即可
|
||||
// component: () => import('/@/views/sys/login/Login.vue'),
|
||||
component: () => import('/@/views/system/loginmini/MiniLogin.vue'),
|
||||
meta: {
|
||||
title: t('routes.basic.login'),
|
||||
},
|
||||
};
|
||||
|
||||
//update-begin---author:wangshuai ---date:20220629 for:auth2登录页面路由------------
|
||||
export const Oauth2LoginRoute: AppRouteRecordRaw = {
|
||||
path: '/oauth2-app/login',
|
||||
name: 'oauth2-app-login',
|
||||
//新版钉钉免登录,如果想要使用旧版放开即可
|
||||
// component: () => import('/@/views/sys/login/OAuth2Login.vue'),
|
||||
component: () => import('/@/views/system/loginmini/OAuth2Login.vue'),
|
||||
meta: {
|
||||
title: t('routes.oauth2.login'),
|
||||
},
|
||||
};
|
||||
//update-end---author:wangshuai ---date:20220629 for:auth2登录页面路由------------
|
||||
|
||||
/**
|
||||
* 【通过token直接静默登录】流程办理登录页面 中转跳转
|
||||
*/
|
||||
export const TokenLoginRoute: AppRouteRecordRaw = {
|
||||
path: '/tokenLogin',
|
||||
name: 'TokenLoginRoute',
|
||||
component: () => import('/@/views/sys/login/TokenLoginPage.vue'),
|
||||
meta: {
|
||||
title: '带token登录页面',
|
||||
ignoreAuth: true,
|
||||
},
|
||||
};
|
||||
// Basic routing without permission
|
||||
export const basicRoutes = [LoginRoute, RootRoute, ...mainOutRoutes, REDIRECT_ROUTE, PAGE_NOT_FOUND_ROUTE, TokenLoginRoute, Oauth2LoginRoute];
|
||||
22
jeecgboot-vue3/src/router/routes/mainOut.ts
Normal file
22
jeecgboot-vue3/src/router/routes/mainOut.ts
Normal file
@ -0,0 +1,22 @@
|
||||
/**
|
||||
The routing of this file will not show the layout.
|
||||
It is an independent new page.
|
||||
the contents of the file still need to log in to access
|
||||
*/
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
// test
|
||||
// http:ip:port/main-out
|
||||
export const mainOutRoutes: AppRouteModule[] = [
|
||||
{
|
||||
path: '/main-out',
|
||||
name: 'MainOut',
|
||||
component: () => import('/@/views/demo/main-out/index.vue'),
|
||||
meta: {
|
||||
title: 'MainOut',
|
||||
ignoreAuth: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export const mainOutRouteNames = mainOutRoutes.map((item) => item.name);
|
||||
31
jeecgboot-vue3/src/router/routes/modules/about.ts
Normal file
31
jeecgboot-vue3/src/router/routes/modules/about.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const dashboard: AppRouteModule = {
|
||||
path: '/about',
|
||||
name: 'About',
|
||||
component: LAYOUT,
|
||||
redirect: '/about/index',
|
||||
meta: {
|
||||
hideChildrenInMenu: true,
|
||||
icon: 'simple-icons:about-dot-me',
|
||||
title: t('routes.dashboard.about'),
|
||||
orderNo: 100000,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
name: 'AboutPage',
|
||||
component: () => import('/@/views/sys/about/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.dashboard.about'),
|
||||
icon: 'simple-icons:about-dot-me',
|
||||
hideMenu: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default dashboard;
|
||||
37
jeecgboot-vue3/src/router/routes/modules/dashboard.ts
Normal file
37
jeecgboot-vue3/src/router/routes/modules/dashboard.ts
Normal file
@ -0,0 +1,37 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const dashboard: AppRouteModule = {
|
||||
path: '/dashboard',
|
||||
name: 'Dashboard',
|
||||
component: LAYOUT,
|
||||
redirect: '/dashboard/analysis',
|
||||
meta: {
|
||||
orderNo: 10,
|
||||
icon: 'ion:grid-outline',
|
||||
title: t('routes.dashboard.dashboard'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'analysis',
|
||||
name: 'Analysis',
|
||||
component: () => import('/@/views/dashboard/Analysis/index.vue'),
|
||||
meta: {
|
||||
// affix: true,
|
||||
title: t('routes.dashboard.analysis'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'workbench',
|
||||
name: 'Workbench',
|
||||
component: () => import('/@/views/dashboard/workbench/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.dashboard.workbench'),
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default dashboard;
|
||||
79
jeecgboot-vue3/src/router/routes/modules/demo/charts.ts
Normal file
79
jeecgboot-vue3/src/router/routes/modules/demo/charts.ts
Normal file
@ -0,0 +1,79 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { getParentLayout, LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const charts: AppRouteModule = {
|
||||
path: '/charts',
|
||||
name: 'Charts',
|
||||
component: LAYOUT,
|
||||
redirect: '/charts/echarts/map',
|
||||
meta: {
|
||||
orderNo: 500,
|
||||
icon: 'ion:bar-chart-outline',
|
||||
title: t('routes.demo.charts.charts'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'baiduMap',
|
||||
name: 'BaiduMap',
|
||||
meta: {
|
||||
title: t('routes.demo.charts.baiduMap'),
|
||||
},
|
||||
component: () => import('/@/views/demo/charts/map/Baidu.vue'),
|
||||
},
|
||||
{
|
||||
path: 'aMap',
|
||||
name: 'AMap',
|
||||
meta: {
|
||||
title: t('routes.demo.charts.aMap'),
|
||||
},
|
||||
component: () => import('/@/views/demo/charts/map/Gaode.vue'),
|
||||
},
|
||||
{
|
||||
path: 'googleMap',
|
||||
name: 'GoogleMap',
|
||||
meta: {
|
||||
title: t('routes.demo.charts.googleMap'),
|
||||
},
|
||||
component: () => import('/@/views/demo/charts/map/Google.vue'),
|
||||
},
|
||||
{
|
||||
path: 'echarts',
|
||||
name: 'Echarts',
|
||||
component: getParentLayout('Echarts'),
|
||||
meta: {
|
||||
title: 'Echarts',
|
||||
},
|
||||
redirect: '/charts/echarts/map',
|
||||
children: [
|
||||
{
|
||||
path: 'map',
|
||||
name: 'Map',
|
||||
component: () => import('/@/views/demo/charts/Map.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.charts.map'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'line',
|
||||
name: 'Line',
|
||||
component: () => import('/@/views/demo/charts/Line.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.charts.line'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'pie',
|
||||
name: 'Pie',
|
||||
component: () => import('/@/views/demo/charts/Pie.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.charts.pie'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default charts;
|
||||
692
jeecgboot-vue3/src/router/routes/modules/demo/comp.ts
Normal file
692
jeecgboot-vue3/src/router/routes/modules/demo/comp.ts
Normal file
@ -0,0 +1,692 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { getParentLayout, LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const comp: AppRouteModule = {
|
||||
path: '/comp',
|
||||
name: 'Comp',
|
||||
component: LAYOUT,
|
||||
redirect: '/comp/basic',
|
||||
meta: {
|
||||
orderNo: 30,
|
||||
icon: 'ion:layers-outline',
|
||||
title: t('routes.demo.comp.comp'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'jeecg',
|
||||
name: 'JeecgDemo',
|
||||
redirect: '/comp/jeecg/basic',
|
||||
component: getParentLayout('JeecgDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.jeecg'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'JAreaLinkage',
|
||||
component: () => import('/@/views/demo/jeecg/JeecgComponents.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.jeecg.JAreaLinkage'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'oneToMore',
|
||||
name: 'oneToMoreDemo',
|
||||
component: () => import('/@/views/demo/vextable/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.oneToMore'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'BasicDemo',
|
||||
component: getParentLayout('BasicDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.basic'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'button',
|
||||
name: 'ButtonDemo',
|
||||
component: () => import('/@/views/demo/comp/button/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.basic.button'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'icon',
|
||||
name: 'IconDemo',
|
||||
component: () => import('/@/views/demo/feat/icon/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.icon'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'msg',
|
||||
name: 'MsgDemo',
|
||||
component: () => import('/@/views/demo/feat/msg/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.msg'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'tabs',
|
||||
name: 'TabsDemo',
|
||||
component: () => import('/@/views/demo/feat/tabs/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.tabs'),
|
||||
hideChildrenInMenu: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'detail/:id',
|
||||
name: 'TabDetail',
|
||||
component: () => import('/@/views/demo/feat/tabs/TabDetail.vue'),
|
||||
meta: {
|
||||
currentActiveMenu: '/comp/basic/tabs',
|
||||
title: t('routes.demo.feat.tabDetail'),
|
||||
hideMenu: true,
|
||||
dynamicLevel: 3,
|
||||
realPath: '/comp/basic/tabs/detail',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: 'form',
|
||||
name: 'FormDemo',
|
||||
redirect: '/comp/form/basic',
|
||||
component: getParentLayout('FormDemo'),
|
||||
meta: {
|
||||
// icon: 'mdi:form-select',
|
||||
title: t('routes.demo.form.form'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'FormBasicDemo',
|
||||
component: () => import('/@/views/demo/form/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.basic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'useForm',
|
||||
name: 'UseFormDemo',
|
||||
component: () => import('/@/views/demo/form/UseForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.useForm'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'refForm',
|
||||
name: 'RefFormDemo',
|
||||
component: () => import('/@/views/demo/form/RefForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.refForm'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'advancedForm',
|
||||
name: 'AdvancedFormDemo',
|
||||
component: () => import('/@/views/demo/form/AdvancedForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.advancedForm'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'ruleForm',
|
||||
name: 'RuleFormDemo',
|
||||
component: () => import('/@/views/demo/form/RuleForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.ruleForm'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'dynamicForm',
|
||||
name: 'DynamicFormDemo',
|
||||
component: () => import('/@/views/demo/form/DynamicForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.dynamicForm'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'customerForm',
|
||||
name: 'CustomerFormDemo',
|
||||
component: () => import('/@/views/demo/form/CustomerForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.customerForm'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'appendForm',
|
||||
name: 'appendFormDemo',
|
||||
component: () => import('/@/views/demo/form/AppendForm.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.form.appendForm'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'table',
|
||||
name: 'TableDemo',
|
||||
redirect: '/comp/table/basic',
|
||||
component: getParentLayout('TableDemo'),
|
||||
meta: {
|
||||
// icon: 'carbon:table-split',
|
||||
title: t('routes.demo.table.table'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'TableBasicDemo',
|
||||
component: () => import('/@/views/demo/table/Basic.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.basic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'treeTable',
|
||||
name: 'TreeTableDemo',
|
||||
component: () => import('/@/views/demo/table/TreeTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.treeTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'fetchTable',
|
||||
name: 'FetchTableDemo',
|
||||
component: () => import('/@/views/demo/table/FetchTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.fetchTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'fixedColumn',
|
||||
name: 'FixedColumnDemo',
|
||||
component: () => import('/@/views/demo/table/FixedColumn.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.fixedColumn'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'customerCell',
|
||||
name: 'CustomerCellDemo',
|
||||
component: () => import('/@/views/demo/table/CustomerCell.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.customerCell'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'formTable',
|
||||
name: 'FormTableDemo',
|
||||
component: () => import('/@/views/demo/table/FormTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.formTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'useTable',
|
||||
name: 'UseTableDemo',
|
||||
component: () => import('/@/views/demo/table/UseTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.useTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'refTable',
|
||||
name: 'RefTableDemo',
|
||||
component: () => import('/@/views/demo/table/RefTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.refTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'multipleHeader',
|
||||
name: 'MultipleHeaderDemo',
|
||||
component: () => import('/@/views/demo/table/MultipleHeader.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.multipleHeader'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'mergeHeader',
|
||||
name: 'MergeHeaderDemo',
|
||||
component: () => import('/@/views/demo/table/MergeHeader.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.mergeHeader'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'nestedTable',
|
||||
name: 'nestedTableDemo',
|
||||
component: () => import('/@/views/demo/table/NestedTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.nestedTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'expandTable',
|
||||
name: 'ExpandTableDemo',
|
||||
component: () => import('/@/views/demo/table/ExpandTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.expandTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'fixedHeight',
|
||||
name: 'FixedHeightDemo',
|
||||
component: () => import('/@/views/demo/table/FixedHeight.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.fixedHeight'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'footerTable',
|
||||
name: 'FooterTableDemo',
|
||||
component: () => import('/@/views/demo/table/FooterTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.footerTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'editCellTable',
|
||||
name: 'EditCellTableDemo',
|
||||
component: () => import('/@/views/demo/table/EditCellTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.editCellTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'editRowTable',
|
||||
name: 'EditRowTableDemo',
|
||||
component: () => import('/@/views/demo/table/EditRowTable.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.editRowTable'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'authColumn',
|
||||
name: 'AuthColumnDemo',
|
||||
component: () => import('/@/views/demo/table/AuthColumn.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.table.authColumn'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'modal',
|
||||
name: 'ModalDemo',
|
||||
redirect: '/comp/modal/basic',
|
||||
component: getParentLayout('ModalDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.modal'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'ModalBasicDemo',
|
||||
component: () => import('/@/views/demo/comp/modal/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.modal.basic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'drawer',
|
||||
name: 'DrawerDemo',
|
||||
component: () => import('/@/views/demo/comp/drawer/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.modal.drawer'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: 'third',
|
||||
name: 'ThirdDemo',
|
||||
redirect: '/comp/third/basic',
|
||||
component: getParentLayout('ModalDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.third'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'CropperDemo',
|
||||
component: () => import('/@/views/demo/comp/cropper/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.cropperImage'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'qrcode',
|
||||
name: 'QrCodeDemo',
|
||||
component: () => import('/@/views/demo/comp/qrcode/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.qrcode'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'strength-meter',
|
||||
name: 'StrengthMeterDemo',
|
||||
component: () => import('/@/views/demo/comp/strength-meter/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.strength'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'upload',
|
||||
name: 'UploadDemo',
|
||||
component: () => import('/@/views/demo/comp/upload/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.upload'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'loading',
|
||||
name: 'LoadingDemo',
|
||||
component: () => import('/@/views/demo/comp/loading/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.loading'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'timestamp',
|
||||
name: 'TimeDemo',
|
||||
component: () => import('/@/views/demo/comp/time/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.time'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'countTo',
|
||||
name: 'CountTo',
|
||||
component: () => import('/@/views/demo/comp/count-to/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.countTo'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'transition',
|
||||
name: 'transitionDemo',
|
||||
component: () => import('/@/views/demo/comp/transition/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.transition'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'print',
|
||||
name: 'Print',
|
||||
component: () => import('/@/views/demo/feat/print/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.print'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'img-preview',
|
||||
name: 'ImgPreview',
|
||||
component: () => import('/@/views/demo/feat/img-preview/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.imgPreview'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'download',
|
||||
name: 'DownLoadDemo',
|
||||
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'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.clickOutSide'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'copy',
|
||||
name: 'CopyDemo',
|
||||
component: () => import('/@/views/demo/feat/copy/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.copy'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'ripple',
|
||||
name: 'RippleDemo',
|
||||
component: () => import('/@/views/demo/feat/ripple/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.ripple'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'tree',
|
||||
name: 'TreeDemo',
|
||||
redirect: '/comp/tree/basic',
|
||||
component: getParentLayout('TreeDemo'),
|
||||
meta: {
|
||||
// icon: 'clarity:tree-view-line',
|
||||
title: t('routes.demo.comp.tree'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'BasicTreeDemo',
|
||||
component: () => import('/@/views/demo/tree/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.treeBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'editTree',
|
||||
name: 'EditTreeDemo',
|
||||
component: () => import('/@/views/demo/tree/EditTree.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.editTree'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'actionTree',
|
||||
name: 'ActionTreeDemo',
|
||||
component: () => import('/@/views/demo/tree/ActionTree.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.actionTree'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'editor',
|
||||
name: 'EditorDemo',
|
||||
redirect: '/comp/editor/markdown',
|
||||
component: getParentLayout('EditorDemo'),
|
||||
meta: {
|
||||
// icon: 'carbon:table-split',
|
||||
title: t('routes.demo.editor.editor'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'json',
|
||||
component: () => import('/@/views/demo/editor/json/index.vue'),
|
||||
name: 'JsonEditorDemo',
|
||||
meta: {
|
||||
title: t('routes.demo.editor.jsonEditor'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'markdown',
|
||||
component: getParentLayout('MarkdownDemo'),
|
||||
name: 'MarkdownDemo',
|
||||
meta: {
|
||||
title: t('routes.demo.editor.markdown'),
|
||||
},
|
||||
redirect: '/comp/editor/markdown/index',
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
name: 'MarkDownBasicDemo',
|
||||
component: () => import('/@/views/demo/editor/markdown/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.editor.tinymceBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'editor',
|
||||
name: 'MarkDownFormDemo',
|
||||
component: () => import('/@/views/demo/editor/markdown/Editor.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.editor.tinymceForm'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: 'tinymce',
|
||||
component: getParentLayout('TinymceDemo'),
|
||||
name: 'TinymceDemo',
|
||||
meta: {
|
||||
title: t('routes.demo.editor.tinymce'),
|
||||
},
|
||||
redirect: '/comp/editor/tinymce/index',
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
name: 'TinymceBasicDemo',
|
||||
component: () => import('/@/views/demo/editor/tinymce/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.editor.tinymceBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'editor',
|
||||
name: 'TinymceFormDemo',
|
||||
component: () => import('/@/views/demo/editor/tinymce/Editor.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.editor.tinymceForm'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'scroll',
|
||||
name: 'ScrollDemo',
|
||||
redirect: '/comp/scroll/basic',
|
||||
component: getParentLayout('ScrollDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.scroll'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'BasicScrollDemo',
|
||||
component: () => import('/@/views/demo/comp/scroll/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.scrollBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'action',
|
||||
name: 'ActionScrollDemo',
|
||||
component: () => import('/@/views/demo/comp/scroll/Action.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.scrollAction'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'virtualScroll',
|
||||
name: 'VirtualScrollDemo',
|
||||
component: () => import('/@/views/demo/comp/scroll/VirtualScroll.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.virtualScroll'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: 'desc',
|
||||
name: 'DescDemo',
|
||||
component: () => import('/@/views/demo/comp/desc/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.desc'),
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
path: 'lazy',
|
||||
name: 'LazyDemo',
|
||||
component: getParentLayout('LazyDemo'),
|
||||
redirect: '/comp/lazy/basic',
|
||||
meta: {
|
||||
title: t('routes.demo.comp.lazy'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'BasicLazyDemo',
|
||||
component: () => import('/@/views/demo/comp/lazy/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.lazyBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'transition',
|
||||
name: 'BasicTransitionDemo',
|
||||
component: () => import('/@/views/demo/comp/lazy/Transition.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.lazyTransition'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'verify',
|
||||
name: 'VerifyDemo',
|
||||
component: getParentLayout('VerifyDemo'),
|
||||
redirect: '/comp/verify/drag',
|
||||
meta: {
|
||||
title: t('routes.demo.comp.verify'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'drag',
|
||||
name: 'VerifyDragDemo',
|
||||
component: () => import('/@/views/demo/comp/verify/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.verifyDrag'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'rotate',
|
||||
name: 'VerifyRotateDemo',
|
||||
component: () => import('/@/views/demo/comp/verify/Rotate.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.comp.verifyRotate'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default comp;
|
||||
196
jeecgboot-vue3/src/router/routes/modules/demo/feat.ts
Normal file
196
jeecgboot-vue3/src/router/routes/modules/demo/feat.ts
Normal file
@ -0,0 +1,196 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { getParentLayout, LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const feat: AppRouteModule = {
|
||||
path: '/feat',
|
||||
name: 'FeatDemo',
|
||||
component: LAYOUT,
|
||||
redirect: '/feat/icon',
|
||||
meta: {
|
||||
orderNo: 19,
|
||||
icon: 'ion:git-compare-outline',
|
||||
title: t('routes.demo.feat.feat'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'ws',
|
||||
name: 'WebSocket',
|
||||
component: () => import('/@/views/demo/feat/ws/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.ws'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'session-timeout',
|
||||
name: 'SessionTimeout',
|
||||
component: () => import('/@/views/demo/feat/session-timeout/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.sessionTimeout'),
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
path: 'breadcrumb',
|
||||
name: 'BreadcrumbDemo',
|
||||
redirect: '/feat/breadcrumb/flat',
|
||||
component: getParentLayout('BreadcrumbDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.breadcrumb'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'flat',
|
||||
name: 'BreadcrumbFlatDemo',
|
||||
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'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.breadcrumbFlatDetail'),
|
||||
hideMenu: true,
|
||||
hideTab: true,
|
||||
currentActiveMenu: '/feat/breadcrumb/flat',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'children',
|
||||
name: 'BreadcrumbChildrenDemo',
|
||||
component: () => import('/@/views/demo/feat/breadcrumb/ChildrenList.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.breadcrumbChildren'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'childrenDetail',
|
||||
name: 'BreadcrumbChildrenDetailDemo',
|
||||
component: () => import('/@/views/demo/feat/breadcrumb/ChildrenListDetail.vue'),
|
||||
meta: {
|
||||
currentActiveMenu: '/feat/breadcrumb/children',
|
||||
title: t('routes.demo.feat.breadcrumbChildrenDetail'),
|
||||
//hideTab: true,
|
||||
// hideMenu: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: 'context-menu',
|
||||
name: 'ContextMenuDemo',
|
||||
component: () => import('/@/views/demo/feat/context-menu/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.contextMenu'),
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
path: 'copy',
|
||||
name: 'CopyDemo',
|
||||
component: () => import('/@/views/demo/feat/copy/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.copy'),
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
path: 'watermark',
|
||||
name: 'WatermarkDemo',
|
||||
component: () => import('/@/views/demo/feat/watermark/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.watermark'),
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
path: 'full-screen',
|
||||
name: 'FullScreenDemo',
|
||||
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'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.errorLog'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'testTab/:id',
|
||||
name: 'TestTab',
|
||||
component: () => import('/@/views/demo/feat/tab-params/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.tab'),
|
||||
carryParam: true,
|
||||
hidePathForChildren: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'testTab/id1',
|
||||
name: 'TestTab1',
|
||||
component: () => import('/@/views/demo/feat/tab-params/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.tab1'),
|
||||
carryParam: true,
|
||||
ignoreRoute: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'testTab/id2',
|
||||
name: 'TestTab2',
|
||||
component: () => import('/@/views/demo/feat/tab-params/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.tab2'),
|
||||
carryParam: true,
|
||||
ignoreRoute: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'testParam/:id',
|
||||
name: 'TestParam',
|
||||
component: getParentLayout('TestParam'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.menu'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'sub1',
|
||||
name: 'TestParam_1',
|
||||
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'),
|
||||
meta: {
|
||||
title: t('routes.demo.feat.menu2'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default feat;
|
||||
48
jeecgboot-vue3/src/router/routes/modules/demo/iframe.ts
Normal file
48
jeecgboot-vue3/src/router/routes/modules/demo/iframe.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { LAYOUT } from '/@/router/constant';
|
||||
const IFrame = () => import('/@/views/sys/iframe/FrameBlank.vue');
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const iframe: AppRouteModule = {
|
||||
path: '/frame',
|
||||
name: 'Frame',
|
||||
component: LAYOUT,
|
||||
redirect: '/frame/doc',
|
||||
meta: {
|
||||
orderNo: 1000,
|
||||
icon: 'ion:tv-outline',
|
||||
title: t('routes.demo.iframe.frame'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'doc',
|
||||
name: 'Doc',
|
||||
component: IFrame,
|
||||
meta: {
|
||||
frameSrc: 'https://vvbin.cn/doc-next/',
|
||||
title: t('routes.demo.iframe.doc'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'antv',
|
||||
name: 'Antv',
|
||||
component: IFrame,
|
||||
meta: {
|
||||
frameSrc: 'https://2x.antdv.com/docs/vue/introduce-cn/',
|
||||
title: t('routes.demo.iframe.antv'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'https://vvbin.cn/doc-next/',
|
||||
name: 'DocExternal',
|
||||
component: IFrame,
|
||||
meta: {
|
||||
title: t('routes.demo.iframe.docExternal'),
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default iframe;
|
||||
68
jeecgboot-vue3/src/router/routes/modules/demo/level.ts
Normal file
68
jeecgboot-vue3/src/router/routes/modules/demo/level.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { getParentLayout, LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const permission: AppRouteModule = {
|
||||
path: '/level',
|
||||
name: 'Level',
|
||||
component: LAYOUT,
|
||||
redirect: '/level/menu1/menu1-1/menu1-1-1',
|
||||
meta: {
|
||||
orderNo: 2000,
|
||||
icon: 'ion:menu-outline',
|
||||
title: t('routes.demo.level.level'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'menu1',
|
||||
name: 'Menu1Demo',
|
||||
component: getParentLayout('Menu1Demo'),
|
||||
meta: {
|
||||
title: 'Menu1',
|
||||
},
|
||||
redirect: '/level/menu1/menu1-1/menu1-1-1',
|
||||
children: [
|
||||
{
|
||||
path: 'menu1-1',
|
||||
name: 'Menu11Demo',
|
||||
component: getParentLayout('Menu11Demo'),
|
||||
meta: {
|
||||
title: 'Menu1-1',
|
||||
},
|
||||
redirect: '/level/menu1/menu1-1/menu1-1-1',
|
||||
children: [
|
||||
{
|
||||
path: 'menu1-1-1',
|
||||
name: 'Menu111Demo',
|
||||
component: () => import('/@/views/demo/level/Menu111.vue'),
|
||||
meta: {
|
||||
title: 'Menu111',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'menu1-2',
|
||||
name: 'Menu12Demo',
|
||||
component: () => import('/@/views/demo/level/Menu12.vue'),
|
||||
meta: {
|
||||
title: 'Menu1-2',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'menu2',
|
||||
name: 'Menu2Demo',
|
||||
component: () => import('/@/views/demo/level/Menu2.vue'),
|
||||
meta: {
|
||||
title: 'Menu2',
|
||||
// ignoreKeepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default permission;
|
||||
255
jeecgboot-vue3/src/router/routes/modules/demo/page.ts
Normal file
255
jeecgboot-vue3/src/router/routes/modules/demo/page.ts
Normal file
@ -0,0 +1,255 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { getParentLayout, LAYOUT } from '/@/router/constant';
|
||||
import { ExceptionEnum } from '/@/enums/exceptionEnum';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const ExceptionPage = () => import('/@/views/sys/exception/Exception.vue');
|
||||
|
||||
const page: AppRouteModule = {
|
||||
path: '/page-demo',
|
||||
name: 'PageDemo',
|
||||
component: LAYOUT,
|
||||
redirect: '/page-demo/form/basic',
|
||||
meta: {
|
||||
orderNo: 20,
|
||||
icon: 'ion:aperture-outline',
|
||||
title: t('routes.demo.page.page'),
|
||||
},
|
||||
children: [
|
||||
// =============================form start=============================
|
||||
{
|
||||
path: 'form',
|
||||
name: 'FormPage',
|
||||
redirect: '/page-demo/form/basic',
|
||||
component: getParentLayout('FormPage'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.form'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'FormBasicPage',
|
||||
component: () => import('/@/views/demo/page/form/basic/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.formBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'step',
|
||||
name: 'FormStepPage',
|
||||
component: () => import('/@/views/demo/page/form/step/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.formStep'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'high',
|
||||
name: 'FormHightPage',
|
||||
component: () => import('/@/views/demo/page/form/high/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.formHigh'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// =============================form end=============================
|
||||
// =============================desc start=============================
|
||||
{
|
||||
path: 'desc',
|
||||
name: 'DescPage',
|
||||
component: getParentLayout('DescPage'),
|
||||
redirect: '/page-demo/desc/basic',
|
||||
meta: {
|
||||
title: t('routes.demo.page.desc'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'DescBasicPage',
|
||||
component: () => import('/@/views/demo/page/desc/basic/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.descBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'high',
|
||||
name: 'DescHighPage',
|
||||
component: () => import('/@/views/demo/page/desc/high/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.descHigh'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// =============================desc end=============================
|
||||
|
||||
// =============================result start=============================
|
||||
{
|
||||
path: 'result',
|
||||
name: 'ResultPage',
|
||||
redirect: '/page-demo/result/success',
|
||||
component: getParentLayout('ResultPage'),
|
||||
|
||||
meta: {
|
||||
title: t('routes.demo.page.result'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'success',
|
||||
name: 'ResultSuccessPage',
|
||||
component: () => import('/@/views/demo/page/result/success/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.resultSuccess'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'fail',
|
||||
name: 'ResultFailPage',
|
||||
component: () => import('/@/views/demo/page/result/fail/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.resultFail'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// =============================result end=============================
|
||||
|
||||
// =============================account start=============================
|
||||
{
|
||||
path: 'account',
|
||||
name: 'AccountPage',
|
||||
component: getParentLayout('AccountPage'),
|
||||
redirect: '/page-demo/account/setting',
|
||||
meta: {
|
||||
title: t('routes.demo.page.account'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'center',
|
||||
name: 'AccountCenterPage',
|
||||
component: () => import('/@/views/demo/page/account/center/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.accountCenter'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'setting',
|
||||
name: 'AccountSettingPage',
|
||||
component: () => import('/@/views/demo/page/account/setting/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.accountSetting'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// =============================account end=============================
|
||||
// =============================exception start=============================
|
||||
{
|
||||
path: 'exception',
|
||||
name: 'ExceptionPage',
|
||||
component: getParentLayout('ExceptionPage'),
|
||||
redirect: '/page-demo/exception/404',
|
||||
meta: {
|
||||
title: t('routes.demo.page.exception'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '403',
|
||||
name: 'PageNotAccess',
|
||||
component: ExceptionPage,
|
||||
props: {
|
||||
status: ExceptionEnum.PAGE_NOT_ACCESS,
|
||||
},
|
||||
meta: {
|
||||
title: '403',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '404',
|
||||
name: 'PageNotFound',
|
||||
component: ExceptionPage,
|
||||
props: {
|
||||
status: ExceptionEnum.PAGE_NOT_FOUND,
|
||||
},
|
||||
meta: {
|
||||
title: '404',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '500',
|
||||
name: 'ServiceError',
|
||||
component: ExceptionPage,
|
||||
props: {
|
||||
status: ExceptionEnum.ERROR,
|
||||
},
|
||||
meta: {
|
||||
title: '500',
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'net-work-error',
|
||||
name: 'NetWorkError',
|
||||
component: ExceptionPage,
|
||||
props: {
|
||||
status: ExceptionEnum.NET_WORK_ERROR,
|
||||
},
|
||||
meta: {
|
||||
title: t('routes.demo.page.netWorkError'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'not-data',
|
||||
name: 'NotData',
|
||||
component: ExceptionPage,
|
||||
props: {
|
||||
status: ExceptionEnum.PAGE_NOT_DATA,
|
||||
},
|
||||
meta: {
|
||||
title: t('routes.demo.page.notData'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// =============================exception end=============================
|
||||
// =============================list start=============================
|
||||
{
|
||||
path: 'list',
|
||||
name: 'ListPage',
|
||||
component: getParentLayout('ListPage'),
|
||||
redirect: '/page-demo/list/card',
|
||||
meta: {
|
||||
title: t('routes.demo.page.list'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'basic',
|
||||
name: 'ListBasicPage',
|
||||
component: () => import('/@/views/demo/page/list/basic/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.listBasic'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'card',
|
||||
name: 'ListCardPage',
|
||||
component: () => import('/@/views/demo/page/list/card/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.listCard'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'search',
|
||||
name: 'ListSearchPage',
|
||||
component: () => import('/@/views/demo/page/list/search/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.page.listSearch'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
// =============================list end=============================
|
||||
],
|
||||
};
|
||||
|
||||
export default page;
|
||||
92
jeecgboot-vue3/src/router/routes/modules/demo/permission.ts
Normal file
92
jeecgboot-vue3/src/router/routes/modules/demo/permission.ts
Normal file
@ -0,0 +1,92 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { getParentLayout, LAYOUT } from '/@/router/constant';
|
||||
import { RoleEnum } from '/@/enums/roleEnum';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const permission: AppRouteModule = {
|
||||
path: '/permission',
|
||||
name: 'Permission',
|
||||
component: LAYOUT,
|
||||
redirect: '/permission/front/page',
|
||||
meta: {
|
||||
orderNo: 15,
|
||||
icon: 'ion:key-outline',
|
||||
title: t('routes.demo.permission.permission'),
|
||||
},
|
||||
|
||||
children: [
|
||||
{
|
||||
path: 'front',
|
||||
name: 'PermissionFrontDemo',
|
||||
component: getParentLayout('PermissionFrontDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.front'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'page',
|
||||
name: 'FrontPageAuth',
|
||||
component: () => import('/@/views/demo/permission/front/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.frontPage'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'btn',
|
||||
name: 'FrontBtnAuth',
|
||||
component: () => import('/@/views/demo/permission/front/Btn.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.frontBtn'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'auth-pageA',
|
||||
name: 'FrontAuthPageA',
|
||||
component: () => import('/@/views/demo/permission/front/AuthPageA.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.frontTestA'),
|
||||
roles: [RoleEnum.SUPER],
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'auth-pageB',
|
||||
name: 'FrontAuthPageB',
|
||||
component: () => import('/@/views/demo/permission/front/AuthPageB.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.frontTestB'),
|
||||
roles: [RoleEnum.TEST],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: 'back',
|
||||
name: 'PermissionBackDemo',
|
||||
component: getParentLayout('PermissionBackDemo'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.back'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'page',
|
||||
name: 'BackAuthPage',
|
||||
component: () => import('/@/views/demo/permission/back/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.backPage'),
|
||||
},
|
||||
},
|
||||
{
|
||||
path: 'btn',
|
||||
name: 'BackAuthBtn',
|
||||
component: () => import('/@/views/demo/permission/back/Btn.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.permission.backBtn'),
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default permission;
|
||||
31
jeecgboot-vue3/src/router/routes/modules/demo/setup.ts
Normal file
31
jeecgboot-vue3/src/router/routes/modules/demo/setup.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const setup: AppRouteModule = {
|
||||
path: '/setup',
|
||||
name: 'SetupDemo',
|
||||
component: LAYOUT,
|
||||
redirect: '/setup/index',
|
||||
meta: {
|
||||
orderNo: 90000,
|
||||
hideChildrenInMenu: true,
|
||||
icon: 'whh:paintroll',
|
||||
title: t('routes.demo.setup.page'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
name: 'SetupDemoPage',
|
||||
component: () => import('/@/views/demo/setup/index.vue'),
|
||||
meta: {
|
||||
title: t('routes.demo.setup.page'),
|
||||
icon: 'whh:paintroll',
|
||||
hideMenu: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default setup;
|
||||
86
jeecgboot-vue3/src/router/routes/modules/demo/system.ts
Normal file
86
jeecgboot-vue3/src/router/routes/modules/demo/system.ts
Normal file
@ -0,0 +1,86 @@
|
||||
import type { AppRouteModule } from '/@/router/types';
|
||||
|
||||
import { LAYOUT } from '/@/router/constant';
|
||||
import { t } from '/@/hooks/web/useI18n';
|
||||
|
||||
const system: AppRouteModule = {
|
||||
path: '/system',
|
||||
name: 'System',
|
||||
component: LAYOUT,
|
||||
redirect: '/system/account',
|
||||
meta: {
|
||||
orderNo: 2000,
|
||||
icon: 'ion:settings-outline',
|
||||
title: t('routes.demo.system.moduleName'),
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'test',
|
||||
name: 'TestManagement',
|
||||
meta: {
|
||||
title: t('routes.demo.system.test'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
component: () => import('/@/views/demo/system/test/index.vue'),
|
||||
},
|
||||
{
|
||||
path: 'account',
|
||||
name: 'AccountManagement',
|
||||
meta: {
|
||||
title: t('routes.demo.system.account'),
|
||||
ignoreKeepAlive: false,
|
||||
},
|
||||
component: () => import('/@/views/demo/system/account/index.vue'),
|
||||
},
|
||||
{
|
||||
path: 'account_detail/:id',
|
||||
name: 'AccountDetail',
|
||||
meta: {
|
||||
hideMenu: true,
|
||||
title: t('routes.demo.system.account_detail'),
|
||||
ignoreKeepAlive: true,
|
||||
showMenu: false,
|
||||
currentActiveMenu: '/system/account',
|
||||
},
|
||||
component: () => import('/@/views/demo/system/account/AccountDetail.vue'),
|
||||
},
|
||||
{
|
||||
path: 'role',
|
||||
name: 'RoleManagement',
|
||||
meta: {
|
||||
title: t('routes.demo.system.role'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
component: () => import('/@/views/demo/system/role/index.vue'),
|
||||
},
|
||||
{
|
||||
path: 'menu',
|
||||
name: 'MenuManagement',
|
||||
meta: {
|
||||
title: t('routes.demo.system.menu'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
component: () => import('/@/views/demo/system/menu/index.vue'),
|
||||
},
|
||||
{
|
||||
path: 'dept',
|
||||
name: 'DeptManagement',
|
||||
meta: {
|
||||
title: t('routes.demo.system.dept'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
component: () => import('/@/views/demo/system/dept/index.vue'),
|
||||
},
|
||||
{
|
||||
path: 'changePassword',
|
||||
name: 'ChangePassword',
|
||||
meta: {
|
||||
title: t('routes.demo.system.password'),
|
||||
ignoreKeepAlive: true,
|
||||
},
|
||||
component: () => import('/@/views/demo/system/password/index.vue'),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export default system;
|
||||
23
jeecgboot-vue3/src/router/routes/staticRouter.ts
Normal file
23
jeecgboot-vue3/src/router/routes/staticRouter.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import type { AppRouteRecordRaw } from '/@/router/types';
|
||||
import { LAYOUT } from '/@/router/constant';
|
||||
|
||||
export const AI_ROUTE: AppRouteRecordRaw = {
|
||||
path: '',
|
||||
name: 'ai-parent',
|
||||
component: LAYOUT,
|
||||
meta: {
|
||||
title: 'ai',
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '/ai',
|
||||
name: 'ai',
|
||||
component: () => import('/@/views/dashboard/ai/index.vue'),
|
||||
meta: {
|
||||
title: 'AI助手',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
export const staticRoutesList = [AI_ROUTE];
|
||||
Reference in New Issue
Block a user