Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes-ui
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
mes
mes-ui
Commits
9f0602d3
Commit
9f0602d3
authored
Jan 25, 2024
by
何远江
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增新印前菜单
parent
857a68ef
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
89 additions
and
51 deletions
+89
-51
SidebarItem.vue
src/layout/components/Sidebar/SidebarItem.vue
+66
-34
getters.js
src/store/getters.js
+18
-17
user.js
src/store/modules/user.js
+5
-0
No files found.
src/layout/components/Sidebar/SidebarItem.vue
View file @
9f0602d3
<
template
>
<div
v-if=
"!item.hidden"
>
<template
v-if=
"hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"
>
<app-link
v-if=
"onlyOneChild.meta"
:to=
"resolvePath(onlyOneChild.path, onlyOneChild.query)"
>
<el-menu-item
:index=
"resolvePath(onlyOneChild.path)"
:class=
"
{'submenu-title-noDropdown':!isNest}">
<item
:icon=
"onlyOneChild.meta.icon||(item.meta&&item.meta.icon)"
:title=
"onlyOneChild.meta.title"
/>
<template
v-if=
"
hasOneShowingChild(item.children, item) &&
(!onlyOneChild.children || onlyOneChild.noShowingChildren) &&
!item.alwaysShow
"
>
<app-link
v-if=
"onlyOneChild.meta"
:to=
"resolvePath(onlyOneChild.path, onlyOneChild.query)"
>
<el-menu-item
:index=
"resolvePath(onlyOneChild.path)"
:class=
"
{ 'submenu-title-noDropdown': !isNest }"
>
<item
:icon=
"onlyOneChild.meta.icon || (item.meta && item.meta.icon)"
:title=
"onlyOneChild.meta.title"
/>
</el-menu-item>
</app-link>
</
template
>
<el-submenu
v-else
ref=
"subMenu"
:index=
"resolvePath(item.path)"
popper-append-to-body
>
<el-submenu
v-else
ref=
"subMenu"
:index=
"resolvePath(item.path)"
popper-append-to-body
>
<
template
slot=
"title"
>
<item
v-if=
"item.meta"
:icon=
"item.meta && item.meta.icon"
:title=
"item.meta.title"
/>
<item
v-if=
"item.meta"
:icon=
"item.meta && item.meta.icon"
:title=
"item.meta.title"
/>
</
template
>
<sidebar-item
v-for=
"child in item.children"
...
...
@@ -25,76 +49,84 @@
</template>
<
script
>
import
path
from
'path'
import
{
isExternal
}
from
'@/utils/validate'
import
Item
from
'./Item'
import
AppLink
from
'./Link'
import
FixiOSBug
from
'./FixiOSBug'
import
path
from
"path"
;
import
{
isExternal
}
from
"@/utils/validate"
;
import
Item
from
"./Item"
;
import
AppLink
from
"./Link"
;
import
FixiOSBug
from
"./FixiOSBug"
;
import
{
mapGetters
}
from
"vuex"
;
export
default
{
name
:
'SidebarItem'
,
name
:
"SidebarItem"
,
components
:
{
Item
,
AppLink
},
mixins
:
[
FixiOSBug
],
props
:
{
// route object
item
:
{
type
:
Object
,
required
:
true
required
:
true
,
},
isNest
:
{
type
:
Boolean
,
default
:
false
default
:
false
,
},
basePath
:
{
type
:
String
,
default
:
''
}
default
:
""
,
},
},
computed
:
{
...
mapGetters
([
"userId"
,
'sidebar'
]),
},
data
()
{
this
.
onlyOneChild
=
null
return
{}
this
.
onlyOneChild
=
null
;
return
{}
;
},
methods
:
{
hasOneShowingChild
(
children
=
[],
parent
)
{
if
(
!
children
)
{
children
=
[];
}
const
showingChildren
=
children
.
filter
(
item
=>
{
const
showingChildren
=
children
.
filter
(
(
item
)
=>
{
if
(
item
.
hidden
)
{
return
false
return
false
;
}
else
{
// Temp set(will be used if only has one showing child)
this
.
onlyOneChild
=
item
return
true
this
.
onlyOneChild
=
item
;
return
true
;
}
})
})
;
// When there is only one child router, the child router is displayed by default
if
(
showingChildren
.
length
===
1
)
{
return
true
return
true
;
}
// Show parent if there are no child router to display
if
(
showingChildren
.
length
===
0
)
{
this
.
onlyOneChild
=
{
...
parent
,
path
:
''
,
noShowingChildren
:
true
}
return
true
this
.
onlyOneChild
=
{
...
parent
,
path
:
""
,
noShowingChildren
:
true
};
return
true
;
}
return
false
return
false
;
},
resolvePath
(
routePath
,
routeQuery
)
{
if
(
isExternal
(
routePath
))
{
return
routePath
return
routePath
;
}
if
(
isExternal
(
this
.
basePath
))
{
return
this
.
basePath
if
(
routeQuery
?.
endsWith
(
"#{userid}"
))
{
return
this
.
basePath
+
"?userId="
+
this
.
userId
;
}
return
this
.
basePath
;
}
if
(
routeQuery
)
{
let
query
=
JSON
.
parse
(
routeQuery
);
return
{
path
:
path
.
resolve
(
this
.
basePath
,
routePath
),
query
:
query
}
return
{
path
:
path
.
resolve
(
this
.
basePath
,
routePath
),
query
:
query
};
}
return
path
.
resolve
(
this
.
basePath
,
routePath
)
}
}
}
return
path
.
resolve
(
this
.
basePath
,
routePath
)
;
}
,
}
,
}
;
</
script
>
src/store/getters.js
View file @
9f0602d3
const
getters
=
{
sidebar
:
state
=>
state
.
app
.
sidebar
,
size
:
state
=>
state
.
app
.
size
,
device
:
state
=>
state
.
app
.
device
,
visitedViews
:
state
=>
state
.
tagsView
.
visitedViews
,
cachedViews
:
state
=>
state
.
tagsView
.
cachedViews
,
token
:
state
=>
state
.
user
.
token
,
avatar
:
state
=>
state
.
user
.
avatar
,
name
:
state
=>
state
.
user
.
name
,
introduction
:
state
=>
state
.
user
.
introduction
,
roles
:
state
=>
state
.
user
.
roles
,
permissions
:
state
=>
state
.
user
.
permissions
,
permission_routes
:
state
=>
state
.
permission
.
routes
,
topbarRouters
:
state
=>
state
.
permission
.
topbarRouters
,
defaultRoutes
:
state
=>
state
.
permission
.
defaultRoutes
,
sidebarRouters
:
state
=>
state
.
permission
.
sidebarRouters
,
}
export
default
getters
sidebar
:
(
state
)
=>
state
.
app
.
sidebar
,
size
:
(
state
)
=>
state
.
app
.
size
,
device
:
(
state
)
=>
state
.
app
.
device
,
visitedViews
:
(
state
)
=>
state
.
tagsView
.
visitedViews
,
cachedViews
:
(
state
)
=>
state
.
tagsView
.
cachedViews
,
token
:
(
state
)
=>
state
.
user
.
token
,
avatar
:
(
state
)
=>
state
.
user
.
avatar
,
userId
:
(
state
)
=>
state
.
user
.
userId
,
name
:
(
state
)
=>
state
.
user
.
name
,
introduction
:
(
state
)
=>
state
.
user
.
introduction
,
roles
:
(
state
)
=>
state
.
user
.
roles
,
permissions
:
(
state
)
=>
state
.
user
.
permissions
,
permission_routes
:
(
state
)
=>
state
.
permission
.
routes
,
topbarRouters
:
(
state
)
=>
state
.
permission
.
topbarRouters
,
defaultRoutes
:
(
state
)
=>
state
.
permission
.
defaultRoutes
,
sidebarRouters
:
(
state
)
=>
state
.
permission
.
sidebarRouters
,
};
export
default
getters
;
src/store/modules/user.js
View file @
9f0602d3
...
...
@@ -7,6 +7,7 @@ const user = {
name
:
''
,
avatar
:
''
,
roles
:
[],
userId
:
''
,
permissions
:
[]
},
...
...
@@ -14,6 +15,9 @@ const user = {
SET_TOKEN
:
(
state
,
token
)
=>
{
state
.
token
=
token
},
SET_USERID
:
(
state
,
userId
)
=>
{
state
.
userId
=
userId
},
SET_NAME
:
(
state
,
name
)
=>
{
state
.
name
=
name
},
...
...
@@ -60,6 +64,7 @@ const user = {
}
commit
(
'SET_NAME'
,
user
.
userName
)
commit
(
'SET_AVATAR'
,
avatar
)
commit
(
'SET_USERID'
,
user
.
userId
)
resolve
(
res
)
}).
catch
(
error
=>
{
reject
(
error
)
...
...
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