| | |
| | | import type { QuestionBankOption } from '#/views/x/tms/question/types'; |
| | | import type { SelfTestPaper, SelfTestStartPayload } from '#/views/x/tms/selfTest/types'; |
| | | import type { |
| | | SelfTestPaper, |
| | | SelfTestStartPayload, |
| | | SelfTestSubmitPayload, |
| | | SelfTestSubmitResult, |
| | | SelfTestRecordItem, |
| | | } from '#/views/x/tms/selfTest/types'; |
| | | |
| | | import { defHttp } from '#/api/request'; |
| | | import { getQuestionBanks } from '#/api/x/tms/question'; |
| | | import { mockStartSelfTest } from '#/views/x/tms/selfTest/mock'; |
| | | |
| | | /** 后端未就绪前走 mock;联调后改为 false */ |
| | | const USE_MOCK = true; |
| | | /** 正式路径:/api/tms/self-test/** */ |
| | | const prefix = '/api/tms/self-test'; |
| | | |
| | | 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 getSelfTestBanks() { |
| | | return getQuestionBanks() as Promise<QuestionBankOption[]>; |
| | | } |
| | | |
| | | export function startSelfTest(data: SelfTestStartPayload) { |
| | | if (USE_MOCK) return mockStartSelfTest(data); |
| | | return defHttp.post<SelfTestPaper>({ url: `${prefix}/start`, data }); |
| | | return unwrapData<SelfTestPaper>(defHttp.post({ url: `${prefix}/start`, data })); |
| | | } |
| | | |
| | | /** 暂存作答(不交卷,便于继续考试) */ |
| | | export function saveSelfTest(paperId: string, data: SelfTestSubmitPayload) { |
| | | return unwrapData<string>(defHttp.post({ url: `${prefix}/${paperId}/save`, data })); |
| | | } |
| | | |
| | | export function submitSelfTest(paperId: string, data: SelfTestSubmitPayload) { |
| | | return unwrapData<SelfTestSubmitResult>(defHttp.post({ url: `${prefix}/${paperId}/submit`, data })); |
| | | } |
| | | |
| | | export function getSelfTestList(params?: { |
| | | currentPage?: number; |
| | | pageSize?: number; |
| | | bankId?: string; |
| | | testStatus?: string; |
| | | startTimeBegin?: string; |
| | | startTimeEnd?: string; |
| | | }) { |
| | | return unwrapData<{ list: SelfTestRecordItem[]; pagination: Record<string, any> }>( |
| | | defHttp.get({ url: `${prefix}/list`, params }), |
| | | ); |
| | | } |
| | | |
| | | export function getSelfTestInfo(id: string) { |
| | | return unwrapData<SelfTestPaper>(defHttp.get({ url: `${prefix}/${id}` })); |
| | | } |