ops-console v1.0.2 (versionCode 8) 源码入库

This commit is contained in:
txh
2026-09-03 18:01:05 +08:00
commit 685fff27c8
170 changed files with 53049 additions and 0 deletions

80
lib/models/tv_app.dart Normal file
View File

@@ -0,0 +1,80 @@
/// TV 应用模型。
///
/// 对应后端 /theme/tvapp/* 接口的 TV 应用实体。
class TvApp {
const TvApp({
required this.id,
required this.appName,
required this.packageName,
required this.appCategory,
required this.iconUrl,
required this.orgId,
required this.groupId,
required this.status,
required this.createTime,
});
/// 应用 ID。
final String id;
/// 应用名称。
final String appName;
/// 包名。
final String packageName;
/// 应用分类。
final String appCategory;
/// 图标地址。
final String iconUrl;
/// 组织 ID。
final String orgId;
/// 设备分组 ID。
final String groupId;
/// 状态(0=正常 1=禁用)。
final int status;
/// 创建时间。
final DateTime? createTime;
factory TvApp.fromJson(Map<String, dynamic> json) {
return TvApp(
id: json['id']?.toString() ?? '',
appName: json['appName']?.toString() ?? '',
packageName: json['packageName']?.toString() ?? '',
appCategory: json['appCategory']?.toString() ?? '',
iconUrl: json['iconUrl']?.toString() ?? '',
orgId: json['orgId']?.toString() ?? '',
groupId: json['groupId']?.toString() ?? '',
status: int.tryParse(json['status']?.toString() ?? '0') ?? 0,
createTime: _parseDateTime(json['createTime']),
);
}
/// 兼容 `yyyy-MM-dd HH:mm:ss` 与 ISO 8601 两种时间格式。
static DateTime? _parseDateTime(dynamic value) {
if (value == null) return null;
final text = value.toString().trim();
if (text.isEmpty) return null;
return DateTime.tryParse(text) ??
DateTime.tryParse(text.replaceFirst(' ', 'T'));
}
Map<String, dynamic> toJson() {
return {
'id': id,
'appName': appName,
'packageName': packageName,
'appCategory': appCategory,
'iconUrl': iconUrl,
'orgId': orgId,
'groupId': groupId,
'status': status,
'createTime': createTime?.toIso8601String(),
};
}
}