155 lines
4.7 KiB
Dart
155 lines
4.7 KiB
Dart
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<String> get labelList =>
|
|
APPQuickCheckStatus.values.map((e) => e.description).toList();
|
|
|
|
/// 下拉选项用 - value 列表(对应值)
|
|
static List<int> get valueList =>
|
|
APPQuickCheckStatus.values.map((e) => e.value).toList();
|
|
|
|
/// 下拉选项用 - map 列表
|
|
static List<Map<String, dynamic>> get list => APPQuickCheckStatus.values
|
|
.map((e) => {"id": e.value, "name": e.description})
|
|
.toList();
|
|
|
|
/// 获取指定状态的列表(可过滤)
|
|
static List<Map<String, dynamic>> getFilteredList({
|
|
bool includeNotFound = true,
|
|
bool includeInProgress = true,
|
|
bool includeCompleted = true,
|
|
bool includeTimeout = true,
|
|
bool includeCancelled = true,
|
|
bool includeCalculateError = true,
|
|
bool includeInsufficientData = true,
|
|
}) {
|
|
final List<APPQuickCheckStatus> 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();
|
|
}
|
|
}
|