新增宣传页 Mock 模块并接入首页路由。

从 xh_test 同步 ScenicPromotion 演示页,补齐 MVVM 结构、本地资源、单元测试与模块文档,注册 promotion_page 首页入口。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-02 15:29:25 +08:00
parent a528d9b0d7
commit 1b1e93b9ca
30 changed files with 2661 additions and 4 deletions

View File

@ -63,3 +63,5 @@ Home 模块负责登录后的首页工作台,包括当前景区展示、工作
后续迁移具体首页子模块时,应先在 `HomeRoute` 增加目标页面,再更新 `HomeMenuRouter.resolve` 对应 URI 的映射,并同步补充单元测试。
`report_photographer` 已由 `Features/WildPhotographerReport` 接管。
`promotion_page` 已由 `Features/ScenicPromotion` 接管。

View File

@ -68,6 +68,7 @@ enum HomeRoute: Hashable {
case travelAlbumEntry
case operatingArea
case pilotCertification
case scenicPromotion
case modulePlaceholder(uri: String, title: String)
}

View File

@ -47,6 +47,7 @@ enum HomeMenuRouter {
"project_edit": "项目管理",
"location_report": "位置上报",
"report_photographer": "举报摄影师",
"promotion_page": "宣传页",
"registration_invitation": "注册邀请",
"store": "店铺管理",
"fly": "飞行管理",
@ -134,6 +135,8 @@ enum HomeMenuRouter {
return .destination(.locationReportHistory)
case "report_photographer":
return .destination(.photographerReport)
case "promotion_page":
return .destination(.scenicPromotion)
case "deposit_order_detail", "deposit_order", "deposit_order_shooting_info":
return .destination(.depositOrders)
case "withdrawal_audit":
@ -220,6 +223,7 @@ enum HomeMenuRouter {
"project_edit",
"location_report",
"report_photographer",
"promotion_page",
"registration_invitation",
"photographer_invite",
"invite_record",
@ -300,6 +304,8 @@ enum HomeMenuRouter {
return "位置上报"
case "report_photographer":
return "举报摄影师"
case "promotion_page":
return "宣传页"
case "pm", "project_edit":
return "项目管理"
case "pm_manager":

View File

@ -31,6 +31,7 @@ struct HomeCommonMenuStore {
"pm",
"location_report",
"report_photographer",
"promotion_page",
"registration_invitation",
"store",
"fly",

View File

@ -56,6 +56,8 @@ enum HomeIconCatalog {
"mappin.circle.fill"
case "report_photographer":
"shield.fill"
case "promotion_page":
"rectangle.on.rectangle.angled"
case "registration_invitation", "photographer_invite":
"envelope.open.fill"
case "store":

View File

@ -112,6 +112,8 @@ extension HomeRoute {
OperatingAreaView()
case .pilotCertification:
PilotCertificationView()
case .scenicPromotion:
ScenicPromotionView()
case let .modulePlaceholder(uri, title):
HomeMigrationModuleView(title: title, uri: uri)
}