Selaa lähdekoodia

feat: 答案和试卷展示

zhangjie 2 kuukautta sitten
vanhempi
commit
88ddc2183c

+ 2 - 13
src/features/mark/modals/ModalAnswer.vue

@@ -8,8 +8,8 @@
     @close="close"
   >
     <object
-      v-if="url"
-      :data="url"
+      v-if="markStore.answerUrl"
+      :data="markStore.answerUrl"
       type="application/pdf"
       frameBorder="0"
       scrolling="auto"
@@ -22,21 +22,10 @@
 
 <script setup lang="ts">
 import { useMarkStore } from "@/store";
-import { computed } from "vue";
 
 const markStore = useMarkStore();
 
 const close = () => {
   markStore.setting.uiSetting["answer.modal"] = false;
 };
-
-const url = computed(() => {
-  const answerUrl = markStore.setting.subject.answerUrl || [];
-  if (answerUrl.length === 0) return "";
-
-  return (
-    answerUrl.filter((u) => u.paperType === markStore.currentTask?.paperType)[0]
-      ?.url || ""
-  );
-});
 </script>

+ 2 - 13
src/features/mark/modals/ModalPaper.vue

@@ -8,8 +8,8 @@
     @close="close"
   >
     <object
-      v-if="url"
-      :data="url"
+      v-if="markStore.paperUrl"
+      :data="markStore.paperUrl"
       type="application/pdf"
       frameBorder="0"
       scrolling="auto"
@@ -22,20 +22,9 @@
 
 <script setup lang="ts">
 import { useMarkStore } from "@/store";
-import { computed } from "vue";
 const markStore = useMarkStore();
 
 const close = () => {
   markStore.setting.uiSetting["paper.modal"] = false;
 };
-
-const url = computed(() => {
-  const paperUrl = markStore.setting.subject.paperUrl || [];
-  if (paperUrl.length === 0) return "";
-
-  return (
-    paperUrl.filter((u) => u.paperType === markStore.currentTask?.paperType)[0]
-      ?.url || ""
-  );
-});
 </script>

+ 17 - 0
src/features/mark/stores/mark.ts

@@ -133,6 +133,23 @@ const useMarkStore = defineStore("mark", {
           ? "mouse"
           : "keyboard";
     },
+    answerUrl(state: MarkStore): string {
+      const answerUrl = state.setting.subject.answerUrl || [];
+      if (answerUrl.length === 0) return "";
+
+      return (
+        answerUrl.filter((u) => u.paperType === state.currentTask?.paperType)[0]
+          ?.url || ""
+      );
+    },
+    paperUrl(state: MarkStore): string {
+      const paperUrl = state.setting.subject.paperUrl || [];
+      if (paperUrl.length === 0) return "";
+      return (
+        paperUrl.filter((u) => u.paperType === state.currentTask?.paperType)[0]
+          ?.url || ""
+      );
+    },
   },
 
   actions: {

+ 2 - 2
src/features/mark/toolbar/MarkTool.vue

@@ -10,7 +10,7 @@
         <p>全卷</p>
       </div>
       <div
-        v-if="checkValid('paper') && markStore.setting.subject.paperUrl"
+        v-if="checkValid('paper') && markStore.paperUrl"
         :class="[
           'mark-tool-item',
           { 'is-active': markStore.setting.uiSetting['paper.modal'] },
@@ -21,7 +21,7 @@
         <p>试卷</p>
       </div>
       <div
-        v-if="checkValid('answer') && markStore.setting.subject.answerUrl"
+        v-if="checkValid('answer') && markStore.answerUrl"
         :class="[
           'mark-tool-item',
           { 'is-active': markStore.setting.uiSetting['answer.modal'] },