chenxiong 3 лет назад
Родитель
Сommit
a204872240
10 измененных файлов с 2856 добавлено и 2324 удалено
  1. 2 0
      common/api.js
  2. 8 6
      common/request.js
  3. 2 2
      pages/index/index.vue
  4. 22 4
      pages/wd/index.vue
  5. 1 1
      pages2/bank/detail.vue
  6. 4 4
      pages2/order/index.vue
  7. 51 15
      pages2/wd/class.vue
  8. 97 15
      pages2/wd/course.vue
  9. 23 4
      pages2/wd/question_bank.vue
  10. 2646 2273
      pages3/polyv/detail.vue

+ 2 - 0
common/api.js

@@ -20,6 +20,7 @@ import answer from './httpList/answer.js'
 import note from './httpList/note.js'
 import exam from './httpList/exam.js'
 import profileStamp from './httpList/profileStamp.js'
+import lock from './httpList/lock.js'
 
 export default {
 	...login,
@@ -44,4 +45,5 @@ export default {
 	...note,
 	...exam,
 	...profileStamp,
+	...lock
 }

+ 8 - 6
common/request.js

@@ -4,18 +4,20 @@ import store from '@/store/index.js'
 import api from './api.js'
 var num = 1
 //接口api   
-// export const BASE_URL = 'https://api.xyyxt.net'   //release
+export const BASE_URL = 'https://api.xyyxt.net'   //release
 // export const BASE_URL = 'http://120.79.166.78:19009'   //预发布
-export const BASE_URL = 'http://42.192.164.187:19005'    //test
+// export const BASE_URL = 'http://42.192.164.187:19005'    //test
 // export const BASE_URL = 'http://192.168.1.222:5055'    //dev
 
  //图片上传api
-// export const BASE_IMG_URL = 'https://file.xyyxt.net/'     //release
-export const BASE_IMG_URL = 'https://file-dev.xyyxt.net/'  //test
+export const BASE_IMG_URL = 'https://file.xyyxt.net/'     //release
+// export const BASE_IMG_URL = 'https://file-dev.xyyxt.net/'  //test
 
-export const socket_url = 'ws://42.192.164.187:19005/webSocket/'  //test
+// export const socket_url = 'ws://42.192.164.187:19005/webSocket/'  //test
+// export const socket_url = 'ws://120.79.166.78:19009/webSocket/'  //预发布
+// export const socket_url = 'wss://api.xyyxt.net/webSocket/'  //release
 
-export const version = '5.1' 
+export const version = '5.1.1' 
 export const tenantId = '867735392558919680' 
 export const myRequest = (options) => {
 	if (store.state.allowLoading && !options.noLoading) {

+ 2 - 2
pages/index/index.vue

@@ -133,7 +133,7 @@
 
 <script>
 import { mapGetters, mapActions } from 'vuex';
-import { websocket } from '@/common/socket.js';
+// import { websocket } from '@/common/socket.js';
 import { socket_url, version} from '@/common/request.js';
 export default {
 	components: {},
@@ -192,7 +192,7 @@ export default {
 			try  {
 				await this.getUserInfo()
 				// websocket.sokcet(socket_url+this.userInfo.userId+'-'+this.$method.getRandomString(6))
-				websocket.sokcet(socket_url+this.userInfo.userAccount)
+				// websocket.sokcet(socket_url+this.userInfo.userAccount)
 			}catch(err) {
 				
 			}

+ 22 - 4
pages/wd/index.vue

@@ -33,10 +33,10 @@
 						<image src="/static/icon/my_icon3.png" class="my_icon"></image>
 						<view>我的网课</view>
 					</navigator>
-					<navigator  hover-class="none" url="/pages2/wd/question_bank" class="small_menu">
+					<view @click="goBank()" class="small_menu">
 						<image src="/static/icon/my_icon4.png" class="my_icon"></image>
 						<view>我的题库通</view>
-					</navigator>
+					</view>
 				</view>
 				<navigator  hover-class="none" url="/pages2/learn/my_learn" class="menu_box" >
 					<view class="box_left">
@@ -96,7 +96,7 @@
 </template>
 
 <script>
-import { websocket } from '@/common/socket.js';
+// import { websocket } from '@/common/socket.js';
 import { mapGetters } from 'vuex';
 export default {
 	components: {},
@@ -122,6 +122,24 @@ export default {
 		// this.$store.dispatch('changeTabsNum')
 	},
 	methods: {
+		goBank() {
+			this.$api.lockLockStatus({
+			  action:'bank'
+			}).then(res => {
+			  if(res.data.code == 200) { //有其他端在操作,不能学习
+				  uni.showToast({
+					  icon:'none',
+					  title:res.data.msg,
+					  duration:3000,
+				  })
+			  } else if(res.data.code == 500) { //可以学习
+				  
+				uni.navigateTo({
+					url:'/pages2/wd/question_bank'
+				})
+			  }
+			})
+		},
 		getNums() {
 			this.$api.getinfoAttached().then(res => {
 				if (res.data.code === 200) {
@@ -132,7 +150,7 @@ export default {
 			});
 		},
 		logout() {
-			websocket.stop()
+			// websocket.stop()
 			this.$method.exit();
 			this.isLogin = this.$method.isLogin();
 			

+ 1 - 1
pages2/bank/detail.vue

@@ -93,7 +93,7 @@
 </template>
 
 <script>
-import { websocket } from '@/common/socket.js';
+// import { websocket } from '@/common/socket.js';
 import { mapGetters } from 'vuex';
 export default {
 	data() {

+ 4 - 4
pages2/order/index.vue

@@ -98,10 +98,10 @@ export default {
 					name: '已取消',
 					count: 0
 				},
-				{
-					name: '已退款',
-					count: 0
-				}
+				// {
+				// 	name: '已退款',
+				// 	count: 0
+				// }
 			],
 			current: 0,
 			order: [],

+ 51 - 15
pages2/wd/class.vue

@@ -470,23 +470,59 @@ export default {
 				return;
 			}
 			
-			if(item.courseNum == 1 ) {
-				
-				this.$api.courseCourseList({
-					pageNum:1,
-					pageSize:1,
-					goodsId:item.goodsId,
-					gradeId:item.gradeId
+			if(item.educationName == '继续教育') {
+				this.$api.lockLockStatus({
+								  action:'jxjy'
 				}).then(res => {
-					if(res.data.code == 200) {
-						uni.navigateTo({
-							url:`/pages3/polyv/detail?id=${res.data.rows[0].courseId}&goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}`
-						})
-					}
-				});
-				return;
+				  if(res.data.code == 200) { //有其他端在操作,不能学习
+					  uni.showToast({
+						  icon:'none',
+						  title:res.data.msg,
+						  mask:true,
+						  duration:3000
+					  })
+				  } else if(res.data.code == 500) { //可以学习
+					  
+					  if(item.courseNum == 1 ) {
+					  	
+					  	this.$api.courseCourseList({
+					  		pageNum:1,
+					  		pageSize:1,
+					  		goodsId:item.goodsId,
+					  		gradeId:item.gradeId
+					  	}).then(res => {
+					  		if(res.data.code == 200) {
+					  			uni.navigateTo({
+					  				url:`/pages3/polyv/detail?id=${res.data.rows[0].courseId}&goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}`
+					  			})
+					  		}
+					  	});
+					  	return;
+					  }
+					  this.$navTo.togo(`/pages2/wd/course?id=${v}&gid=${i}&orderGoodsId=${item.orderGoodsId}`);
+				  }
+				})
+			} else {
+				if(item.courseNum == 1 ) {
+					
+					this.$api.courseCourseList({
+						pageNum:1,
+						pageSize:1,
+						goodsId:item.goodsId,
+						gradeId:item.gradeId
+					}).then(res => {
+						if(res.data.code == 200) {
+							uni.navigateTo({
+								url:`/pages3/polyv/detail?id=${res.data.rows[0].courseId}&goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}`
+							})
+						}
+					});
+					return;
+				}
+				this.$navTo.togo(`/pages2/wd/course?id=${v}&gid=${i}&orderGoodsId=${item.orderGoodsId}`);
 			}
-			this.$navTo.togo(`/pages2/wd/course?id=${v}&gid=${i}&orderGoodsId=${item.orderGoodsId}`);
+			
+			
 		},
 		/**
 		 * @param {Object} goodsId 商品id

+ 97 - 15
pages2/wd/course.vue

@@ -95,11 +95,40 @@ export default {
 					});
 					return;
 				}
-				 this.$navTo.togo('/pages3/polyv/detail', {
-					id: item.courseId,
-					goodsId: this.goodsId,
-					orderGoodsId:this.orderGoodsId
-				}); 
+				
+				this.$api.courseDetail(item.courseId).then((res) => {
+				  if (res.data.code == 200) {
+				    if (res.data.data.educationName == "继续教育") {
+					  this.$api.lockLockStatus({
+						  action:'jxjy'
+					  }).then(res => {
+						  if(res.data.code == 200) { //有其他端在操作,不能学习
+							  uni.showToast({
+								  icon:'none',
+								  title:res.data.msg,
+								  mask:true,
+								  duration:3000
+							  })
+						  } else if(res.data.code == 500) { //可以学习
+							  this.$navTo.togo('/pages3/polyv/detail', {
+							  	id: item.courseId,
+							  	goodsId: this.goodsId,
+							  	orderGoodsId:this.orderGoodsId
+							  }); 
+							  
+						  }
+					  })
+							  
+				      // websocket.sendMsg("doCourse");
+				    } else {
+						this.$navTo.togo('/pages3/polyv/detail', {
+							id: item.courseId,
+							goodsId: this.goodsId,
+							orderGoodsId:this.orderGoodsId
+						}); 
+					}
+				  }
+				});
 			} else {
 				if(this.businessData.goodsLearningOrder == 2) { //学习顺序是从头到尾学习,没学完上一课不能学习下一课
 					let prevItem = this.courseList[index-1];  //上一课
@@ -112,11 +141,40 @@ export default {
 							});
 							return;
 						}
-						 this.$navTo.togo('/pages3/polyv/detail', {
-							id: item.courseId,
-							goodsId: this.goodsId,
-							orderGoodsId:this.orderGoodsId
-						}); 
+						
+						this.$api.courseDetail(item.courseId).then((res) => {
+						  if (res.data.code == 200) {
+						    if (res.data.data.educationName == "继续教育") {
+							  this.$api.lockLockStatus({
+								  action:'jxjy'
+							  }).then(res => {
+								  if(res.data.code == 200) { //有其他端在操作,不能学习
+									  uni.showToast({
+										  icon:'none',
+										  title:res.data.msg,
+										  duration:2000
+									  })
+								  } else if(res.data.code == 500) { //可以学习
+									  
+									   this.$navTo.togo('/pages3/polyv/detail', {
+									  	id: item.courseId,
+									  	goodsId: this.goodsId,
+									  	orderGoodsId:this.orderGoodsId
+									  }); 
+									  
+								  }
+							  })
+									  
+						      // websocket.sendMsg("doCourse");
+						    } else {
+								this.$navTo.togo('/pages3/polyv/detail', {
+									id: item.courseId,
+									goodsId: this.goodsId,
+									orderGoodsId:this.orderGoodsId
+								}); 
+							}
+						  }
+						});
 					} else {
 						uni.showToast({
 							icon:'none',
@@ -132,11 +190,35 @@ export default {
 						});
 						return;
 					}
-					 this.$navTo.togo('/pages3/polyv/detail', {
-						id: item.courseId,
-						goodsId: this.goodsId,
-						orderGoodsId:this.orderGoodsId
-					}); 
+					
+					this.$api.courseDetail(item.courseId).then((res) => {
+					  if (res.data.code == 200) {
+					    if (res.data.data.educationName == "继续教育") {
+						  this.$api.lockLockStatus({
+							  action:'jxjy'
+						  }).then(res => {
+							  if(res.data.code == 200) { //有其他端在操作,不能学习
+								  uni.showToast({
+									  icon:'none',
+									  title:res.data.msg,
+									  duration:2000
+								  })
+							  } else if(res.data.code == 500) { //可以学习
+								  
+								   
+								this.$navTo.togo('/pages3/polyv/detail', {
+								   	id: item.courseId,
+								   	goodsId: this.goodsId,
+								   	orderGoodsId:this.orderGoodsId
+							   }); 
+								  
+							  }
+						  })
+								  
+					      // websocket.sendMsg("doCourse");
+					    }
+					  }
+					});
 				}
 			}
 			

+ 23 - 4
pages2/wd/question_bank.vue

@@ -41,22 +41,41 @@
 </template>
 
 <script>
-import { websocket } from '@/common/socket.js';
+// import { websocket } from '@/common/socket.js';
 	export default {
 		data() {
 			return {
 				list:[
 					1,2,3
-				]
+				],
+				timer:null,
 				
 			}
 		},
 		onLoad(option) {
-			websocket.sendMsg('doQuestion')
+			this.$api.lockLockAction({
+				action:'bank'
+			}).then(res => {
+				
+			})
+			this.timer = setInterval(() => {
+				this.$api.lockLockAction({
+					action:'bank'
+				}).then(res => {
+					
+				})
+			},10000)
+			// websocket.sendMsg('doQuestion')
 			// this.getDict()
 		},
 		onUnload() {
-			websocket.sendMsg('delAction')
+			clearInterval(this.timer)
+			this.$api.lockDelLock({
+				action:'bank'
+			}).then(res => {
+				
+			})
+			// websocket.sendMsg('delAction')
 		},
 		onShow(){
 			

+ 2646 - 2273
pages3/polyv/detail.vue

@@ -1,2457 +1,2830 @@
 <template>
-	<view  class="polyv_detail">
-		<nav-bar :title="detail.courseName || '课程详情'" v-show="navShow"></nav-bar>
-		<view id="top">
-			<view class="video_box" v-if="!startStatus">
-				<image :src="$method.splitImgHost(detail.coverUrl)" mode="widthFix" style="width: 100%;height: 460rpx;"></image>
-				<image v-if="false" class="video_play" src="/static/play.png" @click="startVideo"></image>
-			</view>
-			<view v-else>
-				<view   class="video_box" style="width: 100%;height: 460rpx;" v-if="playVID">
-					<polyv-player
-						id="playerVideo"
-						playerId="playerVideo"
-						height="460rpx"
-						:vid="vid"
-						:showSettingBtn="true"
-						:enablePlayGesture="true"
-						:custom-cache="false"
-						:object-fit="'contain'"
-						@statechange="onStateChange"
-						@fullscreenchange="fullscreenchange"
-						@error="playError"
-						:autoplay="autoplay"
-						:isAllowSeek="isAllowSeek"
-						:playbackRate="playbackRate"
-						:startTime="startTime"
-						:enableAutoRotation="enableAutoRotation"
-					></polyv-player>
-					<cover-view class="video-toast__close" v-if="videoToastShow" @click="closeToast()">X</cover-view>
-					<cover-view class="video-toast" v-if="videoToastShow">
-						<cover-view class="video-toast__text">您上次看到 {{seekTime}},正在自动续播</cover-view>
-						<cover-view class="video-toast__btn" @click="restart()">从头播放</cover-view>
-					</cover-view>
-				</view>
-				<view class="video_box" style="width: 100%;height: 460rpx;" v-if="playChannelId>0">
-				  <player
-				    class="plv-mp-demo-player"
-				    :videoOption="videoOption"
-					@onLiveStatusChange="playerLiveStatusChange"
-				  />
-				</view> 
-			</view>
-			
-			<view>
-				<u-row>
-					<u-col span="10">
-						<view class="video_t1">{{ detail.courseName }}</view>
-					</u-col>
-					<u-col span="2" >
-						<div class="notice_wrap" v-if="goodsData.buyNote">
-							<view class="video_t1_t" @click="studyNotice">
-								学员须知
-							</view>
-						</div>
-					</u-col>
-				</u-row>
-			</view>
-			<u-line color="#D6D6DB" />
-			<view>
-				<view><u-tabs gutter="0" :item-width="itemWidth()" :list="list" font-size="32" bar-width="24" :current="current" @change="change" active-color="#007AFF"></u-tabs></view>
-			</view>
-			<u-line color="#D6D6DB" />
-		</view>
-		<view class="box">
-			<scroll-view class="box_in" scroll-y="true">
-				<!--目录 -->
-				<view v-show="current == 0">
-					<view class="menuBox" v-for="(item, index) in menuList" :key="index">
-						<!--模块 -->
-						<view v-if="item.type == 1"><courseModule :sectionMaxNum="goodsData.sectionMaxNum" :needOpen="menuIndex[0] === index ? true : false" :courseId="courseId" :preItem="menuList[index-1]"  :learningOrder="businessData.goodsLearningOrder" :goodsId="goodsId" :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="item.menuId"></courseModule></view>
-						<!--章 -->
-						<view v-if="item.type == 2"><courseChapter :sectionMaxNum="goodsData.sectionMaxNum" :needOpen="menuIndex[0] === index ? true : false" :courseId="courseId" :preItem="menuList[index-1]"  @playEnd="sectionPlayEnd($event,index)" :learningOrder="businessData.goodsLearningOrder" :goodsId="goodsId" :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="'0-' + item.menuId"></courseChapter></view>
-						<!--节 -->
-						<view v-if="item.type == 3"><courseSection :sectionMaxNum="goodsData.sectionMaxNum" @playEnd="sectionPlayEnd($event,index)" :courseId="courseId" :preItem="menuList[index-1]" :learningOrder="businessData.goodsLearningOrder"  :goodsId="goodsId" :gradeId="gradeId" :isBuy="true" :menuItem="item" :levelId="'0-0-' + item.menuId"></courseSection></view>
-					</view>
-				</view>
-				<!--讲义 -->
-				<view v-show="current == 1">
-					<view class="lecture-box" v-if="courseHandoutsData">
-						<view class="title">
-							{{courseHandoutsData.handoutsName}}
-							<!-- 这是后台配置的讲义标题过长省略这是后台配置的讲义标题过长省略 -->
-						</view>
-						<view class="btn" @click="openDocument">
-							<u-icon name="download" color="#007AFF" size="40"></u-icon>
-						</view>
-					</view>
-					
-					<view style="text-align: center;" v-else>暂无讲义</view>
-					<!-- <view class="lecture-content">
+  <view class="polyv_detail">
+    <nav-bar
+      :title="detail.courseName || '课程详情'"
+      v-show="navShow"
+    ></nav-bar>
+    <view id="top">
+      <view class="video_box" v-if="!startStatus">
+        <image
+          :src="$method.splitImgHost(detail.coverUrl)"
+          mode="widthFix"
+          style="width: 100%; height: 460rpx"
+        ></image>
+        <image
+          v-if="false"
+          class="video_play"
+          src="/static/play.png"
+          @click="startVideo"
+        ></image>
+      </view>
+      <view v-else>
+        <view
+          class="video_box"
+          style="width: 100%; height: 460rpx"
+          v-if="playVID"
+        >
+          <polyv-player
+            id="playerVideo"
+            playerId="playerVideo"
+            height="460rpx"
+            :vid="vid"
+            :showSettingBtn="true"
+            :enablePlayGesture="true"
+            :custom-cache="false"
+            :object-fit="'contain'"
+            @statechange="onStateChange"
+            @fullscreenchange="fullscreenchange"
+            @error="playError"
+            :autoplay="autoplay"
+            :isAllowSeek="isAllowSeek"
+            :playbackRate="playbackRate"
+            :startTime="startTime"
+            :enableAutoRotation="enableAutoRotation"
+          ></polyv-player>
+          <cover-view
+            class="video-toast__close"
+            v-if="videoToastShow"
+            @click="closeToast()"
+            >X</cover-view
+          >
+          <cover-view class="video-toast" v-if="videoToastShow">
+            <cover-view class="video-toast__text"
+              >您上次看到 {{ seekTime }},正在自动续播</cover-view
+            >
+            <cover-view class="video-toast__btn" @click="restart()"
+              >从头播放</cover-view
+            >
+          </cover-view>
+        </view>
+        <view
+          class="video_box"
+          style="width: 100%; height: 460rpx"
+          v-if="playChannelId > 0"
+        >
+          <player
+            class="plv-mp-demo-player"
+            :videoOption="videoOption"
+            @onLiveStatusChange="playerLiveStatusChange"
+          />
+        </view>
+      </view>
+
+      <view>
+        <u-row>
+          <u-col span="10">
+            <view class="video_t1">{{ detail.courseName }}</view>
+          </u-col>
+          <u-col span="2">
+            <div class="notice_wrap" v-if="goodsData.buyNote">
+              <view class="video_t1_t" @click="studyNotice"> 学员须知 </view>
+            </div>
+          </u-col>
+        </u-row>
+      </view>
+      <u-line color="#D6D6DB" />
+      <view>
+        <view
+          ><u-tabs
+            gutter="0"
+            :item-width="itemWidth()"
+            :list="list"
+            font-size="32"
+            bar-width="24"
+            :current="current"
+            @change="change"
+            active-color="#007AFF"
+          ></u-tabs
+        ></view>
+      </view>
+      <u-line color="#D6D6DB" />
+    </view>
+    <view class="box">
+      <scroll-view class="box_in" scroll-y="true">
+        <!--目录 -->
+        <view v-show="current == 0">
+          <view class="menuBox" v-for="(item, index) in menuList" :key="index">
+            <!--模块 -->
+            <view v-if="item.type == 1"
+              ><courseModule
+                :sectionMaxNum="goodsData.sectionMaxNum"
+                :needOpen="menuIndex[0] === index ? true : false"
+                :courseId="courseId"
+                :preItem="menuList[index - 1]"
+                :learningOrder="businessData.goodsLearningOrder"
+                :goodsId="goodsId"
+                :gradeId="gradeId"
+                :isBuy="true"
+                :menuItem="item"
+                :levelId="item.menuId"
+              ></courseModule
+            ></view>
+            <!--章 -->
+            <view v-if="item.type == 2"
+              ><courseChapter
+                :sectionMaxNum="goodsData.sectionMaxNum"
+                :needOpen="menuIndex[0] === index ? true : false"
+                :courseId="courseId"
+                :preItem="menuList[index - 1]"
+                @playEnd="sectionPlayEnd($event, index)"
+                :learningOrder="businessData.goodsLearningOrder"
+                :goodsId="goodsId"
+                :gradeId="gradeId"
+                :isBuy="true"
+                :menuItem="item"
+                :levelId="'0-' + item.menuId"
+              ></courseChapter
+            ></view>
+            <!--节 -->
+            <view v-if="item.type == 3"
+              ><courseSection
+                :sectionMaxNum="goodsData.sectionMaxNum"
+                @playEnd="sectionPlayEnd($event, index)"
+                :courseId="courseId"
+                :preItem="menuList[index - 1]"
+                :learningOrder="businessData.goodsLearningOrder"
+                :goodsId="goodsId"
+                :gradeId="gradeId"
+                :isBuy="true"
+                :menuItem="item"
+                :levelId="'0-0-' + item.menuId"
+              ></courseSection
+            ></view>
+          </view>
+        </view>
+        <!--讲义 -->
+        <view v-show="current == 1">
+          <view class="lecture-box" v-if="courseHandoutsData">
+            <view class="title">
+              {{ courseHandoutsData.handoutsName }}
+              <!-- 这是后台配置的讲义标题过长省略这是后台配置的讲义标题过长省略 -->
+            </view>
+            <view class="btn" @click="openDocument">
+              <u-icon name="download" color="#007AFF" size="40"></u-icon>
+            </view>
+          </view>
+
+          <view style="text-align: center" v-else>暂无讲义</view>
+          <!-- <view class="lecture-content">
 						<rich-text :nodes="'讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容讲义内容'"></rich-text>
 					</view> -->
-					
-				<!-- 	<view class="inputBottom">
+
+          <!-- 	<view class="inputBottom">
 						<view style="width: 10%;"><image src="/static/icon/note3.png" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image></view>
 						<view style="width: 73%;height: 100%;padding: 10rpx 0;">
 							<u-input class="input" height="60" fixed="true" placeholder="您可以在这里输入笔记内容" type="textarea" :custom-style="inputStyle" v-model="noteValue" />
 						</view>
 						<view style="color: #007AFF;font-size: 30rpx;font-weight: bold;width: 15%;text-align: center;" @click="postNote">提交</view>
 					</view> -->
-					
-				</view>
-				<!--笔记 -->
-				<view v-show="current == 2">
-					<view v-if="noteList.length == 0" style="text-align: center;">暂无笔记</view>
-					<view class="inputBottom" v-if="!(isPlayRebuild > 0)">
-						<view style="width: 10%;"><image src="/static/icon/note3.png" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image></view>
-						<view style="width: 73%;height: 100%;padding: 10rpx 0;">
-							<u-input class="input" height="60" fixed="true" placeholder="您可以在这里输入笔记内容" type="input" :custom-style="inputStyle" v-model="noteValue" />
-						</view>
-						<view style="color: #007AFF;font-size: 30rpx;font-weight: bold;width: 15%;text-align: center;" @click="postNote">提交</view>
-					</view>
-					<view v-for="(item, index) in noteList" :key="index">
-						<view class="dateBox">{{ $method.timestampToTime(item.dateNote) }}</view>
-						<view class="noteBox">
-							<view v-for="(item1, index1) in item.userNotes" :key="index1" style="margin-top: 30rpx;" @click="jumpNote(item1)">
-								<view style="display: flex;">
-									<view>
-										<view>
-											<image src="/static/icon/note2.png" v-if="noteId != item1.noteId" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image>
-											<image src="/static/icon/note1.png" v-if="noteId == item1.noteId" style="width: 39rpx;height: 39rpx;margin:0 29rpx;"></image>
-										</view>
-										<view class="title" style="width: 39rpx;height: 39rpx;margin:0 29rpx;">{{ $method.secondToDate(item1.noteSecond) }}</view>
-									</view>
-									<view style="margin-left: 10rpx;">
-										<view class="t2Content leftPadding">{{ item1.sectionName }}</view>
-										<view class="tBox2">{{ item1.noteText }}</view>
-									</view>
-								</view>
-							</view>
-						</view>
-					</view>
-				</view>
-				<!--答疑 -->
-				<view v-show="current == 3">
-					<view class="inputBottom">
-						<view class="flex_auto">
-							<u-input height="60" fixed="true" :placeholder="placeholder" type="input" :custom-style="inputStyle" v-model="ctxValue" />
-						</view>
-						<view class="btn" @click="postContent">提交</view>
-					</view>
-					<view v-for="(item, index) in answerList" :key="index" style="background-color: #FFFFFF;margin-bottom: 20rpx;">
-						<view class="chat_box" @click.stop="clearCtx">
-							<view style="display: flex;flex:1;">
-								<view><image :src="item.assignUserId > 0 && !item.realname  ? '/static/logo_xcx.png' :$method.splitImgHost(item.avatar)" style="width: 64rpx;height: 64rpx;"></image></view>
-								<view style="margin-left: 15rpx;">
-									<view class="chat1">{{ item.assignUserId > 0 && !item.realname ? '祥粤老师' : item.realname }}</view>
-									<view class="chat2">{{ $method.timestampToTime(item.createTime,false) }}</view>
-									<view class="chat3">
-										<text v-if="item.assignUserId > 0">回复</text>
-										<text v-if="item.assignUserId > 0" style="color: #007AFF;">@{{ item.assignRealname }}</text>
-										<view style="word-break: break-all;">{{ item.answerText }}</view>
-									</view>
-								</view>
-							</view>
-							<view class="btnReply" @click.stop="replyContent(item)" v-if="item.userId != userInfo.userId">回复</view>
-							<view v-else class="btnDel" @click.stop="delContent(item)">删除</view>
-						</view>
-						<u-line color="#D6D6DB" />
-					</view>
-					<view v-if="answerList.length == 0" style="text-align: center;">暂无记录</view>
-				</view>
-				<!--目录 -->
-				<view v-show="current == 4" >
-					<view class="menuBox" v-for="(item, index) in reMenuList" :key="index">
-						<!--模块 -->
-						<view v-if="item.type == 1"><courseModule :sectionMaxNum="goodsData.sectionMaxNum" :courseId="courseId" :goodsId="goodsId" :gradeId="gradeId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="item.menuId"></courseModule></view>
-						<!--章 -->
-						<view v-if="item.type == 2">
-							<courseChapter :courseId="courseId" :sectionMaxNum="goodsData.sectionMaxNum" @playEnd="sectionPlayEnd($event,index)" :gradeId="gradeId" :goodsId="goodsId" :isRebuild="true" :isBuy="true" :menuItem="item" :levelId="'0-' + item.menuId"></courseChapter>			
-						</view>
-						<!--节 -->
-						<view v-if="item.type == 3">
-							<courseSection :courseId="courseId" :sectionMaxNum="goodsData.sectionMaxNum" @playEnd="sectionPlayEnd($event,index)" :gradeId="gradeId" :goodsId="goodsId" :isRebuild="true" :isBuy="true" :nextMenuItem="findMenuNextSection(index)"  :menuItem="item" :levelId="'0-0-' + item.menuId"></courseSection>
-						</view>
-					</view>
-				</view>
-			</scroll-view>
-			
-		</view>
-		<!-- 播放前拍照end -->
-		<u-popup v-model="showSet" :mask-close-able="false" mode="center" border-radius="24">
-			<view style="align-items:center;padding: 0 40rpx;display: flex;flex-direction: column;justify-content:center;">
-				<view style="font-weight: bold;color: #333333;font-size: 30rpx;margin-top: 30rpx;">温馨提示</view>
-				<view style="width: 457rpx;color: #666666;font-size: 30rpx;margin-top: 30rpx;">学习过程中需要拍照验证学员身份,
-拍照功能需要使用您的相机。
-是否授权使用?</view>
-				<view style="margin: 40rpx 0;">
-					<button open-type="openSetting" @bindopensetting="openSetting" class="btnSet">去授权</button>
-				</view>
-			</view>
-		</u-popup>
-		
-		<u-mask :show="photoPopup" >
-		<!-- 播放前拍照start -->
-		<view v-if="photoPopup"  :mask-close-able="false" style="bottom: 0;position: fixed;width: 100%;z-index: 999;">
-			<view class="photoBox">
-				<view class="photoTop">
-					<view class="sqzz" v-if="false"><u-icon name="close" color="#333333" size="30" @click="closePhoto"></u-icon></view>
-					<view class="centersq">请正视手机屏幕</view>
-					<view class="sqzz"></view>
-				</view>
-				<view class="photoCenter">
-					<view style="width: 100%; height: 979rpx;position: fixed;" v-if="photoPopup && isTaking">
-						<camera device-position="front" flash="off" @error="error" style="width: 100%; height: 100%;" ></camera>
-					</view>
-					<view class="custom" v-if="!isTaking" ><image :src="avatarUrl" mode=""></image></view>
-				</view>
-				<view class="btns">
-					<view class="btnResult" v-if="isTaking" @click="takePhoto">拍照</view>
-					<view class="btnResult" v-if="!isTaking" @click="reTake">重拍</view>
-					<view class="btnResult" v-if="!isTaking" @click="submit">确认</view>
-				</view>
-				
-			</view>
-		</view>
+        </view>
+        <!--笔记 -->
+        <view v-show="current == 2">
+          <view v-if="noteList.length == 0" style="text-align: center"
+            >暂无笔记</view
+          >
+          <view class="inputBottom" v-if="!(isPlayRebuild > 0)">
+            <view style="width: 10%"
+              ><image
+                src="/static/icon/note3.png"
+                style="width: 39rpx; height: 39rpx; margin: 0 29rpx"
+              ></image
+            ></view>
+            <view style="width: 73%; height: 100%; padding: 10rpx 0">
+              <u-input
+                class="input"
+                height="60"
+                fixed="true"
+                placeholder="您可以在这里输入笔记内容"
+                type="input"
+                :custom-style="inputStyle"
+                v-model="noteValue"
+              />
+            </view>
+            <view
+              style="
+                color: #007aff;
+                font-size: 30rpx;
+                font-weight: bold;
+                width: 15%;
+                text-align: center;
+              "
+              @click="postNote"
+              >提交</view
+            >
+          </view>
+          <view v-for="(item, index) in noteList" :key="index">
+            <view class="dateBox">{{
+              $method.timestampToTime(item.dateNote)
+            }}</view>
+            <view class="noteBox">
+              <view
+                v-for="(item1, index1) in item.userNotes"
+                :key="index1"
+                style="margin-top: 30rpx"
+                @click="jumpNote(item1)"
+              >
+                <view style="display: flex">
+                  <view>
+                    <view>
+                      <image
+                        src="/static/icon/note2.png"
+                        v-if="noteId != item1.noteId"
+                        style="width: 39rpx; height: 39rpx; margin: 0 29rpx"
+                      ></image>
+                      <image
+                        src="/static/icon/note1.png"
+                        v-if="noteId == item1.noteId"
+                        style="width: 39rpx; height: 39rpx; margin: 0 29rpx"
+                      ></image>
+                    </view>
+                    <view
+                      class="title"
+                      style="width: 39rpx; height: 39rpx; margin: 0 29rpx"
+                      >{{ $method.secondToDate(item1.noteSecond) }}</view
+                    >
+                  </view>
+                  <view style="margin-left: 10rpx">
+                    <view class="t2Content leftPadding">{{
+                      item1.sectionName
+                    }}</view>
+                    <view class="tBox2">{{ item1.noteText }}</view>
+                  </view>
+                </view>
+              </view>
+            </view>
+          </view>
+        </view>
+        <!--答疑 -->
+        <view v-show="current == 3">
+          <view class="inputBottom">
+            <view class="flex_auto">
+              <u-input
+                height="60"
+                fixed="true"
+                :placeholder="placeholder"
+                type="input"
+                :custom-style="inputStyle"
+                v-model="ctxValue"
+              />
+            </view>
+            <view class="btn" @click="postContent">提交</view>
+          </view>
+          <view
+            v-for="(item, index) in answerList"
+            :key="index"
+            style="background-color: #ffffff; margin-bottom: 20rpx"
+          >
+            <view class="chat_box" @click.stop="clearCtx">
+              <view style="display: flex; flex: 1">
+                <view
+                  ><image
+                    :src="
+                      item.assignUserId > 0 && !item.realname
+                        ? '/static/logo_xcx.png'
+                        : $method.splitImgHost(item.avatar)
+                    "
+                    style="width: 64rpx; height: 64rpx"
+                  ></image
+                ></view>
+                <view style="margin-left: 15rpx">
+                  <view class="chat1">{{
+                    item.assignUserId > 0 && !item.realname
+                      ? "祥粤老师"
+                      : item.realname
+                  }}</view>
+                  <view class="chat2">{{
+                    $method.timestampToTime(item.createTime, false)
+                  }}</view>
+                  <view class="chat3">
+                    <text v-if="item.assignUserId > 0">回复</text>
+                    <text v-if="item.assignUserId > 0" style="color: #007aff"
+                      >@{{ item.assignRealname }}</text
+                    >
+                    <view style="word-break: break-all">{{
+                      item.answerText
+                    }}</view>
+                  </view>
+                </view>
+              </view>
+              <view
+                class="btnReply"
+                @click.stop="replyContent(item)"
+                v-if="item.userId != userInfo.userId"
+                >回复</view
+              >
+              <view v-else class="btnDel" @click.stop="delContent(item)"
+                >删除</view
+              >
+            </view>
+            <u-line color="#D6D6DB" />
+          </view>
+          <view v-if="answerList.length == 0" style="text-align: center"
+            >暂无记录</view
+          >
+        </view>
+        <!--目录 -->
+        <view v-show="current == 4">
+          <view
+            class="menuBox"
+            v-for="(item, index) in reMenuList"
+            :key="index"
+          >
+            <!--模块 -->
+            <view v-if="item.type == 1"
+              ><courseModule
+                :sectionMaxNum="goodsData.sectionMaxNum"
+                :courseId="courseId"
+                :goodsId="goodsId"
+                :gradeId="gradeId"
+                :isRebuild="true"
+                :isBuy="true"
+                :menuItem="item"
+                :levelId="item.menuId"
+              ></courseModule
+            ></view>
+            <!--章 -->
+            <view v-if="item.type == 2">
+              <courseChapter
+                :courseId="courseId"
+                :sectionMaxNum="goodsData.sectionMaxNum"
+                @playEnd="sectionPlayEnd($event, index)"
+                :gradeId="gradeId"
+                :goodsId="goodsId"
+                :isRebuild="true"
+                :isBuy="true"
+                :menuItem="item"
+                :levelId="'0-' + item.menuId"
+              ></courseChapter>
+            </view>
+            <!--节 -->
+            <view v-if="item.type == 3">
+              <courseSection
+                :courseId="courseId"
+                :sectionMaxNum="goodsData.sectionMaxNum"
+                @playEnd="sectionPlayEnd($event, index)"
+                :gradeId="gradeId"
+                :goodsId="goodsId"
+                :isRebuild="true"
+                :isBuy="true"
+                :nextMenuItem="findMenuNextSection(index)"
+                :menuItem="item"
+                :levelId="'0-0-' + item.menuId"
+              ></courseSection>
+            </view>
+          </view>
+        </view>
+      </scroll-view>
+    </view>
+    <!-- 播放前拍照end -->
+    <u-popup
+      v-model="showSet"
+      :mask-close-able="false"
+      mode="center"
+      border-radius="24"
+    >
+      <view
+        style="
+          align-items: center;
+          padding: 0 40rpx;
+          display: flex;
+          flex-direction: column;
+          justify-content: center;
+        "
+      >
+        <view
+          style="
+            font-weight: bold;
+            color: #333333;
+            font-size: 30rpx;
+            margin-top: 30rpx;
+          "
+          >温馨提示</view
+        >
+        <view
+          style="
+            width: 457rpx;
+            color: #666666;
+            font-size: 30rpx;
+            margin-top: 30rpx;
+          "
+          >学习过程中需要拍照验证学员身份, 拍照功能需要使用您的相机。
+          是否授权使用?</view
+        >
+        <view style="margin: 40rpx 0">
+          <button
+            open-type="openSetting"
+            @bindopensetting="openSetting"
+            class="btnSet"
+          >
+            去授权
+          </button>
+        </view>
+      </view>
+    </u-popup>
 
-		</u-mask>
-		
-		<u-popup v-model="noticeShow" class="notice_modal"  mode="center"  border-radius="14"  width="700rpx" height="900rpx">
-			<div class="content">
-				
-				<scroll-view scroll-y="true" style="height: 100%;">
-					<view class="title">学员须知</view>
-					<text class="text">
-						{{goodsData.buyNote}}
-					</text>
-				</scroll-view>
-			</div>
-			
-		</u-popup>
-	</view>
-	
+    <u-mask :show="photoPopup">
+      <!-- 播放前拍照start -->
+      <view
+        v-if="photoPopup"
+        :mask-close-able="false"
+        style="bottom: 0; position: fixed; width: 100%; z-index: 999"
+      >
+        <view class="photoBox">
+          <view class="photoTop">
+            <view class="sqzz" v-if="false"
+              ><u-icon
+                name="close"
+                color="#333333"
+                size="30"
+                @click="closePhoto"
+              ></u-icon
+            ></view>
+            <view class="centersq">请正视手机屏幕</view>
+            <view class="sqzz"></view>
+          </view>
+          <view class="photoCenter">
+            <view
+              style="width: 100%; height: 979rpx; position: fixed"
+              v-if="photoPopup && isTaking"
+            >
+              <camera
+                device-position="front"
+                flash="off"
+                @error="error"
+                style="width: 100%; height: 100%"
+              ></camera>
+            </view>
+            <view class="custom" v-if="!isTaking"
+              ><image :src="avatarUrl" mode=""></image
+            ></view>
+          </view>
+          <view class="btns">
+            <view class="btnResult" v-if="isTaking" @click="takePhoto"
+              >拍照</view
+            >
+            <view class="btnResult" v-if="!isTaking" @click="reTake">重拍</view>
+            <view class="btnResult" v-if="!isTaking" @click="submit">确认</view>
+          </view>
+        </view>
+      </view>
+    </u-mask>
+
+    <u-popup
+      v-model="noticeShow"
+      class="notice_modal"
+      mode="center"
+      border-radius="14"
+      width="700rpx"
+      height="900rpx"
+    >
+      <div class="content">
+        <scroll-view scroll-y="true" style="height: 100%">
+          <view class="title">学员须知</view>
+          <text class="text">
+            {{ goodsData.buyNote }}
+          </text>
+        </scroll-view>
+      </div>
+    </u-popup>
+  </view>
 </template>
 
 <script>
-import plv from '../static/polyv-sdk/index';
-import courseModule from '@/components/course/courseModule.vue';
-import courseChapter from '@/components/course/courseChapter.vue';
-import courseSection from '@/components/course/courseSection.vue';
-import { websocket } from '@/common/socket.js';
-import { mapGetters, mapMutations } from 'vuex';
+import plv from "../static/polyv-sdk/index";
+import courseModule from "@/components/course/courseModule.vue";
+import courseChapter from "@/components/course/courseChapter.vue";
+import courseSection from "@/components/course/courseSection.vue";
+// import { websocket } from "@/common/socket.js";
+import { mapGetters, mapMutations } from "vuex";
 export default {
-	components: {
-		courseModule,
-		courseChapter,
-		courseSection
-	},
-	data() {
-		return {
-			orderGoodsId:0,
-			noticeShow:false,
-			navShow:true,
-			enableAutoRotation:true,
-			seekTime:'',
-			toastTimer:null,
-			videoToastShow:false,
-			initLiveOk:false,
-			livePlay:false, //是否正在播放直播,不含暂停
-			liveDuration:0, //直播观看时长
-			videoOption:{
-				mode: 'live',
-				uid: '',
-				cid: '',
-				openId: '',
-				isAutoChange: false,
-				forceVideo: false, 
-			},
-			courseHandoutsData:'',
-			liveDetail:{},
-			showSet:false,
-			startStatus: false,
-			detail: {},
-			courseId: 0,
-			placeholder: '您可以在这里输入笔记内容\n还可以点击左侧图标为笔记加上时间标记',
-			inputStyle: {
-				background: 'rgba(244, 244, 244, 0.98)',
-				borderRadius: '24rpx',
-				padding: '8rpx',
-				marginBottom: '10rpx'
-			},
-			list: [],
-			menuList: [],
-			current: 0,
-			vid: '',
-			goodsId: 0,
-			goodsData: {},
-			photoPopup: false,
-			goodsPlayConfig: null,
-			autoplay: false,
-			isAllowSeek: 'no',
-			playbackRate: [1.0],
-			timer: null,
-			answerTimer:null,
-			goodsPhotographConfig: null,
-			intervalTimeList: [], // 间隔拍照时长
-			intervalTimeIndex: 0, //当前处于哪个时间段拍照
-			playTime: 0, //页面播放时长,不含暂停
-			currentTime: 0,
-			avatarUrl: '',
-			ossAvatarUrl: '',
-			studyDuration: 0, // 当前视频时长
-			gradeId: 0,
-			chapterId: 0,
-			moduleId: 0,
-			reMenuList: [],
-			answerList: [],
-			assignUserId: 0,
-			placeholder: '您可以在这里输入答疑内容',
-			ctxValue: '',
-			noteList: [],
-			noteValue: '',
-			noteId: 0,
-			recordObj: 0,
-			gradeDetail:{},
-			isTaking:true, //是否正在拍照
-			needSeek: false, //第一次播放是否需要跳转
-			needProfileModal:false, //是否需要资料审核弹框
-			liveObj:{},
-			photoNum:0,
-			photoList:[], //拍照的时间点
-			photoConfig:false, //是否配置好拍照次数
-			photoIndex:0, //当前位于拍照的区间下标 从0开始
-			photoHistoryList:[], //已拍照历史的下标点
-			sectionItem:null,
-			businessData:{},
-			showNotes:true,
-			menuIndex:[],
-			uploadLock:false, //上传图片
-			isPlayRebuild:false, //是否正在播放重修视频
-			isRebuild:false, //视频是否从重修目录点击
-		};
-	},
-	computed: { ...mapGetters(['userInfo', 'playSectionId','playChannelId','playVID']) },
-	onLoad(option) {
-		this.courseId = Number(option.id);
-		this.goodsId = Number(option.goodsId);
-		this.orderGoodsId = Number(option.orderGoodsId)
-		this.courseDetail();
-		this.getGoodsDetail();
-		this.getAnswerList();
-		this.answerTimer = setInterval(() => {
-			this.getAnswerList();
-		},5000)
-		let noteSecond = Number(option.noteSecond);
-		if(noteSecond>0){
-			//我的消息跳过来,播放节
-			let item = {
-				sectionId:Number(option.sectionId),
-				recordingUrl:option.recordingUrl,
-				noteSecond:noteSecond,
-				studyDuration:noteSecond
-			}
-			let playNextId = `moduleId${option.moduleId}chapterId${option.chapterId}sectionId${option.sectionId}${option.isRebuild?'isRebuild':''}`;
-			this.$store.commit('setPlaySectionId', {playSectionId  :item.sectionId});
-			this.$store.commit('setPlayVID', {playVID  :item.recordingUrl});
-			this.$store.commit('updatePlayNextId',playNextId)
-			console.log('this.playNoteVideo')
-		}
+  components: {
+    courseModule,
+    courseChapter,
+    courseSection,
+  },
+  data() {
+    return {
+		lockTimer:null,
+      orderGoodsId: 0,
+      noticeShow: false,
+      navShow: true,
+      enableAutoRotation: true,
+      seekTime: "",
+      toastTimer: null,
+      videoToastShow: false,
+      initLiveOk: false,
+      livePlay: false, //是否正在播放直播,不含暂停
+      liveDuration: 0, //直播观看时长
+      videoOption: {
+        mode: "live",
+        uid: "",
+        cid: "",
+        openId: "",
+        isAutoChange: false,
+        forceVideo: false,
+      },
+      courseHandoutsData: "",
+      liveDetail: {},
+      showSet: false,
+      startStatus: false,
+      detail: {},
+      courseId: 0,
+      placeholder:
+        "您可以在这里输入笔记内容\n还可以点击左侧图标为笔记加上时间标记",
+      inputStyle: {
+        background: "rgba(244, 244, 244, 0.98)",
+        borderRadius: "24rpx",
+        padding: "8rpx",
+        marginBottom: "10rpx",
+      },
+      list: [],
+      menuList: [],
+      current: 0,
+      vid: "",
+      goodsId: 0,
+      goodsData: {},
+      photoPopup: false,
+      goodsPlayConfig: null,
+      autoplay: false,
+      isAllowSeek: "no",
+      playbackRate: [1.0],
+      timer: null,
+      answerTimer: null,
+      goodsPhotographConfig: null,
+      intervalTimeList: [], // 间隔拍照时长
+      intervalTimeIndex: 0, //当前处于哪个时间段拍照
+      playTime: 0, //页面播放时长,不含暂停
+      currentTime: 0,
+      avatarUrl: "",
+      ossAvatarUrl: "",
+      studyDuration: 0, // 当前视频时长
+      gradeId: 0,
+      chapterId: 0,
+      moduleId: 0,
+      reMenuList: [],
+      answerList: [],
+      assignUserId: 0,
+      placeholder: "您可以在这里输入答疑内容",
+      ctxValue: "",
+      noteList: [],
+      noteValue: "",
+      noteId: 0,
+      recordObj: 0,
+      gradeDetail: {},
+      isTaking: true, //是否正在拍照
+      needSeek: false, //第一次播放是否需要跳转
+      needProfileModal: false, //是否需要资料审核弹框
+      liveObj: {},
+      photoNum: 0,
+      photoList: [], //拍照的时间点
+      photoConfig: false, //是否配置好拍照次数
+      photoIndex: 0, //当前位于拍照的区间下标 从0开始
+      photoHistoryList: [], //已拍照历史的下标点
+      sectionItem: null,
+      businessData: {},
+      showNotes: true,
+      menuIndex: [],
+      uploadLock: false, //上传图片
+      isPlayRebuild: false, //是否正在播放重修视频
+      isRebuild: false, //视频是否从重修目录点击
+    };
+  },
+  computed: {
+    ...mapGetters(["userInfo", "playSectionId", "playChannelId", "playVID"]),
+  },
+  onLoad(option) {
+    this.courseId = Number(option.id);
+    this.goodsId = Number(option.goodsId);
+    this.orderGoodsId = Number(option.orderGoodsId);
+    this.courseDetail();
+    this.getGoodsDetail();
+    this.getAnswerList();
+    this.answerTimer = setInterval(() => {
+      this.getAnswerList();
+    }, 5000);
+    let noteSecond = Number(option.noteSecond);
+    if (noteSecond > 0) {
+      //我的消息跳过来,播放节
+      let item = {
+        sectionId: Number(option.sectionId),
+        recordingUrl: option.recordingUrl,
+        noteSecond: noteSecond,
+        studyDuration: noteSecond,
+      };
+      let playNextId = `moduleId${option.moduleId}chapterId${
+        option.chapterId
+      }sectionId${option.sectionId}${option.isRebuild ? "isRebuild" : ""}`;
+      this.$store.commit("setPlaySectionId", { playSectionId: item.sectionId });
+      this.$store.commit("setPlayVID", { playVID: item.recordingUrl });
+      this.$store.commit("updatePlayNextId", playNextId);
+      console.log("this.playNoteVideo");
+    }
+  },
+  onShow() {
+    var self = this;
+    //相机授权
+    this.getCameraSetting();
+    this.$api.getbaseprofiletplists({ goodsId: self.goodsId }).then((res) => {
+      console.log(res, "res");
+      if (res.data.code === 200 && res.data.rows.length) {
+        if (res.data.rows[0].keyValue) {
+          self.$api.getbaseprofiletpId(self.goodsId).then((baseRes) => {
+            if (baseRes.data.code === 200) {
+              if (baseRes.data.data) {
+                self.$api
+                  .getbaseprofiletpgetInfo({
+                    goodsId: self.goodsId,
+                    orderGoodsId: self.orderGoodsId,
+                  })
+                  .then((result) => {
+                    console.log(result, "result");
+                    if (result.data.code === 200) {
+                      if (
+                        !result.data.data ||
+                        (result.data.data.status === 3 &&
+                          result.data.data.changeStatus === 1)
+                      ) {
+                        if (!result.data.data) {
+                          self.needProfileModal = true;
+                          uni.showModal({
+                            content: "请前往填写资料",
+                            cancelText: "返回",
+                            success: function (resultst) {
+                              if (resultst.confirm) {
+                                self.$navTo.togo("/pages2/verify/input", {
+                                  id: self.goodsId,
+                                  orderGoodsId: self.orderGoodsId,
+                                });
+                              }
+                              if (resultst.cancel) {
+                                uni.navigateBack();
+                              }
+                            },
+                          });
+                        } else {
+                          self.needProfileModal = true;
+                          uni.showModal({
+                            content: "资料审核不通过,请前往重新填写",
+                            cancelText: "返回",
+                            success: function (resultst) {
+                              if (resultst.confirm) {
+                                self.$navTo.togo("/pages2/verify/input", {
+                                  id: self.goodsId,
+                                  orderGoodsId: self.orderGoodsId,
+                                });
+                              }
+                              if (resultst.cancel) {
+                                uni.navigateBack();
+                              }
+                            },
+                          });
+                        }
+                      } else if (
+                        result.data.data.status === 1 &&
+                        JSON.parse(res.data.rows[0].keyValue2)[0]
+                      ) {
+                        self.$api
+                          .getbaseprofileStampgetInfo({
+                            goodsId: self.goodsId,
+                            orderGoodsId: self.orderGoodsId,
+                          })
+                          .then((k) => {
+                            if (k.data.code === 200) {
+                              if (
+                                !k.data.data ||
+                                (k.data.data.status === 3 &&
+                                  k.data.data.changeStatus === 1)
+                              ) {
+                                if (!k.data.data) {
+                                  self.needProfileModal = true;
+                                  uni.showModal({
+                                    cancelText: "返回",
+                                    content: "请前往填写盖章资料",
+                                    success: function (resultst) {
+                                      if (resultst.confirm) {
+                                        self.$navTo.togo(
+                                          "/pages2/verify/input2",
+                                          {
+                                            id: self.goodsId,
+                                            orderGoodsId: self.orderGoodsId,
+                                          }
+                                        );
+                                      }
+                                      if (resultst.cancel) {
+                                        uni.navigateBack();
+                                      }
+                                    },
+                                  });
+                                } else {
+                                  self.needProfileModal = true;
+                                  uni.showModal({
+                                    cancelText: "返回",
+                                    content:
+                                      "资料盖章审核不通过,请前往重新填写",
+                                    success: function (resultst) {
+                                      if (resultst.confirm) {
+                                        self.$navTo.togo(
+                                          "/pages2/verify/input2",
+                                          {
+                                            id: self.goodsId,
+                                            orderGoodsId: self.orderGoodsId,
+                                          }
+                                        );
+                                      }
+                                      if (resultst.cancel) {
+                                        uni.navigateBack();
+                                      }
+                                    },
+                                  });
+                                }
+                              }
+                            }
+                          });
+                      }
+                    }
+                  });
+              }
+            }
+          });
+        }
+      }
+    });
+    console.log(this.gradeId, 7512);
+    if (this.gradeId > 0) {
+      //提交完资料返回判断是否已开班
+
+      this.getGradeInfo();
+    }
+  },
+  onUnload() {
+    if (this.playSectionId > 0) {
+      //退出提交记录
+      this.postStudyRecord();
+    }
+    //清除正在播放的节ID
+    this.$store.commit("setPlaySectionId", { playSectionId: 0 });
+    this.$store.commit("setPlayChannelId", { playChannelId: 0 });
+    this.$store.commit("setPlayVID", { playVID: null });
+    this.closePlv();
+    console.log("onUnload");
+    //移除所有的事件监听器
+    uni.$off();
+    clearInterval(this.answerTimer);
+    if (this.timer) {
+      clearInterval(this.timer);
+    }
+	console.log(this.lockTimer,'this.lockTimer')
+	if(this.lockTimer) {
 		
-	},
-	onShow() {
-		var self = this;
-		//相机授权
-		this.getCameraSetting()
-		this.$api.getbaseprofiletplists({ goodsId: self.goodsId }).then(res => {
-			console.log(res,'res')
-			if (res.data.code === 200 && res.data.rows.length) {
-				if (res.data.rows[0].keyValue) {
-					self.$api.getbaseprofiletpId(self.goodsId).then(baseRes => {
-						if(baseRes.data.code === 200) {
-							if(baseRes.data.data) {
-								self.$api.getbaseprofiletpgetInfo({ goodsId: self.goodsId,orderGoodsId:self.orderGoodsId }).then(result => {
-									console.log(result,'result')
-									if (result.data.code === 200) {
-										if (!result.data.data || (result.data.data.status === 3 && result.data.data.changeStatus === 1)) {								
-											if (!result.data.data) {
-												self.needProfileModal = true
-												uni.showModal({
-													content: '请前往填写资料',
-													cancelText: '返回',
-													success: function(resultst) {
-														if (resultst.confirm) {
-															self.$navTo.togo('/pages2/verify/input', {
-																id: self.goodsId,
-																orderGoodsId:self.orderGoodsId
-															});
-														}
-														if (resultst.cancel) {
-															uni.navigateBack();
-														}
-													}
-												});
-											} else {
-												self.needProfileModal = true
-												uni.showModal({
-													content: '资料审核不通过,请前往重新填写',
-													cancelText: '返回',
-													success: function(resultst) {
-														if (resultst.confirm) {
-															self.$navTo.togo('/pages2/verify/input', {
-																id: self.goodsId,
-																orderGoodsId:self.orderGoodsId
-															});
-														}
-														if (resultst.cancel) {
-															uni.navigateBack();
-														}
-													}
-												});
-											}
-										} else if (result.data.data.status === 1 && JSON.parse(res.data.rows[0].keyValue2)[0]) {
-											self.$api.getbaseprofileStampgetInfo({ goodsId: self.goodsId,orderGoodsId:self.orderGoodsId }).then(k => {
-												
-												if (k.data.code === 200) {
-													if (!k.data.data || (k.data.data.status === 3 && k.data.data.changeStatus === 1)) {
-														if (!k.data.data) {
-															self.needProfileModal = true
-															uni.showModal({
-																cancelText: '返回',
-																content: '请前往填写盖章资料',
-																success: function(resultst) {
-																	if (resultst.confirm) {
-																		self.$navTo.togo('/pages2/verify/input2', {
-																			id: self.goodsId,
-																			orderGoodsId:self.orderGoodsId
-																		});
-																	}
-																	if (resultst.cancel) {
-																		uni.navigateBack();
-																	}
-																}
-															});
-														} else {
-															self.needProfileModal = true
-															uni.showModal({
-																cancelText: '返回',
-																content: '资料盖章审核不通过,请前往重新填写',
-																success: function(resultst) {
-																	if (resultst.confirm) {
-																		self.$navTo.togo('/pages2/verify/input2', {
-																			id: self.goodsId,
-																			orderGoodsId:self.orderGoodsId
-																		});
-																	}
-																	if (resultst.cancel) {
-																		uni.navigateBack();
-																	}
-																}
-															});
-														}
-													}
-												}
-											});
-										}
-									}
-								});
-							}
-						}
-					})
-					
-				}
-			}
-		});
-		console.log(this.gradeId,7512)
-		if(this.gradeId>0){
-			//提交完资料返回判断是否已开班
+		clearInterval(this.lockTimer)
+		this.$api.lockDelLock({
+			action:'jxjy'
+		}).then(res => {
 			
-			this.getGradeInfo()
-		}
-	},
-	onUnload() {
-		if (this.playSectionId > 0) {
-			//退出提交记录
-			this.postStudyRecord();
-		}
-		//清除正在播放的节ID
-		this.$store.commit('setPlaySectionId', { playSectionId: 0 });
-		this.$store.commit('setPlayChannelId', { playChannelId: 0 });
-		this.$store.commit('setPlayVID', { playVID: null });
-		this.closePlv()
-		console.log('onUnload')
-		//移除所有的事件监听器
-		uni.$off();
-		clearInterval(this.answerTimer)
-		if (this.timer) {
-			clearInterval(this.timer);
-		}
-		websocket.sendMsg('delAction')
-	},
-	mounted() {
-		uni.$on('changeSection', oldSectionId => {
-			console.log(this.playVID)
-			this.photoConfig = false
-			this.photoIndex = 0
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			if(polyvPlayerContext){
-				//解决同个节视频切换问题
-				polyvPlayerContext.seek(0)
-				polyvPlayerContext.pause();
-			}
-			//清除直播
-			this.$store.commit('setPlayChannelId', { playChannelId: 0 });
-			this.postStudyRecord(0, oldSectionId);
-		});
-		uni.$on('getSection', item => {
-			//清除直播
-			this.isPlayRebuild = item.rebuild
-			this.photoConfig = false
-			this.photoIndex = 0
-			this.sectionItem = item;
-			this.$store.commit('setPlayChannelId', { playChannelId: 0 });
-			//获取拍照历史
-			this.getPhotoLastRecord()
-			this.playVideo(item);
-		});
-		uni.$on('levelId', item => {
-			let arr = item.split('-');
-			//点击节获取的各层级ID
-			this.moduleId = arr[0];
-			this.chapterId = arr[1];
-		});
-		uni.$on('getChannel', item => {
-			//清除录播
-			this.$store.commit('setPlayVID', {playVID  :null});
-			this.playChannel(item);
-		});
-		uni.$on('isRebuild',item => {
-			console.log(item)
-			this.isRebuild = item;
 		})
-		this.updateChapterOpen(true)
-	},
-	methods: {
-		 ...mapMutations(['updateChapterOpen']),
-		/**
-		 * 模块大节播放完毕,刷新列表 
-		 */
-		sectionPlayEnd(isRebuild,index) {
-			console.log('sectionPlayEnd')
-			console.log('isRebuild',isRebuild),
-			console.log('index',index)
-			if(this.reMenuList.length>0) {  //有重修目录
-				if(isRebuild.isRebuild) { //从重修点击
-					this.$api.reMenuList({ courseId: this.courseId, rebuild: 1, gradeId: this.gradeId }).then(res => {
-						console.log('Rebuild1')
-						if (res.data.code == 200) {
-							if(res.data.rows.length) {
-								// res.data.rows[index].name = res.data.rows[index].menuName;
-								// this.$set(this.reMenuList,index,res.data.rows[index])
-								// for (let i = 0; i < res.data.rows.length; i++) {
-								// 	let item = res.data.rows[i];
-								// 	item.down = true;
-								// 	item.id = item.menuId;
-								// 	item.name = item.menuName;
-								// }
-								// this.reMenuList = []
-								// this.$nextTick(() => {
-								// 	this.reMenuList = res.data.rows;
-								// 	console.log(this.reMenuList,'this.reMenuList1')
-								// })
-								
-							} else {
-								this.reMenuList = []
-							}
-							
-							this.$nextTick(() => {
-								if(this.reMenuList.length>0){
-									this.list = [
-										
-										{
-											name: '目录'
-										},
-										{
-											name: '讲义'
-										},
-										{
-											name: '笔记'
-										},
-										{
-											name: '答疑'
-										},
-										{name:'重修目录'}
-									];
-								} else {
-									this.list = [
-										
-										{
-											name: '目录'
-										},
-										{
-											name: '讲义'
-										},
-										{
-											name: '笔记'
-										},
-										{
-											name: '答疑'
-										}
-									];
-									if(this.current == 4) {
-										this.current = 0;
-									}
-									
-								}
-							})
-							
-							
-						}
-					});
-					
-					this.$api.reMenuList({ courseId: this.courseId, gradeId: this.gradeId }).then(res => {
-						console.log('noRebuild1')
-						if (res.data.code == 200) {
-							for (let i = 0; i < res.data.rows.length; i++) {
-								let item = res.data.rows[i];
-								item.down = true;
-								item.id = item.menuId;
-								item.name = item.menuName;
-								item.menuType = item.type;
-							}
-							this.menuList = []
-							this.$nextTick(() => {
-								this.menuList = res.data.rows;
-							})
-							
-						}
-					});
-				} else {  //从普通目录点击
-					this.$api.reMenuList({ courseId: this.courseId, gradeId: this.gradeId }).then(res => {
-						console.log('noRebuild2')
-						if (res.data.code == 200) {
-							res.data.rows[index].name = res.data.rows[index].menuName;
-							res.data.rows[index].id = res.data.rows[index].menuId;
-							this.$set(this.menuList,index,res.data.rows[index])
-						}
-					});
-					
-					this.$api.reMenuList({ courseId: this.courseId, rebuild: 1, gradeId: this.gradeId }).then(res => {
-						console.log('Rebuild2')
-						if (res.data.code == 200) {
-							if(res.data.rows.length) {
-								// for (let i = 0; i < res.data.rows.length; i++) {
-								// 	let item = res.data.rows[i];
-								// 	item.down = true;
-								// 	item.id = item.menuId;
-								// 	item.name = item.menuName;
-								// }
-								
-								
-								// this.reMenuList = res.data.rows;
-							} else {
-								this.reMenuList = []
-							}
-							
-							
-							this.$nextTick(() => {
-								if(this.reMenuList.length>0){
-									this.list = [
-										
-										{
-											name: '目录'
-										},
-										{
-											name: '讲义'
-										},
-										{  
-											name: '笔记'
-										},
-										{
-											name: '答疑'
-										},
-										{name:'重修目录'}
-									];
-								} else {
-									this.list = [
-										
-										{
-											name: '目录'
-										},
-										{
-											name: '讲义'
-										},
-										{
-											name: '笔记'
-										},
-										{
-											name: '答疑'
-										}
-									];
-									if(this.current == 4) {
-										this.current = 0;
-									}
-								}
-							})
-							
-						}
-					});
-				}
-				
-			} else { //没有重修目录
-				this.$api.reMenuList({ courseId: this.courseId, gradeId: this.gradeId }).then(res => {
-						console.log('noRebuild3')
-						console.log('noRebuild3index',index)
-					if (res.data.code == 200) {
-						res.data.rows[index].name = res.data.rows[index].menuName;
-						res.data.rows[index].id = res.data.rows[index].menuId;
-						this.$set(this.menuList,index,res.data.rows[index])
-					}
-				});
-				
-				
-			}
-			
-			
-			
-		},
-		/**
-		 * 获取业务层次详情
-		 */
-		courseBusiness(){
-			this.$api.courseBusiness(this.goodsData.businessId).then(res => {
-				this.businessData = res.data.data;
-			})
-		},
-		/**
-		 * 计算tabs宽度
-		 */
-		itemWidth() {
-			return 100/this.list.length + '%'
-		},
-		/**
-		 * 获取讲义权限
-		 */
-		courseHandouts() {
-			this.$api.courseHandouts(this.goodsData.handoutsId).then(res => {
-				this.courseHandoutsData = res.data.data
-			})
-		},
-		findMenuNextSection(index){
-			for(let i=index+1;i<this.reMenuList.length;i++){
-				let item = this.reMenuList[i]
-				if(item.type==3){
-					return item;
-				}
-			}
-			return {}
-		},
-		getPhotoLastRecord() {
-			let self = this;
-			let data = {
-				sectionId: parseInt(self.playSectionId),
-				goodsId: parseInt(self.goodsId),
-				courseId: parseInt(self.courseId),
-				gradeId: parseInt(self.gradeId),
-				chapterId: parseInt(self.chapterId),
-				moduleId: parseInt(self.moduleId)}
-				this.$api.getPhotoLastRecord(data).then(res => {
-					if(res.data.code==200){
-						//清空历史数据
-						self.photoHistoryList = []
-						this.photoIndex = 0 
-						self.photoList = []
-						for(let i=0;i<res.data.data.length;i++){
-							//-2存储随机拍照数组
-							 if(res.data.data[i].photoIndex==-2){
-								 self.photoList = res.data.data[i].timeInterval.split(',')
-							 }else{
-								 self.photoHistoryList.push(res.data.data[i].photoIndex)
-							 }
-						}
-						
-						
-					}
-					
-				});
-			
-		},
-		//postTime 只提交随机时间
-		postCoursePhotoRecord(postTime=false) {
-			return new Promise((resolve,reject) => {
-				
-				let currentTime = 0;
-				var polyvPlayerContext = this.selectComponent('#playerVideo');
-				if (polyvPlayerContext) {
-					currentTime = polyvPlayerContext.getCurrentTime();
-				}
-				let self = this;
-				let photoIndex = self.photoIndex
-				let data = {
-					photo: self.ossAvatarUrl,
-					sectionId: parseInt(self.playSectionId),
-					goodsId: parseInt(self.goodsId),
-					courseId: parseInt(self.courseId),
-					photoTime: parseInt(currentTime > 0 ? currentTime : 0),
-					gradeId: parseInt(self.gradeId),
-					photoIndex: postTime?-2:parseInt(photoIndex),//从0算起,-2只提交随机时间
-					photoNum:parseInt(self.photoNum),
-					chapterId: parseInt(self.chapterId),
-					moduleId: parseInt(self.moduleId),
-					timeInterval: postTime?self.photoList.join(','):''
-				};
-				console.log('提交接口', data);
-				this.$api.coursePhotoRecord(data).then(res => {
-					if(res.data.code == 200) {
-						resolve()
-					} else {
-						reject()
-					}
-				}).catch(err => {
-					reject()
-				});
-			})
-		},
-		randomNum(minNum,maxNum){ 
-		    switch(arguments.length){ 
-		        case 1: 
-		            return parseInt(Math.random()*minNum+1,10); 
-		        break; 
-		        case 2: 
-		            return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10); 
-		        break; 
-		            default: 
-		                return 0; 
-		            break; 
-		    } 
-		},
-		//配置随机拍照时间
-		configPhoto(){
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			let totalVideoTime = polyvPlayerContext.getDuration()
-			let duration = polyvPlayerContext.getCurrentTime()
-			let photoNum = this.photoNum
-			if(!this.photoConfig){
-				this.photoConfig = true
-				// let  spaceTime = Math.floor(totalVideoTime/photoNum) //拍照时间区间
-				// if(spaceTime<5){//区间小于5秒
-				// 	photoNum = Math.floor(totalVideoTime/5)
-				// 	spaceTime = 5
-				// }
-				// if(photoNum<1){
-				// 	photoNum = 1 //只要设置,至少拍一次
-				// 	spaceTime = totalVideoTime
-				// }
-				// let initSpace = 0
-				//没有历史拍照间隔数据
-				if(this.photoList.length==0){
-					if(totalVideoTime >= 900) { //大于15分钟
-						if(photoNum == 1) { //开头拍1张
-							this.photoList.push(1)
-						} else if(photoNum == 3){ //拍3张
-							this.photoList.push(1) //开头拍一张
-							let centerTime = Math.floor(totalVideoTime / 2); //获取中间时间
-							let centerMinTime = centerTime-300; //前后5分钟
-							let centerMaxTime = centerTime+300;
-							let centerTakeTime = this.randomNum(centerMinTime,centerMaxTime)
-							this.photoList.push(centerTakeTime) //中间拍一张
-							let endMaxTime = totalVideoTime - 60;
-							let endMinTime = totalVideoTime - 300;
-							let endTakeTime = this.randomNum(endMinTime,endMaxTime)
-							this.photoList.push(endTakeTime) //最后拍一张
-						}
-					} else { //小于15分钟,只拍前后各一张
-						if(photoNum == 1) { //开头拍1张
-							this.photoList.push(1)
-						} else if(photoNum == 3){ //拍2张
-							if(totalVideoTime <= 300) { //小于5分钟
-								this.photoList.push(1) //开头拍一张
-								let endTakeTime = this.randomNum(10,totalVideoTime) //中间随机取一张
-								this.photoList.push(endTakeTime) 
-							} else {
-								
-								this.photoList.push(1) //开头拍一张
-								let endMaxTime = totalVideoTime - 60;
-								let endMinTime = totalVideoTime - 300;
-								let endTakeTime = this.randomNum(endMinTime,endMaxTime)
-								this.photoList.push(endTakeTime) //最后1-5分钟拍一张
-							}
-						}
-					}
-					// for(let i=0;i<photoNum;i++){
-					// 	let s = this.randomNum(initSpace,initSpace+spaceTime)
-					// 	if(s>totalVideoTime){
-					// 		s = totalVideoTime-1
-					// 	}
-					// 	if(s<=5){
-					// 		s =5 //避免出现5秒内拍照时间
-					// 	}
-					// 	this.photoList.push(s)
-					// 	initSpace+=spaceTime
-					// }
-					console.log(this.photoList,"随机拍照时间数组11",photoNum)
-					this.postCoursePhotoRecord(true)//提交随机拍照时间数组
-				}
-				console.log(this.photoList,"随机拍照时间数组")
-				//兼容已有观看历史
-				for(let i=0;i<this.photoList.length-1;i++){
-					if(this.photoList[i]<duration&&this.photoList[i+1]>duration){
-						this.photoIndex = i+1
-		//				console.log("我的修改了photoIndex")
-						break
-					}
-					if(duration>this.photoList[this.photoList.length-1]){
-						this.photoIndex = this.photoList.length-1 //取最后一个下标
-		//				console.log("我的修改了photoIndex")
-						break
-					}
-				}
-			}
-		},
-		getLiveUid(channelId) {
-			let self = this;
-			return new Promise(resolve => {
-				let data = {
-					channelId: channelId
-				};
-				self.$api.polyvSign(data).then(res => {
-					resolve(res.data.data);
-				});
-			});
-		},
-		timeEventLiving() {
-			if (plv != null) {
-				if(this.livePlay){
-					this.liveDuration = this.liveDuration +1 //每隔1秒
-					if(this.liveDuration==2){ //直播第2秒拍照
-						if(this.goodsPhotographConfig.livephotograph==1 && this.channelItem.learning != 1){
-							//开启直播拍照
-							
-							this.openPhoto();
-						}
-					}
-				}
-				
-			}
-		},
-		playerLiveStatusChange(e) {
-		    const status = e.detail.status;
-			console.log('直播状态',status);
-		    if (status === 'live') {
-		      console.log('开始直播');
-			  //开始播放
-			  if (this.timer) {
-			  	clearInterval(this.timer);
-			  }
-			  this.livePlay = true
-			  this.timer = setInterval(this.timeEventLiving, 1000); //定时器
-		    }
-		    if (status === 'end') {
-				if(this.livePlay){
-					//只有播放过的结束才提交,避免未开播触发结束
-					this.postStudyRecord(1);
-				}
-				 console.log('结束直播');
-				this.livePlay = false
-		      // 未开始
-		     
-			  
-		    }
-		},
-		closePlv(){
-			if(plv){
-				plv.destroy();
-			}
-			
-		},
-		playChannel(item){
-			if (this.timer) {
-				clearInterval(this.timer);
-			}
-			this.startStatus = true
-			this.initLive()
-		},
-		setLiveOption(status) {
-			    const { userId, channelId, recordFileSimpleModel, playbackEnabled } = this.detail;
-			    const playRecordFile = playbackEnabled && recordFileSimpleModel && status === 'end';
-			
-			    this.videoOption = { 
-					mode: 'live',
-					uid: this.liveObj.uid, //this.playChannelId  egsxlptzdq
-					cid: this.playChannelId,
-					openId: this.userInfo.userAccount,
-					isAutoChange: false,
-					forceVideo: false, 
-				  }
-	},
-		async initLive(){
-			console.log(this.playChannelId,7111)
-			this.liveObj = await this.getLiveUid(this.playChannelId);
-			this.initLiveOk = true
-			let optionsData = {}
-			optionsData.mode = 'live';
-			optionsData.forceVideo = false;
-		    optionsData.channelId = this.playChannelId; // 频道ID '2553128'
-		    optionsData.openId = this.userInfo.userAccount; // 用户openId  this.userInfo.userAccount 'oQ5eX5BCtSjkE1ct8CzvxGWgh0hQ'
-		    optionsData.userId = this.liveObj.uid  // 2.0.0及以上版本的demo需要使用 userId 设置学员唯一id 'egsxlptzdq' 
-			let self = this
-			this.closePlv()
-			plv.init(optionsData)
-			  .then(({ detail, chat }) => {
-			    self.liveDetail = detail
-			
-			    // 设置mode为live的videoOption
-					this.setLiveOption();
-			    if (detail.isPPT) {
-			      chat.on(chat.events.SLICESTART, () => {
-			        // 开始直播
-			      });
-			    } else {
-			      plv.api.getOrdinaryLiveStatus(detail.stream);
-			    }
-			  });
-		},
-		openSetting(res){
-			console.log(res,98)
-		},
-		getCameraSetting () {
-		    const self = this
-		    wx.getSetting({
-		      success: res => {
-		        if (res.authSetting['scope.camera']) {
-		          // 用户已经授权
-		           self.showSet = false
-		        } else {
-		          // 用户还没有授权,向用户发起授权请求
-		          wx.authorize({
-		            scope: 'scope.camera',
-		            success() { // 用户同意授权
-		              self.showSet = false
-		            },
-		            fail() { // 用户不同意授权
-		             self.showSet = true
-		             /* wx.showToast({
+	}
+    // websocket.sendMsg("delAction");
+  },
+  mounted() {
+    uni.$on("changeSection", (oldSectionId) => {
+      console.log(this.playVID);
+      this.photoConfig = false;
+      this.photoIndex = 0;
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      if (polyvPlayerContext) {
+        //解决同个节视频切换问题
+        polyvPlayerContext.seek(0);
+        polyvPlayerContext.pause();
+      }
+      //清除直播
+      this.$store.commit("setPlayChannelId", { playChannelId: 0 });
+      this.postStudyRecord(0, oldSectionId);
+    });
+    uni.$on("getSection", (item) => {
+      //清除直播
+      this.isPlayRebuild = item.rebuild;
+      this.photoConfig = false;
+      this.photoIndex = 0;
+      this.sectionItem = item;
+      this.$store.commit("setPlayChannelId", { playChannelId: 0 });
+      //获取拍照历史
+      this.getPhotoLastRecord();
+      this.playVideo(item);
+    });
+    uni.$on("levelId", (item) => {
+      let arr = item.split("-");
+      //点击节获取的各层级ID
+      this.moduleId = arr[0];
+      this.chapterId = arr[1];
+    });
+    uni.$on("getChannel", (item) => {
+      //清除录播
+      this.$store.commit("setPlayVID", { playVID: null });
+      this.playChannel(item);
+    });
+    uni.$on("isRebuild", (item) => {
+      console.log(item);
+      this.isRebuild = item;
+    });
+    this.updateChapterOpen(true);
+  },
+  methods: {
+    ...mapMutations(["updateChapterOpen"]),
+    /**
+     * 模块大节播放完毕,刷新列表
+     */
+    sectionPlayEnd(isRebuild, index) {
+      console.log("sectionPlayEnd");
+      console.log("isRebuild", isRebuild), console.log("index", index);
+      if (this.reMenuList.length > 0) {
+        //有重修目录
+        if (isRebuild.isRebuild) {
+          //从重修点击
+          this.$api
+            .reMenuList({
+              courseId: this.courseId,
+              rebuild: 1,
+              gradeId: this.gradeId,
+            })
+            .then((res) => {
+              console.log("Rebuild1");
+              if (res.data.code == 200) {
+                if (res.data.rows.length) {
+                  // res.data.rows[index].name = res.data.rows[index].menuName;
+                  // this.$set(this.reMenuList,index,res.data.rows[index])
+                  // for (let i = 0; i < res.data.rows.length; i++) {
+                  // 	let item = res.data.rows[i];
+                  // 	item.down = true;
+                  // 	item.id = item.menuId;
+                  // 	item.name = item.menuName;
+                  // }
+                  // this.reMenuList = []
+                  // this.$nextTick(() => {
+                  // 	this.reMenuList = res.data.rows;
+                  // 	console.log(this.reMenuList,'this.reMenuList1')
+                  // })
+                } else {
+                  this.reMenuList = [];
+                }
+
+                this.$nextTick(() => {
+                  if (this.reMenuList.length > 0) {
+                    this.list = [
+                      {
+                        name: "目录",
+                      },
+                      {
+                        name: "讲义",
+                      },
+                      {
+                        name: "笔记",
+                      },
+                      {
+                        name: "答疑",
+                      },
+                      { name: "重修目录" },
+                    ];
+                  } else {
+                    this.list = [
+                      {
+                        name: "目录",
+                      },
+                      {
+                        name: "讲义",
+                      },
+                      {
+                        name: "笔记",
+                      },
+                      {
+                        name: "答疑",
+                      },
+                    ];
+                    if (this.current == 4) {
+                      this.current = 0;
+                    }
+                  }
+                });
+              }
+            });
+
+          this.$api
+            .reMenuList({ courseId: this.courseId, gradeId: this.gradeId })
+            .then((res) => {
+              console.log("noRebuild1");
+              if (res.data.code == 200) {
+                for (let i = 0; i < res.data.rows.length; i++) {
+                  let item = res.data.rows[i];
+                  item.down = true;
+                  item.id = item.menuId;
+                  item.name = item.menuName;
+                  item.menuType = item.type;
+                }
+                this.menuList = [];
+                this.$nextTick(() => {
+                  this.menuList = res.data.rows;
+                });
+              }
+            });
+        } else {
+          //从普通目录点击
+          this.$api
+            .reMenuList({ courseId: this.courseId, gradeId: this.gradeId })
+            .then((res) => {
+              console.log("noRebuild2");
+              if (res.data.code == 200) {
+                res.data.rows[index].name = res.data.rows[index].menuName;
+                res.data.rows[index].id = res.data.rows[index].menuId;
+                this.$set(this.menuList, index, res.data.rows[index]);
+              }
+            });
+
+          this.$api
+            .reMenuList({
+              courseId: this.courseId,
+              rebuild: 1,
+              gradeId: this.gradeId,
+            })
+            .then((res) => {
+              console.log("Rebuild2");
+              if (res.data.code == 200) {
+                if (res.data.rows.length) {
+                  // for (let i = 0; i < res.data.rows.length; i++) {
+                  // 	let item = res.data.rows[i];
+                  // 	item.down = true;
+                  // 	item.id = item.menuId;
+                  // 	item.name = item.menuName;
+                  // }
+                  // this.reMenuList = res.data.rows;
+                } else {
+                  this.reMenuList = [];
+                }
+
+                this.$nextTick(() => {
+                  if (this.reMenuList.length > 0) {
+                    this.list = [
+                      {
+                        name: "目录",
+                      },
+                      {
+                        name: "讲义",
+                      },
+                      {
+                        name: "笔记",
+                      },
+                      {
+                        name: "答疑",
+                      },
+                      { name: "重修目录" },
+                    ];
+                  } else {
+                    this.list = [
+                      {
+                        name: "目录",
+                      },
+                      {
+                        name: "讲义",
+                      },
+                      {
+                        name: "笔记",
+                      },
+                      {
+                        name: "答疑",
+                      },
+                    ];
+                    if (this.current == 4) {
+                      this.current = 0;
+                    }
+                  }
+                });
+              }
+            });
+        }
+      } else {
+        //没有重修目录
+        this.$api
+          .reMenuList({ courseId: this.courseId, gradeId: this.gradeId })
+          .then((res) => {
+            console.log("noRebuild3");
+            console.log("noRebuild3index", index);
+            if (res.data.code == 200) {
+              res.data.rows[index].name = res.data.rows[index].menuName;
+              res.data.rows[index].id = res.data.rows[index].menuId;
+              this.$set(this.menuList, index, res.data.rows[index]);
+            }
+          });
+      }
+    },
+    /**
+     * 获取业务层次详情
+     */
+    courseBusiness() {
+      this.$api.courseBusiness(this.goodsData.businessId).then((res) => {
+        this.businessData = res.data.data;
+      });
+    },
+    /**
+     * 计算tabs宽度
+     */
+    itemWidth() {
+      return 100 / this.list.length + "%";
+    },
+    /**
+     * 获取讲义权限
+     */
+    courseHandouts() {
+      this.$api.courseHandouts(this.goodsData.handoutsId).then((res) => {
+        this.courseHandoutsData = res.data.data;
+      });
+    },
+    findMenuNextSection(index) {
+      for (let i = index + 1; i < this.reMenuList.length; i++) {
+        let item = this.reMenuList[i];
+        if (item.type == 3) {
+          return item;
+        }
+      }
+      return {};
+    },
+    getPhotoLastRecord() {
+      let self = this;
+      let data = {
+        sectionId: parseInt(self.playSectionId),
+        goodsId: parseInt(self.goodsId),
+        courseId: parseInt(self.courseId),
+        gradeId: parseInt(self.gradeId),
+        chapterId: parseInt(self.chapterId),
+        moduleId: parseInt(self.moduleId),
+      };
+      this.$api.getPhotoLastRecord(data).then((res) => {
+        if (res.data.code == 200) {
+          //清空历史数据
+          self.photoHistoryList = [];
+          this.photoIndex = 0;
+          self.photoList = [];
+          for (let i = 0; i < res.data.data.length; i++) {
+            //-2存储随机拍照数组
+            if (res.data.data[i].photoIndex == -2) {
+              self.photoList = res.data.data[i].timeInterval.split(",");
+            } else {
+              self.photoHistoryList.push(res.data.data[i].photoIndex);
+            }
+          }
+        }
+      });
+    },
+    //postTime 只提交随机时间
+    postCoursePhotoRecord(postTime = false) {
+      return new Promise((resolve, reject) => {
+        let currentTime = 0;
+        var polyvPlayerContext = this.selectComponent("#playerVideo");
+        if (polyvPlayerContext) {
+          currentTime = polyvPlayerContext.getCurrentTime();
+        }
+        let self = this;
+        let photoIndex = self.photoIndex;
+        let data = {
+          photo: self.ossAvatarUrl,
+          sectionId: parseInt(self.playSectionId),
+          goodsId: parseInt(self.goodsId),
+          courseId: parseInt(self.courseId),
+          photoTime: parseInt(currentTime > 0 ? currentTime : 0),
+          gradeId: parseInt(self.gradeId),
+          photoIndex: postTime ? -2 : parseInt(photoIndex), //从0算起,-2只提交随机时间
+          photoNum: parseInt(self.photoNum),
+          chapterId: parseInt(self.chapterId),
+          moduleId: parseInt(self.moduleId),
+          timeInterval: postTime ? self.photoList.join(",") : "",
+        };
+        console.log("提交接口", data);
+        this.$api
+          .coursePhotoRecord(data)
+          .then((res) => {
+            if (res.data.code == 200) {
+              resolve();
+            } else {
+              reject();
+            }
+          })
+          .catch((err) => {
+            reject();
+          });
+      });
+    },
+    randomNum(minNum, maxNum) {
+      switch (arguments.length) {
+        case 1:
+          return parseInt(Math.random() * minNum + 1, 10);
+          break;
+        case 2:
+          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
+          break;
+        default:
+          return 0;
+          break;
+      }
+    },
+    //配置随机拍照时间
+    configPhoto() {
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      let totalVideoTime = polyvPlayerContext.getDuration();
+      let duration = polyvPlayerContext.getCurrentTime();
+      let photoNum = this.photoNum;
+      if (!this.photoConfig) {
+        this.photoConfig = true;
+        // let  spaceTime = Math.floor(totalVideoTime/photoNum) //拍照时间区间
+        // if(spaceTime<5){//区间小于5秒
+        // 	photoNum = Math.floor(totalVideoTime/5)
+        // 	spaceTime = 5
+        // }
+        // if(photoNum<1){
+        // 	photoNum = 1 //只要设置,至少拍一次
+        // 	spaceTime = totalVideoTime
+        // }
+        // let initSpace = 0
+        //没有历史拍照间隔数据
+        if (this.photoList.length == 0) {
+          if (totalVideoTime >= 900) {
+            //大于15分钟
+            if (photoNum == 1) {
+              //开头拍1张
+              this.photoList.push(1);
+            } else if (photoNum == 3) {
+              //拍3张
+              this.photoList.push(1); //开头拍一张
+              let centerTime = Math.floor(totalVideoTime / 2); //获取中间时间
+              let centerMinTime = centerTime - 300; //前后5分钟
+              let centerMaxTime = centerTime + 300;
+              let centerTakeTime = this.randomNum(centerMinTime, centerMaxTime);
+              this.photoList.push(centerTakeTime); //中间拍一张
+              let endMaxTime = totalVideoTime - 60;
+              let endMinTime = totalVideoTime - 300;
+              let endTakeTime = this.randomNum(endMinTime, endMaxTime);
+              this.photoList.push(endTakeTime); //最后拍一张
+            }
+          } else {
+            //小于15分钟,只拍前后各一张
+            if (photoNum == 1) {
+              //开头拍1张
+              this.photoList.push(1);
+            } else if (photoNum == 3) {
+              //拍2张
+              if (totalVideoTime <= 300) {
+                //小于5分钟
+                this.photoList.push(1); //开头拍一张
+                let endTakeTime = this.randomNum(10, totalVideoTime); //中间随机取一张
+                this.photoList.push(endTakeTime);
+              } else {
+                this.photoList.push(1); //开头拍一张
+                let endMaxTime = totalVideoTime - 60;
+                let endMinTime = totalVideoTime - 300;
+                let endTakeTime = this.randomNum(endMinTime, endMaxTime);
+                this.photoList.push(endTakeTime); //最后1-5分钟拍一张
+              }
+            }
+          }
+          // for(let i=0;i<photoNum;i++){
+          // 	let s = this.randomNum(initSpace,initSpace+spaceTime)
+          // 	if(s>totalVideoTime){
+          // 		s = totalVideoTime-1
+          // 	}
+          // 	if(s<=5){
+          // 		s =5 //避免出现5秒内拍照时间
+          // 	}
+          // 	this.photoList.push(s)
+          // 	initSpace+=spaceTime
+          // }
+          console.log(this.photoList, "随机拍照时间数组11", photoNum);
+          this.postCoursePhotoRecord(true); //提交随机拍照时间数组
+        }
+        console.log(this.photoList, "随机拍照时间数组");
+        //兼容已有观看历史
+        for (let i = 0; i < this.photoList.length - 1; i++) {
+          if (
+            this.photoList[i] < duration &&
+            this.photoList[i + 1] > duration
+          ) {
+            this.photoIndex = i + 1;
+            //				console.log("我的修改了photoIndex")
+            break;
+          }
+          if (duration > this.photoList[this.photoList.length - 1]) {
+            this.photoIndex = this.photoList.length - 1; //取最后一个下标
+            //				console.log("我的修改了photoIndex")
+            break;
+          }
+        }
+      }
+    },
+    getLiveUid(channelId) {
+      let self = this;
+      return new Promise((resolve) => {
+        let data = {
+          channelId: channelId,
+        };
+        self.$api.polyvSign(data).then((res) => {
+          resolve(res.data.data);
+        });
+      });
+    },
+    timeEventLiving() {
+      if (plv != null) {
+        if (this.livePlay) {
+          this.liveDuration = this.liveDuration + 1; //每隔1秒
+          if (this.liveDuration == 2) {
+            //直播第2秒拍照
+            if (
+              this.goodsPhotographConfig.livephotograph == 1 &&
+              this.channelItem.learning != 1
+            ) {
+              //开启直播拍照
+
+              this.openPhoto();
+            }
+          }
+        }
+      }
+    },
+    playerLiveStatusChange(e) {
+      const status = e.detail.status;
+      console.log("直播状态", status);
+      if (status === "live") {
+        console.log("开始直播");
+        //开始播放
+        if (this.timer) {
+          clearInterval(this.timer);
+        }
+        this.livePlay = true;
+        this.timer = setInterval(this.timeEventLiving, 1000); //定时器
+      }
+      if (status === "end") {
+        if (this.livePlay) {
+          //只有播放过的结束才提交,避免未开播触发结束
+          this.postStudyRecord(1);
+        }
+        console.log("结束直播");
+        this.livePlay = false;
+        // 未开始
+      }
+    },
+    closePlv() {
+      if (plv) {
+        plv.destroy();
+      }
+    },
+    playChannel(item) {
+      if (this.timer) {
+        clearInterval(this.timer);
+      }
+      this.startStatus = true;
+      this.initLive();
+    },
+    setLiveOption(status) {
+      const { userId, channelId, recordFileSimpleModel, playbackEnabled } =
+        this.detail;
+      const playRecordFile =
+        playbackEnabled && recordFileSimpleModel && status === "end";
+
+      this.videoOption = {
+        mode: "live",
+        uid: this.liveObj.uid, //this.playChannelId  egsxlptzdq
+        cid: this.playChannelId,
+        openId: this.userInfo.userAccount,
+        isAutoChange: false,
+        forceVideo: false,
+      };
+    },
+    async initLive() {
+      console.log(this.playChannelId, 7111);
+      this.liveObj = await this.getLiveUid(this.playChannelId);
+      this.initLiveOk = true;
+      let optionsData = {};
+      optionsData.mode = "live";
+      optionsData.forceVideo = false;
+      optionsData.channelId = this.playChannelId; // 频道ID '2553128'
+      optionsData.openId = this.userInfo.userAccount; // 用户openId  this.userInfo.userAccount 'oQ5eX5BCtSjkE1ct8CzvxGWgh0hQ'
+      optionsData.userId = this.liveObj.uid; // 2.0.0及以上版本的demo需要使用 userId 设置学员唯一id 'egsxlptzdq'
+      let self = this;
+      this.closePlv();
+      plv.init(optionsData).then(({ detail, chat }) => {
+        self.liveDetail = detail;
+
+        // 设置mode为live的videoOption
+        this.setLiveOption();
+        if (detail.isPPT) {
+          chat.on(chat.events.SLICESTART, () => {
+            // 开始直播
+          });
+        } else {
+          plv.api.getOrdinaryLiveStatus(detail.stream);
+        }
+      });
+    },
+    openSetting(res) {
+      console.log(res, 98);
+    },
+    getCameraSetting() {
+      const self = this;
+      wx.getSetting({
+        success: (res) => {
+          if (res.authSetting["scope.camera"]) {
+            // 用户已经授权
+            self.showSet = false;
+          } else {
+            // 用户还没有授权,向用户发起授权请求
+            wx.authorize({
+              scope: "scope.camera",
+              success() {
+                // 用户同意授权
+                self.showSet = false;
+              },
+              fail() {
+                // 用户不同意授权
+                self.showSet = true;
+                /* wx.showToast({
 		                title: '摄像头授权失败',
 		                icon: 'none',
 		                duration: 3000
 		              }) */
-		            }
-		          })
-		        }
-		      },
-		      fail: res => {
-		       
-		       
-		      }
-		    })
-		  },
-		studyNotice(){
-			this.noticeShow = true;
-		},
-		//播放笔记视频
-		async playNoteVideo(item) {
-			console.log(item,'noteItem')
-			if (this.timer) {
-				clearInterval(this.timer);
-			}
-			if (this.vid) {
-				//切换视频
-				var polyvPlayerContext = this.selectComponent('#playerVideo');
-				polyvPlayerContext.changeVid(item.recordingUrl);
-			} else {
-				this.vid = item.recordingUrl;
-			}
-			this.recordObj = {videoCurrentTime:item.noteSecond}
-			if (this.recordObj.videoCurrentTime) {
-				this.needSeek = true; //需要跳转到播放记录
-			}
-			this.startStatus = true;
-			//获取节笔记
-			this.getNoteList();
-		},
-		//正常播放视频
-		async playVideo(item) {
-			console.log(item)
-			if (this.timer) {
-				clearInterval(this.timer);
-			}
-			if (this.vid) {
-				//切换视频
-				var polyvPlayerContext = this.selectComponent('#playerVideo');
-				console.log(polyvPlayerContext,'polyvPlayerContext')
-				polyvPlayerContext.changeVid(item.recordingUrl);
-			} else {
-				this.vid = item.recordingUrl;
-			}
-			this.recordObj = null
-			this.recordObj = await this.getRecordLast();
-			this.needSeek = true; //跳转到播放记录
-			this.startStatus = true;
-			
-			//获取节笔记
-			this.getNoteList();
-		},
-		getRecordLast() {
-			let self = this;
-			return new Promise(resolve => {
-				let data = {
-					gradeId: Number(self.gradeId),
-					goodsId: Number(self.goodsId),
-					sectionId: Number(self.playSectionId),
-					courseId: Number(self.courseId),
-					chapterId: parseInt(self.chapterId),
-					moduleId: parseInt(self.moduleId)
-				};
-				self.$api.recordLast(data).then(res => {
-					resolve(res.data.data);
-				});
-			});
-		},
-		
-		jumpNote(item) {
-			this.noteId = item.noteId;
-			//没视频播放
-			if(this.playSectionId==0){
-				console.log('即将跳到笔记位置1')
-				this.$u.toast('即将跳到笔记位置');  
-				this.$store.commit('setPlaySectionId', {playSectionId  :item.sectionId});
-				this.$store.commit('setPlayVID', {playVID  :item.recordingUrl});
-				this.playNoteVideo(item);
-			}else{
-				//正在看当前笔记视频
-				console.log('即将跳到笔记位置2')
-				this.$u.toast('即将跳到笔记位置');
-				//跳到笔记时刻
-				var polyvPlayerContext = this.selectComponent('#playerVideo');
-				polyvPlayerContext.seek(item.noteSecond);
-				polyvPlayerContext.play();
-			}
-			
-		},
-		postNote() {
-			let self = this;
-			if (!(this.playSectionId > 0)) {
-				this.$u.toast('目前无播放视频');
-				return;
-			}
-			if (!this.noteValue) {
-				this.$u.toast('请输入内容');
-				return;
-			}
-			if(!this.gradeId){
-				this.$u.toast('暂无班级数据');
-				return;
-			}
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			let noteDate = this.$method.getZeroTime();
-			let noteSecond = polyvPlayerContext.getCurrentTime();
-			console.log(noteSecond,698)
-			if (!noteSecond) {
-				if(noteSecond==0){
-					//播放结束
-					noteSecond = polyvPlayerContext.getDuration();
-					console.log(noteSecond,63398)
-				}
-				if(!noteSecond){
-					this.$u.toast('视频暂未开始');
-					return;
-				}
-				
-			}
-			let data = {
-				gradeId: this.gradeId,
-				goodsId: this.goodsId,
-				sectionId: this.playSectionId,
-				courseId: this.courseId,
-				noteText: this.noteValue,
-				noteDate: noteDate,
-				noteSecond: noteSecond
-			};
-			this.$api.postNote(data).then(res => {
-				if (res.data.code == 200) {
-					this.$u.toast('发布成功');
-					self.getNoteList();
-					this.noteValue = '';
-				}
-			});
-		},
-		getGradeInfo() {
-			let self = this;
-			this.$store.state.allowLoading = false;
-			this.$api.goodsGradeInfo(this.gradeId).then(res => {
-				if (res.data.code == 200) {
-					self.gradeDetail = res.data.data;
-					if(self.needProfileModal){
-						return
-					}
-					if(self.gradeDetail.learningStatus==2){
-						uni.showModal({
-							showCancel:false,
-							confirmText: '确定',
-							content: '当前课程正在申请中,正式开班后方可进行学习,请耐心等候!',
-							success: function(resultst) {
-								uni.navigateBack();
-							}
-						});
-					}
-					if(self.gradeDetail.learningStatus==3&&(Number(self.gradeDetail.learningTimeStart)>Number((new Date())/1000))){
-						uni.showModal({
-							showCancel:false,
-							cancelText: '返回',
-							content: '当前课程正在申请中,正式开班后方可进行学习,请耐心等候!',
-							success: function(resultst) {
-								uni.navigateBack();
-							}
-						});
-					}
-				}
-			});
-			this.$store.state.allowLoading = true;
-		},
-		getNoteList() {
-			let self = this;
-			self.noteList = [];
-			let data = { courseId: this.courseId, gradeId: this.gradeId, goodsId: this.goodsId }
-			if(this.playSectionId>0){
-				data.sectionId = this.playSectionId
-			}
-			this.$api.noteList(data).then(res => {
-				if (res.data.code == 200) {
-					self.noteList = res.data.rows;
-				}
-			});
-		},
-		delAnswer(answerId) {
-			let self = this;
-			let data = { answerId: answerId, status: -1 };
-			this.$api.delAnswer(data).then(res => {
-				if (res.data.code == 200) {
-					self.getAnswerList();
-				}
-			});
-		},
-		clearCtx() {
-			console.log(4234);
-			this.placeholder = '您可以在这里输入答疑内容';
-			this.ctxValue = '';
-			this.assignUserId = 0;
-		},
-		replyContent(item) {
-			this.assignUserId = item.userId;
-			this.placeholder = '@' + item.realname;
-		},
-		delContent(item) {
-			this.delAnswer(item.answerId);
-		},
-		postAnswer() {
-			let self = this;
-			let data = { courseId: this.courseId, answerText: this.ctxValue, goodsId: this.goodsId };
-			if (this.assignUserId > 0) {
-				data.assignUserId = this.assignUserId;
-			}
-			this.$api.postAnswer(data).then(res => {
-				if (res.data.code == 200) {
-					this.$u.toast('发布成功');
-					self.getAnswerList();
-					this.placeholder = '您可以在这里输入答疑内容';
-					this.ctxValue = '';
-					this.assignUserId = 0;
-				}
-			});
-		},
-		postContent() {
-			if (!this.ctxValue||this.ctxValue=='') {
-				this.$u.toast('请输入内容');
-				return
-			}
-			this.postAnswer();
-		},
-		postStudyRecord(status = 0, sectionId = this.playSectionId) {
-			console.log('status',status)
-			let currentTime = 0;
-			let PlayDuration = 0
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			if (polyvPlayerContext) {
-				currentTime = polyvPlayerContext.getCurrentTime(); //总的视频播放时刻
-				PlayDuration = polyvPlayerContext.getVideoPlayDuration();//本次看的时长
-			}
-			if(this.playChannelId>0){
-				currentTime = 2;//直播无法获取,无论开始结束都传2秒
-			}
-			let self = this;
-			let data = {
-				photo: self.ossAvatarUrl,
-				sectionId: parseInt(sectionId),
-				goodsId: parseInt(self.goodsId),
-				courseId: parseInt(self.courseId),
-				studyDuration: parseInt(PlayDuration > 0 ? PlayDuration : self.studyDuration),
-				gradeId: parseInt(self.gradeId),
-				chapterId: parseInt(self.chapterId),
-				moduleId: parseInt(self.moduleId),
-				videoCurrentTime: parseInt(currentTime > 0 ? currentTime : self.studyDuration)
-			};
-			if (status > 0) {
-				console.log(sectionId,'sectionId')
-				data.status = status;
-				
-					
-			}
-			console.log('提交接口', data);
-			this.$api.studyRecord(data).then(res => {
-				if(res.data.code == 200) {
-					
-					if (status > 0) {
-						let moduleId = this.moduleId || 0;
-						let chapterId = this.chapterId || 0;
-						let playNextIdisRebuild = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}isRebuild`;
-						let playNextId = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}`;  //拼接对应章节唯一id
-						console.log(playNextId,'playNextId')
-						console.log(playNextIdisRebuild,'playNextIdisRebuild')
-						
-						uni.$emit('playNext'+playNextIdisRebuild,{fromRebuild:this.isRebuild}); //通知播放结束,不来自重修目录的点击不用弹窗学习下一节
-						uni.$emit('playNext'+playNextId); //通知播放结束
-					}
-					
-					self.ossAvatarUrl = ''
-				} else {
-					this.uploadLock = false;
-					uni.showToast({
-						icon:'none',
-						title:res.data.msg
-					})
-				}
-				console.log(res,'res');
-			});
-		},
-		uploadFile(options, int) {
-			var self = this;
-			return new Promise((resolve, reject) => {
-				var data = {
-					imageStatus: int,
-					gradeId:this.gradeId
-				};
-				self.$api.aliyunpolicy(data).then(res => {
-					if (res.data.code != 200) {
-						self.$method.showToast('签名错误' + JSON.stringify(res.data));
-						return;
-					}
-					var ossToken = res.data.data.resultContent;
-					if (ossToken.host == null || ossToken.host == undefined) {
-						self.$method.showToast('上传路径报错' + JSON.stringify(res.data));
-						return;
-					}
-					uni.uploadFile({
-						url: ossToken.host,
-						name: 'file',
-						filePath: options,
-						fileType: 'image',
-						header: {
-							AuthorizationToken: 'WX ' + uni.getStorageSync('token')
-						},
-						formData: {
-							key: ossToken.dir,
-							OSSAccessKeyId: ossToken.accessid,
-							policy: ossToken.policy,
-							Signature: ossToken.signature,
-							callback: ossToken.callback,
-							success_action_status: 200
-						},
-						success: result => {
-							if (result.statusCode === 200) {
-								self.ossAvatarUrl = ossToken.dir;
-								resolve();
-							} else {
-								uni.showToast({
-									title: '上传失败',
-									icon: 'none'
-								});
-								this.openPhoto();
-								return;
-							}
-						},
-						fail: error => {
-							uni.showToast({
-								title: '上传接口报错,请重新拍照上传' + error,
-								icon: 'none'
-							});
-							this.openPhoto();
-							return;
-						}
-					});
-				});
-			});
-		},
-		imageInfos() {
-			var self = this;
-			return new Promise((resolve, reject) => {
-				uni.getImageInfo({
-					src: self.avatarUrl,
-					success: async res => {
-						let canvasWidth = res.width; //图片原始长宽
-						let canvasHeight = res.height;
-						if (canvasWidth > 2000 || canvasHeight > 2000) {
-							uni.compressImage({
-								src: self.avatarUrl,
-								quality: 75,
-								width: '35%',
-								height: '35%',
-								success: async rest => {
-									const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
-									resolve(waitUpload);
-								}
-							});
-						} else if (canvasWidth > 1000 || canvasHeight > 1000) {
-							uni.compressImage({
-								src: self.avatarUrl,
-								quality: 75,
-								width: '50%',
-								height: '50%',
-								success: async rest => {
-									const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
-									resolve(waitUpload);
-								}
-							});
-						} else {
-							console.log('无需压缩');
-							const waitUpload = await self.uploadFile(self.avatarUrl, 0);
-							resolve(waitUpload);
-						}
-					}
-				});
-			});
-		},
-		timeEvent() {
-			let self = this;
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			if (polyvPlayerContext != null) {
-				
-				this.playTime = polyvPlayerContext.getCurrentTime() //播放时刻
-			//	console.log(this.playTime,789,this.photoHistoryList)
-				//判断是否需要拍照
-				if (this.photoNum > 0) {
-					this.configPhoto()
-					let photoTime =0; //获取拍照秒数
-					for(let i=0;i<this.photoList.length;i++){
-						photoTime = Number(this.photoList[i]); //获取拍照秒数
-						if (photoTime < this.playTime&&photoTime>this.playTime-8) { //3秒区间内才触发拍照,避免拉动滚动条
-							if(this.photoHistoryList.indexOf(i)<0 &&  this.sectionItem.learning != 1){ //不存在拍照历史,没有重修过,没有学过,则拍照
-								//启动拍照
-								//暂停
-								polyvPlayerContext.exitFullScreen();
-								polyvPlayerContext.pause();
-								this.photoIndex = i
-								this.openPhoto();
-								
-								
-							}
-							
-						}
-					}
-					
-				}
-			}
-		},
-		closeToast() {
-			clearTimeout(this.toastTimer)
-			this.videoToastShow = false;
-			
-		},
-		restart() {
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			polyvPlayerContext.seek(0);
-						console.log('seek1')
-			clearTimeout(this.toastTimer)
-			this.videoToastShow = false;
-		},
-		onStateChange(newstate, oldstate) {
-			if (newstate.detail.newstate == 'playing') {
-				if (this.needSeek) {  
-					var polyvPlayerContext = this.selectComponent('#playerVideo');
-					if(this.recordObj.videoCurrentTime){
-						console.log('seek2')
-						polyvPlayerContext.seek(this.recordObj.videoCurrentTime);
-						this.seekTime = this.$method.secondToDate(this.recordObj.videoCurrentTime)
-						this.videoToastShow = true;
-						this.toastTimer = setTimeout(() => {
-							this.videoToastShow = false;
-						},3000)
-						
-					}else{
-						polyvPlayerContext.seek(1);//避免相同节继续播放
-						console.log('seek3')
-						
-					}
-					
-					polyvPlayerContext.play();
-					this.needSeek = false;
-				}
-				//开始播放
-				if (this.timer) {
-					clearInterval(this.timer);
-				}
-				this.timer = setInterval(this.timeEvent, 1000); //定时器
-			}
-			if (newstate.detail.newstate == 'pause') {
-				clearInterval(this.timer);
-				//暂停提交记录
-				/* this.ossAvatarUrl = ""
+              },
+            });
+          }
+        },
+        fail: (res) => {},
+      });
+    },
+    studyNotice() {
+      this.noticeShow = true;
+    },
+    //播放笔记视频
+    async playNoteVideo(item) {
+      console.log(item, "noteItem");
+      if (this.timer) {
+        clearInterval(this.timer);
+      }
+      if (this.vid) {
+        //切换视频
+        var polyvPlayerContext = this.selectComponent("#playerVideo");
+        polyvPlayerContext.changeVid(item.recordingUrl);
+      } else {
+        this.vid = item.recordingUrl;
+      }
+      this.recordObj = { videoCurrentTime: item.noteSecond };
+      if (this.recordObj.videoCurrentTime) {
+        this.needSeek = true; //需要跳转到播放记录
+      }
+      this.startStatus = true;
+      //获取节笔记
+      this.getNoteList();
+    },
+    //正常播放视频
+    async playVideo(item) {
+      console.log(item);
+      if (this.timer) {
+        clearInterval(this.timer);
+      }
+      if (this.vid) {
+        //切换视频
+        var polyvPlayerContext = this.selectComponent("#playerVideo");
+        console.log(polyvPlayerContext, "polyvPlayerContext");
+        polyvPlayerContext.changeVid(item.recordingUrl);
+      } else {
+        this.vid = item.recordingUrl;
+      }
+      this.recordObj = null;
+      this.recordObj = await this.getRecordLast();
+      this.needSeek = true; //跳转到播放记录
+      this.startStatus = true;
+
+      //获取节笔记
+      this.getNoteList();
+    },
+    getRecordLast() {
+      let self = this;
+      return new Promise((resolve) => {
+        let data = {
+          gradeId: Number(self.gradeId),
+          goodsId: Number(self.goodsId),
+          sectionId: Number(self.playSectionId),
+          courseId: Number(self.courseId),
+          chapterId: parseInt(self.chapterId),
+          moduleId: parseInt(self.moduleId),
+        };
+        self.$api.recordLast(data).then((res) => {
+          resolve(res.data.data);
+        });
+      });
+    },
+
+    jumpNote(item) {
+      this.noteId = item.noteId;
+      //没视频播放
+      if (this.playSectionId == 0) {
+        console.log("即将跳到笔记位置1");
+        this.$u.toast("即将跳到笔记位置");
+        this.$store.commit("setPlaySectionId", {
+          playSectionId: item.sectionId,
+        });
+        this.$store.commit("setPlayVID", { playVID: item.recordingUrl });
+        this.playNoteVideo(item);
+      } else {
+        //正在看当前笔记视频
+        console.log("即将跳到笔记位置2");
+        this.$u.toast("即将跳到笔记位置");
+        //跳到笔记时刻
+        var polyvPlayerContext = this.selectComponent("#playerVideo");
+        polyvPlayerContext.seek(item.noteSecond);
+        polyvPlayerContext.play();
+      }
+    },
+    postNote() {
+      let self = this;
+      if (!(this.playSectionId > 0)) {
+        this.$u.toast("目前无播放视频");
+        return;
+      }
+      if (!this.noteValue) {
+        this.$u.toast("请输入内容");
+        return;
+      }
+      if (!this.gradeId) {
+        this.$u.toast("暂无班级数据");
+        return;
+      }
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      let noteDate = this.$method.getZeroTime();
+      let noteSecond = polyvPlayerContext.getCurrentTime();
+      console.log(noteSecond, 698);
+      if (!noteSecond) {
+        if (noteSecond == 0) {
+          //播放结束
+          noteSecond = polyvPlayerContext.getDuration();
+          console.log(noteSecond, 63398);
+        }
+        if (!noteSecond) {
+          this.$u.toast("视频暂未开始");
+          return;
+        }
+      }
+      let data = {
+        gradeId: this.gradeId,
+        goodsId: this.goodsId,
+        sectionId: this.playSectionId,
+        courseId: this.courseId,
+        noteText: this.noteValue,
+        noteDate: noteDate,
+        noteSecond: noteSecond,
+      };
+      this.$api.postNote(data).then((res) => {
+        if (res.data.code == 200) {
+          this.$u.toast("发布成功");
+          self.getNoteList();
+          this.noteValue = "";
+        }
+      });
+    },
+    getGradeInfo() {
+      let self = this;
+      this.$store.state.allowLoading = false;
+      this.$api.goodsGradeInfo(this.gradeId).then((res) => {
+        if (res.data.code == 200) {
+          self.gradeDetail = res.data.data;
+          if (self.needProfileModal) {
+            return;
+          }
+          if (self.gradeDetail.learningStatus == 2) {
+            uni.showModal({
+              showCancel: false,
+              confirmText: "确定",
+              content:
+                "当前课程正在申请中,正式开班后方可进行学习,请耐心等候!",
+              success: function (resultst) {
+                uni.navigateBack();
+              },
+            });
+          }
+          if (
+            self.gradeDetail.learningStatus == 3 &&
+            Number(self.gradeDetail.learningTimeStart) >
+              Number(new Date() / 1000)
+          ) {
+            uni.showModal({
+              showCancel: false,
+              cancelText: "返回",
+              content:
+                "当前课程正在申请中,正式开班后方可进行学习,请耐心等候!",
+              success: function (resultst) {
+                uni.navigateBack();
+              },
+            });
+          }
+        }
+      });
+      this.$store.state.allowLoading = true;
+    },
+    getNoteList() {
+      let self = this;
+      self.noteList = [];
+      let data = {
+        courseId: this.courseId,
+        gradeId: this.gradeId,
+        goodsId: this.goodsId,
+      };
+      if (this.playSectionId > 0) {
+        data.sectionId = this.playSectionId;
+      }
+      this.$api.noteList(data).then((res) => {
+        if (res.data.code == 200) {
+          self.noteList = res.data.rows;
+        }
+      });
+    },
+    delAnswer(answerId) {
+      let self = this;
+      let data = { answerId: answerId, status: -1 };
+      this.$api.delAnswer(data).then((res) => {
+        if (res.data.code == 200) {
+          self.getAnswerList();
+        }
+      });
+    },
+    clearCtx() {
+      console.log(4234);
+      this.placeholder = "您可以在这里输入答疑内容";
+      this.ctxValue = "";
+      this.assignUserId = 0;
+    },
+    replyContent(item) {
+      this.assignUserId = item.userId;
+      this.placeholder = "@" + item.realname;
+    },
+    delContent(item) {
+      this.delAnswer(item.answerId);
+    },
+    postAnswer() {
+      let self = this;
+      let data = {
+        courseId: this.courseId,
+        answerText: this.ctxValue,
+        goodsId: this.goodsId,
+      };
+      if (this.assignUserId > 0) {
+        data.assignUserId = this.assignUserId;
+      }
+      this.$api.postAnswer(data).then((res) => {
+        if (res.data.code == 200) {
+          this.$u.toast("发布成功");
+          self.getAnswerList();
+          this.placeholder = "您可以在这里输入答疑内容";
+          this.ctxValue = "";
+          this.assignUserId = 0;
+        }
+      });
+    },
+    postContent() {
+      if (!this.ctxValue || this.ctxValue == "") {
+        this.$u.toast("请输入内容");
+        return;
+      }
+      this.postAnswer();
+    },
+    postStudyRecord(status = 0, sectionId = this.playSectionId) {
+      console.log("status", status);
+      let currentTime = 0;
+      let PlayDuration = 0;
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      if (polyvPlayerContext) {
+        currentTime = polyvPlayerContext.getCurrentTime(); //总的视频播放时刻
+        PlayDuration = polyvPlayerContext.getVideoPlayDuration(); //本次看的时长
+      }
+      if (this.playChannelId > 0) {
+        currentTime = 2; //直播无法获取,无论开始结束都传2秒
+      }
+      let self = this;
+      let data = {
+        photo: self.ossAvatarUrl,
+        sectionId: parseInt(sectionId),
+        goodsId: parseInt(self.goodsId),
+        courseId: parseInt(self.courseId),
+        studyDuration: parseInt(
+          PlayDuration > 0 ? PlayDuration : self.studyDuration
+        ),
+        gradeId: parseInt(self.gradeId),
+        chapterId: parseInt(self.chapterId),
+        moduleId: parseInt(self.moduleId),
+        videoCurrentTime: parseInt(
+          currentTime > 0 ? currentTime : self.studyDuration
+        ),
+      };
+      if (status > 0) {
+        console.log(sectionId, "sectionId");
+        data.status = status;
+      }
+      console.log("提交接口", data);
+      this.$api.studyRecord(data).then((res) => {
+        if (res.data.code == 200) {
+          if (status > 0) {
+            let moduleId = this.moduleId || 0;
+            let chapterId = this.chapterId || 0;
+            let playNextIdisRebuild = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}isRebuild`;
+            let playNextId = `moduleId${moduleId}chapterId${chapterId}sectionId${sectionId}`; //拼接对应章节唯一id
+            console.log(playNextId, "playNextId");
+            console.log(playNextIdisRebuild, "playNextIdisRebuild");
+
+            uni.$emit("playNext" + playNextIdisRebuild, {
+              fromRebuild: this.isRebuild,
+            }); //通知播放结束,不来自重修目录的点击不用弹窗学习下一节
+            uni.$emit("playNext" + playNextId); //通知播放结束
+          }
+
+          self.ossAvatarUrl = "";
+        } else {
+          this.uploadLock = false;
+          uni.showToast({
+            icon: "none",
+            title: res.data.msg,
+          });
+        }
+        console.log(res, "res");
+      });
+    },
+    uploadFile(options, int) {
+      var self = this;
+      return new Promise((resolve, reject) => {
+        var data = {
+          imageStatus: int,
+          gradeId: this.gradeId,
+        };
+        self.$api.aliyunpolicy(data).then((res) => {
+          if (res.data.code != 200) {
+            self.$method.showToast("签名错误" + JSON.stringify(res.data));
+            return;
+          }
+          var ossToken = res.data.data.resultContent;
+          if (ossToken.host == null || ossToken.host == undefined) {
+            self.$method.showToast("上传路径报错" + JSON.stringify(res.data));
+            return;
+          }
+          uni.uploadFile({
+            url: ossToken.host,
+            name: "file",
+            filePath: options,
+            fileType: "image",
+            header: {
+              AuthorizationToken: "WX " + uni.getStorageSync("token"),
+            },
+            formData: {
+              key: ossToken.dir,
+              OSSAccessKeyId: ossToken.accessid,
+              policy: ossToken.policy,
+              Signature: ossToken.signature,
+              callback: ossToken.callback,
+              success_action_status: 200,
+            },
+            success: (result) => {
+              if (result.statusCode === 200) {
+                self.ossAvatarUrl = ossToken.dir;
+                resolve();
+              } else {
+                uni.showToast({
+                  title: "上传失败",
+                  icon: "none",
+                });
+                this.openPhoto();
+                return;
+              }
+            },
+            fail: (error) => {
+              uni.showToast({
+                title: "上传接口报错,请重新拍照上传" + error,
+                icon: "none",
+              });
+              this.openPhoto();
+              return;
+            },
+          });
+        });
+      });
+    },
+    imageInfos() {
+      var self = this;
+      return new Promise((resolve, reject) => {
+        uni.getImageInfo({
+          src: self.avatarUrl,
+          success: async (res) => {
+            let canvasWidth = res.width; //图片原始长宽
+            let canvasHeight = res.height;
+            if (canvasWidth > 2000 || canvasHeight > 2000) {
+              uni.compressImage({
+                src: self.avatarUrl,
+                quality: 75,
+                width: "35%",
+                height: "35%",
+                success: async (rest) => {
+                  const waitUpload = await self.uploadFile(
+                    rest.tempFilePath,
+                    0
+                  );
+                  resolve(waitUpload);
+                },
+              });
+            } else if (canvasWidth > 1000 || canvasHeight > 1000) {
+              uni.compressImage({
+                src: self.avatarUrl,
+                quality: 75,
+                width: "50%",
+                height: "50%",
+                success: async (rest) => {
+                  const waitUpload = await self.uploadFile(
+                    rest.tempFilePath,
+                    0
+                  );
+                  resolve(waitUpload);
+                },
+              });
+            } else {
+              console.log("无需压缩");
+              const waitUpload = await self.uploadFile(self.avatarUrl, 0);
+              resolve(waitUpload);
+            }
+          },
+        });
+      });
+    },
+    timeEvent() {
+      let self = this;
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      if (polyvPlayerContext != null) {
+        this.playTime = polyvPlayerContext.getCurrentTime(); //播放时刻
+        //	console.log(this.playTime,789,this.photoHistoryList)
+        //判断是否需要拍照
+        if (this.photoNum > 0) {
+          this.configPhoto();
+          let photoTime = 0; //获取拍照秒数
+          for (let i = 0; i < this.photoList.length; i++) {
+            photoTime = Number(this.photoList[i]); //获取拍照秒数
+            if (photoTime < this.playTime && photoTime > this.playTime - 8) {
+              //3秒区间内才触发拍照,避免拉动滚动条
+              if (
+                this.photoHistoryList.indexOf(i) < 0 &&
+                this.sectionItem.learning != 1
+              ) {
+                //不存在拍照历史,没有重修过,没有学过,则拍照
+                //启动拍照
+                //暂停
+                polyvPlayerContext.exitFullScreen();
+                polyvPlayerContext.pause();
+                this.photoIndex = i;
+                this.openPhoto();
+              }
+            }
+          }
+        }
+      }
+    },
+    closeToast() {
+      clearTimeout(this.toastTimer);
+      this.videoToastShow = false;
+    },
+    restart() {
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      polyvPlayerContext.seek(0);
+      console.log("seek1");
+      clearTimeout(this.toastTimer);
+      this.videoToastShow = false;
+    },
+    onStateChange(newstate, oldstate) {
+      if (newstate.detail.newstate == "playing") {
+        if (this.needSeek) {
+          var polyvPlayerContext = this.selectComponent("#playerVideo");
+          if (this.recordObj.videoCurrentTime) {
+            console.log("seek2");
+            polyvPlayerContext.seek(this.recordObj.videoCurrentTime);
+            this.seekTime = this.$method.secondToDate(
+              this.recordObj.videoCurrentTime
+            );
+            this.videoToastShow = true;
+            this.toastTimer = setTimeout(() => {
+              this.videoToastShow = false;
+            }, 3000);
+          } else {
+            polyvPlayerContext.seek(1); //避免相同节继续播放
+            console.log("seek3");
+          }
+
+          polyvPlayerContext.play();
+          this.needSeek = false;
+        }
+        //开始播放
+        if (this.timer) {
+          clearInterval(this.timer);
+        }
+        this.timer = setInterval(this.timeEvent, 1000); //定时器
+      }
+      if (newstate.detail.newstate == "pause") {
+        clearInterval(this.timer);
+        //暂停提交记录
+        /* this.ossAvatarUrl = ""
 				this.postStudyRecord() */
-			}
-			if (newstate.detail.newstate == 'ended') {
-				clearInterval(this.timer);
-				uni.showToast({
-					icon:'none',
-					title:'播放完毕'
-				})
-				this.postStudyRecord(1);
-				// uni.$emit('playNext') //播放重修下一节
-			}
-		},
-		//拍照
-		openPhoto() {
-			var polyvPlayerContext = this.selectComponent('#playerVideo');
-			if(polyvPlayerContext) {
-				polyvPlayerContext.exitFullScreen();
-			}
-			
-			this.enableAutoRotation = false;
-			this.photoPopup = true;
-			this.isTaking = true;
-			uni.setKeepScreenOn({
-			    keepScreenOn: true
-			});
-			uni.authorize({
-			     scope: 'scope.camera',
-			     success() {
-			        
-			     }
-			 })
-		},
-		/**
-		 * 人脸匹配
-		 */
-		faceRecognition() {
-			return new Promise(resolve => {
-				let fileSystem = uni.getFileSystemManager();
-				fileSystem.readFile({
-				  filePath: `${this.avatarUrl}`,
-				  encoding: 'base64',
-				  position: 0,
-				  success:(res) => {
-					  console.log(res)
-					  let base64 = 'data:image/jpg;base64,' + res.data;
-				  },
-				  fail(err) {
-					console.error(err,'err')
-				  }
-				})
-			})
-		},
+      }
+      if (newstate.detail.newstate == "ended") {
+        clearInterval(this.timer);
+        uni.showToast({
+          icon: "none",
+          title: "播放完毕",
+        });
+        this.postStudyRecord(1);
+        // uni.$emit('playNext') //播放重修下一节
+      }
+    },
+    //拍照
+    openPhoto() {
+      var polyvPlayerContext = this.selectComponent("#playerVideo");
+      if (polyvPlayerContext) {
+        polyvPlayerContext.exitFullScreen();
+      }
+
+      this.enableAutoRotation = false;
+      this.photoPopup = true;
+      this.isTaking = true;
+      uni.setKeepScreenOn({
+        keepScreenOn: true,
+      });
+      uni.authorize({
+        scope: "scope.camera",
+        success() {},
+      });
+    },
+    /**
+     * 人脸匹配
+     */
+    faceRecognition() {
+      return new Promise((resolve) => {
+        let fileSystem = uni.getFileSystemManager();
+        fileSystem.readFile({
+          filePath: `${this.avatarUrl}`,
+          encoding: "base64",
+          position: 0,
+          success: (res) => {
+            console.log(res);
+            let base64 = "data:image/jpg;base64," + res.data;
+
+            this.$api
+              .faceCertificationCompareFace({
+                imageA: base64,
+                orderGoodsId: this.orderGoodsId,
+                gradeId: this.gradeId,
+              })
+              .then((res) => {
+				  console.log(res,'res')
+                resolve(res.data.data);
+              });
+          },
+          fail(err) {
+            console.error(err, "err");
+          },
+        });
+      });
+    },
+
+    async submit() {
+      if (this.uploadLock) {
+        return;
+      }
+      this.uploadLock = true;
+
+      let compareFaceData = await this.faceRecognition();
+
+      if (compareFaceData == 0) {
+        uni.showToast({
+          title: "人脸匹配不通过,请重新拍照上传",
+          icon: "none",
+          duration: 2000,
+        });
 		
-		async submit() {
-			if(this.uploadLock) {
-				return;
-			}
-			this.uploadLock = true;
-			
-			const waitYS = await this.imageInfos();
-			this.postCoursePhotoRecord().then(res => {
-				this.photoHistoryList.push(this.photoIndex)
-				this.postStudyRecord(); //提交记录
-				//恢复播放
-				
-				uni.setKeepScreenOn({
-				    keepScreenOn: false
-				});
-				this.photoPopup = false;
-				this.uploadLock = false;
-				this.enableAutoRotation = true;
-				var polyvPlayerContext = this.selectComponent('#playerVideo');
-				if (polyvPlayerContext != null) {
-					polyvPlayerContext.play();
-				}
-			}).catch(err => {
-				uni.showToast({
-					title: '上传接口报错,请重新拍照上传' + err,
-					icon: 'none'
-				});
-				this.uploadLock = false;
-				this.openPhoto();
-			})
-				
-			
-		},
-		reTake() {
-			this.isTaking = true;
-		},
-		//确认拍照
-		takePhoto() {
-			var self = this;
-			const ctx = uni.createCameraContext();
-			ctx.takePhoto({
-				quality: 'high',
-				success: res => {
-					console.log(res.tempImagePath);
-					self.avatarUrl = res.tempImagePath;
-					this.isTaking = false;
-					// self.submit();
+		setTimeout(() => {
+			this.uploadLock = false;
+			this.openPhoto();
+		},2000)
+        return;
+      }
 
-					// self.photoPopup = false;
-					// self.enableAutoRotation = true;
-				},
-				fail: err => {
-					console.log(err);
-				}
-			});
-		},
-		playError(e) {
-			console.log(e)
-		},
-		//拍照报错
-		error(e) {
-			console.log(e.detail);
-		},
-		//关闭相机
-		closePhoto() {
-			this.photoPopup = false;
-			self.enableAutoRotation = true;
-		},
-		/**
-		 * 进入全屏
-		 */
-		fullscreenchange(event) {
-			console.log(event)
-			if(event.detail.direction == 'vertical') {
-				this.navShow = true;
-			} else if(event.detail.direction == 'horizontal') {
-				this.navShow = false;
-				
-			}
-		},
-		getGoodsDetail() {
-			let self = this;
-			this.$api.goodsDetail(this.goodsId).then(res => {
-				self.goodsData = res.data.data;
-				self.gradeId = self.goodsData.gradeId;
-				console.log(self.gradeId, "班级ID");
-				this.courseBusiness()
-				this.courseHandouts();
-				self.getMenuList();
-				self.getReMenuList(); //获取重修目录
-				setTimeout(function(){
-					if(!self.needProfileModal){
-						self.getGradeInfo()
-					}
-				},500)
-				
-				//获取节笔记
-				this.getNoteList();
-				if (self.goodsData.goodsPlayConfig) {
-					self.goodsPlayConfig = JSON.parse(self.goodsData.goodsPlayConfig);
-					if (self.goodsPlayConfig.autoPlay > 0) {
-						self.autoplay = true;
-					}
-					if (self.goodsPlayConfig.drag > 0) {
-						self.isAllowSeek = 'yes';
-					}
-					if (self.goodsPlayConfig.speed > 0) {
-						self.playbackRate = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0];
-					}
-				}
-				if (self.goodsData.goodsPhotographConfig) {
-					self.goodsPhotographConfig = JSON.parse(self.goodsData.goodsPhotographConfig);
-					if (self.goodsPhotographConfig.photoNum>0) {
-						self.photoNum = self.goodsPhotographConfig.photoNum
-						console.log(self.photoNum,777777)
-					}
-				}
-			});
-		},
-		startVideo() {
-			this.startStatus = true;
-		},
-		getAnswerList() {
-			let self = this;
-			this.$api.answerList({ courseId: this.courseId,goodsId: this.goodsId }).then(res => {
-				if (res.data.code == 200) {
-					self.answerList = res.data.rows;
-				}
-			});
-		},
-		getReMenuList() {
-			let self = this;
-			this.$api.reMenuList({ courseId: this.courseId, rebuild: 1, gradeId: this.gradeId }).then(res => {
-				if (res.data.code == 200) {
-					for (let i = 0; i < res.data.rows.length; i++) {
-						let item = res.data.rows[i];
-						item.down = true;
-						item.id = item.menuId;
-						item.name = item.menuName;
-					}
-					self.reMenuList = res.data.rows;
-					if(self.reMenuList.length>0){
-						this.showNotes = false;
-						self.list = [
-							
-							{
-								name: '目录'
-							},
-							{
-								name: '讲义'
-							},
-							{
-								name: '笔记'
-							},
-							{
-								name: '答疑'
-							},
-							{name:'重修目录'}
-						];
-						this.current = 0;
-					} else {
-						self.list = [
-							
-							{
-								name: '目录'
-							},
-							{
-								name: '讲义'
-							},
-							{
-								name: '笔记'
-							},
-							{
-								name: '答疑'
-							}
-						];
-						this.current = 0;
-					}
-				}
-			});
-		},
-		getMenuList() {
-			let self = this;
-			this.$api.reMenuList({ courseId: this.courseId, gradeId: this.gradeId }).then(res => {
-				if (res.data.code == 200) {
-					for (let i = 0; i < res.data.rows.length; i++) {
-						let item = res.data.rows[i];
-						item.down = true;
-						item.id = item.menuId;
-						item.name = item.menuName;
-						item.menuType = item.type;
-					}
-					self.menuList = res.data.rows;
-					
-					for(let i=0;i<res.data.rows.length;i++){
-						if(res.data.rows[i].type == 1) {
-							this.menuIndex = [i];
-							break;
-						} else if(res.data.rows[i].type == 2) {
-							this.menuIndex = [i];
-							break;
-						}
-					}
-				}
-			});
-		},
-		courseDetail() {
-			let self = this;
-			this.$api.courseDetail(this.courseId).then(res => {
-				if (res.data.code == 200) {
-					if(res.data.data.educationName == '继续教育') {
-						websocket.sendMsg('doCourse')
-					}
-					self.detail = res.data.data;
+      if (compareFaceData >= 80) {
+        const waitYS = await this.imageInfos();
+        this.postCoursePhotoRecord()
+          .then((res) => {
+            this.photoHistoryList.push(this.photoIndex);
+            this.postStudyRecord(); //提交记录
+            //恢复播放
+
+            uni.setKeepScreenOn({
+              keepScreenOn: false,
+            });
+            this.photoPopup = false;
+            this.uploadLock = false;
+            this.enableAutoRotation = true;
+            var polyvPlayerContext = this.selectComponent("#playerVideo");
+            if (polyvPlayerContext != null) {
+              polyvPlayerContext.play();
+            }
+          })
+          .catch((err) => {
+            uni.showToast({
+              title: "上传接口报错,请重新拍照上传" + err,
+              icon: "none",
+            });
+            this.uploadLock = false;
+            this.openPhoto();
+          });
+      }
+    },
+    reTake() {
+      this.isTaking = true;
+    },
+    //确认拍照
+    takePhoto() {
+      var self = this;
+      const ctx = uni.createCameraContext();
+      ctx.takePhoto({
+        quality: "high",
+        success: (res) => {
+          console.log(res.tempImagePath);
+          self.avatarUrl = res.tempImagePath;
+          this.isTaking = false;
+          // self.submit();
+
+          // self.photoPopup = false;
+          // self.enableAutoRotation = true;
+        },
+        fail: (err) => {
+          console.log(err);
+        },
+      });
+    },
+    playError(e) {
+      console.log(e);
+    },
+    //拍照报错
+    error(e) {
+      console.log(e.detail);
+    },
+    //关闭相机
+    closePhoto() {
+      this.photoPopup = false;
+      self.enableAutoRotation = true;
+    },
+    /**
+     * 进入全屏
+     */
+    fullscreenchange(event) {
+      console.log(event);
+      if (event.detail.direction == "vertical") {
+        this.navShow = true;
+      } else if (event.detail.direction == "horizontal") {
+        this.navShow = false;
+      }
+    },
+    getGoodsDetail() {
+      let self = this;
+      this.$api.goodsDetail(this.goodsId).then((res) => {
+        self.goodsData = res.data.data;
+        self.gradeId = self.goodsData.gradeId;
+        console.log(self.gradeId, "班级ID");
+        this.courseBusiness();
+        this.courseHandouts();
+        self.getMenuList();
+        self.getReMenuList(); //获取重修目录
+        setTimeout(function () {
+          if (!self.needProfileModal) {
+            self.getGradeInfo();
+          }
+        }, 500);
+
+        //获取节笔记
+        this.getNoteList();
+        if (self.goodsData.goodsPlayConfig) {
+          self.goodsPlayConfig = JSON.parse(self.goodsData.goodsPlayConfig);
+          if (self.goodsPlayConfig.autoPlay > 0) {
+            self.autoplay = true;
+          }
+          if (self.goodsPlayConfig.drag > 0) {
+            self.isAllowSeek = "yes";
+          }
+          if (self.goodsPlayConfig.speed > 0) {
+            self.playbackRate = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0];
+          }
+        }
+        if (self.goodsData.goodsPhotographConfig) {
+          self.goodsPhotographConfig = JSON.parse(
+            self.goodsData.goodsPhotographConfig
+          );
+          if (self.goodsPhotographConfig.photoNum > 0) {
+            self.photoNum = self.goodsPhotographConfig.photoNum;
+            console.log(self.photoNum, 777777);
+          }
+        }
+      });
+    },
+    startVideo() {
+      this.startStatus = true;
+    },
+    getAnswerList() {
+      let self = this;
+      this.$api
+        .answerList({ courseId: this.courseId, goodsId: this.goodsId })
+        .then((res) => {
+          if (res.data.code == 200) {
+            self.answerList = res.data.rows;
+          }
+        });
+    },
+    getReMenuList() {
+      let self = this;
+      this.$api
+        .reMenuList({
+          courseId: this.courseId,
+          rebuild: 1,
+          gradeId: this.gradeId,
+        })
+        .then((res) => {
+          if (res.data.code == 200) {
+            for (let i = 0; i < res.data.rows.length; i++) {
+              let item = res.data.rows[i];
+              item.down = true;
+              item.id = item.menuId;
+              item.name = item.menuName;
+            }
+            self.reMenuList = res.data.rows;
+            if (self.reMenuList.length > 0) {
+              this.showNotes = false;
+              self.list = [
+                {
+                  name: "目录",
+                },
+                {
+                  name: "讲义",
+                },
+                {
+                  name: "笔记",
+                },
+                {
+                  name: "答疑",
+                },
+                { name: "重修目录" },
+              ];
+              this.current = 0;
+            } else {
+              self.list = [
+                {
+                  name: "目录",
+                },
+                {
+                  name: "讲义",
+                },
+                {
+                  name: "笔记",
+                },
+                {
+                  name: "答疑",
+                },
+              ];
+              this.current = 0;
+            }
+          }
+        });
+    },
+    getMenuList() {
+      let self = this;
+      this.$api
+        .reMenuList({ courseId: this.courseId, gradeId: this.gradeId })
+        .then((res) => {
+          if (res.data.code == 200) {
+            for (let i = 0; i < res.data.rows.length; i++) {
+              let item = res.data.rows[i];
+              item.down = true;
+              item.id = item.menuId;
+              item.name = item.menuName;
+              item.menuType = item.type;
+            }
+            self.menuList = res.data.rows;
+
+            for (let i = 0; i < res.data.rows.length; i++) {
+              if (res.data.rows[i].type == 1) {
+                this.menuIndex = [i];
+                break;
+              } else if (res.data.rows[i].type == 2) {
+                this.menuIndex = [i];
+                break;
+              }
+            }
+          }
+        });
+    },
+    courseDetail() {
+      let self = this;
+      this.$api.courseDetail(this.courseId).then((res) => {
+        if (res.data.code == 200) {
+          if (res.data.data.educationName == "继续教育") {
+			  this.lockTimer = setInterval(() => {
+				  this.$api.lockLockAction({
+					action:'jxjy'
+				  }).then(res => {
 					
-				}
-			});
-		},
-		open(item) {
-			item.showChildren = !item.showChildren;
-		},
-		change(index) {
-			this.current = index;
-		},
-		openDocument() {
-			let self = this;
-			let url = this.$method.splitImgHost(this.courseHandoutsData.handoutsUrl)
-			console.log(url)
-			uni.downloadFile({
-			  url: url,
-			  success: function (res) {
-				  console.log(999)
-			    var filePath = res.tempFilePath;
-			    uni.openDocument({
-			      filePath: filePath,
-			      showMenu: self.courseHandoutsData.canDownload == 1 ? true : false,
-			      success: function (res) {
-			        console.log(res,'打开文档成功');
-			      },
-				  fail:function(err) {
-					  console.log(err)
-					uni.showToast({
-						icon:'none',
-						title:'文档地址错误'
-					})
-				  }
-			    });
-			  },
-			  fail:(err) => {
-				  uni.showModal({
-				  	title:'提示',
-					content:'文档错误,'+err.errMsg,
-					showCancel:false
 				  })
-			  }
-			});
-		}
-	}
+			  },10000)
+			  
+            // websocket.sendMsg("doCourse");
+          }
+          self.detail = res.data.data;
+        }
+      });
+    },
+    open(item) {
+      item.showChildren = !item.showChildren;
+    },
+    change(index) {
+      this.current = index;
+    },
+    openDocument() {
+      let self = this;
+      let url = this.$method.splitImgHost(this.courseHandoutsData.handoutsUrl);
+      console.log(url);
+      uni.downloadFile({
+        url: url,
+        success: function (res) {
+          console.log(999);
+          var filePath = res.tempFilePath;
+          uni.openDocument({
+            filePath: filePath,
+            showMenu: self.courseHandoutsData.canDownload == 1 ? true : false,
+            success: function (res) {
+              console.log(res, "打开文档成功");
+            },
+            fail: function (err) {
+              console.log(err);
+              uni.showToast({
+                icon: "none",
+                title: "文档地址错误",
+              });
+            },
+          });
+        },
+        fail: (err) => {
+          uni.showModal({
+            title: "提示",
+            content: "文档错误," + err.errMsg,
+            showCancel: false,
+          });
+        },
+      });
+    },
+  },
 };
 </script>
 
 <style lang="scss" scope>
 .polyv_detail {
-	display: flex;
-	flex-direction: column;
-	height:100vh;
-	
-	.box {
-		flex:1;
-		overflow: hidden;
-		margin: 20rpx;
-		
-		.box_in {
-			height:100%;
-		}
-	}
-}
-.btnSet{
-	width: 440rpx;
-	height: 80rpx;
-	background: #007AFF;
-	border-radius: 40rpx;
-	color: #FFFFFF;
-	font-size: 28rpx;
-	line-height: 80rpx;
+  display: flex;
+  flex-direction: column;
+  height: 100vh;
+
+  .box {
+    flex: 1;
+    overflow: hidden;
+    margin: 20rpx;
+
+    .box_in {
+      height: 100%;
+    }
+  }
+}
+.btnSet {
+  width: 440rpx;
+  height: 80rpx;
+  background: #007aff;
+  border-radius: 40rpx;
+  color: #ffffff;
+  font-size: 28rpx;
+  line-height: 80rpx;
 }
 .btnReply {
-	width: 80rpx;
-	height: 40rpx;
-	background: #e3f0ff;
-	border-radius: 16rpx;
-	text-align: center;
-	color: #007aff;
+  width: 80rpx;
+  height: 40rpx;
+  background: #e3f0ff;
+  border-radius: 16rpx;
+  text-align: center;
+  color: #007aff;
 }
 .btnDel {
-	width: 80rpx;
-	height: 40rpx;
-	background: #ffedf0;
-	border-radius: 16rpx;
-	text-align: center;
-	color: #ff2d55;
+  width: 80rpx;
+  height: 40rpx;
+  background: #ffedf0;
+  border-radius: 16rpx;
+  text-align: center;
+  color: #ff2d55;
 }
 .btnReply {
-	width: 80rpx;
-	height: 40rpx;
-	background: #e3f0ff;
-	border-radius: 16rpx;
-	font-size: 24rpx;
+  width: 80rpx;
+  height: 40rpx;
+  background: #e3f0ff;
+  border-radius: 16rpx;
+  font-size: 24rpx;
 }
 .lecture-box {
-	display: flex;
-	align-items: center;
-	height: 80rpx;
-	background: #FFFFFF;
-	border-radius: 16rpx 16rpx 16rpx 16rpx;
-	
-	.title {
-		padding:10rpx;
-		flex:1;
-		overflow: hidden;
-		text-overflow: ellipsis;
-		white-space: nowrap;
-		color:#333;
-		font-weight: bold;
-		font-size: 32rpx;
-	}
-	
-	.btn {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		width:80rpx;
-		height:80rpx;
-		background: #FFFFFF;
-		box-shadow: -4rpx 0rpx 4rpx 0rpx rgba(0,0,0,0.1);
-		border-radius: 16rpx 16rpx 16rpx 16rpx;
-	}
+  display: flex;
+  align-items: center;
+  height: 80rpx;
+  background: #ffffff;
+  border-radius: 16rpx 16rpx 16rpx 16rpx;
+
+  .title {
+    padding: 10rpx;
+    flex: 1;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    color: #333;
+    font-weight: bold;
+    font-size: 32rpx;
+  }
+
+  .btn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 80rpx;
+    height: 80rpx;
+    background: #ffffff;
+    box-shadow: -4rpx 0rpx 4rpx 0rpx rgba(0, 0, 0, 0.1);
+    border-radius: 16rpx 16rpx 16rpx 16rpx;
+  }
 }
 
 .lecture-content {
-	background:#fff;
-	margin-top:10rpx;
-	padding:10rpx;
-	border-radius:16rpx;
+  background: #fff;
+  margin-top: 10rpx;
+  padding: 10rpx;
+  border-radius: 16rpx;
 }
 .photoBox {
-	background-color: #FFFFFF;
-	border-radius: 32px 32px 0px 0px;
-	.photoTop {
-		height: 74rpx;
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		padding: 0rpx 38rpx;
-		.sqzz {
-			width: 28rpx;
-			height: 28rpx;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-		}
-		.centersq {
-			color: #333;
-			font-size: 30rpx;
-			font-weight: 500;
-		}
-	}
-	.photoCenter {
-		width: 750rpx;
-		height: 979rpx;
-		position: relative;
-		.custom {
-			width: 750rpx;
-			height: 979rpx;
-			position: absolute;
-			z-index: 1000;
-			top: 0;
-			left: 0;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-	
-	.btns {
-		display: flex;
-		
-		
-		.btnResult {
-			height: 100rpx;
-			flex:1;
-			background-color: #07c160;
-			text-align: center;
-			line-height: 100rpx;
-			color: #fff;
-			font-size: 32rpx;
-			font-weight: bold;
-		}
-	}
+  background-color: #ffffff;
+  border-radius: 32px 32px 0px 0px;
+  .photoTop {
+    height: 74rpx;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 0rpx 38rpx;
+    .sqzz {
+      width: 28rpx;
+      height: 28rpx;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
+    .centersq {
+      color: #333;
+      font-size: 30rpx;
+      font-weight: 500;
+    }
+  }
+  .photoCenter {
+    width: 750rpx;
+    height: 979rpx;
+    position: relative;
+    .custom {
+      width: 750rpx;
+      height: 979rpx;
+      position: absolute;
+      z-index: 1000;
+      top: 0;
+      left: 0;
+      image {
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
+
+  .btns {
+    display: flex;
+
+    .btnResult {
+      height: 100rpx;
+      flex: 1;
+      background-color: #07c160;
+      text-align: center;
+      line-height: 100rpx;
+      color: #fff;
+      font-size: 32rpx;
+      font-weight: bold;
+    }
+  }
 }
 .chat_box {
-	display: flex;
-	padding: 20rpx;
-	justify-content: space-between;
+  display: flex;
+  padding: 20rpx;
+  justify-content: space-between;
 }
 .chat3 {
-	font-size: 30rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #666666;
-	margin-top: 10rpx;
+  font-size: 30rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #666666;
+  margin-top: 10rpx;
 }
 .chat2 {
-	font-size: 20rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #999999;
-	margin-top: 10rpx;
+  font-size: 20rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #999999;
+  margin-top: 10rpx;
 }
 .chat1 {
-	font-size: 24rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #333333;
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #333333;
 }
 .leftPadding {
-	margin-left: 8rpx;
+  margin-left: 8rpx;
 }
 .t2Content {
-	font-size: 28rpx;
-	font-family: PingFang SC;
-	font-weight: bold;
-	color: #999999;
-	line-height: 48rpx;
+  font-size: 28rpx;
+  font-family: PingFang SC;
+  font-weight: bold;
+  color: #999999;
+  line-height: 48rpx;
 }
 .tBox2 {
-	display: flex;
-	padding-top: 10rpx;
-	color: #333333;
-	font-size: 30rpx;
+  display: flex;
+  padding-top: 10rpx;
+  color: #333333;
+  font-size: 30rpx;
 }
 .tBox {
-	display: flex;
-	align-items: center;
-	padding-top: 10rpx;
+  display: flex;
+  align-items: center;
+  padding-top: 10rpx;
 }
 .title {
-	font-size: 24rpx;
-	color: #999999;
+  font-size: 24rpx;
+  color: #999999;
 }
 
 page {
-	// padding-top: 10px;
-	// padding-top: constant(safe-area-inset-top);
-	// padding-top: env(safe-area-inset-top);
+  // padding-top: 10px;
+  // padding-top: constant(safe-area-inset-top);
+  // padding-top: env(safe-area-inset-top);
 }
 .inputBottom {
-	position: fixed;
-	left: 0;
-	bottom: 0;
-	background: #ffffff;
-	height: 98rpx;
-	display: flex;
-	align-items: center;
-	width: 100%;
-	
-	.flex_auto {
-		flex:1;
-		margin-left: 10% ;
-		
-		.input {
-			height:60rpx;
-		}
-	}
-	
-	.btn {
-		color: #007AFF;font-size: 30rpx;font-weight: bold;width: 15%;text-align: center;
-	}
+  position: fixed;
+  left: 0;
+  bottom: 0;
+  background: #ffffff;
+  height: 98rpx;
+  display: flex;
+  align-items: center;
+  width: 100%;
+
+  .flex_auto {
+    flex: 1;
+    margin-left: 10%;
+
+    .input {
+      height: 60rpx;
+    }
+  }
+
+  .btn {
+    color: #007aff;
+    font-size: 30rpx;
+    font-weight: bold;
+    width: 15%;
+    text-align: center;
+  }
 }
 .noteBox {
-	width: 100%;
-	background: #ffffff;
-	padding: 10rpx;
-	border-radius: 16rpx;
+  width: 100%;
+  background: #ffffff;
+  padding: 10rpx;
+  border-radius: 16rpx;
 }
 .dateBox {
-	width: 216rpx;
-	height: 48rpx;
-	background: #ffffff;
-	border-radius: 24rpx;
-	font-size: 24rpx;
-	color: #666666;
-	text-align: center;
-	line-height: 48rpx;
-	margin: 20rpx 0;
+  width: 216rpx;
+  height: 48rpx;
+  background: #ffffff;
+  border-radius: 24rpx;
+  font-size: 24rpx;
+  color: #666666;
+  text-align: center;
+  line-height: 48rpx;
+  margin: 20rpx 0;
 }
 .t_content1 {
-	color: #007aff;
-	margin-left: 10rpx;
+  color: #007aff;
+  margin-left: 10rpx;
 }
 .tag1 {
-	border: 2rpx solid #007aff;
-	border-radius: 8rpx;
-	font-size: 20rpx;
-	color: #007aff;
-	padding: 5rpx;
+  border: 2rpx solid #007aff;
+  border-radius: 8rpx;
+  font-size: 20rpx;
+  color: #007aff;
+  padding: 5rpx;
 }
 .b_title {
-	color: #333333;
-	font-size: 30rpx;
-	font-weight: bold;
+  color: #333333;
+  font-size: 30rpx;
+  font-weight: bold;
 }
 page {
-	background: #eaeef1;
+  background: #eaeef1;
 }
 .menuBox {
-	width: 100%;
-	background: #ffffff;
-	border-radius: 16rpx;
-	padding: 20rpx;
-	margin-bottom: 20rpx;
+  width: 100%;
+  background: #ffffff;
+  border-radius: 16rpx;
+  padding: 20rpx;
+  margin-bottom: 20rpx;
 }
 .btnspric {
-	border-top: 1rpx solid #eee;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	height: 108rpx;
-	padding-left: 43rpx;
-	padding-right: 32rpx;
+  border-top: 1rpx solid #eee;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  height: 108rpx;
+  padding-left: 43rpx;
+  padding-right: 32rpx;
 }
 .btnspric > .lefprL {
-	font-size: 36rpx;
-	color: #0c141f;
-	font-weight: bold;
+  font-size: 36rpx;
+  color: #0c141f;
+  font-weight: bold;
 }
 .btnspric > .lefprR {
-	padding: 0rpx 24rpx;
-	height: 60rpx;
-	line-height: 60rpx;
-	text-align: center;
-	color: #fff;
-	background: #32467b;
-	border-radius: 24rpx;
-	box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
+  padding: 0rpx 24rpx;
+  height: 60rpx;
+  line-height: 60rpx;
+  text-align: center;
+  color: #fff;
+  background: #32467b;
+  border-radius: 24rpx;
+  box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
 }
 .yhj,
 .hdyhj {
-	padding: 24rpx 29rpx 24rpx 34rpx;
+  padding: 24rpx 29rpx 24rpx 34rpx;
 }
 .yhj {
-	border-bottom: 16rpx solid #f9f9f9;
+  border-bottom: 16rpx solid #f9f9f9;
 }
 .yhjtit {
-	font-size: 30rpx;
-	color: #0c141f;
-	font-weight: 500;
-	margin-bottom: 14rpx;
+  font-size: 30rpx;
+  color: #0c141f;
+  font-weight: 500;
+  margin-bottom: 14rpx;
 }
 .yhjList {
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	margin-bottom: 14rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 14rpx;
 }
 .yhjList > .yhjLefts {
-	display: flex;
-	align-items: center;
+  display: flex;
+  align-items: center;
 }
 .yhjLefts > .yhl {
-	color: #32467b;
-	font-size: 30rpx;
-	margin-right: 31rpx;
+  color: #32467b;
+  font-size: 30rpx;
+  margin-right: 31rpx;
 }
 .yhjLefts > .yhbq {
-	font-size: 24rpx;
-	color: #ff9500;
-	border-radius: 18rpx;
-	background-color: rgba(255, 149, 0, 0.2);
-	border: 2rpx solid #ff9500;
-	height: 38rpx;
-	line-height: 38rpx;
-	padding: 0rpx 16rpx;
+  font-size: 24rpx;
+  color: #ff9500;
+  border-radius: 18rpx;
+  background-color: rgba(255, 149, 0, 0.2);
+  border: 2rpx solid #ff9500;
+  height: 38rpx;
+  line-height: 38rpx;
+  padding: 0rpx 16rpx;
 }
 .ts {
-	font-size: 24rpx;
-	color: #999;
-	margin: 14rpx 0rpx;
-	padding-right: 29rpx;
-	padding-left: 34rpx;
+  font-size: 24rpx;
+  color: #999;
+  margin: 14rpx 0rpx;
+  padding-right: 29rpx;
+  padding-left: 34rpx;
 }
 .yh {
-	padding-top: 20rpx;
+  padding-top: 20rpx;
 }
 .yh > .yhtitle {
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	padding-right: 29rpx;
-	padding-left: 34rpx;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding-right: 29rpx;
+  padding-left: 34rpx;
 }
 .priceBxs {
-	display: flex;
-	align-items: center;
+  display: flex;
+  align-items: center;
 }
 .priceBxs > .pricleft {
-	border-radius: 24rpx;
-	border: 1rpx solid #e91313;
-	background-color: rgba(233, 19, 19, 0.1);
-	padding: 0rpx 18rpx;
-	height: 49rpx;
-	line-height: 49rpx;
-	text-align: center;
-	font-size: 30rpx;
-	font-weight: 500;
-	color: #e91313;
-	margin-right: 13rpx;
+  border-radius: 24rpx;
+  border: 1rpx solid #e91313;
+  background-color: rgba(233, 19, 19, 0.1);
+  padding: 0rpx 18rpx;
+  height: 49rpx;
+  line-height: 49rpx;
+  text-align: center;
+  font-size: 30rpx;
+  font-weight: 500;
+  color: #e91313;
+  margin-right: 13rpx;
 }
 .topBox {
-	padding: 32rpx 32rpx 24rpx;
-	border-bottom: 1rpx solid #eeeeee;
+  padding: 32rpx 32rpx 24rpx;
+  border-bottom: 1rpx solid #eeeeee;
 }
 .topBox > .boldFonstType {
-	font-weight: 500;
-	font-size: 30rpx;
-	margin: 16rpx 0rpx 23rpx;
+  font-weight: 500;
+  font-size: 30rpx;
+  margin: 16rpx 0rpx 23rpx;
 }
 .topBox > .firstTopL {
-	display: flex;
-	align-items: center;
+  display: flex;
+  align-items: center;
 }
 .topBox > .firstTopL > .imageBs {
-	width: 331rpx;
-	height: 160rpx;
-	border-radius: 6rpx;
-	overflow: hidden;
-	margin-right: 8rpx;
-	box-shadow: 0rpx 6rpx 6rpx 0rpx rgba(47, 67, 121, 0.08);
+  width: 331rpx;
+  height: 160rpx;
+  border-radius: 6rpx;
+  overflow: hidden;
+  margin-right: 8rpx;
+  box-shadow: 0rpx 6rpx 6rpx 0rpx rgba(47, 67, 121, 0.08);
 }
 .topBox > .firstTopL > .imageBs > image {
-	width: 100%;
-	height: 100%;
+  width: 100%;
+  height: 100%;
 }
 .topBox > .firstTopL > .textBs {
-	font-size: 30rpx;
-	font-weight: bold;
-	color: #0c141f;
+  font-size: 30rpx;
+  font-weight: bold;
+  color: #0c141f;
 }
 .content {
-	padding: 24rpx;
-	text-align: left;
+  padding: 24rpx;
+  text-align: left;
 }
 .catalogBox {
-	display: flex;
-	align-items: center;
-	flex-wrap: nowrap;
-	overflow-x: auto;
-	padding-left: 38rpx;
-	max-height: 305rpx;
-	overflow-y: auto;
-	transition: all 0.4s;
+  display: flex;
+  align-items: center;
+  flex-wrap: nowrap;
+  overflow-x: auto;
+  padding-left: 38rpx;
+  max-height: 305rpx;
+  overflow-y: auto;
+  transition: all 0.4s;
 }
 .catalogBox > .catalogA {
-	min-width: 200rpx;
-	height: 48rpx;
-	line-height: 48rpx;
-	// text-align: center;
-	border: 2rpx solid transparent;
-	white-space: nowrap;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	word-break: break-all;
-	border-radius: 10rpx;
-	background: rgba(22, 119, 255, 0.05);
-	padding-left: 19rpx;
-	box-sizing: border-box;
-	padding-right: 15rpx;
-	margin-right: 16rpx;
-	margin-bottom: 20rpx;
-	margin-top: 15rpx;
-	font-size: 24rpx;
-	color: #666;
+  min-width: 200rpx;
+  height: 48rpx;
+  line-height: 48rpx;
+  // text-align: center;
+  border: 2rpx solid transparent;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  word-break: break-all;
+  border-radius: 10rpx;
+  background: rgba(22, 119, 255, 0.05);
+  padding-left: 19rpx;
+  box-sizing: border-box;
+  padding-right: 15rpx;
+  margin-right: 16rpx;
+  margin-bottom: 20rpx;
+  margin-top: 15rpx;
+  font-size: 24rpx;
+  color: #666;
 }
 .catalogBox > .activesq {
-	border-color: #1677ff;
+  border-color: #1677ff;
 }
 .changeCatalogBox {
-	display: block;
+  display: block;
 }
 .catalogBox::-webkit-scrollbar {
-	display: none; /* Chrome Safari */
+  display: none; /* Chrome Safari */
 }
 .price_t2 {
-	font-size: 18rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	text-decoration: line-through;
-	color: #999999;
+  font-size: 18rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  text-decoration: line-through;
+  color: #999999;
 }
 .price_t1 {
-	font-size: 33rpx;
-	font-family: PingFang SC;
-	font-weight: bold;
-	color: #e91313;
+  font-size: 33rpx;
+  font-family: PingFang SC;
+  font-weight: bold;
+  color: #e91313;
 }
 .sc_t {
-	font-size: 22rpx;
-	color: #000000;
+  font-size: 22rpx;
+  color: #000000;
 }
 .sc {
-	width: 29rpx;
-	height: 29rpx;
+  width: 29rpx;
+  height: 29rpx;
 }
 .buy {
-	width: 138rpx;
-	height: 48rpx;
-	line-height: 48rpx;
-	background: #32467b;
-	border-radius: 10rpx;
-	color: #ffffff;
-	font-size: 28rpx;
-	text-align: center;
-	vertical-align: middle;
-	position: absolute;
-	right: 30rpx;
+  width: 138rpx;
+  height: 48rpx;
+  line-height: 48rpx;
+  background: #32467b;
+  border-radius: 10rpx;
+  color: #ffffff;
+  font-size: 28rpx;
+  text-align: center;
+  vertical-align: middle;
+  position: absolute;
+  right: 30rpx;
 }
 .video_body {
-	padding-bottom: 96rpx;
+  padding-bottom: 96rpx;
 }
 .footer_tab {
-	position: fixed;
-	bottom: 0;
-	height: 96rpx;
-	width: 100%;
-	background-color: #ffffff;
+  position: fixed;
+  bottom: 0;
+  height: 96rpx;
+  width: 100%;
+  background-color: #ffffff;
 }
 .tj_box {
-	width: 50%;
-	display: inline-block;
-	text-align: center;
-	margin: 10rpx 0;
+  width: 50%;
+  display: inline-block;
+  text-align: center;
+  margin: 10rpx 0;
 }
 .teacher_t {
-	font-size: 24rpx;
-	font-family: PingFang SC;
-	font-weight: 400;
-	color: #666666;
-	line-height: 36rpx;
-	margin-left: 15rpx;
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  font-weight: 400;
+  color: #666666;
+  line-height: 36rpx;
+  margin-left: 15rpx;
 }
 .teacher_img {
-	width: 87rpx;
-	height: 129rpx;
+  width: 87rpx;
+  height: 129rpx;
 }
 .t2 {
-	font-size: 24rpx;
-	font-family: PingFang SC;
-	color: #666666;
-	line-height: 36rpx;
-	margin: 15rpx;
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  color: #666666;
+  line-height: 36rpx;
+  margin: 15rpx;
 }
 .r_t2 {
-	width: 201rpx;
-	height: 49rpx;
-	background: rgba(22, 119, 255, 0.05);
-	border: 1rpx solid #32467b;
-	border-radius: 16rpx;
-	color: #666666;
-	font-size: 23rpx;
-	text-align: center;
-	display: flex;
-	align-items: center;
-	padding: 5rpx;
+  width: 201rpx;
+  height: 49rpx;
+  background: rgba(22, 119, 255, 0.05);
+  border: 1rpx solid #32467b;
+  border-radius: 16rpx;
+  color: #666666;
+  font-size: 23rpx;
+  text-align: center;
+  display: flex;
+  align-items: center;
+  padding: 5rpx;
 }
 .scroll_box {
-	width: 100%;
-	height: 60rpx;
-	background: #ffffff;
-	box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
-	white-space: nowrap;
-	overflow: hidden;
-	margin: 15rpx 0;
+  width: 100%;
+  height: 60rpx;
+  background: #ffffff;
+  box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
+  white-space: nowrap;
+  overflow: hidden;
+  margin: 15rpx 0;
 }
 .r_sliper {
-	padding: 0 20rpx;
+  padding: 0 20rpx;
 }
 .top_line {
-	width: 6rpx;
-	height: 22rpx;
-	background: #32467b;
-	margin-right: 10rpx;
+  width: 6rpx;
+  height: 22rpx;
+  background: #32467b;
+  margin-right: 10rpx;
 }
 .video_t2 {
-	font-size: 24rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #666666;
+  font-size: 24rpx;
+  font-family: PingFang SC;
+  font-weight: 500;
+  color: #666666;
 }
 .video_t1 {
-	height: 80rpx;
-	color: #333333;
-	line-height: 80rpx;
-	font-size: 30rpx;
-	font-family: PingFang SC;
-	font-weight: bold;
-	color: #333333;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	white-space: nowrap;
+  height: 80rpx;
+  color: #333333;
+  line-height: 80rpx;
+  font-size: 30rpx;
+  font-family: PingFang SC;
+  font-weight: bold;
+  color: #333333;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
 
 .notice_wrap {
-	height:80rpx;
-	display: flex;
-	align-items: center;
-	justify-content: flex-end;
-	
-	.video_t1_t {
-		width:100%;
-		height:40rpx;
-		line-height: 40rpx;
-		text-align: center;
-		background:rgba(245,154,35,1);
-		color:#333;
-		border-radius:10rpx;
-		font-size: 24rpx;
-	}
+  height: 80rpx;
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+
+  .video_t1_t {
+    width: 100%;
+    height: 40rpx;
+    line-height: 40rpx;
+    text-align: center;
+    background: rgba(245, 154, 35, 1);
+    color: #333;
+    border-radius: 10rpx;
+    font-size: 24rpx;
+  }
 }
 .video_play {
-	position: absolute;
-	width: 95rpx;
-	height: 95rpx;
-	top: 0;
-	left: 0;
-	right: 0;
-	bottom: 0;
-	margin: auto;
+  position: absolute;
+  width: 95rpx;
+  height: 95rpx;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  margin: auto;
 }
 .video_box {
-	position: relative;
-	
-	.video-toast {
-		position:absolute;
-		width: 686rpx;
-		height: 80rpx;
-		background: rgba(0,0,0,0.6);
-		border-radius: 24rpx;
-		bottom:100rpx;
-		left:50%;
-		transform: translateX(-50%);
-		color:#fff;
-		display: flex;
-		font-size: 26rpx;
-		align-items: center;
-		overflow:visible;
-		
-		&__text {
-			flex:1;
-			margin-left:40rpx;
-		}
-		
-		
-		
-		&__btn {
-			width:180rpx;
-			text-align: center;
-			border-left:1rpx solid #fff;
-		}
-	}
-	
-	.video-toast__close {
-		position:absolute;
-		right:32rpx;
-		bottom:184rpx;
-		width: 40rpx;
-		height: 40rpx;
-		line-height: 40rpx;
-		text-align: center;
-		background: rgba(0,0,0,0.6);
-		border-radius:50%;
-		color:rgba(255,255,255,0.3)
-	}
+  position: relative;
+
+  .video-toast {
+    position: absolute;
+    width: 686rpx;
+    height: 80rpx;
+    background: rgba(0, 0, 0, 0.6);
+    border-radius: 24rpx;
+    bottom: 100rpx;
+    left: 50%;
+    transform: translateX(-50%);
+    color: #fff;
+    display: flex;
+    font-size: 26rpx;
+    align-items: center;
+    overflow: visible;
+
+    &__text {
+      flex: 1;
+      margin-left: 40rpx;
+    }
+
+    &__btn {
+      width: 180rpx;
+      text-align: center;
+      border-left: 1rpx solid #fff;
+    }
+  }
+
+  .video-toast__close {
+    position: absolute;
+    right: 32rpx;
+    bottom: 184rpx;
+    width: 40rpx;
+    height: 40rpx;
+    line-height: 40rpx;
+    text-align: center;
+    background: rgba(0, 0, 0, 0.6);
+    border-radius: 50%;
+    color: rgba(255, 255, 255, 0.3);
+  }
 }
 .rotoct {
-	transform: rotate(90deg);
+  transform: rotate(90deg);
 }
 
 .notice_modal {
-	.content {
-		width:100%;
-		height:100%;
-		padding:20rpx;
-		
-		.title {
-			color:#333;
-			line-height: 40rpx;
-			font-size: 30rpx;
-			text-align: center;
-			font-weight: bold;
-		}
-		.text {
-			line-height: 40rpx;
-		}
-	}
+  .content {
+    width: 100%;
+    height: 100%;
+    padding: 20rpx;
+
+    .title {
+      color: #333;
+      line-height: 40rpx;
+      font-size: 30rpx;
+      text-align: center;
+      font-weight: bold;
+    }
+    .text {
+      line-height: 40rpx;
+    }
+  }
 }
 </style>