移除订单 Tab 内门店与核销订单详情页及跳转入口。
列表卡片仅展示摘要,保留订单来源绑定与押金订单详情等其它子流程。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -1,75 +0,0 @@
|
||||
//
|
||||
// OrderDetailViewModel.swift
|
||||
// suixinkan
|
||||
//
|
||||
// Created by Codex on 2026/6/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Combine
|
||||
|
||||
@MainActor
|
||||
/// 订单详情 ViewModel,负责加载门店订单详情并保留列表摘要兜底展示。
|
||||
final class OrderDetailViewModel: ObservableObject {
|
||||
@Published private(set) var detail: StoreOrderDetailResponse?
|
||||
@Published private(set) var loading = false
|
||||
@Published private(set) var errorMessage: String?
|
||||
@Published private(set) var contextMessage: String?
|
||||
|
||||
/// 当前页面用于展示的订单信息,详情接口成功时优先使用详情数据。
|
||||
var display: StoreOrderDetailDisplay {
|
||||
if let detail {
|
||||
return StoreOrderDetailDisplay(detail: detail)
|
||||
}
|
||||
return StoreOrderDetailDisplay(item: item)
|
||||
}
|
||||
|
||||
/// 详情中的项目配置。
|
||||
var projectInfo: StoreOrderProjectInfo? {
|
||||
detail?.multiTravel?.projectInfo
|
||||
}
|
||||
|
||||
/// 详情中的拍摄点列表。
|
||||
var shootingList: [StoreOrderShootingListItem] {
|
||||
detail?.multiTravel?.shootingList ?? []
|
||||
}
|
||||
|
||||
private let item: OrderEntity
|
||||
|
||||
/// 初始化详情 ViewModel,并注入列表订单作为兜底数据。
|
||||
init(item: OrderEntity) {
|
||||
self.item = item
|
||||
}
|
||||
|
||||
/// 加载门店订单详情,缺少门店 ID 时只保留列表摘要展示。
|
||||
func load(api: OrderServing, fallbackStoreId: Int?, forceReload: Bool = false) async {
|
||||
guard !loading else { return }
|
||||
if forceReload {
|
||||
detail = nil
|
||||
} else {
|
||||
guard detail == nil else { return }
|
||||
}
|
||||
|
||||
guard let storeId = item.storeId ?? fallbackStoreId, storeId > 0 else {
|
||||
contextMessage = "缺少门店上下文,当前展示订单摘要。"
|
||||
return
|
||||
}
|
||||
|
||||
loading = true
|
||||
errorMessage = nil
|
||||
contextMessage = nil
|
||||
defer { loading = false }
|
||||
|
||||
do {
|
||||
detail = try await api.storeOrderDetail(storeId: storeId, orderNumber: item.orderNumber)
|
||||
} catch {
|
||||
errorMessage = error.localizedDescription
|
||||
contextMessage = "详情加载失败,当前展示订单摘要。"
|
||||
}
|
||||
}
|
||||
|
||||
/// 清理当前错误提示。
|
||||
func clearError() {
|
||||
errorMessage = nil
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user