Commit 250cb9fc authored by lvxiaowu's avatar lvxiaowu

x

parent de1f1100
...@@ -4,6 +4,8 @@ import './index.css'; ...@@ -4,6 +4,8 @@ import './index.css';
import App from './App'; import App from './App';
import * as serviceWorker from './serviceWorker'; import * as serviceWorker from './serviceWorker';
ReactDOM.render( ReactDOM.render(
<App />, <App />,
document.getElementById('root') document.getElementById('root')
......
...@@ -5,7 +5,7 @@ import SiderMenu from './siderMenu'; ...@@ -5,7 +5,7 @@ import SiderMenu from './siderMenu';
import './index.scss'; import './index.scss';
import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons'; import { MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons';
import { withRouter, RouteComponentProps } from 'react-router-dom';
const { Header, Footer, Content } = Layout; const { Header, Footer, Content } = Layout;
// 如果没有相应的登录校验跳转login页面 // 如果没有相应的登录校验跳转login页面
...@@ -22,7 +22,7 @@ interface BasicPageI { ...@@ -22,7 +22,7 @@ interface BasicPageI {
} }
// 基本的 layout 布局 // 基本的 layout 布局
const BasicPage: React.FC<BasicPageI> = props => { const BasicPage: React.FC<RouteComponentProps> = props => {
const [collapsed, set_collapse] = useState(false); const [collapsed, set_collapse] = useState(false);
const [menuWidth, set_menuWidth] = useState(200); const [menuWidth, set_menuWidth] = useState(200);
const token = sessionStorage.getItem('token') || 888; const token = sessionStorage.getItem('token') || 888;
...@@ -35,6 +35,7 @@ const BasicPage: React.FC<BasicPageI> = props => { ...@@ -35,6 +35,7 @@ const BasicPage: React.FC<BasicPageI> = props => {
<Layout style={{ minHeight: '100vh' }}> <Layout style={{ minHeight: '100vh' }}>
<SiderMenu <SiderMenu
collapsed={collapsed} collapsed={collapsed}
pathName={props.match.path}
style={{ style={{
overflow: 'auto', overflow: 'auto',
height: '100vh', height: '100vh',
...@@ -77,4 +78,4 @@ const BasicPage: React.FC<BasicPageI> = props => { ...@@ -77,4 +78,4 @@ const BasicPage: React.FC<BasicPageI> = props => {
return <Login />; return <Login />;
} }
}; };
export default BasicPage; export default withRouter(BasicPage);
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Layout, Menu } from 'antd'; import { Layout, Menu } from 'antd';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { createFromIconfontCN } from '@ant-design/icons';
import { PieChartOutlined, UserOutlined } from '@ant-design/icons'; const MyIcon = createFromIconfontCN({
scriptUrl: '//at.alicdn.com/t/font_n8ucanheuka6pqfr.js' // 在 iconfont.cn 上生成
});
const { Sider } = Layout; const { Sider } = Layout;
const { SubMenu } = Menu; const { SubMenu } = Menu;
interface ConfigI { interface ConfigI {
collapsed: boolean; collapsed: boolean;
pathName: string;
style?: any; style?: any;
} }
const MenuBar: React.FC<ConfigI> = props => { const MenuBar: React.FC<ConfigI> = props => {
const [defKey, set_defKey] = useState('1'); const [defKey, set_defKey] = useState(
const [openKey, set_openKey] = useState(''); window.sessionStorage.getItem('menu_defKey') || '1'
);
useEffect(() => { const [openKey, set_openKey] = useState(
let menu_defKey = window.sessionStorage.getItem('menu_defKey') || '1'; window.sessionStorage.getItem('menu_openKey') || '1'
let menu_openKey = window.sessionStorage.getItem('menu_openKey') || '1'; );
// console.log('menu_defKey', menu_defKey);
// console.log('menu_openKey', menu_openKey);
set_defKey(menu_defKey);
set_openKey(menu_openKey);
}, []);
const routerConf = [ const routerConf = [
{ {
key: '1', key: '1',
title: '订单列表', title: '订单列表',
path: '/orderList', path: '/orderList',
icon: <PieChartOutlined /> icon: 'icon-gongdan',
subs: []
}, },
{ {
key: '2', key: '2',
title: '兑换码', title: '兑换码',
path: '', path: '',
icon: <UserOutlined />, icon: 'icon-set',
subs: [ subs: [
{ {
key: '3', key: '3',
title: '兑换码列表', title: '兑换码列表',
path: '/exchangeCode', path: '/exchangeCode',
icon: '' icon: 'icon-jixiao'
}, },
{ {
key: '4', key: '4',
title: '兑换码生成', title: '兑换码生成',
path: '/generateCode', path: '/generateCode',
icon: '' icon: 'icon-people'
} }
] ]
} }
]; ];
useEffect(() => {
matchPath(routerConf);
}, []);
const matchPath = (routerConf: any[]) => {
const curPathName = props.pathName;
const match = (routeItem: any, defKey: string, openKey: string) => {
if (routeItem.path === curPathName) {
set_defKey(defKey);
set_openKey(openKey);
window.sessionStorage.setItem('menu_defKey', defKey);
window.sessionStorage.setItem('menu_openKey', openKey);
}
};
routerConf.map(item => {
if (item.subs.length === 0) {
match(item, item.key, item.key);
}
if (item.subs.length) {
item.subs.map((d: any) => {
match(d, d.key, item.key);
});
}
});
};
const CreateIcon = (type: string) => {
return <MyIcon type={type} />;
};
const CreateItem = (item: any) => { const CreateItem = (item: any) => {
return ( return (
<Menu.Item key={item.key} icon={item.icon}> <Menu.Item key={item.key} icon={CreateIcon(item.icon)}>
<Link to={item.path}>{item.title}</Link> <Link to={item.path}>{item.title}</Link>
</Menu.Item> </Menu.Item>
); );
...@@ -66,7 +98,11 @@ const MenuBar: React.FC<ConfigI> = props => { ...@@ -66,7 +98,11 @@ const MenuBar: React.FC<ConfigI> = props => {
return routerConf.map(item => { return routerConf.map(item => {
if (item.subs && item.subs.length > 0) { if (item.subs && item.subs.length > 0) {
return ( return (
<SubMenu key={item.key} icon={item.icon} title={item.title}> <SubMenu
key={item.key}
icon={CreateIcon(item.icon)}
title={item.title}
>
{item.subs.map(idx => CreateItem(idx))} {item.subs.map(idx => CreateItem(idx))}
</SubMenu> </SubMenu>
); );
...@@ -108,8 +144,7 @@ const MenuBar: React.FC<ConfigI> = props => { ...@@ -108,8 +144,7 @@ const MenuBar: React.FC<ConfigI> = props => {
<Menu <Menu
theme="dark" theme="dark"
defaultSelectedKeys={[defKey]} defaultSelectedKeys={[defKey]}
defaultOpenKeys={['2']} defaultOpenKeys={[openKey]}
// defaultOpenKeys={[openKey]}
selectedKeys={[defKey]} selectedKeys={[defKey]}
mode="inline" mode="inline"
onClick={handleClick} onClick={handleClick}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment