此文章借鉴于https://blog.csdn.net/fuyuumiai/article/details/109746357,在此基础上修改小部分内容,适用于我这种uniapp小白

介绍:

现在我们要满足的项目需求是根据登录用户角色的不同,tabBar的数量和内容显示不同,如下图

用户角色为管理员时:

用户角色为普通用户时:

登录用户的角色不同,因为权限不同所以tabBar的内容和数量也不同,而uniapp中tabBar本身的配置   uni.setTabBarItem(OBJECT)   只能够满足动态设置 tabBar 某一项的内容,没办法实现上图中的需求

这个时候我们就可以使用UI框架Uview来实现需求

一、uVIew的下载及配置

  大家可以直接去官网根据官方指导下载配置  uView

  官方推荐两种安装方式,一种是下载安装,一种是npm安装,我个人选择了第一种,现在讲下我个人的配置过程(可以直接看官网的讲的很详细)

下载

  打开uView的下载地址 https://ext.dcloud.net.cn/plugin?id=1593 选择右侧的用HbuilderX导入插件

导入时会新建一个文件夹用来存放uView文件确认好路径后直接点击创建就可以

下载成功后,找到新建的文件夹,下载好的uView文件就在里面,把该文件夹内的uview-ui文件复制到uniapp项目的根目录下

配置

 配置项官方写的很详细,  配置

 1、确认项目中已经安装好scss插件,在配置uview的css时需要用到

 2、在main.js中引入uview的js库

import uView from 'uview-ui'
Vue.use(uView)

 

3、在项目根目录的uni.scss文件中引入 uView的全局SCSS主题文件,在uni.scss文件的最开始引入就可以,方便查找

4、在app.vue文件的style样式中引入uView基础样式,style中需要写明  lang = scss ,我之前就已经配置好了scss插件,所以直接用就可以,没有安装scss插件的自行安装

5、配置easycom组件模式

 在根目录的page.json文件中配置,意思是   // 匹配uview-ui文件下components目录内的vue文件,具体解释可以查看官网 easycom

"easycom": {
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
}

至此,uview的安装配置结束

二、配置tabBar

1、创建tabBar页面

2、在page.json配置tabBar页面路径

  在page.json中配置tabBar页面路径,只需要配置各个页面的路径就可以,不用配置其他项

3、创建自定义tabBar文件

  在项目根目录下创建untils文件夹,文件夹内创建tabBer.js文件

这个js文件是我们自定义的tabBar属性文件,用来覆盖原来的配置

  根据uniapp官网中tabBar的属性配置即可,每个数组代表一种角色要显示的tabBar列表,比如我有管理员和普通用户两种角色,就配置两个数组,每个数组里面配置各自tabBar的页面属性,就算两个角色有相同的页面,也要在各自的数组中配置,

  数组中的顺序就是tabBar显示的顺序,对顺序有要求的请注意此项

三、配置vuex

  uniapp中已经集成了vuex,我们直接用就可以,

  我个人对vuex并不太了解,在项目中只是能单纯的运用,getters.js 和index.js完全是套我个人理解的模板来做

1、根目录下创建store文件夹及其他文件

2、配置tabber.js文件

  在tabBer.js文件中对登录用户进行角色判断

  midBtn是为了判断uview中tabBar组件的加号按钮是否显示,当你的项目需求为确认显示或确认不显示时,直接在uview/components/u-tabbar中找到该项修改属性为true或者false即可,不用再在tabBer.js文件中判断,我的项目不需要,所以我会把这一项直接删掉

3、getters

当tabBer.js文件中的midBtn去掉不写时,本文件中的对应项也直接去掉

4、index.js

5、mian.js引入store

在main.js中引入store文件

四、引入组件

  在每个tabBar的页面引入uView中的tabBar组件,父传子传值,一些固定的值可以不传值直接在组件中修改

这是tabbar组件,uview-ui/components/u-tabbar.vue,props中的值如果不需要动态变化可以直接设定初始值,父组件不再传值,

如下图,直接设置组件中间的加号按钮为false,前面一系列关于midBtn的代码都可以删除

结束!!!

撒花!!!

uniapp根据登录用户的角色动态的改变tabBar的数量和内容的更多相关文章

  1. 关于在vuejs中动态加载不确定数量和内容的组件的解决方案

    在做一个门户项目的时候,客户要求需要进行私人化定制,每个人进入首页的时候可以自定义首页显示的版块 要在4.50个组件中显示随机N个组件按照每个人选定的顺序排列.需求说完了,接下来说说解决方案: htm ...

  2. springBoot+springSecurity 数据库动态管理用户、角色、权限

    使用spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过, ...

  3. springBoot+springSecurity 数据库动态管理用户、角色、权限(二)

    序: 本文使用springboot+mybatis+SpringSecurity 实现数据库动态的管理用户.角色.权限管理 本文细分角色和权限,并将用户.角色.权限和资源均采用数据库存储,并且自定义滤 ...

  4. spring security 动态 修改当前登录用户的 权限

    1.前言 spring security 可以获取当前登录的用户信息,同时提供了接口 来修改权限列表信息 , 使用这个方法 ,可以动态的修改当前登录用户权限. 那么问题来了... 如果我是管理员 ,如 ...

  5. [转]Sql Server 2005中的架构(Schema)、用户(User)、登录(Login)和角色(Role)

    每一个概念的产生必然是因为碰到了无法解决的问题.换句话说,如果没有它,必然会导致某些问题难以解决.所以我想从这个角度切入,希望能把这几个复杂而暧昧的多角关系从最实用的角度来阐述清楚. 在问题的最初,我 ...

  6. SQL SERVER服务器登录名、角色、数据库用户、角色、架构的关系

    原创链接:https://www.cnblogs.com/junfly/articles/2798023.html SQL SERVER 基础教程中关于服务器登录名.服务器角色.数据库用户.数据库角色 ...

  7. SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系

    sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户可以对应多个架构(架构是表容器).架构里面包含的是数据库表. 2.一个数据库角色有可能涉及多个架构.数据 ...

  8. SQL Server 登录名、用户、角色与权限

    1.在SQL Server中,用户和角色是分为服务器级别和数据库级别的 2.服务器级别 登录名:指有权限登录到某服务器的用户,例如超级管理员的登录名是sa: 登录名具体位置在  数据库——>安全 ...

  9. (一)shiro简介和用户登录demo及角色管理

    一.shiro简介 Apache Shiro是Java的一个安全框架.Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境.Shiro可以帮助我们完成 ...

随机推荐

  1. Redis5.0 主从模式和高可用 搭建和测试报告

    Redis 单机模式很简单,相关测试水文看这里 Redis5 压力测试结果反馈报告 必须的,今天接着写水文,写一写现在redis 支持的三种集群,主从模式,哨兵模式,Cluster模式,今天先搞主从模 ...

  2. 关于python面试中的设计模式,搞懂这些就足够了

    1.什么是设计模式? 设计模式是经过总结.优化,对我们经常遇到的一些编程问题的可重用的解决方案.设计模式不同于类或库可直接作用于代码.相反,它更为的高级,是一种必须在特定的情形下实现的方法模版. 2. ...

  3. 基于nginx负载均衡及frp的内网穿透实例3-多用户多网站共用80端口

    原文地址:点击跳转 最近frp用户量有点多,而且很多用户都是想把部署于本地或者内网的web服务暴露至公网,之前提到过,暴露到公网之后如果一般都需要用域名:端口的方法来访问,但是没有人会喜欢用这种方式访 ...

  4. 如何优雅排查现网服务器cpu飙高的问题

    1.排查现网服务器cpu飙高问题的思路 1.查看java进程id ps -ef|grep java 2.使用top -Hp 进程id 查看cpu比较高的线程 3.执行jstack 进程id > ...

  5. Redis在存取序列化和反序列化性能问题

    1. 问题场景 我们在使用Redis的时候经常会将对象序列化存储到Redis中,在取出的时候进行反序列化,如果对象过大在进行序列化和反序列化的时候会有一定性能问题.今天查看了CSRedis源码发现在S ...

  6. SSRF之利用dict和gopher吊打Redis

    SSRF之利用dict和gopher吊打Redis 写在前面 SSRF打Redis也是老生常谈的东西了,这里复现学习一下之前在xz看到某师傅写的关于SSRF利用dict和gopher打内网服务的文章, ...

  7. 漫谈JSON Web Token(JWT)

    一.背景 传统的单体应用基于cookie-session的身份验证流程一般是这样的: 用户向服务器发送账户和密码. 服务器验证账号密码成功后,相关数据(用户角色.登录时间等)都保存到当前会话中. 服务 ...

  8. 回顾maven项目的spring boot相关知识点

    2021新年快乐! 在参加完研究生考试后,感觉像是放下了一个大负担,但并不能就此以为什么都结束了.反而,当我今天去看了一下之前老师带领我们班级做的一个maven项目,感觉像是第一次看到这个,十分陌生. ...

  9. Spring Boot 2.x基础教程:实现文件上传

    文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然后再做图片的裁剪,excel数据的解析入库等后续操作. ...

  10. Lock锁 精讲

    1.为什么需要Lock 为什么synchronized不够用,还需要Lock Lock和synchronized这两个最常见的锁都可以达到线程安全的目的,但是功能上有很大不同. Lock并不是用来代替 ...