提交 145c0912 authored 作者: 王鹏飞's avatar 王鹏飞

chore: 增加菜单权限控制

上级 a2e8f8e4
......@@ -2,21 +2,30 @@ import type { IMenuItem } from '@/types'
import { VideoCamera, Suitcase, Collection, Files, Monitor, Edit, User, Filter, Coordinate, Notebook, Picture } from '@element-plus/icons-vue'
export const menus: IMenuItem[] = [
{
tag: 'v1-resource',
name: '资源管理',
path: '/resource',
children: [
{
tag: 'v1-resource-video-list',
icon: VideoCamera,
name: '视频',
path: '/resource/video'
},
{ icon: Suitcase, name: '课件', path: '/resource/courseware' },
{
tag: 'v1-resource-courseware-list',
icon: Suitcase,
name: '课件',
path: '/resource/courseware'
},
{
tag: 'v1-resource-lesson-plan-list',
icon: Collection,
name: '教案',
path: '/resource/lessonplan'
},
{
tag: 'v1-resource-other-information-list',
icon: Files,
name: '其他资料',
path: '/resource/other'
......@@ -32,15 +41,18 @@ export const menus: IMenuItem[] = [
]
},
{
tag: 'v1-course',
name: '课程管理',
path: '/course',
children: [
{
tag: 'v1-course-list',
icon: Monitor,
name: '我的课程',
path: '/course/my'
},
{
tag: 'v1-course-create',
icon: Edit,
name: '新建课程',
path: '/course/create'
......@@ -48,15 +60,18 @@ export const menus: IMenuItem[] = [
]
},
{
tag: 'v1-backend',
name: '后台管理',
path: '/admin',
children: [
{
tag: 'v1-backend-lecturer-list',
icon: User,
name: '讲师管理',
path: '/admin/teacher'
},
{
tag: 'v1-backend-category-list',
icon: Filter,
name: '类别管理',
path: '/admin/category'
......@@ -69,15 +84,18 @@ export const menus: IMenuItem[] = [
]
},
{
tag: 'v1-backend',
name: '系统管理',
path: '/system',
children: [
{
tag: 'v1-backend-data-dictionary-list',
icon: Notebook,
name: '数据字典',
path: '/system/dictionary'
},
{
tag: 'v1-backend-cover-list',
icon: Picture,
name: '封面管理',
path: '/system/cover'
......
......@@ -34,15 +34,15 @@ const defaultActive = computed(() => {
<nav class="nav">
<el-menu :default-active="defaultActive" :router="true" class="app-menu">
<template v-for="item in menuList" :key="item.path">
<el-sub-menu :index="item.path" v-if="item.children">
<el-sub-menu :index="item.path" v-permission="item.tag" v-if="item.children">
<template #title>
<el-icon><component :is="item.icon"></component></el-icon>{{ item.name }}
</template>
<el-menu-item :index="subitem.path" v-for="subitem in item.children" :key="subitem.path">
<el-menu-item :index="subitem.path" v-for="subitem in item.children" :key="subitem.path" v-permission="subitem.tag">
{{ subitem.name }}
</el-menu-item>
</el-sub-menu>
<el-menu-item :index="item.path" v-else>
<el-menu-item :index="item.path" v-permission="item.tag" v-else>
<el-icon><component :is="item.icon"></component></el-icon>{{ item.name }}
</el-menu-item>
</template>
......
......@@ -35,7 +35,7 @@ function genNavClassName(data: IMenuItem) {
<h1 class="app-name">统一资源管理平台</h1>
</div>
<div class="app-header-nav">
<div class="app-header-nav-item" v-for="(item, index) in menus" :key="index" :class="genNavClassName(item)">
<div class="app-header-nav-item" v-for="(item, index) in menus" :key="index" :class="genNavClassName(item)" v-permission="item.tag">
<router-link :to="item.path">{{ item.name }}</router-link>
</div>
</div>
......
import type { Component } from 'vue'
export interface IMenuItem {
tag?: string
name: string
path: string
icon?: Component
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论