刘光辉
5 小时以前 cf11e63b659afcc9792ab3e395f1b45d844431a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/** 三个列表页:培训记录 / 可归档 / 已归档 */
export type RecordListMode = 'main' | 'ready' | 'archived';
 
/** 归档状态:open进行中 / pending待归档 / ready可归档 / archived已归档 / invalid无效 */
export type ArchiveStatus = 'open' | 'pending' | 'ready' | 'archived' | 'invalid';
 
/** 培训记录列表行 */
export interface TmsRecordListItem {
  id: string;
  recordNo: string;
  category: string;
  subject: string;
  trainerName: string;
  /** 列表「培训类型」列,如在线学习/集中授课 */
  trainType: string;
  startTime: string;
  endTime?: string;
  closeTime?: string;
  evalMode: string;
  archiveStatus: ArchiveStatus;
  trainMode?: string;
  signRate?: number;
  passRate?: number;
  placeName?: string;
}
 
export interface TmsRecordPageQuery {
  currentPage?: number;
  pageSize?: number;
  keyword?: string;
  recordNo?: string;
  subject?: string;
  category?: string;
  trainMode?: string;
  evalMode?: string;
  trainerName?: string;
  startTimeFrom?: string;
  startTimeTo?: string;
  endTimeFrom?: string;
  endTimeTo?: string;
  listMode?: RecordListMode;
  archiveStatus?: ArchiveStatus;
}
 
/** 附件 */
export interface TmsRecordAttachment {
  id: string;
  name: string;
  url?: string;
  fileId?: string;
  fileVersionId?: string;
  fileExt?: string;
  previewType?: 'image' | 'video' | 'audio' | 'pdf' | 'office' | 'other' | string;
}
 
/** 参加人员(查看页名单) */
export interface TmsRecordParticipant {
  id: string;
  userId?: string;
  userName: string;
  deptName?: string;
  /** 签到日期 */
  signDate?: string;
  /** 考试成绩 */
  examScore?: string | number;
  /** 提问成绩 */
  quizScore?: string | number;
  /** 是否已提交提问答卷 */
  hasQuizAnswer?: boolean;
  /** 是否合格 pass/fail(兼容历史 1/0) */
  passFlag?: string;
}
 
/** 提问答卷 */
export interface TmsQuizAnswerPaper {
  recordId?: string;
  taskId?: string;
  userId?: string;
  userName?: string;
  totalScore?: number;
  passFlag?: string;
  quizTime?: string;
  items?: Array<{
    id?: string;
    sortNo?: number;
    question?: string;
    userAnswer?: string;
    refAnswer?: string;
    score?: number;
    correct?: boolean;
  }>;
}
 
export interface TmsRecordSignItem {
  id: string;
  userName: string;
  deptName?: string;
  signTime?: string;
  signMode?: string;
  guestFlag?: '0' | '1';
}
 
export interface TmsRecordDetail extends TmsRecordListItem {
  taskId?: string;
  taskNo?: string;
  /** 任务关闭时间 */
  closeTime?: string;
  /** 培训要点 */
  keyPoints?: string;
  /** 培训地点 */
  placeName?: string;
  /** 培训对象(逗号分隔姓名) */
  trainees?: string;
  remark?: string;
  attachments?: TmsRecordAttachment[];
  /** 参加人员名单 */
  participants?: TmsRecordParticipant[];
  signList?: TmsRecordSignItem[];
  /** scan=仅扫码 / both=扫码+在线 */
  signRule?: string;
  canScanSign?: boolean;
}
 
export interface TmsRecordSignQrMode {
  modeCode: string;
  modeName: string;
}
 
export interface TmsRecordSignQr {
  recordId: string;
  taskId?: string;
  subject?: string;
  canScanSign?: boolean;
  signRule?: string;
  tip?: string;
  modes?: TmsRecordSignQrMode[];
  qrContent?: string;
  expireAt?: string;
}
 
/** 培训记录实时进度 */
export interface TmsRecordProgress {
  recordId?: string;
  taskId?: string;
  totalCount?: number;
  signedCount?: number;
  passedCount?: number;
  incompleteCount?: number;
  signRate?: number;
  passRate?: number;
  incompleteRate?: number;
  evalMode?: string;
}
 
/** 未完成人员行 */
export interface TmsRecordIncomplete {
  personTaskId?: string;
  userId?: string;
  userName?: string;
  deptId?: string;
  deptName?: string;
  bizStatus?: string;
  signTime?: string;
  examScore?: number | string;
  passFlag?: string;
  reason?: string;
}