| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /**
- * 统一导航工具
- * 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) {
- // 五维页已移出主包,统一在各自分包页面通过 navigateTo 访问
- // 保留 wealth(已注册)及其对应的 detail 入口,其他维度避免跳转至无效页面
- var dimMap = {
- 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
- }
|