vue-router 根据路由动态添加目录 控制目录权限
<template>
<el-row class="el-menu" >
<el-menu
router
:default-active='$route.path'
@open="handleOpen"
@close="handleClose"
background-color="#545c64"
text-color="#fff"
active-text-color="#ffd04b" >
<el-menu-item index="/" class="main-logo">
<img src="../../static/img/sfa_logo.png" >
</el-menu-item>
<template v-for="(item , index) in $router.options.routes" v-if="item.meta.menuShow" >
<template v-if="index==1" >
<el-menu-item :index="item.path" :disabled='ListenChange' >
<i :class="item.meta.ClassName"></i>
<span slot="title" >{{item.meta.menuName}}</span>
</el-menu-item>
</template>
<template v-else="index!=1">
<el-menu-item :index="item.path" >
<i :class="item.meta.ClassName"></i>
<span slot="title" >{{item.meta.menuName}}</span>
</el-menu-item>
</template>
</template>
</el-menu>
</el-row>
</template> <script>
export default {
name: 'MenuItemGroup',
computed: {
// //计算属性动态获取值
// //*************************************************************
ListenChange() {
return this.$store.getters.ShowUserDisabled
},
// //*************************************************************
},
watch:{
//监测属性动态检测值
//*************************************************************
'ListenChange':{
handler:function (val, oldVal) {
},
deep:true,
},
//*************************************************************
}, methods: { handleOpen(key, keyPath) {
console.log(key, keyPath);
},
handleClose(key, keyPath) {
console.log(key, keyPath);
},
},
data() {
return {
}
},
components: {},
}
</script> <style scoped>
.el-menu{
-webkit-transition: width 0.28s;
transition: width 0.28s;
width: 180px !important;
height: 100%;
position: fixed;
font-size: 0px;
top: 0;
bottom: 0;
left: 0;
z-index: 1001;
overflow: hidden;
}
.main-logo > img{
width: 163px;
height: 47px;
padding: 0 20px;
margin-left: -30px;
} </style>
import Vue from 'vue'
import Router from 'vue-router'
import LineSwitch from '@/views/Switch/LineSwitch'
import Log from '@/views/Log/Log'
import ManualSwitching from '@/views/ManualSwitching/ManualSwitching'
import OperatorManagement from '@/views/OperatorManagement/OperatorManagement'
import CoreSwitchManagement from '@/views/CoreSwitchManagement/CoreSwitchManagement'
import UserManagementofNetworkEquipment from '@/views/UserManagementofNetworkEquipment/UserManagementofNetworkEquipment'
import AboutUS from '@/views/AboutUS/AboutUS' Vue.use(Router) export default new Router({
routes: [
{
path: '/',
name: 'LS',
component: LineSwitch,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '线路切换', // 导航栏中显示的名称
ClassName:'el-icon-extendedicon-' //导航栏中显示的图标
},
},
{
path:'/ManualSwitching',
name:'ManualSwitching',
component:ManualSwitching,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '手动切换', // 导航栏中显示的名称
ClassName:'el-icon-extendedbackup-hm' //导航栏中显示的图标 },
},{
path:'/OperatorManagement',
name:'OperatorManagement',
component:OperatorManagement,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '运营商管理', // 导航栏中显示的名称
ClassName:'el-icon-extendedjizhanxinhao' //导航栏中显示的图标 },
},{
path:'/UserManagementofNetworkEquipment',
name:'UserManagementofNetworkEquipment',
component:UserManagementofNetworkEquipment,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '网络设备用户管理', // 导航栏中显示的名称
ClassName:'el-icon-extendedquanxianguanli' //导航栏中显示的图标
},
},{
path:'/CoreSwitchManagement',
name:'CoreSwitchManagement',
component:CoreSwitchManagement,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '核心交换机管理', // 导航栏中显示的名称
ClassName:'el-icon-extendedhexinjiaohuanji' //导航栏中显示的图标
},
},{
path:'/SwitchLogfile',
name:'Log',
component:Log,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '切换日志', // 导航栏中显示的名称
ClassName:'el-icon-extendedrizhi' //导航栏中显示的图标
},
},{
path:'/AboutUS',
name:'AboutUS',
component:AboutUS,
meta: {
menuShow: true, // 是否在导航栏中显示
menuName: '关于我们', // 导航栏中显示的名称
ClassName:'el-icon-extendedicon-test' //导航栏中显示的图标
},
}
]
})
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state={//要设置的全局访问的state对象
UserInfo:{
user_name:'',
user_account:'000',
disabled:''
},
//要设置的初始属性值
};
const getters = {
ShowUserName(state){
return state.UserInfo.user_name
},
ShowUserAccount(state){
return state.UserInfo.user_account
},
ShowUserDisabled(state){
return state.UserInfo.disabled
},
};
const mutations = {
SetUserAccount(state,user_account){
state.UserInfo.user_account=user_account;
},
SetUserName(state,user_name) {
state.UserInfo.user_name = user_name;
},
SetUserDisabledFalse(state) {
state.UserInfo.disabled = false;
},
SetUserDisabledTrue(state) {
state.UserInfo.disabled = true;
} };
const store = new Vuex.Store({
state,
getters,
mutations
});
export default store;
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import '../static/icons/iconfont.css'
//*********************************************************************************
// // axios 设置
import axiosAPI from '@/api/axios.js'
Vue.use(axiosAPI)
//********************************************************************************* Vue.use(ElementUI);
Vue.config.productionTip = false;
/* eslint-disable no-new */
import store from './store/index.js'
new Vue({
el: '#app',
store,
router,
components: {App},
template: '<App/>',
created() {
this.GetUserInfo()
},
methods: {
//获取用户信息 判断是否有手动切换的权限
//******************************************************************************************************
GetUserInfo() {
this.getuserinfo({})
.then(response => {
let bk_username=response.data.bk_username;
if ( bk_username && ( bk_username == '01379233' || bk_username=='01377338' ||bk_username== '338440')){
this.$store.commit('SetUserDisabledFalse');
}else{
this.$store.commit('SetUserDisabledTrue');
}
this.$store.commit('SetUserName', response.data.chname);
this.$store.commit('SetUserAccount', response.data.bk_username);
// console.log(this.$store.getters.ShowUserAccount) })
.catch(error => {
});
}
//******************************************************************************************************
}
});
参考文章
https://segmentfault.com/a/1190000009392552
vue-router 根据路由动态添加目录 控制目录权限的更多相关文章
- Vue 中的Vue Router一级路由,二级路由,三级路由以及跳转
今天编写了一下Vue中的路由 先用命令行新建一个空的项目,并且我知道要用路由,就下载了路由的相关依赖 vue init webpack demo5 完毕之后进入所在的项目 cd demo5 之后用vs ...
- vue中v-bind:class动态添加class
1.html代码 <template v-for='item in names'> <div id="app" class="selectItem&qu ...
- Vue router 一个路由对应多个视图
使用命名路由 https://jsfiddle.net/posva/6du90epg/ <script src="https://unpkg.com/vue/dist/vue.js&q ...
- vue向数组中动态添加数据
vue中数据更新通过v-model实现,向数组中添加数据通过push()实现,向shortcuts数组中动态添加newShortcut对象中的title和action this.shortcuts.p ...
- vue router引入路由与路由配置容易犯错的地方与常见的报错与处理报错
首先npm安装vue-router插件,就不说了其次: 先看下我本地的目录结构吧 第一步:在src目录下新建一个专门存放router的index.js文件里面的内容为: import Vue from ...
- Vue router 全局路由守卫
记录一下全局路由守卫的使用: 方法一:定义一个数组用于检测与管理需要登录的页面,全局路由守卫配合本地存储判断是否跳转 import Vue from 'vue' import Router from ...
- vue.js实现点击后动态添加class及删除同级class
最近使用vue需要实现一个点餐选择商品规格的页面,需要通过vue动态的给被点击的元素添加class名字,使其变色,其他的删除class.如图: 开始在网上找了许多办法发现不是太好用,最后找到一个发现还 ...
- vue简单案例_动态添加删除用户数据
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue中通过v-for动态添加图片地址
由于组件化问题,webpake在打包以后,src目录下的assets里面存放的img图片,路径已经更换.很多入坑的前端程序员在使用的时候,可能专破头也弄不清地址是什么个情况: 这里在使用vue-cli ...
随机推荐
- P3308 [SDOI2014]LIS(最小割+退流)
传送门 设\(f[i]\)为以\(i\)结尾的最长上升子序列.可以考虑建这样一张图,对于所有的\(i<j,f[j]=f[i+1]\)连边\((i,j)\),\(f[i]=1\)的话连边\((S, ...
- css覆盖select样式并添加小箭头
.select { border-radius: 5px; border: 1px #F4A627 solid; -webkit-appearance: none;//清除默认样式 backgroun ...
- 《windows核心编程系列》四谈谈进程的建立和终止
第二部分:工作机理 第一章:进程 上一章介绍了内核对象,这一节开始就要不断接触各种内核对象了.首先要给大家介绍的是进程内核对象.进程大家都不陌生,它是资源和分配的基本单位,而进程内核对象就是与进程相关 ...
- VS2010环境下.NET4.0中Tuple<T>的一个小BUG问题
启动一个桌面程序后,发现一个窗体cfdata=null, 执行时发生错误, 但是在初始化的时候,我明明是cfdata=new Cfdata();为什么会出现这个错误呢. 我开始跟踪,发现当执行cfda ...
- 对数组随机赋值,并输出(Arrays.toString(arr))
import java.util.Arrays; public class Demo { public static void main(String[] args) { int[] arr = ne ...
- AJPFX总结JAVA基本数据类型
1:关键字(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 全部小写. (3)注意事项: ...
- 关于使用myeclipse搭建tomcat环境运行web项目的方法
这两天准备改同事的一个系统的自适应,然而我没想到的是我竟然在打开这个项目上就遇到了困难,真的是too young too simple,究其根本就是了解的太少了,于是为了我不忘记,用博客的方式把它记录 ...
- R in action读书笔记(7)-第七章:基本统计分析(下)
7.3相关 相关系数可以用来描述定量变量之间的关系.相关系数的符号(±)表明关系的方向(正相关或负相关),其值的大小表示关系的强弱程度(完全不相关时为0,完全相关时为1).除了基础安装以外,我们还将使 ...
- qt 5中文乱码
头文件加上#prama execution_character_set("utf-8")
- KVM环境下vCPU绑定到物理CPU
在KVM环境中测试虚拟系统性能时,如果宿主机是有两个CPU socket的硬件,会碰到由于vCPU在不同物理CPU上浮动导致测试RFC2544时出现少量丢包的现象,测试结果非常不稳定.可以将vCPU绑 ...