uniapp 根据不同角色实现动态底部TabBar导航栏

文章目录

  • 前言
  • 最终效果
  • 一、实现步骤
    • 1.配置page.json中的tabBar属性
    • 2.创建自定义tabBar文件
    • 3.配置Vuex
    • 4.在main.js中引入并挂载store:
    • 5.登录页内引入自定义tabbar,根据角色进行登录验证
    • 6.在每个导航页中使用自定义的tabbar


前言

在UniApp的开发过程中,为了针对不同角色用户登录后的个性化需求,本文集成了uView-UI框架的TabBar组件。通过动态权限配置机制,能够根据用户的角色信息灵活地调整TabBar的属性,从而实现个性化的TabBar界面展示,以满足不同用户群体的特定需求。


最终效果

用户角色:
在这里插入图片描述

售后客服:
在这里插入图片描述


一、实现步骤

1.配置page.json中的tabBar属性

代码如下:

只需配置pagePath,微信小程序底部导航栏最多只能显示五个。

在这里插入图片描述

2.创建自定义tabBar文件

位置示例如下:

在这里插入图片描述

具体代码如下:

在tabBar.js文件中定义的list数组的顺序决定了tabBar上按钮的显示顺序。

// 普通用户展示的页面
const publicBar = [{"pagePath": "/pages/sys/home/index","text": "首页","iconPath": "/static/aidex/tabbar/home_1.png","selectedIconPath": "/static/aidex/tabbar/home_2.png"},{"pagePath": "/pages/sys/msg/index","text": "消息","iconPath": "/static/aidex/tabbar/msg_1.png","selectedIconPath": "/static/aidex/tabbar/msg_2.png"},{"pagePath": "/pages/sys/aftersales/aftersales-order","text": "我的售后","iconPath": "/static/aidex/tabbar/book_1.png","selectedIconPath": "/static/aidex/tabbar/book_2.png"},{"pagePath": "/pages/sys/user/index","text": "我的","iconPath": "/static/aidex/tabbar/my_1.png","selectedIconPath": "/static/aidex/tabbar/my_2.png",}
]// 售后客服展示的页面
const selfBar = [{"pagePath": "/pages/sys/home/index","text": "工作台","iconPath": "/static/aidex/tabbar/home_1.png","selectedIconPath": "/static/aidex/tabbar/home_2.png"},{"pagePath": "/pages/sys/msg/index","text": "消息","iconPath": "/static/aidex/tabbar/msg_1.png","selectedIconPath": "/static/aidex/tabbar/msg_2.png"},{"pagePath": "/pages/sys/aftersales/staff-order","text": "售后进度","iconPath": "/static/aidex/tabbar/book_1.png","selectedIconPath": "/static/aidex/tabbar/book_2.png"},{"pagePath": "/pages/sys/user/index","text": "我的","iconPath": "/static/aidex/tabbar/my_1.png","selectedIconPath": "/static/aidex/tabbar/my_2.png",}
]export {publicBar,selfBar
}

3.配置Vuex

位置示例如下:

在这里插入图片描述

具体代码如下:

// 引入Vue和Vuex
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)// 创建一个新的Vuex store实例
const store = new Vuex.Store({state: {// 存储动态tabbar的数据dynamicTabbar: []},getters: {},actions: {changeTabbar({ commit }, payload) {// 使用commit方法提交一个mutation,更新state中的dynamicTabbarcommit('updateTabbar', payload)}},mutations: {updateTabbar(state, payload) {state.dynamicTabbar = payload}}
})
export default store

4.在main.js中引入并挂载store:

具体代码如下:

在这里插入图片描述

5.登录页内引入自定义tabbar,根据角色进行登录验证

在这里插入图片描述

注:根据实际登录业务逻辑修改

在这里插入图片描述

6.在每个导航页中使用自定义的tabbar

项目中引入uView-UI的tabbar组件

在这里插入图片描述

具体使用如下:

    <!-- home/index.vue 页面 --><u-tabbar v-model="current" :list="tabBarList" :active-color="activeColor" :inactive-color="inactiveColor":border-top="borderTop" />data() {return {title: '首页', // 导航栏的标题,这会显示在页面的顶部或作为当前视图的标题tabBarList: this.$store.state.dynamicTabbar, // 导航栏的列表项,来源于Vuex状态管理中的dynamicTabbarcurrent: 0, // 当前激活的导航项的索引,0表示第一个导航项borderTop: true, // 控制是否有顶部边框,true表示有边框inactiveColor: '#909399', // 未激活的TabBarItem的颜色activeColor: '#5098FF' // 激活的TabBarItem的颜色}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/643654.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang基础3-函数、nil相关

函数 需要声明原型支持不定参数 func sum(numbers ...int)int支持返回多值支持递归支持命名返回参数 // 命名返回参数 func add(a, b int) (sum int) {sum a breturn // 这里不需要显式地写出返回值&#xff0c;因为已经在函数签名中声明了命名返回参数 } 支持匿名函数、闭包…

单片机学习过程

继电器光耦隔离电压转换步进电机直流电机 arduino是最好用的一种&#xff0c;他提供了完整的设备库文件&#xff0c;任何外部设备只要查找相应的库&#xff0c;就可以很方便的使用 &#xff0c; 但是如果不去学习51 或stm32 或 嵌入式玩玩还可以&#xff0c;如果碰到没有实现的…

单片机使用循环来实现延时和定时器延时的区别是什么?

循环延时是一种简单的实现方式&#xff0c;但由于资源占用和精确度的限制。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在…

用Excel做一个功能完备的仓库管理系统

1 基本设计思路 用到的Excel技术&#xff1a;sumif, vlookup, 表格(table)。基本思路&#xff1a;在有基础的商品、仓库等信息的情况下&#xff0c;对商品的每一个操作都有对应的单据&#xff0c;然后再汇总统计。标识&#xff1a;为了在不同的维度统计数量&#xff0c;各单据…

Spring与SpringBoot在配置读取方式上的区别

1. 问题说明 将Springboot项目中自定义的一个扩展工具类移植到Spring框架项目中的时候发现一个问题。在springboot中application.yml中的配置内容可以从Environment中获取&#xff0c;但是在spring中context:placeholder对应的配置文件中的配置却无法从Environment中获取。为了…

第67天:APP攻防-Frida反证书抓包移动安全系统资产提取评估扫描

思维导图 案例一&#xff1a;内在-资产提取-AppinfoScanne AppinfoScanner 一款适用于以 HW 行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具&#xff0c;可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态 WEB …

文字转粤语语音怎么转?文字转语音

文字转粤语语音怎么转&#xff1f;文字转粤语语音的应用&#xff0c;不仅展现了现代科技的魅力&#xff0c;也为我们提供了更加便捷的交流方式。它们将文字转化为粤语发音&#xff0c;让我们能够更直观地感受粤语的韵味和魅力。同时&#xff0c;这些软件还具备高度的可定制性&a…

TiDB 6.x 新特性解读 | Collation 规则

对数据库而言&#xff0c;合适的字符集和 collation 规则能够大大提升使用者运维和分析的效率。TiDB 从 v4.0 开始支持新 collation 规则&#xff0c;并于 TiDB 6.0 版本进行了更新。本文将深入解读 Collation 规则在 TiDB 6.0 中的变更和应用。 引 这里的“引”&#xff0c;…

Java:开发环境配置Windows/Liunx

Windows环境下JAVA_JDK安装及环境变量配置 &#xff08;1&#xff09;下载JDK&#xff0c;Java Downloads | Oracle &#xff08;2&#xff09;根据电脑的系统选择64位的版本进行下载 &#xff08;3&#xff09;下载完成&#xff0c;直接双击安装&#xff0c;所有选项直接默认…

Redis(四) 主从、哨兵、集群环境搭建

结合前三期 Redis(一) Redis简介(Redis(一) Redis简介-CSDN博客) Redis(二) 可编程性(Redis(二) 可编程性-CSDN博客) Redis(三) 事务与发布订阅(Redis(三) 事务与发布订阅-CSDN博客) 目录 1.0 Redis主从 1.1 Redis 主从结构的基本原理和工作方式 1.2 Redis 主从结构的好处 …

数据结构(Wrong Question)

一、绪论 1.1 数据结构的基本概念 D 因为抽象数据类型&#xff08;ADT&#xff09;描述了数据的逻辑结构和抽象运算&#xff0c;通常用&#xff08;数据对象&#xff0c;数据对象&#xff0c;基本操作集&#xff09;这样的三元组来表示&#xff0c;从而可构成一个完整的数据结…

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff08;有可能是正好过期了&#xff09;&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种&#xff1a; 互斥锁 逻…