enum ApprovalStatus { draft, pending, approved, rejected, withdrawn; String get label { switch (this) { case ApprovalStatus.draft: return '草稿'; case ApprovalStatus.pending: return '待审批'; case ApprovalStatus.approved: return '已通过'; case ApprovalStatus.rejected: return '已拒绝'; case ApprovalStatus.withdrawn: return '已撤回'; } } } class ApprovalRecord { final String id; final String bizId; final String bizType; final String approverId; final String approverName; final int approvalLevel; final String action; final String opinion; final DateTime approvalTime; const ApprovalRecord({ required this.id, required this.bizId, required this.bizType, required this.approverId, required this.approverName, required this.approvalLevel, required this.action, required this.opinion, required this.approvalTime, }); factory ApprovalRecord.fromJson(Map json) { return ApprovalRecord( id: json['id'] as String, bizId: json['bizId'] as String, bizType: json['bizType'] as String, approverId: json['approverId'] as String, approverName: json['approverName'] as String, approvalLevel: json['approvalLevel'] as int, action: json['action'] as String, opinion: json['opinion'] as String? ?? '', approvalTime: DateTime.parse(json['approvalTime'] as String), ); } Map toJson() => { 'id': id, 'bizId': bizId, 'bizType': bizType, 'approverId': approverId, 'approverName': approverName, 'approvalLevel': approvalLevel, 'action': action, 'opinion': opinion, 'approvalTime': approvalTime.toIso8601String(), }; }