Files
suixinkan_ios_new/suixinkan/Features/Home/Home.md
汉秋 311a70d610 新增项目、排期与邀请模块,并接入首页路由
将项目管理、排期管理与摄影师邀请流程从占位页迁移为完整实现,包含项目图片 OSS 上传与共享业务模型。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-24 15:57:15 +08:00

2.7 KiB
Raw Blame History

Home 模块业务逻辑

模块职责

Home 模块负责登录后的首页工作台,包括当前景区展示、工作状态、位置上报入口、快捷操作、常用应用和全部功能入口。

首页菜单来自 PermissionContext 中的角色权限。当前模块只同步首页壳和入口路由,入口背后的业务子模块后续逐个迁移。

菜单生成

HomeViewModel 从当前角色的权限树递归提取菜单:

  • 当前角色 ID 存在但找不到时清空菜单。
  • 当前角色 ID 为空时使用第一个角色。
  • URI 按旧工程顺序排序。
  • 同义 URI 按 HomeMenuRouter.menuAliasKey 去重。

常用应用

HomeCommonMenuStore 使用 UserDefaults 保存常用应用 URI

  • 首次无配置时写入默认常用应用。
  • 读取时按当前角色权限过滤不可用 URI。
  • 添加和移除时按同义 URI 去重。

路由规则

HomeMenuRouter 将权限 URI 分为四类:

  • tab:切换到订单或数据 Tab。
  • destination:进入已接入的本地页面,如个人信息、景区选择、权限申请、全部功能。
  • unsupported:已知 iOS 不支持的入口,进入占位说明。
  • placeholder:未知或未迁移入口,记录诊断并进入占位说明。

HomeView 不创建自己的 NavigationStack,而是使用 Main Tab 注入的 RouterPath 进行页面跳转。

后续迁移

目前 payment_collectionpayment_qrpayment_code 已由 Features/Payment 的真实收款页面接管,wallet 已由 Features/Wallet 的真实钱包页面接管,scenicselectionpermission_applypermission_apply_statusscenicapplication 已由 Features/ScenicPermission 接管,task_managementtask_management_editortask_create 已由 Features/Tasks 接管,cloud_managementcloud_storage_transitasset_managementmaterial_uploadalbum_listalbum_trailersample_managementsample_upload 已由 Features/Assets 接管,checkin_points 已由 Features/PunchPoint 接管,location_reportlocation_report_history 已由 Features/LocationReport 接管,pmproject_edit 已由 Features/Projects 的摄影师项目管理接管,pm_manager 已由店铺项目管理接管,schedule_management 已由 Features/Schedule 接管,registration_invitationphotographer_inviteinvite_record 已由 Features/Invite 接管。withdrawal_audit 仍属于后台性质的提现审核管理模块,scenic_settlementscenic_settlement_review 仍属于独立结算模块,本轮保留占位,后续应作为独立功能迁移。

后续迁移具体首页子模块时,应先在 HomeRoute 增加目标页面,再更新 HomeMenuRouter.resolve 对应 URI 的映射,并同步补充单元测试。