custom-tabbar-plan.md 3.4 KB

清道夫 App 自定义 tabBar 开发文档

目标

实现按角色动态显示的底部 tabBar:

  • 销售端 / 施工端:3 个 tab(首页、任务、我的)
  • 调度端:4 个 tab(首页、排班、任务、我的)

技术方案

uni-app 微信小程序支持自定义 tabBar,通过 custom-tab-bar 组件实现。

1. 启用自定义 tabBar

src/pages.json 中:

  • 设置 tabBar.custom = true
  • 保留 tabBar.list 作为基础配置(微信小程序要求),但删除 iconPath / selectedIconPath,仅保留 pagePathtext

2. 新建自定义 tabBar 组件

文件:src/custom-tab-bar/index.vue

组件逻辑:

  • 读取 authStore.userRole
  • 根据角色返回不同的 tab 列表
  • 使用 uni.switchTab 切换页面
  • 高亮当前选中的 tab

3. tab 配置

角色 tab 列表
sales 首页 (/pages/home/home)、任务 (/pages/task/task)、我的 (/pages/my/my)
construction 首页 (/pages/home/home)、任务 (/pages/task/task)、我的 (/pages/my/my)
dispatch 首页 (/pages/home/home)、排班 (/subPackages/pages-dispatch/schedule)、任务 (/pages/task/task)、我的 (/pages/my/my)

4. 关键约束

  • 自定义 tabBar 中的页面必须是 pages.jsontabBar.list 已注册的页面
  • subPackages/pages-dispatch/schedule 是分包页面,不能直接放进 tabBar.list
  • 解决方案:在 pages 主包中建一个轻量壳页 pages/schedule/schedule.vue,内容直接渲染调度端排班组件;调度端原 subPackages/pages-dispatch/schedule.vue 保留或重定向

5. 需要修改/新建的文件

文件 操作 说明
src/pages.json 修改 tabBar.custom = true,调整 tabBar.list
src/custom-tab-bar/index.vue 新建 自定义 tabBar 组件
src/custom-tab-bar/index.json 新建 组件配置(component: true)
src/pages/schedule/schedule.vue 新建 排班 tabBar 壳页(主包)
src/components/dispatch/ScheduleView.vue 新建 排班实际内容组件
src/subPackages/pages-dispatch/schedule.vue 修改 复用 ScheduleView 组件
src/pages/home/home.vue 无需修改 已按角色渲染
src/pages/task/task.vue 无需修改 已按角色渲染
src/pages/my/my.vue 无需修改 已按角色渲染

6. 开发步骤

  1. 新建 src/components/dispatch/ScheduleView.vue,将 subPackages/pages-dispatch/schedule.vue 的内容抽成组件
  2. 新建 src/pages/schedule/schedule.vue,引入 ScheduleView
  3. 修改 subPackages/pages-dispatch/schedule.vue,改为引入 ScheduleView
  4. 新建 src/custom-tab-bar/index.vueindex.json
  5. 修改 src/pages.json
    • tabBar.custom = true
    • tabBar.list 注册 4 个页面:home、schedule、task、my
  6. 验证构建和类型检查
  7. 在微信开发者工具中测试三个角色 tabBar 显示是否正确

7. 风险点

  • 自定义 tabBar 首次加载可能略有延迟
  • 分包页面不能直接作为 tabBar 页,必须通过主包壳页中转
  • 需要确保 authStore.userRole 在 tabBar 渲染时已经可用

8. 验证方式

  • npm run type-check
  • npm run build:mp-weixin
  • 微信开发者工具:分别用 sales/dispatch/construction 角色登录,检查底部 tabBar 数量和跳转

文档生成时间:2026-06-24