新增项目、排期与邀请模块,并接入首页路由
将项目管理、排期管理与摄影师邀请流程从占位页迁移为完整实现,包含项目图片 OSS 上传与共享业务模型。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -33,6 +33,6 @@ Home 模块负责登录后的首页工作台,包括当前景区展示、工作
|
||||
|
||||
## 后续迁移
|
||||
|
||||
目前 `payment_collection`、`payment_qr`、`payment_code` 已由 `Features/Payment` 的真实收款页面接管,`wallet` 已由 `Features/Wallet` 的真实钱包页面接管,`scenicselection`、`permission_apply`、`permission_apply_status`、`scenicapplication` 已由 `Features/ScenicPermission` 接管,`task_management`、`task_management_editor`、`task_create` 已由 `Features/Tasks` 接管,`cloud_management`、`cloud_storage_transit`、`asset_management`、`material_upload`、`album_list`、`album_trailer`、`sample_management`、`sample_upload` 已由 `Features/Assets` 接管,`checkin_points` 已由 `Features/PunchPoint` 接管,`location_report` 和 `location_report_history` 已由 `Features/LocationReport` 接管。`withdrawal_audit` 仍属于后台性质的提现审核管理模块,`scenic_settlement` 和 `scenic_settlement_review` 仍属于独立结算模块,本轮保留占位,后续应作为独立功能迁移。
|
||||
目前 `payment_collection`、`payment_qr`、`payment_code` 已由 `Features/Payment` 的真实收款页面接管,`wallet` 已由 `Features/Wallet` 的真实钱包页面接管,`scenicselection`、`permission_apply`、`permission_apply_status`、`scenicapplication` 已由 `Features/ScenicPermission` 接管,`task_management`、`task_management_editor`、`task_create` 已由 `Features/Tasks` 接管,`cloud_management`、`cloud_storage_transit`、`asset_management`、`material_upload`、`album_list`、`album_trailer`、`sample_management`、`sample_upload` 已由 `Features/Assets` 接管,`checkin_points` 已由 `Features/PunchPoint` 接管,`location_report` 和 `location_report_history` 已由 `Features/LocationReport` 接管,`pm`、`project_edit` 已由 `Features/Projects` 的摄影师项目管理接管,`pm_manager` 已由店铺项目管理接管,`schedule_management` 已由 `Features/Schedule` 接管,`registration_invitation`、`photographer_invite`、`invite_record` 已由 `Features/Invite` 接管。`withdrawal_audit` 仍属于后台性质的提现审核管理模块,`scenic_settlement` 和 `scenic_settlement_review` 仍属于独立结算模块,本轮保留占位,后续应作为独立功能迁移。
|
||||
|
||||
后续迁移具体首页子模块时,应先在 `HomeRoute` 增加目标页面,再更新 `HomeMenuRouter.resolve` 对应 URI 的映射,并同步补充单元测试。
|
||||
|
||||
@ -32,6 +32,14 @@ enum HomeRoute: Hashable {
|
||||
case taskManagement
|
||||
case taskCreate
|
||||
case taskDetail(id: Int, summary: PhotographerTaskItem?)
|
||||
case projectManagement
|
||||
case pmProjectManagement
|
||||
case projectDetail(id: Int, storeMode: Bool)
|
||||
case projectEditor(id: Int?, storeMode: Bool)
|
||||
case scheduleManagement
|
||||
case scheduleAdd
|
||||
case photographerInvite
|
||||
case inviteRecord
|
||||
case cloudStorage
|
||||
case cloudStorageTransit
|
||||
case materialLibrary
|
||||
|
||||
@ -42,8 +42,8 @@ enum HomeMenuRouter {
|
||||
"scenic_settlement": "景区结算",
|
||||
"scenic_settlement_review": "结算审核",
|
||||
"pm": "项目管理",
|
||||
"pm_manager": "项目管理",
|
||||
"project_edit": "项目编辑",
|
||||
"pm_manager": "店铺项目管理",
|
||||
"project_edit": "项目管理",
|
||||
"location_report": "位置上报",
|
||||
"registration_invitation": "注册邀请",
|
||||
"store": "店铺管理",
|
||||
@ -95,6 +95,16 @@ enum HomeMenuRouter {
|
||||
return .destination(.taskManagement)
|
||||
case "task_create":
|
||||
return .destination(.taskCreate)
|
||||
case "schedule_management":
|
||||
return .destination(.scheduleManagement)
|
||||
case "pm", "project_edit":
|
||||
return .destination(.projectManagement)
|
||||
case "pm_manager":
|
||||
return .destination(.pmProjectManagement)
|
||||
case "registration_invitation", "photographer_invite":
|
||||
return .destination(.photographerInvite)
|
||||
case "invite_record":
|
||||
return .destination(.inviteRecord)
|
||||
case "cloud_management":
|
||||
return .destination(.cloudStorage)
|
||||
case "cloud_storage_transit":
|
||||
@ -132,18 +142,11 @@ enum HomeMenuRouter {
|
||||
"deposit_order",
|
||||
"deposit_order_shooting_info",
|
||||
"withdrawal_audit",
|
||||
"schedule_management",
|
||||
"pm",
|
||||
"pm_manager",
|
||||
"project_edit",
|
||||
"live_stream_management",
|
||||
"live_album",
|
||||
"scenic_settlement",
|
||||
"scenic_settlement_review",
|
||||
"operating-area",
|
||||
"registration_invitation",
|
||||
"photographer_invite",
|
||||
"invite_record",
|
||||
"pilot_cert":
|
||||
let resolvedTitle = title.isEmpty ? self.title(for: uri) : title
|
||||
return .destination(.modulePlaceholder(uri: uri, title: resolvedTitle))
|
||||
@ -237,8 +240,8 @@ enum HomeMenuRouter {
|
||||
case "photographer_invite":
|
||||
return availableURIs.contains("registration_invitation") ? "registration_invitation" : uri
|
||||
case "pm":
|
||||
return availableURIs.contains("pm_manager") ? "pm_manager" : uri
|
||||
case "pm_manager":
|
||||
return availableURIs.contains("project_edit") ? "project_edit" : uri
|
||||
case "project_edit":
|
||||
return availableURIs.contains("pm") ? "pm" : uri
|
||||
case "payment_code":
|
||||
return availableURIs.contains("payment_qr") ? "payment_qr" : uri
|
||||
@ -254,7 +257,7 @@ enum HomeMenuRouter {
|
||||
return "task_management"
|
||||
case "registration_invitation", "photographer_invite":
|
||||
return "registration_invitation"
|
||||
case "pm", "pm_manager", "project_edit":
|
||||
case "pm", "project_edit":
|
||||
return "pm"
|
||||
case "payment_collection", "payment_qr", "payment_code":
|
||||
return "payment_collection"
|
||||
@ -276,8 +279,10 @@ enum HomeMenuRouter {
|
||||
return "注册邀请"
|
||||
case "location_report":
|
||||
return "位置上报"
|
||||
case "pm", "pm_manager":
|
||||
case "pm", "project_edit":
|
||||
return "项目管理"
|
||||
case "pm_manager":
|
||||
return "店铺项目"
|
||||
case "space_settings":
|
||||
return "空间设置"
|
||||
case "task_management", "task_management_editor":
|
||||
|
||||
@ -36,6 +36,26 @@ extension HomeRoute {
|
||||
TaskCreateView()
|
||||
case .taskDetail(let id, let summary):
|
||||
TaskDetailView(taskId: id, summary: summary)
|
||||
case .projectManagement:
|
||||
ProjectManagementView()
|
||||
case .pmProjectManagement:
|
||||
StoreProjectManagementView()
|
||||
case .projectDetail(let id, let storeMode):
|
||||
ProjectDetailView(projectId: id, storeMode: storeMode)
|
||||
case .projectEditor(let id, let storeMode):
|
||||
if storeMode {
|
||||
StoreProjectEditorView(projectId: id)
|
||||
} else {
|
||||
ProjectEditorView(projectId: id)
|
||||
}
|
||||
case .scheduleManagement:
|
||||
ScheduleManagementView()
|
||||
case .scheduleAdd:
|
||||
ScheduleAddView()
|
||||
case .photographerInvite:
|
||||
PhotographerInviteView()
|
||||
case .inviteRecord:
|
||||
InviteRecordView()
|
||||
case .cloudStorage:
|
||||
CloudStorageView()
|
||||
case .cloudStorageTransit:
|
||||
|
||||
Reference in New Issue
Block a user