import 'package:ef/ef.dart'; enum APPQuickCheckStatus { notFound, // 404: 未找到快检信息 inProgress, // 200: 快检进行中 completed, // 201: 快检完成 timeout, // 202: 快检超时 cancelled, // 203: 已取消 calculateError, // 500: 计算错误 insufficientData, // 501: 有效数据不足 } extension APPQuickCheckStatusExtension on APPQuickCheckStatus { /// 获取整型值 int get value { switch (this) { case APPQuickCheckStatus.notFound: return 404; case APPQuickCheckStatus.inProgress: return 200; case APPQuickCheckStatus.completed: return 201; case APPQuickCheckStatus.timeout: return 202; case APPQuickCheckStatus.cancelled: return 203; case APPQuickCheckStatus.calculateError: return 500; case APPQuickCheckStatus.insufficientData: return 501; } } /// 根据整型值解析为枚举 static APPQuickCheckStatus? fromInt(int? type) { switch (type) { case 404: return APPQuickCheckStatus.notFound; case 200: return APPQuickCheckStatus.inProgress; case 201: return APPQuickCheckStatus.completed; case 202: return APPQuickCheckStatus.timeout; case 203: return APPQuickCheckStatus.cancelled; case 500: return APPQuickCheckStatus.calculateError; case 501: return APPQuickCheckStatus.insufficientData; default: return null; } } /// 根据整型值返回对应名称字符串 static String? nameFromInt(int? type) { final status = fromInt(type); return status?.description; } /// 获取描述文本 String get description { switch (this) { case APPQuickCheckStatus.notFound: return "未找到快检信息".tr; case APPQuickCheckStatus.inProgress: return "快检进行中".tr; case APPQuickCheckStatus.completed: return "快检完成".tr; case APPQuickCheckStatus.timeout: return "快检超时".tr; case APPQuickCheckStatus.cancelled: return "已取消".tr; case APPQuickCheckStatus.calculateError: return "计算错误".tr; case APPQuickCheckStatus.insufficientData: return "有效数据不足".tr; } } /// 判断是否为结束状态(已完成、错误、超时、取消等) bool get isFinished { switch (this) { case APPQuickCheckStatus.completed: case APPQuickCheckStatus.timeout: case APPQuickCheckStatus.cancelled: case APPQuickCheckStatus.calculateError: case APPQuickCheckStatus.insufficientData: return true; case APPQuickCheckStatus.inProgress: case APPQuickCheckStatus.notFound: return false; } } /// 判断是否为错误状态 bool get isError { switch (this) { case APPQuickCheckStatus.timeout: case APPQuickCheckStatus.cancelled: case APPQuickCheckStatus.calculateError: case APPQuickCheckStatus.insufficientData: return true; case APPQuickCheckStatus.completed: case APPQuickCheckStatus.inProgress: case APPQuickCheckStatus.notFound: return false; } } /// 下拉选项用 - label 列表(展示) static List get labelList => APPQuickCheckStatus.values.map((e) => e.description).toList(); /// 下拉选项用 - value 列表(对应值) static List get valueList => APPQuickCheckStatus.values.map((e) => e.value).toList(); /// 下拉选项用 - map 列表 static List> get list => APPQuickCheckStatus.values .map((e) => {"id": e.value, "name": e.description}) .toList(); /// 获取指定状态的列表(可过滤) static List> getFilteredList({ bool includeNotFound = true, bool includeInProgress = true, bool includeCompleted = true, bool includeTimeout = true, bool includeCancelled = true, bool includeCalculateError = true, bool includeInsufficientData = true, }) { final List filteredStatus = []; if (includeNotFound) filteredStatus.add(APPQuickCheckStatus.notFound); if (includeInProgress) filteredStatus.add(APPQuickCheckStatus.inProgress); if (includeCompleted) filteredStatus.add(APPQuickCheckStatus.completed); if (includeTimeout) filteredStatus.add(APPQuickCheckStatus.timeout); if (includeCancelled) filteredStatus.add(APPQuickCheckStatus.cancelled); if (includeCalculateError) filteredStatus.add(APPQuickCheckStatus.calculateError); if (includeInsufficientData) filteredStatus.add(APPQuickCheckStatus.insufficientData); return filteredStatus .map((e) => { "id": e.value, "name": e.description, }) .toList(); } }