Преглед на файлове

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

SanHQin преди 1 ден
родител
ревизия
a4d87dd24b
променени са 3 файла, в които са добавени 36 реда и са изтрити 24 реда
  1. 9 6
      src/App.vue
  2. 16 7
      src/views/Student/index.vue
  3. 11 11
      src/views/components/tool/previewImageTool.vue

+ 9 - 6
src/App.vue

@@ -188,24 +188,27 @@ window.addEventListener('beforeunload', () => {
 .image-preview__toolbar button {
   padding: 8px 12px;
   border: none;
-  background: linear-gradient(180deg, #3a8bff 0%, #2f80ed 100%);
+  // background: linear-gradient(180deg, #ff9300 0%, #2f80ed 100%);
+  background: #ff9300;
   color: #fff;
   border-radius: 10px;
   cursor: pointer;
   transition: transform 0.15s ease, box-shadow 0.2s ease, background 0.2s ease;
-  box-shadow: 0 2px 8px rgba(47, 128, 237, 0.3);
+  // box-shadow: 0 2px 8px rgba(47, 128, 237, 0.3);
 }
 .image-preview__toolbar button:hover {
   transform: translateY(-1px);
-  box-shadow: 0 6px 16px rgba(47, 128, 237, 0.35);
+  // box-shadow: 0 6px 16px rgba(47, 128, 237, 0.35);
 }
 .image-preview__toolbar button:active {
   transform: translateY(0);
-  box-shadow: 0 2px 8px rgba(47, 128, 237, 0.28);
-  background: linear-gradient(180deg, #2f80ed 0%, #1b6dde 100%);
+  // box-shadow: 0 2px 8px rgba(47, 128, 237, 0.28);
+  // background: linear-gradient(180deg, #2f80ed 0%, #1b6dde 100%);
+  background: #ff9300;
 }
 .image-preview__toolbar button:focus-visible {
-  outline: 2px solid rgba(47, 128, 237, 0.6);
+  // outline: 2px solid rgba(47, 128, 237, 0.6);
+  outline: none;
   outline-offset: 2px;
 }
 .image-preview__stage {

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

@@ -133,9 +133,9 @@
                 </div>
               </div>
               <div class="slide-bottom-right" v-if="!isFullscreen">
-                <Refresh class="tool-btn" v-tooltip="lang.ssRefresh" @click="handleRefreshPage" v-if="currentSlideHasIframe"/>
+                <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" 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" 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"/>
@@ -154,7 +154,7 @@
                   <line x1="36" y1="88" x2="64" y2="88"
                         stroke="currentColor" stroke-width="6" stroke-linecap="round"/>
                 </svg>
-                <IconLoading v-else-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo" class="tool-btn loading" v-tooltip="lang.ssSubmitting"></IconLoading>
+                <IconLoading v-else-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && !currentSlideHasEnglishSpeaking" class="tool-btn loading" v-tooltip="lang.ssSubmitting"></IconLoading>
                 <IconStopwatchStart v-if="props.type == '1' && courseDetail.userid == props.userid && isFollowModeActive" class="tool-btn" v-tooltip="lang.ssTimer" @click="timerlVisible = !timerlVisible"  />
                 <IconWrite v-if="isFollowModeActive && props.type == '1' && courseDetail.userid == props.userid" class="tool-btn" v-tooltip="lang.ssPenTool" @click="writingBoardToolVisible = true"  />
                 <!-- <IconMagic v-if="isFollowModeActive && props.type == '1' && courseDetail.userid == props.userid" class="tool-btn" v-tooltip="lang.ssLaserPen" :class="{ 'active': laserPen }" @click="toggleLaserPen"  /> -->
@@ -170,7 +170,7 @@
         </div>
 
         <!-- 作业提交按钮 - 当当前幻灯片包含iframe时显示(排除B站视频) -->
-        <div v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && isFullscreen" class="homework-submit-btn" :class="{ 'submitting': isSubmitting }"
+        <div v-if="currentSlideHasIframe && !currentSlideHasBilibiliVideo && isFullscreen && !currentSlideHasEnglishSpeaking" 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" />
@@ -180,7 +180,7 @@
 
         <!-- 刷新iframe按钮 -->
         <div class="refresh-page-btn" 
-          v-if="currentSlideHasIframe && isFullscreen"
+          v-if="currentSlideHasIframe && isFullscreen && !currentSlideHasEnglishSpeaking"
           :style="{ right: getRefreshButtonRight() + 'px' }" 
           @click="handleRefreshPage"
           v-tooltip="lang.ssRefreshIframe">
@@ -1067,6 +1067,14 @@ const currentSlideHasBilibiliVideo = computed(() => {
   )
 })
 
+// 检测当前幻灯片是否是英语口语
+const currentSlideHasEnglishSpeaking = computed(() => {
+  return elementList.value.some(element => 
+    element.type === ElementTypes.FRAME && (element.toolType === 77)
+  )
+})
+
+
 // 跳转到指定幻灯片
 const goToSlide = (index: number) => {
   console.log('goToSlide 被调用,目标索引:', index)
@@ -1241,10 +1249,11 @@ const getWorkId = () => {
         id = match[1]
       }
       workId.value = id
-      if((element as any).toolType === 72){
+      if ((element as any).toolType === 72) {
         workId.value = (element as any).id
       }
-    }else{
+    }
+    else {
       workId.value = ''
     }
   }

+ 11 - 11
src/views/components/tool/previewImageTool.vue

@@ -7,17 +7,6 @@
       @click.self="closePreview"
       @wheel.prevent="onWheel"
     >
-      <div class="image-preview__toolbar">
-        <button @click.stop="zoomOut">-</button>
-        <button @click.stop="zoomIn">+</button>
-        <button @click.stop="resetTransform">{{ lang.ssReset }}</button>
-        <button @click.stop="rotateLeft">⟲</button>
-        <button @click.stop="rotateRight">⟳</button>
-        <button @click.stop="toggleFit">
-          {{ fitMode ? lang.ssActualSize : lang.ssFitScreen }}
-        </button>
-        <button @click.stop="closePreview">{{ lang.ssClose }}</button>
-      </div>
       <div
         class="image-preview__stage"
         @mousedown="onDragStart"
@@ -43,6 +32,17 @@
           @error="onPreviewImageError"
         />
       </div>
+      <div class="image-preview__toolbar">
+        <button @click.stop="zoomOut">-</button>
+        <button @click.stop="zoomIn">+</button>
+        <button @click.stop="resetTransform">{{ lang.ssReset }}</button>
+        <button @click.stop="rotateLeft">⟲</button>
+        <button @click.stop="rotateRight">⟳</button>
+        <button @click.stop="toggleFit">
+          {{ fitMode ? lang.ssActualSize : lang.ssFitScreen }}
+        </button>
+        <button @click.stop="closePreview">{{ lang.ssClose }}</button>
+      </div>
     </div>
   </Teleport>
 </template>