uniapp动态底部tabbar-金沙1005

uniapp动态底部tabbar_小程序tabbar图标尺寸文章目录1.需求背景1.1源码下载2.问题前提及思路3.开始撸3.1设置`tabbar.js`配置不同角色不同的菜单3.2设置`page.json`3.3vue配置3.4tabbar组件代码3.5setrole方法1.需求背景公司要求开发一个小程序,要求二种不同权限的人群都可以使用,使用时根据不同的权限,获取不同的tabbar,以及展示对应不同的内容。登录页面分为用户登录及管理员登录1.2用户登录和管理员登录的tabbar根据账号角色进行对应展示1.1

1. 需求背景

公司要求开发一个小程序,要求二种不同权限的人群都可以使用,使用时根据不同的权限,获取不同的tabbar,以及展示对应不同的内容。

登录页面分为 用户登录管理员登录
在这里插入图片描述
1.2 用户登录和管理员登录的 tabbar 根据账号角色进行对应展示
在这里插入图片描述

1.1 源码下载

2. 问题前提及思路

uniapp 本身的动态设置tabbar方法 ,但是使用这个方法刷新切换时会短暂白屏以及uni.settabbaritem只能满足动态设置tabbar一项的内容,无法实现多项的需求。所有综合考虑决定还是使用uview-ui的tabbar底部导航栏组件。
在这里插入图片描述
最终选择了uni-app的uview-ui(ui框架) vuex来完成这个功能。其中,vuex主要是用来存储当前的tabbar内容的。

3. 开始撸

3.1 设置 tabbar.js 配置不同角色不同的菜单

utils文件夹下新建一个tabbar.js,来存储不同权限下的底部导航数据。我这里有两种不同的权限,第二种权限比第一种权限多了两项菜单。

// 普通用户tabbar
let tab1 = [
	{ 
   
		"pagepath": "/pages/loginlogrecord/index",
		"text": "登录记录",
		"iconpath": "/static/icon_bx.png",
		"selectediconpath": "/static/icon_bx_hover.png"
	},
	{ 
   
		"pagepath": "/pages/accessrecord/index",
		"text": "存取记录",
		"iconpath": "/static/icon_adress.png",
		"selectediconpath": "/static/icon_adress_hover.png"
	},
	{ 
   
		"pagepath": "/pages/person/index",
		"text": "我的",
		"iconpath": "/static/icon_user.png",
		"selectediconpath": "/static/icon_user_hover.png"
	}
]
// 管理员用户tabbar
let tab2 = [
	{ 
   
		"pagepath": "/pages/loginlogrecord/index",
		"text": "登录记录",
		"iconpath": "/static/icon_bx.png",
		"selectediconpath": "/static/icon_bx_hover.png"
	},
	{ 
   
		"pagepath": "/pages/accessrecord/index",
		"text": "存取记录",
		"iconpath": "/static/icon_adress.png",
		"selectediconpath": "/static/icon_adress_hover.png"
	},
	{ 
   
		"pagepath": "/pages/authorizationlist/index",
		"text": "授权名单",
		"iconpath": "/static/authorization.png",
		"selectediconpath": "/static/authorization_hover.png"
	},
	{ 
   
		"pagepath": "/pages/inventory/index",
		"text": "盘点",
		"iconpath": "/static/inventory.png",
		"selectediconpath": "/static/inventory_hover.png"
	},
	{ 
   
		"pagepath": "/pages/person/index",
		"text": "我的",
		"iconpath": "/static/icon_user.png",
		"selectediconpath": "/static/icon_user_hover.png"
	}
]
export default [
	tab1,
	tab2
]

3.2 设置 page.json

在page.json文件里,把tabbar里的几个页面去重放进去。只是单纯的写个路径,什么都不要添加。testiconpathselectediconpath 字段全部删掉这里不需要配置。

"tabbar": { 
   
	"color": "#333333",
	"selectedcolor": "#328cfa",
	"backgroundcolor": "#ffffff",
	"list": [
		{ 
   
			"pagepath": "pages/loginlogrecord/index"
		},
		{ 
   
			"pagepath": "pages/accessrecord/index"
		},
		{ 
   
			"pagepath": "pages/authorizationlist/index"
		},
		{ 
   
			"pagepath": "pages/inventory/index"
		},
		{ 
   
			"pagepath": "pages/person/index"
		}
	]
}

3.3 vue 配置

uniapp是可以直接使用vuex的,所以,直接在项目的根目录下新建一个store文件夹,存储相关数据。

import vue from 'vue'
import vuex from 'vuex'
vue.use(vuex)
import tabbar from '@/utils/tabbar.js'
const store = new vuex.store({ 
   
	state: { 
   
		wx_token: '',
		tabbarlist: [],
		roleid: 0, //0 普通员工,1管理员
	},
	mutations: { 
   
		// 设置wx_token
		setwxtoken(state, data) { 
   
			state.wx_token = data;
			uni.setstoragesync('wx_token',data)
		},
		// 设置用户角色id
		setroleid(state, data) { 
   
			state.roleid = data;
			uni.setstoragesync('roleid',data)
			state.tabbarlist = tabbar[data];
			uni.setstoragesync('tabbarlist',tabbar[data])
		},
	},
})
export default store

在入口文件 main.js 中使用

import vue from 'vue'
import app from './app'
import uview from "uview-ui";
import store from './store/index'
vue.use(uview);
vue.config.productiontip = false
vue.prototype.$store = store
app.mptype = 'app'
const app = new vue({ 
   
    ...app,
	store
})
app.$mount()

3.4 tabbar组件代码

<template>
	<view>
		<u-tabbar :list="tabbarlist" :active-color="activecolor" :inactive-color="inactivecolor" :height="84" :border-top="bordertop">
		u-tabbar>
	view>
template>
<script> import store from '@/store' export default { 
      props:{ 
      tabbarlist:{ 
      type:array, default:uni.getstoragesync('tabbarlist') } }, data() { 
      return { 
      bordertop: true, inactivecolor: '#909399', activecolor: '#328cfa', } }, } script>

3.5 setrole方法

登录时,获取返回的权限,然后再调用setrole方法

<script> import { 
      mapmutations } from 'vuex'; export default { 
      data() { 
      return { 
      roleid:0, }; }, methods: { 
      methods: { 
      ...mapmutations(['setroleid']), }, //登录 login() { 
      this.setroleid(this.roleid)// 0或者1 uni.switchtab({ 
      url: '../index/index' //然后跳转到登录后的金沙1005首页 }) } } } script>
js555888金沙老品牌的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/46696.html

(0)

相关推荐

  • 如何制作一个打卡小程序_微信小程序签到功能项目介绍社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。因此,构建符合自己要求的操作系统是非常有意义的。本文从管理员、用户的功能要求出发,每日签到打卡小程序中的功能模块主要是实现管理端;金沙1005首页、个人中心、用户管理、英语资料管理、编程技术管理、资料类型管理、学习打卡管理、论坛管理、系统管理,微信端:金沙1005首页、学习打卡、论坛、我的等功能。经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使

  • 微信小程序服务器.net,微信小程序登陆 .net 后端实现1:前端获取用户凭证code传送请求得到openid(用户惟一标识)在页面的onlaunch方法中,调用wx.login方法html这一步获取登陆凭证,经过凭证调用本地后台接口,获取用户openidsessionkey等,本地后台的接口调用方法参考第四步算法注意点:小程序1:一般咱们会把用户的session_key存取到后台的session会话中,可是在微信小程序不会自动保存用户的se…

  • 零售小程序开发_国家对小微企业扶持2022政策前言此项目为本人在大学的毕业设计作品,基于微信小程序云开发技术进行开发,暂未商用和托管。编写文章意在为求职做准备,亦乐于与大家进行经验交流分享,欢迎进行评论咨询哦。简介用户角色分为:一般顾客、商家、管理员。系统结构图如下:演示1.顾客子系统,已实现资料修改,在线购物,查看订单信息,查询物流等功能;技术要点:1.模糊搜索:搜索框通过正则查询,实现模糊搜索;2.并发控制:在商品添…

    2022年11月16日
  • 基于微信小程序的音乐播放器_听音乐的微信小程序目录一小程序主体功能介绍二常用组件和api介绍音频api常用组件三整体布局数据定义主体页面运行效果四播放器页面布局部分样式部分运行效果五播放列表页面布局部分样式部分运行效果全部功能实现代码index.js一小程序主体功能介绍本小程序主要实现,音乐的播放、暂停,下一曲的切换,以及播放列表和当前播放歌曲的详细信息查看等。二常用组件和api介绍音频api介绍创建音频时需要先创建一个对象实例,从而引用该

  • 如何制作微信小程序_如何引入jsflyio简介fly.js通过在不同javascript运行时通过在底层切换不同的httpengine来实现多环境支持,但同时对用户层提供统一、标准的promiseapi。不仅如此,fly.js还支持请求/响应拦截器、自动转化json、请求转发等功能,详情请参考:https://github.com/wendux/fly。下面我们看看在微信小程序、mpvue中和中如何使用fly.fl…

  • java之微信小程序支付功能实现涉及微信双向证书(pkcs12证书设置与ssl请求封装)[通俗易懂]java之微信小程序支付功能实现涉及微信双向证书(pkcs12证书设置与ssl请求封装)问题背景微信小程序下单和退款不一样,退款需要支持双向证书,本篇讲解双向证书的使用以及退款工具类。金沙1005的解决方案我们分两个部分,一个是业务参数拼接与sign签名,一个是https请求/ssl请求与pkcs12证书(微信api证书),用到的包org.apache.httpcomponents/httpclient…

  • 本课程是一个系列入门教程,目标是从0开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件、页面样式文件、javascript的基本知识并以指南针为例对基本知识进行扩展,另外加上开发工具的安装、小程序发布等内容,共9篇文章。

  • 官方说明dcloud_uni_gsq只支持使用修饰符,不支持使用stoppropagation,因为这里的event对象并非浏览器的evnet对象,其本来没有stoppropagation方法,文档中也从未提及支持stoppropagation方法,实现中有stoppropagation方法是为了避免开发者使用引用的第三方代码使用了stoppropagation后报错。只能在标签上使用.stop如果想根据item内容不同来判断是否需要stop,只能使用v-if写两个标签..

发表回复

您的电子邮箱地址不会被公开。

联系金沙1005

关注“java架构师必看”公众号

回复4,添加站长微信。

附言:ispacesoft.com网而来。

关注微信
网站地图