exam.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import axios, { ResponseType } from 'axios'
  2. import { EXAM_MODULE } from './prefix'
  3. import {
  4. ExamSerializer,
  5. ReceivedData,
  6. Pageable,
  7. ID,
  8. ExamQuestionSerializer,
  9. LocalDateTime,
  10. ExamState,
  11. PageSerializer,
  12. ExamListSerializer
  13. } from '@/api/types'
  14. export const createExam = (exam: ExamSerializer) => {
  15. return axios.post<ReceivedData>(`${EXAM_MODULE}`, exam)
  16. }
  17. export const getAllExamList = (page: Pageable) => {
  18. return axios.get<ReceivedData<ExamListSerializer>>(
  19. `${EXAM_MODULE}/list?pageSize=${page.pageSize}&pageNum=${page.pageNum}`
  20. )
  21. }
  22. export const getExamById = (examId: ID) => {
  23. return axios.get<ReceivedData<ExamSerializer>>(`${EXAM_MODULE}/${examId}`)
  24. }
  25. export const extendExamTime = (examId: ID, endTime: LocalDateTime) => {
  26. return axios.put<ReceivedData>(
  27. `${EXAM_MODULE}/${examId}/time?endTime=${endTime}`
  28. )
  29. }
  30. export const getExamQuestions = (examId: ID) => {
  31. return axios.get<ReceivedData<ExamQuestionSerializer>>(
  32. `${EXAM_MODULE}/${examId}/question`
  33. )
  34. }
  35. export const joinExamByInviteCode = (inviteCode: string, examId: ID) => {
  36. return axios.put<ReceivedData>(
  37. `${EXAM_MODULE}/invite/code?inviteCode=${inviteCode}&examId=${examId}`
  38. )
  39. }
  40. export const setExamPaperFromSample = (examId: ID, sampleExamPaperId: ID) => {
  41. return axios.post<ReceivedData>(
  42. `${EXAM_MODULE}/question/sample/${examId}/?sampleExamPaperId=${sampleExamPaperId}`
  43. )
  44. }
  45. export const getExamsByStudentId = (page: Pageable, state: ExamState) => {
  46. return axios.get<ReceivedData<ExamListSerializer>>(
  47. `${EXAM_MODULE}/student/exams?pageSize=${page.pageSize}&pageNum=${page.pageNum}&state=${state}`
  48. )
  49. }
  50. export const getExamsByTeacherId = (page: Pageable, state: ExamState) => {
  51. return axios.get<ReceivedData<ExamListSerializer>>(
  52. `${EXAM_MODULE}/teacher/exams?pageSize=${page.pageSize}&pageNum=${page.pageNum}&state=${state}`
  53. )
  54. }