LibraryTrack.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 "@/features/mark/store";
  12. import MarkHeader from "./MarkHeader.vue";
  13. import { useRoute } from "vue-router";
  14. import MarkBody from "./MarkBody.vue";
  15. import type { MarkStore, Task } from "@/types";
  16. import { message } from "ant-design-vue";
  17. import { getSingleLibraryTask } from "@/api/libraryTrackPage";
  18. const route = useRoute();
  19. let libraryId = route.query.libraryId;
  20. async function updateTask() {
  21. // const mkey = "fetch_task_key";
  22. message.info({ content: "获取任务中...", duration: 2 });
  23. let res = await getSingleStuTask();
  24. // message.success({ content: "获取成功", key: mkey });
  25. if (res.data.task) {
  26. store.setting.fileServer = res.data.fileServer;
  27. store.setting.splitConfig = res.data.splitConfig;
  28. store.setting.groupNumber = res.data.groupNumber;
  29. store.setting.uiSetting = {
  30. "answer.paper.scale": 1,
  31. "score.board.collapse": false,
  32. } as MarkStore["setting"]["uiSetting"];
  33. let task = res.data.task as Task;
  34. task.sliceUrls = task.sliceUrls.map(
  35. (s: string) => store.setting.fileServer + s
  36. );
  37. store.currentTask = task;
  38. if (store.currentTask)
  39. store.setting.subject = store.currentTask
  40. .subject as MarkStore["setting"]["subject"];
  41. } else {
  42. store.message = res.data.message;
  43. }
  44. }
  45. async function fetchTask() {
  46. await updateTask();
  47. }
  48. onMounted(async () => {
  49. await fetchTask();
  50. });
  51. async function getSingleStuTask() {
  52. return getSingleLibraryTask(libraryId as string);
  53. }
  54. const renderError = () => {
  55. store.currentTask = undefined;
  56. store.message = "加载失败,请重新加载。";
  57. };
  58. </script>
  59. <style scoped>
  60. .my-container {
  61. width: 100%;
  62. }
  63. </style>