Browse Source

修改问题代码

JutarryWu 6 months ago
parent
commit
b0a48d707b

+ 15 - 7
.idea/workspace.xml

@@ -5,13 +5,21 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="b9dc0b93-aea2-4509-84d8-c1e57bc059b1" name="更改" comment="具体游戏文件优化">
-      <change afterPath="$PROJECT_DIR$/src/types/type.d.ts" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.env.development" beforeDir="false" afterPath="$PROJECT_DIR$/.env.development" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.env.production" beforeDir="false" afterPath="$PROJECT_DIR$/.env.production" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.env.test" beforeDir="false" afterPath="$PROJECT_DIR$/.env.test" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/pnpm-lock.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/pnpm-lock.yaml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/components/RoundSlider/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/RoundSlider/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/types/auto-imports.d.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/types/auto-imports.d.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/types/components.d.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/types/components.d.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/types/typed-router.d.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/types/typed-router.d.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/utils/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/index.ts" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/BreadthTraining/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/BreadthTraining/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/ContinueAddition/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/ContinueAddition/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PictureNaming/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PictureNaming/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/components/PicturePuzzleChild/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/PicturePuzzle/components/PicturePuzzleChild/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/main/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/main/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/cognitiveTasks/spatialOrientationAbility/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/cognitiveTasks/spatialOrientationAbility/index.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/tsconfig.json" beforeDir="false" afterPath="$PROJECT_DIR$/tsconfig.json" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -32,7 +40,7 @@
   <component name="Git.Settings">
     <option name="RECENT_BRANCH_BY_REPOSITORY">
       <map>
-        <entry key="$PROJECT_DIR$" value="20240919-Jutarry" />
+        <entry key="$PROJECT_DIR$" value="master" />
       </map>
     </option>
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />

+ 2 - 2
package.json

@@ -6,7 +6,7 @@
   },
   "scripts": {
     "dev": "vite",
-    "build": "vue-tsc && vite build",
+    "build": "vue-tsc --noEmit & vite build",
     "build:test": "vue-tsc && vite build --mode test",
     "serve": "http-server ./dist -o",
     "serve:test": "http-server ./dist-test -o",
@@ -55,6 +55,7 @@
     "@stylistic/stylelint-config": "^2.0.0",
     "@types/lodash-es": "^4.17.12",
     "@types/mockjs": "^1.0.10",
+    "@types/node": "^22.5.5",
     "@types/nprogress": "^0.2.3",
     "@types/path-browserify": "^1.0.3",
     "@types/qrcode": "^1.5.5",
@@ -71,7 +72,6 @@
     "cz-git": "^1.9.4",
     "eslint": "^9.9.1",
     "http-server": "^14.1.1",
-    "less": "^4.2.0",
     "lint-staged": "^15.2.9",
     "lodash-es": "^4.17.21",
     "npm-run-all2": "^6.2.2",

+ 62 - 84
pnpm-lock.yaml

@@ -102,6 +102,9 @@ importers:
       '@types/mockjs':
         specifier: ^1.0.10
         version: 1.0.10
+      '@types/node':
+        specifier: ^22.5.5
+        version: 22.5.5
       '@types/nprogress':
         specifier: ^0.2.3
         version: 0.2.3
@@ -122,13 +125,13 @@ importers:
         version: 0.62.3
       '@vitejs/plugin-legacy':
         specifier: ^5.4.2
-        version: 5.4.2(terser@5.31.6)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+        version: 5.4.2(terser@5.31.6)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
       '@vitejs/plugin-vue':
         specifier: ^5.1.3
-        version: 5.1.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
+        version: 5.1.3(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
       '@vitejs/plugin-vue-jsx':
         specifier: ^4.0.1
-        version: 4.0.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
+        version: 4.0.1(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
       '@yeungkc/unocss-preset-safe-area':
         specifier: ^0.0.10
         version: 0.0.10
@@ -150,9 +153,6 @@ importers:
       http-server:
         specifier: ^14.1.1
         version: 14.1.1
-      less:
-        specifier: ^4.2.0
-        version: 4.2.0
       lint-staged:
         specifier: ^15.2.9
         version: 15.2.9
@@ -206,13 +206,13 @@ importers:
         version: 5.5.4
       unocss:
         specifier: ^0.62.3
-        version: 0.62.3(postcss@8.4.42)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+        version: 0.62.3(postcss@8.4.42)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
       unplugin-auto-import:
         specifier: ^0.18.2
         version: 0.18.2(@vueuse/core@11.0.3(vue@3.4.38(typescript@5.5.4)))(rollup@4.21.2)
       unplugin-turbo-console:
         specifier: ^1.10.1
-        version: 1.10.1(@babel/parser@7.25.6)(esbuild@0.23.1)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
+        version: 1.10.1(@babel/parser@7.25.6)(esbuild@0.23.1)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
       unplugin-vue-components:
         specifier: ^0.27.4
         version: 0.27.4(@babel/parser@7.25.6)(rollup@4.21.2)(vue@3.4.38(typescript@5.5.4))
@@ -221,7 +221,7 @@ importers:
         version: 0.10.7(rollup@4.21.2)(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))(vue@3.4.38(typescript@5.5.4))
       vite:
         specifier: ^5.4.2
-        version: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+        version: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
       vite-plugin-archiver:
         specifier: ^0.1.1
         version: 0.1.1
@@ -236,13 +236,13 @@ importers:
         version: 2.1.1
       vite-plugin-pages:
         specifier: ^0.32.3
-        version: 0.32.3(@vue/compiler-sfc@3.4.38)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))
+        version: 0.32.3(@vue/compiler-sfc@3.4.38)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4)))
       vite-plugin-svg-icons:
         specifier: ^2.0.1
-        version: 2.0.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+        version: 2.0.1(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
       vite-plugin-vue-devtools:
         specifier: ^7.3.9
-        version: 7.3.9(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
+        version: 7.3.9(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
       vue-countup-v3:
         specifier: ^1.4.2
         version: 1.4.2(vue@3.4.38(typescript@5.5.4))
@@ -1716,17 +1716,8 @@ packages:
   '@types/ms@0.7.34':
     resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
 
-  '@types/node@18.13.0':
-    resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==}
-
-  '@types/node@20.10.5':
-    resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
-
-  '@types/node@20.12.8':
-    resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==}
-
-  '@types/node@22.5.2':
-    resolution: {integrity: sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==}
+  '@types/node@22.5.5':
+    resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==}
 
   '@types/normalize-package-data@2.4.4':
     resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -5610,9 +5601,6 @@ packages:
   uncrypto@0.1.3:
     resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
 
-  undici-types@5.26.5:
-    resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
   undici-types@6.19.8:
     resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
 
@@ -7499,7 +7487,7 @@ snapshots:
   '@types/liftoff@4.0.3':
     dependencies:
       '@types/fined': 1.1.5
-      '@types/node': 20.10.5
+      '@types/node': 22.5.5
 
   '@types/lodash-es@4.17.12':
     dependencies:
@@ -7515,20 +7503,9 @@ snapshots:
 
   '@types/ms@0.7.34': {}
 
-  '@types/node@18.13.0': {}
-
-  '@types/node@20.10.5':
-    dependencies:
-      undici-types: 5.26.5
-
-  '@types/node@20.12.8':
-    dependencies:
-      undici-types: 5.26.5
-
-  '@types/node@22.5.2':
+  '@types/node@22.5.5':
     dependencies:
       undici-types: 6.19.8
-    optional: true
 
   '@types/normalize-package-data@2.4.4': {}
 
@@ -7538,17 +7515,17 @@ snapshots:
 
   '@types/qrcode@1.5.5':
     dependencies:
-      '@types/node': 20.12.8
+      '@types/node': 22.5.5
 
   '@types/qs@6.9.15': {}
 
   '@types/svgo@2.6.4':
     dependencies:
-      '@types/node': 18.13.0
+      '@types/node': 22.5.5
 
   '@types/through@0.0.33':
     dependencies:
-      '@types/node': 20.12.8
+      '@types/node': 22.5.5
 
   '@types/unist@2.0.10': {}
 
@@ -7711,13 +7688,13 @@ snapshots:
       '@typescript-eslint/types': 8.3.0
       eslint-visitor-keys: 3.4.3
 
-  '@unocss/astro@0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))':
+  '@unocss/astro@0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))':
     dependencies:
       '@unocss/core': 0.62.3
       '@unocss/reset': 0.62.3
-      '@unocss/vite': 0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+      '@unocss/vite': 0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
     optionalDependencies:
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - rollup
       - supports-color
@@ -7870,7 +7847,7 @@ snapshots:
     dependencies:
       '@unocss/core': 0.62.3
 
-  '@unocss/vite@0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))':
+  '@unocss/vite@0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))':
     dependencies:
       '@ampproject/remapping': 2.3.0
       '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
@@ -7882,7 +7859,7 @@ snapshots:
       chokidar: 3.6.0
       magic-string: 0.30.11
       tinyglobby: 0.2.5
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - rollup
       - supports-color
@@ -7895,7 +7872,7 @@ snapshots:
     dependencies:
       vue: 3.4.38(typescript@5.5.4)
 
-  '@vitejs/plugin-legacy@5.4.2(terser@5.31.6)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))':
+  '@vitejs/plugin-legacy@5.4.2(terser@5.31.6)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))':
     dependencies:
       '@babel/core': 7.25.2
       '@babel/preset-env': 7.25.4(@babel/core@7.25.2)
@@ -7906,23 +7883,23 @@ snapshots:
       regenerator-runtime: 0.14.1
       systemjs: 6.15.1
       terser: 5.31.6
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))':
+  '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))':
     dependencies:
       '@babel/core': 7.25.2
       '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2)
       '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2)
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
       vue: 3.4.38(typescript@5.5.4)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))':
+  '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))':
     dependencies:
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
       vue: 3.4.38(typescript@5.5.4)
 
   '@vitest/eslint-plugin@1.0.2(@typescript-eslint/utils@8.3.0(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4))(eslint@9.9.1(jiti@1.21.6))(typescript@5.5.4)':
@@ -8031,14 +8008,14 @@ snapshots:
 
   '@vue/devtools-api@6.6.3': {}
 
-  '@vue/devtools-core@7.3.9(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))':
+  '@vue/devtools-core@7.3.9(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))':
     dependencies:
       '@vue/devtools-kit': 7.3.9
       '@vue/devtools-shared': 7.3.9
       mitt: 3.0.1
       nanoid: 3.3.7
       pathe: 1.1.2
-      vite-hot-client: 0.2.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+      vite-hot-client: 0.2.3(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
       vue: 3.4.38(typescript@5.5.4)
     transitivePeerDependencies:
       - vite
@@ -8723,6 +8700,7 @@ snapshots:
   copy-anything@2.0.6:
     dependencies:
       is-what: 3.14.1
+    optional: true
 
   copy-anything@3.0.5:
     dependencies:
@@ -10148,7 +10126,8 @@ snapshots:
 
   is-unicode-supported@2.0.0: {}
 
-  is-what@3.14.1: {}
+  is-what@3.14.1:
+    optional: true
 
   is-what@4.1.16: {}
 
@@ -10277,6 +10256,7 @@ snapshots:
       mime: 1.6.0
       needle: 3.3.1
       source-map: 0.6.1
+    optional: true
 
   levn@0.4.1:
     dependencies:
@@ -10847,7 +10827,8 @@ snapshots:
       json-parse-even-better-errors: 2.3.1
       lines-and-columns: 1.2.4
 
-  parse-node-version@1.0.1: {}
+  parse-node-version@1.0.1:
+    optional: true
 
   parse-passwd@1.0.0: {}
 
@@ -11890,10 +11871,7 @@ snapshots:
 
   uncrypto@0.1.3: {}
 
-  undici-types@5.26.5: {}
-
-  undici-types@6.19.8:
-    optional: true
+  undici-types@6.19.8: {}
 
   unenv@1.10.0:
     dependencies:
@@ -11951,9 +11929,9 @@ snapshots:
 
   universalify@2.0.1: {}
 
-  unocss@0.62.3(postcss@8.4.42)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
+  unocss@0.62.3(postcss@8.4.42)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
     dependencies:
-      '@unocss/astro': 0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+      '@unocss/astro': 0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
       '@unocss/cli': 0.62.3(rollup@4.21.2)
       '@unocss/core': 0.62.3
       '@unocss/extractor-arbitrary-variants': 0.62.3
@@ -11972,9 +11950,9 @@ snapshots:
       '@unocss/transformer-compile-class': 0.62.3
       '@unocss/transformer-directives': 0.62.3
       '@unocss/transformer-variant-group': 0.62.3
-      '@unocss/vite': 0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+      '@unocss/vite': 0.62.3(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
     optionalDependencies:
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - postcss
       - rollup
@@ -11995,7 +11973,7 @@ snapshots:
     transitivePeerDependencies:
       - rollup
 
-  unplugin-turbo-console@1.10.1(@babel/parser@7.25.6)(esbuild@0.23.1)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)):
+  unplugin-turbo-console@1.10.1(@babel/parser@7.25.6)(esbuild@0.23.1)(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)):
     dependencies:
       '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
       ast-kit: 1.0.1
@@ -12009,7 +11987,7 @@ snapshots:
       '@babel/parser': 7.25.6
       esbuild: 0.23.1
       rollup: 4.21.2
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
       vue: 3.4.38(typescript@5.5.4)
     transitivePeerDependencies:
       - uWebSockets.js
@@ -12122,9 +12100,9 @@ snapshots:
       core-js: 3.30.2
       mutation-observer: 1.0.3
 
-  vite-hot-client@0.2.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
+  vite-hot-client@0.2.3(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
     dependencies:
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
 
   vite-plugin-archiver@0.1.1:
     dependencies:
@@ -12150,7 +12128,7 @@ snapshots:
       path-to-regexp: 6.2.1
       picocolors: 1.0.1
 
-  vite-plugin-inspect@0.8.7(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
+  vite-plugin-inspect@0.8.7(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
     dependencies:
       '@antfu/utils': 0.7.10
       '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
@@ -12161,12 +12139,12 @@ snapshots:
       perfect-debounce: 1.0.0
       picocolors: 1.0.1
       sirv: 2.0.4
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - rollup
       - supports-color
 
-  vite-plugin-pages@0.32.3(@vue/compiler-sfc@3.4.38)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4))):
+  vite-plugin-pages@0.32.3(@vue/compiler-sfc@3.4.38)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue-router@4.4.3(vue@3.4.38(typescript@5.5.4))):
     dependencies:
       '@types/debug': 4.1.12
       debug: 4.3.5
@@ -12176,7 +12154,7 @@ snapshots:
       json5: 2.2.3
       local-pkg: 0.5.0
       picocolors: 1.0.1
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
       yaml: 2.4.5
     optionalDependencies:
       '@vue/compiler-sfc': 3.4.38
@@ -12184,7 +12162,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  vite-plugin-svg-icons@2.0.1(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
+  vite-plugin-svg-icons@2.0.1(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
     dependencies:
       '@types/svgo': 2.6.4
       cors: 2.8.5
@@ -12194,27 +12172,27 @@ snapshots:
       pathe: 0.2.0
       svg-baker: 1.7.0
       svgo: 2.8.0
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - supports-color
 
-  vite-plugin-vue-devtools@7.3.9(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)):
+  vite-plugin-vue-devtools@7.3.9(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4)):
     dependencies:
-      '@vue/devtools-core': 7.3.9(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
+      '@vue/devtools-core': 7.3.9(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))(vue@3.4.38(typescript@5.5.4))
       '@vue/devtools-kit': 7.3.9
       '@vue/devtools-shared': 7.3.9
       execa: 8.0.1
       sirv: 2.0.4
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
-      vite-plugin-inspect: 0.8.7(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
-      vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite-plugin-inspect: 0.8.7(rollup@4.21.2)(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
+      vite-plugin-vue-inspector: 5.1.3(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6))
     transitivePeerDependencies:
       - '@nuxt/kit'
       - rollup
       - supports-color
       - vue
 
-  vite-plugin-vue-inspector@5.1.3(vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
+  vite-plugin-vue-inspector@5.1.3(vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)):
     dependencies:
       '@babel/core': 7.25.2
       '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2)
@@ -12225,17 +12203,17 @@ snapshots:
       '@vue/compiler-dom': 3.4.38
       kolorist: 1.8.0
       magic-string: 0.30.11
-      vite: 5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
+      vite: 5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6)
     transitivePeerDependencies:
       - supports-color
 
-  vite@5.4.2(@types/node@22.5.2)(less@4.2.0)(sass@1.77.8)(terser@5.31.6):
+  vite@5.4.2(@types/node@22.5.5)(less@4.2.0)(sass@1.77.8)(terser@5.31.6):
     dependencies:
       esbuild: 0.21.5
       postcss: 8.4.42
       rollup: 4.21.2
     optionalDependencies:
-      '@types/node': 22.5.2
+      '@types/node': 22.5.5
       fsevents: 2.3.3
       less: 4.2.0
       sass: 1.77.8

+ 2 - 2
src/components/RoundSlider/index.vue

@@ -106,10 +106,10 @@ onMounted(() => {
 
   const touchArea = document.getElementById('touchArea')
   // 监听触摸事件
-  touchArea.addEventListener('touchstart', (event) => {
+  touchArea!.addEventListener('touchstart', (event) => {
     // 记录开始触摸的位置
     const xStart = event.touches[0].pageX
-    touchArea.addEventListener('touchmove', (event) => {
+    touchArea!.addEventListener('touchmove', (event) => {
       // 计算移动的距离
       const xMove = event.touches[0].pageX - xStart
       // 如果移动的距离大于0,则为左滑,小于0则为右滑

+ 4 - 4
src/utils/index.ts

@@ -2,7 +2,7 @@ function isObject(value: any) {
   return typeof value === 'object' && !Array.isArray(value)
 }
 // 比较两个对象,并提取出不同的部分
-function getTwoObjectDiff(originalObj: Record<string, any>, diffObj: Record<string, any>) {
+function getTwoObjectDiff(originalObj: Record<string, any>, diffObj: Record<string, any>): Record<any, string> {
   if (!isObject(originalObj) || !isObject(diffObj)) {
     return diffObj
   }
@@ -33,19 +33,19 @@ function getTwoObjectDiff(originalObj: Record<string, any>, diffObj: Record<stri
  * 示例: 生成10以内的4个随机整数
  * let randomNumbers = generateRandomNumbers(4, 10)
  */
-function generateRandomNumbers(count: number, max: number) {
+function generateRandomNumbers(count: number, max: number): number[] {
   const numbers = new Set()
   while (numbers.size < count) {
     numbers.add(Math.floor(Math.random() * max) + 1)
   }
-  return Array.from(numbers)
+  return Array.from(numbers) as number[]
 }
 
 /**
  * 毫秒数转时分秒
  * @param fmtSeconds
  */
-function formatSeconds(fmtSeconds: number) {
+function formatSeconds(fmtSeconds: number): string {
   const hours = Math.floor(fmtSeconds / (1000 * 60 * 60))
   const minutes = Math.floor((fmtSeconds % (1000 * 60 * 60)) / (1000 * 60))
   const seconds = Math.floor((fmtSeconds % (1000 * 60)) / 1000)

+ 3 - 4
src/views/cognitiveTasks/BreadthTraining/index.vue

@@ -51,7 +51,7 @@ const gameData: GameResultVO = {
   finish: '1',
   gameId: subjectInfo.value.id,
   gameName: subjectInfo.value.name,
-  userId: sessionStorage.getItem('userId'),
+  userId: sessionStorage.getItem('userId')!,
   paramList: [],
   levelList: [],
 }
@@ -90,7 +90,7 @@ function generateBaseData() {
   })
 
   // 生成主体数据
-  const baseDataList = [
+  const baseDataList: IMainChildData[] = [
     // { count: 5, score: 10, extraScore: 0 }, { count: 5, score: 10, extraScore: 0 }, ...
     // { count: 5, score: 10, extraScore: 0 }, { count: 5, score: 10, extraScore: 0 }, ...
     ...Array.from({ length: 10 }).fill({ count: 5, score: 10, extraScore: 0 }),
@@ -101,7 +101,7 @@ function generateBaseData() {
     ...Array.from({ length: 10 }).fill({ count: 10, score: 60, extraScore: 0 }),
     ...Array.from({ length: 10 }).fill({ count: 11, score: 70, extraScore: 0 }),
     ...Array.from({ length: 10 }).fill({ count: 12, score: 80, extraScore: 0 }),
-  ]
+  ] as IMainChildData[]
 
   mainData.dataList = baseDataList.map((item: IMainChildData, index) => {
     return {
@@ -130,7 +130,6 @@ function nextClick() {
     }, 320)
   }
   else {
-    // console.log('游戏结束')
     sendData()
   }
 }

+ 3 - 3
src/views/cognitiveTasks/ContinueAddition/index.vue

@@ -37,13 +37,13 @@ const gameData: GameResultVO = {
   finish: '1',
   gameId: subjectInfo.value.id,
   gameName: subjectInfo.value.name,
-  userId: sessionStorage.getItem('userId'),
+  userId: sessionStorage.getItem('userId')!,
   paramList: [],
   levelList: [],
 }
 
 function nNumRightCount() {
-  const isIndex = rightCountList.findIndex(item => Number.parseInt(item.name) === additionNumCount.value)
+  const isIndex = rightCountList.findIndex(item => Number.parseInt(item.name!) === additionNumCount.value)
   if (isIndex !== -1) {
     if (typeof rightCountList[isIndex].value === 'number') {
       rightCountList[isIndex].value++
@@ -131,7 +131,7 @@ function endCountDown() {
 
 function sendData() {
   const totalScore = rightCountList.reduce((acc, curr) => {
-    acc += curr.value as number * 2 ** (Number.parseInt(curr.name) - 2)
+    acc += curr.value as number * 2 ** (Number.parseInt(curr.name!) - 2)
     return acc
   }, 0)
 

+ 16 - 16
src/views/cognitiveTasks/PictureNaming/index.vue

@@ -33,9 +33,9 @@ const showDataArr = ref<IData[]>([])
 const seconds = [3000, 2000, 1500]
 const currentIndex = ref(0) // 当前索引
 const selectiveIndex = ref(-1) //  用户选择的索引
-const textTimeout = ref<NodeJS.Timeout | null>(null)
-const imgTimeout = ref<NodeJS.Timeout | null>(null)
-const onceTimer = ref<NodeJS.Timeout | null>(null)
+let textTimeout: NodeJS.Timeout | null = null
+let imgTimeout: NodeJS.Timeout | null = null
+let onceTimer: NodeJS.Timeout | null = null
 let onceStart = 0 // 试次开始时间
 
 function initData() {
@@ -88,9 +88,9 @@ function choiceClick(item: string, index: number) {
         VoiceImpRef.value.videoPlay('error')
       }
     }
-    clearTimeout(textTimeout.value)
-    clearTimeout(imgTimeout.value)
-    clearTimeout(onceTimer.value)
+    clearTimeout(textTimeout!)
+    clearTimeout(imgTimeout!)
+    clearTimeout(onceTimer!)
     setTimeout(() => {
       userCanClickFlag.value = false
       showText.value = false
@@ -108,24 +108,24 @@ function nextOnce() {
     showImg.value = true
 
     // 隐藏图片
-    imgTimeout.value = setTimeout(() => {
+    imgTimeout = setTimeout(() => {
       showImg.value = false
       showText.value = true
       userCanClickFlag.value = true
       // 隐藏文字
-      textTimeout.value = setTimeout(() => {
+      textTimeout = setTimeout(() => {
         showText.value = false
       }, 3000)
     }, showDataArr.value[currentIndex.value].seconds)
 
     // 如果用户未点击,自动清除定时器,进入下一个试次
-    onceTimer.value = setTimeout(() => {
+    onceTimer = setTimeout(() => {
       userCanClickFlag.value = false
       showText.value = false
       showImg.value = false
-      clearTimeout(textTimeout.value)
-      clearTimeout(imgTimeout.value)
-      clearTimeout(onceTimer.value)
+      clearTimeout(textTimeout!)
+      clearTimeout(imgTimeout!)
+      clearTimeout(onceTimer!)
       currentIndex.value++
       nextOnce()
     }, 7000)
@@ -145,7 +145,7 @@ function submit() {
     if (item.isRight) {
       correctNum++
       totalScore++
-      averageReactionTimeForCorrect += item.reactionTime
+      averageReactionTimeForCorrect += item.reactionTime!
     }
   })
   wrongNum = 45 - correctNum
@@ -183,7 +183,7 @@ function submit() {
         value: `${averageReactionTimeForCorrect}ms`,
       },
     ],
-    userId: sessionStorage.getItem('userId'),
+    userId: sessionStorage.getItem('userId')!,
   }
   GameAPI.add(data).then(() => {
     showSuccessToast({
@@ -213,7 +213,7 @@ onMounted(() => {
 })
 
 onBeforeUnmount(() => {
-  clearInterval(onceTimer.value)
+  clearInterval(onceTimer!)
 })
 </script>
 
@@ -242,7 +242,7 @@ onBeforeUnmount(() => {
           <span v-if="showText">{{ item }}</span>
           <WuIsCorrect
             v-if="selectiveIndex === index && showDataArr[currentIndex].checked"
-            :correct="showDataArr[currentIndex].isRight"
+            :correct="showDataArr[currentIndex].isRight!"
           />
         </div>
       </div>

+ 8 - 8
src/views/cognitiveTasks/PicturePuzzle/components/PicturePuzzleChild/index.vue

@@ -9,7 +9,7 @@
 import { shuffle } from 'lodash-es'
 import { deepClone } from 'vant/es/utils/deep-clone'
 import PPCountDown from '../PPCountDown/index.vue'
-import type { IGameBaseChildData } from '@/typing'
+import type { IGameBaseChildData } from '@/types/type'
 
 const $emits = defineEmits(['beginLoop', 'endLoop'])
 const showData = ref<IGameBaseChildData>({
@@ -281,7 +281,7 @@ defineExpose({
         class="submit-flag absolute right-[36px] top-[105px] h-[38px] w-[120px] cursor-pointer text-[18px]"
         @click="submitPre"
       >
-        <WuIsCorrect v-if="showResult" :correct="showData.correct" />
+        <WuIsCorrect v-if="showResult" :correct="showData.correct!" />
       </div>
     </transition>
     <VoiceImp ref="VoiceImpRef" />
@@ -291,12 +291,6 @@ defineExpose({
 <style scoped lang="scss">
 .picture-puzzle-child-container {
   :deep(.van-image) {
-    &.activeImg {
-      scale: 1.06;
-      border: 4px solid white;
-      box-shadow: 0 0 10px #134fa4;
-    }
-
     transition:
       scale 0.1s linear,
       border 0.1s linear,
@@ -304,6 +298,12 @@ defineExpose({
       top 0.35s ease-in-out,
       width 0.35s linear,
       height 0.35s linear;
+
+    &.activeImg {
+      scale: 1.06;
+      border: 4px solid white;
+      box-shadow: 0 0 10px #134fa4;
+    }
   }
 
   .tips-center {

+ 1 - 1
src/views/cognitiveTasks/main/index.vue

@@ -34,7 +34,7 @@ async function exec() {
   taskId.value = route.query.taskId as string
   userId.value = route.query.userId as string
   GameAPI.findById(taskId.value).then((res) => {
-    subjectInfo.value = res.data
+    subjectInfo.value = res.data!
     sessionStorage.setItem('userId', userId.value)
     sessionStorage.setItem('subjectInfo', JSON.stringify(res.data))
   })

+ 31 - 26
src/views/cognitiveTasks/spatialOrientationAbility/index.vue

@@ -49,7 +49,7 @@ const currentIndex = ref(0) // 当前试次索引值:练习模式2次最大为
 const itemAngle = ref(0) // 选项物品实际角度
 const roundSliderVal = ref(0) // 圆形滑杆产生的值(即:用户操作实际角度)
 const offsetAngle = ref(0) // 角度偏差值(用户绘制时产生的实际偏差值)
-let gameStartTime = null // 游戏开始时间
+let gameStartTime: number | null = null // 游戏开始时间
 
 const showDataArr = ref<IData[][]>([]) // 伪随机数组
 let arrDataDemo: IData[] = [
@@ -73,12 +73,12 @@ let arrDataDemo: IData[] = [
   { id: 8, text: '停止牌', name: '停止牌', value: 'stop', imgUrl: Url_stop, angle: '', xAxis: '', yAxis: '' },
   { id: 9, text: '房子', name: '房子', value: 'house', imgUrl: Url_house, angle: '', xAxis: '', yAxis: '' },
 ]
-const firstObj = ref<IData>()
-const centerCoordinate = ref<IData>()
-const secondObj = ref<IData>()
-const topCoordinate = ref<IData>()
-const thirdObj = ref<IData>()
-const thirdCoordinate = ref<IData>()
+const firstObj = ref<IData>({})
+const centerCoordinate = ref<IData>({})
+const secondObj = ref<IData>({})
+const topCoordinate = ref<IData>({})
+const thirdObj = ref<IData>({})
+const thirdCoordinate = ref<IData>({})
 const levelList = ref<ResultLevel[]>([]) // 存放结果数组
 
 /**
@@ -139,19 +139,24 @@ function createThreeObj() {
 
 function submitQuestion() {
   // 计算选项角度
-  const topCenterX = Number(topCoordinate.value.xAxis) - Number(centerCoordinate.value.xAxis)
-  const topCenterY = Number(topCoordinate.value.yAxis) - Number(centerCoordinate.value.yAxis)
-  const thirdCenterX = Number(thirdCoordinate.value.xAxis) - Number(centerCoordinate.value.xAxis)
-  const thirdCenterY = Number(thirdCoordinate.value.yAxis) - Number(centerCoordinate.value.yAxis)
+  const topCenterX = Number(topCoordinate.value.xAxis!) - Number(centerCoordinate.value.xAxis!)
+  const topCenterY = Number(topCoordinate.value.yAxis!) - Number(centerCoordinate.value.yAxis!)
+  const thirdCenterX = Number(thirdCoordinate.value.xAxis!) - Number(centerCoordinate.value.xAxis!)
+  const thirdCenterY = Number(thirdCoordinate.value.yAxis!) - Number(centerCoordinate.value.yAxis!)
   getAngle({ x: topCenterX, y: topCenterY }, { x: thirdCenterX, y: thirdCenterY })
 
   // 显示画布
   showSubmit.value = true
 }
 
-function getAngle({ x: x1, y: y1 }, { x: x2, y: y2 }) {
-  const dot = x1 * x2 + y1 * y2
-  const det = x1 * y2 - y1 * x2
+interface IAngle {
+  x: number
+  y: number
+}
+
+function getAngle(angle_0: IAngle, angle_1: IAngle) {
+  const dot = angle_0.x * angle_1.x + angle_0.y * angle_1.y
+  const det = angle_0.x * angle_1.y - angle_0.y * angle_1.x
   // const angle = Math.atan2(det, dot) / Math.PI * 180;
   const angle = Math.atan2(det, dot) * (180 / Math.PI)
   // return (angle + 360) % 360;
@@ -251,7 +256,7 @@ submitAngle() {
     resetGame()
   }
   else {
-    const gameTime = formatSeconds(Math.ceil(performance.now() - gameStartTime))
+    const gameTime = formatSeconds(Math.ceil(performance.now() - gameStartTime!))
 
     const data: GameResultVO = {
       finish: '1',
@@ -265,7 +270,7 @@ submitAngle() {
         },
       ],
       levelList: levelList.value,
-      userId: sessionStorage.getItem('userId'),
+      userId: sessionStorage.getItem('userId')!,
     }
     GameAPI.add(data).then(() => {
       showSuccessToast('本次训练已结束')
@@ -299,10 +304,10 @@ function resetGame() {
   offsetAngle.value = 0
   itemAngle.value = 0
   roundSliderVal.value = 0
-  firstObj.value = null
-  secondObj.value = null
-  thirdObj.value = null
-  centerCoordinate.value = null
+  firstObj.value = {}
+  secondObj.value = {}
+  thirdObj.value = {}
+  centerCoordinate.value = {}
   // 调用任务方法开始任务
   // 随机点位已生成,展示在画布上
   showSubmit.value = false
@@ -348,20 +353,20 @@ onMounted(() => {
     <template v-if="showSubmit">
       <div class="ml-[4%] mt-[10px] w-[92%] text-center text-[15px] text-[#3A3A3A]">
         在刚刚呈现的图片中,请您想象当您站在
-        <span class="text-[18px] text-[#F87171] font-600">{{ firstObj.name }}</span>
+        <span class="text-[18px] text-[#F87171] font-600">{{ firstObj!.name }}</span>
         的位置同时面向
-        <span class="text-[18px] text-[#F87171] font-600">{{ secondObj.name }}</span>
+        <span class="text-[18px] text-[#F87171] font-600">{{ secondObj!.name }}</span>
         时,用红色线条标出
-        <span class="text-[18px] text-[#F87171] font-600">{{ thirdObj.name }}</span>
+        <span class="text-[18px] text-[#F87171] font-600">{{ thirdObj!.name }}</span>
         所在的方向。
       </div>
 
       <div class="absolute-center h-[370px] w-[350px] rounded-[8px] bg-[#FFFFFF8B] shadow-lg">
         <div class="opt-bg-circle absolute-center h-[286px] w-[284px]">
           <RoundSlider
-            :center-name="firstObj.name"
-            :top-name="secondObj.name"
-            :move-name="thirdObj.name"
+            :center-name="firstObj!.name"
+            :top-name="secondObj!.name"
+            :move-name="thirdObj!.name"
             @cur-value="angleDiffVal"
           />
         </div>

+ 2 - 1
tsconfig.json

@@ -22,7 +22,8 @@
     "resolveJsonModule": true,
     "types": [
       "vite/client",
-      "unplugin-vue-router/client"
+      "unplugin-vue-router/client",
+      "node"
     ],
     "allowImportingTsExtensions": true,
     "allowJs": false,