Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
587cdfab
Commit
587cdfab
authored
Jun 28, 2021
by
maolipeng
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature/maolipeng/20210610/zuhuyouhua
# Conflicts: # src/modules/root/Menu.tsx
parents
e935b932
84416698
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
84 additions
and
85 deletions
+84
-85
src/modules/root/Menu.tsx
+84
-85
No files found.
src/modules/root/Menu.tsx
View file @
587cdfab
import
React
,
{
Key
,
useContext
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
React
,
{
Key
,
useContext
,
useEffect
,
useRef
,
useState
,
useMemo
}
from
'react'
;
import
{
withRouter
,
}
from
'react-router-dom'
;
...
...
@@ -13,7 +13,6 @@ import User from "@/common/js/user"
import
_
from
'underscore'
;
import
"./Menu.less"
;
import
{
display
}
from
'html2canvas/dist/types/css/property-descriptors/display'
;
import
moment
from
'moment'
;
import
ContactWidget
from
'@/components/ContactWidget'
;
const
{
SubMenu
}
=
Menu
;
...
...
@@ -114,21 +113,20 @@ function VersionPanel(props: any) {
function
Aside
(
props
:
any
)
{
const
{
menuType
,
handleMenuType
}
=
props
const
{
menuType
,
handleMenuType
}
=
props
const
ctx
:
any
=
useContext
(
XMContext
);
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
lastOpenKeys
,
setLastOpenKeys
]
=
useState
([
''
]);
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
[
collapsed
,
setCollapsed
]
=
useState
(
false
)
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
useEffect
(()
=>
{
const
link
=
props
.
location
.
pathname
;
menuList
.
map
((
item
:
any
,
index
:
any
)
=>
{
if
(
link
.
indexOf
(
item
.
link
)
!==
-
1
)
{
setSelectKey
(
item
.
groupCode
);
setOpenKeys
([])
setLastOpenKeys
([])
}
else
if
(
item
.
children
)
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
link
.
indexOf
(
_item
.
link
)
!==
-
1
)
{
...
...
@@ -139,36 +137,37 @@ function Aside(props: any) {
return
item
;
})
},
[
props
.
location
.
pathname
])
useEffect
(()
=>
{
useEffect
(()
=>
{
getTopLeftLogo
()
},[])
},
[])
function
getTopLeftLogo
()
{
if
(
User
.
getToken
())
{
StoreService
.
getStoreDetail
({
storeId
:
User
.
getStoreId
()
})
.
then
(
res
=>
{
if
(
_
.
isEmpty
(
res
.
result
.
logo
))
{
setTopLogoUrl
(
"https://image.xiaomaiketang.com/xm/fe4NCjr7XF.png"
)
}
else
{
setTopLogoUrl
(
res
.
result
.
logo
)
}
})
StoreService
.
getStoreDetail
({
storeId
:
User
.
getStoreId
()
})
.
then
(
res
=>
{
if
(
_
.
isEmpty
(
res
.
result
.
logo
))
{
setTopLogoUrl
(
"https://image.xiaomaiketang.com/xm/fe4NCjr7XF.png"
)
}
else
{
setTopLogoUrl
(
res
.
result
.
logo
)
}
})
}
}
function
toggleMenu
(
item
:
any
)
{
window
.
RCHistory
.
push
(
item
.
link
)
if
(
!
menuType
)
{
setOpenKeys
([])
}
}
function
onOpenChange
(
key
:
Key
[])
{
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
setLastOpenKeys
([]);
}
else
{
setOpenKeys
([
key
]);
setLastOpenKeys
([
key
])
}
}
}
...
...
@@ -180,10 +179,8 @@ function Aside(props: any) {
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
setLastOpenKeys
([]);
}
else
{
setOpenKeys
([
key
]);
setLastOpenKeys
([
key
])
}
}
}
...
...
@@ -191,27 +188,29 @@ function Aside(props: any) {
function
handleMenu
()
{
handleMenuType
();
setCollapsed
(
!
collapsed
)
if
(
!
collapsed
)
{
setOpenKeys
([])
}
else
{
setOpenKeys
(
lastOpenKeys
)
}
}
const
openKeysConstrol
=
useMemo
(()
=>
{
return
{
[
menuType
?
'openKeys'
:
'defaultOpenKeys'
]:
openKeys
};
},
[
menuType
,
openKeys
])
return
(
<
div
id=
"left-container"
className=
{
menuType
?
"left-container"
:
"left-container left-container-vertical"
}
>
<
div
className=
"top-ctrl"
>
<
div
id=
"left-container"
className=
{
menuType
?
"left-container"
:
"left-container left-container-vertical"
}
>
<
div
className=
"top-ctrl"
>
<
div
className=
"topLogo"
>
{
menuType
&&
<
img
src=
{
topLogoUrl
}
alt=
""
className=
"img1"
></
img
>
}
{
menuType
&&
<
img
src=
{
topLogoUrl
}
alt=
""
className=
"img1"
></
img
>
}
</
div
>
<
div
className=
"menu-type-icon"
onClick=
{
handleMenu
}
>
<
div
className=
"menu-type-icon"
onClick=
{
handleMenu
}
>
{
menuType
?
(
<
span
className=
"icon iconfont"
...
...
@@ -226,58 +225,58 @@ function Aside(props: any) {
</
span
>
)
}
</
div
>
</
div
>
<
div
className=
"left"
>
<
div
className=
"nav"
>
</
div
>
<
div
className=
"left"
>
<
div
className=
"nav"
>
<
Menu
style=
{
menuType
?
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}:{
minHeight
:
"100%"
,
background
:
'#0E1935'
,
width
:
"56px"
}
}
selectedKeys=
{
selectKey
}
openKeys=
{
openKeys
}
onOpenChange=
{
onOpenChange
}
inlineCollapsed=
{
collapsed
}
mode=
{
menuType
?
"inline"
:
"vertical"
}
>
{
menuList
.
map
((
item
:
any
,
index
:
any
)
=>
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
item
.
groupCode
)
===
-
1
)
{
return
null
;
}
if
(
item
.
children
)
{
return
<
SubMenu
key=
{
item
.
groupCode
}
style=
{
{
marginTop
:
0
}
}
icon=
{
<
img
src=
{
item
.
img
}
className=
"icon-img"
></
img
>
}
title=
{
menuType
?
<
span
>
{
item
.
groupName
}
</
span
>
:
""
}
onTitleClick=
{
()
=>
onOpenChange
(
item
.
groupCode
)
}
>
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
_item
.
groupCode
)
===
-
1
)
{
return
null
;
}
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
_item
)
}
}
style=
{
{
marginTop
:
0
}
}
key=
{
_item
.
groupCode
+
index
+
_index
}
>
<
span
className=
"name"
>
{
_item
.
groupName
}
</
span
>
</
Menu
.
Item
>
<
Menu
{
...
openKeysConstrol
}
style=
{
menuType
?
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}
:
{
minHeight
:
"100%"
,
background
:
'#0E1935'
,
width
:
"56px"
}
}
selectedKeys=
{
selectKey
}
})
}
</
SubMenu
>
}
else
{
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
item
)
}
}
key=
{
item
.
groupCode
}
icon=
{
<
img
src=
{
selectKey
===
item
.
groupCode
?
item
.
selectImg
:
item
.
img
}
className=
"icon-img"
></
img
>
}
>
onOpenChange=
{
onOpenChange
}
inlineCollapsed=
{
collapsed
}
mode=
{
menuType
?
"inline"
:
"vertical"
}
>
{
menuList
.
map
((
item
:
any
,
index
:
any
)
=>
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
item
.
groupCode
)
===
-
1
)
{
return
null
;
}
if
(
item
.
children
)
{
return
<
SubMenu
key=
{
item
.
groupCode
}
style=
{
{
marginTop
:
0
}
}
icon=
{
<
img
src=
{
item
.
img
}
className=
"icon-img"
></
img
>
}
title=
{
menuType
?
<
span
>
{
item
.
groupName
}
</
span
>
:
""
}
onTitleClick=
{
()
=>
onOpenChange
(
item
.
groupCode
)
}
>
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
_item
.
groupCode
)
===
-
1
)
{
return
null
;
}
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
_item
)
}
}
style=
{
{
marginTop
:
0
}
}
key=
{
_item
.
groupCode
+
index
+
_index
}
>
<
span
className=
"name"
>
{
_item
.
groupName
}
</
span
>
</
Menu
.
Item
>
})
}
</
SubMenu
>
}
else
{
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
item
)
}
}
key=
{
item
.
groupCode
}
icon=
{
<
img
src=
{
selectKey
===
item
.
groupCode
?
item
.
selectImg
:
item
.
img
}
className=
"icon-img"
></
img
>
}
>
{
menuType
?
item
.
groupName
:
""
}
</
Menu
.
Item
>
}
})
}
</
Menu
>
</
div
>
</
Menu
.
Item
>
}
})
}
</
Menu
>
</
div
>
</
div
>
{
menuType
?
<
VersionPanel
/>
:
""
...
...
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