Commit 51ea3341 authored by 郭铭瑶's avatar 郭铭瑶 🤘

顶部菜单使用接口

parent dea1ccb2
...@@ -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)
}, },
} }
......
...@@ -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
}, },
......
...@@ -61,4 +61,5 @@ export default { ...@@ -61,4 +61,5 @@ export default {
labelKey: '党组织名称', labelKey: '党组织名称',
result: [{}], result: [{}],
}, },
menus: [],
} }
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: '活动参与' },
], // ],
}, // },
], // ],
}, // },
] // ]
...@@ -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.key === menu.key }" :class="{ on: curMenuKey === menu.key }"
@click="curMenu = menu" @click="curMenuKey = 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.2rem width 1.4rem
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>
...@@ -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>()
......
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