|
@@ -3,8 +3,10 @@
|
|
<mark-header />
|
|
<mark-header />
|
|
<div class="tw-flex tw-gap-1">
|
|
<div class="tw-flex tw-gap-1">
|
|
<mark-history
|
|
<mark-history
|
|
- @reload="reloadAndfetchTask"
|
|
|
|
- :should-reload="shouldReloadHistory"
|
|
|
|
|
|
+ v-if="!isSingleStudent"
|
|
|
|
+ :subjectCode="subjectCode"
|
|
|
|
+ orderTimeField="inspectTime"
|
|
|
|
+ :get-history="getInspectedHistory"
|
|
/>
|
|
/>
|
|
<mark-body @error="renderError" />
|
|
<mark-body @error="renderError" />
|
|
<MarkBoardInspect @inspect="saveTaskToServer" @reject="rejectQuestions" />
|
|
<MarkBoardInspect @inspect="saveTaskToServer" @reject="rejectQuestions" />
|
|
@@ -13,14 +15,14 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
-import { computed, onMounted, ref } from "vue";
|
|
|
|
|
|
+import { computed, onMounted, watch } from "vue";
|
|
import { isScanImage, store } from "@/features/mark/store";
|
|
import { isScanImage, store } from "@/features/mark/store";
|
|
import MarkHeader from "./MarkHeader.vue";
|
|
import MarkHeader from "./MarkHeader.vue";
|
|
import { useRoute } from "vue-router";
|
|
import { useRoute } from "vue-router";
|
|
import MarkBody from "./MarkBody.vue";
|
|
import MarkBody from "./MarkBody.vue";
|
|
-import MarkHistory from "./MarkHistory.vue";
|
|
|
|
|
|
+import MarkHistory from "@/features/mark/MarkHistory.vue";
|
|
import MarkBoardInspect from "./MarkBoardInspect.vue";
|
|
import MarkBoardInspect from "./MarkBoardInspect.vue";
|
|
-import type { MarkStore, Question, Task } from "@/types";
|
|
|
|
|
|
+import type { Question, Setting, Task } from "@/types";
|
|
import { message } from "ant-design-vue";
|
|
import { message } from "ant-design-vue";
|
|
import {
|
|
import {
|
|
clearInspectedTask,
|
|
clearInspectedTask,
|
|
@@ -30,7 +32,8 @@ import {
|
|
saveInspectedTask,
|
|
saveInspectedTask,
|
|
} from "@/api/libraryInspectPage";
|
|
} from "@/api/libraryInspectPage";
|
|
import { getPaper } from "@/api/jsonMark";
|
|
import { getPaper } from "@/api/jsonMark";
|
|
-import { getInspectedSetting } from "@/api/inspectPage";
|
|
|
|
|
|
+import { getInspectedSetting, getInspectedHistory } from "@/api/inspectPage";
|
|
|
|
+import EventBus from "@/plugins/eventBus";
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
let isSingleStudent = !!route.query.libraryId;
|
|
let isSingleStudent = !!route.query.libraryId;
|
|
@@ -48,12 +51,13 @@ async function updateSetting() {
|
|
const settingRes = await getInspectedSetting(subjectCode);
|
|
const settingRes = await getInspectedSetting(subjectCode);
|
|
store.setting.examType = settingRes.data.examType;
|
|
store.setting.examType = settingRes.data.examType;
|
|
store.setting.fileServer = settingRes.data.fileServer;
|
|
store.setting.fileServer = settingRes.data.fileServer;
|
|
- store.setting.userName = settingRes.data.userName;
|
|
|
|
store.setting.subject = settingRes.data.subject;
|
|
store.setting.subject = settingRes.data.subject;
|
|
|
|
+ store.setting.userName = settingRes.data.userName;
|
|
store.setting.uiSetting = {
|
|
store.setting.uiSetting = {
|
|
"answer.paper.scale": 1,
|
|
"answer.paper.scale": 1,
|
|
"score.board.collapse": false,
|
|
"score.board.collapse": false,
|
|
- } as MarkStore["setting"]["uiSetting"];
|
|
|
|
|
|
+ "normal.mode": "keyboard",
|
|
|
|
+ } as Setting["uiSetting"];
|
|
store.setting.splitConfig = settingRes.data.splitConfig;
|
|
store.setting.splitConfig = settingRes.data.splitConfig;
|
|
if (store.setting.subject?.paperUrl) {
|
|
if (store.setting.subject?.paperUrl) {
|
|
store.setting.subject.paperUrl =
|
|
store.setting.subject.paperUrl =
|
|
@@ -97,13 +101,21 @@ async function updateTask() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-const shouldReloadHistory = ref(0);
|
|
|
|
-
|
|
|
|
-async function reloadAndfetchTask() {
|
|
|
|
- await updateClearTask();
|
|
|
|
- await updateSetting();
|
|
|
|
- await fetchTask();
|
|
|
|
-}
|
|
|
|
|
|
+// async function reloadAndfetchTask() {
|
|
|
|
+// await updateClearTask();
|
|
|
|
+// await updateSetting();
|
|
|
|
+// await fetchTask();
|
|
|
|
+// }
|
|
|
|
+watch(
|
|
|
|
+ () => store.historyOpen,
|
|
|
|
+ async () => {
|
|
|
|
+ if (!store.historyOpen) {
|
|
|
|
+ await updateClearTask();
|
|
|
|
+ await updateSetting();
|
|
|
|
+ await fetchTask();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+);
|
|
|
|
|
|
async function fetchTask() {
|
|
async function fetchTask() {
|
|
!isSingleStudent && (await updateStatus());
|
|
!isSingleStudent && (await updateStatus());
|
|
@@ -111,8 +123,9 @@ async function fetchTask() {
|
|
}
|
|
}
|
|
|
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
- // await updateClearTask();
|
|
|
|
- // fetchTask(); // mark-header 会调用 (watchEffect)
|
|
|
|
|
|
+ await updateClearTask();
|
|
|
|
+ await updateSetting();
|
|
|
|
+ await fetchTask();
|
|
});
|
|
});
|
|
|
|
|
|
async function getSingleStuTask() {
|
|
async function getSingleStuTask() {
|
|
@@ -137,7 +150,7 @@ const saveTaskToServer = async () => {
|
|
store.currentTask = undefined;
|
|
store.currentTask = undefined;
|
|
if (!isSingleStudent) fetchTask();
|
|
if (!isSingleStudent) fetchTask();
|
|
} else {
|
|
} else {
|
|
- shouldReloadHistory.value = Date.now();
|
|
|
|
|
|
+ EventBus.emit("should-reload-history");
|
|
}
|
|
}
|
|
} else if (res.data.message) {
|
|
} else if (res.data.message) {
|
|
console.log(res.data.message);
|
|
console.log(res.data.message);
|
|
@@ -163,7 +176,7 @@ const rejectQuestions = async (questions: Array<Question>) => {
|
|
store.currentTask = undefined;
|
|
store.currentTask = undefined;
|
|
if (!isSingleStudent) fetchTask();
|
|
if (!isSingleStudent) fetchTask();
|
|
} else {
|
|
} else {
|
|
- shouldReloadHistory.value = Date.now();
|
|
|
|
|
|
+ EventBus.emit("should-reload-history");
|
|
}
|
|
}
|
|
} else if (res.data.message) {
|
|
} else if (res.data.message) {
|
|
console.log(res.data.message);
|
|
console.log(res.data.message);
|