Procházet zdrojové kódy

Merge branch 'beta' of https://git.cocorobo.cn/jack/PPT into beta

SanHQin před 1 měsícem
rodič
revize
3d64c3f348
2 změnil soubory, kde provedl 18 přidání a 4 odebrání
  1. 2 0
      src/plugins/icon.ts
  2. 16 4
      src/views/Student/index.vue

+ 2 - 0
src/plugins/icon.ts

@@ -127,6 +127,7 @@ import {
   User,
   Switch,
   More,
+  LoadingFour, // 引入loadingIcon
 } from '@icon-park/vue-next'
 
 export interface Icons {
@@ -259,6 +260,7 @@ export const icons: Icons = {
   IconUser: User,
   IconSwitch: Switch,
   IconMore: More,
+  IconLoading: LoadingFour, // 添加loadingIcon
 }
 
 export default {

+ 16 - 4
src/views/Student/index.vue

@@ -105,6 +105,9 @@
                 </div>
               </div>
               <div class="slide-bottom-right" v-if="!isFullscreen">
+                <Refresh class="tool-btn" v-tooltip="'刷新'" @click="handleRefreshPage" v-if="currentSlideHasIframe"/>
+                <IconEdit @click="handleHomeworkSubmit" v-if="currentSlideHasIframe && !isSubmitting" class="tool-btn" v-tooltip="'提交作业'"/>
+                <IconLoading v-else-if="currentSlideHasIframe" class="tool-btn loading" v-tooltip="'提交中...'"></IconLoading>
                 <IconStopwatchStart class="tool-btn" v-tooltip="'计时器'" @click="timerlVisible = !timerlVisible"  v-if="(props.type == '1' && courseDetail.userid == props.userid)"/>
                 <IconWrite class="tool-btn" v-tooltip="'画笔工具'" @click="writingBoardToolVisible = true"  v-if="(props.type == '1')"/>
                 <IconMagic class="tool-btn" v-tooltip="'激光笔'" :class="{ 'active': laserPen }" @click="toggleLaserPen"  v-if="(props.type == '1')"/>
@@ -119,7 +122,7 @@
         </div>
 
         <!-- 作业提交按钮 - 当当前幻灯片包含iframe时显示 -->
-        <div v-if="currentSlideHasIframe" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
+        <div v-if="currentSlideHasIframe && isFullscreen" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
           :style="{ right: getHomeworkButtonRight() + 'px' }" @click="handleHomeworkSubmit"
           v-tooltip="isSubmitting ? '作业提交中...' : '作业提交'">
           <IconEdit v-if="!isSubmitting" class="tool-btn" />
@@ -129,7 +132,7 @@
 
         <!-- 刷新iframe按钮 -->
         <div class="refresh-page-btn" 
-          v-if="currentSlideHasIframe"
+          v-if="currentSlideHasIframe && isFullscreen"
           :style="{ right: getRefreshButtonRight() + 'px' }" 
           @click="handleRefreshPage"
           v-tooltip="'刷新iframe内容'">
@@ -1574,8 +1577,11 @@ const handleRefreshPage = () => {
         // 仅当有src属性时刷新
         const originalSrc = iframe.src
         // 通过重新赋值src实现刷新,避免先清空再赋值导致的闪烁
-        iframe.src = originalSrc
-        console.log(`刷新iframe ${i + 1}:`, originalSrc)
+        iframe.src = ''
+        setTimeout(() => {
+          iframe.src = originalSrc
+          console.log(`刷新iframe ${i + 1}:`, originalSrc)
+        }, 50)
         refreshedCount++
       }
       else if (iframe.srcdoc) {
@@ -2808,6 +2814,12 @@ const handleDisconnection = () => {
       margin-left: 15px;
     }
   }
+  .tool-btn.loading {
+    animation: icon-rotate 1s linear infinite;
+  }
+  @keyframes icon-rotate {
+    100% { transform: rotate(360deg); }
+  }
 }