Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
H
huamu
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
郭铭瑶
huamu
Commits
51ea3341
Commit
51ea3341
authored
Sep 20, 2021
by
郭铭瑶
🤘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
顶部菜单使用接口
parent
dea1ccb2
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
227 additions
and
177 deletions
+227
-177
actions.ts
src/store/actions.ts
+24
-4
mutations.ts
src/store/mutations.ts
+3
-0
state.ts
src/store/state.ts
+1
-0
menus.ts
src/util/menus.ts
+153
-153
nav-bar.vue
src/view/components/nav-bar.vue
+45
-20
main.vue
src/view/main.vue
+1
-0
No files found.
src/store/actions.ts
View file @
51ea3341
...
@@ -77,10 +77,30 @@ export default {
...
@@ -77,10 +77,30 @@ export default {
name
:
item
[
'名称'
],
name
:
item
[
'名称'
],
children
:
[],
children
:
[],
}))
}))
// TODO 生成菜单
result
.
forEach
((
item
:
any
)
=>
{
// result.forEach((item:any) => {
const
level2
=
res
.
filter
(
// const cur = res.find((e:any) => e['父编码'] == item.key && e['顺序'] == '1')
(
e
:
any
)
=>
e
[
'父编码'
]
==
item
.
key
&&
e
[
'级别'
]
==
'2'
,
// })
)
if
(
level2
&&
level2
.
length
>
0
)
{
item
.
children
=
level2
.
map
((
e
:
any
)
=>
({
name
:
e
[
'名称'
],
list
:
res
.
filter
((
child
:
any
)
=>
child
?.[
'父编码'
]
==
e
[
'编码'
])
.
map
((
child
:
any
)
=>
({
name
:
child
[
'名称'
],
id
:
child
?.
url
||
null
,
})),
}))
}
else
{
item
.
children
=
res
.
filter
((
child
:
any
)
=>
child
?.[
'父编码'
]?.
startsWith
(
item
.
key
))
.
map
((
child
:
any
)
=>
({
name
:
child
[
'名称'
],
id
:
child
?.
url
||
null
,
}))
}
})
commit
(
'SET_MENUS'
,
result
)
},
},
}
}
...
...
src/store/mutations.ts
View file @
51ea3341
...
@@ -9,6 +9,9 @@ export default {
...
@@ -9,6 +9,9 @@ export default {
SET_AUTH
(
state
:
GlobalStateProps
,
val
:
any
)
{
SET_AUTH
(
state
:
GlobalStateProps
,
val
:
any
)
{
state
.
auth
=
val
state
.
auth
=
val
},
},
SET_MENUS
(
state
:
GlobalStateProps
,
data
:
any
)
{
state
.
menus
=
data
},
SET_SHOW_TAG
(
state
:
GlobalStateProps
,
val
:
boolean
)
{
SET_SHOW_TAG
(
state
:
GlobalStateProps
,
val
:
boolean
)
{
state
.
showTag
=
val
state
.
showTag
=
val
},
},
...
...
src/store/state.ts
View file @
51ea3341
...
@@ -61,4 +61,5 @@ export default {
...
@@ -61,4 +61,5 @@ export default {
labelKey
:
'党组织名称'
,
labelKey
:
'党组织名称'
,
result
:
[{}],
result
:
[{}],
},
},
menus
:
[],
}
}
src/util/menus.ts
View file @
51ea3341
export
default
[
//
export default [
{
//
{
key
:
'system'
,
//
key: 'system',
name
:
'系统'
,
//
name: '系统',
children
:
[
//
children: [
{
//
{
name
:
'管市民'
,
//
name: '管市民',
list
:
[
//
list: [
{
//
{
name
:
'市民(房屋)信息系统'
,
//
name: '市民(房屋)信息系统',
id
:
'page_40bf6060-cccc-11ea-a34f-f558bf9fe429'
,
//
id: 'page_40bf6060-cccc-11ea-a34f-f558bf9fe429',
},
//
},
{
name
:
'志愿者信息系统'
},
//
{ name: '志愿者信息系统' },
{
name
:
'党员团员信息系统'
},
//
{ name: '党员团员信息系统' },
{
name
:
'重点关怀对象信息系统'
},
//
{ name: '重点关怀对象信息系统' },
{
name
:
'统战人员信息系统'
},
//
{ name: '统战人员信息系统' },
{
name
:
'司法管理人员信息系统'
},
//
{ name: '司法管理人员信息系统' },
{
name
:
'自治组织信息系统'
},
//
{ name: '自治组织信息系统' },
{
name
:
'更多系统'
},
//
{ name: '更多系统' },
],
//
],
},
//
},
{
//
{
name
:
'管商办'
,
//
name: '管商办',
list
:
[
//
list: [
{
//
{
name
:
'楼宇信息系统'
,
//
name: '楼宇信息系统',
id
:
'page_50bb42f0-3544-11eb-813d-85e48fa0f61d'
,
//
id: 'page_50bb42f0-3544-11eb-813d-85e48fa0f61d',
},
//
},
{
//
{
name
:
'企业信息系统'
,
//
name: '企业信息系统',
id
:
'page_50bb42f0-3544-11eb-813d-85e48fa0f61d'
,
//
id: 'page_50bb42f0-3544-11eb-813d-85e48fa0f61d',
},
//
},
{
//
{
name
:
'商铺信息系统'
,
//
name: '商铺信息系统',
id
:
'page_50bb42f0-3544-11eb-813d-85e48fa0f61d'
,
//
id: 'page_50bb42f0-3544-11eb-813d-85e48fa0f61d',
},
//
},
{
name
:
'更多系统'
},
//
{ name: '更多系统' },
],
//
],
},
//
},
{
//
{
name
:
'管自己'
,
//
name: '管自己',
list
:
[
//
list: [
{
//
{
name
:
'视频信息系统'
,
//
name: '视频信息系统',
id
:
'page_19abe960-4109-11eb-bcd0-a98c14e187f6'
,
//
id: 'page_19abe960-4109-11eb-bcd0-a98c14e187f6',
},
//
},
{
//
{
name
:
'城运信息系统'
,
//
name: '城运信息系统',
id
:
'page_af847490-3937-11eb-8bd2-af9cb9e97668'
,
//
id: 'page_af847490-3937-11eb-8bd2-af9cb9e97668',
},
//
},
{
name
:
'政府机关系统'
},
//
{ name: '政府机关系统' },
{
name
:
'党建信息系统'
},
//
{ name: '党建信息系统' },
{
name
:
'预案文件信息系统'
},
//
{ name: '预案文件信息系统' },
{
name
:
'规划信息系统'
},
//
{ name: '规划信息系统' },
{
name
:
'更多系统'
},
//
{ name: '更多系统' },
],
//
],
},
//
},
{
//
{
name
:
'管服务'
,
//
name: '管服务',
list
:
[
//
list: [
{
//
{
name
:
'电梯信息系统'
,
//
name: '电梯信息系统',
id
:
'page_87f75700-41d7-11eb-84c4-f9d93e21eaf4'
,
//
id: 'page_87f75700-41d7-11eb-84c4-f9d93e21eaf4',
},
//
},
{
name
:
'设施信息系统'
},
//
{ name: '设施信息系统' },
{
name
:
'人才公寓信息系统'
},
//
{ name: '人才公寓信息系统' },
{
name
:
'物业信息体统'
},
//
{ name: '物业信息体统' },
{
name
:
'更多系统'
},
//
{ name: '更多系统' },
],
//
],
},
//
},
],
//
],
},
//
},
{
//
{
key
:
'application'
,
//
key: 'application',
name
:
'应用'
,
//
name: '应用',
children
:
[
//
children: [
{
//
{
list
:
[
//
list: [
{
name
:
'养老管理'
,
id
:
'page_a6073dc0-a70c-11ea-bbf4-6fdd8b50636a'
},
//
{ name: '养老管理', id: 'page_a6073dc0-a70c-11ea-bbf4-6fdd8b50636a' },
{
name
:
'垃圾监管'
,
id
:
'page_9bf6bcb0-bd0b-11ea-aa4f-9d7cec320c12'
},
//
{ name: '垃圾监管', id: 'page_9bf6bcb0-bd0b-11ea-aa4f-9d7cec320c12' },
{
name
:
'预案推荐'
},
//
{ name: '预案推荐' },
{
name
:
'志愿者管理'
},
//
{ name: '志愿者管理' },
{
name
:
'稳商监管'
},
//
{ name: '稳商监管' },
],
//
],
},
//
},
{
//
{
list
:
[
//
list: [
{
name
:
'联勤联动'
,
id
:
'page_af847490-3937-11eb-8bd2-af9cb9e97668'
},
//
{ name: '联勤联动', id: 'page_af847490-3937-11eb-8bd2-af9cb9e97668' },
{
name
:
'电子门铃'
,
id
:
'page_7dd43000-28bd-11eb-a455-67d7a1e16cfb'
},
//
{ name: '电子门铃', id: 'page_7dd43000-28bd-11eb-a455-67d7a1e16cfb' },
{
name
:
'党建管理'
},
//
{ name: '党建管理' },
{
name
:
'规划管理'
},
//
{ name: '规划管理' },
{
name
:
'物业管理'
},
//
{ name: '物业管理' },
],
//
],
},
//
},
{
//
{
list
:
[
//
list: [
{
name
:
'疫情管控'
,
id
:
'page_b6134040-8869-11ea-8650-bb21e10eb77e'
},
//
{ name: '疫情管控', id: 'page_b6134040-8869-11ea-8650-bb21e10eb77e' },
{
name
:
'春节帮困'
,
id
:
'page_e4ec9b30-4968-11eb-a659-8bbd9242be6e'
},
//
{ name: '春节帮困', id: 'page_e4ec9b30-4968-11eb-a659-8bbd9242be6e' },
{
name
:
'城运提效'
},
//
{ name: '城运提效' },
{
name
:
'停车管理'
},
//
{ name: '停车管理' },
{
name
:
'更多应用'
},
//
{ name: '更多应用' },
],
//
],
},
//
},
{
//
{
list
:
[
//
list: [
{
name
:
'营商优化'
,
id
:
'page_b9efffb0-8aa2-11ea-8956-4db27eca528f'
},
//
{ name: '营商优化', id: 'page_b9efffb0-8aa2-11ea-8956-4db27eca528f' },
{
name
:
'电梯加装'
,
id
:
'page_87f75700-41d7-11eb-84c4-f9d93e21eaf4'
},
//
{ name: '电梯加装', id: 'page_87f75700-41d7-11eb-84c4-f9d93e21eaf4' },
{
name
:
'政企通讯'
},
//
{ name: '政企通讯' },
{
name
:
'人才公寓管理'
},
//
{ name: '人才公寓管理' },
],
//
],
},
//
},
],
//
],
},
//
},
{
//
{
key
:
'ability'
,
//
key: 'ability',
name
:
'能力'
,
//
name: '能力',
children
:
[
//
children: [
{
//
{
list
:
[
//
list: [
{
//
{
name
:
'填表机器人'
,
//
name: '填表机器人',
id
:
'page_99c095b0-c1ec-11eb-b455-8573e34978b3'
,
//
id: 'page_99c095b0-c1ec-11eb-b455-8573e34978b3',
},
//
},
{
name
:
'建言献策'
},
//
{ name: '建言献策' },
],
//
],
},
//
},
{
//
{
list
:
[
//
list: [
{
//
{
name
:
'知识库推荐'
,
//
name: '知识库推荐',
id
:
'page_af847490-3937-11eb-8bd2-af9cb9e97668'
,
//
id: 'page_af847490-3937-11eb-8bd2-af9cb9e97668',
},
//
},
{
name
:
'问题上报'
},
//
{ name: '问题上报' },
],
//
],
},
//
},
{
//
{
list
:
[
//
list: [
{
//
{
name
:
'15分钟服务圈模型'
,
//
name: '15分钟服务圈模型',
id
:
'page_90fa7af0-9f40-11eb-8841-4d34f1d622ba'
,
//
id: 'page_90fa7af0-9f40-11eb-8841-4d34f1d622ba',
},
//
},
{
name
:
'服务获取'
,
id
:
'page_213eed40-a0bc-11eb-95d1-691952c8451e'
},
//
{ name: '服务获取', id: 'page_213eed40-a0bc-11eb-95d1-691952c8451e' },
],
//
],
},
//
},
{
//
{
list
:
[
//
list: [
{
name
:
'短信互动'
,
id
:
'page_e0fb11b0-f1b0-11ea-8dfd-198fd4af74bf'
},
//
{ name: '短信互动', id: 'page_e0fb11b0-f1b0-11ea-8dfd-198fd4af74bf' },
{
name
:
'活动参与'
},
//
{ name: '活动参与' },
],
//
],
},
//
},
],
//
],
},
//
},
]
//
]
src/view/components/nav-bar.vue
View file @
51ea3341
...
@@ -48,7 +48,7 @@
...
@@ -48,7 +48,7 @@
</n-icon>
</n-icon>
</div>
</div>
<b>
|
</b>
<b>
|
</b>
<n-popover
trigger=
"hover"
class=
"top-menu"
>
<n-popover
trigger=
"hover"
class=
"top-menu"
width=
"13rem"
>
<
template
#
trigger
>
<
template
#
trigger
>
<div
class=
"align-center menu-btn"
>
<div
class=
"align-center menu-btn"
>
<n-icon
<n-icon
...
@@ -65,23 +65,40 @@
...
@@ -65,23 +65,40 @@
<div
<div
v-for=
"menu in menus"
v-for=
"menu in menus"
:key=
"menu.key"
:key=
"menu.key"
:class=
"{ on: curMenu
.k
ey === menu.key }"
:class=
"{ on: curMenu
K
ey === menu.key }"
@
click=
"curMenu
= menu
"
@
click=
"curMenu
Key = menu.key
"
>
>
{{ menu.name }}
{{ menu.name }}
</div>
</div>
</div>
</div>
<div
class=
"children"
>
<div
class=
"children"
>
<div
v-for=
"(child, i) in curMenu.children"
:key=
"i"
>
<div
<h3
v-if=
"child.name"
>
{{ child.name }}
</h3>
v-for=
"(child, i) in curMenu.children"
<p
:key=
"i"
v-for=
"p in child.list"
:class=
"{ child: !child.list }"
:key=
"p.name"
>
:class=
"{ link: !!p.id }"
<
template
v-if=
"child.list"
>
@
click
.
prevent=
"toPage(p.id)"
<h3>
{{
child
.
name
}}
</h3>
>
<p
{{ p.name }}
v-for=
"p in child.list"
</p>
:key=
"p.name"
:class=
"
{ link: !!p.id }"
:title="p.name"
@click.prevent="toPage(p.id)"
>
{{
p
.
name
}}
</p>
</
template
>
<
template
v-else
>
<p
:key=
"child.name"
:class=
"
{ link: !!child.id }"
:title="child.name"
@click.prevent="toPage(child.id)"
>
{{
child
.
name
}}
</p>
</
template
>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -108,13 +125,17 @@ import nav1 from '@images/nav1.svg'
...
@@ -108,13 +125,17 @@ import nav1 from '@images/nav1.svg'
import
nav2
from
'@images/nav2.svg'
import
nav2
from
'@images/nav2.svg'
import
nav3
from
'@images/nav3.svg'
import
nav3
from
'@images/nav3.svg'
import
nav5
from
'@images/nav5.svg'
import
nav5
from
'@images/nav5.svg'
import
menus
from
'@/util/menus'
const
curMenu
=
ref
<
any
>
(
menus
[
0
])
const
showFilterDrawer
=
computed
(()
=>
store
.
state
.
showFilterDrawer
)
const
showFilterDrawer
=
computed
(()
=>
store
.
state
.
showFilterDrawer
)
const
showBuildingDrawer
=
computed
(()
=>
store
.
state
.
showBuildingDrawer
)
const
showBuildingDrawer
=
computed
(()
=>
store
.
state
.
showBuildingDrawer
)
const
showActivityDrawer
=
computed
(()
=>
store
.
state
.
showActivityDrawer
)
const
showActivityDrawer
=
computed
(()
=>
store
.
state
.
showActivityDrawer
)
const
showStructModal
=
computed
(()
=>
store
.
state
.
showStructModal
)
const
showStructModal
=
computed
(()
=>
store
.
state
.
showStructModal
)
const
menus
=
computed
(()
=>
store
.
state
.
menus
)
const
curMenuKey
=
ref
(
'101'
)
const
curMenu
=
computed
(()
=>
menus
.
value
.
find
((
menu
:
any
)
=>
menu
.
key
==
curMenuKey
.
value
),
)
const
onClick
=
(
type
:
string
)
=>
{
const
onClick
=
(
type
:
string
)
=>
{
store
.
commit
(
'SET_FILTER_DRAWER'
,
false
)
store
.
commit
(
'SET_FILTER_DRAWER'
,
false
)
store
.
commit
(
'SET_ACTIVITY_DRAWER'
,
false
)
store
.
commit
(
'SET_ACTIVITY_DRAWER'
,
false
)
...
@@ -315,8 +336,7 @@ const toPage = (id?: string) => {
...
@@ -315,8 +336,7 @@ const toPage = (id?: string) => {
border .01rem solid $red
border .01rem solid $red
.top-menu
.top-menu
width 12rem
min-height 3rem
height 2.5rem
.menu
.menu
height 100%
height 100%
border-radius .06rem
border-radius .06rem
...
@@ -339,21 +359,26 @@ const toPage = (id?: string) => {
...
@@ -339,21 +359,26 @@ const toPage = (id?: string) => {
background $light-red
background $light-red
color $red
color $red
.children
.children
display flex
flex 1
justify-content space-around
>div
>div
display inline-block
margin 0 .1rem
margin 0 .1rem
vertical-align top
h3
h3
font-size .13rem
font-size .13rem
margin-bottom .1rem
margin-bottom .1rem
p
p
width 1.
2
rem
width 1.
4
rem
margin .1rem 0
margin .1rem 0
font-size .1rem
font-size .1rem
$text-overflow()
&.link
&.link
color #000
color #000
font-weight bold
font-weight bold
cursor pointer
cursor pointer
&:hover
&:hover
color $red
color $red
&.child
p
margin .05rem 0
</
style
>
</
style
>
src/view/main.vue
View file @
51ea3341
...
@@ -31,6 +31,7 @@ import reset from '@images/reset.svg'
...
@@ -31,6 +31,7 @@ import reset from '@images/reset.svg'
import
store
from
'@/store'
import
store
from
'@/store'
store
.
dispatch
(
'getAuth'
)
store
.
dispatch
(
'getAuth'
)
store
.
dispatch
(
'getMenus'
)
const
showReset
=
computed
(()
=>
store
.
state
.
showBasicInfo
)
const
showReset
=
computed
(()
=>
store
.
state
.
showBasicInfo
)
const
map
=
ref
<
any
>
()
const
map
=
ref
<
any
>
()
...
...
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