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

84
lib/models/sys_role.dart Normal file
View File

@@ -0,0 +1,84 @@
/// 系统角色模型。
///
/// 对应后端 /sys/role/* 接口的角色实体。
class SysRole {
const SysRole({
required this.roleId,
required this.roleName,
required this.remark,
required this.createTime,
});
/// 角色 ID。
final String roleId;
/// 角色名称。
final String roleName;
/// 备注。
final String remark;
/// 创建时间。
final DateTime? createTime;
factory SysRole.fromJson(Map<String, dynamic> json) {
return SysRole(
roleId: (json['roleId'] ?? json['id'])?.toString() ?? '',
roleName: json['roleName']?.toString() ?? '',
remark: json['remark']?.toString() ?? '',
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 {
'roleId': roleId,
'roleName': roleName,
'remark': remark,
'createTime': createTime?.toIso8601String(),
};
}
}
/// 角色-菜单关联模型(用于角色权限分配)。
class RoleMenu {
const RoleMenu({
required this.id,
required this.roleId,
required this.menuId,
});
/// 主键 ID。
final String id;
/// 角色 ID。
final String roleId;
/// 菜单 ID。
final String menuId;
factory RoleMenu.fromJson(Map<String, dynamic> json) {
return RoleMenu(
id: json['id']?.toString() ?? '',
roleId: json['roleId']?.toString() ?? '',
menuId: json['menuId']?.toString() ?? '',
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'roleId': roleId,
'menuId': menuId,
};
}
}