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

news2025/1/16 10:54:42

文章目录

  • 前言
  • 最终效果
  • 一、实现步骤
    • 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中的dynamicTabbar
      commit('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状态管理中的dynamicTabbar
         current: 0, // 当前激活的导航项的索引,0表示第一个导航项
         borderTop: true, // 控制是否有顶部边框,true表示有边框
         inactiveColor: '#909399', // 未激活的TabBarItem的颜色
         activeColor: '#5098FF' // 激活的TabBarItem的颜色
      }
  }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Swift - 函数

文章目录 Swift - 函数1. 函数的定义2. 隐式返回(Implicit Return)3. 返回元组&#xff1a;实现多返回值4. 函数的文档注释5. 参数标签&#xff08;Argument Label&#xff09;6. 默认参数值&#xff08;Default Parameter Value&#xff09;7. 可变参数&#xff08;Variadic P…

【Java】全套云HIS源码包含EMR、LIS(多医院、卫生机构使用)

云HIS系统简介 SaaS模式Java版云HIS系统源码&#xff0c;在公立二甲医院应用三年&#xff0c;经过多年持续优化和打磨&#xff0c;系统运行稳定、功能齐全&#xff0c;界面布局合理、操作简便。 1、融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;HIS与电子病…

Redis(七) zset有序集合类型

文章目录 前言命令ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZPOPMAXZPOPMIN两个阻塞版本的POP命令BZPOPMAX BZPOPMINZRANKZREVRANKZSCOREZREMZREMRANGEBYRANKZREMRANGEBYSCOREZINCRBY集合间操作ZINTERSTOREZUNIONSTORE 命令小结 内部编码使用场景 前言 对于有序集合这个名…

航片水体空洞修补

水体空洞情况如下图所示&#xff1a; 水体空洞修补结果如下图所示&#xff1a; 操作视频教程&#xff1a; MCM智拼图软件V8.5-漏洞空洞修补-水体修补_哔哩哔哩_bilibili

【SDC时序约束】1.主时钟创建

一、时钟 DC工具在进行综合时&#xff0c;需要根据一个时钟进行时序分析。   因此我们需要通过SDC给DC提供一个时钟。   时钟创建是必须的&#xff0c;在创建时钟的同时对时钟进行约束&#xff0c;从而确定整个设计的性能和限制外部时钟。 二、时钟创建 时钟约束通过creat…

详解centos8 搭建使用Tor 创建匿名服务和匿名网站(.onion)

1 Tor运行原理&#xff1a; 请求方需要使用&#xff1a;洋葱浏览器&#xff08;Tor Browser&#xff09;或者Google浏览器来对暗&#xff0c;网网站进行访问 响应放需要使用&#xff1a;Tor协议的的Hidden_service 2 好戏来了 搭建步骤&#xff1a; 1.更新yum源 rpm -Uvh h…

React复习笔记

基础语法 创建项目 借助脚手架&#xff0c;新建一个React项目(可以使用vite或者cra&#xff0c;这里使用cra) npx create-react-app 项目名 create-react-app是React脚手架的名称 启动项目 npm start 或者 yarn start src是源文件index.js相当于Vue的main.js文件。整个…

C++—DAY4

在Complex类的基础上&#xff0c;完成^&#xff0c;<<&#xff0c;>>&#xff0c;~运算符的重载 #include <iostream>using namespace std; class Complex {int rel;int vir; public:Complex(){}Complex(int rel,int vir):rel(rel),vir(vir){}void show(){c…

力扣每日一题-总行驶距离-2024.4.25

力扣题目&#xff1a;总行驶距离 题目链接: 2739.总行驶距离 题目描述 代码思路 直接用数学模拟计算即可 代码纯享版 class Solution {public int distanceTraveled(int mainTank, int additionalTank) {int sum 0;while(additionalTank > 0){if(mainTank > 5){mai…

动静态库以及动态链接

文章目录 静态库制作静态库如何使用静态库 动态库动态库的制作动态库的使用动态链接 库是给别人用的&#xff0c;所以库中一定不存在main函数。库一般会有lib前缀和后缀&#xff0c;去掉前缀和后缀才是库名。 静态库 静态库&#xff08;.a&#xff09;&#xff1a;程序在编译…

OpenHarmony实战开发-使用SmartPerf-Host分析应用性能

简介 SmartPerf-Host是一款深入挖掘数据、细粒度展示数据的性能功耗调优工具&#xff0c;可采集CPU调度、频点、进程线程时间片、堆内存、帧率等数据&#xff0c;采集的数据通过泳道图清晰地呈现给开发者&#xff0c;同时通过GUI以可视化的方式进行分析。该工具当前为开发者提…

C#技巧之窗体去鼠标化

简介 在窗体程序中不用鼠标&#xff0c;直接使用键盘完成想要的操作。 实现的方法有两种&#xff0c;一种是使用键盘上的Tab键使控件获得焦点&#xff0c;然后用enter键触发该控件上的事件&#xff08;一般为click事件&#xff09;。另一种是&#xff0c;为控件添加快捷键&am…

优维全新力作:统一采控平台

在本月&#xff0c;优维新一代核心系统「EasyOps」7.0大版本重磅上线&#xff0c;为广大用户带来了“更核心、更智能、更开放、更客制”的产品能力。&#xff08;点击回看&#xff1a;重磅&#xff01;优维科技发布EasyOps7.0大版本&#xff09;在本次版本能力分享上&#xff0…

基于springboot实现中药实验管理系统设计项目【项目源码+论文说明】计算机毕业设计

基于springboot实现中药实验管理系统设计演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了中药实验管理系统的开发全过程。通过分析中药实验管理系统管理的不足&#xff0c;创建了一个计算机管理中药实验管…

基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于WOA鲸鱼优化的购售电收益与风险评估算法.WOA优化算法是一种基于鲸鱼捕食过程的仿生优化算法&#xff0c;其包括鲸鱼行走觅食、鲸鱼包围以及鲸鱼螺旋捕食三个步骤。在WOA优…

用 Python 创建 Voronoi 图

概述 最常见的空间问题之一是找到距离我们当前位置最近的兴趣点 (POI)。假设有人很快就会耗尽汽油&#xff0c;他/她需要在为时已晚之前找到最近的加油站&#xff0c;解决这个问题的最佳解决方案是什么&#xff1f;当然&#xff0c;驾驶员可以检查地图来找到最近的加油站&…

C++从入门到精通——string类

string类 前言一、为什么学习string类C语言中的字符串示例 二、标准库中的string类string类string类的常用接口说明string类对象的常见构造string类对象的容量操作string的接口测试及使用string类对象的访问及遍历操作下标和方括号遍历范围for遍历迭代器遍历相同的代码&#xf…

6.模板初阶

目录 1.泛型编程 2. 函数模板 2.1 函数模板概念 2.2函数模板格式 2.3 模板的实现 2.4函数模板的原理 2.5 函数模板的实例化 3.类模板 1.泛型编程 我们如何实现一个 交换函数呢&#xff1f; 使用函数重载虽然可以实现&#xff0c;但是有一下几个不好的地方&#xff1a; …

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock&#xff1a;读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async&#xff1a;异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件&#xff0c;A线程进行读取操作&#xff0c;B…

刷题日记 ---- 顺序表与链表相关经典算法题(C语言版)

目录 1. 移除元素2. 合并两个有序数组3. 移除链表元素4. 反转链表5. 合并两个有序链表6. 链表的中间结点7. 环形链表的约瑟夫问题8. 分割链表总结 正文开始 1. 移除元素 题目链接: 移除元素 题目描述: 思路历程: 题目明确要求, 不能使用额外的数组空间, 也就是说不可以创建…