Mark.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div class="my-container" @dblclick="saveTaskToServer">
  3. <mark-header />
  4. <div class="flex gap-1">
  5. <mark-history />
  6. <mark-body />
  7. </div>
  8. </div>
  9. </template>
  10. <script lang="ts">
  11. import { defineComponent, onMounted, watch } from "vue";
  12. import {
  13. clearMarkTask,
  14. getGroup,
  15. getSetting,
  16. getStatus,
  17. getTask,
  18. saveTask,
  19. updateUISetting,
  20. } from "@/api/markPage";
  21. import { store } from "./store";
  22. import MarkHeader from "./MarkHeader.vue";
  23. import MarkBody from "./MarkBody.vue";
  24. import { useTimers } from "@/setups/useTimers";
  25. import MarkHistory from "./MarkHistory.vue";
  26. export default defineComponent({
  27. name: "Mark",
  28. components: {
  29. MarkHeader,
  30. MarkBody,
  31. MarkHistory,
  32. },
  33. setup: () => {
  34. const { addInterval } = useTimers();
  35. async function updateMarkTask() {
  36. const settingRes = await clearMarkTask();
  37. }
  38. async function updateSetting() {
  39. const settingRes = await getSetting();
  40. settingRes.data.uiSetting["answer.paper.scale"] ||= 1;
  41. store.setting = settingRes.data;
  42. }
  43. async function updateStatus() {
  44. const res = await getStatus();
  45. store.status = res.data;
  46. }
  47. async function updateGroups() {
  48. const res = await getGroup();
  49. store.groups = res.data;
  50. }
  51. async function updateTask() {
  52. const res = await getTask();
  53. if (res.data.libraryId) {
  54. store.tasks.push(res.data);
  55. store.currentTask = store.tasks[0];
  56. }
  57. }
  58. // 5秒更新一次tasks
  59. // addInterval(() => {
  60. // // console.log("get task", store.tasks);
  61. // if (store.tasks.length < 3) {
  62. // updateTask();
  63. // }
  64. // }, 5 * 1000);
  65. onMounted(async () => {
  66. await updateMarkTask();
  67. updateSetting();
  68. updateStatus();
  69. updateGroups();
  70. updateTask();
  71. });
  72. watch(
  73. () => store.setting.uiSetting,
  74. () => {
  75. updateUISetting(undefined, store.setting.uiSetting);
  76. },
  77. { deep: true }
  78. );
  79. const saveTaskToServer = () => {
  80. console.log("save task to server");
  81. saveTask();
  82. };
  83. return { store, saveTaskToServer };
  84. },
  85. });
  86. </script>
  87. <style scoped>
  88. .my-container {
  89. width: 100%;
  90. }
  91. a {
  92. color: #42b983;
  93. }
  94. label {
  95. margin: 0 0.5em;
  96. font-weight: bold;
  97. }
  98. code {
  99. background-color: #eee;
  100. padding: 2px 4px;
  101. border-radius: 4px;
  102. color: #304455;
  103. }
  104. </style>