Browse Source

优化fileServer prefix 处理

Michael Wang 3 years ago
parent
commit
a12f5a67a0

+ 3 - 11
src/features/arbitrate/Arbitrate.vue

@@ -48,12 +48,13 @@ import {
   saveArbitrateTask,
 } from "@/api/arbitratePage";
 import ArbitrateMarkList from "./ArbitrateMarkList.vue";
-import { ModeEnum, Setting, Task } from "@/types";
+import { Task } from "@/types";
 import AnswerModal from "../mark/AnswerModal.vue";
 import PaperModal from "../mark/PaperModal.vue";
 import { getPaper } from "@/api/jsonMark";
 import { getArbitrateHistory } from "@/api/arbitratePage";
 import EventBus from "@/plugins/eventBus";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const route = useRoute();
 let isSingleStudent = !!route.query.historyId;
@@ -112,16 +113,7 @@ async function updateTask() {
 
   if (res.data.libraryId) {
     let rawTask = res.data as Task;
-    rawTask.sliceUrls = rawTask.sliceUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.sheetUrls = rawTask.sheetUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.jsonUrl = store.setting.fileServer + rawTask.jsonUrl;
-    store.currentTask = res.data;
-    // if (store.currentTask)
-    //   store.setting.subject = store.currentTask.subject;
+    store.currentTask = addFileServerPrefixToTask(rawTask);
   } else {
     store.message = res.data.message;
   }

+ 2 - 11
src/features/library/inspect/LibraryInspect.vue

@@ -34,6 +34,7 @@ import {
 import { getPaper } from "@/api/jsonMark";
 import { getInspectedSetting, getInspectedHistory } from "@/api/inspectPage";
 import EventBus from "@/plugins/eventBus";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const route = useRoute();
 let isSingleStudent = !!route.query.libraryId;
@@ -84,17 +85,7 @@ async function updateTask() {
 
   if (res.data.libraryId) {
     let rawTask = res.data as Task;
-    rawTask.sliceUrls = rawTask.sliceUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.sheetUrls = rawTask.sheetUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.jsonUrl = store.setting.fileServer + rawTask.jsonUrl;
-    store.currentTask = res.data;
-    // if (store.currentTask)
-    //   store.setting.subject = store.currentTask
-    //     .subject as MarkStore["setting"]["subject"];
+    store.currentTask = addFileServerPrefixToTask(rawTask);
   } else {
     store.message = res.data.message;
   }

+ 3 - 10
src/features/library/libraryTrack/LibraryTrack.vue

@@ -21,6 +21,7 @@ import {
 } from "@/api/libraryTrackPage";
 import { getInspectedSetting } from "@/api/inspectPage";
 import { getPaper } from "@/api/jsonMark";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const route = useRoute();
 let libraryId = route.query.libraryId;
@@ -57,16 +58,8 @@ async function updateTask() {
     store.setting.splitConfig = res.data.splitConfig;
     store.setting.groupNumber = res.data.groupNumber;
 
-    let task = res.data.task as Task;
-
-    task.sliceUrls = task.sliceUrls?.map(
-      (s: string) => store.setting.fileServer + s
-    );
-
-    task.sheetUrls = task.sheetUrls?.map((s) => store.setting.fileServer + s);
-    task.jsonUrl = store.setting.fileServer + task.jsonUrl;
-
-    store.currentTask = task;
+    let rawTask = res.data as Task;
+    store.currentTask = addFileServerPrefixToTask(rawTask);
   } else {
     store.message = res.data.message;
   }

+ 3 - 12
src/features/mark/Mark.vue

@@ -63,7 +63,7 @@ import MinimapModal from "./MinimapModal.vue";
 import AllPaperModal from "./AllPaperModal.vue";
 import SheetViewModal from "./SheetViewModal.vue";
 import SpecialTagModal from "./SpecialTagModal.vue";
-import { preDrawImage } from "@/utils/utils";
+import { addFileServerPrefixToTask, preDrawImage } from "@/utils/utils";
 import { getPaper } from "@/api/jsonMark";
 import EventBus from "@/plugins/eventBus";
 import { getHistoryTask } from "@/api/markPage";
@@ -113,17 +113,8 @@ async function updateTask() {
   const res = await getTask();
   if (res.data.libraryId) {
     let rawTask = res.data as Task;
-    rawTask.sliceUrls = rawTask.sliceUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.sheetUrls = rawTask.sheetUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.jsonUrl = store.setting.fileServer + rawTask.jsonUrl;
-    //         for (const sliceUrl of (res.data as Task).sliceUrls) {
-    //   fetch(store.setting.fileServer + sliceUrl);
-    // }
-    store.tasks.push(res.data);
+    const newTask = addFileServerPrefixToTask(rawTask);
+    store.tasks.push(newTask);
     if (!store.historyOpen) {
       // 在正评中,才能替换task
       // TODO: 疑似替换多次引起重新渲染

+ 3 - 14
src/features/mark/MarkHistory.vue

@@ -131,6 +131,7 @@ import {
 } from "@ant-design/icons-vue";
 import { cloneDeep } from "lodash";
 import EventBus from "@/plugins/eventBus";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const props = withDefaults(
   defineProps<{
@@ -207,13 +208,7 @@ EventBus.on("should-reload-history", async () => {
     });
     if (res.data) {
       let data = cloneDeep(res.data) as Array<Task>;
-      data = data.map((t) => {
-        t.sliceUrls = t.sliceUrls?.map((s) => store.setting.fileServer + s);
-        t.sheetUrls = t.sheetUrls?.map((s) => store.setting.fileServer + s);
-        t.jsonUrl = store.setting.fileServer + t.jsonUrl;
-
-        return t;
-      });
+      data = data.map(addFileServerPrefixToTask);
       if (store.currentTask) {
         const indexOfTasks = store.historyTasks.indexOf(store.currentTask);
         if (data[0]) {
@@ -253,13 +248,7 @@ async function updateHistoryTask({
   loading = false;
   if (res.data) {
     let data = cloneDeep(res.data) as Array<Task>;
-    data = data.map((t) => {
-      t.sliceUrls = t.sliceUrls?.map((s) => store.setting.fileServer + s);
-      t.sheetUrls = t.sheetUrls?.map((s) => store.setting.fileServer + s);
-      t.jsonUrl = store.setting.fileServer + t.jsonUrl;
-
-      return t;
-    });
+    data = data.map(addFileServerPrefixToTask);
     store.historyTasks = data;
     replaceCurrentTask(store.historyTasks[0]);
   }

+ 2 - 7
src/features/student/importInspect/ImportInspect.vue

@@ -28,6 +28,7 @@ import MarkBody from "../inspect/MarkBody.vue";
 import MarkBoardInspect from "./MarkBoardInspect.vue";
 import type { Task, Setting } from "@/types";
 import { message } from "ant-design-vue";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const route = useRoute();
 let isSingleStudent = !!route.query.studentId;
@@ -75,13 +76,7 @@ async function updateTask() {
 
   if (res.data.studentId) {
     let rawTask = res.data as Task;
-    rawTask.sliceUrls = rawTask.sliceUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.sheetUrls = rawTask.sheetUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    store.currentTask = res.data;
+    store.currentTask = addFileServerPrefixToTask(rawTask);
     store.setting.subject = res.data.subject;
   } else {
     store.message = res.data.message;

+ 2 - 10
src/features/student/inspect/Inspect.vue

@@ -36,6 +36,7 @@ import { message } from "ant-design-vue";
 import { getPaper } from "@/api/jsonMark";
 import { getInspectedHistory } from "@/api/inspectPage";
 import EventBus from "@/plugins/eventBus";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const route = useRoute();
 let isSingleStudent = !!route.query.studentId;
@@ -109,17 +110,8 @@ async function updateTask() {
 
   if (res.data.studentId) {
     let rawTask = res.data as Task;
-    rawTask.sliceUrls = rawTask.sliceUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.sheetUrls = rawTask.sheetUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.jsonUrl = store.setting.fileServer + rawTask.jsonUrl;
-    store.currentTask = res.data;
+    store.currentTask = addFileServerPrefixToTask(rawTask);
     if (res.data.subject) store.setting.subject = res.data.subject;
-    // if (store.currentTask)
-    //   Object.assign(store.setting.subject, store.currentTask.subject);
   } else {
     store.message = res.data.message;
   }

+ 2 - 8
src/features/student/studentTrack/StudentTrack.vue

@@ -29,6 +29,7 @@ import { message } from "ant-design-vue";
 import { getSingleStudentTask } from "@/api/studentTrackPage";
 import { getInspectedSetting } from "@/api/inspectPage";
 import { getPaper } from "@/api/jsonMark";
+import { addFileServerPrefixToTask } from "@/utils/utils";
 
 const route = useRoute();
 let studentId = route.query.studentId;
@@ -61,14 +62,7 @@ async function updateTask() {
 
   if (res.data.studentId) {
     let rawTask = res.data as Task;
-    rawTask.sliceUrls = rawTask.sliceUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.sheetUrls = rawTask.sheetUrls?.map(
-      (s) => store.setting.fileServer + s
-    );
-    rawTask.jsonUrl = store.setting.fileServer + rawTask.jsonUrl;
-    store.currentTask = res.data;
+    store.currentTask = addFileServerPrefixToTask(rawTask);
   } else {
     store.message = res.data.message;
   }

+ 11 - 0
src/utils/utils.ts

@@ -230,3 +230,14 @@ export async function preDrawImage(_currentTask: Task) {
     }
   }
 }
+
+export function addFileServerPrefixToTask(rawTask: Task): Task {
+  const newTask = JSON.parse(JSON.stringify(rawTask)) as Task;
+
+  const fileServer = store.setting.fileServer;
+  newTask.sliceUrls = newTask.sliceUrls?.map((s) => fileServer + s);
+  newTask.sheetUrls = newTask.sheetUrls?.map((s) => fileServer + s);
+  newTask.jsonUrl = fileServer + newTask.jsonUrl;
+
+  return newTask;
+}