Bläddra i källkod

Merge branch 'hqyDev' of http://git.dayaedu.com/liushengqiang/classroom-app into jenkins-test

黄琪勇 10 månader sedan
förälder
incheckning
aa557f6e28

+ 29 - 7
src/views/creation/index-share.tsx

@@ -149,9 +149,9 @@ export default defineComponent({
         state.listState.loading = false;
         const result = res.data || {};
         // 处理重复请求数据
-        if (state.list.length > 0 && result.current === 1) {
-          return;
-        }
+        // if (state.list.length > 0 && result.current === 1) {
+        //   return;
+        // }
         state.list = result.rows || [];
         state.listState.finished = result.current >= result.pages;
         state.params.page = result.current + 1;
@@ -163,7 +163,15 @@ export default defineComponent({
         state.isClick = false;
       }
     };
-
+    function handleChangeList() {
+      if(state.listState.finished){
+        state.listState.finished = false
+        state.params.page = 1;
+        getList()
+      }else{
+        getList()
+      }
+    }
     const onDetail = (item: any) => {
       playProgressData.playProgress = 0
       playProgressData.playState = false
@@ -179,7 +187,10 @@ export default defineComponent({
       const id = state.playType === "Audio" ? "#audioMediaSrc" : "#videoMediaSrc";
       state._plrl = new Plyr(id, {
         controls: ["progress"],
-        fullscreen: { enabled: false },
+        fullscreen: {
+          enabled: false,
+          fallback: false
+        }
       });
       const player = state._plrl
       // 在微信中运行的时候,微信没有开放自动加载资源的权限,所以要等播放之后才显示播放控制器
@@ -198,6 +209,14 @@ export default defineComponent({
         plyrState.playIngShow = true
         pauseStaff()
       });
+      player.on('ended', () => {
+        player.currentTime = 0
+        if(!player.playing){
+          setTimeout(() => {
+            updateProgressStaff(player.currentTime)
+          }, 100);
+        }
+      });
       // 处理按压事件
       const handleStart = () => {
         plyrState.duration = player.duration
@@ -294,6 +313,7 @@ export default defineComponent({
         if (res.code === 999) {
           // 没有的时候显示缺省页
           state.isEmpty = true
+          staffState.isShow = true
           return;
         } else {
           state.musicDetail = res.data;
@@ -438,6 +458,7 @@ export default defineComponent({
     onUnmounted(() => {
       cleanScrollEvent()
       window.removeEventListener('resize', setFullHeight)
+      state._plrl?.destroy()
     });
 
     onBeforeRouteUpdate((to: any) => {
@@ -532,6 +553,7 @@ export default defineComponent({
                         data-poster={ state.musicDetail?.videoImg || videobg}
                         preload="metadata"
                         playsinline
+                        webkit-playsinline
                       />
                     }
                     <div class={[styles.playLarge, plyrState.playIngShow && styles.playIngShow]}></div>
@@ -647,9 +669,9 @@ export default defineComponent({
                     ))}
                   </List>
                   {
-                    !state.listState.finished &&
+                    (!state.listState.finished || state.params.page>2) &&
                       <div class={styles.btnImg}>
-                        <img onClick={getList} src={btnImg} />
+                        <img onClick={handleChangeList} src={btnImg} />
                     </div>
                   }
                 </>

+ 14 - 4
src/views/creation/index.module.less

@@ -33,8 +33,18 @@
 }
 
 .playSection{
-  height: 210px;
+  height: 250px;
+  padding-bottom: 40px;
   position: relative;
+  &::after{
+    position: absolute;
+    content: "";
+    width: 100%;
+    height: 40px;
+    bottom: 0;
+    left: 0;
+    background: linear-gradient( 180deg, #355662 0%, rgba(57,90,95,0) 100%);
+  }
   :global {
       .plyr {
           width: 100%;
@@ -124,7 +134,7 @@
     position: absolute;
     left: 50%;
     top: 50%;
-    transform: translate(-50%, -50%);
+    transform: translate(-50%, calc(-50% - 20px));
     width: 48px;
     height: 48px;
     background: url("./images/midPlay.png") no-repeat;
@@ -139,7 +149,7 @@
     position: absolute;
     left: 50%;
     transform: translateX(-50%);
-    bottom: 56px;
+    bottom: 96px;
     display: none;
     font-weight: 500;
     font-size: 14px;
@@ -176,7 +186,7 @@
     width: 100%;
     height: calc(var(--staffBoxHeight) + 12px);
     position: absolute;
-    bottom: 0;
+    bottom: 40px;
     padding-bottom: 12px;
     visibility: hidden;
     background: linear-gradient( 180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.7) 100%);

+ 14 - 1
src/views/creation/index.tsx

@@ -193,7 +193,10 @@ export default defineComponent({
       const id = state.playType === "Audio" ? "#audioMediaSrc" : "#videoMediaSrc";
       state._plrl = new Plyr(id, {
         controls: ["progress"],
-        fullscreen: { enabled: false },
+        fullscreen: {
+          enabled: false,
+          fallback: false
+        }
       });
       const player = state._plrl
         // 创建音波数据
@@ -228,6 +231,14 @@ export default defineComponent({
         plyrState.playIngShow = true
         pauseStaff()
       });
+      player.on('ended', () => {
+        player.currentTime = 0
+        if(!player.playing){
+          setTimeout(() => {
+            updateProgressStaff(player.currentTime)
+          }, 100);
+        }
+      });
       // 处理按压事件
       const handleStart = () => {
         plyrState.duration = player.duration
@@ -508,6 +519,7 @@ export default defineComponent({
     onUnmounted(() => {
       setStatusBarTextColor(false)
       cleanScrollEvent()
+      state._plrl?.destroy()
     });
     onBeforeRouteLeave((to, from, next)=>{
       if(to.path !== "/playCreation"){
@@ -562,6 +574,7 @@ export default defineComponent({
                   controls="false"
                   preload="metadata"
                   playsinline
+                  webkit-playsinline
                 />
               </div>
             }

+ 6 - 1
src/views/creation/login-model/index.tsx

@@ -55,7 +55,12 @@ export default defineComponent({
             ...forms
           }
         });
-
+        if(result.code === 5408){
+          setTimeout(() => {
+            showToast(result.message);
+          }, 100);
+          return
+        }
         if (result.code === 5439) {
           emit('confirm', {
             loginTag: false,

+ 15 - 1
src/views/creation/playCreation/index.tsx

@@ -59,7 +59,11 @@ export default defineComponent({
     function initPlay(){
       const id = playType === "Audio" ? "#audioMediaSrc" : "#videoMediaSrc";
       _plrl = new Plyr(id, {
-        controls: ["play", "progress", "current-time", "duration"]
+        controls: ["play", "progress", "current-time", "duration"],
+        fullscreen: {
+          enabled: false,
+          fallback: false
+        }
       });
       // 在微信中运行的时候,微信没有开放自动加载资源的权限,所以要等播放之后才显示播放控制器
       _plrl.on('loadedmetadata', () => {
@@ -74,6 +78,14 @@ export default defineComponent({
         playIngShow.value = true
         pauseStaff()
       });
+      _plrl.on('ended', () => {
+        _plrl.currentTime = 0
+        if(!_plrl.playing){
+          setTimeout(() => {
+            updateProgressStaff(_plrl.currentTime)
+          }, 100);
+        }
+      });
       _plrl.on('seeked', () => {
         // 暂停的时候调用
         if(!_plrl.playing){
@@ -404,6 +416,7 @@ export default defineComponent({
       }else{
         window.removeEventListener('resize', updateLandscapeScreenState)
       }
+      _plrl?.destroy()
     })
     return () =>
     <div id="landscapeScreenPlay" class={[styles.playCreation,landscapeScreen.value && styles.landscapeScreen,!loaded.value && styles.notLoaded]}
@@ -444,6 +457,7 @@ export default defineComponent({
             data-poster={ videoBgUrl || videobg}
             preload="metadata"
             playsinline
+            webkit-playsinline
           />
       }
       <div class={[styles.playLarge, playIngShow.value && styles.playIngShow]}></div>

+ 4 - 1
src/views/hot-music-more/index.tsx

@@ -147,8 +147,10 @@ export default defineComponent({
       tagActive: {} as any,
       childSelectId: null as any
     });
-
+    let isClick = false
     const getMusicList = async () => {
+      if (isClick) return;
+      isClick = true;
       state.loading = true;
       try {
         const res = await api_musicSheetPage({
@@ -172,6 +174,7 @@ export default defineComponent({
         // console.log('🚀 ~ error:', error);
       }
       state.loading = false;
+      isClick = false
     };
 
     const getSubjecList = async () => {