Kaynağa Gözat

言语康复训练 - 听 - 80%

JutarryWu 1 hafta önce
ebeveyn
işleme
c9c4e504fd
55 değiştirilmiş dosya ile 300 ekleme ve 58 silme
  1. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/Options-Blank.png
  2. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/Options-right.png
  3. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/书.png
  4. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/书包.png
  5. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/冰箱.png
  6. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/勺子.jpg
  7. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/勺子.png
  8. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/叉子.jpg
  9. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/叉子.png
  10. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/向日葵.jpg
  11. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/向日葵.png
  12. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/小碗.jpg
  13. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/小碗.png
  14. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/小草.png
  15. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/床.png
  16. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/杯子.jpg
  17. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/杯子.png
  18. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/松树.png
  19. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/橡皮.png
  20. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/水开了.jpg
  21. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/水开了.png
  22. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/水龙头流水.png
  23. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/牙膏.png
  24. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/牛奶.png
  25. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/玫瑰.png
  26. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/电视.jpg
  27. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/电视.png
  28. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/男孩打着伞吗?.png
  29. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/笔.jpg
  30. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/笔.png
  31. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/筷子.jpg
  32. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/筷子.png
  33. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/组 1@2x.png
  34. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/自来水.jpg
  35. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/花花.jpg
  36. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/花花.png
  37. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/苹果.png
  38. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/茶桌.png
  39. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/衣柜.jpg
  40. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/衣柜.png
  41. BIN
      public/static/image/cognitiveAbility/SpeechTraining/Visual/香蕉.png
  42. BIN
      public/static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/1.mp3
  43. BIN
      public/static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/男孩打着伞吗?.mp3
  44. BIN
      public/static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/1.mp3
  45. BIN
      public/static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/水开了.mp3
  46. 2 0
      src/types/components.d.ts
  47. 0 30
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingImgWordMatching/topics.json
  48. 1 1
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRecognition/index.vue
  49. 227 0
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRightOrWrongResponse/index.vue
  50. 13 0
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRightOrWrongResponse/topics.json
  51. 31 27
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingSentenceImgMatching/index.vue
  52. 11 0
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingSentenceImgMatching/topics.json
  53. 13 0
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/index.vue
  54. 1 0
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/index.vue
  55. 1 0
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskVisualTraining/index.vue

BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/Options-Blank.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/Options-right.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/书.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/书包.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/冰箱.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/勺子.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/勺子.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/叉子.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/叉子.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/向日葵.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/向日葵.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/小碗.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/小碗.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/小草.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/床.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/杯子.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/杯子.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/松树.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/橡皮.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/水开了.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/水开了.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/水龙头流水.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/牙膏.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/牛奶.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/玫瑰.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/电视.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/电视.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/男孩打着伞吗?.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/笔.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/笔.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/筷子.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/筷子.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/组 1@2x.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/自来水.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/花花.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/花花.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/苹果.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/茶桌.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/衣柜.jpg


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/衣柜.png


BIN
public/static/image/cognitiveAbility/SpeechTraining/Visual/香蕉.png


BIN
public/static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/1.mp3


BIN
public/static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/男孩打着伞吗?.mp3


BIN
public/static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/1.mp3


BIN
public/static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/水开了.mp3


+ 2 - 0
src/types/components.d.ts

@@ -26,6 +26,8 @@ declare module 'vue' {
     CaseInformation: typeof import('./../views/tester/components/CaseInformation/index.vue')['default']
     CaseLog: typeof import('./../views/tester/components/CaseInformation/CaseLog/index.vue')['default']
     CATAuditoryTrainingRecognition: typeof import('./../views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRecognition/index.vue')['default']
+    CATAuditoryTrainingRightOrWrongResponse: typeof import('./../views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRightOrWrongResponse/index.vue')['default']
+    CATAuditoryTrainingSentenceImgMatching: typeof import('./../views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingSentenceImgMatching/index.vue')['default']
     CATAuditoryTrainingWordImgMatching: typeof import('./../views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingWordImgMatching/index.vue')['default']
     CExercisesMainShow: typeof import('./../views/gameCenter/components/games/CalculationExercises/components/CExercisesMainShow/index.vue')['default']
     CharacterMemory: typeof import('./../views/gameCenter/components/games/CharacterMemory/index.vue')['default']

+ 0 - 30
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingImgWordMatching/topics.json

@@ -1,30 +0,0 @@
-{
-  "question": "屏幕中会出现一个词语,请你从下面的选项中选出与该词语匹配的图片",
-  "topics": [
-    {
-      "choices": ["杯子", "小碗"],
-      "correct": "杯子",
-      "userAnswer": ""
-    },
-    {
-      "choices": ["勺子", "筷子", "叉子"],
-      "correct": "筷子",
-      "userAnswer": ""
-    },
-    {
-      "choices": ["笔", "橡皮", "书包", "书"],
-      "correct": "书",
-      "userAnswer": ""
-    },
-    {
-      "choices": ["冰箱", "茶桌", "电视", "衣柜", "床"],
-      "correct": "电视",
-      "userAnswer": ""
-    },
-    {
-      "choices": ["小草", "松树", "玫瑰", "向日葵", "苹果", "花花"],
-      "correct": "松树",
-      "userAnswer": ""
-    }
-  ]
-}

+ 1 - 1
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRecognition/index.vue

@@ -29,7 +29,7 @@
             <el-image
               :src="`/static/image/cognitiveAbility/SpeechTraining/${useClickIndex === index || item === TopicsVal[currentIndex].userAnswer ? 'Options-right' : 'Options-Blank'}.png`"
               fit="contain"
-              class="w-[100px] h-[100px] cursor-pointer mt-30px"
+              class="w-[60px] h-[60px] mt-30px"
             />
           </div>
         </div>

+ 227 - 0
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRightOrWrongResponse/index.vue

@@ -0,0 +1,227 @@
+<template>
+  <section class="auditory-right-or-wrong-response-container flex-center flex-col wh-full relative">
+    <water-title title="是非反应" />
+    <div v-if="isMainWin" class="text-[42px] text-[#0F308C]">
+      {{ Topics.question }}
+    </div>
+
+    <div v-if="!isMainWin && showTopics" class="w-80% flex-center flex-col text-42px text-[#0F308C]">
+      {{ TopicsVal[currentIndex].question }}
+    </div>
+    <div class="w-80% h-60% my-30px flex-center flex-col">
+      <template v-if="showTopics">
+        <el-image
+          v-if="isMainWin"
+          src="/static/image/cognitiveAbility/SpeechTraining/Auditory/play.png"
+          fit="contain"
+          class="w-[300px] h-[160px] mb-40px cursor-pointer hover:scale-101"
+          @click="handlePlay"
+        />
+        <div class="w-full flex flex-row justify-around">
+          <div v-for="(item, index) in TopicsVal[currentIndex].choices" :key="index" class="flex flex-col items-center">
+            <div class="w-180px h-180px flex-center cursor-pointer" @click="handleItemClick(item, index)">
+              <el-image
+                :src="`/static/image/cognitiveAbility/SpeechTraining/Visual/${item}.jpg`"
+                fit="contain"
+                class="w-[120px] h-[120px] cursor-pointer mt-30px"
+              />
+            </div>
+            <el-image
+              :src="`/static/image/cognitiveAbility/SpeechTraining/${useClickIndex === index || item === TopicsVal[currentIndex].userAnswer ? 'Options-right' : 'Options-Blank'}.png`"
+              fit="contain"
+              class="w-[60px] h-[60px] mt-30px"
+            />
+          </div>
+        </div>
+      </template>
+    </div>
+
+    <div v-if="!isMainWin" class="w-[300px] h-[140px]">
+      <el-image
+        v-if="showSubmitBtn"
+        src="/static/image/cognitiveAbility/SpeechTraining/verify-bg.png"
+        fit="contain"
+        class="w-[300px] h-[140px] cursor-pointer hover:scale-101"
+        @click="handleSubmit"
+      />
+    </div>
+
+    <el-image
+      v-if="showNextBtn"
+      src="/static/image/cognitiveAbility/SpeechTraining/next.png"
+      fit="contain"
+      class="!absolute bottom-[24px] right-[140px] w-[300px] h-[140px] cursor-pointer hover:scale-101"
+      @click="handleNext()"
+    />
+
+    <VoiceImp ref="VoiceImpRef" />
+  </section>
+</template>
+
+<script setup lang="ts">
+/*
+ * 组件名: CATAuditoryTrainingRightOrWrongResponse
+ * 组件用途: 常规听康复训练 - 是非反应
+ * 创建日期: 2024/11/12
+ * 编写者: JutarryWu
+ */
+
+import { formatSeconds, isJSON } from '@/utils'
+
+defineOptions({
+  name: 'CATAuditoryTrainingRightOrWrongResponse',
+  inheritAttrs: false
+})
+
+import Topics from './topics.json'
+
+interface TopicsType {
+  question: string
+  choices: string[]
+  correct: string
+  userAnswer: string
+}
+
+const props = defineProps({})
+const emits = defineEmits(['gameOver'])
+
+const isMainWin = ref(false)
+const showNextBtn = ref(false) // 主屏 - 显示下一题按钮标识
+const showSubmitBtn = ref(false) // 副屏 - 显示确定按钮标识
+let isSubmitting = false // 是否正在提交标识
+const showTopics = ref(false) // 显示题目选项标识
+const VoiceImpRef = ref()
+const currentIndex = ref(0) // 当前题目索引
+const TopicsVal = ref<TopicsType[]>([])
+const useClickIndex = ref(-1) // 副屏 - 用户点击的选项索引
+let taskBeginTime = 0 // 任务开始时间
+
+const handleNext = () => {
+  if (TopicsVal.value[currentIndex.value].userAnswer === '') {
+    showTopics.value = true
+    showNextBtn.value = false
+    localStorage.setItem('tow-win-auditory-right-or-wrong-response-show-topics', currentIndex.value + '')
+  } else {
+    let tempCount = TopicsVal.value.filter((item) => item.userAnswer !== '').length
+    if (tempCount === TopicsVal.value.length) {
+      isSubmitting = true
+      localStorage.setItem('tow-win-auditory-right-or-wrong-response-isSubmitting', 'YES')
+    } else {
+      currentIndex.value++
+      handleNext()
+    }
+  }
+}
+
+const handlePlay = () => {
+  localStorage.setItem(
+    'two-win-auditory-right-or-wrong-response-item-check',
+    TopicsVal.value[currentIndex.value].question
+  )
+}
+
+const handleItemClick = (item: string, index: number) => {
+  if (isSubmitting) return // 如果再提交进程中,不响应点击事件
+  if (!isMainWin.value) {
+    VoiceImpRef.value.videoPlay()
+    TopicsVal.value[currentIndex.value].userAnswer = item
+    useClickIndex.value = index
+    showSubmitBtn.value = true
+    localStorage.setItem(
+      'two-win-auditory-right-or-wrong-response-submit-answer',
+      TopicsVal.value[currentIndex.value].userAnswer
+    )
+  }
+}
+
+const handleSubmit = () => {
+  if (TopicsVal.value[currentIndex.value].userAnswer === '') {
+    ElMessage.warning('请先完成当前题目!')
+    return
+  }
+  VoiceImpRef.value.videoPlay(
+    TopicsVal.value[currentIndex.value].userAnswer === TopicsVal.value[currentIndex.value].correct ? 'right' : 'error'
+  )
+  showSubmitBtn.value = false
+  localStorage.setItem('two-win-auditory-right-or-wrong-response-try-over', 'YES')
+}
+
+async function exec() {
+  isMainWin.value = window.location.href.includes('win=main')
+  if (isMainWin.value) {
+    TopicsVal.value = Topics.topics
+      .map((item) => {
+        item.choices = item.choices.sort(() => Math.random() - 0.5)
+        return item
+      })
+      .sort(() => Math.random() - 0.5)
+    localStorage.setItem('two-win-auditory-right-or-wrong-response-init-data', JSON.stringify(TopicsVal.value))
+    setTimeout(() => {
+      showNextBtn.value = true
+    }, 5200)
+  } else {
+    taskBeginTime = Date.now()
+    VoiceImpRef.value.videoPlay(
+      'Speech-Auditory',
+      'static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/1.mp3'
+    )
+  }
+}
+
+onMounted(() => {
+  exec()
+
+  window.addEventListener('storage', (val) => {
+    if (isMainWin.value) {
+      if (val.key === 'two-win-auditory-right-or-wrong-response-submit-answer') {
+        TopicsVal.value[currentIndex.value].userAnswer = val.newValue!
+        localStorage.removeItem('two-win-auditory-right-or-wrong-response-submit-answer')
+      }
+
+      if (val.key === 'two-win-auditory-right-or-wrong-response-try-over') {
+        showNextBtn.value = true
+        localStorage.removeItem('two-win-auditory-right-or-wrong-response-try-over')
+      }
+    } else {
+      if (val.key === 'two-win-auditory-right-or-wrong-response-init-data' && isJSON(val.newValue!)) {
+        TopicsVal.value = JSON.parse(val.newValue!) as TopicsType[]
+        localStorage.removeItem('two-win-auditory-right-or-wrong-response-init-data')
+      }
+
+      if (val.key === 'tow-win-auditory-right-or-wrong-response-show-topics') {
+        showTopics.value = true
+        currentIndex.value = Number(val.newValue!)
+        useClickIndex.value = -1
+        VoiceImpRef.value.videoPlay(
+          'Speech-Auditory',
+          `static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/${TopicsVal.value[currentIndex.value].question}.mp3`
+        )
+        localStorage.removeItem('tow-win-auditory-right-or-wrong-response-show-topics')
+      }
+
+      if (val.key === 'two-win-auditory-right-or-wrong-response-item-check') {
+        VoiceImpRef.value.videoPlay(
+          'Speech-Auditory',
+          `static/voice/cognitiveAbility/SpeechTraining/Auditory/RightOrWrongResponse/${val.newValue}.mp3`
+        )
+        localStorage.removeItem('two-win-auditory-right-or-wrong-response-item-check')
+      }
+
+      if (val.key === 'tow-win-auditory-right-or-wrong-response-isSubmitting' && val.newValue === 'YES') {
+        isSubmitting = true
+        emits('gameOver', {
+          min: formatSeconds(Date.now() - taskBeginTime),
+          content: JSON.stringify({
+            question: Topics.question,
+            topics: TopicsVal.value
+          }),
+          score: TopicsVal.value.filter((item) => item.userAnswer === item.correct).length + ''
+        })
+        localStorage.removeItem('tow-win-auditory-right-or-wrong-response-isSubmitting')
+      }
+    }
+  })
+})
+</script>
+
+<style scoped lang="scss"></style>

+ 13 - 0
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingRightOrWrongResponse/topics.json

@@ -0,0 +1,13 @@
+{
+  "question": "请观察图片,判断图片和听到的内容是否一致",
+  "topics":
+  [
+    {
+      "question": "男孩打着伞吗?",
+      "choices": ["是", "否"],
+      "correct": "是",
+      "userAnswer": ""
+    }
+  ]
+}
+

+ 31 - 27
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingImgWordMatching/index.vue → src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingSentenceImgMatching/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <section class="auditory-word-img-matching-container flex-center flex-col wh-full relative">
-    <water-title title="图匹配" />
+  <section class="auditory-sentence-img-matching-container flex-center flex-col wh-full relative">
+    <water-title title="图匹配" />
     <div v-if="isMainWin" class="text-[42px] text-[#0F308C]">
       {{ Topics.question }}
     </div>
@@ -29,7 +29,7 @@
             <el-image
               :src="`/static/image/cognitiveAbility/SpeechTraining/${useClickIndex === index || item === TopicsVal[currentIndex].userAnswer ? 'Options-right' : 'Options-Blank'}.png`"
               fit="contain"
-              class="w-[100px] h-[100px] mt-30px"
+              class="w-[60px] h-[60px] mt-30px"
             />
           </div>
         </div>
@@ -60,8 +60,8 @@
 
 <script setup lang="ts">
 /*
- * 组件名: CATAuditoryTrainingWordImgMatching
- * 组件用途: 常规听康复训练 - 词图匹配
+ * 组件名: CATAuditoryTrainingRecognition
+ * 组件用途: 常规听康复训练 - 语音辨识
  * 创建日期: 2024/11/12
  * 编写者: JutarryWu
  */
@@ -69,7 +69,7 @@
 import { formatSeconds, isJSON } from '@/utils'
 
 defineOptions({
-  name: 'CATAuditoryTrainingWordImgMatching',
+  name: 'CATAuditoryTrainingRecognition',
   inheritAttrs: false
 })
 
@@ -99,12 +99,12 @@ const handleNext = () => {
   if (TopicsVal.value[currentIndex.value].userAnswer === '') {
     showTopics.value = true
     showNextBtn.value = false
-    localStorage.setItem('tow-win-auditory-word-img-matching-show-topics', currentIndex.value + '')
+    localStorage.setItem('tow-win-auditory-sentence-img-matching-show-topics', currentIndex.value + '')
   } else {
     let tempCount = TopicsVal.value.filter((item) => item.userAnswer !== '').length
     if (tempCount === TopicsVal.value.length) {
       isSubmitting = true
-      localStorage.setItem('tow-win-auditory-word-img-matching-isSubmitting', 'YES')
+      localStorage.setItem('tow-win-auditory-sentence-img-matching-isSubmitting', 'YES')
     } else {
       currentIndex.value++
       handleNext()
@@ -113,7 +113,7 @@ const handleNext = () => {
 }
 
 const handlePlay = () => {
-  localStorage.setItem('two-win-auditory-word-img-matching-item-check', TopicsVal.value[currentIndex.value].correct)
+  localStorage.setItem('two-win-auditory-sentence-img-matching-item-check', TopicsVal.value[currentIndex.value].correct)
 }
 
 const handleItemClick = (item: string, index: number) => {
@@ -124,7 +124,7 @@ const handleItemClick = (item: string, index: number) => {
     useClickIndex.value = index
     showSubmitBtn.value = true
     localStorage.setItem(
-      'two-win-auditory-word-img-matching-submit-answer',
+      'two-win-auditory-sentence-img-matching-submit-answer',
       TopicsVal.value[currentIndex.value].userAnswer
     )
   }
@@ -139,7 +139,7 @@ const handleSubmit = () => {
     TopicsVal.value[currentIndex.value].userAnswer === TopicsVal.value[currentIndex.value].correct ? 'right' : 'error'
   )
   showSubmitBtn.value = false
-  localStorage.setItem('two-win-auditory-word-img-matching-try-over', 'YES')
+  localStorage.setItem('two-win-auditory-sentence-img-matching-try-over', 'YES')
 }
 
 async function exec() {
@@ -151,15 +151,15 @@ async function exec() {
         return item
       })
       .sort(() => Math.random() - 0.5)
-    localStorage.setItem('two-win-auditory-word-img-matching-init-data', JSON.stringify(TopicsVal.value))
+    localStorage.setItem('two-win-auditory-sentence-img-matching-init-data', JSON.stringify(TopicsVal.value))
     setTimeout(() => {
       showNextBtn.value = true
-    }, 6600)
+    }, 5200)
   } else {
     taskBeginTime = Date.now()
     VoiceImpRef.value.videoPlay(
       'Speech-Auditory',
-      'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
+      'static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/1.mp3'
     )
   }
 }
@@ -169,37 +169,41 @@ onMounted(() => {
 
   window.addEventListener('storage', (val) => {
     if (isMainWin.value) {
-      if (val.key === 'two-win-auditory-word-img-matching-submit-answer') {
+      if (val.key === 'two-win-auditory-sentence-img-matching-submit-answer') {
         TopicsVal.value[currentIndex.value].userAnswer = val.newValue!
-        localStorage.removeItem('two-win-auditory-word-img-matching-submit-answer')
+        localStorage.removeItem('two-win-auditory-sentence-img-matching-submit-answer')
       }
 
-      if (val.key === 'two-win-auditory-word-img-matching-try-over') {
+      if (val.key === 'two-win-auditory-sentence-img-matching-try-over') {
         showNextBtn.value = true
-        localStorage.removeItem('two-win-auditory-word-img-matching-try-over')
+        localStorage.removeItem('two-win-auditory-sentence-img-matching-try-over')
       }
     } else {
-      if (val.key === 'two-win-auditory-word-img-matching-init-data' && isJSON(val.newValue!)) {
+      if (val.key === 'two-win-auditory-sentence-img-matching-init-data' && isJSON(val.newValue!)) {
         TopicsVal.value = JSON.parse(val.newValue!) as TopicsType[]
-        localStorage.removeItem('two-win-auditory-word-img-matching-init-data')
+        localStorage.removeItem('two-win-auditory-sentence-img-matching-init-data')
       }
 
-      if (val.key === 'tow-win-auditory-word-img-matching-show-topics') {
+      if (val.key === 'tow-win-auditory-sentence-img-matching-show-topics') {
         showTopics.value = true
         currentIndex.value = Number(val.newValue!)
         useClickIndex.value = -1
-        localStorage.removeItem('tow-win-auditory-word-img-matching-show-topics')
+        VoiceImpRef.value.videoPlay(
+          'Speech-Auditory',
+          `static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/${TopicsVal.value[currentIndex.value].correct}.mp3`
+        )
+        localStorage.removeItem('tow-win-auditory-sentence-img-matching-show-topics')
       }
 
-      if (val.key === 'two-win-auditory-word-img-matching-item-check') {
+      if (val.key === 'two-win-auditory-sentence-img-matching-item-check') {
         VoiceImpRef.value.videoPlay(
           'Speech-Auditory',
-          `static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/${val.newValue}.mp3`
+          `static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/${val.newValue}.mp3`
         )
-        localStorage.removeItem('two-win-auditory-word-img-matching-item-check')
+        localStorage.removeItem('two-win-auditory-sentence-img-matching-item-check')
       }
 
-      if (val.key === 'tow-win-auditory-word-img-matching-isSubmitting' && val.newValue === 'YES') {
+      if (val.key === 'tow-win-auditory-sentence-img-matching-isSubmitting' && val.newValue === 'YES') {
         isSubmitting = true
         emits('gameOver', {
           min: formatSeconds(Date.now() - taskBeginTime),
@@ -209,7 +213,7 @@ onMounted(() => {
           }),
           score: TopicsVal.value.filter((item) => item.userAnswer === item.correct).length + ''
         })
-        localStorage.removeItem('tow-win-auditory-word-img-matching-isSubmitting')
+        localStorage.removeItem('tow-win-auditory-sentence-img-matching-isSubmitting')
       }
     }
   })

+ 11 - 0
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/CATAuditoryTrainingSentenceImgMatching/topics.json

@@ -0,0 +1,11 @@
+{
+  "question": "请仔细听播放的句子,请你根据在这句话选出匹配的图片",
+  "topics":
+  [
+    {
+      "choices": ["水开了", "水龙头流水"],
+      "correct": "水开了",
+      "userAnswer": ""
+    }
+  ]
+}

+ 13 - 0
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/index.vue

@@ -29,6 +29,18 @@
           v-if="checkItems[1].active && checkItems[1].isTraining && !checkItems[1].isFinish"
           @game-over="childTaskOver"
         />
+
+        <!-- 句图匹配 -->
+        <c-a-t-auditory-training-sentence-img-matching
+          v-if="checkItems[2].active && checkItems[2].isTraining && !checkItems[2].isFinish"
+          @game-over="childTaskOver"
+        />
+
+        <!-- 是非反应 -->
+        <c-a-t-auditory-training-right-or-wrong-response
+          v-if="checkItems[3].active && checkItems[3].isTraining && !checkItems[3].isFinish"
+          @game-over="childTaskOver"
+        />
       </template>
       <template v-else>
         <!--模式选择-->
@@ -70,6 +82,7 @@
           </div>
         </div>
         <el-image
+          v-if="!isMainWin"
           src="/static/image/cognitiveAbility/SpeechTraining/start-bg.png"
           fit="contain"
           class="w-[280px] h-[90px] mt-140px cursor-pointer hover:scale-101"

+ 1 - 0
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/index.vue

@@ -56,6 +56,7 @@
         </div>
       </div>
       <el-image
+        v-if="!isMainWin"
         src="/static/image/cognitiveAbility/SpeechTraining/start-bg.png"
         fit="contain"
         class="w-[280px] h-[90px] mt-140px cursor-pointer hover:scale-101"

+ 1 - 0
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskVisualTraining/index.vue

@@ -57,6 +57,7 @@
           </div>
         </div>
         <el-image
+          v-if="!isMainWin"
           src="/static/image/cognitiveAbility/SpeechTraining/start-bg.png"
           fit="contain"
           class="w-[280px] h-[90px] mt-140px cursor-pointer hover:scale-101"