赞
踩
已封装为组件,亲测4个菜单项目可以切换,
以下为示例,根据Storage 中 userType 的 值,判断权限菜单
- <template>
- <view class="tab-bar pb10">
- <view class="tabli" v-for="(tab, index) in tabs" :key="index" @click="switchTab(tab)">
- <image :src="currentTab === tab.text ? tab.selectedIconPath : tab.iconPath" mode="aspectFit"></image>
- <text :class="currentTab === tab.text ? 'active' : ''">{{ tab.text }}</text>
- </view>
- <loginTourist ref="loginPop"></loginTourist>
- </view>
- </template>
- <script>
- export default {
- props: {//当前页
- currentTab: {
- type: String,
- required: true
- }
- },
- data() {
- return {
- // 游客、管理员、村民
- usertype: uni.getStorageSync('userType'),
- }
- },
- computed: {
- // 权限菜单
- tabs() {
- if (this.usertype =='村民') {
- return [
- {
- "pagePath": "/pages/homepage/index",
- "iconPath": this.img('home-1'),
- "selectedIconPath": this.img('home'),
- "text": "首页"
- },
- {
- "pagePath": "/workPages/teach/index",
- "iconPath": this.img('bs-1'),
- "selectedIconPath": this.img('bs'),
- "text": "办事指南"
- },
- {
- "pagePath": "/pages/messag/index",
- "iconPath": this.img('mass-1'),
- "selectedIconPath": this.img('mass'),
- "text": "消息"
- },
- {
- "pagePath": "/pages/mine/index",
- "iconPath": this.img('mine-1'),
- "selectedIconPath": this.img('mine'),
- "text": "我的"
- }
- ],
- }else if (this.usertype =='管理员') {
- // 管理员
- return [
- {
- "pagePath": "/pages/homepage/index",
- "iconPath": this.img('home-1'),
- "selectedIconPath": this.img('home'),
- "text": "首页"
- },
- ],
- }
- }
- },
- methods: {
- switchTab(tab) {
- // console.log("底部导航", tab)
- let userType = uni.getStorageSync('userType')||this.userType
- let token = uni.getStorageSync('token')
- console.log('底部导航,用户,token|',tab.text ,userType,token)
- uni.navigateTo({
- url: tab.pagePath
- });
- },
- // 统一加图片域名路径
- img(img) {
- return 图片网址前缀 + 'tabBar/' + img + '.png'
- },
- },
-
- </script>
- <style>
- .tab-bar {
- justify-content: space-around;
- align-items: center;
- height: 150upx;
- position: fixed;
- left: 0;
- z-index: 99999999999999999999;
- width: 100%;
- display: flex;
- justify-content: space-around;
- background: rgb(240 242 245 / 97%);
- border-top: 0.5px solid rgba(240, 242, 245, 1)
-
- }
-
- .tab-bar .tabli {
- flex: 1;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- }
-
- .tab-bar image {
- width: 25px;
- height: 25px;
- }
-
- .tab-bar text {
- font-size: 12px;
- margin-top: 5px;
- }
-
- .tab-bar text.active {
- font-weight: bold;
- }
- </style>
声明为全局组件:main.js 中添加
- import tzTabBar from "@/components/atz-tabbar/atz-tabbar.vue"//自定义底部菜单
- Vue.component('tzTabBar', tzTabBar)
在页面中使用:
<tzTabBar :currentTab="'消息'"></tzTabBar>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。