从 iOS 17 Observation 迁移至 iOS 16 兼容的 Combine 架构
将最低部署版本降至 iOS 16,以 ObservableObject 替换 @Observable,新增导航与 UI 兼容层,并补充登录冒烟 UI 测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Observation
|
||||
import Combine
|
||||
|
||||
/// 排班错误实体,表示表单校验失败。
|
||||
enum ScheduleValidationError: LocalizedError, Equatable {
|
||||
@ -26,14 +26,13 @@ enum ScheduleValidationError: LocalizedError, Equatable {
|
||||
|
||||
/// 排班管理 ViewModel,负责月份日期标记、某日列表和删除操作。
|
||||
@MainActor
|
||||
@Observable
|
||||
final class ScheduleManagementViewModel {
|
||||
var monthDate = Date.scheduleFirstDayOfMonth
|
||||
var selectedDate = Date()
|
||||
private(set) var markedDays: Set<String> = []
|
||||
private(set) var items: [ScheduleItem] = []
|
||||
private(set) var loading = false
|
||||
var errorMessage: String?
|
||||
final class ScheduleManagementViewModel: ObservableObject {
|
||||
@Published var monthDate = Date.scheduleFirstDayOfMonth
|
||||
@Published var selectedDate = Date()
|
||||
@Published private(set) var markedDays: Set<String> = []
|
||||
@Published private(set) var items: [ScheduleItem] = []
|
||||
@Published private(set) var loading = false
|
||||
@Published var errorMessage: String?
|
||||
|
||||
/// 切换到上一个月并重新加载。
|
||||
func previousMonth(api: any ScheduleServing, scenicId: Int?) async {
|
||||
@ -109,13 +108,12 @@ final class ScheduleManagementViewModel {
|
||||
|
||||
/// 新增排班 ViewModel,负责可选订单加载、表单校验和提交。
|
||||
@MainActor
|
||||
@Observable
|
||||
final class ScheduleAddViewModel {
|
||||
var draft = ScheduleDraft()
|
||||
private(set) var availableOrders: [AvailableOrderResponse] = []
|
||||
private(set) var loadingOrders = false
|
||||
private(set) var submitting = false
|
||||
var errorMessage: String?
|
||||
final class ScheduleAddViewModel: ObservableObject {
|
||||
@Published var draft = ScheduleDraft()
|
||||
@Published private(set) var availableOrders: [AvailableOrderResponse] = []
|
||||
@Published private(set) var loadingOrders = false
|
||||
@Published private(set) var submitting = false
|
||||
@Published var errorMessage: String?
|
||||
|
||||
/// 加载可关联订单列表。
|
||||
func loadOrders(api: any ScheduleServing, scenicId: Int?) async {
|
||||
|
||||
Reference in New Issue
Block a user