LibraryTrack.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div class="my-container">
  3. <mark-header />
  4. <div class="tw-flex tw-gap-1">
  5. <mark-body />
  6. </div>
  7. </div>
  8. </template>
  9. <script lang="ts">
  10. import { defineComponent, 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 { MarkStore, Task } from "@/types";
  16. import { message } from "ant-design-vue";
  17. import { getSingleLibraryTask } from "@/api/libraryTrackPage";
  18. export default defineComponent({
  19. name: "LibraryTrack",
  20. components: {
  21. MarkHeader,
  22. MarkBody,
  23. },
  24. setup: () => {
  25. const route = useRoute();
  26. let libraryId = route.query.libraryId;
  27. async function updateTask() {
  28. // const mkey = "fetch_task_key";
  29. message.info({ content: "获取任务中...", duration: 2 });
  30. let res = await getSingleStuTask();
  31. // message.success({ content: "获取成功", key: mkey });
  32. if (res.data.task) {
  33. store.setting.fileServer = res.data.fileServer;
  34. store.setting.splitConfig = res.data.splitConfig;
  35. store.setting.groupNumber = res.data.groupNumber;
  36. store.setting.uiSetting = {
  37. "answer.paper.scale": 1,
  38. "score.board.collapse": false,
  39. } as MarkStore["setting"]["uiSetting"];
  40. let task = res.data.task as Task;
  41. task.sliceUrls = task.sliceUrls.map(
  42. (s: string) => store.setting.fileServer + s
  43. );
  44. store.currentTask = task;
  45. if (store.currentTask)
  46. store.setting.subject = store.currentTask
  47. .subject as MarkStore["setting"]["subject"];
  48. } else {
  49. store.message = res.data.message;
  50. }
  51. }
  52. async function fetchTask() {
  53. await updateTask();
  54. }
  55. onMounted(async () => {
  56. await fetchTask();
  57. });
  58. async function getSingleStuTask() {
  59. return getSingleLibraryTask(libraryId as string);
  60. }
  61. return {
  62. store,
  63. fetchTask,
  64. };
  65. },
  66. });
  67. </script>
  68. <style scoped>
  69. .my-container {
  70. width: 100%;
  71. }
  72. a {
  73. color: #42b983;
  74. }
  75. label {
  76. margin: 0 0.5em;
  77. font-weight: bold;
  78. }
  79. code {
  80. background-color: #eee;
  81. padding: 2px 4px;
  82. border-radius: 4px;
  83. color: #304455;
  84. }
  85. </style>