/** * 任务工具类 * 提供任务相关的通用工具方法 */ /** * 任务状态枚举 */ 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;