uni-app自定义底部tab并且根据字段显示和隐藏

首先将所有tab使用到的页面创建好并且在pages里面配置好,要在pages.json中的"tabBar里面配置"custom": true将自带的tab底部导航关闭

"pages": [{"path": "pages/mine/mine","style": {"navigationBarTitleText": "我的"}},{"path": "pages/home/home","style": {"navigationBarTitleText": "首页"}},{"path": "pages/Operation/Operation","style": {"navigationBarTitleText": "运维"}},{"path": "pages/index/index","style": {"navigationBarTitleText": "服务"}},{"path" : "pages/shebe/shebe","style" : {"navigationBarTitleText" : "设备"}}],
"tabBar": {"custom": true,"color": "#7A7E83","selectedColor": "#1296db","borderStyle": "black","backgroundColor": "#F8F8F8","list": [{"pagePath": "pages/home/home","text": "首页","iconPath": "static/imgs/imgs55.png","selectedIconPath": "static/imgs/imgs5.png"},{"pagePath": "pages/Operation/Operation","text": "运维","iconPath": "static/imgs/imgs66.png","selectedIconPath": "static/imgs/imgs6.png"},{"pagePath": "pages/shebe/shebe","text": "设备","iconPath": "static/imgs/imgs66.png","selectedIconPath": "static/imgs/imgs6.png"},{"pagePath": "pages/index/index","text": "服务","iconPath": "static/imgs/imgs11.png","selectedIconPath": "static/imgs/imgs1.png"},{"pagePath": "pages/mine/mine","text": "我的","iconPath": "static/imgs/imgs44.png","selectedIconPath": "static/imgs/imgs4.png"}]},

在uni-app官网找到官网插件搜索tab底部找到自己要用的插件如(custom-tab-bar 自定义底部导航栏 - DCloud 插件市场)

在每一个用到tab页面的底部使用

 <CustomTabBar modifyType="index"></CustomTabBar>
import CustomTabBar from "@/components/custom-tab-bar/index.vue";
export default {components: {CustomTabBar}},
}

中modifyType="index"中的index根据自己定义的路径来定,在那个页面用感觉那个页面来定

如我在mine页面用代码就是

  <CustomTabBar modifyType="mine"></CustomTabBar>
import CustomTabBar from "@/components/custom-tab-bar/index.vue";

如何根据权限设置tab显示几个,要找到我们引入的tab页面,然后根据相关要求进行更改

<template><view v-if="responseRoles.includes('sitemanage')"><view class="tab-main"><view class="tabs" :class="{ spaceCenter: tabList.length === 1 }"><view class="tab-item" :class="{ active: currentIndex === index }" v-for="(item, index) in tabList":key="index" @click.stop="handleTab(item, index)"><image class="img" :src="currentIndex === index ? item.selectedIconPath : item.iconPath"></image><view class="text">{{ item.label }}</view></view></view></view></view><view v-if="responseRoles.includes('electricCollection')"><view class="tab-main"><view class="tabs" :class="{ spaceCenter: tabList.length === 1 }"><view class="tab-item" :class="{ active: currentIndex === index }" v-for="(item, index) in tabsTab":key="index" @click.stop="handleTab(item, index)"><image class="img" :src="currentIndex === index ? item.selectedIconPath : item.iconPath"></image><view class="text">{{ item.label }}</view></view></view></view></view><view v-if="responseRoles.includes('operation')"><view class="tab-main"><view class="tabs" :class="{ spaceCenter: tabList.length === 1 }"><view class="tab-item" :class="{ active: currentIndex === index }" v-for="(item, index) in tabList":key="index" @click.stop="handleTab(item, index)"><image class="img" :src="currentIndex === index ? item.selectedIconPath : item.iconPath"></image><view class="text">{{ item.label }}</view></view></view></view></view></template><script>import {appgetInfo} from '@/src/api/api.js';export default {props: {modifyType: {type: String,default: "",},},computed: {tabList() {return this.tabs.filter((item) => item.show);},},data() {return {currentIndex: 0,responseRoles: [],tabs: [{label: "首页",type: "home",url: "/pages/home/home",iconPath: "/static/imgs/imgs55.png",selectedIconPath: "/static/imgs/imgs5.png",show: true,},{label: "运维",type: "Operation",url: "/pages/Operation/Operation",iconPath: "/static/imgs/imgs66.png",selectedIconPath: "/static/imgs/imgs6.png",show: true,},{label: "服务",type: "index",url: "/pages/index/index",iconPath: "/static/imgs/imgs11.png",selectedIconPath: "/static/imgs/imgs1.png",show: true,},{label: "我的",type: "mine",url: "/pages/mine/mine",iconPath: "/static/imgs/imgs44.png",selectedIconPath: "/static/imgs/imgs4.png",show: true,}],tabsTab: [{label: "首页",type: "home",url: "/pages/home/home",iconPath: "/static/imgs/imgs55.png",selectedIconPath: "/static/imgs/imgs5.png",show: true,},{label: "设备",type: "shebe",url: "/pages/shebe/shebe",iconPath: "/static/imgs/imgs66.png",selectedIconPath: "/static/imgs/imgs6.png",show: true,},{label: "服务",type: "index",url: "/pages/index/index",iconPath: "/static/imgs/imgs11.png",selectedIconPath: "/static/imgs/imgs1.png",show: true,},{label: "我的",type: "mine",url: "/pages/mine/mine",iconPath: "/static/imgs/imgs44.png",selectedIconPath: "/static/imgs/imgs4.png",show: true,}]};},methods: {handleTab(item, index) {if (this.currentIndex === index) {return;}uni.switchTab({url: item.url,});},async fetchTabData() {try {const response = await appgetInfo();this.responseRoles = response.roles;} catch (error) {console.error("获取数据失败:", error);}},},mounted() {this.fetchTabData();if (this.modifyType.length) {this.currentIndex = this.tabList.findIndex((item) => item.type === this.modifyType);if(this.currentIndex===-1){this.currentIndex=1};}},};
</script><style lang="scss" scoped>.tab-main {position: fixed;z-index: 9999;width: 100%;bottom: 0;left: 0;background: #ffffff;box-shadow: 0rpx -1rpx 0rpx 0rpx #ebedf0;.tabs {display: flex;justify-content: space-between;padding: 0 50rpx;height: 120rpx;.tab-item {padding: 16rpx 50rpx;display: flex;align-items: center;flex-direction: column;.img {width: 50rpx;height: 50rpx;}.text {margin-top: 12rpx;font-size: 24rpx;font-weight: 500;color: #5d5d5d;line-height: 24rpx;}}.tab-item.active {.text {color: #4199d1;}}}.spaceCenter {justify-content: center;}}
</style>

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

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

相关文章

Qt程序发布及打包成exe安装包

参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…

JAVA题目笔记(二十)异常综合小练

一、键盘录入数据 import java.text.ParseException; import java.util.InputMismatchException; import java.util.Scanner;public class Co {public static void main(String[] args) throws ParseException {//键盘录入信息int age0;String namenull;Scanner sc new Scanne…

STM32F10x 定时器

使用定时器实现&#xff1a;B5 E5的开关 添加相关的.h路径文件 添加相关的.c配置文件 led.h文件 用于声明LED函数 #ifndef __LED_H //没有定义__LED_H #define __LED_H //就定义__LED_H #define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5) #defi…

shell脚本基础学习_总结篇(完结)

细致观看可以&#xff0c;访问shell脚本学习专栏&#xff0c;对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. S…

Linux创建免密登陆(错误:Permission denied (publickey,gssapi-keyex,gssapi-with-mic))

报错截图 解决方法 1. mkdir -p ~/.ssh 2. chmod 700 ~/.ssh 3. ssh-keygen&#xff0c;一直回车 4. chmod 600 /root/.ssh/id_rsa 5. 将公钥内容追加到服务器上&#xff0c;cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 6. chmod 600 ~/.ssh/authorized_keys…

低代码平台在医疗/医院行业应用案例与优势介绍

随着医疗行业的不断发展&#xff0c;数字化管理的需求日益迫切。传统的医疗信息化管理系统开发往往面临着成本高、周期长、定制性差等问题。在这个数字化转型的浪潮下&#xff0c;低代码平台应运而生&#xff0c;为医院快速搭建高效、灵活的医疗信息化管理系统提供了全新的解决…

在 Spring Boot 中构造 API 响应的最佳实践

在平时的开发和项目中&#xff0c;我们一定会涉及到接口对接的功能&#xff0c;由于不同开发人员的编码习惯不同&#xff0c;API报文在项目中通常是"百花齐放"的。 不但增加工作难度&#xff0c;往往也是扯皮的大头&#xff0c;如果能统一报文格式&#xff0c;不但能…

多目标优化算法——多目标粒子群优化算法(MOPSO)

Handling Multiple Objectives With Particle Swarm Optimization&#xff08;多目标粒子群优化算法&#xff09; 一、摘要&#xff1a; 本文提出了一种将帕累托优势引入粒子群优化算法的方法&#xff0c;使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…

OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;分享&#xff5c;16个含源码和数据集的计算机视觉实战项目 本文将分享16个含源码和数据集的计算机视觉实战项目。具体包括&#xff1a; 1. 人…

Jenkins升级到最新版本后无法启动

1. 场景还原 最近在web界面将jenkins升级到最新版本后&#xff0c;后台无法启动jenkins服务&#xff0c;服务状态如下&#xff1a; 运行jenkins命令提示invalid Java version jenkins --version jenkins: invalid Java version: java version "1.8.0_202" Java(TM)…

【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函数

引言 自动检测图像中的圆形或圆形对象&#xff0c;并可视化检测到的圆形。 函数详解 imfindcircles imfindcircles是MATLAB中的一个函数&#xff0c;用于在图像中检测并找出圆形区域。 基本语法&#xff1a; [centers, radii] imfindcircles(A, radiusRange) [centers, r…

鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起

【效果】 元服务链接格式&#xff08;API>12适用&#xff09;&#xff1a;https://hoas.drcn.agconnect.link/ggMRM 生成二维码后效果&#xff1a; 【参考网址】 使用App Linking实现元服务跳转&#xff1a;文档中心 草料二维码&#xff1a;草料二维码生成器 【引言】 …

下载安装Android Studio

&#xff08;一&#xff09;Android Studio下载地址 https://developer.android.google.cn/studio 滑动到 点击下载文档 打开新网页 切换到english ![](https://i-blog.csdnimg.cn/direct/b7052b434f9d4418b9d56c66cdd59fae.png 等待一会&#xff0c;出现 点同意后&#xff0…

【C/C++】深入解析 Stack 与 Queue 数据结构(详解):实现原理、应用场景与性能优化

文章目录 引言栈&#xff08;Stack&#xff09;数据结构详解1. 栈的基本概念2. 栈的实现原理3. C中的栈实现4. 栈的应用场景5. 栈的性能分析6. 实战示例&#xff1a;括号匹配 队列&#xff08;Queue&#xff09;数据结构详解1. 队列的基本概念2. 队列的实现原理3. C中的队列实现…

【css实现收货地址下边的平行四边形彩色线条】

废话不多说&#xff0c;直接上代码&#xff1a; <div class"address-block" ><!-- 其他内容... --><div class"checked-ar"></div> </div> .address-block{height:120px;position: relative;overflow: hidden;width: 500p…

从零开始配置Qt+VsCode环境

从零开始配置QtVsCode环境 文章目录 从零开始配置QtVsCode环境写在前面扩展安装及配置Qt Configure配置 VsCode创建Qt工程VsCodeQMakeMinGwVsCodeQMakeMsvcVsCodeCMakeMinGwVsCodeCMakeMsvcQtCreatorQMakeMinGw->VsCodeQtCreatorQMakeMsvc->VsCodeQtCreatorCMakeMinGw-&g…

【前端】JavaScript中的字面量概念与应用详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;字面量1. 数字字面量2. 字符串字面量3. 布尔字面量4. 空值字面量&#xff08;null&#xff09;5. 对象字面量6. 数组字面量7. 正则表达式字面量8. 特殊值字面量9. 函数字…

Python使用ffmpeg进行本地视频拉流,并使用训练模型识别人脸,并将识别后的模型推流源码

前言&#xff1a; Windows上搭建nginx-rtsp流媒体服务器&#xff0c;实现FFmpeg推流、录像转rtsp推流 - WayWayWayne - 博客园参考上述文章和一些webRTC前端拉流文章 主要是缕一缕思路和每个部分的代码功能&#xff0c;文件命名高度相似导致。 效果&#xff1a; 代码&#x…

【去毛刺】OpenCV图像处理基础:腐蚀与膨胀操作入门

在数字图像处理中&#xff0c;形态学操作是一种常用的技术&#xff0c;用于提取图像中的特定形状或特征。其中&#xff0c;腐蚀&#xff08;Erosion&#xff09;和膨胀&#xff08;Dilation&#xff09;是两种基本的形态学运算。本文将通过一个简单的例子来演示如何使用Python中…

2024年11月27日Github流行趋势

项目名称&#xff1a;screenshot-to-code 项目维护者&#xff1a;abi clean99 sweep-ai kachbit vagusX项目介绍&#xff1a;通过上传截图将其转换为整洁的代码&#xff08;支持HTML/Tailwind/React/Vue&#xff09;。项目star数&#xff1a;62,429项目fork数&#xff1a;7,614…