approval_status.dart 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import '../../core/i18n/app_localizations.dart';
  2. enum ApprovalStatus {
  3. draft,
  4. pending,
  5. approved,
  6. rejected,
  7. withdrawn;
  8. /// 返回本地化的状态标签文本
  9. String label(AppLocalizations l10n) {
  10. switch (this) {
  11. case ApprovalStatus.draft:
  12. return l10n.get('statusDraft');
  13. case ApprovalStatus.pending:
  14. return l10n.get('statusWaitApprove');
  15. case ApprovalStatus.approved:
  16. return l10n.get('statusApproved');
  17. case ApprovalStatus.rejected:
  18. return l10n.get('statusRejected');
  19. case ApprovalStatus.withdrawn:
  20. return l10n.get('statusWithdrawn');
  21. }
  22. }
  23. }
  24. class ApprovalRecord {
  25. final String id;
  26. final String bizId;
  27. final String bizType;
  28. final String approverId;
  29. final String approverName;
  30. final int approvalLevel;
  31. final String action;
  32. final String opinion;
  33. final DateTime approvalTime;
  34. const ApprovalRecord({
  35. required this.id,
  36. required this.bizId,
  37. required this.bizType,
  38. required this.approverId,
  39. required this.approverName,
  40. required this.approvalLevel,
  41. required this.action,
  42. required this.opinion,
  43. required this.approvalTime,
  44. });
  45. factory ApprovalRecord.fromJson(Map<String, dynamic> json) {
  46. return ApprovalRecord(
  47. id: json['id'] as String,
  48. bizId: json['bizId'] as String,
  49. bizType: json['bizType'] as String,
  50. approverId: json['approverId'] as String,
  51. approverName: json['approverName'] as String,
  52. approvalLevel: json['approvalLevel'] as int,
  53. action: json['action'] as String,
  54. opinion: json['opinion'] as String? ?? '',
  55. approvalTime: DateTime.parse(json['approvalTime'] as String),
  56. );
  57. }
  58. Map<String, dynamic> toJson() => {
  59. 'id': id,
  60. 'bizId': bizId,
  61. 'bizType': bizType,
  62. 'approverId': approverId,
  63. 'approverName': approverName,
  64. 'approvalLevel': approvalLevel,
  65. 'action': action,
  66. 'opinion': opinion,
  67. 'approvalTime': approvalTime.toIso8601String(),
  68. };
  69. }