feat: 前端搭建
This commit is contained in:
39
Yi.Ai.Vue3/src/routers/modules/dynamicRouter.ts
Normal file
39
Yi.Ai.Vue3/src/routers/modules/dynamicRouter.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
// 预留
|
||||
import router from '@/routers/index';
|
||||
import { useUserStore } from '@/stores';
|
||||
import { useAuthStore } from '@/stores/modules/auth';
|
||||
|
||||
export async function initDynamicRouter() {
|
||||
const userStore = useUserStore();
|
||||
const authStore = useAuthStore();
|
||||
|
||||
try {
|
||||
// 1、预留: 获取菜单列表 || 按钮权限列表 || 递归菜单数据
|
||||
await authStore.requestAuthMenuList();
|
||||
|
||||
// 2、判断当前用户是否拥有菜单权限
|
||||
// console.log('authStore.authMenuList', authStore.authMenuList);
|
||||
|
||||
if (authStore.authMenuList == null || authStore.authMenuList.length === 0) {
|
||||
userStore.logout();
|
||||
return;
|
||||
}
|
||||
|
||||
// 3、添加动态路由
|
||||
authStore.authMenuList.forEach((item: any) => {
|
||||
if (item.isFull === '0') {
|
||||
// 如果是全屏的话,直接为整个页面
|
||||
router.addRoute(item);
|
||||
}
|
||||
else {
|
||||
router.addRoute('layout', item);
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (error) {
|
||||
console.log(error);
|
||||
// 当菜单请求出错时,重定向到首页
|
||||
userStore.logout();
|
||||
return Promise.reject(error);
|
||||
}
|
||||
}
|
||||
78
Yi.Ai.Vue3/src/routers/modules/staticRouter.ts
Normal file
78
Yi.Ai.Vue3/src/routers/modules/staticRouter.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import type { RouteRecordRaw } from 'vue-router';
|
||||
import { HOME_URL } from '@/config';
|
||||
|
||||
// LayoutRouter[布局路由]
|
||||
export const layoutRouter: RouteRecordRaw[] = [
|
||||
{
|
||||
path: '/',
|
||||
redirect: HOME_URL,
|
||||
component: () => import('@/layouts/index.vue'),
|
||||
children: [
|
||||
{
|
||||
path: HOME_URL,
|
||||
name: 'chat',
|
||||
component: () => import('@/pages/chat/index.vue'),
|
||||
meta: {
|
||||
// title: '通用聊天页面',
|
||||
isDefaultChat: true,
|
||||
icon: 'HomeFilled',
|
||||
// isHide: '1', // 是否在菜单中隐藏[0是,1否] 预留
|
||||
// isKeepAlive: '0', // 是否缓存路由数据[0是,1否] 预留
|
||||
// isFull: '1', // 是否全屏[0是,1否] 预留
|
||||
// enName: "Master Station", // 英文名称 预留
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/chat/:id',
|
||||
name: 'chatWithId',
|
||||
component: () => import('@/pages/chat/index.vue'),
|
||||
meta: {
|
||||
// title: '带 ID 的聊天页面',
|
||||
isDefaultChat: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
// staticRouter[静态路由] 预留
|
||||
export const staticRouter: RouteRecordRaw[] = [];
|
||||
|
||||
// errorRouter (错误页面路由)
|
||||
export const errorRouter = [
|
||||
{
|
||||
path: '/403',
|
||||
name: '403',
|
||||
component: () => import('@/pages/error/403.vue'),
|
||||
meta: {
|
||||
title: '403页面',
|
||||
enName: '403 Page', // 英文名称
|
||||
icon: 'QuestionFilled', // 菜单图标
|
||||
isHide: '1', // 代表路由在菜单中是否隐藏,是否隐藏[0隐藏,1显示]
|
||||
isLink: '1', // 是否外链[有值则是外链]
|
||||
isKeepAlive: '0', // 是否缓存路由数据[0是,1否]
|
||||
isFull: '1', // 是否缓存全屏[0是,1否]
|
||||
isAffix: '1', // 是否缓存固定路由[0是,1否]
|
||||
},
|
||||
},
|
||||
{
|
||||
path: '/404',
|
||||
name: '404',
|
||||
component: () => import('@/pages/error/404.vue'),
|
||||
meta: {
|
||||
title: '404页面',
|
||||
enName: '404 Page', // 英文名称
|
||||
icon: 'CircleCloseFilled', // 菜单图标
|
||||
isHide: '1', // 代表路由在菜单中是否隐藏,是否隐藏[0隐藏,1显示]
|
||||
isLink: '1', // 是否外链[有值则是外链]
|
||||
isKeepAlive: '0', // 是否缓存路由数据[0是,1否]
|
||||
isFull: '1', // 是否缓存全屏[0是,1否]
|
||||
isAffix: '1', // 是否缓存固定路由[0是,1否]
|
||||
},
|
||||
},
|
||||
// 找不到path将跳转404页面
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
component: () => import('@/pages/error/404.vue'),
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user