2
0

2 Commits a633d49dfa ... 4a63b7e19f

Autor SHA1 Mensagem Data
  zq 4a63b7e19f Merge branch 'master' of http://60.205.254.193:3000/GCLS/eep_page há 1 semana atrás
  zq 8b8cfd5237 富文本音频和音频视频组件从file_list获取rul文件url há 1 semana atrás

+ 5 - 0
src/components/PinyinText.vue

@@ -4,6 +4,7 @@
     <AudioPlay
       v-if="isEnable(isEnableVoice)"
       :file-id="audioFileId"
+      :file-url="audioFileUrl"
       :theme-color="unifiedAttrib && unifiedAttrib.topic_color ? unifiedAttrib.topic_color : ''"
     />
 
@@ -244,6 +245,10 @@ export default {
       type: String,
       default: '',
     },
+    audioFileUrl: {
+      type: String,
+      default: '',
+    },
     unifiedAttrib: {
       type: Object,
       default: () => ({}),

+ 5 - 0
src/views/book/courseware/preview/components/audio/AudioPreview.vue

@@ -10,6 +10,7 @@
               :view-size="data.property.style_mode"
               :view-method="data.property.view_method"
               :file-id="file.file_id"
+              :file-url="file.file_url"
               :file-name-display="data.property.file_name_display_mode"
               :file-name="file.file_name.slice(0, file.file_name.lastIndexOf('.'))"
               :audio-index="i"
@@ -23,6 +24,7 @@
               :view-size="data.property.style_mode"
               :view-method="data.property.view_method"
               :file-id="file.file_id"
+              :file-url="file.file_url"
               :file-name-display="data.property.file_name_display_mode"
               :file-name="file.file_name.slice(0, file.file_name.lastIndexOf('.'))"
               :audio-index="i"
@@ -36,6 +38,7 @@
           <AudioPlay
             view-size="small"
             :file-id="file.file_id"
+            :file-url="file.file_url"
             :audio-index="i"
             :topic-color="data.unified_attrib?.topic_color"
           />
@@ -55,6 +58,7 @@
               view-size="big"
               :view-method="data.property.view_method"
               :file-id="file.file_id"
+              :file-url="file.file_url"
               :file-name-display="data.property.file_name_display_mode"
               :file-name="file.file_name.slice(0, file.file_name.lastIndexOf('.'))"
               :show-slider="true"
@@ -71,6 +75,7 @@
                 :ref="file.file_id"
                 view-size="list"
                 :file-id="file.file_id"
+                :file-url="file.file_url"
                 :file-name="file.file_name.slice(0, file.file_name.lastIndexOf('.'))"
                 :show-slider="false"
                 :audio-index="i"

+ 8 - 0
src/views/book/courseware/preview/components/character_base/components/AudioPlay.vue

@@ -59,6 +59,10 @@ export default {
       type: String,
       required: true,
     },
+    fileUrl: {
+      type: String,
+      default: '',
+    },
     themeColor: {
       type: String,
       default: '',
@@ -99,6 +103,10 @@ export default {
   watch: {
     fileId: {
       handler(val) {
+        if (this.fileUrl) {
+          this.url = this.fileUrl;
+          return;
+        }
         if (!val) return;
         if (val.indexOf('/') > -1) {
           this.url = val;

+ 11 - 7
src/views/book/courseware/preview/components/common/AudioPlay.vue

@@ -112,7 +112,7 @@
     <audio
       :id="fileId"
       :ref="fileId"
-      :src="url"
+      :src="fileUrl"
       preload="metadata"
       @loadedmetadata="onLoadedmetadata"
       @timeupdate="onTimeupdate"
@@ -131,6 +131,10 @@ export default {
       type: String,
       required: true,
     },
+    fileUrl: {
+      type: String,
+      default: '',
+    },
     fileName: {
       type: String,
       default: '',
@@ -206,6 +210,10 @@ export default {
   watch: {
     fileId: {
       handler(val) {
+        if (this.fileUrl) {
+          this.url = this.fileUrl;
+          return;
+        }
         if (!val) return;
         GetFileURLMap({ file_id_list: [val] }).then(({ url_map }) => {
           this.url = url_map[val];
@@ -232,7 +240,7 @@ export default {
       this.curTime = curTime * 1000;
     },
     playAudio() {
-      if (!this.url) return;
+      if (!this.url || !this.fileUrl) return;
       const audio = this.$refs[this.fileId] || {};
       this.pauseAll();
       audio.playbackRate = this.audio.playbackRate;
@@ -289,11 +297,7 @@ export default {
       let audioArr = document.getElementsByTagName('audio');
       if (audioArr && audioArr.length > 0) {
         for (let i = 0; i < audioArr.length; i++) {
-          if (audioArr[i].src === this.url) {
-            if (audioArr[i].id !== this.fileId) {
-              audioArr[i].pause();
-            }
-          } else {
+          if (audioArr[i].id !== this.fileId) {
             audioArr[i].pause();
           }
         }

+ 8 - 4
src/views/book/courseware/preview/components/common/VideoPlay.vue

@@ -4,7 +4,7 @@
       <div class="video-box">
         <video
           ref="veo"
-          :src="url"
+          :src="fileUrl"
           :style="`object-fit: ${zoom};`"
           :poster="veoPoster"
           :autoplay="autoplay"
@@ -26,7 +26,7 @@
       <template v-if="'independent' === viewMethod">
         <video
           ref="veo"
-          :src="url"
+          :src="fileUrl"
           :style="`object-fit: ${zoom};`"
           :poster="veoPoster"
           :autoplay="autoplay"
@@ -43,7 +43,7 @@
         </video>
       </template>
       <template v-else>
-        <video ref="veo" :src="url" :poster="veoPoster">
+        <video ref="veo" :src="fileUrl" :poster="veoPoster">
           <h2>您的浏览器<strong>不支持video标签</strong></h2>
         </video>
       </template>
@@ -65,6 +65,10 @@ export default {
       type: String,
       required: true,
     },
+    fileUrl: {
+      type: String,
+      default: '',
+    },
     autoplay: {
       // 视频就绪后是否马上播放
       type: Boolean,
@@ -141,7 +145,7 @@ export default {
   watch: {
     fileId: {
       handler(val) {
-        if (!val) return;
+        if (!val || !this.fileUrl) return;
         GetFileURLMap({ file_id_list: [val] }).then(({ url_map }) => {
           this.url = url_map[val];
         });

+ 2 - 0
src/views/book/courseware/preview/components/rich_text/RichTextPreview.vue

@@ -9,6 +9,7 @@
           v-if="isEnable(data.property.view_pinyin)"
           :is-enable-voice="data.property.is_enable_voice"
           :audio-file-id="data.audio_file_id"
+          :audio-file-url="data.file_list?.[0]?.file_url"
           :unified-attrib="data.unified_attrib"
           :paragraph-list="data.paragraph_list"
           :rich-text-list="data.rich_text_list"
@@ -26,6 +27,7 @@
           <AudioPlay
             v-if="isEnable(data.property.is_enable_voice)"
             :file-id="data.audio_file_id"
+            :file-url="data.file_list?.[0]?.file_url"
             :theme-color="data.unified_attrib && data.unified_attrib.topic_color ? data.unified_attrib.topic_color : ''"
           />
           <span

+ 9 - 1
src/views/book/courseware/preview/components/video/VideoPreview.vue

@@ -14,6 +14,7 @@
             view-size="small"
             view-method="independent"
             :file-id="file.file_id"
+            :file-url="file.file_url"
             :cur-video-index="curVideoIndex"
             @changeFile="changeFile"
           />
@@ -42,6 +43,7 @@
             <VideoPlay
               view-size="big"
               :file-id="file.file_id"
+              :file-url="file.file_url"
               :cur-video-index="curVideoIndex"
               @changeFile="changeFile"
             />
@@ -58,7 +60,13 @@
             :style="{ height: elementHeight + 'px', transform: `translateY(${translateY}px)` }"
           >
             <li v-for="(file, i) in data.file_list" :key="i" @click="handleAudioClick(i)">
-              <VideoPlay view-size="small" :file-id="file.file_id" :audio-index="i" :cur-video-index="curVideoIndex" />
+              <VideoPlay
+                view-size="small"
+                :file-id="file.file_id"
+                :file-url="file.file_url"
+                :audio-index="i"
+                :cur-video-index="curVideoIndex"
+              />
             </li>
           </ul>
           <button v-if="viewTopBottomBtn" class="arrow top" @click="scroll(1)">