Bläddra i källkod

问题卷:回评及状态更新

Michael Wang 4 år sedan
förälder
incheckning
9abe6832b7
3 ändrade filer med 37 tillägg och 16 borttagningar
  1. 6 1
      src/features/mark/Mark.vue
  2. 5 1
      src/features/mark/MarkHeader.vue
  3. 26 14
      src/features/mark/MarkProblemDialog.vue

+ 6 - 1
src/features/mark/Mark.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="my-container">
-    <mark-header />
+    <mark-header @should-reload-history="shouldReloadFunc" />
     <div class="tw-flex tw-gap-1">
       <mark-history :should-reload="shouldReloadHistory" />
       <mark-body @error="removeBrokenTask" />
@@ -165,6 +165,10 @@ export default defineComponent({
 
     const shouldReloadHistory = ref(0);
 
+    const shouldReloadFunc = () => {
+      shouldReloadHistory.value = Date.now();
+    };
+
     const saveTaskToServer = async () => {
       const markResult = findCurrentTaskMarkResult();
       if (!markResult) return;
@@ -206,6 +210,7 @@ export default defineComponent({
       showMarkBoardKeyBoard,
       showMarkBoardMouse,
       shouldReloadHistory,
+      shouldReloadFunc,
       removeBrokenTask,
     };
   },

+ 5 - 1
src/features/mark/MarkHeader.vue

@@ -174,7 +174,10 @@
   </div>
   <MarkChangeProfile ref="changeProfileRef" />
   <MarkSwitchGroupDialog ref="switchGroupRef" />
-  <MarkProblemDialog ref="problemRef" />
+  <MarkProblemDialog
+    @should-reload-history="$emit('should-reload-history')"
+    ref="problemRef"
+  />
 </template>
 
 <script lang="ts">
@@ -213,6 +216,7 @@ export default defineComponent({
     MarkSwitchGroupDialog,
     MarkProblemDialog,
   },
+  emits: ["should-reload-history"],
   setup() {
     const modeName = computed(() =>
       store.setting.mode === ModeEnum.TRACK ? "轨迹模式" : "普通模式"

+ 26 - 14
src/features/mark/MarkProblemDialog.vue

@@ -26,32 +26,44 @@
 </template>
 
 <script lang="ts">
-import { doProblemType } from "@/api/markPage";
+import { doProblemType, getStatus } from "@/api/markPage";
 import { message } from "ant-design-vue";
 import { ref, defineComponent } from "vue";
-import { store } from "./store";
+import { removeCurrentMarkResult, store } from "./store";
 
 export default defineComponent({
   name: "MarkProblemDialog",
-  setup() {
+  emits: ["should-reload-history"],
+  setup(props, { emit }) {
     const visible = ref(false);
 
     const showModal = () => {
       visible.value = true;
     };
 
+    // TODO: 和Mark.vue重复
+    const removeBrokenTask = () => {
+      removeCurrentMarkResult();
+      store.currentTask = undefined;
+      store.tasks.shift();
+    };
+
+    async function updateStatus() {
+      const res = await getStatus();
+      store.status = res.data;
+    }
+
     const chooseProblemType = async (problemId: number) => {
-      const res = await doProblemType(problemId).then((res) => {
-        if (res.data.success) {
-          message.success({ content: "问题卷处理成功", duration: 3 });
-          visible.value = false;
-          store.currentTask = undefined;
-          store.tasks.shift();
-          // todo: fetch next
-        } else {
-          message.error({ content: res.data.message || "错误", duration: 5 });
-        }
-      });
+      const res = await doProblemType(problemId);
+      if (res.data.success) {
+        message.success({ content: "问题卷处理成功", duration: 3 });
+        visible.value = false;
+        removeBrokenTask();
+        updateStatus();
+        emit("should-reload-history");
+      } else {
+        message.error({ content: res.data.message || "错误", duration: 5 });
+      }
     };
 
     const handleCancel = () => {