Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
inclass-partners
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
趣选课
inclass-partners
Commits
250cb9fc
Commit
250cb9fc
authored
May 28, 2020
by
lvxiaowu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x
parent
de1f1100
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
23 deletions
+61
-23
index.tsx
src/index.tsx
+2
-0
basicPage.tsx
src/layout/basicPage.tsx
+4
-3
siderMenu.tsx
src/layout/siderMenu.tsx
+55
-20
No files found.
src/index.tsx
View file @
250cb9fc
...
...
@@ -4,6 +4,8 @@ import './index.css';
import
App
from
'./App'
;
import
*
as
serviceWorker
from
'./serviceWorker'
;
ReactDOM
.
render
(
<
App
/>,
document
.
getElementById
(
'root'
)
...
...
src/layout/basicPage.tsx
View file @
250cb9fc
...
...
@@ -5,7 +5,7 @@ import SiderMenu from './siderMenu';
import
'./index.scss'
;
import
{
MenuUnfoldOutlined
,
MenuFoldOutlined
}
from
'@ant-design/icons'
;
import
{
withRouter
,
RouteComponentProps
}
from
'react-router-dom'
;
const
{
Header
,
Footer
,
Content
}
=
Layout
;
// 如果没有相应的登录校验跳转login页面
...
...
@@ -22,7 +22,7 @@ interface BasicPageI {
}
// 基本的 layout 布局
const
BasicPage
:
React
.
FC
<
BasicPageI
>
=
props
=>
{
const
BasicPage
:
React
.
FC
<
RouteComponentProps
>
=
props
=>
{
const
[
collapsed
,
set_collapse
]
=
useState
(
false
);
const
[
menuWidth
,
set_menuWidth
]
=
useState
(
200
);
const
token
=
sessionStorage
.
getItem
(
'token'
)
||
888
;
...
...
@@ -35,6 +35,7 @@ const BasicPage: React.FC<BasicPageI> = props => {
<
Layout
style=
{
{
minHeight
:
'100vh'
}
}
>
<
SiderMenu
collapsed=
{
collapsed
}
pathName=
{
props
.
match
.
path
}
style=
{
{
overflow
:
'auto'
,
height
:
'100vh'
,
...
...
@@ -77,4 +78,4 @@ const BasicPage: React.FC<BasicPageI> = props => {
return
<
Login
/>;
}
};
export
default
BasicPage
;
export
default
withRouter
(
BasicPage
)
;
src/layout/siderMenu.tsx
View file @
250cb9fc
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Layout
,
Menu
}
from
'antd'
;
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
{
SubMenu
}
=
Menu
;
interface
ConfigI
{
collapsed
:
boolean
;
pathName
:
string
;
style
?:
any
;
}
const
MenuBar
:
React
.
FC
<
ConfigI
>
=
props
=>
{
const
[
defKey
,
set_defKey
]
=
useState
(
'1'
);
const
[
openKey
,
set_openKey
]
=
useState
(
''
);
useEffect
(()
=>
{
let
menu_defKey
=
window
.
sessionStorage
.
getItem
(
'menu_defKey'
)
||
'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
[
defKey
,
set_defKey
]
=
useState
(
window
.
sessionStorage
.
getItem
(
'menu_defKey'
)
||
'1'
);
const
[
openKey
,
set_openKey
]
=
useState
(
window
.
sessionStorage
.
getItem
(
'menu_openKey'
)
||
'1'
);
const
routerConf
=
[
{
key
:
'1'
,
title
:
'订单列表'
,
path
:
'/orderList'
,
icon
:
<
PieChartOutlined
/>
icon
:
'icon-gongdan'
,
subs
:
[]
},
{
key
:
'2'
,
title
:
'兑换码'
,
path
:
''
,
icon
:
<
UserOutlined
/>
,
icon
:
'icon-set'
,
subs
:
[
{
key
:
'3'
,
title
:
'兑换码列表'
,
path
:
'/exchangeCode'
,
icon
:
''
icon
:
'
icon-jixiao
'
},
{
key
:
'4'
,
title
:
'兑换码生成'
,
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
)
=>
{
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
>
</
Menu
.
Item
>
);
...
...
@@ -66,7 +98,11 @@ const MenuBar: React.FC<ConfigI> = props => {
return
routerConf
.
map
(
item
=>
{
if
(
item
.
subs
&&
item
.
subs
.
length
>
0
)
{
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
))
}
</
SubMenu
>
);
...
...
@@ -108,8 +144,7 @@ const MenuBar: React.FC<ConfigI> = props => {
<
Menu
theme=
"dark"
defaultSelectedKeys=
{
[
defKey
]
}
defaultOpenKeys=
{
[
'2'
]
}
// defaultOpenKeys={[openKey]}
defaultOpenKeys=
{
[
openKey
]
}
selectedKeys=
{
[
defKey
]
}
mode=
"inline"
onClick=
{
handleClick
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment