Przeglądaj źródła

保存模式和UISetting

Michael Wang 4 lat temu
rodzic
commit
eac46fc4bb

+ 8 - 8
src/App.vue

@@ -4,17 +4,17 @@
 
 
 <script lang="ts">
 <script lang="ts">
 import { defineComponent } from "vue";
 import { defineComponent } from "vue";
-import TestStatus from "./test/TestStatus.vue";
-import TestSetting from "./test/TestSetting.vue";
-import TestStore from "./test/TestStore.vue";
+// import TestStatus from "./test/TestStatus.vue";
+// import TestSetting from "./test/TestSetting.vue";
+// import TestStore from "./test/TestStore.vue";
 
 
 export default defineComponent({
 export default defineComponent({
   name: "App",
   name: "App",
-  components: {
-    TestStatus,
-    TestSetting,
-    TestStore,
-  },
+  // components: {
+  //   TestStatus,
+  //   TestSetting,
+  //   TestStore,
+  // },
   // setup() {
   // setup() {
   //   console.log("inside App.vue setup");
   //   console.log("inside App.vue setup");
   // },
   // },

+ 1 - 1
src/api/markPage.ts

@@ -35,7 +35,7 @@ export async function updateUISetting(
 ) {
 ) {
   const form = new FormData();
   const form = new FormData();
   uiSetting && form.append("uiSetting", JSON.stringify(uiSetting));
   uiSetting && form.append("uiSetting", JSON.stringify(uiSetting));
-  mode && form.append("mode", JSON.stringify(mode));
+  mode && form.append("mode", mode);
   return httpApp.post("/mark/updateSetting", form);
   return httpApp.post("/mark/updateSetting", form);
 }
 }
 
 

+ 4 - 4
src/components/mark/Mark.vue

@@ -34,6 +34,7 @@ import MarkBoardTrack from "./MarkBoardTrack.vue";
 import { ModeEnum, Setting } from "@/types";
 import { ModeEnum, Setting } from "@/types";
 import MarkBoardKeyBoard from "./MarkBoardKeyBoard.vue";
 import MarkBoardKeyBoard from "./MarkBoardKeyBoard.vue";
 import MarkBoardMouse from "./MarkBoardMouse.vue";
 import MarkBoardMouse from "./MarkBoardMouse.vue";
+import { isEmpty } from "lodash";
 
 
 export default defineComponent({
 export default defineComponent({
   name: "Mark",
   name: "Mark",
@@ -55,8 +56,7 @@ export default defineComponent({
     async function updateSetting() {
     async function updateSetting() {
       const settingRes = await getSetting();
       const settingRes = await getSetting();
       // settingRes.data.uiSetting["answer.paper.scale"] ||= 1;
       // settingRes.data.uiSetting["answer.paper.scale"] ||= 1;
-      // TODO: 要求后台清空旧数据 重置旧设置
-      if (settingRes.data.uiSetting["image.view.scale"]) {
+      if (isEmpty(settingRes.data.uiSetting)) {
         settingRes.data.uiSetting = {
         settingRes.data.uiSetting = {
           "answer.paper.scale": 1,
           "answer.paper.scale": 1,
           "score.board.collapse": false,
           "score.board.collapse": false,
@@ -103,9 +103,9 @@ export default defineComponent({
     });
     });
 
 
     watch(
     watch(
-      () => store.setting.uiSetting,
+      () => [store.setting.uiSetting, store.setting.mode],
       () => {
       () => {
-        updateUISetting(undefined, store.setting.uiSetting);
+        updateUISetting(store.setting.mode, store.setting.uiSetting);
       },
       },
       { deep: true }
       { deep: true }
     );
     );

+ 12 - 1
src/components/mark/MarkBoardMouse.vue

@@ -53,6 +53,7 @@
 
 
 <script lang="ts">
 <script lang="ts">
 import { Question } from "@/types";
 import { Question } from "@/types";
+import { isNumber } from "lodash";
 import { defineComponent, watch } from "vue";
 import { defineComponent, watch } from "vue";
 import { findCurrentTaskMarkResult, store } from "./store";
 import { findCurrentTaskMarkResult, store } from "./store";
 
 
@@ -85,7 +86,17 @@ export default defineComponent({
     }
     }
 
 
     function submit() {
     function submit() {
-      emit("submit");
+      const errors: any = [];
+      store.currentTask?.questionList.forEach((question, index) => {
+        if (!isNumber(question.score)) {
+          errors.push({ question, index, error: "没有赋分不能提交" });
+        }
+      });
+      if (errors.length === 0) {
+        emit("submit");
+      } else {
+        console.log(errors);
+      }
     }
     }
 
 
     return {
     return {

+ 11 - 1
src/components/mark/MarkBoardTrack.vue

@@ -148,7 +148,17 @@ export default defineComponent({
     });
     });
 
 
     function submit() {
     function submit() {
-      emit("submit");
+      const errors: any = [];
+      store.currentTask?.questionList.forEach((question, index) => {
+        if (!isNumber(question.score)) {
+          errors.push({ question, index, error: "没有赋分不能提交" });
+        }
+      });
+      if (errors.length === 0) {
+        emit("submit");
+      } else {
+        console.log(errors);
+      }
     }
     }
 
 
     return {
     return {

+ 0 - 1
src/components/mark/MarkBody.vue

@@ -318,7 +318,6 @@ export default defineComponent({
         return;
         return;
       const target = event.target as HTMLImageElement;
       const target = event.target as HTMLImageElement;
       const track = {} as Track;
       const track = {} as Track;
-      // TODO: choose question first
       track.mainNumber = store.currentQuestion?.mainNumber;
       track.mainNumber = store.currentQuestion?.mainNumber;
       track.subNumber = store.currentQuestion?.subNumber;
       track.subNumber = store.currentQuestion?.subNumber;
       track.number = Math.round(Math.random() * 10000000);
       track.number = Math.round(Math.random() * 10000000);