Michael Wang 4 роки тому
батько
коміт
4ab71907a9

+ 23 - 2
src/features/mark/Mark.vue

@@ -4,12 +4,21 @@
     <div class="tw-flex tw-gap-1">
       <mark-history :should-reload="shouldReloadHistory" />
       <mark-body @error="removeBrokenTask" />
-      <mark-board-track v-if="showMarkBoardTrack" @submit="saveTaskToServer" />
+      <mark-board-track
+        v-if="showMarkBoardTrack"
+        @submit="saveTaskToServer"
+        @allZeroSubmit="allZeroSubmit"
+      />
       <mark-board-key-board
         v-if="showMarkBoardKeyBoard"
         @submit="saveTaskToServer"
+        @allZeroSubmit="allZeroSubmit"
+      />
+      <mark-board-mouse
+        v-if="showMarkBoardMouse"
+        @submit="saveTaskToServer"
+        @allZeroSubmit="allZeroSubmit"
       />
-      <mark-board-mouse v-if="showMarkBoardMouse" @submit="saveTaskToServer" />
     </div>
   </div>
 </template>
@@ -180,6 +189,17 @@ export default defineComponent({
       shouldReloadHistory.value = Date.now();
     };
 
+    const allZeroSubmit = async () => {
+      const markResult = findCurrentTaskMarkResult();
+      if (!markResult) return;
+
+      markResult.markerScore = 0;
+      const ss = new Array(store.currentTask?.questionList.length);
+      markResult.scoreList = ss.fill(0);
+      markResult.trackList = [];
+
+      await saveTaskToServer();
+    };
     const saveTaskToServer = async () => {
       const markResult = findCurrentTaskMarkResult();
       if (!markResult) return;
@@ -241,6 +261,7 @@ export default defineComponent({
     return {
       store,
       updateTask,
+      allZeroSubmit,
       saveTaskToServer,
       showMarkBoardTrack,
       showMarkBoardKeyBoard,

+ 13 - 1
src/features/mark/MarkBoardKeyBoard.vue

@@ -21,6 +21,18 @@
       </h1>
     </div>
 
+    <div class="tw-mb-2 tw-flex tw-place-content-center">
+      <qm-button
+        type="primary"
+        shape="round"
+        size="large"
+        @click="$emit('allZeroSubmit')"
+        v-if="store.setting.enableAllZero"
+      >
+        全零分
+      </qm-button>
+    </div>
+
     <div v-if="store.currentTask && store.currentTask.questionList">
       <template
         v-for="(question, index) in store.currentTask?.questionList"
@@ -80,7 +92,7 @@ import { DownOutlined } from "@ant-design/icons-vue";
 
 export default defineComponent({
   name: "MarkBoardKeyBoard",
-  emits: ["submit"],
+  emits: ["submit", "allZeroSubmit"],
   components: { DownOutlined },
   setup(props, { emit }) {
     const { toggleKeyMouse } = keyMouse();

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

@@ -21,6 +21,17 @@
       </h1>
     </div>
     <div class="tw-flex tw-place-content-center tw-mb-2">
+      <qm-button
+        type="primary"
+        shape="round"
+        size="large"
+        @click="$emit('allZeroSubmit')"
+        style="margin-right: 20px !important"
+        v-if="store.setting.enableAllZero"
+      >
+        全零分
+      </qm-button>
+
       <qm-button type="primary" shape="round" size="large" @click="submit">
         提交
       </qm-button>
@@ -67,7 +78,7 @@ import { DownOutlined } from "@ant-design/icons-vue";
 
 export default defineComponent({
   name: "MarkBoardMouse",
-  emits: ["submit"],
+  emits: ["submit", "allZeroSubmit"],
   components: { DownOutlined },
   setup(props, { emit }) {
     const { toggleKeyMouse } = keyMouse();

+ 12 - 1
src/features/mark/MarkBoardTrack.vue

@@ -10,6 +10,17 @@
       </h1>
     </div>
     <div class="tw-mb-2 tw-flex tw-place-content-center">
+      <qm-button
+        type="primary"
+        shape="round"
+        size="large"
+        @click="$emit('allZeroSubmit')"
+        style="margin-right: 20px !important"
+        v-if="store.setting.enableAllZero"
+      >
+        全零分
+      </qm-button>
+
       <qm-button type="primary" shape="round" size="large" @click="submit">
         提交
       </qm-button>
@@ -115,7 +126,7 @@ import { dragSplitPane } from "./use/splitPane";
 
 export default defineComponent({
   name: "MarkBoardTrack",
-  emits: ["submit"],
+  emits: ["submit", "allZeroSubmit"],
   setup(props, { emit }) {
     const { dragSpliter, topPercent } = dragSplitPane();