50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
/**
|
|
* TabBar Mixin
|
|
* 用于在页面中自动显示/隐藏自定义 tabbar
|
|
*/
|
|
import { getVisibleTabBar, getCurrentTabIndex } from '@/common/tabbar.js'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
showTabBar: false,
|
|
tabBarCurrent: 0
|
|
}
|
|
},
|
|
onLoad() {
|
|
this.checkShowTabBar()
|
|
},
|
|
onShow() {
|
|
this.checkShowTabBar()
|
|
this.updateTabBarCurrent()
|
|
},
|
|
methods: {
|
|
checkShowTabBar() {
|
|
// 获取当前页面路径
|
|
const pages = getCurrentPages()
|
|
const currentPage = pages[pages.length - 1]
|
|
const currentPath = currentPage.route || currentPage.$route?.path || ''
|
|
|
|
// 获取可见的 tabbar 列表
|
|
const visibleTabs = getVisibleTabBar()
|
|
|
|
// 检查当前页面是否在 tabbar 列表中
|
|
const path = currentPath.startsWith('/') ? currentPath.slice(1) : currentPath
|
|
const isTabBarPage = visibleTabs.some(item => {
|
|
const itemPath = item.pagePath.startsWith('/') ? item.pagePath.slice(1) : item.pagePath
|
|
return itemPath === path
|
|
})
|
|
|
|
this.showTabBar = isTabBarPage
|
|
},
|
|
updateTabBarCurrent() {
|
|
if (this.showTabBar) {
|
|
const pages = getCurrentPages()
|
|
const currentPage = pages[pages.length - 1]
|
|
const currentPath = currentPage.route || currentPage.$route?.path || ''
|
|
this.tabBarCurrent = getCurrentTabIndex(currentPath)
|
|
}
|
|
}
|
|
}
|
|
}
|