Ver código fonte

部分BUG修复

JutarryWu 4 dias atrás
pai
commit
b4cc855cbb
78 arquivos alterados com 340 adições e 355 exclusões
  1. 14 14
      src/api/tester/case/index.ts
  2. 1 1
      src/api/tester/evaluation/stRecord.ts
  3. 1 1
      src/api/tester/rehabilitation/training/plain/index.ts
  4. 1 1
      src/components/Chat/Avatar/index.vue
  5. 11 34
      src/components/Chat/ChatComponent/index.vue
  6. 3 3
      src/components/Chat/EditDiv/index.vue
  7. 7 4
      src/components/Chat/MessageItem/index.vue
  8. 17 16
      src/components/Chat/emoji-selector/index.vue
  9. 4 4
      src/components/SimpleTitle/index.vue
  10. 4 4
      src/components/VideoTemp/index.vue
  11. 19 13
      src/components/WuInput/InputWithBorder/index.vue
  12. 1 1
      src/lang/package/zh-cn.ts
  13. 1 1
      src/utils/index.ts
  14. 4 4
      src/views/doctor/chat/index.vue
  15. 3 3
      src/views/evaluate/content/index.vue
  16. 3 3
      src/views/evaluate/device/index.vue
  17. 2 2
      src/views/gameCenter/components/games/ADLPower/index.vue
  18. 6 6
      src/views/gameCenter/components/games/AssignTraining/components/ATMainShow/index.vue
  19. 15 9
      src/views/gameCenter/components/games/AssignTraining/components/VirtualKeyboardNumberInput/index.vue
  20. 2 2
      src/views/gameCenter/components/games/AssignTraining/index.vue
  21. 7 7
      src/views/gameCenter/components/games/BreadthTraining/components/BTRandomPentagram/index.vue
  22. 1 1
      src/views/gameCenter/components/games/BreadthTraining/index.vue
  23. 3 4
      src/views/gameCenter/components/games/CalculationExercises/components/CExercisesMainShow/index.vue
  24. 2 2
      src/views/gameCenter/components/games/CalculationExercises/index.vue
  25. 5 5
      src/views/gameCenter/components/games/CalculationRules/components/CRRuleShow/index.vue
  26. 5 5
      src/views/gameCenter/components/games/CharacterMemory/components/CharacterMemoryChild/index.vue
  27. 3 3
      src/views/gameCenter/components/games/CharacterMemory/index.vue
  28. 2 2
      src/views/gameCenter/components/games/CocosDialog/index.vue
  29. 4 4
      src/views/gameCenter/components/games/Computation/components/CTopicShow/index.vue
  30. 2 3
      src/views/gameCenter/components/games/Computation/index.vue
  31. 9 9
      src/views/gameCenter/components/games/Computation/topics.json
  32. 2 2
      src/views/gameCenter/components/games/ConceptFormation/index.vue
  33. 18 17
      src/views/gameCenter/components/games/CountingDots/components/CountingDotsChild/index.vue
  34. 3 4
      src/views/gameCenter/components/games/CountingDots/index.vue
  35. 3 3
      src/views/gameCenter/components/games/DigitalUnderstanding/components/DUMainShow/index.vue
  36. 3 8
      src/views/gameCenter/components/games/DigitalUnderstanding/components/FluidDnd/index.vue
  37. 2 2
      src/views/gameCenter/components/games/DigitalUnderstanding/index.vue
  38. 4 4
      src/views/gameCenter/components/games/FindNumberTraining/index.vue
  39. 2 2
      src/views/gameCenter/components/games/FixedTransfer/index.vue
  40. 2 2
      src/views/gameCenter/components/games/LogicalReasoning/components/numMdel/index.vue
  41. 2 2
      src/views/gameCenter/components/games/LogicalReasoning/index.vue
  42. 2 2
      src/views/gameCenter/components/games/ObjectRecognition/index.vue
  43. 4 4
      src/views/gameCenter/components/games/PicturePuzzle/components/PicturePuzzleChild/index.vue
  44. 2 2
      src/views/gameCenter/components/games/PicturePuzzle/index.vue
  45. 3 3
      src/views/gameCenter/components/games/ResidueRecognition/index.vue
  46. 4 4
      src/views/gameCenter/components/games/SeriesInference/components/SeriesInferenceChild/index.vue
  47. 2 2
      src/views/gameCenter/components/games/SeriesInference/index.vue
  48. 2 2
      src/views/gameCenter/components/games/SetTransferTest/index.vue
  49. 2 2
      src/views/gameCenter/components/games/SpatialPositioning/index.vue
  50. 8 8
      src/views/gameCenter/components/games/TransferTraining/components/TTShapeShow/index.vue
  51. 3 3
      src/views/gameCenter/components/games/TransferTraining/index.vue
  52. 4 4
      src/views/gameCenter/components/games/VerbalMemory/index.vue
  53. 2 2
      src/views/gameCenter/components/games/WorkingMemory/components/ability/index.vue
  54. 2 2
      src/views/gameCenter/components/games/WorkingMemory/components/blend/index.vue
  55. 2 2
      src/views/gameCenter/components/games/WorkingMemory/components/vaista/index.vue
  56. 2 2
      src/views/gameCenter/components/games/WorkingMemory/index.vue
  57. 3 3
      src/views/information/chatList/index.vue
  58. 1 1
      src/views/information/manage/doc.vue
  59. 1 1
      src/views/login/components/login/index.vue
  60. 1 1
      src/views/login/components/register/index.vue
  61. 1 1
      src/views/login/components/resetPsw/index.vue
  62. 1 1
      src/views/myTest/test/index.vue
  63. 5 5
      src/views/system/user/index.vue
  64. 4 4
      src/views/tester/components/AddTester/index.vue
  65. 4 4
      src/views/tester/components/CaseInformation/CaseAdd/index.vue
  66. 4 4
      src/views/tester/components/CaseInformation/CaseLog/index.vue
  67. 11 22
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilitySellingTest/index.vue
  68. 11 22
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityStarShapedSales/index.vue
  69. 1 1
      src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityWisconsin/index.vue
  70. 2 2
      src/views/tester/components/RehabilitationGoals/index.vue
  71. 7 2
      src/views/tester/components/RehabilitationTraining/RehabilitationTrainingAchievement/components/RehabilitationTrainingDetailAnalysis/index.vue
  72. 9 1
      src/views/tester/components/RehabilitationTraining/RehabilitationTrainingAchievement/index.vue
  73. 2 2
      src/views/tester/components/RehabilitationTraining/RehabilitationTrainingAdd/components/RehabilitationTrainingAddTestItem/index.vue
  74. 2 2
      src/views/tester/manage/manage/components/TableHeaderDiv/index.vue
  75. 14 4
      src/views/tester/manage/manage/components/TableInfoItem/index.vue
  76. 2 2
      src/views/tester/manage/manage/components/TableInfoLine/index.vue
  77. 4 6
      src/views/tester/manage/rehabilitationTraining/add/index.vue
  78. 3 3
      src/views/tester/manage/rehabilitationTraining/training/index.vue

+ 14 - 14
src/api/tester/case/index.ts

@@ -5,9 +5,9 @@ const USER_BASE_URL = '/patcase'
 
 class CaseInfoAPI {
   /**
-   * 获取病列表
+   * 获取病列表
    *
-   * @returns 病名称、编码等
+   * @returns 病名称、编码等
    */
   static getPage(queryParams: CaseInfoQuery) {
     return request<any, PageResult<CaseInfoVO[]>>({
@@ -17,9 +17,9 @@ class CaseInfoAPI {
     })
   }
   /**
-   * 获取病列表
+   * 获取病列表
    *
-   * @returns 病名称、编码等
+   * @returns 病名称、编码等
    */
   static getList() {
     return request<any, CaseInfoVO[]>({
@@ -29,9 +29,9 @@ class CaseInfoAPI {
   }
 
   /**
-   * 添加病
+   * 添加病
    *
-   * @param data 病表单数据
+   * @param data 病表单数据
    */
   static add(data: CaseInfoVO) {
     return request({
@@ -42,9 +42,9 @@ class CaseInfoAPI {
   }
 
   /**
-   * 修改病
+   * 修改病
    *
-   * @param data 病表单数据
+   * @param data 病表单数据
    */
   static update(data: CaseInfoVO) {
     return request({
@@ -55,9 +55,9 @@ class CaseInfoAPI {
   }
 
   /**
-   * 删除病
+   * 删除病
    *
-   * @param id 病Id
+   * @param id 病Id
    */
   static deleteById(id: string) {
     return request({
@@ -69,9 +69,9 @@ class CaseInfoAPI {
 
 export default CaseInfoAPI
 
-/** 病信息 */
+/** 病信息 */
 export interface CaseInfoVO {
-  /** 病ID */
+  /** 病ID */
   id?: string
   /** 医生 */
   doctor?: UserPageVO
@@ -95,7 +95,7 @@ export interface CaseInfoVO {
   status?: string
   /** 格斯拉得分 */
   score?: string
-  /** 病创建时间 */
+  /** 病创建时间 */
   ctime?: string
   /** 原因 **/
   reason?: string
@@ -108,7 +108,7 @@ export interface CaseInfoVO {
 }
 
 /**
- * 病查询对象
+ * 病查询对象
  */
 export interface CaseInfoQuery extends PageQuery {
   /** 医生ID */

+ 1 - 1
src/api/tester/evaluation/stRecord.ts

@@ -116,7 +116,7 @@ export default EvaluationSTRecordInfoAPI
 export interface EvaluationSTRecordInfoVO {
   /** 量表和认知任务记录ID */
   id?: string
-  /** 病ID */
+  /** 病ID */
   caseId?: string
   /** 评定ID */
   evaluationId?: string

+ 1 - 1
src/api/tester/rehabilitation/training/plain/index.ts

@@ -151,7 +151,7 @@ export interface RTPlanMgrQuery {
   patId?: string
   /** 医生ID */
   doctorId?: string
-  /** 病ID */
+  /** 病ID */
   caseId?: string
   /** 游戏对象 */
   game?: GameManageVO

+ 1 - 1
src/components/Chat/Avatar/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-avatar shape="square" :size="props.size" :src="url" fit="cover" />
+  <el-avatar shape="square" :size="props.size" :src="url" fit="cover" class="!bg-transparent" />
 </template>
 
 <script setup lang="ts">

+ 11 - 34
src/components/Chat/ChatComponent/index.vue

@@ -1,7 +1,7 @@
 <template>
   <section class="chat-container">
     <div class="h-[80px] flex-y-center flex-row top">
-      <avatar :img="userInfos.avatar" size="large" class="ml-[32px]" />
+      <avatar :img="userInfos?.avatar || doctorInfo?.avatar" size="large" class="ml-[32px]" />
       <span class="ml-[32px] text-[26px] color-[#414D55]">{{ doctorInfo.name }}</span>
     </div>
     <div class="chat-main">
@@ -28,7 +28,7 @@
           :fileTypes="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'zip', 'rar']"
           @upload-success="uploadSuccess"
         >
-          <svg-icon v-if="$props.uploadFileShow" icon-class="annex" size="30px" class="mr-[12px]" />
+          <svg-icon v-if="props.uploadFileShow" icon-class="annex" size="30px" class="mr-[12px]" />
         </file-upload>
       </div>
       <div class="edit-div-area">
@@ -47,19 +47,14 @@
  * 编写者: JutarryWu
  */
 import { getCurrentInstance } from 'vue'
-
-import dayjs from 'dayjs'
 import ChatUtils from '@/utils/ChatUtils'
-import EditDiv from '@/components/Chat/EditDiv/index.vue'
+import dayjs from 'dayjs'
 import MessageAPI from '@/api/message'
 import UserAPI, { UserPageQuery, UserPageVO } from '@/api/user'
-// import { data } from 'autoprefixer'
 import { useUserStore } from '@/store'
-import { id } from 'element-plus/es/locale'
-import { text } from 'stream/consumers'
 
 const instance = getCurrentInstance()
-const $props = defineProps({
+const props = defineProps({
   userInfos: {
     type: Object
   },
@@ -68,12 +63,13 @@ const $props = defineProps({
     default: false
   }
 })
-const $state = reactive({})
-const $emits = defineEmits([])
+
+const emits = defineEmits([])
 const showFace = ref(false)
 let doctorInfo = ref({
   id: '',
-  name: ''
+  name: '',
+  avatar: ''
 })
 
 interface TempMsgItem1 {
@@ -95,25 +91,7 @@ interface IMessageItem {
 }
 const userStore = useUserStore()
 
-let messageList = ref([
-  {
-    date: null,
-    messages: [{ id: '', name: '', time: null, text: '' }]
-  },
-  {
-    date: null,
-    messages: [
-      { id: '', name: '', time: null, text: '' },
-      {
-        id: '',
-        name: '',
-        time: null,
-        img: '',
-        text: ''
-      }
-    ]
-  }
-])
+let messageList = ref([])
 let userMessageList = ref([])
 let userMessageLists = ref([])
 const messageContent = ref('')
@@ -232,7 +210,7 @@ const changeText = (value: any): void => {
 }
 function someChildMethod(data) {
   console.log('woqu', data)
-  doctorInfo.value = { name: data.name, id: data.id }
+  doctorInfo.value = { name: data.name, id: data.id, avatar: data.avatar }
   console.log(doctorInfo.value, '272')
   gQuerys()
 }
@@ -260,7 +238,7 @@ function user_myDoctor() {
   UserAPI.user_myDoctor()
     .then((data) => {
       console.log(data, '124')
-      doctorInfo.value = { name: data.name, id: data.id }
+      doctorInfo.value = { name: data.name, id: data.id, avatar: data.avatar }
       gQuerys()
     })
     .finally(() => {})
@@ -332,7 +310,6 @@ function gQuerys() {
 onMounted(() => {
   nextTick(() => {
     ChatUtils.imageLoad('message-box')
-    doctorInfo.value = $props.userInfos
     user_myDoctor()
     gQuerys()
   })

+ 3 - 3
src/components/Chat/EditDiv/index.vue

@@ -22,8 +22,8 @@ import { computed, ref, watch, reactive, onMounted, getCurrentInstance } from 'v
 import useEmojiUniCode from '@/hooks/emoji/useEmojiUniCode'
 
 const instance = getCurrentInstance()
-const $emits = defineEmits(['changeText'])
-const $props = defineProps({})
+const emits = defineEmits(['changeText'])
+const props = defineProps({})
 const innerText = ref('')
 let messageContainer = null
 
@@ -61,7 +61,7 @@ const handlePaste = (event) => {
 }
 
 const changeText = () => {
-  $emits('changeText', useEmojiUniCode.emojiToUniCode(messageContainer.innerHTML))
+  emits('changeText', useEmojiUniCode.emojiToUniCode(messageContainer.innerHTML))
 }
 
 const keepLastIndex = (obj) => {

+ 7 - 4
src/components/Chat/MessageItem/index.vue

@@ -1,5 +1,8 @@
 <template>
-  <section class="message-item-container w-full flex flex-col mt-[16px]" :class="msg.id === userStore.user.id ? 'right' : 'left'">
+  <section
+    class="message-item-container w-full flex flex-col mt-[16px]"
+    :class="msg.id === userStore.user.id ? 'right' : 'left'"
+  >
     <div class="first-line color-[#90A1AC] text-[18px]">
       <span v-if="msg.id !== '00002'">{{ msg.name }}</span>
       <span class="ml-[40px]">{{ dayjs(msg.time).format('HH:mm') }}</span>
@@ -32,14 +35,14 @@ interface Message {
   img?: string
 }
 
-const $props = defineProps({
+const props = defineProps({
   msg: {
     type: Object,
     required: true
   }
 })
-const $state = reactive({})
-const $emits = defineEmits([])
+
+const emits = defineEmits([])
 const userStore = useUserStore()
 async function exec() {}
 

+ 17 - 16
src/components/Chat/emoji-selector/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-popover placement="top-start" :width="310" trigger="click">
+  <el-popover placement="top-start" :width="340" trigger="click">
     <emoji-picker
       native
       hide-search
@@ -7,6 +7,17 @@
       display-recent
       disable-skin-tones
       disable-sticky-group-names
+      :group-names="{
+        smileys_people: '表情人物',
+        animals_nature: '动物自然',
+        food_drink: '食物饮料',
+        activities: '活动',
+        travel_places: '旅游景点',
+        objects: '物体',
+        symbols: '符号',
+        flags: '旗帜',
+        recent: '最近使用'
+      }"
       @select="onEmojiSelect"
     />
     <template #reference>
@@ -22,7 +33,7 @@
  * 创建日期: 2024/4/19
  * 编写者: JutarryWu
  */
-import { computed, reactive, onMounted, getCurrentInstance } from 'vue'
+import { getCurrentInstance } from 'vue'
 // import picker component
 import EmojiPicker from 'vue3-emoji-picker'
 import { EmojiExt } from 'vue3-emoji-picker'
@@ -31,23 +42,13 @@ import 'vue3-emoji-picker/css'
 import useEmojiUniCode from '@/hooks/emoji/useEmojiUniCode'
 
 const instance = getCurrentInstance()
-// const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits(['emojiSelect'])
+// const props = defineProps({})
+
+const emits = defineEmits(['emojiSelect'])
 
 const onEmojiSelect = (emoji: EmojiExt) => {
-  /*
-    // result
-    {
-        i: "😚",
-        n: ["kissing face"],
-        r: "1f61a", // with skin tone
-        t: "neutral", // skin tone
-        u: "1f61a" // without tone
-    }
-    */
   instance?.proxy?.$Bus.emit('emoji-select', useEmojiUniCode.emojiToUniCode(emoji.i))
-  $emits('emojiSelect', useEmojiUniCode.emojiToUniCode(emoji.i))
+  emits('emojiSelect', useEmojiUniCode.emojiToUniCode(emoji.i))
 }
 </script>
 

+ 4 - 4
src/components/SimpleTitle/index.vue

@@ -1,6 +1,6 @@
 <template>
   <section class="simple-title-container">
-    {{ $props.title }}
+    {{ props.title }}
   </section>
 </template>
 
@@ -16,14 +16,14 @@ import { computed, reactive, onMounted, type PropType, type ComponentPublicInsta
 type RefComponent = Record<string, ComponentPublicInstance<Record<string, any>> | null>
 
 const $refs: RefComponent = reactive({})
-const $props = defineProps({
+const props = defineProps({
   title: {
     type: String,
     default: ''
   }
 })
-const $state = reactive({})
-const $emits = defineEmits([])
+
+const emits = defineEmits([])
 
 async function exec() {}
 

+ 4 - 4
src/components/VideoTemp/index.vue

@@ -18,7 +18,7 @@
  */
 import { onMounted } from 'vue'
 
-const $props = defineProps({
+const props = defineProps({
   width: {
     type: Number,
     default: 480
@@ -32,7 +32,7 @@ const $props = defineProps({
     default: false
   }
 })
-const $emits = defineEmits([])
+const emits = defineEmits([])
 
 const videoEl = ref<HTMLVideoElement>()
 const imageUrl = ref('')
@@ -49,8 +49,8 @@ const checkCamera = async () => {
     const stream = await navigator.getUserMedia({
       audio: true,
       video: {
-        width: $props.width, // 设置视频宽度
-        height: $props.height, // 设置视频高度
+        width: props.width, // 设置视频宽度
+        height: props.height, // 设置视频高度
         facingMode: 'user' // 使用前置摄像头
       }
     })

+ 19 - 13
src/components/WuInput/InputWithBorder/index.vue

@@ -1,12 +1,19 @@
 <template>
   <div class="numberBox">
     <div class="inputBox" v-for="(item, index) in props.length" :key="index">
-      <input :ref="(el) => {
-        if (el) setupRefs[index] = el as HTMLInputElement
-      }
-        " type="text" maxlength="1" :style="`border-bottom: 2px solid ${props.color}; color: ${props.color}`"
-        v-model.number="counts[index]" @input="onInputChange(index, $event as InputEvent)"
-        @keydown="handleKeyDown(index, $event)" />
+      <input
+        :ref="
+          (el) => {
+            if (el) setupRefs[index] = el as HTMLInputElement
+          }
+        "
+        type="text"
+        maxlength="1"
+        :style="`border-bottom: 2px solid ${props.color}; color: ${props.color}`"
+        v-model.number="counts[index]"
+        @input="onInputChange(index, $event as InputEvent)"
+        @keydown="handleKeyDown(index, $event)"
+      />
     </div>
   </div>
 </template>
@@ -24,7 +31,7 @@ const props = defineProps({
   }
 })
 
-const $emits = defineEmits(['inputPasswordText', 'startCountdown'])
+const emits = defineEmits(['inputPasswordText', 'startCountdown'])
 
 // 用于存储输入框的值
 const counts = ref(Array(props.length).fill(undefined))
@@ -34,12 +41,12 @@ const setupRefs = ref<Array<HTMLInputElement | null>>(new Array(props.length).fi
 const onInputChange = (currentIndex: number, event: InputEvent) => {
   // console.log(currentIndex, event, 35);
   // startCountdown
-  $emits('startCountdown')
+  emits('startCountdown')
 
   const value = (event.target as HTMLInputElement).value
   if (value && isNaN(Number(value))) {
     // 如果输入的不是数字,则清空输入框
-    ; (event.target as HTMLInputElement).value = ''
+    ;(event.target as HTMLInputElement).value = ''
   } else if (value && value !== '') {
     setTimeout(() => {
       setupRefs.value[currentIndex + 1]?.focus()
@@ -51,12 +58,11 @@ const handleKeyDown = (currentIndex: number, event: KeyboardEvent) => {
   if (currentIndex + 1 === props.length) {
     // console.log('调用服务');
     setTimeout(() => {
-      $emits('inputPasswordText', counts.value.join(''))
+      emits('inputPasswordText', counts.value.join(''))
       // nextClick()
     }, 500)
     // }
     // event.preventDefault() // 阻止默认行为(删除字符)
-
   }
   if (event.key === 'Backspace' && !counts.value[currentIndex - 1]) {
     event.preventDefault() // 阻止默认行为(删除字符)
@@ -74,7 +80,7 @@ const reset = () => {
 }
 // watchEffect(() => {
 //   if (counts.value.filter((item) => typeof item !== 'undefined').length === props.length) {
-//     $emits('inputPasswordText', counts.value.join(''))
+//     emits('inputPasswordText', counts.value.join(''))
 //     // setupRefs.value[0]?.focus()
 //     // counts.value = []
 //   }
@@ -113,7 +119,7 @@ defineExpose({
     outline: none;
     // width: 67px;
     // height: 73px;
-    background: #E7EDFF;
+    background: #e7edff;
     border-radius: 5px;
   }
 

+ 1 - 1
src/lang/package/zh-cn.ts

@@ -35,7 +35,7 @@ export default {
     capsLock: '大写锁定已打开',
     message: {
       username: {
-        required: '请输入用户名'
+        required: '请输入账号'
       },
       password: {
         required: '请输入密码',

+ 1 - 1
src/utils/index.ts

@@ -302,7 +302,7 @@ export function formatSeconds(fmtSeconds: number) {
   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)
-  const millisecond = fmtSeconds % 1000
+  const millisecond = (fmtSeconds % 1000).toFixed(0)
 
   if (hours === 0) {
     if (hours === 0 && minutes === 0) {

+ 4 - 4
src/views/doctor/chat/index.vue

@@ -6,13 +6,13 @@
 
 <script setup lang="ts">
 /*
- * 组件名: index
- * 组件用途: XXX
+ * 组件名: MyDoctorChat
+ * 组件用途: 我的医生聊天(患者)
  * 创建日期: 2024/5/8
  * 编写者: JutarryWu
  */
-const $props = defineProps({})
-const $emits = defineEmits([])
+const props = defineProps({})
+const emits = defineEmits([])
 
 async function exec() {}
 

+ 3 - 3
src/views/evaluate/content/index.vue

@@ -16,9 +16,9 @@ import { computed, reactive, onMounted, type PropType, type ComponentPublicInsta
 type RefComponent = Record<string, ComponentPublicInstance<Record<string, any>> | null>
 
 const $refs: RefComponent = reactive({})
-const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits([])
+const props = defineProps({})
+
+const emits = defineEmits([])
 
 async function exec() {}
 

+ 3 - 3
src/views/evaluate/device/index.vue

@@ -37,9 +37,9 @@ import { computed, reactive, onMounted, type PropType, type ComponentPublicInsta
 type RefComponent = Record<string, ComponentPublicInstance<Record<string, any>> | null>
 
 const $refs: RefComponent = reactive({})
-const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits([])
+const props = defineProps({})
+
+const emits = defineEmits([])
 const options = Array.from({ length: 10 }).map((_, idx) => ({
   value: `${idx + 1}`,
   label: `${idx + 1}`

+ 2 - 2
src/views/gameCenter/components/games/ADLPower/index.vue

@@ -89,12 +89,12 @@ let currentNumber = 0
 // 每个等级的最大试次 15
 const maxNumber = 3
 let timerId: any
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'ADLCapability')
+  emits('gameOver', 'ADLCapability')
 }
 
 const instance = getCurrentInstance()

+ 6 - 6
src/views/gameCenter/components/games/AssignTraining/components/ATMainShow/index.vue

@@ -89,14 +89,14 @@ import KeyJ from '@/assets/images/key/key_J.png'
 import KeyJPress from '@/assets/images/key/key_J_press.png'
 import { getRandomInt } from '@/utils'
 
-const $props = defineProps({
+const props = defineProps({
   currentLevel: {
     type: Number,
     default: 0
   }
 })
-const $state = reactive({})
-const $emits = defineEmits(['readyBegin', 'loopEnd'])
+
+const emits = defineEmits(['readyBegin', 'loopEnd'])
 const VKNInputRef = ref()
 
 const showAngleDiv = ref(false)
@@ -141,11 +141,11 @@ const beginLoop = () => {
   initData()
   // 形状显示逻辑
   showAngleType.value = getRandomInt(1, 2) // 1: 长方形 2: 其他
-  let random_angleShowIndex = showAngleType.value === 1 ? 0 : $props.currentLevel + 1
+  let random_angleShowIndex = showAngleType.value === 1 ? 0 : props.currentLevel + 1
   showAngle.value[random_angleShowIndex] = true
 
   // 文字显示逻辑
-  let range = textContentRange[$props.currentLevel]
+  let range = textContentRange[props.currentLevel]
   textContent.value = getRandomInt(range[0], range[1])
 
   // 形状文字左右顺序显示逻辑
@@ -208,7 +208,7 @@ const confirmText = (text: string, from: number = 1) => {
       userTime_text_end = new Date().getTime()
     }
   }
-  $emits(
+  emits(
     'loopEnd',
     {
       computer_angleType: showAngleType.value === 1 ? 'F' : 'J',

+ 15 - 9
src/views/gameCenter/components/games/AssignTraining/components/VirtualKeyboardNumberInput/index.vue

@@ -24,7 +24,7 @@
 import { useLightCard } from './use-light-card'
 import { reactive } from 'vue'
 
-const $emits = defineEmits(['confirmText'])
+const emits = defineEmits(['confirmText'])
 
 const inhibitInput = ref(false) // 禁止输入
 
@@ -41,34 +41,40 @@ const { cardRef: cardRef10 } = useLightCard()
 const { cardRef: cardRef11 } = useLightCard()
 const { cardRef: cardRef12 } = useLightCard()
 
-let textList: number[] = reactive([])
+let textList: number[] = ref([])
 
 const numberPress = (num: number) => {
-  if (textList.length < 5) {
-    textList.push(num)
-    if (textList.length >= 5) {
+  if (textList.value.length < 5) {
+    textList.value.push(num)
+    if (textList.value.length >= 5) {
       inhibitInput.value = true
     }
   }
 }
 
 const deleteText = () => {
-  textList.pop()
-  if (textList.length < 5) {
+  textList.value.pop()
+  if (textList.value.length < 5) {
     inhibitInput.value = false
   }
 }
 
 const confirmText = () => {
-  $emits('confirmText', textList.join(''), 0)
+  emits('confirmText', textList.value.join(''), 0)
 }
 
 const confirmTextEnding = () => {
-  return textList.join('')
+  return textList.value.join('')
+}
+
+const resetText = () => {
+  console.log('---22')
+  return (textList.value = [])
 }
 
 // 暴露变量
 defineExpose({
+  resetText,
   confirmTextEnding
 })
 </script>

+ 2 - 2
src/views/gameCenter/components/games/AssignTraining/index.vue

@@ -39,14 +39,14 @@ interface IMainData {
   dataList: any[]
 }
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const ATMainShowRef = ref()
 const handleClose = (done: () => void) => {
   if (ATMainShowRef.value) {
     ATMainShowRef.value.removeKeyEventListener()
   }
-  $emits('gameOver', 'AssignTraining')
+  emits('gameOver', 'AssignTraining')
 }
 const currentLevel = ref(0) // 当前难度
 const currentLevelName = ref(['难度一', '难度二', '难度三', '难度四']) // 当前难度

+ 7 - 7
src/views/gameCenter/components/games/BreadthTraining/components/BTRandomPentagram/index.vue

@@ -29,7 +29,7 @@ interface pentagram {
   angle: number
 }
 
-const $props = defineProps({
+const props = defineProps({
   count: {
     type: Number,
     default: 5
@@ -43,8 +43,8 @@ const $props = defineProps({
     default: false
   }
 })
-const $state = reactive({})
-const $emits = defineEmits(['reOver'])
+
+const emits = defineEmits(['reOver'])
 const pentagramList = ref<pentagram[]>([])
 
 const generateRandomAngle = () => {
@@ -61,8 +61,8 @@ const generateRandomAngle = () => {
 const generateRandomPoints = (count: number, minDistance: number, width: number, height: number) => {
   const points = []
   while (points.length < count) {
-    const x = Math.random() * (width - $props.minDistance - 88)
-    const y = Math.random() * (height - $props.minDistance - 88)
+    const x = Math.random() * (width - props.minDistance - 88)
+    const y = Math.random() * (height - props.minDistance - 88)
     let validPoint = true
     for (let i = 0; i < points.length; i++) {
       const p = points[i]
@@ -82,8 +82,8 @@ const generateRandomPoints = (count: number, minDistance: number, width: number,
 }
 
 const reGeneratePentagramList = () => {
-  pentagramList.value = generateRandomPoints($props.count, $props.minDistance, 1200, 600)
-  $emits('reOver')
+  pentagramList.value = generateRandomPoints(props.count, props.minDistance, 1200, 600)
+  emits('reOver')
 }
 
 async function exec() {

+ 1 - 1
src/views/gameCenter/components/games/BreadthTraining/index.vue

@@ -59,7 +59,7 @@ interface IMainData {
   dataList: any[]
 }
 
-const $props = defineProps({
+const props = defineProps({
   visible: {
     type: Boolean,
     default: false

+ 3 - 4
src/views/gameCenter/components/games/CalculationExercises/components/CExercisesMainShow/index.vue

@@ -44,8 +44,7 @@
 import { IGameBaseChildData } from '@/views/gameCenter/components/games/type'
 import { shuffle } from '@/utils'
 
-const $state = reactive({})
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+const emits = defineEmits(['beginLoop', 'endLoop'])
 const showTopics = ref(false)
 const showChoiceIndex = ref(-1)
 const showData = ref<IGameBaseChildData>({
@@ -88,12 +87,12 @@ const choiceClick = (choice: string, choiceIndex: number) => {
   setTimeout(() => {
     showTopics.value = false
     showChoiceIndex.value = -1 // 隐藏点击的选项结果
-    $emits('endLoop', showData.value)
+    emits('endLoop', showData.value)
   }, 1700)
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 onMounted(() => {

+ 2 - 2
src/views/gameCenter/components/games/CalculationExercises/index.vue

@@ -26,11 +26,11 @@ import { useUserStore } from '@/store'
 import { getCurrentInstance } from 'vue'
 
 const instance = getCurrentInstance()
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const CExercisesMainShowRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'CalculationExercises')
+  emits('gameOver', 'CalculationExercises')
 }
 const currentLevel = ref(0) // 当前难度
 const topicIndexForLeve = ref([0, 0, 0, 0, 0, 0]) // 不同难度等级对应题目的当前序列

+ 5 - 5
src/views/gameCenter/components/games/CalculationRules/components/CRRuleShow/index.vue

@@ -89,9 +89,9 @@
 import { computed, reactive, onMounted } from 'vue'
 import { IGameBaseChildData } from '@/views/gameCenter/components/games/type'
 
-// const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+// const props = defineProps({})
+
+const emits = defineEmits(['beginLoop', 'endLoop'])
 
 const choiceClickFlag = ref(false) // 是否点击过选项 false表示未点击,true表示点击过
 const titles = ref([
@@ -121,7 +121,7 @@ const endChildLoop = () => {
   setTimeout(() => {
     let answeredCount = showData.list.filter((item) => item.choiceClickFlag).length
     if (answeredCount === showData.list.length) {
-      $emits('endLoop', showData.list)
+      emits('endLoop', showData.list)
     }
   }, 800)
 }
@@ -159,7 +159,7 @@ const choiceClick2 = (list: number[], index: number) => {
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 onMounted(() => {

+ 5 - 5
src/views/gameCenter/components/games/CharacterMemory/components/CharacterMemoryChild/index.vue

@@ -45,9 +45,9 @@ import { computed, reactive, onMounted } from 'vue'
 import { IGameBaseChildData } from '@/views/gameCenter/components/games/type'
 import { shuffle } from '@/utils'
 
-// const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+// const props = defineProps({})
+
+const emits = defineEmits(['beginLoop', 'endLoop'])
 const showTopics = ref(false)
 const showData = ref<IGameBaseChildData>({
   title: '',
@@ -87,12 +87,12 @@ const choiceClick = (choice: string, choiceIndex: number) => {
   }, 400)
   setTimeout(() => {
     showTopics.value = false
-    $emits('endLoop', showData)
+    emits('endLoop', showData)
   }, 1700)
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 onMounted(() => {

+ 3 - 3
src/views/gameCenter/components/games/CharacterMemory/index.vue

@@ -86,7 +86,7 @@ import { useUserStore } from '@/store'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 
-const $props = defineProps({
+const props = defineProps({
   visible: {
     type: Boolean,
     default: false
@@ -99,7 +99,7 @@ const maxTimes = 15
 let gameStartTime_record = 0
 gameTotalTime: Date.now() - gameStartTime_record
 gameStartTime_record = Date.now()
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 
 // 按键名称
@@ -145,7 +145,7 @@ const question = computed(() => {
 })
 
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'CharacterMemory')
+  emits('gameOver', 'CharacterMemory')
 }
 
 const baseData: IGameBaseData = reactive({

+ 2 - 2
src/views/gameCenter/components/games/CocosDialog/index.vue

@@ -30,10 +30,10 @@ const props = defineProps({
     default: ''
   }
 })
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'CocosDialog')
+  emits('gameOver', 'CocosDialog')
 }
 
 async function exec() {

+ 4 - 4
src/views/gameCenter/components/games/Computation/components/CTopicShow/index.vue

@@ -48,8 +48,8 @@
  */
 import { computed, reactive, onMounted } from 'vue'
 import { IComputationBaseChildData } from '@/views/gameCenter/components/games/type'
-const $state = reactive({})
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+
+const emits = defineEmits(['beginLoop', 'endLoop'])
 const choiceClickFlag = ref(false) // 是否点击过选项 false表示未点击,true表示点击过
 
 let showData: IComputationBaseChildData = reactive({
@@ -89,12 +89,12 @@ const choiceClick = (item: string, index: number) => {
     }
   }, 400)
   setTimeout(() => {
-    $emits('endLoop', item)
+    emits('endLoop', item)
   }, 800)
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 onMounted(() => {

+ 2 - 3
src/views/gameCenter/components/games/Computation/index.vue

@@ -29,17 +29,16 @@ import { computed, reactive, onMounted } from 'vue'
 import { shuffle } from '@/utils'
 import { IGameBaseData } from '@/views/gameCenter/components/games/type'
 import topics from './topics.json'
-import { number } from 'echarts'
 import { useUserStore } from '@/store'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 
 let baseTopics: any[] = []
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const CTopicShowRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'Computation')
+  emits('gameOver', 'Computation')
 }
 
 const currentIndexArray = reactive<StrKeyObj>({

+ 9 - 9
src/views/gameCenter/components/games/Computation/topics.json

@@ -56,9 +56,9 @@
     },
     {
       "title": "小丽有10支铅笔,小云有16支铅笔。小云送给小丽几支后,两人的铅笔同样多?",
-      "analysis": ["10-16=6(支)"],
-      "correctValue": "6(支)",
-      "choices": ["6(支)", "7(支)", "8(支)", "9(支)"]
+      "analysis": ["(16-10)÷2=3(支)"],
+      "correctValue": "3(支)",
+      "choices": ["6(支)", "3(支)", "8(支)", "4(支)"]
     },
     {
       "title": "小明看一本故事书,第一天看了6页,第二天看了10页,第三天从第几页看起?",
@@ -319,9 +319,9 @@
     },
     {
       "title": "一个长方形的操场周长是400米,长是宽的3倍,这个操场的宽是多少米?",
-      "analysis": ["400÷(3+1)=100(米)"],
+      "analysis": ["400÷(3+1)=100(米)"],
       "correctValue": "100分米",
-      "choices": ["100米", "99米", "98米", "97米"]
+      "choices": ["100米", "99米", "98米", "97米"]
     },
     {
       "title": "有两个同样的长方形,长是8分米,宽是4分米。如果把它们拼成一个长方形,这个长方形的周长是多少分米?",
@@ -392,10 +392,10 @@
       "choices": ["900千克", "899千克", "898千克", "905千克"]
     },
     {
-      "title": "育英小学的180名少先队员在“爱心日”帮助军属做好事。这些少先队员平均分成5队,每队分成4组活动,平均每组有多少名少先队员?",
-      "analysis": ["180÷5=36(名)"],
-      "correctValue": "36名",
-      "choices": ["36名", "35名", "34名", "37名"]
+      "title": "育英小学的180名少先队员在“爱心日”帮助军属做好事。这些少先队员平均分成5队,每队平均分成4组活动,平均每组有多少名少先队员?",
+      "analysis": ["180÷5÷4=9(名)"],
+      "correctValue": "9名",
+      "choices": ["36名", "9名", "4名", "12名"]
     },
     {
       "title": "刘叔叔带700元买化肥,买了16袋化肥,剩60元。每袋化肥的价钱是多少?",

+ 2 - 2
src/views/gameCenter/components/games/ConceptFormation/index.vue

@@ -136,14 +136,14 @@ interface IMainData {
   dataList: any[]
 }
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const FormatCountDownRef = ref()
 const VoiceImpRef = ref()
 const VideoRefIntroRight = ref()
 const VideoRefIntroWrong = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'ConceptFormation')
+  emits('gameOver', 'ConceptFormation')
 }
 
 const instance = getCurrentInstance()

+ 18 - 17
src/views/gameCenter/components/games/CountingDots/components/CountingDotsChild/index.vue

@@ -1,20 +1,21 @@
 <template>
   <section class="counting-dots-child-container bor-radius-8 w-[1866px] h-full flex-center relative gap-x-[20px]">
-    <div
-      v-if="typeof showData.level !== 'undefined'"
-      class="w-[960px] h-[960px] flex-center flex-row flex-wrap"
-      :style="{ transform: `rotate(${rotateAngle[rotateRandom]}deg)` }"
-    >
+    <div v-if="typeof showData.level !== 'undefined'" class="w-[960px] h-[960px] flex-center">
       <div
-        v-for="count in parseInt(showData.correctValue)"
-        :key="count"
-        :style="{ backgroundColor: randomColor, margin: areaWidth[showData.level - 1][2] + 'px' }"
-        class="w-[44px] h-[44px] border-rd-[50%]"
-      ></div>
+        class="w-[900px] h-[900px] flex-center flex-row flex-wrap"
+        :style="{ transform: `rotate(${rotateAngle[rotateRandom]}deg)` }"
+      >
+        <div
+          v-for="count in parseInt(showData.correctValue)"
+          :key="count"
+          :style="{ backgroundColor: randomColor, margin: areaWidth[showData.level - 1][2] + 'px' }"
+          class="w-[44px] h-[44px] border-rd-[50%]"
+        ></div>
+      </div>
     </div>
     <virtual-keyboard-number-input ref="VKNInputRef" v-if="showTextInput" @confirm-text="confirmText" />
 
-    <div class="absolute top-[310px] right-[100px]">
+    <div class="absolute top-[210px] right-[240px]">
       <wu-is-correct
         v-if="showData.choiceClickFlag && typeof showData.correct !== 'undefined'"
         :correct="showData.correct"
@@ -37,7 +38,7 @@ import { computed, reactive, onMounted } from 'vue'
 import { IGameBaseChildData } from '@/views/gameCenter/components/games/type'
 import { getRandomInt } from '@/utils'
 
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+const emits = defineEmits(['beginLoop', 'endLoop'])
 const VKNInputRef = ref()
 const VoiceImpRef = ref()
 const showTextInput = ref(true)
@@ -77,7 +78,7 @@ const beginCountDown = () => {
       countDown--
       if (countDown === 0) {
         countDownBegin.value = false
-        $emits('endLoop', showData.value)
+        emits('endLoop', showData.value)
       }
     } else {
       clearInterval(countTimer!)
@@ -112,7 +113,6 @@ const setData = (data: IGameBaseChildData) => {
     },
     ...data
   }
-  console.log('showData.value: ', showData.value)
   countDownShow.value = true
   setTimeout(() => {
     beginCountDown()
@@ -131,14 +131,15 @@ const isWithinTenPercent = (inputStr: string, correct: string) => {
 }
 
 const handleInputText = (text: string) => {
-  showData.value.correct = isWithinTenPercent(text, showData.value.correctValue)
+  showData.value.correct = isWithinTenPercent(text, showData.value.correctValue!)
   VoiceImpRef.value.videoPlay(showData.value.correct ? 'right' : 'error')
   showData.value.choiceClickFlag = true
   showData.value.endTime = Date.now()
   setTimeout(() => {
     stopCountDown()
     countDownBegin.value = false
-    $emits('endLoop', showData.value)
+    VKNInputRef.value.resetText()
+    emits('endLoop', showData.value)
   }, 1800)
 }
 
@@ -147,7 +148,7 @@ const confirmText = (text: string) => {
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 onMounted(() => {

+ 3 - 4
src/views/gameCenter/components/games/CountingDots/index.vue

@@ -27,17 +27,17 @@ import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 
 const instance = getCurrentInstance()
 const userStore = useUserStore()
-const $props = defineProps({
+const props = defineProps({
   visible: {
     type: Boolean,
     default: false
   }
 })
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const CountingDotsChildRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'CountingDots')
+  emits('gameOver', 'CountingDots')
 }
 const currentLevel = ref(0) // 当前难度
 const topicIndexForLeve = ref([0, 0, 0, 0, 0, 0]) // 不同难度等级对应题目的当前序列
@@ -197,7 +197,6 @@ const sendGameData = (finishFlag: number = 0) => {
     AchievementAPI.add(data).then(() => {
       ElMessage.success('本次训练已结束')
       handleClose(() => {})
-
       instance?.proxy?.$Bus.emit('trainList-refresh')
     })
   } else {

+ 3 - 3
src/views/gameCenter/components/games/DigitalUnderstanding/components/DUMainShow/index.vue

@@ -172,7 +172,7 @@
  * 编写者: JutarryWu
  */
 import { IDigitalUnderstandingBaseChildData } from '@/views/gameCenter/components/games/type'
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+const emits = defineEmits(['beginLoop', 'endLoop'])
 
 const titles = ref([
   '难度一: 请点击图片中水果数量多的图片。',
@@ -204,7 +204,7 @@ const endChildLoop = () => {
   setTimeout(() => {
     let answeredCount = showData.list.filter((item) => item.choiceClickFlag).length
     if (answeredCount === showData.list.length) {
-      $emits('endLoop', toRaw(showData.list))
+      emits('endLoop', toRaw(showData.list))
     }
   }, 800)
 }
@@ -267,7 +267,7 @@ const choiceClick4 = (list: number[], index: number) => {
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 onMounted(() => {

+ 3 - 8
src/views/gameCenter/components/games/DigitalUnderstanding/components/FluidDnd/index.vue

@@ -1,12 +1,7 @@
 <template>
   <div class="fluid-dnd-container w-[800px] h-[50px] flex flex-row items-center">
     <div ref="parent" class="w-[750px] h-[50px] flex flex-row justify-around">
-      <div
-        v-for="(element, index) in list"
-        :key="index"
-        :index="index"
-        class="number w-[95px] flex-center text-[32px]"
-      >
+      <div v-for="(element, index) in list" :key="index" :index="index" class="number w-[95px] flex-center text-[32px]">
         <div
           class="number-inner w-[100px] h-[40px] flex-center bor-radius-8 cursor-pointer"
           :style="`border: 1px solid ${props.borderColor}`"
@@ -55,13 +50,13 @@ const props = defineProps({
     default: 0
   }
 })
-const $emits = defineEmits(['exec'])
+const emits = defineEmits(['exec'])
 const ddList = ref(toRaw(props.list))
 
 const { parent } = useDragAndDrop(ddList, { direction: 'horizontal' })
 
 const exec = () => {
-  $emits('exec', ddList.value, props.fIndex)
+  emits('exec', ddList.value, props.fIndex)
 }
 </script>
 

+ 2 - 2
src/views/gameCenter/components/games/DigitalUnderstanding/index.vue

@@ -31,11 +31,11 @@ import { useUserStore } from '@/store'
 import { getCurrentInstance } from 'vue'
 
 const instance = getCurrentInstance()
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const DUMainShowRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'DigitalUnderstanding')
+  emits('gameOver', 'DigitalUnderstanding')
 }
 
 const currentLevel = ref(0) // 当前序列

+ 4 - 4
src/views/gameCenter/components/games/FindNumberTraining/index.vue

@@ -50,6 +50,7 @@
           />
         </div>
         <div v-else class="w-[1470px] flex-col flex-center mr-[20px] mb-[60px]">
+          <span class="text-white">selectIndex: {{ selectIndex }}</span>
           <el-image
             :src="
               imgChoice === 0
@@ -101,12 +102,12 @@ import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import { useUserStore } from '@/store'
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const VideoRefIntro = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'FindNumberTraining')
+  emits('gameOver', 'FindNumberTraining')
 }
 
 interface IStyle {
@@ -391,8 +392,7 @@ onMounted(() => {
         background-color: white; /* 横线颜色 */
       }
 
-      &.active,
-      &:hover {
+      &.active {
         color: #fff601;
         border: 1px solid #fff601;
         background-color: rgba(255, 255, 255, 0.35);

+ 2 - 2
src/views/gameCenter/components/games/FixedTransfer/index.vue

@@ -45,11 +45,11 @@ import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import { useUserStore } from '@/store'
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'FixedTransfer')
+  emits('gameOver', 'FixedTransfer')
 }
 
 const instance = getCurrentInstance()

+ 2 - 2
src/views/gameCenter/components/games/LogicalReasoning/components/numMdel/index.vue

@@ -47,11 +47,11 @@ import { useUserStore } from '@/store'
 // import Topics from '@/views/gameCenter/components/games/ResidueRecognition/topics.json'
 import Topics from './topics.json'
 
-const $emits = defineEmits(['gameOver', 'handleClose'])
+const emits = defineEmits(['gameOver', 'handleClose'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('handleClose', 'LogicalReasoning')
+  emits('handleClose', 'LogicalReasoning')
 }
 interface OnceItem {
   counts: number

+ 2 - 2
src/views/gameCenter/components/games/LogicalReasoning/index.vue

@@ -69,11 +69,11 @@ import { useUserStore } from '@/store'
 // import Topics from '@/views/gameCenter/components/games/ResidueRecognition/topics.json'
 import Topics from './topics.json'
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'LogicalReasoning')
+  emits('gameOver', 'LogicalReasoning')
 }
 interface OnceItem {
   question: string

+ 2 - 2
src/views/gameCenter/components/games/ObjectRecognition/index.vue

@@ -6,7 +6,7 @@ import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import { useUserStore } from '@/store'
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 
 interface LevelData {
   level: number
@@ -237,7 +237,7 @@ const sendData = () => {
 }
 
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'ObjectRecognition')
+  emits('gameOver', 'ObjectRecognition')
 }
 
 async function exec() {

+ 4 - 4
src/views/gameCenter/components/games/PicturePuzzle/components/PicturePuzzleChild/index.vue

@@ -70,8 +70,8 @@
 import { IGameBaseChildData } from '@/views/gameCenter/components/games/type'
 import { deepClone, shuffle } from '@/utils'
 
-// const $props = defineProps({})
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+// const props = defineProps({})
+const emits = defineEmits(['beginLoop', 'endLoop'])
 const showTopics = ref(false)
 const showData = ref<IGameBaseChildData>({
   title: '',
@@ -253,7 +253,7 @@ const setData = (data: IGameBaseChildData) => {
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 const submitPre = () => {
@@ -270,7 +270,7 @@ const submitFn = () => {
     countDownVisible.value = false
 
     setTimeout(() => {
-      $emits('endLoop', showData.value)
+      emits('endLoop', showData.value)
     }, 800)
   }
 }

+ 2 - 2
src/views/gameCenter/components/games/PicturePuzzle/index.vue

@@ -27,11 +27,11 @@ const props = defineProps({
     default: false
   }
 })
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const PicturePuzzleChildRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'PicturePuzzle')
+  emits('gameOver', 'PicturePuzzle')
 }
 
 const userStore = useUserStore()

+ 3 - 3
src/views/gameCenter/components/games/ResidueRecognition/index.vue

@@ -47,7 +47,7 @@ import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import { useUserStore } from '@/store'
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 
 interface LevelData {
   level: number
@@ -270,7 +270,7 @@ const submitFn = () => {
   //   countDownVisible.value = false
 
   //   setTimeout(() => {
-  //     $emits('endLoop', showData.value)
+  //     emits('endLoop', showData.value)
   //   }, 800)
   // }
 }
@@ -395,7 +395,7 @@ const sendData = () => {
 
 const handleClose = (done: () => void) => {
   clearInterval(timerId)
-  $emits('gameOver', 'ResidualCharacterRecognition')
+  emits('gameOver', 'ResidualCharacterRecognition')
 }
 
 async function exec() {

+ 4 - 4
src/views/gameCenter/components/games/SeriesInference/components/SeriesInferenceChild/index.vue

@@ -89,8 +89,8 @@
 import { IGameBaseChildData } from '@/views/gameCenter/components/games/type'
 import { deepClone, shuffle } from '@/utils'
 
-// const $props = defineProps({})
-const $emits = defineEmits(['beginLoop', 'endLoop'])
+// const props = defineProps({})
+const emits = defineEmits(['beginLoop', 'endLoop'])
 const showTopics = ref(false)
 const showData = ref<IGameBaseChildData>({
   title: '',
@@ -310,7 +310,7 @@ const setData = (data: IGameBaseChildData) => {
 }
 
 async function exec() {
-  $emits('beginLoop')
+  emits('beginLoop')
 }
 
 const submitPre = () => {
@@ -347,7 +347,7 @@ const submitFn = () => {
     countDownVisible.value = false
     // console.log(showData.value, '本试次游戏数据')
     setTimeout(() => {
-      $emits('endLoop', showData.value)
+      emits('endLoop', showData.value)
     }, 800)
   }
 }

+ 2 - 2
src/views/gameCenter/components/games/SeriesInference/index.vue

@@ -28,11 +28,11 @@ const props = defineProps({
     default: false
   }
 })
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const PicturePuzzleChildRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'SeriesInference')
+  emits('gameOver', 'SeriesInference')
 }
 
 const userStore = useUserStore()

+ 2 - 2
src/views/gameCenter/components/games/SetTransferTest/index.vue

@@ -73,12 +73,12 @@ interface INum {
   tempNum: number
 }
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const ElCarouselRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'SetTransferTest')
+  emits('gameOver', 'SetTransferTest')
 }
 
 const instance = getCurrentInstance()

+ 2 - 2
src/views/gameCenter/components/games/SpatialPositioning/index.vue

@@ -79,7 +79,7 @@ const maxTimes = 10
 // 得分列表
 const scoreList = [10, 30, 60, 100]
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 
@@ -117,7 +117,7 @@ const question = computed(() => {
 })
 
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'SpatialPositioning')
+  emits('gameOver', 'SpatialPositioning')
 }
 
 const baseData: IGameBaseData = {

+ 8 - 8
src/views/gameCenter/components/games/TransferTraining/components/TTShapeShow/index.vue

@@ -31,14 +31,14 @@
  */
 import { onMounted } from 'vue'
 import { ITransferTrainingBaseChildData } from '../../../type'
-const $props = defineProps({
+const props = defineProps({
   visible: {
     type: Boolean,
     default: false
   }
 })
 
-const $emits = defineEmits(['beginFn', 'bullsEyesClick', 'beginTimer'])
+const emits = defineEmits(['beginFn', 'bullsEyesClick', 'beginTimer'])
 const showTipsShape = ref(false)
 const showCrossShape = ref(false)
 const showBullsEyeShape = ref(false)
@@ -55,10 +55,10 @@ const addClickEventListener = () => {
           clickFlag = true
           if (target && target.classList.contains('target-class')) {
             // 如果点击的元素具有 'target-class' 类,执行操作
-            $emits('bullsEyesClick', 0, 0)
+            emits('bullsEyesClick', 0, 0)
           } else {
             // 如果点击的元素不具有 'target-class' 类,执行其他操作或忽略
-            $emits('bullsEyesClick', 1, 0)
+            emits('bullsEyesClick', 1, 0)
           }
         }
       }
@@ -88,7 +88,7 @@ const orderShowFn = () => {
 
     // 显示1500ms空页面,本轮结束,提交'中心'
     setTimeout(() => {
-      $emits('bullsEyesClick', 2, 1)
+      emits('bullsEyesClick', 2, 1)
     }, 2500)
   } else {
     showTipsShape.value = true
@@ -101,7 +101,7 @@ const orderShowFn = () => {
     setTimeout(() => {
       showBullsEyeShape.value = true
       clickFlag = false // 允许监听点击,并开始计时
-      $emits('beginTimer')
+      emits('beginTimer')
     }, 1500)
 
     // 1300ms后隐藏靶心,显示空页面,
@@ -111,13 +111,13 @@ const orderShowFn = () => {
 
     // 显示1200ms空页面,本轮结束,提交'漏报'
     setTimeout(() => {
-      $emits('bullsEyesClick', 3, 1)
+      emits('bullsEyesClick', 3, 1)
     }, 4000)
   }
 }
 
 onMounted(() => {
-  $emits('beginFn') // 完成初始化组件,告诉父组件初始数据
+  emits('beginFn') // 完成初始化组件,告诉父组件初始数据
 })
 
 onUnmounted(() => {

+ 3 - 3
src/views/gameCenter/components/games/TransferTraining/index.vue

@@ -49,13 +49,13 @@ import { useUserStore } from '@/store'
 
 const userStore = useUserStore()
 const instance = getCurrentInstance()
-const $props = defineProps({
+const props = defineProps({
   visible: {
     type: Boolean,
     default: false
   }
 })
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const TTShapeShowRef = ref()
 const showLevelFlag = ref(true)
@@ -93,7 +93,7 @@ const handleClose = (done: () => void) => {
   if (TTShapeShowRef.value) {
     TTShapeShowRef.value.removeClickEventListener() // 移除子组件中的click监听事件
   }
-  $emits('gameOver', 'TransferTraining')
+  emits('gameOver', 'TransferTraining')
 }
 
 const setComponentData = () => {

+ 4 - 4
src/views/gameCenter/components/games/VerbalMemory/index.vue

@@ -104,13 +104,13 @@ interface LevelData {
   responseStartTime: number
   responseEndTime: number
 }
-const $props = defineProps({
+const props = defineProps({
   visible: {
     type: Boolean,
     default: false
   }
 })
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 // 得分列表
 const scoreList = [10, 30, 60, 100, 150, 210]
 // 在60秒内猜中50个物品额外得50分
@@ -161,7 +161,7 @@ const handleClose = (done: () => void) => {
   // 关闭语音播放
   window.speechSynthesis.pause()
   window.speechSynthesis.cancel()
-  $emits('gameOver', 'VerbalMemory')
+  emits('gameOver', 'VerbalMemory')
 }
 const currentIndex = ref(0) // 当前序列
 const selectiveIndex = ref(-1) // 选择的索引
@@ -259,7 +259,7 @@ const nextClick = () => {
       }
     } else if (accuracy < 40) {
       console.log('游戏结束2')
-      // $emits('gameOver', 'VerbalMemory')
+      // emits('gameOver', 'VerbalMemory')
       sendData()
       clearInterval(timerId)
       return

+ 2 - 2
src/views/gameCenter/components/games/WorkingMemory/components/ability/index.vue

@@ -128,11 +128,11 @@ const data = reactive({
 })
 let countDownInterval: any
 let divShowInteval: any
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'WorkingMemory')
+  emits('gameOver', 'WorkingMemory')
   clearInterval(countDownInterval)
   clearInterval(divShowInteval)
 }

+ 2 - 2
src/views/gameCenter/components/games/WorkingMemory/components/blend/index.vue

@@ -140,11 +140,11 @@ const data = reactive({
 })
 let countDownInterval: any
 let divShowInteval: any
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'WorkingMemory')
+  emits('gameOver', 'WorkingMemory')
   clearInterval(countDownInterval)
   clearInterval(divShowInteval)
 }

+ 2 - 2
src/views/gameCenter/components/games/WorkingMemory/components/vaista/index.vue

@@ -117,11 +117,11 @@ const data = reactive({
 })
 let countDownInterval: any
 let divShowInteval: any
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const handleClose = (done: () => void) => {
-  $emits('gameOver', 'WorkingMemory')
+  emits('gameOver', 'WorkingMemory')
   clearInterval(countDownInterval)
   clearInterval(divShowInteval)
 }

+ 2 - 2
src/views/gameCenter/components/games/WorkingMemory/index.vue

@@ -88,7 +88,7 @@ import AchievementAPI from '@/api/tester/rehabilitation/training/achievement'
 import { RTPlanMgrQuery } from '@/api/tester/rehabilitation/training/plain'
 import { useUserStore } from '@/store'
 
-const $emits = defineEmits(['gameOver'])
+const emits = defineEmits(['gameOver'])
 const openDialogRef = ref()
 const VoiceImpRef = ref()
 const countDownVisible = ref(false) // 倒计时是否可见
@@ -161,7 +161,7 @@ const chengFlage1 = (answer: string) => {
 
 const handleClose = (done: () => void) => {
   // clearInterval(timerId)
-  $emits('gameOver', 'WorkingMemory')
+  emits('gameOver', 'WorkingMemory')
 }
 // const handleKeyDown = (event: any) => {
 //   if (event.altKey && event.key === 'f') {

+ 3 - 3
src/views/information/chatList/index.vue

@@ -71,9 +71,9 @@ interface UserType {
 }
 const userStore = useUserStore()
 const $refs: RefComponent = reactive({})
-const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits([])
+const props = defineProps({})
+
+const emits = defineEmits([])
 const searchName = ref('')
 let userInfos = reactive({})
 const queryParams = reactive<UserPageQuery>({

+ 1 - 1
src/views/information/manage/doc.vue

@@ -293,7 +293,7 @@ onMounted(() => {
   nextTick(() => {
     getUserInfo()
     // ChatUtils.imageLoad('message-box')
-    // doctorInfo.value = $props.userInfos
+    // doctorInfo.value = props.userInfos
     // user_myDoctor()
     // gQuerys()
   })

+ 1 - 1
src/views/login/components/login/index.vue

@@ -63,7 +63,7 @@ import closeEyesUrl from '@/assets/images/icon-eyes-close.png'
 import { LoginData } from '@/api/auth'
 import { checkboxEmits } from 'element-plus'
 
-const $emits = defineEmits([])
+const emits = defineEmits([])
 
 // Stores
 const userStore = useUserStore()

+ 1 - 1
src/views/login/components/register/index.vue

@@ -98,7 +98,7 @@ import { useUserStore } from '@/store'
 import { RegisterData } from '@/api/auth'
 import { LocationQuery, LocationQueryValue, useRoute } from 'vue-router'
 import router from '@/router'
-const $emits = defineEmits(['openComp'])
+const emits = defineEmits(['openComp'])
 
 import openEyesUrl from '@/assets/images/icon-eyes-open.png'
 import closeEyesUrl from '@/assets/images/icon-eyes-close.png'

+ 1 - 1
src/views/login/components/resetPsw/index.vue

@@ -98,7 +98,7 @@ import { useUserStore } from '@/store'
 import { RegisterData } from '@/api/auth'
 import { LocationQuery, LocationQueryValue, useRoute } from 'vue-router'
 import router from '@/router'
-const $emits = defineEmits(['openComp'])
+const emits = defineEmits(['openComp'])
 
 import openEyesUrl from '@/assets/images/icon-eyes-open.png'
 import closeEyesUrl from '@/assets/images/icon-eyes-close.png'

+ 1 - 1
src/views/myTest/test/index.vue

@@ -14,7 +14,7 @@
 import { useUserStore } from '@/store'
 
 const userStore = useUserStore()
-const $emits = defineEmits([])
+const emits = defineEmits([])
 async function exec() {}
 
 onMounted(() => {

+ 5 - 5
src/views/system/user/index.vue

@@ -6,7 +6,7 @@
         <el-form-item label="关键字:" prop="keywords">
           <el-input
             v-model="queryParams.username"
-            placeholder="用户姓名/登录账户/手机号"
+            placeholder="用户姓名/账户/手机号"
             clearable
             style="width: 320px"
             @keyup.enter="handleQuery"
@@ -33,7 +33,7 @@
       </template>
       <el-table v-loading="loading" :data="pageData" stripe border>
         <el-table-column key="username" label="用户姓名" align="center" prop="name" min-width="20" />
-        <el-table-column label="登录账户" align="center" prop="code" min-width="20" />
+        <el-table-column label="账户" align="center" prop="code" min-width="20" />
         <el-table-column label="角色" prop="roles" min-width="20">
           <template #default="scope">
             {{ getUserRoleStr(scope.row.roles) }}
@@ -96,8 +96,8 @@
     >
       <!-- 用户新增/编辑表单 -->
       <el-form ref="UserFormRef" :model="formData" :rules="rules" label-width="110px">
-        <el-form-item label="登录账户" prop="code">
-          <el-input v-model="formData.code" :readonly="!!formData.id" placeholder="请输入登录账户" />
+        <el-form-item label="账户" prop="code">
+          <el-input v-model="formData.code" :readonly="!!formData.id" placeholder="请输入账户" />
         </el-form-item>
 
         <el-form-item label="手机号码" prop="phone">
@@ -215,7 +215,7 @@ let formData = ref<UserPageVO>({
 // 校验规则
 const rules = reactive({
   name: [{ required: true, message: '用户姓名不能为空', trigger: 'blur' }],
-  code: [{ required: true, message: '登录账户不能为空', trigger: 'blur' }],
+  code: [{ required: true, message: '账户不能为空', trigger: 'blur' }],
   role: [{ required: true, message: '用户角色不能为空', trigger: 'blur' }],
   email: [
     {

+ 4 - 4
src/views/tester/components/AddTester/index.vue

@@ -69,7 +69,7 @@
         </el-collapse-item>
         <el-collapse-item v-if="caseAddShow" name="2">
           <template #title>
-            <simple-title title="病信息" />
+            <simple-title title="病信息" />
           </template>
           <div class="case-add-outline">
             <case-add is-component />
@@ -112,9 +112,9 @@ let userForm = reactive<UserForm>({
 })
 const readOnly = ref(false) // 是否只读
 const activeNames = ref(['1'])
-const caseAddShow = ref(false) // 病页面是否展示
+const caseAddShow = ref(false) // 病页面是否展示
 const isAlreadyExists = ref(false) // 用户是否已经存在
-const showEmptyCaseLog = ref(false) // 若患者不存在数据库时,查询后显示空病区域
+const showEmptyCaseLog = ref(false) // 若患者不存在数据库时,查询后显示空病区域
 
 const validateIdCardPass = (rule: any, value: any, callback: any) => {
   if (value === '') {
@@ -197,7 +197,7 @@ const handleSelect = (item: Record<string, any>) => {
   userForm.sex = item.sex
 
   // 如果是选择患者,证明患者已存在数据库
-  // 提交病后无需刷新患者列表,否则需要刷新患者列表
+  // 提交病后无需刷新患者列表,否则需要刷新患者列表
   isAlreadyExists.value = true
 
   instance?.proxy?.$Bus.emit('case-info-log', {

+ 4 - 4
src/views/tester/components/CaseInformation/CaseAdd/index.vue

@@ -2,7 +2,7 @@
   <section class="wh-full flex flex-row">
     <el-form ref="caseFormRef" :model="caseForm" :rules="rules" class="flex-1 p-[32px]" size="default">
       <div class="bor-radius-8 w-full h-[190px] bg-[white]" :class="{ 'top-div': !props.isComponent }">
-        <simple-title title="病信息概况" />
+        <simple-title title="病信息概况" />
         <el-form-item label="主诉" class="mt-[16px]" prop="cplaint">
           <el-input
             v-model="caseForm.cplaint"
@@ -98,7 +98,7 @@
 <script setup lang="ts">
 /*
  * 组件名: CaseAdd
- * 组件用途: 新增病
+ * 组件用途: 新增病
  * 创建日期: 2024/5/8
  * 编写者: JutarryWu
  */
@@ -120,7 +120,7 @@ const props = defineProps({
     default: false
   }
 })
-const $emits = defineEmits([])
+const emits = defineEmits([])
 const loading = ref(false)
 interface caseForm {
   id: string
@@ -183,7 +183,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
         }
         CaseInfoAPI.add(caseForm)
           .then(() => {
-            ElMessage.success('新增病成功')
+            ElMessage.success('新增病成功')
             resetForm(caseFormRef.value)
             instance?.proxy?.$Bus.emit('case-add-bus-complete')
             loading.value = false

+ 4 - 4
src/views/tester/components/CaseInformation/CaseLog/index.vue

@@ -4,7 +4,7 @@
       <template #header>
         <div class="wh-full flex flex-row items-center">
           <span class="inline-block text-[24px] font-500 mr-[56px]">
-            {{ patName.length > 0 ? patName + ' 的' : '' }} 病记录
+            {{ patName.length > 0 ? patName + ' 的' : '' }} 病记录
           </span>
           <el-form ref="queryFormRef" :model="queryParams" :inline="true">
             <el-form-item label="主治医生:" prop="doctorId">
@@ -135,7 +135,7 @@
 <script setup lang="ts">
 /*
  * 组件名: GameCenterManage
- * 组件用途: 病中心管理
+ * 组件用途: 病中心管理
  * 创建日期: 2024/5/30
  * 编写者: JutarryWu
  */
@@ -165,7 +165,7 @@ const queryParams = reactive<CaseInfoQuery>({
 })
 const userStore = useUserStore()
 const total = ref(0) // 数据总数
-const pageData = ref<CaseInfoVO[]>() // 病分页数据
+const pageData = ref<CaseInfoVO[]>() // 病分页数据
 const cardShow = ref(false)
 const patName = ref('')
 const doctorOptions = ref<UserPageVO[]>()
@@ -221,7 +221,7 @@ onMounted(() => {
     }, 300)
   })
 
-  // 新增病例成功后刷新病例列表
+  // 新增病历成功后刷新病历列表
   instance?.proxy?.$Bus.on('case-add-bus-complete', () => {
     handleQuery()
   })

+ 11 - 22
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilitySellingTest/index.vue

@@ -54,7 +54,7 @@
           </div>
         </div>
       </div>
-      <div class="dialog-footer text-right absolute bottom-[0px] right-[0px]">
+      <div v-if="false" class="dialog-footer text-right absolute bottom-[0px] right-[0px]">
         <el-button type="text" @click="handleSubmit">结束测验</el-button>
       </div>
     </template>
@@ -151,41 +151,30 @@ function submitFn() {
   resultJson.takeTime = (performance.now() - gameStartTime).toFixed(2)
   resultJson.missingCnt = 48 - resultJson.correctCnt
   resultJson.accuracyRate = resultJson.correctCnt / 48
-  // emits('showResult', resultJson)
   handleSubmit()
 }
 // 提交数据
 const handleSubmit = () => {
-  // loading.value = false
   let tempObj = {
     takeTime: (performance.now() - gameStartTime).toFixed(2),
     missingCnt: roundToFixed(48 - resultJson.correctCnt, 2),
     accuracyRate: roundToFixed(resultJson.correctCnt / 48, 2)
-    // qualification: qualification.value,
-    // result: resultJson
   }
-  // emits('showResult', resultJson)
-  console.log('tempObj划小测验', resultJson, tempObj)
-  console.log(roundToFixed, 'roundToFixed', roundToFixed(resultJson.correctCnt / 48, 2), '56565656')
-  // EvaluationSTRecordInfoAPI.addCognition({
-  //   parentId: props.parentId,
-  //   patId: userStore.user.id,
-  //   trecord: JSON.stringify(resultJson)
-  // })
-  //   .then((data) => {
-  //     // loading.value = false
-  //     ElMessage.success('提交成功!')
-  //     emits('showResult', data)
-  //   })
-  //   .catch(() => {
-  //     // loading.value = false
-  //   })
+  EvaluationSTRecordInfoAPI.addCognition({
+    parentId: props.parentId,
+    patId: userStore.user.id,
+    trecord: JSON.stringify(resultJson)
+  })
+    .then((data) => {
+      ElMessage.success('提交成功!')
+      emits('showResult', data)
+    })
+    .catch(() => {})
 }
 async function exec() {
   setTimeout(() => {
     countDownBegin.value = true
     initNums()
-    console.log('showNumArr.value: ', showNumArr.value, '   specialNum.value: ', specialNum.value)
   }, 2300)
 }
 

+ 11 - 22
src/views/tester/components/RehabilitationEvaluation/CognitiveAbilityTask/CognitiveAbilityStarShapedSales/index.vue

@@ -71,7 +71,7 @@
           {{ words[index] }}
         </div>
       </div>
-      <div class="dialog-footer text-right absolute bottom-[0px] right-[0px]">
+      <div v-if="false" class="dialog-footer text-right absolute bottom-[0px] right-[0px]">
         <el-button type="text" @click="handleSubmit">结束测验</el-button>
       </div>
     </template>
@@ -415,26 +415,21 @@ async function exec() {
 }
 // 提交数据
 const handleSubmit = () => {
-  // loading.value = false
   let tempObj = {
     LR: roundToFixed(LR, 2),
     RR: roundToFixed(RR, 2),
     LI: roundToFixed(LI, 2)
   }
-  console.log(tempObj, 'tempObj星形花销')
-  // EvaluationSTRecordInfoAPI.addCognition({
-  //   parentId: props.parentId,
-  //   patId: userStore.user.id,
-  //   trecord: JSON.stringify(tempObj)
-  // })
-  //   .then((data) => {
-  //     // loading.value = false
-  //     ElMessage.success('提交成功!')
-  //     emits('showResult', data)
-  //   })
-  //   .catch(() => {
-  //     // loading.value = false
-  //   })
+  EvaluationSTRecordInfoAPI.addCognition({
+    parentId: props.parentId,
+    patId: userStore.user.id,
+    trecord: JSON.stringify(tempObj)
+  })
+    .then((data) => {
+      ElMessage.success('提交成功!')
+      emits('showResult', data)
+    })
+    .catch(() => {})
 }
 function submitFn() {
   let leftClickNum = bigStarPoints.value.filter((item: IElement) => item.click && item.position === 'left').length
@@ -443,12 +438,6 @@ function submitFn() {
   RR = rightClickNum / 27
   LI = (LR - RR) / (LR + RR)
   handleSubmit()
-
-  // emits('showResult', {
-  //   LR: LR,
-  //   RR: RR,
-  //   LI: LI
-  // })
 }
 
 onMounted(() => {

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

@@ -67,7 +67,7 @@
         </div>
       </div>
     </div>
-    <div class="dialog-footer text-right absolute bottom-[0px] right-[0px]">
+    <div v-if="false" class="dialog-footer text-right absolute bottom-[0px] right-[0px]">
       <el-button type="text" @click="handleSubmit">结束测验</el-button>
     </div>
     <voice-imp ref="VoiceImpRef" />

+ 2 - 2
src/views/tester/components/RehabilitationGoals/index.vue

@@ -70,12 +70,12 @@ import UserAPI, { UserPageVO } from '@/api/user'
 const userStore = useUserStore()
 const userInfo = ref<UserPageVO>()
 
-const $emits = defineEmits([])
+const emits = defineEmits([])
 const shortTermGoal = ref('') // 近期目标
 const longTermGoal = ref('') // 远期目标
 const problems = ref('')
 const infoList = ref([
-  { title: '病信息', info: '张美丽  女' },
+  { title: '病信息', info: '张美丽  女' },
   { title: '康复训练', info: '有' },
   { title: '康复评定', info: '无' },
   { title: '评定报告', info: '无' },

+ 7 - 2
src/views/tester/components/RehabilitationTraining/RehabilitationTrainingAchievement/components/RehabilitationTrainingDetailAnalysis/index.vue

@@ -5,7 +5,10 @@
     <!--      <span class="ml-4">{{ dayjs(data.time).format('YYYY-MM-DD HH:mm:ss') }}</span>-->
     <!--    </div>-->
     <el-row :gutter="0" class="mt-[20px]">
-      <el-col :span="24">训练分析</el-col>
+      <el-col :span="24" class="w-full !flex flex-row justify-between">
+        <span>训练分析</span>
+        <span>训练时间:{{ trainTime }}</span>
+      </el-col>
       <el-col :span="12">属性</el-col>
       <el-col :span="12">结果</el-col>
       <template v-for="(item, index) in pageData" :key="index">
@@ -34,17 +37,19 @@ import { formatSeconds } from '@/utils'
 const showResult = ref(false)
 const pageData = ref<AchievementParamVO[]>([])
 const targetItem = ref<AchievementVO>()
+const trainTime = ref('')
 
 /** 查询 */
 function handleQuery(row: AchievementVO) {
   showResult.value = true
+  trainTime.value = row.xdate
   AchievementParamAPI.getList({
     recordId: row.id
   })
     .then((res) => {
       pageData.value = res.map((item) => {
         if (item.code === 'gameTotalTime') {
-          // item.value = formatSeconds(Number(item.value))
+          item.value += '秒'
         }
         return item
       })

+ 9 - 1
src/views/tester/components/RehabilitationTraining/RehabilitationTrainingAchievement/index.vue

@@ -14,7 +14,15 @@
         <simple-title title="训练成绩" />
 
         <div v-if="false" class="mt-[30px] text-[20px] font-600">本题达标成绩为: __ 分</div>
-        <el-table v-loading="loading" :data="pageData" border stripe style="width: 100%" class="mt-[40px]">
+        <el-table
+          v-loading="loading"
+          :data="pageData"
+          border
+          stripe
+          style="width: 100%"
+          class="mt-[40px]"
+          highlight-current-row
+        >
           <el-table-column prop="xdate" label="训练时间" />
           <el-table-column prop="gamelevel" :label="gameNames === '残字识别' ? '最大难度' : '关卡难度'" />
           <!-- gameNames -->

+ 2 - 2
src/views/tester/components/RehabilitationTraining/RehabilitationTrainingAdd/components/RehabilitationTrainingAddTestItem/index.vue

@@ -71,7 +71,7 @@ const props = defineProps({
     required: true
   }
 })
-const $emits = defineEmits(['checkboxChange'])
+const emits = defineEmits(['checkboxChange'])
 const dialogVisible = ref(false)
 const score = ref('')
 const showIntroFlag = ref(false) // 游戏简介页面
@@ -105,7 +105,7 @@ const introClose = () => {
 }
 
 const checkboxChange = (val: boolean) => {
-  $emits('checkboxChange')
+  emits('checkboxChange')
 }
 
 async function exec() {}

+ 2 - 2
src/views/tester/manage/manage/components/TableHeaderDiv/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="header-div h-[36px] line-height-[36px] text-center" :style="{ width: `${width}px` }">
     <div class="header-inner inline-block h-full pl-[10px] pr-[10px] text-[#414D55] text-[14px] bg-[white] z-2">
-      {{ $props.text }}
+      {{ props.text }}
     </div>
   </div>
 </template>
@@ -14,7 +14,7 @@
  * 编写者: JutarryWu
  */
 
-const $props = defineProps({
+const props = defineProps({
   width: {
     type: Number,
     default: 0

+ 14 - 4
src/views/tester/manage/manage/components/TableInfoItem/index.vue

@@ -8,7 +8,7 @@
       fit="fill"
       v-previewImage="[props.item.avatar]"
     />
-    <div class="h-[100px] flex-1 flex-col">
+    <div class="h-[120px] flex-1 flex-col">
       <div
         class="text-[#8C8C8C] text-[14px] flex flex-row flex-items-center flex-justify-between h-[36px] line-height-[36px] border-b-[1px] border-style-dashed border-[#A2C0D4]"
       >
@@ -17,12 +17,12 @@
         <span>{{ props.item.birthday }}</span>
         <span>{{ props.item.code }}</span>
       </div>
-      <div class="flex flex-col w-full h-[64px]">
+      <div class="flex flex-col w-full h-[84px]">
         <div class="text-[#121A2D] text-[14px] flex flex-row line-height-[18px] m-y-[12px]">
           <span>注册时间: </span>
           <span>{{ props.item.ctime }}</span>
         </div>
-        <tester-manage-table-buttons />
+        <tester-manage-table-buttons @command-click="commandClick" />
       </div>
     </div>
   </section>
@@ -43,7 +43,17 @@ const props = defineProps({
     default: () => {}
   }
 })
-const $emits = defineEmits([])
+const emits = defineEmits([])
+
+/**
+ * 命令点击事件, 用于将选中的患者信息暂存在sessionStorage中
+ */
+function commandClick() {
+  if (sessionStorage.getItem('RehabilitationTrainingUserInfo')) {
+    sessionStorage.removeItem('RehabilitationTrainingUserInfo')
+  }
+  sessionStorage.setItem('RehabilitationTrainingUserInfo', JSON.stringify(props.item))
+}
 
 async function exec() {}
 

+ 2 - 2
src/views/tester/manage/manage/components/TableInfoLine/index.vue

@@ -56,8 +56,8 @@ const props = defineProps({
     default: () => {}
   }
 })
-const $state = reactive({})
-const $emits = defineEmits([])
+
+const emits = defineEmits([])
 
 /**
  * 命令点击事件, 用于将选中的患者信息暂存在sessionStorage中

+ 4 - 6
src/views/tester/manage/rehabilitationTraining/add/index.vue

@@ -33,9 +33,7 @@
       <div class="test-area bor-radius-8 flex-1 flex flex-row">
         <div class="left-items mr-5 flex flex-col">
           <div class="flex flex-row h-12 items-center">
-            <div class="mr-12 text-4">
-              已选择 <span class="color-[#089BAB] ml-[8px] mr-[8px]">2</span> 道题
-            </div>
+            <div class="mr-12 text-4">已选择 <span class="color-[#089BAB] ml-[8px] mr-[8px]">2</span> 道题</div>
             <el-button type="primary" @click="() => {}">添加</el-button>
           </div>
           <div class="flex-1 w-full mt-3 bor-radius-8 bg-[#F1F5F8]">
@@ -83,9 +81,9 @@ import { computed, reactive, onMounted, type PropType, type ComponentPublicInsta
 type RefComponent = Record<string, ComponentPublicInstance<Record<string, any>> | null>
 
 const $refs: RefComponent = reactive({})
-const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits([])
+const props = defineProps({})
+
+const emits = defineEmits([])
 
 const handleOpen = (key: string, keyPath: string[]) => {
   console.log(key, keyPath)

+ 3 - 3
src/views/tester/manage/rehabilitationTraining/training/index.vue

@@ -32,9 +32,9 @@ import { computed, reactive, onMounted, type PropType, type ComponentPublicInsta
 
 type RefComponent = Record<string, ComponentPublicInstance<Record<string, any>> | null>
 const $refs: RefComponent = reactive({})
-const $props = defineProps({})
-const $state = reactive({})
-const $emits = defineEmits([])
+const props = defineProps({})
+
+const emits = defineEmits([])
 
 const myTestList = ref([
   {