lsc 2 months ago
parent
commit
51b79ed7e4
2 changed files with 33 additions and 28 deletions
  1. 1 1
      src/views/Screen/CountdownTimer.vue
  2. 32 27
      src/views/Student/index.vue

+ 1 - 1
src/views/Screen/CountdownTimer.vue

@@ -85,7 +85,7 @@ const emit = defineEmits<{
 const timer = ref<number | null>(null)
 const timer = ref<number | null>(null)
 const inTiming = ref(false)
 const inTiming = ref(false)
 // 仅倒计时模式,默认 03:00:00
 // 仅倒计时模式,默认 03:00:00
-const time = ref(3 * 60 * 60)
+const time = ref(5 * 60)
 
 
 // 可编辑的时分秒输入值
 // 可编辑的时分秒输入值
 const hourInput = ref(3)
 const hourInput = ref(3)

+ 32 - 27
src/views/Student/index.vue

@@ -549,6 +549,7 @@ const studentArray = ref<any>([])
 // 跟随模式相关状态
 // 跟随模式相关状态
 const isCreator = ref(false) // 是否为创建人
 const isCreator = ref(false) // 是否为创建人
 const isFollowModeActive = ref(false) // 跟随模式是否开启
 const isFollowModeActive = ref(false) // 跟随模式是否开启
+const isFirstEnter = ref(true) // 是否首次进入
 
 
 // 计算未提交作业的学生
 // 计算未提交作业的学生
 const unsubmittedStudents = computed(() => {
 const unsubmittedStudents = computed(() => {
@@ -2444,44 +2445,48 @@ const checkIsCreator = () => {
   }
   }
 }
 }
 
 
-
 /**
 /**
  * 初始化消息监听
  * 初始化消息监听
  */
  */
 const messageInit = () => {
 const messageInit = () => {
-  // 如果是创建者,清空所有同步状态
-  if (isCreator.value && docSocket.value) {
-    console.log('🧹 创建者进入,清空所有同步状态')
-    docSocket.value.transact(() => {
-      // 清空消息
-      const messageArray = docSocket.value?.getArray?.('message')
-      if (messageArray) {
-        messageArray.delete(0, messageArray.length)
-      }
-      // 清空计时器状态
-      const timerStateMap = docSocket.value?.getMap?.('timerState')
-      if (timerStateMap) {
-        timerStateMap.clear()
-      }
-      // 清空激光笔状态
-      const laserStateMap = docSocket.value?.getMap?.('laserState')
-      if (laserStateMap) {
-        laserStateMap.clear()
-      }
-      // 清空画图状态
-      const writingBoardStateMap = docSocket.value?.getMap?.('writingBoardState')
-      if (writingBoardStateMap) {
-        writingBoardStateMap.clear()
-      }
-    })
-  }
+
 
 
   if (docSocket.value && !yMessage.value) {
   if (docSocket.value && !yMessage.value) {
     console.log('获取message', docSocket.value, yMessage.value)
     console.log('获取message', docSocket.value, yMessage.value)
     yMessage.value = docSocket.value.getArray('message')
     yMessage.value = docSocket.value.getArray('message')
     yMessage.value.observe((e: any) => {
     yMessage.value.observe((e: any) => {
+      // 执行清空数据
       // 数据同步完成后,清理超过40分钟的消息数据
       // 数据同步完成后,清理超过40分钟的消息数据
       const messages = yMessage.value.toArray()
       const messages = yMessage.value.toArray()
+
+      // 如果是首次进入且是创建者,清空所有同步状态
+      if (isFirstEnter.value && isCreator.value && docSocket.value) {
+        console.log('🧹 首次进入且为创建者,清空所有同步状态')
+        docSocket.value.transact(() => {
+        // 清空消息
+          const messageArray = docSocket.value?.getArray?.('message')
+          if (messageArray) {
+            messageArray.delete(0, messageArray.length)
+          }
+          // 清空计时器状态
+          const timerStateMap = docSocket.value?.getMap?.('timerState')
+          if (timerStateMap) {
+            timerStateMap.clear()
+          }
+          // 清空激光笔状态
+          const laserStateMap = docSocket.value?.getMap?.('laserState')
+          if (laserStateMap) {
+            laserStateMap.clear()
+          }
+          // 清空画图状态
+          const writingBoardStateMap = docSocket.value?.getMap?.('writingBoardState')
+          if (writingBoardStateMap) {
+            writingBoardStateMap.clear()
+          }
+        })
+        // 标记已不再是首次进入
+        isFirstEnter.value = false
+      }
       if (messages.length > 0) {
       if (messages.length > 0) {
         const now = Date.now()
         const now = Date.now()
         const messagesToKeep: any[] = []
         const messagesToKeep: any[] = []