lsc před 4 dny
rodič
revize
54b81463d0
2 změnil soubory, kde provedl 18 přidání a 4 odebrání
  1. 9 2
      src/views/Student/index.vue
  2. 9 2
      src/views/Student/index2.vue

+ 9 - 2
src/views/Student/index.vue

@@ -146,7 +146,7 @@
               <div class="slide-bottom-right" v-if="!isFullscreen">
                 <Refresh class="tool-btn" v-tooltip="lang.ssRefresh" @click="handleRefreshPage" v-if="currentSlideHasIframe && !currentSlideHasEnglishSpeaking"/>
                 <!-- <UpTwo @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !isSubmitting" class="tool-btn upBtn" v-tooltip="lang.ssSubmitHW"/> -->
-                <svg @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !isSubmitting && !currentSlideHasEnglishSpeaking" class="tool-btn upBtn" v-tooltip="lang.ssSubmitHW" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
+                <svg @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !isSubmitting && !currentSlideHasEnglishSpeaking && currentSlideIframeReady" class="tool-btn upBtn" v-tooltip="lang.ssSubmitHW" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
                   <!-- Document body -->
                   <path d="M15 10 L15 90 Q15 95 20 95 L80 95 Q85 95 85 90 L85 35 L60 10 Z"
                         fill="none" stroke="currentColor" stroke-width="6" stroke-linejoin="round" stroke-linecap="round"/>
@@ -181,7 +181,7 @@
         </div>
 
         <!-- 作业提交按钮 - 当当前幻灯片包含iframe时显示(排除B站视频) -->
-        <div v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && isFullscreen && !currentSlideHasEnglishSpeaking" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
+        <div v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && isFullscreen && !currentSlideHasEnglishSpeaking && currentSlideIframeReady" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
           :style="{ right: getHomeworkButtonRight() + 'px' }" @click="handleHomeworkSubmit"
           v-tooltip="isSubmitting ? lang.ssHwSubmitting : lang.ssHwSubmit">
           <!-- <IconEdit v-if="!isSubmitting" class="tool-btn" />
@@ -1088,6 +1088,13 @@ const currentSlideHasIframe = computed(() => {
   return elementList.value.some(element => element.type === ElementTypes.FRAME)
 })
 
+// 当前幻灯片的所有 iframe 是否都已 isDone(含非 type=73,非 type=73 的 elementDone 跑完即设 true)
+const currentSlideIframeReady = computed(() => {
+  const frames = elementList.value.filter(element => element.type === ElementTypes.FRAME)
+  if (frames.length === 0) return true // 没 iframe 视为 ready
+  return frames.every(frame => frame.isDone === true)
+})
+
 const currentSlideToolType = computed(() => {
   const frame = elementList.value.find(element => element.type === ElementTypes.FRAME)
   return Number((frame as any)?.toolType) || 0

+ 9 - 2
src/views/Student/index2.vue

@@ -146,7 +146,7 @@
               <div class="slide-bottom-right" v-if="!isFullscreen">
                 <Refresh class="tool-btn" v-tooltip="lang.ssRefresh" @click="handleRefreshPage" v-if="currentSlideHasIframe && !currentSlideHasEnglishSpeaking"/>
                 <!-- <UpTwo @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !isSubmitting" class="tool-btn upBtn" v-tooltip="lang.ssSubmitHW"/> -->
-                <svg @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !isSubmitting && !currentSlideHasEnglishSpeaking" class="tool-btn upBtn" v-tooltip="lang.ssSubmitHW" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
+                <svg @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !isSubmitting && !currentSlideHasEnglishSpeaking && currentSlideIframeReady" class="tool-btn upBtn" v-tooltip="lang.ssSubmitHW" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
                   <!-- Document body -->
                   <path d="M15 10 L15 90 Q15 95 20 95 L80 95 Q85 95 85 90 L85 35 L60 10 Z"
                         fill="none" stroke="currentColor" stroke-width="6" stroke-linejoin="round" stroke-linecap="round"/>
@@ -181,7 +181,7 @@
         </div>
 
         <!-- 作业提交按钮 - 当当前幻灯片包含iframe时显示(排除B站视频) -->
-        <div v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && isFullscreen && !currentSlideHasEnglishSpeaking" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
+        <div v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && isFullscreen && !currentSlideHasEnglishSpeaking && currentSlideIframeReady" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
           :style="{ right: getHomeworkButtonRight() + 'px' }" @click="handleHomeworkSubmit"
           v-tooltip="isSubmitting ? lang.ssHwSubmitting : lang.ssHwSubmit">
           <!-- <IconEdit v-if="!isSubmitting" class="tool-btn" />
@@ -1082,6 +1082,13 @@ const currentSlideHasIframe = computed(() => {
   return elementList.value.some(element => element.type === ElementTypes.FRAME)
 })
 
+// 当前幻灯片的所有 iframe 是否都已 isDone
+const currentSlideIframeReady = computed(() => {
+  const frames = elementList.value.filter(element => element.type === ElementTypes.FRAME)
+  if (frames.length === 0) return true
+  return frames.every(frame => frame.isDone === true)
+})
+
 const currentSlideToolType = computed(() => {
   const frame = elementList.value.find(element => element.type === ElementTypes.FRAME)
   return Number((frame as any)?.toolType) || 0