| | |
| | | import type { |
| | | GradeExamDetail, |
| | | GradeExamListItem, |
| | | GradeSessionListItem, |
| | | GradeSessionPageQuery, |
| | | GradeSubmitPayload, |
| | | } from '#/views/x/tms/examGrade/types'; |
| | | |
| | | import { defHttp } from '#/api/request'; |
| | | import { |
| | | mockGetGradeExamDetail, |
| | | mockGetGradeSession, |
| | | mockQueryGradeExams, |
| | | mockQueryGradeSessions, |
| | | mockSubmitGrade, |
| | | } from '#/views/x/tms/examGrade/mock'; |
| | | |
| | | /** 后端未就绪前走 mock;联调后改为 false */ |
| | | const USE_MOCK = true; |
| | | const prefix = '/api/tms/exam-grade'; |
| | | |
| | | async function unwrapData<T>(promise: Promise<any>): Promise<T> { |
| | | const res = await promise; |
| | | if (res && typeof res === 'object' && 'data' in res && ('code' in res || 'msg' in res)) { |
| | | return res.data as T; |
| | | } |
| | | return res as T; |
| | | } |
| | | |
| | | export function getGradeSessionList(params: GradeSessionPageQuery) { |
| | | if (USE_MOCK) return mockQueryGradeSessions(params); |
| | | return defHttp.get({ url: `${prefix}/sessions`, params }); |
| | | return unwrapData<{ list: GradeSessionListItem[]; pagination: Record<string, any> }>( |
| | | defHttp.get({ url: `${prefix}/sessions`, params }), |
| | | ); |
| | | } |
| | | |
| | | export function getGradeSessionInfo(id: string) { |
| | | if (USE_MOCK) return mockGetGradeSession(id); |
| | | return defHttp.get<GradeSessionListItem>({ url: `${prefix}/sessions/${id}` }); |
| | | return unwrapData<GradeSessionListItem>(defHttp.get({ url: `${prefix}/sessions/${id}` })); |
| | | } |
| | | |
| | | export function getGradeExamList(sessionId: string) { |
| | | if (USE_MOCK) return mockQueryGradeExams(sessionId); |
| | | return defHttp.get({ url: `${prefix}/sessions/${sessionId}/exams` }); |
| | | return unwrapData<GradeExamListItem[]>( |
| | | defHttp.get({ url: `${prefix}/sessions/${sessionId}/exams` }), |
| | | ); |
| | | } |
| | | |
| | | export function getGradeExamDetail(examId: string) { |
| | | if (USE_MOCK) return mockGetGradeExamDetail(examId); |
| | | return defHttp.get<GradeExamDetail>({ url: `${prefix}/exams/${examId}` }); |
| | | return unwrapData<GradeExamDetail>(defHttp.get({ url: `${prefix}/exams/${examId}` })); |
| | | } |
| | | |
| | | export function submitGrade(data: GradeSubmitPayload) { |
| | | if (USE_MOCK) return mockSubmitGrade(data); |
| | | return defHttp.post({ url: `${prefix}/exams/${data.examId}/submit`, data }); |
| | | return unwrapData<{ |
| | | examId: string; |
| | | subjectiveScore?: number; |
| | | totalScore?: number; |
| | | passFlag?: string; |
| | | gradeStatus?: string; |
| | | nextExamId?: string; |
| | | }>(defHttp.post({ url: `${prefix}/exams/${data.examId}/submit`, data })); |
| | | } |