LibraryTrack.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <div class="my-container">
  3. <mark-header />
  4. <div class="tw-flex tw-gap-1">
  5. <mark-body @error="renderError" />
  6. </div>
  7. </div>
  8. </template>
  9. <script setup lang="ts">
  10. import { onMounted } from "vue";
  11. import { store } from "@/store/store";
  12. import MarkHeader from "./MarkHeader.vue";
  13. import { useRoute } from "vue-router";
  14. import MarkBody from "./MarkBody.vue";
  15. import type { Task } from "@/types";
  16. import { message } from "ant-design-vue";
  17. import {
  18. getSingleLibraryTask,
  19. getSingleLibraryTaskTrial,
  20. } from "@/api/libraryTrackPage";
  21. import { getInspectedSetting } from "@/api/inspectPage";
  22. import { getPaper } from "@/api/jsonMark";
  23. import { addFileServerPrefixToTask } from "@/utils/utils";
  24. const route = useRoute();
  25. let libraryId = route.query.libraryId;
  26. let subjectCode = route.query.subjectCode;
  27. async function updateSetting() {
  28. const settingRes = await getInspectedSetting(subjectCode as string);
  29. const { examType, fileServer, subject, userName, splitConfig } =
  30. settingRes.data;
  31. store.initSetting({
  32. examType,
  33. fileServer,
  34. subject,
  35. userName,
  36. splitConfig,
  37. });
  38. if (store.setting.subject?.paperUrl && store.isMultiMedia) {
  39. await getPaper(store);
  40. }
  41. }
  42. async function updateTask() {
  43. const mkey = "fetch_task_key";
  44. message.info({ content: "获取任务中...", duration: 1.5, key: mkey });
  45. let res = await getSingleStuTask();
  46. message.success({
  47. content: res.data.task.libraryId ? "获取成功" : "无任务",
  48. key: mkey,
  49. });
  50. if (res.data.task) {
  51. store.setting.fileServer = res.data.fileServer;
  52. store.setting.splitConfig = res.data.splitConfig;
  53. store.setting.groupNumber = res.data.groupNumber;
  54. let rawTask = res.data.task as Task;
  55. store.currentTask = addFileServerPrefixToTask(rawTask);
  56. } else {
  57. store.message = res.data.message;
  58. }
  59. }
  60. async function fetchTask() {
  61. await updateTask();
  62. }
  63. onMounted(async () => {
  64. await updateSetting();
  65. await fetchTask();
  66. });
  67. async function getSingleStuTask() {
  68. if (route.name === "TrialRoute") {
  69. return getSingleLibraryTaskTrial(libraryId as string);
  70. } else {
  71. return getSingleLibraryTask(libraryId as string);
  72. }
  73. }
  74. const renderError = () => {
  75. store.currentTask = undefined;
  76. store.message = "加载失败,请重新加载。";
  77. };
  78. </script>
  79. <style scoped>
  80. .my-container {
  81. width: 100%;
  82. overflow: clip;
  83. }
  84. </style>