当前位置: 代码网 > 科技>电脑产品>内存 > uniapp 根据不同角色实现动态底部TabBar导航栏

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

2024年08月01日 内存 我要评论
根据用户角色信息灵活地调整TabBar的属性,从而实现个性化的TabBar界面展示,以满足不同用户群体的特定需求。


前言

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


最终效果

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

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


一、实现步骤

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

代码如下:

在这里插入图片描述

2.创建自定义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

在这里插入图片描述

具体使用如下:

    <!-- 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的颜色
      }
  }
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com