wlzboy
2026-03-31 61c4c3f45e4257e2e7662f033e2719e62366c632
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
/**
 * 任务工具类
 * 提供任务相关的通用工具方法
 */
 
/**
 * 任务状态枚举
 */
export const TaskStatus = {
  /** 待处理 */
  PENDING: 'PENDING',
  
  /** 部分确认 */
  PARTIALLY_CONFIRMED: 'PARTIALLY_CONFIRMED',
  
  /** 完全未确认 */
  NOT_CONFIRMED: 'NOT_CONFIRMED',
  
  /** 未出车 */
  NOT_DEPARTED: 'NOT_DEPARTED',
  
  /** 出发中 */
  DEPARTING: 'DEPARTING',
  
  /** 已到达 */
  ARRIVED: 'ARRIVED',
  
  /** 返程中 */
  RETURNING: 'RETURNING',
  
  /** 已完成 */
  COMPLETED: 'COMPLETED',
  
  /** 已取消 */
  CANCELLED: 'CANCELLED',
  
  /** 任务中 (兼容旧数据) */
  IN_PROGRESS: 'IN_PROGRESS'
};
 
/**
 * 任务状态文本映射
 */
const STATUS_TEXT_MAP = {
  [TaskStatus.PENDING]: '待处理',
  [TaskStatus.PARTIALLY_CONFIRMED]: '部分确认',
  [TaskStatus.NOT_CONFIRMED]: '完全未确认',
  [TaskStatus.NOT_DEPARTED]: '未出车',
  [TaskStatus.DEPARTING]: '出发中',
  [TaskStatus.ARRIVED]: '已到达',
  [TaskStatus.RETURNING]: '返程中',
  [TaskStatus.COMPLETED]: '已完成',
  [TaskStatus.CANCELLED]: '已取消',
  [TaskStatus.IN_PROGRESS]: '任务中' // 兼容旧数据
};
 
/**
 * 获取任务状态文本
 * @param {string} status - 任务状态代码
 * @returns {string} 任务状态文本
 */
export function getStatusText(status) {
  return STATUS_TEXT_MAP[status] || '未知';
}
 
/**
 * 获取所有任务状态选项(适用于选择器)
 * @returns {Array} 状态选项数组
 */
export function getTaskStatusOptions() {
  return Object.keys(TaskStatus).map(key => ({
    value: TaskStatus[key],
    label: STATUS_TEXT_MAP[TaskStatus[key]]
  }));
}
 
/**
 * 判断任务是否已完成
 * @param {string} status - 任务状态代码
 * @returns {boolean} 是否已完成
 */
export function isTaskCompleted(status) {
  return status === TaskStatus.COMPLETED;
}
 
/**
 * 判断任务是否已取消
 * @param {string} status - 任务状态代码
 * @returns {boolean} 是否已取消
 */
export function isTaskCancelled(status) {
  return status === TaskStatus.CANCELLED;
}
 
/**
 * 判断任务是否处于进行中状态(包括待处理、出发中、已到达、返程中等)
 * @param {string} status - 任务状态代码
 * @returns {boolean} 是否进行中
 */
export function isTaskInProgress(status) {
  const activeStatuses = [
    TaskStatus.PENDING,
    TaskStatus.PARTIALLY_CONFIRMED,
    TaskStatus.NOT_CONFIRMED,
    TaskStatus.NOT_DEPARTED,
    TaskStatus.DEPARTING,
    TaskStatus.ARRIVED,
    TaskStatus.RETURNING,
    TaskStatus.IN_PROGRESS
  ];
  return activeStatuses.includes(status);
}
 
/**
 * 任务类型枚举
 */
export const TaskType = {
  /** 维修保养 */
  MAINTENANCE: 'MAINTENANCE',
  
  /** 加油 */
  FUEL: 'FUEL',
  
  /** 其他 */
  OTHER: 'OTHER',
  
  /** 转运任务 */
  EMERGENCY_TRANSFER: 'EMERGENCY_TRANSFER',
  
  /** 福祉车 */
  WELFARE: 'WELFARE',
  
  // 旧格式(兼容用)
  /** 维修保养(旧) */
  maintenance: 'maintenance',
  
  /** 加油(旧) */
  refuel: 'refuel',
  
  /** 巡检(旧) */
  inspection: 'inspection',
  
  /** 转运任务(旧) */
  emergency: 'emergency',
  
  /** 福祉车(旧) */
  welfare: 'welfare'
};
 
/**
 * 任务类型文本映射
 */
const TYPE_TEXT_MAP = {
  // 新格式(数据库类型)
  [TaskType.MAINTENANCE]: '维修保养',
  [TaskType.FUEL]: '加油',
  [TaskType.OTHER]: '其他',
  [TaskType.EMERGENCY_TRANSFER]: '转运任务',
  [TaskType.WELFARE]: '福祉车',
  // 旧格式(UI 类型)
  [TaskType.maintenance]: '维修保养',
  [TaskType.refuel]: '加油',
  [TaskType.inspection]: '巡检',
  [TaskType.emergency]: '转运任务',
  [TaskType.welfare]: '福祉车'
};
 
/**
 * 获取任务类型文本
 * @param {string} type - 任务类型代码
 * @returns {string} 任务类型文本
 */
export function getTaskTypeText(type) {
  return TYPE_TEXT_MAP[type] || '未知类型';
}
 
/**
 * 获取所有任务类型选项(适用于选择器)
 * @returns {Array} 类型选项数组
 */
export function getTaskTypeOptions() {
  return Object.keys(TaskType).map(key => ({
    value: TaskType[key],
    label: TYPE_TEXT_MAP[TaskType[key]]
  }));
}
 
// 默认导出
const TaskUtil = {
  TaskStatus,
  TaskType,
  getStatusText,
  getTaskStatusOptions,
  getTaskTypeText,
  getTaskTypeOptions,
  isTaskCompleted,
  isTaskCancelled,
  isTaskInProgress
};
 
export default TaskUtil;