refactor routes

dev
FrozenArcher 2024-03-14 19:46:11 +08:00
parent 787b52c096
commit 7ee06b9901
2 changed files with 32 additions and 11 deletions

View File

@ -8,7 +8,7 @@ import {
} from '@ant-design/icons'; } from '@ant-design/icons';
import type { MenuProps } from 'antd'; import type { MenuProps } from 'antd';
import { Breadcrumb, Layout, Menu, theme } from 'antd'; import { Breadcrumb, Layout, Menu, theme } from 'antd';
import { AppRouter } from './router'; import { AppRouter, routes, routeName } from './router';
import PageFooter from './components/PageFooter'; import PageFooter from './components/PageFooter';
const { Content, Sider } = Layout; const { Content, Sider } = Layout;
@ -62,17 +62,17 @@ function defSubMenu(
} }
const items: MenuItem[] = [ const items: MenuItem[] = [
defMenu('主页', 'mainpage', <DesktopOutlined />, '/'), defMenu('主页', 'mainpage', <DesktopOutlined />, routes.main),
defRootMenu('展示信息管理', 'sub1', <UserOutlined />, [ defRootMenu('展示信息管理', 'sub1', <UserOutlined />, [
defSubMenu('选项1', '1', '/admin/hello1'), defSubMenu('排班表管理', '1', routes.admin.dutyTable),
defSubMenu('选项2', '2', '/admin/hello2'), defSubMenu('成员权限管理', '2', routes.admin.userControl),
defSubMenu('选项3', '3', '/admin/hello3'), defSubMenu('值班信息管理', '3', routes.admin.dutyInfo),
]), ]),
defRootMenu('值班组长', 'sub2', <TeamOutlined />, [ defRootMenu('值班组长', 'sub2', <TeamOutlined />, [
defSubMenu('选项1', '4', '/duty/hi1'), defSubMenu('选项1', '4', '/duty/hi1'),
defSubMenu('选项2', '5', '/duty/hi2'), defSubMenu('选项2', '5', '/duty/hi2'),
]), ]),
defMenu('关于我们', 'aboutpage', <UserOutlined />, '/about'), defMenu('关于我们', 'aboutpage', <UserOutlined />, routes.about),
]; ];
interface BreadcrumbItem { interface BreadcrumbItem {
@ -97,7 +97,7 @@ const AppLayout: FC<{ router: JSX.Element }> = (props) => {
for (var i = 1; i < pathArray.length; i++) { for (var i = 1; i < pathArray.length; i++) {
currentRouteItems.push({ currentRouteItems.push({
href: '', href: '',
title: <span>{pathArray[i]}</span>, title: <span>{routeName.get(pathArray[i])}</span>,
}); });
} }

View File

@ -1,15 +1,36 @@
import { Routes, Route } from 'react-router-dom'; import { Routes, Route } from 'react-router-dom';
import Todo from './components/Todo'; import Todo from './components/Todo';
export const routes = {
main: '/',
about: '/about',
admin: {
dutyTable: '/admin/dutytable',
userControl: '/admin/usercontrol',
dutyInfo: '/admin/dutyinfo',
},
duty: {},
};
export const routeName = new Map<string, string>([
['admin', '展示信息'],
['about', '关于我们'],
['duty', '值班组长'],
['dutytable', '排班表'],
['usercontrol', '成员权限'],
['dutyinfo', '值班信息'],
]);
export const AppRouter: React.FC = () => { export const AppRouter: React.FC = () => {
return ( return (
<Routes> <Routes>
<Route path='/' element={<Todo />} /> <Route path={routes.main} element={<Todo />} />
<Route path='/admin/hello1' element={<Todo />} /> <Route path={routes.admin.dutyTable} element={<Todo />} />
<Route path='/admin/hello2' element={<Todo />} /> <Route path={routes.admin.userControl} element={<Todo />} />
<Route path='/admin/hello3' element={<Todo />} /> <Route path={routes.admin.dutyInfo} element={<Todo />} />
<Route path='/duty/hi1' element={<Todo />} /> <Route path='/duty/hi1' element={<Todo />} />
<Route path='/duty/hi2' element={<Todo />} /> <Route path='/duty/hi2' element={<Todo />} />
<Route path={routes.about} element={<Todo />} />
</Routes> </Routes>
); );
}; };