谢杰标 2 rokov pred
rodič
commit
0e62d69a4d

+ 1 - 57
components/course/courseChapter.vue

@@ -27,7 +27,7 @@
             :isLive="isLive"
             :sectionMaxNum="sectionMaxNum"
             :preItem="list[indexM - 1] || preItem"
-            @playEnd="refreshList($event)"
+            @playEnd="getSectionList"
             :isBuy="isBuy"
             :nextMenuItem="findNextSection(indexM)"
             :isRebuild="isRebuild"
@@ -134,7 +134,6 @@ export default {
     return {
       down: true,
       list: [],
-      examList: {},
       canLearn: false, //是否全部视频看完才可以练习、测试
       sectionExam: [],
     };
@@ -160,52 +159,12 @@ export default {
           });
       });
     },
-    async refreshList(isRebuild) {
-      // console.log('节的播放结束');
-      let moduleId = this.menuItem.moduleId ? this.menuItem.moduleId : 0;
-      if (this.isRebuild) {
-        this.getReSectionList(
-          this.menuItem.id,
-          this.menuItem.courseId,
-          moduleId
-        );
-      } else {
-        // console.log('重新请求');
-        this.getBuySectionList(
-          this.menuItem.id,
-          this.menuItem.courseId,
-          moduleId
-        );
-        //				this.getMenuExamList(item.id,item.courseId,moduleId)
-      }
-
-      this.$emit("playEnd", { isRebuild: isRebuild.isRebuild });
-      // this.newMenuAllList = await this.studyRecordMenuAllList()
-      // console.log('播放器节:', this.newMenuAllList);
-    },
     findNextSection(index) {
       for (let i = index + 1; i < this.list.length; i++) {
         return this.list[i];
       }
       return {};
     },
-    // /study/record/menuAllList - 查询课程所有子目录结构列表
-    studyRecordMenuAllList() {
-      return new Promise((resolve) => {
-        this.$api
-          .studyRecordMenuAllList({
-            courseId: this.courseId,
-            gradeId: this.gradeId,
-            goodsId: this.goodsId,
-            orderGoodsId: this.orderGoodsId,
-          })
-          .then((res) => {
-            if (res.data.code == 200) {
-              resolve(res.data.data);
-            }
-          });
-      });
-    },
     gradeCheckGoodsStudy(id) {
       return new Promise((resolve) => {
         this.$api
@@ -542,21 +501,6 @@ export default {
         this.getSectionList();
       }
     },
-
-    getMenuExamList(chapterId, courseId, moduleId) {
-      let self = this;
-      this.$api
-        .menuExamList({
-          chapterId: chapterId,
-          courseId: courseId,
-          moduleId: moduleId,
-        })
-        .then((res) => {
-          if (res.data.code == 200) {
-            self.examList = res.data.rows;
-          }
-        });
-    },
     getSectionList() {
       const fn = this.isBuy ? "reSectionList" : "sectionList";
       let chapterId = this.menuItem.chapterId || this.menuItem.menuId;

+ 1 - 1
components/course/courseSection.vue

@@ -209,7 +209,7 @@ export default {
       uni.$on("playEnd", () => {
         console.log("结束了");
         if (this.isActive) {
-          this.menuItem.learning = 1;
+          this.$emit("playEnd");
         }
       });
   },

+ 1 - 1
components/course/courseTree.vue

@@ -42,6 +42,7 @@
             :goodsType="goodsType"
             :testType="3"
             :isRebuild="isRebuild"
+            @playEnd="getMenuList"
           ></courseSection
         ></view>
       </view>
@@ -138,7 +139,6 @@ export default {
       return this.propParamFn(["sectionItem"]);
     },
     courseId() {
-      console.log(this.params, "params");
       return this.params.courseId;
     },
   },

+ 33 - 3
components/myPlayer/polyvPlayer.vue

@@ -13,6 +13,7 @@
         :object-fit="'contain'"
         @statechange="wxStatechange"
         @error="playError"
+        @timeupdate="timeupdate"
         :autoplay="autoplay"
         :page-gesture="true"
         :vslide-gesture="true"
@@ -151,7 +152,7 @@ export default {
       });
     },
     wxStatechange(newstate) {
-      console.log("lwxStatechange", newstate);
+      polyvPlayerContext = this.selectComponent("#playerVideo");
       // ["playing", "pause", "ended","error"]
       let state = newstate.detail.newstate;
       if (state == "error") {
@@ -161,6 +162,7 @@ export default {
       this.$emit(state);
     },
     playing() {
+      console.log(polyvPlayerContext, "polyvPlayerContext");
       // #ifdef MP-WEIXIN
       polyvPlayerContext.seek(this.videoCurrentTime || 0);
       // #endif
@@ -182,7 +184,14 @@ export default {
       console.log("播放err", err);
     },
     timeupdate(e) {
-      this.$emit("timeupdate", this.playCurrentTime());
+      let time = 0;
+      // #ifdef MP-WEIXIN
+      time = e.detail.currentTime;
+      // #endif
+      // #ifdef H5
+      time = this.playCurrentTime();
+      // #endif
+      this.$emit("timeupdate", time);
     },
     h5StateChange() {
       let states = {
@@ -269,11 +278,32 @@ export default {
     },
     // 退出全屏
     exitFullScreen() {
+      if (!polyvPlayerContext) {
+        return;
+      }
       // #ifdef MP-WEIXIN
       polyvPlayerContext.exitFullScreen();
       // #endif
       // #ifdef H5
-      polyvPlayerContext.toggleFullscreen();
+      if (
+        !!(
+          document.webkitIsFullScreen ||
+          document.mozFullScreen ||
+          document.msFullscreenElement ||
+          document.fullscreenElement
+        )
+      ) {
+        try {
+          var de = document;
+          if (de.exitFullscreen) {
+            de.exitFullscreen();
+          } else if (de.mozCancelFullScreen) {
+            de.mozCancelFullScreen();
+          } else if (de.webkitCancelFullScreen) {
+            de.webkitCancelFullScreen();
+          }
+        } catch (err) {}
+      }
       // #endif
     },
     onPlayerInitOver() {

+ 2 - 23
components/popup/camera.vue

@@ -187,27 +187,6 @@ export default {
     reTakeOrClose(type = 0) {
       type ? this.reTake() : this.closeCamera();
     },
-    exitFullscreen() {
-      if (
-        !!(
-          document.webkitIsFullScreen ||
-          document.mozFullScreen ||
-          document.msFullscreenElement ||
-          document.fullscreenElement
-        )
-      ) {
-        try {
-          var de = document;
-          if (de.exitFullscreen) {
-            de.exitFullscreen();
-          } else if (de.mozCancelFullScreen) {
-            de.mozCancelFullScreen();
-          } else if (de.webkitCancelFullScreen) {
-            de.webkitCancelFullScreen();
-          }
-        } catch (err) {}
-      }
-    },
     closeCamera() {
       this.isShow = false;
       this.showSet = false;
@@ -216,8 +195,7 @@ export default {
 
     openCamera() {
       this.uploadLock = false;
-      // 退出全屏
-      this.exitFullscreen();
+      this.popupPhotoShow = false;
       // 同一个商品只谈一次提示
       let popupList = uni.getStorageSync("popupList") || [];
       if (!popupList.includes(this.goodsId)) {
@@ -235,6 +213,7 @@ export default {
         success: (res) => {
           if (res.authSetting["scope.camera"]) {
             this.isCameraAuth = true;
+            this.showCamera();
           } else {
             wx.authorize({
               scope: "scope.camera",

+ 1 - 6
pages3/course/detail.vue

@@ -338,18 +338,12 @@
 </template>
 
 <script>
-import courseModule from "@/components/course/courseModule.vue";
-import courseChapter from "@/components/course/courseChapter.vue";
-import courseSection from "@/components/course/courseSection.vue";
 import handoutsBox from "@/components/course/handoutsBox.vue";
 import courseTree from "@/components/course/courseTree.vue";
 import myPlayer from "@/components/myPlayer/polyvPlayer.vue";
 import { mapGetters, mapMutations } from "vuex";
 export default {
   components: {
-    courseModule,
-    courseChapter,
-    courseSection,
     handoutsBox,
     courseTree,
     myPlayer,
@@ -613,6 +607,7 @@ export default {
     },
     timeupdate(time) {
       if (time >= this.listenSecond) {
+        this.listenSecond = time + 100;
         let refPlv = this.$refs.player;
         refPlv.playPause();
         refPlv.exitFullScreen();

+ 9 - 17
pages3/polyv/detail.vue

@@ -50,7 +50,6 @@
               mode="widthFix"
             ></image>
             <view class="toggle_name">切换课程</view>
-            <!-- courseTotal -->
             <view class="numbers">共{{ goodsTeacher.length }}门</view>
           </view>
         </view>
@@ -108,7 +107,7 @@
         <view v-if="current == 3">
           <answer-box :userId="userInfo ? userInfo.userId : 0"></answer-box>
         </view>
-        <!--目录 -->
+        <!--重修目录 -->
         <view v-if="current == 4">
           <course-tree
             v-if="sectionItem.id || sectionItem.sectionId"
@@ -379,11 +378,9 @@ export default {
   computed: {
     ...mapGetters(["userInfo", "playSectionId", "config"]),
     playSecIsLearn() {
-      return false;
       return this.sectionItem.learning != 1;
     },
     orderNum() {
-      return 0;
       return this.goodsData.goodsLearningOrder;
     },
     list() {
@@ -571,7 +568,6 @@ export default {
           orderGoodsId: this.orderGoodsId,
         },
       }).then((res) => {
-        console.log("🚀 ~ file: detail.vue:859 ~ getUserWatchLast ~ res:", res);
         if (res.data.code == 200 && res.data.data) {
           this.courseId = res.data.data.courseId;
         }
@@ -980,10 +976,10 @@ export default {
           if (!data.sectionId) {
             data = this.menuAllList[0];
           }
-          // if (data.learning == 1 && this.orderNum == 2) {
-          //   let next = this.menuAllList.find((e) => e.studyStatus != 1);
-          //   next && (data = next);
-          // }
+          if (data.learning == 1 && this.orderNum == 2) {
+            let next = this.menuAllList.find((e) => e.studyStatus != 1);
+            next && (data = next);
+          }
           this.initPlayVideo(data);
         });
     },
@@ -1131,7 +1127,6 @@ export default {
     },
     loadedmetadata(event) {
       this.refPlv = this.$refs.player;
-      // this.openCamera()
     },
     getPhotoLastRecord() {
       let { chapterId, sectionId, moduleId } = this.sectionItem;
@@ -1241,7 +1236,6 @@ export default {
     },
     // 随机前后五分钟
     commonConfig(totalVideoTime, fixS) {
-      console.log("🚀 ~ file: detail.vue:2407 ~ commonConfig ~ fixS:", fixS);
       let photoList = [0];
       // 固定间隔时间取
       if (fixS) {
@@ -1316,8 +1310,8 @@ export default {
           moduleId: moduleId || 0,
         };
         this.$api.recordLast(data).then((res) => {
-          if(res.data.data.videoCurrentTime>3){
-            res.data.data.videoCurrentTime-=3
+          if (res.data.data.videoCurrentTime > 3) {
+            res.data.data.videoCurrentTime -= 3;
           }
           resolve(res.data.data);
         });
@@ -1459,7 +1453,6 @@ export default {
         this.configPhoto(time);
         this.isReach = false;
         const index = this.photoList.findIndex((e) => e < time && e > time - 8);
-        console.log(index, time, this.photoHistoryList, 789);
         if (index != -1 && !this.photoHistoryList[index]) {
           this.photoIndex = index;
           // 拍照
@@ -1509,7 +1502,6 @@ export default {
       this.refPlv.exitFullScreen();
     },
     pause() {
-      uni.$emit("playEnd");
       this.erJianErZaoPauseTip();
       clearInterval(this.studyTimer);
     },
@@ -1525,7 +1517,7 @@ export default {
       this.nextSection();
     },
     playerError() {
-      console.log(46546);
+      console.log("播放错误");
     },
     //播放下一节
     nextSection() {
@@ -1664,7 +1656,7 @@ export default {
       this.erJianErZao && (await this.userConfirmInfoDetail());
       this.option.periodWaitTime && (await this.checkFinishRequiredCourse());
       this.goodsData.buyNote && this.baseHandoutTipList();
-      this.gradeId = this.goodsData.gradeId;
+      !this.gradeId && (this.gradeId = this.goodsData.gradeId);
       if (this.goodsData.goodsPlayConfig) {
         this.goodsPlayConfig = JSON.parse(this.goodsData.goodsPlayConfig);
         if (this.goodsPlayConfig.autoPlay > 0) {