Jelajahi Sumber

类型检查后的优化

Michael Wang 3 tahun lalu
induk
melakukan
181ee5f49b

+ 0 - 1
.eslintrc.js

@@ -37,7 +37,6 @@ module.exports = {
     "@typescript-eslint/restrict-plus-operands": "off",
     "@typescript-eslint/restrict-template-expressions": "off",
     "@typescript-eslint/no-non-null-assertion": "off",
-    "@typescript-eslint/no-empty-function": "off",
     "vue/v-on-event-hyphenation": "off",
     "vue/no-v-html": "off",
   },

+ 0 - 1
components.d.ts

@@ -19,7 +19,6 @@ declare module 'vue' {
     ASpin: typeof import('ant-design-vue/es')['Spin']
     ASwitch: typeof import('ant-design-vue/es')['Switch']
     ATooltip: typeof import('ant-design-vue/es')['Tooltip']
-    Page404: typeof import('./src/components/Page404.vue')['default']
     PageError404: typeof import('./src/components/PageError404.vue')['default']
     QmButton: typeof import('./src/components/QmButton.vue')['default']
     QmDialog: typeof import('./src/components/QmDialog.vue')['default']

+ 1 - 7
src/features/arbitrate/MarkBody.vue

@@ -1,11 +1,5 @@
 <template>
-  <CommonMarkBody
-    v-if="store"
-    :use-mark-result="false"
-    :store="store"
-    :make-track="() => {}"
-    @error="$emit('error')"
-  />
+  <CommonMarkBody v-if="store" @error="$emit('error')" />
 </template>
 
 <script setup lang="ts">

+ 1 - 7
src/features/library/inspect/MarkBody.vue

@@ -1,11 +1,5 @@
 <template>
-  <CommonMarkBody
-    v-if="store"
-    :use-mark-result="false"
-    :store="store"
-    :make-track="() => {}"
-    @error="$emit('error')"
-  />
+  <CommonMarkBody v-if="store" @error="$emit('error')" />
 </template>
 
 <script setup lang="ts">

+ 1 - 7
src/features/library/libraryTrack/MarkBody.vue

@@ -1,11 +1,5 @@
 <template>
-  <CommonMarkBody
-    v-if="store"
-    :use-mark-result="false"
-    :store="store"
-    :make-track="() => {}"
-    @error="$emit('error')"
-  />
+  <CommonMarkBody v-if="store" @error="$emit('error')" />
 </template>
 
 <script setup lang="ts">

+ 1 - 7
src/features/library/quality/MarkBody.vue

@@ -1,11 +1,5 @@
 <template>
-  <CommonMarkBody
-    v-if="store"
-    :use-mark-result="false"
-    :store="store"
-    :make-track="() => {}"
-    @error="$emit('error')"
-  />
+  <CommonMarkBody v-if="store" @error="$emit('error')" />
 </template>
 
 <script setup lang="ts">

+ 8 - 10
src/features/mark/CommonMarkBody.vue

@@ -58,13 +58,7 @@
 import { onMounted, onUnmounted, reactive, watch, watchEffect } from "vue";
 import { store } from "@/store/store";
 import MarkDrawTrack from "./MarkDrawTrack.vue";
-import type {
-  MarkResult,
-  MarkStore,
-  SliceImage,
-  SpecialTag,
-  Track,
-} from "@/types";
+import type { MarkResult, SliceImage, SpecialTag, Track } from "@/types";
 import { useTimers } from "@/setups/useTimers";
 import {
   getDataUrlForSliceConfig,
@@ -86,10 +80,14 @@ type MakeTrack = (
 const props = withDefaults(
   defineProps<{
     useMarkResult?: boolean;
-    makeTrack: MakeTrack;
-    store: MarkStore; // 以前不是一个类型的store,现在变成一样的了,所以这个可以删掉了,并且可以优化这个组件的使用
+    makeTrack?: MakeTrack;
   }>(),
-  { useMarkResult: false, makeTrack: () => {} }
+  {
+    useMarkResult: false,
+    makeTrack: () => {
+      console.debug("非评卷界面makeTrack没有意义");
+    },
+  }
 );
 
 const emit = defineEmits(["error"]);

+ 1 - 0
src/features/mark/Mark.vue

@@ -336,6 +336,7 @@ const saveTaskToServer = async () => {
   console.log("save task to server");
   void message.loading({ content: "保存评卷任务...", key: mkey });
   const res = (await saveTask()) as any;
+  // 故意不在此处同步等待,因为不必等待
   updateStatus().catch((e) => console.log("保存任务后获取status出错", e));
   if (res.data.success && store.currentTask) {
     void message.success({ content: "保存成功", key: mkey, duration: 2 });

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

@@ -1,7 +1,6 @@
 <template>
   <CommonMarkBody
     :use-mark-result="true"
-    :store="store"
     :make-track="makeTrack"
     @error="$emit('error')"
   />

+ 1 - 3
src/features/mark/MarkHeader.vue

@@ -431,9 +431,7 @@ watchEffect(() => {
       content: `分配任务份已完成,是否继续?`,
       okText: "继续",
       cancelText: "退出",
-      onCancel: () => {
-        logout();
-      },
+      onCancel: logout,
     });
   }
 });

+ 1 - 1
src/features/mark/MultiMediaMarkBody.vue

@@ -122,7 +122,7 @@ watch(
     if (!store.currentTask?.jsonUrl) return;
     const res = await updateStudentAnswerJSON();
 
-    const stuAnswers: StudentAnswer[] = res.data; // TODO: add type
+    const stuAnswers: StudentAnswer[] = res.data;
     for (const ans of stuAnswers) {
       if (ans.answer && !Array.isArray(ans.answer)) {
         ans.answer = [ans.answer];

+ 1 - 7
src/features/student/studentTrack/StudentTrack.vue

@@ -3,13 +3,7 @@
     <mark-header />
     <div class="tw-flex tw-gap-1">
       <mark-body v-if="store.isScanImage" @error="renderError" />
-      <CommonMarkBody
-        v-else
-        :use-mark-result="false"
-        :store="store"
-        :make-track="() => {}"
-        @error="renderError"
-      />
+      <CommonMarkBody v-else @error="renderError" />
     </div>
   </div>
 </template>

+ 1 - 1
src/router/index.ts

@@ -42,7 +42,7 @@ const routes = [
   {
     path: "/:pathMatch(.*)*",
     name: "NotFound",
-    component: () => import("@/components/Page404.vue"),
+    component: () => import("@/components/PageError404.vue"),
   },
 ];
 

+ 6 - 14
src/utils/ua.ts

@@ -3,11 +3,8 @@ import UAParser from "ua-parser-js";
 const ua = new UAParser();
 
 function printUA() {
-  console.log(
-    `浏览器名称:${ua.getBrowser().name || "undefined"}   浏览器版本:${
-      ua.getBrowser().version || "undefined"
-    }`
-  );
+  const { name, version } = ua.getBrowser();
+  console.log(`浏览器名称:${name}   浏览器版本:${version}`);
 
   console.log(ua.getEngine(), ua.getDevice(), ua.getCPU(), ua.getOS());
 }
@@ -15,13 +12,8 @@ function printUA() {
 printUA();
 
 export default function () {
-  console.log(parseInt(ua.getBrowser().version || "", 10));
-  if (
-    ua.getBrowser().name !== "Blink" ||
-    parseInt(ua.getBrowser().version || "", 10) <= 80
-  ) {
-    return false;
-  } else {
-    return true;
-  }
+  const { name, version } = ua.getBrowser();
+  console.log(parseInt(version || "", 10));
+  // 满足要求的浏览器
+  return name === "Blink" && parseInt(version || "", 10) >= 80;
 }

+ 1 - 1
src/utils/utils.ts

@@ -1,7 +1,7 @@
 import { store } from "@/store/store";
 import { PictureSlice, Task } from "@/types";
 
-// TODO: 打开cache后,会造成没有 vue devtools 时,canvas缓存错误,暂时不知道原因
+// 打开cache后,会造成没有 vue devtools 时,canvas缓存错误,暂时不知道原因
 // 通过回看的测试,打开回看,再关闭回看,稍等一会儿再打开回看,确实可以看到该缓存时缓存了,该丢弃时丢弃了
 
 // 把store.currentTask当做 weakRef ,当它不存在时,就丢弃它所有的图片