/**
|
* 我的试卷 / 在线考试答卷状态(与后端 TmsExamStatus 一致)
|
* - notStarted:未开考(待考壳已生成,尚未点开考)
|
* - doing:答题中
|
* - submitted:已交卷
|
* (cancelled 一般不出现在「我的试卷」列表)
|
*/
|
export type MyPaperStatus = 'notStarted' | 'doing' | 'submitted';
|
|
/** 列表行:我的试卷 */
|
export interface MyPaperListItem {
|
id: string;
|
paperId: string;
|
paperName: string;
|
/** 答卷状态:notStarted / doing / submitted */
|
status: MyPaperStatus;
|
examStart?: string;
|
examEnd?: string;
|
/** 展示用考试时间文案 */
|
examTimeText?: string;
|
totalScore: number;
|
passScore?: number;
|
durationMin?: number;
|
/** 已交卷时的得分 */
|
gotScore?: number;
|
/** 1合格 / 0不合格 / pass/fail / 空=未出结果 */
|
passFlag?: string;
|
examId?: string;
|
/** 当前/最近一次考试序号,1=首考 */
|
attemptNo?: number;
|
/** 首考 / 补考(第1次)…(补考序号不含首考) */
|
attemptLabel?: string;
|
submittedCount?: number;
|
retakeLimit?: number;
|
remainingRetakes?: number;
|
canRetake?: boolean;
|
}
|
|
export interface MyPaperPageQuery {
|
currentPage?: number;
|
pageSize?: number;
|
keyword?: string;
|
status?: MyPaperStatus | '';
|
/** pass/fail(兼容 1/0)/ none未出结果 */
|
passFlag?: string;
|
/** first首考 / retake补考 */
|
attemptType?: 'first' | 'retake' | '';
|
/** 1可补考 / 0不可补考 */
|
canRetake?: '0' | '1' | '';
|
examTimeFrom?: string;
|
examTimeTo?: string;
|
}
|
|
/** 开考后试卷内容 */
|
export interface OnlineExamPaper {
|
examId: string;
|
paperId: string;
|
paperName: string;
|
totalScore: number;
|
passScore?: number;
|
durationMin?: number;
|
/** 开考时间,倒计时按此续算 */
|
startTime?: string;
|
/** 服务端剩余秒数 */
|
remainSeconds?: number | null;
|
/** 开考接口发现已超时并完成自动交卷 */
|
autoSubmitted?: boolean;
|
attemptNo?: number;
|
attemptLabel?: string;
|
questions: OnlineExamQuestionItem[];
|
}
|
|
export type OnlineQuestionType = 'single' | 'multi' | 'judge' | 'blank' | 'essay';
|
|
export interface OnlineExamQuestionItem {
|
id: string;
|
questionId?: string;
|
questionNo?: string;
|
questionType: OnlineQuestionType;
|
stem: string;
|
score: number;
|
gotScore?: number | null;
|
userAnswer?: string;
|
options: { optionLabel: string; optionContent: string; isCorrect?: '0' | '1' }[];
|
/** 交卷后回填 */
|
right?: boolean | null;
|
correctAnswer?: string;
|
/** 试题解析(回顾) */
|
analysis?: string;
|
subjective?: boolean;
|
}
|
|
export interface OnlineExamSubmitResult {
|
objectiveScore?: number;
|
totalScore?: number;
|
passFlag?: string;
|
gradeStatus?: string;
|
pendingGrade?: boolean;
|
items?: {
|
id: string;
|
correctAnswer?: string;
|
analysis?: string;
|
gotScore?: number | null;
|
right?: boolean | null;
|
subjective?: boolean;
|
}[];
|
}
|
|
export interface OnlineExamAttempt {
|
examId: string;
|
attemptNo?: number;
|
attemptLabel?: string;
|
status?: MyPaperStatus;
|
gradeStatus?: string;
|
startTime?: string;
|
submitTime?: string;
|
gotScore?: number | null;
|
passFlag?: string;
|
}
|
|
export interface OnlineExamDetail {
|
id: string;
|
paperId: string;
|
paperName: string;
|
status: MyPaperStatus;
|
examTimeText?: string;
|
totalScore: number;
|
passScore?: number;
|
durationMin?: number;
|
gotScore?: number;
|
startTime?: string;
|
submitTime?: string;
|
passFlag?: string;
|
gradeStatus?: string;
|
examId?: string;
|
attemptNo?: number;
|
attemptLabel?: string;
|
submittedCount?: number;
|
retakeLimit?: number;
|
remainingRetakes?: number;
|
canRetake?: boolean;
|
/** 历史答卷 */
|
attempts?: OnlineExamAttempt[];
|
/** 已交卷回顾 */
|
questions?: OnlineExamQuestionItem[];
|
}
|