Bläddra i källkod

Merge branch 'refs/heads/20240904-zyy' into 20240604-dev

周玉佂 1 vecka sedan
förälder
incheckning
c734aed378
15 ändrade filer med 313 tillägg och 271 borttagningar
  1. BIN
      public/static/image/cognitiveAbility/SpeechTraining/OralExpression/bg.png
  2. BIN
      public/static/image/cognitiveAbility/SpeechTraining/OralExpression/苹果.png
  3. BIN
      public/static/image/cognitiveAbility/SpeechTraining/OralExpression/香蕉.png
  4. 5 1
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskAuditoryTraining/index.vue
  5. 62 32
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionName/index.vue
  6. 4 27
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionName/topics.json
  7. 64 32
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionParaphraseWords/index.vue
  8. 13 15
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionParaphraseWords/topics.json
  9. 64 32
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetell/index.vue
  10. 4 27
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetell/topics.json
  11. 64 32
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetellingSeries/index.vue
  12. 4 27
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetellingSeries/topics.json
  13. 14 35
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/index.vue
  14. 9 10
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskVisualTraining/components/diagramMap/index.vue
  15. 6 1
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskVisualTraining/index.vue

BIN
public/static/image/cognitiveAbility/SpeechTraining/OralExpression/bg.png


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


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


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

@@ -235,8 +235,12 @@ const startTask = useThrottleFn(() => {
   if (modeSelect.value === 0) {
     checkItems.value[modeCurrentIndex].isTraining = true
   } else {
+    // let tempIndex = checkItems.value.findIndex((item: CheckItem) => item.active && !item.isTraining && !item.isFinish)
+    // checkItems.value[tempIndex].isTraining = true
     let tempIndex = checkItems.value.findIndex((item: CheckItem) => item.active && !item.isTraining && !item.isFinish)
-    checkItems.value[tempIndex].isTraining = true
+    checkItems.value.forEach((item, index) => {
+      item.isTraining = tempIndex === index
+    })
   }
   taskBegin.value = true
   if (!isMainWin.value) {

+ 62 - 32
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionName/index.vue

@@ -1,12 +1,20 @@
 <template>
   <section class="auditory-word-img-matching-container flex-center flex-col wh-full relative">
-    <water-title title="词图匹配" />
+    <water-title title="命令" />
     <div v-if="isMainWin" class="text-[42px] text-[#0F308C]">
       {{ Topics.question }}
     </div>
 
     <div v-if="!isMainWin && showTopics" class="flex-center flex-col text-100px text-[#0F308C]">
-      {{ TopicsVal[currentIndex].correct }}
+      <!--      {{ TopicsVal[currentIndex].correct }}-->
+      <span class="text-[56px] mt-[90px]">请说出看到物体的名称</span>
+      <div v-if="tipsFlag" class="text-50px w-[80%]">{{ TopicsVal[currentIndex].Tips }}</div>
+      <el-image
+        :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"
+        fit="contain"
+        class="w-[440px] h-[440px] mt-150px cursor-pointer hover:scale-101"
+      />
+      <!--      @click="handlePlay"-->
     </div>
     <div class="w-80% h-60% my-30px flex-center flex-col">
       <template v-if="showTopics">
@@ -17,28 +25,44 @@
           class="w-[140px] h-[140px] mb-40px cursor-pointer hover:scale-101"
           @click="handlePlay"
         />
+        <el-image
+          v-if="isMainWin"
+          :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"
+          fit="contain"
+          class="w-[240px] h-[240px] mt-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}.png`"
-                fit="contain"
-                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"
-              />
-            </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 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/OralExpression/${item}.png`"-->
+          <!--                fit="contain"-->
+          <!--                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"-->
+          <!--              />-->
+          <!--            </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]">
+    <!--    <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>-->
+
+    <div v-if="!isMainWin && showTopics" 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"
@@ -111,6 +135,7 @@ import Topics from './topics.json'
 interface TopicsType {
   choices: string[]
   correct: string
+  Tips: string
   userAnswer: string
   score: string
 }
@@ -130,7 +155,7 @@ const TopicsVal = ref<TopicsType[]>([])
 const useClickIndex = ref(-1) // 副屏 - 患者点击的选项索引
 const scoreIndex = ref(-1) // 主屏 - 医生评分选项索引
 let taskBeginTime = 0 // 任务开始时间
-
+const tipsFlag = ref(false) // 显示副屏提示
 const handleScore = (index: number) => {
   TopicsVal.value[currentIndex.value].score = index + ''
   showNextBtn.value = true
@@ -144,6 +169,7 @@ const handleNext = () => {
   if (TopicsVal.value[currentIndex.value].userAnswer === '') {
     showTopics.value = true
     showNextBtn.value = false
+    tipsFlag.value = false
     localStorage.setItem('tow-win-auditory-word-img-matching-show-topics', currentIndex.value + '')
   } else {
     let tempCount = TopicsVal.value.filter((item) => item.userAnswer !== '').length
@@ -151,6 +177,7 @@ const handleNext = () => {
       isSubmitting = true
       localStorage.setItem('tow-win-auditory-word-img-matching-isSubmitting', 'YES')
     } else {
+      tipsFlag.value = false
       currentIndex.value++
       showScoreArea.value = false
       scoreIndex.value = -1
@@ -161,6 +188,7 @@ const handleNext = () => {
 
 const handlePlay = () => {
   localStorage.setItem('two-win-auditory-word-img-matching-item-check', TopicsVal.value[currentIndex.value].correct)
+  tipsFlag.value = true
 }
 
 const handleItemClick = (item: string, index: number) => {
@@ -178,15 +206,17 @@ const handleItemClick = (item: string, index: number) => {
 }
 
 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'
-  )
+  // 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-word-img-matching-try-over', 'YES')
+  handleItemClick()
 }
 
 async function exec() {
@@ -201,13 +231,13 @@ async function exec() {
     localStorage.setItem('two-win-auditory-word-img-matching-init-data', JSON.stringify(TopicsVal.value))
     setTimeout(() => {
       showNextBtn.value = true
-    }, 6600)
+    }, 600)
   } else {
     taskBeginTime = Date.now()
-    VoiceImpRef.value.videoPlay(
-      'Speech-Auditory',
-      'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
-    )
+    // VoiceImpRef.value.videoPlay(
+    //   'Speech-Auditory',
+    //   'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
+    // )
   }
 }
 
@@ -246,13 +276,13 @@ onMounted(() => {
       }
 
       if (val.key === 'two-win-auditory-word-img-matching-item-check') {
+        tipsFlag.value = true
         VoiceImpRef.value.videoPlay(
           'Speech-Auditory',
           `static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/${val.newValue}-tips.mp3`
         )
         localStorage.removeItem('two-win-auditory-word-img-matching-item-check')
       }
-
       if (val.key === 'tow-win-auditory-word-img-matching-score') {
         showScoreArea.value = true
         handleScore(Number(val.newValue))

+ 4 - 27
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionName/topics.json

@@ -1,33 +1,10 @@
 {
-  "question": "请仔细听播放的词语,请你从下面的选项中选出与该词语匹配的图片",
+  "question": "请你看一些图片,根据图片说出图中的物品名称",
   "topics": [
     {
-      "choices": ["杯子", "小碗"],
-      "correct": "杯子",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["勺子", "筷子", "叉子"],
-      "correct": "筷子",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["笔", "橡皮", "书包", "书"],
-      "correct": "书",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["冰箱", "茶桌", "电视", "衣柜", "床"],
-      "correct": "电视",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["小草", "松树", "玫瑰", "向日葵", "苹果", "花花"],
-      "correct": "松树",
+      "choices": ["香蕉"],
+      "Tips": "是一种热带水果;呈弯曲的弓状,成熟后是黄色的;果肉松软,黄白色,味甜香味浓",
+      "correct": "香蕉",
       "userAnswer": "",
       "score": ""
     }

+ 64 - 32
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionParaphraseWords/index.vue

@@ -1,12 +1,22 @@
 <template>
   <section class="auditory-word-img-matching-container flex-center flex-col wh-full relative">
-    <water-title title="词图匹配" />
+    <water-title title="复述" />
     <div v-if="isMainWin" class="text-[42px] text-[#0F308C]">
       {{ Topics.question }}
     </div>
 
     <div v-if="!isMainWin && showTopics" class="flex-center flex-col text-100px text-[#0F308C]">
-      {{ TopicsVal[currentIndex].correct }}
+      <!--      {{ TopicsVal[currentIndex].correct }}-->
+      <span class="text-[56px] mt-[90px]">请跟着你听到的声音复述</span>
+      <span class="mt-[250px]">{{ TopicsVal[currentIndex].correct }}</span>
+
+      <!--      <div v-if="tipsFlag" class="text-50px w-[80%]">{{ TopicsVal[currentIndex].Tips }}</div>-->
+      <!--      <el-image-->
+      <!--        :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"-->
+      <!--        fit="contain"-->
+      <!--        class="w-[440px] h-[440px] mt-150px cursor-pointer hover:scale-101"-->
+      <!--      />-->
+      <!--      @click="handlePlay"-->
     </div>
     <div class="w-80% h-60% my-30px flex-center flex-col">
       <template v-if="showTopics">
@@ -17,28 +27,45 @@
           class="w-[140px] h-[140px] mb-40px cursor-pointer hover:scale-101"
           @click="handlePlay"
         />
+        <span v-if="isMainWin" class="text-[56px] mt-[90px]"> {{ TopicsVal[currentIndex].correct }}</span>
+        <!--        <el-image-->
+        <!--          v-if="isMainWin"-->
+        <!--          :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"-->
+        <!--          fit="contain"-->
+        <!--          class="w-[240px] h-[240px] mt-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}.png`"
-                fit="contain"
-                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"
-              />
-            </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 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/OralExpression/${item}.png`"-->
+          <!--                fit="contain"-->
+          <!--                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"-->
+          <!--              />-->
+          <!--            </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]">
+    <!--    <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>-->
+
+    <div v-if="!isMainWin && showTopics" 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"
@@ -111,6 +138,7 @@ import Topics from './topics.json'
 interface TopicsType {
   choices: string[]
   correct: string
+  Tips: string
   userAnswer: string
   score: string
 }
@@ -130,7 +158,7 @@ const TopicsVal = ref<TopicsType[]>([])
 const useClickIndex = ref(-1) // 副屏 - 患者点击的选项索引
 const scoreIndex = ref(-1) // 主屏 - 医生评分选项索引
 let taskBeginTime = 0 // 任务开始时间
-
+const tipsFlag = ref(false) // 显示副屏提示
 const handleScore = (index: number) => {
   TopicsVal.value[currentIndex.value].score = index + ''
   showNextBtn.value = true
@@ -144,6 +172,7 @@ const handleNext = () => {
   if (TopicsVal.value[currentIndex.value].userAnswer === '') {
     showTopics.value = true
     showNextBtn.value = false
+    tipsFlag.value = false
     localStorage.setItem('tow-win-auditory-word-img-matching-show-topics', currentIndex.value + '')
   } else {
     let tempCount = TopicsVal.value.filter((item) => item.userAnswer !== '').length
@@ -151,6 +180,7 @@ const handleNext = () => {
       isSubmitting = true
       localStorage.setItem('tow-win-auditory-word-img-matching-isSubmitting', 'YES')
     } else {
+      tipsFlag.value = false
       currentIndex.value++
       showScoreArea.value = false
       scoreIndex.value = -1
@@ -161,6 +191,7 @@ const handleNext = () => {
 
 const handlePlay = () => {
   localStorage.setItem('two-win-auditory-word-img-matching-item-check', TopicsVal.value[currentIndex.value].correct)
+  tipsFlag.value = true
 }
 
 const handleItemClick = (item: string, index: number) => {
@@ -178,13 +209,14 @@ const handleItemClick = (item: string, index: number) => {
 }
 
 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'
-  )
+  // if (TopicsVal.value[currentIndex.value].userAnswer === '') {
+  //   ElMessage.warning('请先完成当前题目!')
+  //   return
+  // }
+  // VoiceImpRef.value.videoPlay(
+  //   TopicsVal.value[currentIndex.value].userAnswer === TopicsVal.value[currentIndex.value].correct ? 'right' : 'error'
+  // )
+  handleItemClick()
   showSubmitBtn.value = false
   localStorage.setItem('two-win-auditory-word-img-matching-try-over', 'YES')
 }
@@ -201,13 +233,13 @@ async function exec() {
     localStorage.setItem('two-win-auditory-word-img-matching-init-data', JSON.stringify(TopicsVal.value))
     setTimeout(() => {
       showNextBtn.value = true
-    }, 6600)
+    }, 600)
   } else {
     taskBeginTime = Date.now()
-    VoiceImpRef.value.videoPlay(
-      'Speech-Auditory',
-      'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
-    )
+    // VoiceImpRef.value.videoPlay(
+    //   'Speech-Auditory',
+    //   'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
+    // )
   }
 }
 
@@ -246,13 +278,13 @@ onMounted(() => {
       }
 
       if (val.key === 'two-win-auditory-word-img-matching-item-check') {
+        tipsFlag.value = true
         VoiceImpRef.value.videoPlay(
           'Speech-Auditory',
           `static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/${val.newValue}-tips.mp3`
         )
         localStorage.removeItem('two-win-auditory-word-img-matching-item-check')
       }
-
       if (val.key === 'tow-win-auditory-word-img-matching-score') {
         showScoreArea.value = true
         handleScore(Number(val.newValue))

+ 13 - 15
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionParaphraseWords/topics.json

@@ -1,33 +1,31 @@
 {
-  "question": "请仔细听播放的词语,请你从下面的选项中选出与该词语匹配的图片",
+  "question": "请跟着你听到的声音复述",
   "topics": [
     {
-      "choices": ["杯子", "小碗"],
-      "correct": "杯子",
+      "choices": ["b"],
+      "Tips": "",
+      "correct": "b",
       "userAnswer": "",
       "score": ""
     },
     {
-      "choices": ["勺子", "筷子", "叉子"],
-      "correct": "筷子",
+      "choices": ["ba"],
+      "Tips": "",
+      "correct": "ba",
       "userAnswer": "",
       "score": ""
     },
     {
-      "choices": ["笔", "橡皮", "书包", "书"],
-      "correct": "书",
+      "choices": ["bao"],
+      "Tips": "",
+      "correct": "bao",
       "userAnswer": "",
       "score": ""
     },
     {
-      "choices": ["冰箱", "茶桌", "电视", "衣柜", "床"],
-      "correct": "电视",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["小草", "松树", "玫瑰", "向日葵", "苹果", "花花"],
-      "correct": "松树",
+      "choices": ["包子"],
+      "Tips": "",
+      "correct": "包子",
       "userAnswer": "",
       "score": ""
     }

+ 64 - 32
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetell/index.vue

@@ -1,12 +1,22 @@
 <template>
   <section class="auditory-word-img-matching-container flex-center flex-col wh-full relative">
-    <water-title title="词图匹配" />
+    <water-title title="复述词语" />
     <div v-if="isMainWin" class="text-[42px] text-[#0F308C]">
       {{ Topics.question }}
     </div>
 
     <div v-if="!isMainWin && showTopics" class="flex-center flex-col text-100px text-[#0F308C]">
-      {{ TopicsVal[currentIndex].correct }}
+      <!--      {{ TopicsVal[currentIndex].correct }}-->
+      <span class="text-[56px] mt-[90px]">请跟着你听到的声音复述</span>
+      <!--      <span class="mt-[250px]">{{ TopicsVal[currentIndex].correct }}</span>-->
+
+      <div v-if="tipsFlag" class="text-50px w-[80%]">{{ TopicsVal[currentIndex].Tips }}</div>
+      <el-image
+        :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"
+        fit="contain"
+        class="w-[440px] h-[440px] mt-150px cursor-pointer hover:scale-101"
+      />
+      <!--      @click="handlePlay"-->
     </div>
     <div class="w-80% h-60% my-30px flex-center flex-col">
       <template v-if="showTopics">
@@ -17,28 +27,45 @@
           class="w-[140px] h-[140px] mb-40px cursor-pointer hover:scale-101"
           @click="handlePlay"
         />
+        <!--        <span v-if="isMainWin" class="text-[56px] mt-[90px]"> {{ TopicsVal[currentIndex].correct }}</span>-->
+        <el-image
+          v-if="isMainWin"
+          :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"
+          fit="contain"
+          class="w-[240px] h-[240px] mt-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}.png`"
-                fit="contain"
-                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"
-              />
-            </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 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/OralExpression/${item}.png`"-->
+          <!--                fit="contain"-->
+          <!--                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"-->
+          <!--              />-->
+          <!--            </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]">
+    <!--    <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>-->
+
+    <div v-if="!isMainWin && showTopics" 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"
@@ -111,6 +138,7 @@ import Topics from './topics.json'
 interface TopicsType {
   choices: string[]
   correct: string
+  Tips: string
   userAnswer: string
   score: string
 }
@@ -130,7 +158,7 @@ const TopicsVal = ref<TopicsType[]>([])
 const useClickIndex = ref(-1) // 副屏 - 患者点击的选项索引
 const scoreIndex = ref(-1) // 主屏 - 医生评分选项索引
 let taskBeginTime = 0 // 任务开始时间
-
+const tipsFlag = ref(false) // 显示副屏提示
 const handleScore = (index: number) => {
   TopicsVal.value[currentIndex.value].score = index + ''
   showNextBtn.value = true
@@ -144,6 +172,7 @@ const handleNext = () => {
   if (TopicsVal.value[currentIndex.value].userAnswer === '') {
     showTopics.value = true
     showNextBtn.value = false
+    tipsFlag.value = false
     localStorage.setItem('tow-win-auditory-word-img-matching-show-topics', currentIndex.value + '')
   } else {
     let tempCount = TopicsVal.value.filter((item) => item.userAnswer !== '').length
@@ -151,6 +180,7 @@ const handleNext = () => {
       isSubmitting = true
       localStorage.setItem('tow-win-auditory-word-img-matching-isSubmitting', 'YES')
     } else {
+      tipsFlag.value = false
       currentIndex.value++
       showScoreArea.value = false
       scoreIndex.value = -1
@@ -161,6 +191,7 @@ const handleNext = () => {
 
 const handlePlay = () => {
   localStorage.setItem('two-win-auditory-word-img-matching-item-check', TopicsVal.value[currentIndex.value].correct)
+  tipsFlag.value = true
 }
 
 const handleItemClick = (item: string, index: number) => {
@@ -178,13 +209,14 @@ const handleItemClick = (item: string, index: number) => {
 }
 
 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'
-  )
+  // if (TopicsVal.value[currentIndex.value].userAnswer === '') {
+  //   ElMessage.warning('请先完成当前题目!')
+  //   return
+  // }
+  // VoiceImpRef.value.videoPlay(
+  //   TopicsVal.value[currentIndex.value].userAnswer === TopicsVal.value[currentIndex.value].correct ? 'right' : 'error'
+  // )
+  handleItemClick()
   showSubmitBtn.value = false
   localStorage.setItem('two-win-auditory-word-img-matching-try-over', 'YES')
 }
@@ -201,13 +233,13 @@ async function exec() {
     localStorage.setItem('two-win-auditory-word-img-matching-init-data', JSON.stringify(TopicsVal.value))
     setTimeout(() => {
       showNextBtn.value = true
-    }, 6600)
+    }, 600)
   } else {
     taskBeginTime = Date.now()
-    VoiceImpRef.value.videoPlay(
-      'Speech-Auditory',
-      'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
-    )
+    // VoiceImpRef.value.videoPlay(
+    //   'Speech-Auditory',
+    //   'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
+    // )
   }
 }
 
@@ -246,13 +278,13 @@ onMounted(() => {
       }
 
       if (val.key === 'two-win-auditory-word-img-matching-item-check') {
+        tipsFlag.value = true
         VoiceImpRef.value.videoPlay(
           'Speech-Auditory',
           `static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/${val.newValue}-tips.mp3`
         )
         localStorage.removeItem('two-win-auditory-word-img-matching-item-check')
       }
-
       if (val.key === 'tow-win-auditory-word-img-matching-score') {
         showScoreArea.value = true
         handleScore(Number(val.newValue))

+ 4 - 27
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetell/topics.json

@@ -1,33 +1,10 @@
 {
-  "question": "请仔细听播放的词语,请你从下面的选项中选出与该词语匹配的图片",
+  "question": "请根据你看到的图片和听到的声音复述",
   "topics": [
     {
-      "choices": ["杯子", "小碗"],
-      "correct": "杯子",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["勺子", "筷子", "叉子"],
-      "correct": "筷子",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["笔", "橡皮", "书包", "书"],
-      "correct": "书",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["冰箱", "茶桌", "电视", "衣柜", "床"],
-      "correct": "电视",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["小草", "松树", "玫瑰", "向日葵", "苹果", "花花"],
-      "correct": "松树",
+      "choices": ["b"],
+      "Tips": "",
+      "correct": "苹果",
       "userAnswer": "",
       "score": ""
     }

+ 64 - 32
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetellingSeries/index.vue

@@ -1,12 +1,22 @@
 <template>
   <section class="auditory-word-img-matching-container flex-center flex-col wh-full relative">
-    <water-title title="词图匹配" />
+    <water-title title="复述系列语" />
     <div v-if="isMainWin" class="text-[42px] text-[#0F308C]">
       {{ Topics.question }}
     </div>
 
     <div v-if="!isMainWin && showTopics" class="flex-center flex-col text-100px text-[#0F308C]">
-      {{ TopicsVal[currentIndex].correct }}
+      <!--      {{ TopicsVal[currentIndex].correct }}-->
+      <span class="text-[56px] mt-[90px]">请仔细听然后复述</span>
+      <!--      <span class="mt-[250px]">{{ TopicsVal[currentIndex].correct }}</span>-->
+
+      <!--      <div v-if="tipsFlag" class="text-50px w-[80%]">{{ TopicsVal[currentIndex].Tips }}</div>-->
+      <!--      <el-image-->
+      <!--        :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"-->
+      <!--        fit="contain"-->
+      <!--        class="w-[440px] h-[440px] mt-150px cursor-pointer hover:scale-101"-->
+      <!--      />-->
+      <!--      @click="handlePlay"-->
     </div>
     <div class="w-80% h-60% my-30px flex-center flex-col">
       <template v-if="showTopics">
@@ -17,28 +27,45 @@
           class="w-[140px] h-[140px] mb-40px cursor-pointer hover:scale-101"
           @click="handlePlay"
         />
+        <span v-if="isMainWin" class="text-[46px] mt-[90px]"> {{ TopicsVal[currentIndex].correct }}</span>
+        <!--        <el-image-->
+        <!--          v-if="isMainWin"-->
+        <!--          :src="`/static/image/cognitiveAbility/SpeechTraining/OralExpression/${TopicsVal[currentIndex].correct}.png`"-->
+        <!--          fit="contain"-->
+        <!--          class="w-[240px] h-[240px] mt-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}.png`"
-                fit="contain"
-                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"
-              />
-            </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 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/OralExpression/${item}.png`"-->
+          <!--                fit="contain"-->
+          <!--                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"-->
+          <!--              />-->
+          <!--            </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]">
+    <!--    <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>-->
+
+    <div v-if="!isMainWin && showTopics" 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"
@@ -111,6 +138,7 @@ import Topics from './topics.json'
 interface TopicsType {
   choices: string[]
   correct: string
+  Tips: string
   userAnswer: string
   score: string
 }
@@ -130,7 +158,7 @@ const TopicsVal = ref<TopicsType[]>([])
 const useClickIndex = ref(-1) // 副屏 - 患者点击的选项索引
 const scoreIndex = ref(-1) // 主屏 - 医生评分选项索引
 let taskBeginTime = 0 // 任务开始时间
-
+const tipsFlag = ref(false) // 显示副屏提示
 const handleScore = (index: number) => {
   TopicsVal.value[currentIndex.value].score = index + ''
   showNextBtn.value = true
@@ -144,6 +172,7 @@ const handleNext = () => {
   if (TopicsVal.value[currentIndex.value].userAnswer === '') {
     showTopics.value = true
     showNextBtn.value = false
+    tipsFlag.value = false
     localStorage.setItem('tow-win-auditory-word-img-matching-show-topics', currentIndex.value + '')
   } else {
     let tempCount = TopicsVal.value.filter((item) => item.userAnswer !== '').length
@@ -151,6 +180,7 @@ const handleNext = () => {
       isSubmitting = true
       localStorage.setItem('tow-win-auditory-word-img-matching-isSubmitting', 'YES')
     } else {
+      tipsFlag.value = false
       currentIndex.value++
       showScoreArea.value = false
       scoreIndex.value = -1
@@ -161,6 +191,7 @@ const handleNext = () => {
 
 const handlePlay = () => {
   localStorage.setItem('two-win-auditory-word-img-matching-item-check', TopicsVal.value[currentIndex.value].correct)
+  tipsFlag.value = true
 }
 
 const handleItemClick = (item: string, index: number) => {
@@ -178,13 +209,14 @@ const handleItemClick = (item: string, index: number) => {
 }
 
 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'
-  )
+  // if (TopicsVal.value[currentIndex.value].userAnswer === '') {
+  //   ElMessage.warning('请先完成当前题目!')
+  //   return
+  // }
+  // VoiceImpRef.value.videoPlay(
+  //   TopicsVal.value[currentIndex.value].userAnswer === TopicsVal.value[currentIndex.value].correct ? 'right' : 'error'
+  // )
+  handleItemClick()
   showSubmitBtn.value = false
   localStorage.setItem('two-win-auditory-word-img-matching-try-over', 'YES')
 }
@@ -201,13 +233,13 @@ async function exec() {
     localStorage.setItem('two-win-auditory-word-img-matching-init-data', JSON.stringify(TopicsVal.value))
     setTimeout(() => {
       showNextBtn.value = true
-    }, 6600)
+    }, 600)
   } else {
     taskBeginTime = Date.now()
-    VoiceImpRef.value.videoPlay(
-      'Speech-Auditory',
-      'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
-    )
+    // VoiceImpRef.value.videoPlay(
+    //   'Speech-Auditory',
+    //   'static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/1.mp3'
+    // )
   }
 }
 
@@ -246,13 +278,13 @@ onMounted(() => {
       }
 
       if (val.key === 'two-win-auditory-word-img-matching-item-check') {
+        tipsFlag.value = true
         VoiceImpRef.value.videoPlay(
           'Speech-Auditory',
           `static/voice/cognitiveAbility/SpeechTraining/Auditory/WordImgMatching/${val.newValue}-tips.mp3`
         )
         localStorage.removeItem('two-win-auditory-word-img-matching-item-check')
       }
-
       if (val.key === 'tow-win-auditory-word-img-matching-score') {
         showScoreArea.value = true
         handleScore(Number(val.newValue))

+ 4 - 27
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/OralExpressionRetellingSeries/topics.json

@@ -1,33 +1,10 @@
 {
-  "question": "请仔细听播放的词语,请你从下面的选项中选出与该词语匹配的图片",
+  "question": "请仔细听下面这段声音,听完后请你复述出来",
   "topics": [
     {
-      "choices": ["杯子", "小碗"],
-      "correct": "杯子",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["勺子", "筷子", "叉子"],
-      "correct": "筷子",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["笔", "橡皮", "书包", "书"],
-      "correct": "书",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["冰箱", "茶桌", "电视", "衣柜", "床"],
-      "correct": "电视",
-      "userAnswer": "",
-      "score": ""
-    },
-    {
-      "choices": ["小草", "松树", "玫瑰", "向日葵", "苹果", "花花"],
-      "correct": "松树",
+      "choices": [],
+      "Tips": "",
+      "correct": "窗前明月光,疑是地上霜。举头望明月,低头思故乡",
       "userAnswer": "",
       "score": ""
     }

+ 14 - 35
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskOralExpression/index.vue

@@ -18,25 +18,25 @@
       class="absolute top-[50%] left-[50%] translate-[-50%] w-[1600px] h-[960px] rounded-[8px] bg-[#ffffffff] shadow-lg flex-center flex-col"
     >
       <template v-if="taskBegin">
-        <!-- 语音辨识 -->
+        <!-- 命令 -->
         <OralExpressionName
           v-if="checkItems[0].active && checkItems[0].isTraining && !checkItems[0].isFinish"
           @game-over="childTaskOver"
         />
 
-        <!-- 词图匹配 -->
+        <!-- 复述 -->
         <OralExpressionParaphraseWords
           v-if="checkItems[1].active && checkItems[1].isTraining && !checkItems[1].isFinish"
           @game-over="childTaskOver"
         />
 
-        <!-- 句图匹配 -->
+        <!-- 复述词语 -->
         <OralExpressionRetell
           v-if="checkItems[2].active && checkItems[2].isTraining && !checkItems[2].isFinish"
           @game-over="childTaskOver"
         />
 
-        <!-- 是非反应 -->
+        <!-- 复述系列语 -->
         <OralExpressionRetellingSeries
           v-if="checkItems[3].active && checkItems[3].isTraining && !checkItems[3].isFinish"
           @game-over="childTaskOver"
@@ -153,12 +153,10 @@ let modeCurrentIndex = -1 // 当前子任务索引
 
 const dialogVisible = ref(false) // 学历弹窗
 const checkItems = ref<CheckItem[]>([
-  { key: 1, name: '语音辨识', active: false, isTraining: false, isFinish: false },
-  { key: 2, name: '词图匹配', active: false, isTraining: false, isFinish: false },
-  { key: 3, name: '句图匹配', active: false, isTraining: false, isFinish: false },
-  { key: 4, name: '是非反应', active: false, isTraining: false, isFinish: false },
-  { key: 5, name: '执行指令', active: false, isTraining: false, isFinish: false },
-  { key: 6, name: '短文理解', active: false, isTraining: false, isFinish: false }
+  { key: 1, name: '命令', active: false, isTraining: false, isFinish: false },
+  { key: 2, name: '复述', active: false, isTraining: false, isFinish: false },
+  { key: 3, name: '复述词语', active: false, isTraining: false, isFinish: false },
+  { key: 4, name: '复述系列语', active: false, isTraining: false, isFinish: false }
 ])
 
 const closeDialog = () => {
@@ -224,7 +222,11 @@ const startTask = useThrottleFn(() => {
     checkItems.value[modeCurrentIndex].isTraining = true
   } else {
     let tempIndex = checkItems.value.findIndex((item: CheckItem) => item.active && !item.isTraining && !item.isFinish)
-    checkItems.value[tempIndex].isTraining = true
+    checkItems.value.forEach((item, index) => {
+      item.isTraining = tempIndex === index
+    })
+    // let tempIndex = checkItems.value.findIndex((item: CheckItem) => item.active && !item.isTraining && !item.isFinish)
+    // checkItems.value[tempIndex].isTraining = true
   }
   taskBegin.value = true
   if (!isMainWin.value) {
@@ -332,33 +334,10 @@ onMounted(() => {
 </script>
 
 <style scoped lang="scss">
-//.boston-container {
-//  background: url('/static/image/cognitiveAbility/SpeechTraining/Auditory/bg.png') no-repeat 0 0 / 100% 100% border-box
-//    fixed;
-//
-//  .el-button + .el-button {
-//    margin-left: 0;
-//  }
-//
-//  .active {
-//    background: url('/static/image/cognitiveAbility/SpeechTraining/item-active.png') no-repeat 0 0 / 100% 100%
-//      border-box border-box fixed;
-//  }
-//
-//  .normal {
-//    background: url('/static/image/cognitiveAbility/SpeechTraining/item.png') no-repeat 0 0 / 100% 100% border-box
-//      border-box fixed;
-//  }
-//
-//  .choice-bg {
-//    background: url('/static/image/cognitiveAbility/SpeechTraining/tips-bg.png') no-repeat 0 0 / 100% 100% border-box
-//      border-box fixed;
-//  }
-//}
 .boston-container {
   //background: url('/static/image/cognitiveAbility/SpeechTraining/Visual/bg.png') no-repeat 0 0 / 100% 100% border-box
   //  fixed;
-  background-image: url('/static/image/cognitiveAbility/SpeechTraining/Visual/bg.png');
+  background-image: url('/static/image/cognitiveAbility/SpeechTraining/OralExpression/bg.png');
   background-size: 100% 100%;
   background-position: center center;
 

+ 9 - 10
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityTaskVisualTraining/components/diagramMap/index.vue

@@ -1,13 +1,12 @@
 <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>
 
     <div v-if="!isMainWin && showTopics" class="flex-center flex-col text-100px text-[#0F308C]">
       {{ TopicsVal[currentIndex].correct }}
-      <!--      <div v-if="tipsFlag" class="text-50px">{{ TopicsVal[currentIndex].Tips }}</div>-->
     </div>
     <div class="w-80% h-60% my-30px flex-center flex-col">
       <template v-if="showTopics">
@@ -28,7 +27,7 @@
               <el-image
                 :src="`/static/image/cognitiveAbility/SpeechTraining/Visual/${item}.png`"
                 fit="contain"
-                class="w-[120px] h-[120px] cursor-pointer mt-30px"
+                class="w-[180px] h-[180px] cursor-pointer mt-30px rounded-8px"
               />
             </div>
             <el-image
@@ -75,7 +74,7 @@
 import { formatSeconds, isJSON } from '@/utils'
 
 defineOptions({
-  name: 'diagramMap',
+  name: 'CATAuditoryTrainingRecognition',
   inheritAttrs: false
 })
 
@@ -160,13 +159,13 @@ async function exec() {
     localStorage.setItem('two-win-auditory-sentence-img-matching-init-data', JSON.stringify(TopicsVal.value))
     setTimeout(() => {
       showNextBtn.value = true
-    }, 200)
+    }, 5200)
   } else {
     taskBeginTime = Date.now()
-    // VoiceImpRef.value.videoPlay(
-    //   'Speech-Auditory',
-    //   'static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/1.mp3'
-    // )
+    VoiceImpRef.value.videoPlay(
+      'Speech-Auditory',
+      'static/voice/cognitiveAbility/SpeechTraining/Auditory/SentenceImgMatching/1.mp3'
+    )
   }
 }
 

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

@@ -235,8 +235,13 @@ const startTask = useThrottleFn(() => {
   if (modeSelect.value === 0) {
     checkItems.value[modeCurrentIndex].isTraining = true
   } else {
+    // let tempIndex = checkItems.value.findIndex((item: CheckItem) => item.active && !item.isTraining && !item.isFinish)
+    // checkItems.value[tempIndex].isTraining = true
     let tempIndex = checkItems.value.findIndex((item: CheckItem) => item.active && !item.isTraining && !item.isFinish)
-    checkItems.value[tempIndex].isTraining = true
+    console.log(tempIndex, 'tempIndex241')
+    checkItems.value.forEach((item, index) => {
+      item.isTraining = tempIndex === index
+    })
   }
   taskBegin.value = true
   if (!isMainWin.value) {