대시보드 결재 상세 진입 지원

This commit is contained in:
JiWoong Sul
2025-10-23 20:19:59 +09:00
parent 7e933a2dda
commit 9d6cbb1ab2
14 changed files with 543 additions and 76 deletions

View File

@@ -102,7 +102,7 @@ class ApprovalDto {
decidedAt: _parseDate(
json['decided_at'] ?? approvalEnvelope['decided_at'],
),
note: json['note'] as String? ?? approvalEnvelope['note'] as String?,
note: _readString(json['note']) ?? _readString(approvalEnvelope['note']),
isActive:
(json['is_active'] as bool?) ??
(approvalEnvelope['is_active'] as bool?) ??
@@ -178,12 +178,12 @@ class ApprovalStatusDto {
json['approval_status_id'] as int? ??
0,
name:
json['name'] as String? ??
json['status_name'] as String? ??
json['approval_status_name'] as String? ??
(json['status'] as String?) ??
_readString(json['name']) ??
_readString(json['status_name']) ??
_readString(json['approval_status_name']) ??
_readString(json['status']) ??
'-',
color: json['color'] as String?,
color: _readString(json['color']),
);
}
@@ -206,8 +206,11 @@ class ApprovalRequesterDto {
factory ApprovalRequesterDto.fromJson(Map<String, dynamic> json) {
return ApprovalRequesterDto(
id: json['id'] as int? ?? json['employee_id'] as int? ?? 0,
employeeNo: json['employee_no'] as String? ?? '-',
name: json['name'] as String? ?? json['employee_name'] as String? ?? '-',
employeeNo: _readString(json['employee_no']) ?? '-',
name:
_readString(json['name']) ??
_readString(json['employee_name']) ??
'-',
);
}
@@ -231,8 +234,11 @@ class ApprovalApproverDto {
factory ApprovalApproverDto.fromJson(Map<String, dynamic> json) {
return ApprovalApproverDto(
id: json['id'] as int? ?? json['approver_id'] as int? ?? 0,
employeeNo: json['employee_no'] as String? ?? '-',
name: json['name'] as String? ?? json['employee_name'] as String? ?? '-',
employeeNo: _readString(json['employee_no']) ?? '-',
name:
_readString(json['name']) ??
_readString(json['employee_name']) ??
'-',
);
}
@@ -278,7 +284,7 @@ class ApprovalStepDto {
),
assignedAt: _parseDate(json['assigned_at']) ?? DateTime.now(),
decidedAt: _parseDate(json['decided_at']),
note: json['note'] as String?,
note: _readString(json['note']),
isDeleted:
json['is_deleted'] as bool? ??
(json['deleted_at'] != null ||
@@ -337,9 +343,9 @@ class ApprovalHistoryDto {
final fallbackAction = {
'id': json['approval_action_id'] ?? json['action_id'],
'name':
json['approval_action_name'] ??
json['action_name'] ??
(json['action'] as String?) ??
_readString(json['approval_action_name']) ??
_readString(json['action_name']) ??
_readString(json['action']) ??
'-',
};
@@ -355,7 +361,7 @@ class ApprovalHistoryDto {
approver: ApprovalApproverDto.fromJson(approverMap),
actionAt:
_parseDate(json['action_at'] ?? json['actionAt']) ?? DateTime.now(),
note: json['note'] as String?,
note: _readString(json['note']),
);
}
@@ -389,10 +395,10 @@ class ApprovalActionDto {
json['approval_action_id'] as int? ??
0,
name:
json['name'] as String? ??
json['action_name'] as String? ??
json['approval_action_name'] as String? ??
(json['action'] as String?) ??
_readString(json['name']) ??
_readString(json['action_name']) ??
_readString(json['approval_action_name']) ??
_readString(json['action']) ??
'-',
);
}
@@ -441,3 +447,17 @@ DateTime? _parseDate(Object? value) {
if (value is String) return DateTime.tryParse(value);
return null;
}
String? _readString(dynamic value) {
if (value == null) {
return null;
}
if (value is String) {
final trimmed = value.trim();
return trimmed.isEmpty ? null : trimmed;
}
if (value is num || value is bool) {
return value.toString();
}
return null;
}