| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /**
- * 统一导航工具
- * TabBar 页面列表(4个新Tab:首页/健康/成长/我的)
- * 五维页已移出 TabBar,统一用 navigateTo 访问
- *
- * 【导航防抖说明】
- * 快速连续多次 navigateTo 同一页面时,微信框架会因上次路由未完成而销毁
- * 新创建的 webview,随后上次路由执行 routeDone 时触发
- * "routeDone with a webviewId XX is not found" 错误。
- * 因此所有导航统一在此加锁:导航期间(约 300ms)重复跳转自动忽略。
- */
- var NAV_LOCK = false
- var NAV_LOCK_DURATION = 300
- var TAB_BAR_PAGES = [
- '/pages/index-home/index',
- '/pages/health-main/index',
- '/pages/growth-main/index',
- '/pages/profile-main/profile'
- ]
- /**
- * 跳转到维度页面
- * 行 = index-home(仍是 TabBar 页,用 switchTab)
- * 心/身/智/富 = 分包页,用 navigateTo
- */
- function goDimension(dimCode) {
- var dimMap = {
- action: '/pages/index-home/index',
- mind: '/pages/mind/index',
- body: '/pages/body/index',
- wisdom: '/pages/wisdom/index',
- wealth: '/pages/wealth/index'
- }
- var url = dimMap[dimCode]
- if (!url) return
- goPage(url)
- }
- /**
- * 通用页面跳转:TabBar 页用 switchTab,其他用 navigateTo
- */
- function goPage(url) {
- if (!url) return
- // 导航锁:防止快速重复点击导致 routeDone 错误
- if (NAV_LOCK) return
- NAV_LOCK = true
- setTimeout(function() { NAV_LOCK = false }, NAV_LOCK_DURATION)
- if (TAB_BAR_PAGES.indexOf(url) !== -1) {
- uni.switchTab({ url: url })
- } else {
- uni.navigateTo({ url: url })
- }
- }
- module.exports = {
- TAB_BAR_PAGES: TAB_BAR_PAGES,
- goDimension: goDimension,
- goPage: goPage
- }
|