87 lines
2.3 KiB
Vue
87 lines
2.3 KiB
Vue
<template>
|
|
<u-tabbar v-if="showTabbar" height="120rpx" icon-size="50rpx" v-model="current" v-bind="tabbarStyle" :list="tabbarList"
|
|
@change="handleChange" :hide-tab-bar="false" :border-top="false"></u-tabbar>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { onShow } from '@dcloudio/uni-app'
|
|
import { navigateTo } from '@/utils/util'
|
|
import { computed, ref } from 'vue'
|
|
import { t } from '@/utils/util'
|
|
|
|
const current = ref()
|
|
const tabbarList = ref([
|
|
{
|
|
iconPath: "../../static/images/tabs/home_off.png",
|
|
selectedIconPath: "../../static/images/tabs/home_on.png",
|
|
text: t('tabbar.index'),
|
|
pagePath: "/pages/index/index",
|
|
link: {
|
|
path: "/pages/index/index",
|
|
type: "shop"
|
|
}
|
|
},
|
|
{
|
|
iconPath: "../../static/images/tabs/item_off.png",
|
|
selectedIconPath: "../../static/images/tabs/item_on.png",
|
|
text: t('tabbar.mine'),
|
|
pagePath: "/pages/item/index",
|
|
link: {
|
|
path: "/pages/item/index",
|
|
type: "shop"
|
|
}
|
|
},
|
|
{
|
|
iconPath: "../../static/images/tabs/mine_on.gif",
|
|
selectedIconPath: "../../static/images/tabs/mine_on.gif",
|
|
text: '',
|
|
pagePath: "/pages/mine/index",
|
|
link: {
|
|
path: "/pages/mine/index",
|
|
type: "shop"
|
|
}
|
|
},
|
|
|
|
{
|
|
iconPath: "../../static/images/tabs/team_off.png",
|
|
selectedIconPath: "../../static/images/tabs/team_on.png",
|
|
text: t('tabbar.team'),
|
|
pagePath: "/pages/team/index",
|
|
link: {
|
|
path: "/pages/team/index",
|
|
type: "shop"
|
|
}
|
|
},
|
|
{
|
|
iconPath: "../../static/images/tabs/my_off.png",
|
|
selectedIconPath: "../../static/images/tabs/my_on.png",
|
|
text: t('tabbar.my'),
|
|
pagePath: "/pages/user/user",
|
|
link: {
|
|
path: "/pages/user/user",
|
|
type: "shop"
|
|
}
|
|
},
|
|
])
|
|
|
|
const showTabbar = computed(() => {
|
|
const currentPages = getCurrentPages()
|
|
const currentPage = currentPages[currentPages.length - 1]
|
|
const current = tabbarList.value.findIndex((item : any) => {
|
|
return item.pagePath === '/' + currentPage.route
|
|
})
|
|
return current >= 0
|
|
})
|
|
|
|
const tabbarStyle = computed(() => ({
|
|
activeColor: "#A1DBF5",
|
|
inactiveColor: "#FFFFFF"
|
|
}))
|
|
const handleChange = (index : number) => {
|
|
const selectTab = tabbarList.value[index]
|
|
navigateTo(selectTab.link, 'switchTab')
|
|
}
|
|
onShow(() => {
|
|
uni.hideTabBar();
|
|
})
|
|
</script> |