|
@@ -7,49 +7,43 @@
|
|
|
<el-menu
|
|
|
class="sidebar-el-menu"
|
|
|
:default-active="active"
|
|
|
- :collapse="collapse"
|
|
|
unique-opened
|
|
|
+ default-openeds
|
|
|
router
|
|
|
+ :collapse="collapse"
|
|
|
:background-color="styleInfo.backColor"
|
|
|
:text-color="styleInfo.textColor"
|
|
|
:active-text-color="styleInfo.activeColor"
|
|
|
>
|
|
|
<template v-for="item in items">
|
|
|
- <!-- 二级菜单 -->
|
|
|
- <template v-if="item.subs">
|
|
|
- <el-sub-menu :index="item.index" :key="item.index">
|
|
|
- <template v-slot:title>
|
|
|
+ <template v-if="item.type === '0'">
|
|
|
+ <el-sub-menu :index="item._id" :key="item._id">
|
|
|
+ <template #title>
|
|
|
<i :class="['iconfont', item.icon]"></i>
|
|
|
- <span slot="title">{{ item.title }}</span>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
</template>
|
|
|
- <template v-for="subItem in item.subs">
|
|
|
- <!-- 三级菜单 -->
|
|
|
- <el-sub-menu v-if="subItem.subs" :index="subItem.index" :key="subItem.index">
|
|
|
- <template v-slot:title>
|
|
|
+ <template v-for="subItem in item.children">
|
|
|
+ <el-sub-menu v-if="subItem.children && subItem.children.length > 0" :index="subItem._id" :key="subItem._id">
|
|
|
+ <template #title>
|
|
|
<i :class="['iconfont', subItem.icon]"></i>
|
|
|
- <span slot="title">{{ subItem.title }}</span>
|
|
|
+ <span>{{ subItem.name }}</span>
|
|
|
</template>
|
|
|
- <el-menu-item v-for="(threeItem, i) in subItem.subs" :key="i" :index="threeItem.index">
|
|
|
- <template v-slot:title>
|
|
|
- <i :class="['iconfont', threeItem.icon]"></i>
|
|
|
- <span slot="title">{{ threeItem.title }}</span>
|
|
|
- </template>
|
|
|
+ <el-menu-item v-for="(threeItem, i) in subItem.children" :key="i" :index="threeItem.path">
|
|
|
+ <i :class="['iconfont', threeItem.icon]"></i>
|
|
|
+ <span>{{ threeItem.name }}</span>
|
|
|
</el-menu-item>
|
|
|
</el-sub-menu>
|
|
|
- <el-menu-item v-else :index="subItem.index" :key="`index_${subItem.index}`">
|
|
|
- <template v-slot:title>
|
|
|
- <i :class="['iconfont', subItem.icon]"></i>
|
|
|
- <span slot="title">{{ subItem.title }}</span>
|
|
|
- </template>
|
|
|
+ <el-menu-item v-else :index="subItem.path" :key="subItem.path">
|
|
|
+ <i :class="['iconfont', subItem.icon]"></i>
|
|
|
+ <span>{{ subItem.name }}</span>
|
|
|
</el-menu-item>
|
|
|
</template>
|
|
|
</el-sub-menu>
|
|
|
</template>
|
|
|
- <!-- 一级菜单 -->
|
|
|
<template v-else>
|
|
|
- <el-menu-item class="first" :index="item.index" :key="item.index">
|
|
|
+ <el-menu-item :index="item.path" :key="item.path">
|
|
|
<i :class="['iconfont', item.icon]"></i>
|
|
|
- <span slot="title">{{ item.title }}</span>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
</el-menu-item>
|
|
|
</template>
|
|
|
</template>
|
|
@@ -61,26 +55,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import {
|
|
|
- system,
|
|
|
- users,
|
|
|
- achieveUser,
|
|
|
- channelUser,
|
|
|
- trainUser,
|
|
|
- admin,
|
|
|
- // 成果评价
|
|
|
- cgsys,
|
|
|
- cgadmin,
|
|
|
- cguser,
|
|
|
- cgexpert,
|
|
|
- // 专利市场
|
|
|
- zlsys,
|
|
|
- zladmin,
|
|
|
- zlmech,
|
|
|
- zluser,
|
|
|
- zlagent,
|
|
|
- zlcons
|
|
|
-} from '../../../layout/menu'
|
|
|
+import { admin } from '../../../layout/menu'
|
|
|
import { menuInfo } from '../../../layout/site'
|
|
|
import _ from 'lodash'
|
|
|
import { ElMessage } from 'element-plus'
|
|
@@ -105,61 +80,8 @@ const onRoutes = () => {
|
|
|
active.value = useRoutes.path
|
|
|
}
|
|
|
|
|
|
-const getMenu = async () => {
|
|
|
- let list = _.cloneDeep(items.value)
|
|
|
- // if (!_.get(user.value, 'id')) return;
|
|
|
- let proType = `${import.meta.env.VUE_APP_ROUTER}`
|
|
|
- if (proType == 'livecms') {
|
|
|
- if (user.value && user.value.role == '0') {
|
|
|
- list.push(...admin)
|
|
|
- } else {
|
|
|
- // let res: IQueryResult = await role.fetch(user.value.role_id)
|
|
|
- // if (res && res.errcode == '0') {
|
|
|
- // const { menu } = res.data
|
|
|
- // if (menu.length > 0) {
|
|
|
- // const nmenu = getMenuOptions(admin, menu)
|
|
|
- // list.push(...nmenu)
|
|
|
- // }
|
|
|
- // }
|
|
|
- }
|
|
|
- } else if (proType == 'liveuser') {
|
|
|
- // role:3--平台用户,role:4--企业,role:5--专家,role:6--科技成果,role:7--科技频道,role:7--培训问诊
|
|
|
- if ((user.value && user.value.role == '3') || user.value.role == '4' || user.value.role == '5') list.push(...users)
|
|
|
- else if (user.value && user.value.role == '6') list.push(...achieveUser)
|
|
|
- else if (user.value && user.value.role == '7') list.push(...channelUser)
|
|
|
- else if (user.value && user.value.role == '8') list.push(...trainUser)
|
|
|
- } else if (proType == 'liveachieve') {
|
|
|
- // role:1--管理员,role:3--平台用户,role:9--评审专家用户
|
|
|
- if (user.value && user.value.role == '1') list.push(...cgadmin, ...cgsys)
|
|
|
- else if (user.value && user.value.role == '3') list.push(...cguser, ...cgsys)
|
|
|
- else if (user.value && user.value.role == '9') list.push(...cgexpert, ...cgsys)
|
|
|
- } else if (proType == 'livepatent') {
|
|
|
- // role:1--管理员,role:2--机构,role:3--平台用户,role:10--代理机构,role:11--咨询师
|
|
|
- if (user.value && user.value.role == '1') list.push(...zladmin, ...zlsys)
|
|
|
- else if (user.value && user.value.role == '2') list.push(...zlmech, ...zlsys)
|
|
|
- else if (user.value && user.value.role == '3') list.push(...zluser, ...zlsys)
|
|
|
- else if (user.value && user.value.role == '10') list.push(...zlagent, ...zlsys)
|
|
|
- else if (user.value && user.value.role == '11') list.push(...zlcons, ...zlsys)
|
|
|
- }
|
|
|
- items.value = _.uniqBy(list, 'index')
|
|
|
-}
|
|
|
-// 拍平数据
|
|
|
-const getMenuOptions = (allMenu: any, menus: any) => {
|
|
|
- menus = _.uniq(_.flattenDeep(menus))
|
|
|
- return getOptions(allMenu, menus) || []
|
|
|
-}
|
|
|
-// 重组,并找到对应菜单
|
|
|
-const getOptions = (allMenu: any, menus: any) => {
|
|
|
- let res: any = allMenu.map((l: any) => {
|
|
|
- const r: any = menus.find((f: any) => f == l.num)
|
|
|
- if (r) {
|
|
|
- if (l.subs) l.subs = getOptions(l.subs, menus)
|
|
|
- return l
|
|
|
- }
|
|
|
- })
|
|
|
- res = _.compact(res)
|
|
|
- return res
|
|
|
-}
|
|
|
+const getMenu = async () => {}
|
|
|
+
|
|
|
watch(
|
|
|
user,
|
|
|
(newVal) => {
|
|
@@ -174,19 +96,11 @@ watch(
|
|
|
)
|
|
|
</script>
|
|
|
<style scoped lang="scss">
|
|
|
-.sidebar {
|
|
|
- display: block;
|
|
|
- position: absolute;
|
|
|
- left: 0;
|
|
|
- top: 60px;
|
|
|
- bottom: 0;
|
|
|
- overflow-y: scroll;
|
|
|
-}
|
|
|
.sidebar::-webkit-scrollbar {
|
|
|
width: 0;
|
|
|
}
|
|
|
.sidebar-el-menu:not(.el-menu--collapse) {
|
|
|
- width: 200px;
|
|
|
+ width: 201px;
|
|
|
}
|
|
|
.sidebar > ul {
|
|
|
height: 100%;
|