Browse Source

Merge branch 'iteration-20240412-style' into iteration-20240516-member

lex 1 year ago
parent
commit
9848170d2c

+ 5 - 3
src/components/select-courseware-member/index.tsx

@@ -10,9 +10,10 @@ export default defineComponent({
   emits: ['close', 'select'],
   setup(props, { emit }) {
     const close = () => {
-      postMessage({
-        api: 'goBack'
-      });
+      // postMessage({
+      //   api: 'goBack'
+      // });
+      emit('close');
     };
 
     onMounted(() => {
@@ -54,6 +55,7 @@ export default defineComponent({
                     orientation: 1
                   }
                 });
+                close();
               }}
             />
           </div>

BIN
src/components/the-vip/icon_bg.png


BIN
src/components/the-vip/icon_bg1.png


+ 1 - 1
src/components/the-vip/index.module.less

@@ -1,7 +1,7 @@
 .container {
   position: relative;
   width: 278px;
-  height: 250px;
+  height: 256px;
   background: url('./icon_bg.png') no-repeat;
   background-size: 100%;
   display: flex;

+ 1 - 1
src/components/the-vip/index.tsx

@@ -16,7 +16,7 @@ export default defineComponent({
           src={icon_close}
           onClick={() => emit('close')}
         />
-        <img class={styles.title} src={icon_title} />
+        {/* <img class={styles.title} src={icon_title} /> */}
         <div class={styles.content}>
           <span style={{ color: '#FF5A56' }}>"乐器AI学练工具"</span>
           服务,解锁更多专属权益,享受全新学习体验!

+ 37 - 1
src/views/courseware-list/component/book/index.tsx

@@ -17,13 +17,15 @@ import { showToast } from 'vant';
 import queryString from 'query-string';
 import CoursewareDetail from '@/custom-plugins/guide-page/courseware-detail';
 import { usePageVisibility } from '@vant/use';
-import { state } from '@/state';
+import { setLogin, state } from '@/state';
 import TheNoticeBar from '@/components/the-noticeBar';
 import {
   api_lessonDetailCourseware,
   api_classDetailCourseware
 } from '../../api';
 import SelectCoursewarePop from '@/components/select-courseware-pop';
+import SelectCoursewareMember from '@/components/select-courseware-member';
+import request from '@/helpers/request';
 
 export default defineComponent({
   name: 'the-book',
@@ -51,6 +53,7 @@ export default defineComponent({
   },
   emits: ['close'],
   setup(props, { emit }) {
+    const pageVisibility = usePageVisibility();
     const router = useRouter();
     console.log(state.user.data.phone);
     const lastTimeKey = 'lastTime' + (state?.user?.data?.phone ?? '');
@@ -66,6 +69,7 @@ export default defineComponent({
       coursewareList: [] as any
     });
     const showSelectCourseware = ref(false);
+    const showMember = ref(false);
     const showGuide = ref(false);
     const isend = ref(false);
     const step = ref(0);
@@ -284,6 +288,18 @@ export default defineComponent({
         }
       }
     );
+
+    watch(
+      () => pageVisibility.value,
+      async (val: any) => {
+        if (val === 'visible') {
+          const userCash = await request.get('/edu-app/user/getUserInfo', {
+            initRequest: true // 初始化接口
+          });
+          setLogin(userCash.data);
+        }
+      }
+    );
     // 检测有几个课件
     const checkCourseware = async (item: any) => {
       if (item.id) {
@@ -293,6 +309,19 @@ export default defineComponent({
         }
 
         if (item.coursewareNum) {
+          // needVipLock
+          const schoolInfos = state.user.data?.schoolInfos;
+          const schoolLock =
+            schoolInfos && schoolInfos.length > 0
+              ? schoolInfos[0].needVipLock
+              : true;
+          if (!state?.user?.data.vipMember && schoolLock) {
+            showMember.value = true;
+            return;
+          } else {
+            showMember.value = false;
+          }
+
           try {
             const res =
               props.tab == 'all' || props.tab == 'favorite'
@@ -496,6 +525,13 @@ export default defineComponent({
             }}
             onSelect={item => handleOpenPlay(item)}></SelectCoursewarePop>
         )}
+
+        {showMember.value && (
+          <SelectCoursewareMember
+            onClose={() => {
+              showMember.value = false;
+            }}></SelectCoursewareMember>
+        )}
       </div>
     );
   }

+ 15 - 4
src/views/courseware-play/component/audio-item/index.tsx

@@ -2,14 +2,14 @@ import { defineComponent, nextTick, reactive, toRefs, watch } from 'vue';
 import { ref } from 'vue';
 import styles from './index.module.less';
 
-import iconLoop from '../../image/icon-loop.svg';
-import iconLoopActive from '../../image/icon-loop-active.svg';
+import iconLoop from '../../image/icon-loop.png';
+import iconLoopActive from '../../image/icon-loop-active.png';
 import iconplay from '../../image/icon-play.png';
 import iconpause from '../../image/icon-pause.png';
 import { NSlider } from 'naive-ui';
 import Vudio from 'vudio.js';
 import { getSecondRPM } from '@/helpers/utils';
-import { Slider } from 'vant';
+import { Slider, showToast } from 'vant';
 import tickMp3 from '../../image/tick.mp3';
 
 export default defineComponent({
@@ -287,7 +287,18 @@ export default defineComponent({
             </div>
             <div
               class={styles.actionBtn}
-              onClick={() => (data.loop = !data.loop)}>
+              onClick={() => {
+                data.loop = !data.loop;
+                if (data.loop) {
+                  setTimeout(() => {
+                    showToast('已打开循环播放');
+                  }, 60);
+                } else {
+                  setTimeout(() => {
+                    showToast('已关闭循环播放');
+                  }, 60);
+                }
+              }}>
               <img src={data.loop ? iconLoopActive : iconLoop} />
             </div>
           </div>

+ 3 - 3
src/views/courseware-play/component/video-item/index.module.less

@@ -204,12 +204,12 @@
 
   :global {
     .van-slider {
-      margin: 7px 0;
+      margin: 10px 0;
     }
 
     .van-slider__bar {
-      min-height: 4%;
-      max-height: 96%;
+      min-height: 5%;
+      max-height: 95%;
     }
   }
 }

+ 2 - 2
src/views/courseware-play/component/video-item/index.tsx

@@ -11,8 +11,8 @@ import styles from './index.module.less';
 
 import TCPlayer from 'tcplayer.js';
 import 'tcplayer.js/dist/tcplayer.min.css';
-import iconLoop from '../../image/icon-loop.svg';
-import iconLoopActive from '../../image/icon-loop-active.svg';
+import iconLoop from '../../image/icon-loop.png';
+import iconLoopActive from '../../image/icon-loop-active.png';
 import iconplay from '../../image/icon-play.svg';
 import iconpause from '../../image/icon-pause.svg';
 import iconSpeed from '../../image/icon-speed.png';

BIN
src/views/courseware-play/image/icon-loop-active.png


BIN
src/views/courseware-play/image/icon-loop.png


+ 52 - 69
src/views/courseware-play/index.tsx

@@ -341,10 +341,9 @@ export default defineComponent({
         handleSwipeChange(resourceIndex);
       }, 0);
 
-
       //检测是否录屏
       if (data.disableScreenRecordingFlag === '1') {
-        handleLimitScreenRecord()
+        handleLimitScreenRecord();
       }
 
       setTimeout(() => {
@@ -368,79 +367,86 @@ export default defineComponent({
       }
     };
 
-    let timers: any = null
+    let timers: any = null;
     const checkVideoPlay = (activeItem: any) => {
-      const activeVideoRef = activeItem.type === 'VIDEO' ? activeItem.videoEle : activeItem.audioEle
+      const activeVideoRef =
+        activeItem.type === 'VIDEO' ? activeItem.videoEle : activeItem.audioEle;
       if (activeVideoRef) {
         timers = setInterval(() => {
-          const paused = activeItem.type === 'VIDEO' ? activeVideoRef.paused() : activeVideoRef.paused
+          const paused =
+            activeItem.type === 'VIDEO'
+              ? activeVideoRef.paused()
+              : activeVideoRef.paused;
           if (!paused) {
-            activeVideoRef.pause()
-            clearInterval(timers)
+            activeVideoRef.pause();
+            clearInterval(timers);
           }
-          activeVideoRef.pause()
-        }, 100)
+          activeVideoRef.pause();
+        }, 100);
       }
 
       setTimeout(() => {
-        clearInterval(timers)
-      }, 3000)
-    }
+        clearInterval(timers);
+      }, 3000);
+    };
     //录屏时间触发
     const handleLimitScreenRecord = async () => {
       const result = await promisefiyPostMessage({
         api: 'getDeviceStatus',
         content: { type: 'video' }
-      })
-      const { status } = result?.content || {}
+      });
+      const { status } = result?.content || {};
       if (status == '1') {
-        data.itemList.forEach((item: any) => (item.autoPlay = false))
-        handleStop()
+        data.itemList.forEach((item: any) => (item.autoPlay = false));
+        handleStop();
 
-        const activeItem = data.itemList[popupData.activeIndex]
+        const activeItem = data.itemList[popupData.activeIndex];
         if (activeItem.type === 'VIDEO' || activeItem.type === 'SONG') {
           // 处理事件 - 事件事件后加载的
-          checkVideoPlay(activeItem)
+          checkVideoPlay(activeItem);
         }
 
         showDialog({
           title: '温馨提示',
           message: '课件内容请勿录屏',
           beforeClose: () => {
-            return new Promise((resolve) => {
+            return new Promise(resolve => {
               promisefiyPostMessage({
                 api: 'getDeviceStatus',
                 content: { type: 'video' }
               }).then((res: any) => {
-                const content = res.content
+                const content = res.content;
                 if (content?.status == '1') {
-                  resolve(false)
+                  resolve(false);
                 } else {
-                  data.itemList.forEach((item: any) => (item.autoPlay = true))
-                  resolve(true)
+                  data.itemList.forEach((item: any) => (item.autoPlay = true));
+                  resolve(true);
                 }
-              })
-            })
+              });
+            });
           }
-        })
+        });
       }
-    }
+    };
 
     // 获取支付渠道
     const sysParamConfig = async () => {
       try {
-        const res = await request.get('/edu-app/sysParamConfig/queryByParamName', {
-          params: {
-            paramName: 'disable_screen_recording_flag'
+        const res = await request.get(
+          '/edu-app/sysParamConfig/queryByParamName',
+          {
+            params: {
+              paramName: 'disable_screen_recording_flag'
+            }
           }
-        })
-        data.disableScreenRecordingFlag = res.data.paramValue || ''
+        );
+        data.disableScreenRecordingFlag = res.data.paramValue || '';
       } catch {
         //
       }
-    }
+    };
     onMounted(async () => {
-      await sysParamConfig()
+      await sysParamConfig();
       // needVipLock
       const schoolInfos = state.user.data?.schoolInfos;
       const schoolLock =
@@ -466,18 +472,18 @@ export default defineComponent({
 
       if (data.disableScreenRecordingFlag === '1') {
         //禁止录屏 ios
-        listenerMessage('setVideoPlayer', (result) => {
+        listenerMessage('setVideoPlayer', result => {
           if (result?.content?.status == 'pause') {
-            handleLimitScreenRecord()
+            handleLimitScreenRecord();
           }
-        })
+        });
         // 安卓
         postMessage({
           api: 'limitScreenRecord',
           content: {
             type: 1
           }
-        })
+        });
       }
     });
 
@@ -613,7 +619,7 @@ export default defineComponent({
           activeItem.videoEle?.pause();
         }
         if (activeItem.type === 'SONG' && activeItem.audioEle) {
-          console.log(1111, '---------')
+          console.log(1111, '---------');
           activeItem.audioEle?.pause();
         }
         // 停止曲谱的播放
@@ -1087,29 +1093,6 @@ export default defineComponent({
       }
     };
 
-    watch(
-      () => pageVisibility.value,
-      async (val: any) => {
-        // 为了处理从没有会员,到购买会员返回时状态变化
-        if (val === 'visible') {
-          const userCash = await request.get('/edu-app/user/getUserInfo', {
-            initRequest: true // 初始化接口
-          });
-          setLogin(userCash.data);
-          const schoolInfos = userCash.data?.schoolInfos;
-          const schoolLock =
-            schoolInfos && schoolInfos.length > 0
-              ? schoolInfos[0].needVipLock
-              : true;
-          if (!state?.user?.data.vipMember && schoolLock) {
-            showMember.value = true;
-          } else {
-            showMember.value = false;
-          }
-        }
-      }
-    );
-
     return () => (
       <div id="playContent" class={styles.playContent}>
         <div
@@ -1240,8 +1223,8 @@ export default defineComponent({
                         showModel={activeData.model}
                         isEmtry={isEmtry}
                         onLoadedmetadata={(audioEle: any) => {
-                          console.log(audioEle, 'audioEle', m)
-                            m.audioEle = audioEle;
+                          console.log(audioEle, 'audioEle', m);
+                          m.audioEle = audioEle;
                         }}
                         onEnded={() => {
                           const _index = popupData.activeIndex + 1;
@@ -1317,7 +1300,7 @@ export default defineComponent({
                           type={'wiki'}
                           id={m.bizId}
                           show={popupData.activeIndex === mIndex}
-                          ref={(el) => m.domEle = el}
+                          ref={el => (m.domEle = el)}
                         />
                       )}
                       {m.type === 'INSTRUMENT' && (
@@ -1325,7 +1308,7 @@ export default defineComponent({
                           type={'instrument'}
                           id={m.bizId}
                           show={popupData.activeIndex === mIndex}
-                          ref={(el) => m.domEle = el}
+                          ref={el => (m.domEle = el)}
                         />
                       )}
                       {m.type === 'MUSICIAN' && (
@@ -1333,7 +1316,7 @@ export default defineComponent({
                           type={'musician'}
                           id={m.bizId}
                           show={popupData.activeIndex === mIndex}
-                          ref={(el) => m.domEle = el}
+                          ref={el => (m.domEle = el)}
                         />
                       )}
                       {m.type === 'LISTEN' && (
@@ -1489,12 +1472,12 @@ export default defineComponent({
             }}
             onSelect={item => loadNewCourseware(item)}></SelectCoursewarePop>
         )}
-        {showMember.value && (
+        {/* {showMember.value && (
           <SelectCoursewareMember
             onClose={() => {
               showSelectCourseware.value = false;
             }}></SelectCoursewareMember>
-        )}
+        )} */}
       </div>
     );
   }

+ 8 - 0
src/views/student-register/index.module.less

@@ -823,4 +823,12 @@
       }
     }
   }
+}
+
+.selectStudentPopup {
+  :global {
+    .van-popup__close-icon {
+      color: #767C7F;
+    }
+  }
 }

+ 2 - 1
src/views/student-register/index.tsx

@@ -2387,7 +2387,8 @@ export default defineComponent({
           round
           position="bottom"
           safeAreaInsetBottom
-          closeable>
+          closeable
+          class={styles.selectStudentPopup}>
           <SelectStudent
             studentItem={forms.studentItem}
             list={forms.studentList}

+ 8 - 0
src/views/student-register/register-member/index.module.less

@@ -371,4 +371,12 @@
   text-align: center;
   font-size: 14px;
   color: #A0D0FF;
+}
+
+.selectStudentPopup {
+  :global {
+    .van-popup__close-icon {
+      color: #767C7F;
+    }
+  }
 }

+ 4 - 3
src/views/student-register/register-member/index.tsx

@@ -379,9 +379,9 @@ export default defineComponent({
         !forms.isChangeSchool &&
         forms.isRegister === 'update'
       ) {
-        otherParams.showOtherMessage = `您已绑定【${
+        otherParams.showOtherMessage = `您已绑定<span style="color: #2B85FF">【${
           forms.studentItem?.schoolName || ''
-        }】,提交后将更换到<span style="color: #2B85FF">【${
+        }】</span>,提交后将更换到<span style="color: #2B85FF">【${
           forms.details.name || ''
         }】</span>,是否确认提交?`;
         otherParams.showOtherSchool = true;
@@ -861,7 +861,8 @@ export default defineComponent({
           round
           position="bottom"
           safeAreaInsetBottom
-          closeable>
+          closeable
+          class={styles.selectStudentPopup}>
           <SelectStudent
             studentItem={forms.studentItem}
             list={forms.studentList}

+ 8 - 0
src/views/student-register/register-new/index.module.less

@@ -404,4 +404,12 @@
   text-align: center;
   font-size: 14px;
   color: #A0D0FF;
+}
+
+.selectStudentPopup {
+  :global {
+    .van-popup__close-icon {
+      color: #767C7F;
+    }
+  }
 }

+ 4 - 3
src/views/student-register/register-new/index.tsx

@@ -289,9 +289,9 @@ export default defineComponent({
         !forms.isChangeSchool &&
         forms.isRegister === 'update'
       ) {
-        otherParams.showOtherMessage = `您已绑定【${
+        otherParams.showOtherMessage = `您已绑定<span style="color: #2B85FF">【${
           forms.studentItem?.schoolName || ''
-        }】,提交后将更换到
+        }】</span>,提交后将更换到
         <span style="color: #2B85FF">【${forms.details.name || ''}】</span>
         ,是否确认提交?`;
         otherParams.showOtherSchool = true;
@@ -921,7 +921,8 @@ export default defineComponent({
           round
           position="bottom"
           safeAreaInsetBottom
-          closeable>
+          closeable
+          class={styles.selectStudentPopup}>
           <SelectStudent
             studentItem={forms.studentItem}
             list={forms.studentList}

+ 1 - 1
vite.config.ts

@@ -16,7 +16,7 @@ function resolve(dir: string) {
 // const proxyUrl = 'https://test.lexiaoya.cn/';
 // const proxyUrl = 'https://kt.colexiu.com/';
 // const proxyUrl = 'http://192.168.3.143:7093/';
-const proxyUrl = 'https://dev.kt.colexiu.com/';
+const proxyUrl = 'https://test.kt.colexiu.com/';
 export default defineConfig({
   base: './',
   plugins: [