zoukankan      html  css  js  c++  java
  • 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;
         180px !important;
        height: 100%;
        position: fixed;
        font-size: 0px;
        top: 0;
        bottom: 0;
        left: 0;
        z-index: 1001;
        overflow: hidden;
      }
      .main-logo > img{
         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

  • 相关阅读:
    [转贴] IPSEC From 知乎
    intel 的架构图
    IPV6 简单验证
    exsi6.0远程修改密码
    Oracle单个datafile大小的限制
    用Linux完成Oracle自动物理备份
    vSphere Client 更改 ESX/ESXi 主机的端口
    netstat Recv-Q和Send-Q
    Linux下安装(卸载)KDE和GNOME
    完美解决xhost +报错: unable to open display ""
  • 原文地址:https://www.cnblogs.com/randomlee/p/10520573.html
Copyright © 2011-2022 走看看