1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
| /**
| * 页面行程状态枚举:与历史 number 值保持 1:1 对齐,避免行为变化。
| */
| export enum TripStatus {
| /** 发布行程 */
| PublishRoute = 1,
| /** 发布中 */
| Publishing = 2,
| /** 呼叫车中 */
| CallingCar = 3,
| /** 车辆即将到达 */
| VehicleApproaching = 4,
| /** 车辆到达上车点 */
| VehicleArrivedPickup = 5,
| /** 车辆行驶中 */
| InService = 6,
| /** 到达目的地 */
| ArrivedDestination = 7,
| /** 行程已结束 */
| TripFinished = 8,
| /** 支付成功 */
| PaymentSuccess = 9,
| /** 取消订单时只展示上车点 */
| CancelOnlyPickup = 10,
| }
|
| /**
| * socket 订单状态枚举:对应后端推送 status 字段。
| */
| export enum SocketOrderStatus {
| /** 已取消 */
| Canceled = 0,
| /** 待接单 */
| PendingAccept = 1,
| /** 待出发 */
| PendingDeparture = 2,
| /** 接驾中 */
| PickupOnTheWay = 3,
| /** 待客上车 */
| WaitingPassenger = 4,
| /** 乘客已上车 */
| PassengerOnboard = 5,
| /** 服务中 */
| InProgress = 6,
| /** 待客下车 */
| WaitingDropoff = 7,
| /** 待付款 */
| PendingPayment = 8,
| /** 待评价 */
| PendingComment = 9,
| /** 已完成 */
| Completed = 10,
| }
|
| /**
| * 取消订单弹窗类型枚举:与历史 number 值保持 1:1 对齐,避免行为变化。
| */
| export enum CancelType {
| /** 呼叫车中/发布中取消:预计 N 分钟内有车应答 */
| CallingCar = 1,
| /** 接驾中取消:车辆还有 N 分钟/时长到达上车点 */
| VehicleApproaching = 2,
| /** 车辆已到达上车点后取消 */
| VehicleArrivedPickup = 3,
| /** 订单已取消(终态提示,可再来一单) */
| OrderCanceled = 4,
| /** 附近没有空余车辆,已自动取消订单 */
| NoAvailableVehicle = 5,
| /** 车辆无法继续服务,正在为您重新派车中 */
| Redispatching = 6,
| /** 行程中取消:预计 N 分钟到达目的地 */
| InService = 7,
| }
|
| const TRIP_STATUS_SET = new Set<number>(Object.values(TripStatus).filter((value) => typeof value === 'number') as number[]); // 行程状态值集合
| const SOCKET_STATUS_SET = new Set<number>(Object.values(SocketOrderStatus).filter((value) => typeof value === 'number') as number[]); // socket 状态值集合
|
| export const DEFAULT_TRIP_STATUS = TripStatus.PublishRoute; // 默认行程状态
|
| /**
| * 将未知值安全转为行程状态,异常值回落到 fallback。
| */
| export function toTripStatus(value: unknown, fallback: TripStatus = DEFAULT_TRIP_STATUS): TripStatus {
| const numericValue = Number(value); // 统一转数值
| if (!Number.isFinite(numericValue)) {
| return fallback;
| }
| if (!TRIP_STATUS_SET.has(numericValue)) {
| return fallback;
| }
| return numericValue as TripStatus;
| }
|
| /**
| * 将未知值安全转为 socket 状态,异常值回落到 fallback。
| */
| export function toSocketOrderStatus(value: unknown, fallback: SocketOrderStatus = SocketOrderStatus.PendingAccept): SocketOrderStatus {
| const numericValue = Number(value); // 统一转数值
| if (!Number.isFinite(numericValue)) {
| return fallback;
| }
| if (!SOCKET_STATUS_SET.has(numericValue)) {
| return fallback;
| }
| return numericValue as SocketOrderStatus;
| }
|
|