vue权限配置

对权限进行分组配置

后端会返回数组项,通过id可获取用户拥有权限
在这里插入图片描述

  • string.indexOf(searchvalue,start)Number 查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。
  • 获取数据,对多选框分组
<el-checkbox-group v-model="checkedMenuOptions" @change="handleCheckedChange">
    <el-checkbox v-for="item in menuOptions" :label="item.index" :value="item.index" :key="item.id"
                 style="width: 120px">{{item.name}}
    </el-checkbox>
</el-checkbox-group>
   funCheckedGroup(checkedLisense){

        this.checkedMenuOptions = [];
        this.checkedVoiceOptions = [];
        this.checkedMapOptions = [];
        this.checkedmeetingOptions = [];
        this.checkeddataOptions = [];
        // index  0-5为 一级菜单 组array回填数据 
     
        for (var i = 0; i < checkedLisense.length; i++) {
          if (1 <= checkedLisense[i].id && checkedLisense[i].id <= 6) {
            this.checkedMenuOptions.push(checkedLisense[i].index);
          } else if ([6, 7, 8, 9, 67, 68, 69, 71, 72].indexOf(checkedLisense[i].id) > -1) {
            this.checkedVoiceOptions.push(checkedLisense[i].index);
          }
          else if ([10, 11, 12].indexOf(checkedLisense[i].id) > -1) {
            this.checkedMapOptions.push(checkedLisense[i].index);
          }
          else if ([13, 14].indexOf(checkedLisense[i].id) > -1) {
            this.checkedmeetingOptions.push(checkedLisense[i].index);
          } else {
            this.checkeddataOptions.push(checkedLisense[i].index);

          }
        }
        this.showBox = true;
        this.$nextTick(function () {
          $('.el-checkbox__inner').css('display', 'block');
        })

      },

组下选项

 //对checkbox进行分组
      funCheckGroup(){
        this.menuOptions = [];
        this.voiceOptions = [];
        this.mapOptions = [];
        this.meetingOptions = [];
        this.dataOptions = [];
        // index  0-5为 一级菜单
        for (var i = 0; i < this.totalCheckOptions.length; i++) {
          if (1 <= this.totalCheckOptions[i].id && this.totalCheckOptions[i].id <= 6) {
            this.menuOptions.push(this.totalCheckOptions[i]);
          } else if ([6, 7, 8, 9, 67, 68, 69, 71, 72].indexOf(this.totalCheckOptions[i].id) > -1) {
            this.voiceOptions.push(this.totalCheckOptions[i]);
          }
          else if ([10, 11, 12].indexOf(this.totalCheckOptions[i].id) > -1) {
            this.mapOptions.push(this.totalCheckOptions[i]);
          }
          else if ([13, 14].indexOf(this.totalCheckOptions[i].id) > -1) {
            this.meetingOptions.push(this.totalCheckOptions[i]);
          } else {
            this.dataOptions.push(this.totalCheckOptions[i]);

          }
        }


      },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue项目中实现动态路由权限配置的思路如下: 1. 首先,与后台进行沟通,获取路由表的数据。可以与后台约定一个接口,后台将需要展示的路由信息返回给前端。 2. 在前端的路由配置文件中,引入Vuex,并将路由表数据存储在Vuex的state中。这样可以在全局范围内访问到路由表数据。 3. 在Vue的根实例中,通过router.beforeEach()方法进行路由守卫的配置。在每次路由切换前,判断用户是否有权限访问该路由。可以通过对比用户的权限信息和路由表中定义的权限要求来判断。 4. 如果用户有权限访问该路由,则继续进行路由跳转。如果没有权限,则进行相应的处理,比如跳转到一个没有权限的页面或者给出提示信息。 下面是一个示例的代码: 1. 在store/index.js文件中,定义一个router模块,用来存储路由表数据。 ```javascript import Vue from 'vue' import Vuex from 'vuex' import router from './router/index.js' Vue.use(Vuex) export default new Vuex.Store({ state: { // 存储路由表数据 routerTable: [] }, mutations: { // 更新路由表数据 updateRouterTable(state, routerTable) { state.routerTable = routerTable } }, actions: {}, modules: { router } }) ``` 2. 在登录成功后,将路由表数据保存到Vuex的state中。 3. 在main.js文件中,配置router.beforeEach()方法。 ```javascript router.beforeEach((to, from, next) => { // 获取当前用户的权限信息 const userPermissions = store.state.user.permissions // 判断用户是否有权限访问该路由 const hasPermission = userPermissions.includes(to.meta.permission) if (hasPermission) { // 如果有权限,继续路由跳转 next() } else { // 没有权限,进行相应的处理 next('/403') // 跳转到没有权限的页面 } }) ``` 需要注意的是,动态路由权限配置的具体实现方式会因项目而异。以上是一个基本的思路和示例,你可以根据自己的项目需求进行相应的调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值