store.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { ModeEnum, Setting, MarkStore, Task } from "@/types";
  2. import { reactive } from "vue";
  3. const obj = {
  4. setting: {
  5. mode: "TRACK",
  6. examType: "SCAN_IMAGE",
  7. forceMode: false,
  8. sheetView: false,
  9. sheetConfig: [],
  10. enableAllZero: false,
  11. fileServer: "",
  12. marker: <Setting["marker"]>{},
  13. subject: <Setting["subject"]>{},
  14. forceSpecialTag: false,
  15. uiSetting: <Setting["uiSetting"]>{},
  16. statusValue: "FORMAL",
  17. problemTypes: [],
  18. groupNumber: 0,
  19. topCount: 0,
  20. splitConfig: [],
  21. prefetchCount: 3,
  22. startTime: 0,
  23. endTime: 0,
  24. },
  25. status: <MarkStore["status"]>{},
  26. groups: [],
  27. tasks: [],
  28. currentTask: <Task>{},
  29. currentQuestion: undefined,
  30. currentScore: undefined,
  31. markResults: [],
  32. historyOpen: false,
  33. markBoardCollapse: false,
  34. historyTasks: [],
  35. } as MarkStore;
  36. /** 保存setting和task */
  37. export function saveSetting(settingRes: Setting) {
  38. store.setting = settingRes;
  39. }
  40. /** 切换评分模式 */
  41. export function toggleMode() {
  42. store.setting.mode =
  43. store.setting.mode === ModeEnum.TRACK ? ModeEnum.COMMON : ModeEnum.TRACK;
  44. // 切换模式会清除当前任务的打分
  45. }
  46. export function findCurrentTaskMarkResult() {
  47. if (!store.currentTask) return;
  48. const { libraryId, studentId } = store.currentTask;
  49. const statusValue = store.setting.statusValue;
  50. return store.markResults.find(
  51. (m) =>
  52. m.libraryId === libraryId &&
  53. m.studentId === studentId &&
  54. m.statusValue === statusValue
  55. );
  56. }
  57. /** 给当前任务评分 */
  58. export function markScore() {}
  59. export const store = reactive(obj);