|  | @@ -12,7 +12,7 @@ import {
 | 
	
		
			
				|  |  |  import styles from './index.module.less';
 | 
	
		
			
				|  |  |  import 'plyr/dist/plyr.css';
 | 
	
		
			
				|  |  |  import request from '@/helpers/request';
 | 
	
		
			
				|  |  | -import { state } from '@/state';
 | 
	
		
			
				|  |  | +import { handleShowVip, state } from '@/state';
 | 
	
		
			
				|  |  |  import { useRoute } from 'vue-router';
 | 
	
		
			
				|  |  |  import iconBack from '../coursewarePlay/image/back.svg';
 | 
	
		
			
				|  |  |  import {
 | 
	
	
		
			
				|  | @@ -20,13 +20,11 @@ import {
 | 
	
		
			
				|  |  |    postMessage,
 | 
	
		
			
				|  |  |    promisefiyPostMessage
 | 
	
		
			
				|  |  |  } from '@/helpers/native-message';
 | 
	
		
			
				|  |  | -// import { browser } from '@/helpers/utils';
 | 
	
		
			
				|  |  |  import { Vue3Lottie } from 'vue3-lottie';
 | 
	
		
			
				|  |  |  import playLoadData from '../coursewarePlay/datas/data.json';
 | 
	
		
			
				|  |  |  import VideoClass from './video-class';
 | 
	
		
			
				|  |  |  import { usePageVisibility } from '@vant/use';
 | 
	
		
			
				|  |  |  import { useInterval, useIntervalFn } from '@vueuse/core';
 | 
	
		
			
				|  |  | -import { handleCheckVip, hasVip } from '../hook/useFee';
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // const materialType = {
 | 
	
		
			
				|  |  |  //   视频: 'VIDEO',
 | 
	
	
		
			
				|  | @@ -103,7 +101,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        item: null as any
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |      // 获取课后练习记录
 | 
	
		
			
				|  |  | -    const getTrainingRecord = async () => {
 | 
	
		
			
				|  |  | +    const getTrainingRecord = async (materialId?: any) => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  |          // ?${query.courseScheduleId}?userId=${state.user?.data?.id}
 | 
	
		
			
				|  |  |          const res: any = await request.post(
 | 
	
	
		
			
				|  | @@ -131,7 +129,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              if (item.times > item.trainingTimes) {
 | 
	
		
			
				|  |  |                data.isPlayAll = false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if (item.id + '' == route.query.materialId) {
 | 
	
		
			
				|  |  | +            if (item.id + '' == (materialId || route.query.materialId)) {
 | 
	
		
			
				|  |  |                popupData.tabName = item.musicScoreName;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            });
 | 
	
	
		
			
				|  | @@ -142,7 +140,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        return [];
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -    const setRecord = async (trainings: any[]) => {
 | 
	
		
			
				|  |  | +    const setRecord = async (trainings: any[], materialId?: any) => {
 | 
	
		
			
				|  |  |        if (Array.isArray(trainings)) {
 | 
	
		
			
				|  |  |          data.trainings = trainings.map((n: any) => {
 | 
	
		
			
				|  |  |            // const materialRefs = n.materialRefs ? n.materialRefs : [];
 | 
	
	
		
			
				|  | @@ -157,13 +155,13 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              loop: false,
 | 
	
		
			
				|  |  |              videoEle: null,
 | 
	
		
			
				|  |  |              timer: null,
 | 
	
		
			
				|  |  | -            muted: hasVip() ? false : true, // 静音
 | 
	
		
			
				|  |  | +            muted: n.useStatus === "LOCK" ? false : true, // 静音
 | 
	
		
			
				|  |  |              // muted: true,
 | 
	
		
			
				|  |  | -            autoplay: hasVip() ? true : false //自动播放
 | 
	
		
			
				|  |  | +            autoplay: n.useStatus === "LOCK" ? true : false //自动播放
 | 
	
		
			
				|  |  |            };
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |          data.itemList = data.trainings.filter(
 | 
	
		
			
				|  |  | -          (n: any) => n.id == route.query.materialId
 | 
	
		
			
				|  |  | +          (n: any) => n.id == materialId || route.query.materialId
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |          data.videoData = data.itemList[0];
 | 
	
		
			
				|  |  |          if (data.disableScreenRecordingFlag === '1') {
 | 
	
	
		
			
				|  | @@ -201,7 +199,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // 获取支付渠道
 | 
	
		
			
				|  |  | +    // 获取是否录屏
 | 
	
		
			
				|  |  |      const sysParamConfig = async () => {
 | 
	
		
			
				|  |  |        try {
 | 
	
		
			
				|  |  |          const res = await request.get(
 | 
	
	
		
			
				|  | @@ -284,13 +282,12 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        await sysParamConfig();
 | 
	
		
			
				|  |  |        const trainings = await getTrainingRecord();
 | 
	
		
			
				|  |  |        // 初始化状态
 | 
	
		
			
				|  |  | -      // console.log(trainings, 'trainings');
 | 
	
		
			
				|  |  | +      
 | 
	
		
			
				|  |  |        setRecord(trainings);
 | 
	
		
			
				|  |  | -      // 是否为会员
 | 
	
		
			
				|  |  | +      // 是否解锁
 | 
	
		
			
				|  |  |        if (state.platformType === 'STUDENT') {
 | 
	
		
			
				|  |  | -        data.isMember = handleCheckVip();
 | 
	
		
			
				|  |  | -        // console.log(data.isMember, 'isMember');
 | 
	
		
			
				|  |  | -        if (!data.isMember) {
 | 
	
		
			
				|  |  | +        if(data.videoData.useStatus === "LOCK") {
 | 
	
		
			
				|  |  | +          handleShowVip(data.videoData.lessonCoursewareId, "LESSON", "exercise")
 | 
	
		
			
				|  |  |            nextTick(() => {
 | 
	
		
			
				|  |  |              postMessage({
 | 
	
		
			
				|  |  |                api: 'courseLoading',
 | 
	
	
		
			
				|  | @@ -418,7 +415,6 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          data.visiableConfirmText = isLastIndex ? '完成' : '下一题';
 | 
	
		
			
				|  |  |          data.visiableStatus = true;
 | 
	
		
			
				|  |  |          data.itemIndex = itemIndex;
 | 
	
		
			
				|  |  | -        console.log(itemIndex, 'index');
 | 
	
		
			
				|  |  |          data.isLastIndex = isLastIndex;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      };
 | 
	
	
		
			
				|  | @@ -431,7 +427,11 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          data.itemList = [nextItem];
 | 
	
		
			
				|  |  |          data.videoData = nextItem;
 | 
	
		
			
				|  |  | -        handleExerciseCompleted();
 | 
	
		
			
				|  |  | +        if(data.videoData.useStatus === "UNLOCK") {
 | 
	
		
			
				|  |  | +          handleShowVip(data.videoData.lessonCoursewareId, "LESSON", "exercise")
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          handleExerciseCompleted();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          postMessage({ api: 'goBack' });
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -447,6 +447,28 @@ export default defineComponent({
 | 
	
		
			
				|  |  |        data.visiableStatus = false;
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    const reloadPage = async () => {
 | 
	
		
			
				|  |  | +      if(state.vipShow) return
 | 
	
		
			
				|  |  | +      const trainings = await getTrainingRecord(data.videoData.lessonCoursewareId);
 | 
	
		
			
				|  |  | +      setRecord(trainings, data.videoData.lessonCoursewareId);
 | 
	
		
			
				|  |  | +      // 是否解锁
 | 
	
		
			
				|  |  | +      if (state.platformType === 'STUDENT') {
 | 
	
		
			
				|  |  | +        if(data.videoData.useStatus === "LOCK") {
 | 
	
		
			
				|  |  | +          handleShowVip(data.videoData.lessonCoursewareId, "LESSON", "exercise")
 | 
	
		
			
				|  |  | +          nextTick(() => {
 | 
	
		
			
				|  |  | +            postMessage({
 | 
	
		
			
				|  |  | +              api: 'courseLoading',
 | 
	
		
			
				|  |  | +              content: {
 | 
	
		
			
				|  |  | +                show: false,
 | 
	
		
			
				|  |  | +                type: 'fullscreen'
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      watch(pageVisibility, (value: any) => {
 | 
	
		
			
				|  |  |        handleStopVideo();
 | 
	
		
			
				|  |  |        if (value == 'visible') {
 | 
	
	
		
			
				|  | @@ -462,6 +484,7 @@ export default defineComponent({
 | 
	
		
			
				|  |  |              // console.log(234);
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  | +        reloadPage()
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -513,7 +536,6 @@ export default defineComponent({
 | 
	
		
			
				|  |  |                          clearTimeout(activeData.timer);
 | 
	
		
			
				|  |  |                          activeData.model = true;
 | 
	
		
			
				|  |  |                          videoIntervalRef.pause();
 | 
	
		
			
				|  |  | -                        console.log('11111');
 | 
	
		
			
				|  |  |                        }}
 | 
	
		
			
				|  |  |                        onEnded={() => addTrainingRecord()}
 | 
	
		
			
				|  |  |                        onChangeModal={(status: boolean) => {
 |