Quellcode durchsuchen

Merge branch 'dev' of http://120.79.166.78:19005/zhongzheng-edu/saas_miniprogram into dev

xiexaing vor 1 Jahr
Ursprung
Commit
4f648c9906

+ 2 - 0
common/api.js

@@ -1,5 +1,6 @@
 import login from './httpList/login.js'
 import polyvVideo from './httpList/polyvVideo.js'
+import tcVideo from './httpList/tcVideo.js'
 import oss from './httpList/oss.js'
 import userInfo from './httpList/userInfo.js'
 import wxpay from './httpList/wxpay.js'
@@ -26,6 +27,7 @@ export default {
 	...mock,
 	...login,
 	...polyvVideo,
+	...tcVideo,
 	...oss,
 	...userInfo,
 	...system,

+ 2 - 2
common/config.js

@@ -7,8 +7,8 @@ const test = {
 	tenantId: "867735392558919680", //详粤云学堂
 	appid: "wxd3c8ae80cf43a305", 
 };
-// const index = 0; // 测试环境
-const index = 1; // 祥粤云学堂1 
+const index = 0; // 测试环境
+// const index = 1; // 祥粤云学堂1 
 // const index = 2 // 祥粤学堂
 // const index = 3 // 勘设云学堂1
 // const index = 4 // 中正学堂1

+ 8 - 0
common/httpList/course.js

@@ -193,6 +193,14 @@ export default {
 			data: data,
 		});
 	},
+	
+	courseSkipPort(data) {
+		return myRequest({
+			url: "/course/skipPort",
+			method: "get",
+			data: data,
+		});
+	},
 
 	polyvLiveHistoryChatMsgList(data) {
 		return myRequest({

+ 13 - 0
common/httpList/tcVideo.js

@@ -0,0 +1,13 @@
+import {
+	myRequest
+} from '../request.js'
+export default {
+	//获取腾讯视频播放凭证
+	tcVideoSign(data) {
+		return myRequest({
+			url: '/vod/video/sign/' + data,
+			method: 'get',
+			// noToken: true
+		})
+	}
+}

+ 1 - 0
common/methodTool.js

@@ -468,6 +468,7 @@ export default {
 		return result;
 	},
 	skipLogin(sign) {
+		console.error("join")
 		return api.skipLogin({
 			sign
 		}).then((res) => {

+ 3 - 3
components/myPlayer/polyvPlayer.vue

@@ -101,7 +101,7 @@
 					var playbackRate = JSON.parse(JSON.stringify(this.playbackRate))
 				}
 				const polyvPlayer = window.polyvPlayer;
-				console.log("this.allowSeek",this.allowSeek)
+				console.log("this.allowSeek", this.allowSeek)
 				this.$api.polyvVideoSign(this.vid).then(async (res) => {
 					let option = {
 						showLine: "off",
@@ -110,7 +110,7 @@
 						forceH5: true,
 						autoplay: this.autoplay, // 自动播放
 						ban_seek: this.allowSeek, // 是否禁止拖拽进度条
-						ban_skin_progress:this.allowSeek == 'on'?true:false,
+						ban_skin_progress: this.allowSeek == 'on' ? true : false,
 						speed: playbackRate, // 倍数
 						banSeekDeviation: 7, // 做兼容
 						teaser_show: 0,
@@ -148,7 +148,7 @@
 				// 设置播放时间会重复触发
 				if (this.needSeek) {
 					// #ifdef H5
-						this.videoToastShow = true;
+					this.videoToastShow = true;
 					// #endif
 					// #ifdef MP-WEIXIN
 					this.videoToastShow = true;

+ 380 - 0
components/myPlayer2/tcPlayer.vue

@@ -0,0 +1,380 @@
+<template>
+	<view>
+		<view class="player_box" style="width: 100%; height: 421rpx">
+			<view id="player2"></view>
+			<template v-if="videoToastShow">
+				<cover-view class="video-toast__close" @click="closeToast()">X</cover-view>
+				<cover-view class="video-toast">
+					<cover-view class="video-toast__text">您上次看到
+						{{ $method.secondToDate(ct) }},正在自动续播</cover-view>
+					<cover-view class="video-toast__btn" @click="restart()">从头播放</cover-view>
+				</cover-view>
+			</template>
+		</view>
+	</view>
+</template>
+
+<script>
+	var tcPlayerContext = null;
+	export default {
+		name: "SaasMiniprogramTcPlayer",
+		props: {
+			playFileId: {
+				type: String,
+				default: "",
+			},
+			autoplay: {
+				type: Boolean,
+				default: false,
+			},
+			progressControl: {
+				type: Boolean,
+				default: () => {
+					return false //是否禁止拖拽进度条,取值:{true,false}。
+				}
+			},
+			currentTime: {
+				type: Number,
+				default: 0,
+			},
+			playbackRate: {
+				type: Array,
+				default: () => {
+					return [1];
+				},
+			},
+		},
+		data() {
+			return {
+				vodPlayerJs: 'https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.v5.1.0.min.js',
+				videoToastShow: false,
+				config: null,
+				Elevideo: false,
+				needSeek: false, // 是否有记录需要跳转播放
+				playTime: 0,
+				PlayStart: 0, // 是否初次播放(因为腾讯视频没有初次播放事件)
+			};
+		},
+		created() {
+			tcPlayerContext = null;
+		},
+		mounted() {
+			if (this.fileId) {
+				this.changeFileId(this.fileId);
+			}
+		},
+		methods: {
+			loadPlayerScript(callback) {
+				if (!window.TCPlayer) {
+					const myScript = document.createElement("script");
+					myScript.setAttribute("src", this.vodPlayerJs);
+					myScript.onload = callback;
+					document.body.appendChild(myScript);
+				} else {
+					callback();
+				}
+			},
+			// 播放视频
+			loadPlayer() {
+				let playbackRateIndex = true;
+				let playbackRate = [1];
+				if (this.playbackRate.length <= 1) {
+					playbackRateIndex = false;
+				} else {
+					playbackRateIndex = true;
+					playbackRate = JSON.parse(JSON.stringify(this.playbackRate));
+				}
+				const TCPlayer = window.TCPlayer;
+				console.log("腾讯视频是否自动播放", this.autoplay)
+				console.log("腾讯视频是否允许拖拽进度条", this.progressControl)
+				this.$api.tcVideoSign(this.fileId).then(async (res) => {
+							console.log("请求腾讯视频参数", res)
+								let option = {
+									preload: "auto",
+									fakeFullscreen: true,
+									// licenseUrl: 'https://license.vod2.myqcloud.com/license/v2/1323759362_1/v_cube.license',
+									plugins: {
+										SafeCheck: true // 安全检查
+									},
+									autoplay: this.autoplay, // 自动播放
+									playbackRates: playbackRate,
+									controlBar: {
+										progressControl: this.progressControl, // 是否禁止拖拽(隐藏)进度条
+										playbackRateMenuButton: playbackRateIndex // 是否显示倍速切换的按钮。
+									},
+									// sources: [{
+									// 	src: 'https://1500005692.vod2.myqcloud.com/43843706vodtranscq1500005692/62656d94387702300542496289/v.f100240.m3u8',
+									// }],
+
+									fileID: this.fileId,
+									appID: res.data.data.appID,
+									psign: res.data.data.psign,
+									licenseUrl: res.data.data.licenseUrl,
+								};
+								if (tcPlayerContext) {
+									tcPlayerContext.loadVideoByID({
+										fileID: this.fileId,
+										appID: res.data.data.appID,
+										psign: res.data.data.psign
+									});
+									tcPlayerContext.currentTime(
+										this.currentTime || 0);
+								} else {
+									// 获取当前设备的信息
+									uni.getSystemInfo({
+										success: (res) => {
+											// 高度宽度的单位都是px 
+											// console.log(res.screenHeight); // 屏幕高度,包含导航栏
+											// console.log(res.windowHeight); // 能够使用的窗口高度,不包含导航栏
+											// console.log(res.screenWidth); // 屏幕宽度
+											// console.log(res.windowWidth); // 能够使用的窗口宽度
+											// 能够使用的窗口高度,将px转换rpx
+											// let windowHeight = (res.windowHeight * (750 / res.windowWidth));
+											option = {
+												width: res.windowWidth,
+												height: 218,
+												...option,
+											};
+										}
+									})
+									let player_tencent = document.createElement("video");
+									player_tencent.style.width = "100%";
+									player_tencent.id = "player-tencent";
+									player_tencent.setAttribute("playsinline", true); // 设置允许行内播放
+									player_tencent.setAttribute("webkit-playsinline", true); // 设置允许行内播放
+									document
+										.getElementById("player2")
+										.insertAdjacentElement("afterend", player_tencent);
+									tcPlayerContext = TCPlayer("player-tencent", option);
+									tcPlayerContext.currentTime(
+										this.currentTime || 0);
+									this.h5StateChange();
+								}
+							});
+					},
+					// 视频播放或由暂停恢复播放时触发
+					playing() {
+						console.log("腾讯视频恢复播放");
+						if (!this.PlayStart) {
+							this.onPlayStart();
+						}
+						// 设置播放时间会重复触发
+						if (this.needSeek) {
+							this.videoToastShow = true;
+							setTimeout(() => {
+								this.closeToast();
+							}, 3000);
+							this.$emit("studyLog");
+							this.needSeek = false;
+						}
+						if (!this.Elevideo) {
+							this.Elevideo = true;
+							tcPlayerContext.on("timeupdate", this.timeupdate);
+						}
+					},
+					// 视频恢复播放
+					resumeVideo() {
+						tcPlayerContext.play();
+					},
+					// 视频播放错误
+					playerError(err) {
+						console.log("腾讯视频播放err", err);
+					},
+					// 视频计时器
+					timeupdate(e) {
+						let time = 0;
+						if (!this.PlayStart) return
+						time = this.PlayStart == 1 ? (this.currentTime || 0) : this.playCurrentTime();
+						this.PlayStart++
+						this.$emit("timeupdate", time);
+					},
+					// 绑定事件
+					h5StateChange() {
+						let states = {
+							loadstart: "onPlayerInitOver", // 播放器初始化完毕时触发
+							pause: "pause", // 视频暂停时触发
+							playing: "playing", // 视频初次播放或由暂停恢复播放时触发
+							ended: "ended", // 当前视频播放完毕时触发
+							error: "playerError", // 播放出现错误时触发
+						};
+						let that = this;
+						for (const key in states) {
+							tcPlayerContext.on(key, function() {
+								that[states[key]] && that[states[key]](...arguments);
+								that.$emit(states[key]);
+							});
+						}
+					},
+					// 新增用户视频学习日志
+					studyLog() {},
+					// 选定时间播放
+					seekVideo(time) {
+						time = time || 0;
+						tcPlayerContext.currentTime(time);
+					},
+					// 重头播放
+					restart() {
+						this.seekVideo(0);
+						this.closeToast();
+					},
+					// 播放时刻
+					playCurrentTime() {
+						if (!tcPlayerContext) {
+							return 0;
+						}
+						return tcPlayerContext.currentTime();
+					},
+					// 视频总时长
+					getDuration() {
+						return tcPlayerContext.duration();
+					},
+					// 本次看的时长
+					playVideoTime() {
+						if (!tcPlayerContext) {
+							return 0;
+						}
+						return tcPlayerContext.currentTime();
+					},
+					// 暂停播放
+					playPause() {
+						if (!tcPlayerContext) {
+							return;
+						}
+						tcPlayerContext.pause();
+					},
+					// 退出全屏
+					exitFullScreen() {
+						if (!tcPlayerContext) {
+							return;
+						}
+						if (
+							!!(
+								document.webkitIsFullScreen ||
+								document.mozFullScreen ||
+								document.msFullscreenElement ||
+								document.fullscreenElement
+							)
+						) {
+							try {
+								var de = document;
+								if (de.exitFullscreen) {
+									de.exitFullscreen();
+								} else if (de.mozCancelFullScreen) {
+									de.mozCancelFullScreen();
+								} else if (de.webkitCancelFullScreen) {
+									de.webkitCancelFullScreen();
+								}
+							} catch (err) {}
+						}
+					},
+					// 视频加载完毕
+					onPlayerInitOver() {
+						console.log("腾讯视频加载完毕");
+						uni.$on("playPause", this.playPause);
+						this.$emit("loadedmetadata", tcPlayerContext);
+					},
+					// 视频初次播放
+					onPlayStart() {
+						console.log("腾讯视频初次播放");
+						this.PlayStart = 1;
+					},
+					// 切换视频
+					changeFileId(data) {
+						console.log('调用腾讯视频changeFileId')
+						if (!data) {
+							return;
+						}
+						this.config = this.$method.isObject(data) ?
+							data : {
+								fileId: data,
+								currentTime: this.currentTime
+							};
+						if (!this.fileId) {
+							return;
+						}
+						this.PlayStart = 0;
+						this.loadPlayerScript(this.loadPlayer);
+					},
+					closeToast() {
+						this.videoToastShow = false;
+					},
+			},
+			// 销毁组件
+			destroyed() {
+				if (tcPlayerContext) {
+					tcPlayerContext.off();
+					tcPlayerContext.dispose();
+				}
+				tcPlayerContext = null;
+			},
+			computed: {
+				fileId() {
+					return this.config ? this.config.fileId : this.playFileId;
+				},
+				ct() {
+					return (
+						(this.config ? this.config.currentTime : this.currentTime) ||
+						0
+					);
+				},
+			},
+			watch: {
+				ct: {
+					handler(time) {
+						if (time > 0) {
+							this.needSeek = true;
+							this.playTime = time;
+						}
+					},
+					immediate: true,
+				},
+			},
+		};
+</script>
+
+<style lang="scss" scoped>
+	.player_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;
+			z-index: 999;
+
+			&__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);
+		}
+	}
+</style>

+ 3 - 0
index.html

@@ -25,6 +25,7 @@
       href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css"
     />
     <link rel="stylesheet" href="<%= BASE_URL %>static/adapt-pc/pc.css" />
+	 <link href="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.min.css" rel="stylesheet"/>
   </head>
   <body>
     <noscript>
@@ -44,5 +45,7 @@
       type="text/JavaScript"
       src="<%= BASE_URL %>static/adapt-pc/pc.js"
     ></script>
+	<!--播放器脚本文件-->
+	<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.v5.1.0.min.js"></script>
   </body>
 </html>

+ 14 - 0
pages.json

@@ -961,6 +961,20 @@
 						}
 					}
 				},
+				{
+					"path": "webview/detaillink",
+					"style": {
+						"navigationBarTitleText": "课程详情",
+						"navigationStyle": "custom", // 隐藏系统导航栏
+						"app-plus": {
+							"titleNView": false, //禁用原生导航栏
+							"bounce": "none"
+						},
+						"mp-weixin": {
+							"pageOrientation": "auto"
+						} //横屏
+					}
+				},
 				{
 					"path": "mockRecord/mock_record",
 					"style": {

+ 3 - 1
pages/course/index.vue

@@ -155,7 +155,7 @@
 			}
 		},
 		computed: {
-			...mapGetters(["current"])
+			...mapGetters(["current","hideBuyState"])
 		},
 		methods: {
 			backFunc(item) {
@@ -196,6 +196,7 @@
 				this.$store.state.current = e
 			},
 			initList() {
+				if(!this.hideBuyState){
 				this.$api.goodsList({
 					...this.formData,
 					...this.activeData,
@@ -206,6 +207,7 @@
 					this.goodsList = this.goodsList.concat(res.data.rows)
 					this.total = res.data.total
 				});
+				}
 			},
 
 			tobuy(item) {

+ 18 - 13
pages/index/index.vue

@@ -20,7 +20,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="content" v-if="other.courseH5 == 1 && recommendCourse.length > 0">
+		<view class="content" v-if="!hideBuyState && other.courseH5 == 1 && recommendCourse.length > 0">
 			<view class="header_top">
 				<text class="left">推荐课程</text>
 				<u-tabs class="u-tabs" :list="recommendCourse" :current="currentCourse" bg-color="transparent"
@@ -66,7 +66,7 @@
 				</view>
 			</view>
 		</view>
-		<view class="content" v-if="other.bankH5 == 1 &&recommendBank.length > 0">
+		<view class="content" v-if="!hideBuyState && other.bankH5 == 1 &&recommendBank.length > 0">
 			<view class="header_top">
 				<text class="left">推荐题库</text>
 				<u-tabs class="u-tabs" :list="recommendBank" :current="currentBank" bg-color="transparent"
@@ -425,6 +425,16 @@
 				title: this.header.companyName,
 			});
 			// #endif
+			// #ifdef MP-WEIXIN
+			wx.getSystemInfo({
+				success: function(res) {
+					self.version = res.SDKVersion;
+					self.appCommonConfig({
+						version: self.version,
+					});
+				},
+			});
+			// #endif
 			this.getLocation();
 			this.recommendList()
 			this.dictObj;
@@ -440,20 +450,10 @@
 					});
 				}
 			}
-
-			wx.getSystemInfo({
-				success: function(res) {
-					self.version = res.SDKVersion;
-					console.log("该版本号为: ", self.version);
-				},
-			});
 		},
 		onShow() {
 			this.getInfo(); // 判断有没有关注公众号
 			this.isClickOff(); //关注公众号,每天最多显示1次;当天学员关闭弹窗后,无需再显示
-			this.appCommonConfig({
-				version: this.version,
-			});
 		},
 		onShareAppMessage(res) {
 			return {
@@ -470,7 +470,7 @@
 			}
 		},
 		computed: {
-			...mapGetters(["header", "other", "dictObj", "userInfo", "tenantId"]),
+			...mapGetters(["header", "other", "dictObj", "userInfo", "tenantId", "hideBuyState"]),
 			filterNum: function() {
 				return function(list) {
 					if (list && list.length > 0) {
@@ -529,6 +529,11 @@
 				});
 			},
 			tabListFunc(item) {
+				// let a = "http://192.168.1.213:8080/pages3/polyv/detail?id=214618&goodsId=490909&orderGoodsId=5535&gradeId=1854&periodWaitTime=1&isQ="
+				// uni.navigateTo({
+				// 	url:`/pages5/webview/sdlink?url=${a}`
+				// })
+				// return
 				if (item.type == 1) {
 					this.$store.state.current = item.url
 					uni.switchTab({

+ 137 - 7
pages/learn/index.vue

@@ -247,7 +247,7 @@
                 ">
 								温馨提示:当前班级正在申请中,正式开班后方可进行学习,请耐心等待
 							</div>
-							<div v-if="item.officialStatus != 1
+							<div v-if="item.officialStatus != 1 && false
 							">
 								推送失败原因:{{item.pushFailReason || '请先完善个人信息'}}
 							</div>
@@ -968,11 +968,49 @@
 
 				// 进入视频课
 				this.activeItem = item;
+				// let playSource = 1;
+				// this.$api
+				// 	.orderGetViewSign(item.orderGoodsId)
+				// 	.then((res) => {
+				// 		console.log('学习中心请求的viewSign', res.data.data.viewSign)
+				// 		playSource = res.data.data.viewSign;
+				// 	})
 				if (item.interfaceAccountId > 0) {
 					//学习账号已开通
 
 					if (item.learnStatus > 0) {
 						//跳转第三方h5
+						// if (playSource == 2) {
+						// 	// #ifdef H5
+						// 	uni.navigateTo({
+						// 		url: `/pages3/polyv/detail?goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}&gradeId=${item.gradeId}&isOther=1`,
+						// 	});
+						// 	// #endif
+						// 	// #ifdef MP-WEIXIN
+						// 	this.$api
+						// 		.courseSkipPort()
+						// 		.then((res) => {
+						// 			console.log("请求的域名", res.data.data.domain)
+						// 			let obj = {
+						// 				goodsId: item.goodsId,
+						// 				orderGoodsId: item.orderGoodsId,
+						// 				gradeId: item.gradeId,
+						// 				isOther: 1,
+						// 				skipPort: res.data.data.skipPort,
+						// 			}
+						// 			let webViewUrl = encodeURIComponent(res.data.data.domain +
+						// 				'/pages3/polyv/detail?obj=' +
+						// 				JSON.stringify(obj))
+						// 			uni.navigateTo({
+						// 				url: `/pages5/webview/detaillink?url=${webViewUrl}`
+						// 			})
+						// 		})
+						// 	// #endif
+						// } else {
+						// 	uni.navigateTo({
+						// 		url: `/pages3/polyv/detail?goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}&gradeId=${item.gradeId}&isOther=1`,
+						// 	});
+						// }
 						uni.navigateTo({
 							url: `/pages3/polyv/detail?goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}&gradeId=${item.gradeId}&isOther=1`,
 						});
@@ -1095,16 +1133,106 @@
 					}).then((res) => {
 						if (res.data.code == 200) {
 							if (res.data.total > 1) {
+								// if (playSource == 2) {
+								// 	// #ifdef H5
+								// 	uni.navigateTo({
+								// 		url: `/pages3/polyv/detail?id=''&goodsId=${
+								// 		          item.goodsId
+								// 		        }&orderGoodsId=${item.orderGoodsId}&gradeId=${
+								// 		          item.gradeId
+								// 		        }&periodWaitTime=${item.periodWaitTime ? 1 : ""}&isQ=${
+								// 		          item.orderYear ? 1 : ""
+								// 		        }`,
+								// 	});
+								// 	// #endif
+								// 	// #ifdef MP-WEIXIN
+								// 	this.$api
+								// 		.courseSkipPort()
+								// 		.then((res) => {
+								// 			console.log("请求的域名", res.data.data.domain)
+								// 			let obj = {
+								// 				id: '',
+								// 				goodsId: item.goodsId,
+								// 				orderGoodsId: item.orderGoodsId,
+								// 				gradeId: item.gradeId,
+								// 				periodWaitTime: item.periodWaitTime ? 1 : "",
+								// 				isQ: item.orderYear ? 1 : "",
+								// 				skipPort: res.data.data.skipPort
+								// 			}
+								// 			let webViewUrl = encodeURIComponent(
+								// 				res.data.data.domain +
+								// 				'/pages3/polyv/detail?obj=' +
+								// 				JSON.stringify(obj))
+								// 			uni.navigateTo({
+								// 				url: `/pages5/webview/detaillink?url=${webViewUrl}`
+								// 			})
+								// 		})
+								// 	// #endif
+								// } else {
+								// 	uni.navigateTo({
+								// 		url: `/pages3/polyv/detail?id=''&goodsId=${
+								// 		          item.goodsId
+								// 		        }&orderGoodsId=${item.orderGoodsId}&gradeId=${
+								// 		          item.gradeId
+								// 		        }&periodWaitTime=${item.periodWaitTime ? 1 : ""}&isQ=${
+								// 		          item.orderYear ? 1 : ""
+								// 		        }`,
+								// 	});
+								// }
 								uni.navigateTo({
 									url: `/pages3/polyv/detail?id=''&goodsId=${
                   item.goodsId
                 }&orderGoodsId=${item.orderGoodsId}&gradeId=${
                   item.gradeId
-                }&periodWaitTime=${item.periodWaitTime ? 1 : ""}&isQ=${
-                  item.orderYear ? 1 : ""
-                }`,
+                }&periodWaitTime=${item.periodWaitTime ? 1 : ""}`,
 								});
 							} else if (res.data.total == 1) {
+								// if (playSource == 2) {
+								// 	// #ifdef H5
+								// 	uni.navigateTo({
+								// 		url: ` / pages3 / polyv / detail ? id = $ {
+								// 		          res.data.rows[0].courseId
+								// 		        }&goodsId=${item.goodsId}&orderGoodsId=${
+								// 		          item.orderGoodsId
+								// 		        }&gradeId=${item.gradeId}&periodWaitTime=${
+								// 		          item.periodWaitTime ? "" : 1
+								// 		        }&isQ=${item.orderYear ? 1 : ""}`,
+								// 	});
+								// 	// #endif
+								// 	// #ifdef MP-WEIXIN
+								// 	this.$api
+								// 		.courseSkipPort()
+								// 		.then((resForDetail) => {
+								// 			console.log("请求的域名", resForDetail.data.data.domain)
+								// 			let obj = {
+								// 				id: res.data.rows[0].courseId,
+								// 				goodsId: item.goodsId,
+								// 				orderGoodsId: item.orderGoodsId,
+								// 				gradeId: item.gradeId,
+								// 				periodWaitTime: item.periodWaitTime ? "" : 1,
+								// 				isQ: item.orderYear ? 1 : "",
+								// 				skipPort: resForDetail.data.data.skipPort
+								// 			}
+								// 			let webViewUrl = encodeURIComponent(
+								// 				resForDetail.data.data.domain +
+								// 				'/pages3/polyv/detail?obj=' +
+								// 				JSON.stringify(obj))
+								// 			uni.navigateTo({
+								// 				url: `/pages5/webview/detaillink?url=${webViewUrl}`
+								// 			})
+								// 		})
+								// 	// #endif
+								// } else {
+								// 	uni.navigateTo({
+								// 		url: `/pages3/polyv/detail?id=${
+								// 		          res.data.rows[0].courseId
+								// 		        }&goodsId=${item.goodsId}&orderGoodsId=${
+								// 		          item.orderGoodsId
+								// 		        }&gradeId=${item.gradeId}&periodWaitTime=${
+								// 		          item.periodWaitTime ? "" : 1
+								// 		        }&isQ=${item.orderYear ? 1 : ""}`,
+								// 	});
+								// }
 								uni.navigateTo({
 									url: `/pages3/polyv/detail?id=${
                   res.data.rows[0].courseId
@@ -1112,7 +1240,7 @@
                   item.orderGoodsId
                 }&gradeId=${item.gradeId}&periodWaitTime=${
                   item.periodWaitTime ? "" : 1
-                }&isQ=${item.orderYear ? 1 : ""}`,
+                }`,
 								});
 							} else {
 								uni.showToast({
@@ -1251,7 +1379,8 @@
 					if (res.data.code == 200) {
 						if (res.data.rows && res.data.rows.length > 0) {
 							res.data.rows = res.data.rows.filter(i => {
-								return !(i.studentNumAll > 0 && i.studentNumAll == i.studentUpper)
+								return !(i.studentNumAll > 0 && i.studentNumAll == i
+									.studentUpper)
 							})
 						}
 						this.gradeList = res.data.rows;
@@ -1264,7 +1393,8 @@
 						} else {
 							let isGradeFull = this.gradeList.every(
 								(item) =>
-								item.studentNumAll > 0 && item.studentNumAll == item.studentUpper
+								item.studentNumAll > 0 && item.studentNumAll == item
+								.studentUpper
 							);
 							//所有班级都满了
 							if (isGradeFull) {

+ 6 - 16
pages2/verify/input.vue

@@ -813,21 +813,10 @@
 			async uploadDatas(data) {
 				if (this.form.recent_photos && this.form.idcard_face_photo) {
 					let base64 = await this.$method.imageToBase64(
-						this.form.idcard_face_photo,1
+						this.form.idcard_face_photo, 1
 					);
-					let resData = await this.faceCertificationIDCardOCR(1, base64);
-					if (!resData.data) {
-						uni.showModal({
-							title: "提示",
-							content: "身份证人像面照片异常,请重新上传",
-							showCancel: false,
-						});
-						this.isUploading = false;
-						return;
-					}
-					base64 = await this.$method.imageToBase64(this.form.recent_photos,1);
+					base64 = await this.$method.imageToBase64(this.form.recent_photos, 1);
 					let func1 = () => {
-
 						var self = this;
 						if (self.remarkStatus) {
 							var arsty = {};
@@ -1193,7 +1182,7 @@
 						lists[0].url.indexOf("//temp") !== -1;
 					// #endif
 					// #ifdef H5
-					console.log(lists,'lists')
+					console.log(lists, 'lists')
 					const isJPG =
 						lists[0].file.type === "image/jpeg" ||
 						lists[0].file.type === "image/png" ||
@@ -1216,7 +1205,7 @@
 						let size = lists[0].file.size;
 						if (size < 2 * 1024 * 1024) {
 							this["fileList" + index] = lists;
-							if (index == 1) {
+							if (index == 1 || index == 3) {
 								let url = lists[0].url;
 								// #ifdef MP-WEIXIN
 								url = await this.$method.imageInfos(url);
@@ -1224,7 +1213,8 @@
 								// #ifdef H5
 								url = await this.$method.uploadFile(url, 0);
 								// #endif
-								this.$set(this.form, "recent_photos", url);
+								this.$set(this.form, index == 1 ?"recent_photos":"idcard_national_photo", url);
+								console.log(url,'url')
 							} else {
 								// #ifdef MP-WEIXIN
 								let url = lists[0].url;

+ 896 - 1023
pages2/wd/class.vue

@@ -1,200 +1,147 @@
 <template>
-  <view style="padding: 0 30rpx 30rpx">
-    <nav-bar title="我的网课"></nav-bar>
-    <view class="class" v-for="(item, index) in goodsList" :key="index">
-      <view
-        class="class_item"
-        @click.stop="studyIn(item.goodsId, item.gradeId, item, index)"
-      >
-        <image
-          :src="$method.splitImgHost(item.coverUrl, true)"
-          class="class_img"
-        ></image>
-        <view class="class_text">
-          <view class="class_title">{{ item.goodsName }}</view>
-          <view class="content_box">
-            <image src="/static/icon/wk_icon1.png" class="wk_icon"></image>
-            共
-            <text class="content">{{ item.courseNum }}</text>
-            课程
-            <text class="content">{{ item.secAllNum + item.examNum }}</text>
-            节
-            <text class="content">{{ item.classHours || "-" }}</text>
-            学时
-          </view>
-          <view
-            class="content_box"
-            v-if="item.serviceStartTime && item.serviceEndTime"
-          >
-            <image src="/static/icon/wk_icon2.png" class="wk_icon"></image>
-            学习服务期:
-            <text class="content"
-              >{{ $method.timestampToTime(item.serviceStartTime, true, true) }}
-              -
-              {{
+	<view style="padding: 0 30rpx 30rpx">
+		<nav-bar title="我的网课"></nav-bar>
+		<view class="class" v-for="(item, index) in goodsList" :key="index">
+			<view class="class_item" @click.stop="studyIn(item.goodsId, item.gradeId, item, index)">
+				<image :src="$method.splitImgHost(item.coverUrl, true)" class="class_img"></image>
+				<view class="class_text">
+					<view class="class_title">{{ item.goodsName }}</view>
+					<view class="content_box">
+						<image src="/static/icon/wk_icon1.png" class="wk_icon"></image>
+						共
+						<text class="content">{{ item.courseNum }}</text>
+						课程
+						<text class="content">{{ item.secAllNum + item.examNum }}</text>
+						节
+						<text class="content">{{ item.classHours || "-" }}</text>
+						学时
+					</view>
+					<view class="content_box" v-if="item.serviceStartTime && item.serviceEndTime">
+						<image src="/static/icon/wk_icon2.png" class="wk_icon"></image>
+						学习服务期:
+						<text class="content">{{ $method.timestampToTime(item.serviceStartTime, true, true) }}
+							-
+							{{
                 $method.timestampToTime(item.serviceEndTime, true, true)
-              }}</text
-            >
-          </view>
-        </view>
+              }}</text>
+					</view>
+				</view>
 
-        <!-- 不在学习服务期 -->
-        <template
-          v-if="
+				<!-- 不在学习服务期 -->
+				<template v-if="
             item.serviceStartTime &&
             (sysTime < item.serviceStartTime || sysTime > item.serviceEndTime)
-          "
-        >
-          <view
-            class="class-warm"
-            v-if="item.gradeId != 0 && item.gradeStatus == 1"
-          >
-            <view class="class-warm__text">
-              <view class="date"> 不在学习服务期,不可以学习了哦 </view>
-            </view>
-          </view>
-        </template>
+          ">
+					<view class="class-warm" v-if="item.gradeId != 0 && item.gradeStatus == 1">
+						<view class="class-warm__text">
+							<view class="date"> 不在学习服务期,不可以学习了哦 </view>
+						</view>
+					</view>
+				</template>
 
-        <template v-else>
-          <!-- 班级有效期过了 -->
-          <template v-if="item.classEndTime && item.classEndTime < sysTime">
-            <view class="class-warm">
-              <u-icon
-                class="class-warm__icon"
-                size="30"
-                color="#FF3B30"
-                name="error-circle-fill"
-              >
-              </u-icon>
-              <view class="class-warm__text">
-                <view class="date"
-                  >班级有效期:{{
+				<template v-else>
+					<!-- 班级有效期过了 -->
+					<template v-if="item.classEndTime && item.classEndTime < sysTime">
+						<view class="class-warm">
+							<u-icon class="class-warm__icon" size="30" color="#FF3B30" name="error-circle-fill">
+							</u-icon>
+							<view class="class-warm__text">
+								<view class="date">班级有效期:{{
                     $method.timestampToTime(item.classStartTime, true, true)
                   }}
-                  -
-                  {{
+									-
+									{{
                     $method.timestampToTime(item.classEndTime, true, true)
-                  }}</view
-                >
-                <view class="state">班级状态:已过期</view>
-                <!-- <view class="state"
+                  }}
+								</view>
+								<view class="state">班级状态:已过期</view>
+								<!-- <view class="state"
                   >班级状态:已过期,有疑问请联系
                   <text @click="call">020-87085982</text></view
                 > -->
-              </view>
-            </view>
-          </template>
+							</view>
+						</view>
+					</template>
 
-          <!-- 班级有效期之前 -->
-          <template
-            v-else-if="item.classStartTime && item.classStartTime > sysTime"
-          >
-            <view class="class-warm">
-              <u-icon
-                class="class-warm__icon"
-                size="30"
-                color="#FF3B30"
-                name="error-circle-fill"
-              >
-              </u-icon>
-              <view class="class-warm__text">
-                <view class="date"
-                  >班级有效期:{{
+					<!-- 班级有效期之前 -->
+					<template v-else-if="item.classStartTime && item.classStartTime > sysTime">
+						<view class="class-warm">
+							<u-icon class="class-warm__icon" size="30" color="#FF3B30" name="error-circle-fill">
+							</u-icon>
+							<view class="class-warm__text">
+								<view class="date">班级有效期:{{
                     $method.timestampToTime(item.classStartTime, true, true)
                   }}
-                  -
-                  {{
+									-
+									{{
                     $method.timestampToTime(item.classEndTime, true, true)
-                  }}</view
-                >
-                <view class="state">班级状态:未到学习时间</view>
-                <!-- <view class="state"
+                  }}
+								</view>
+								<view class="state">班级状态:未到学习时间</view>
+								<!-- <view class="state"
                   >班级状态:未到学习时间,有疑问请联系
                   <text @click="call">020-87085982</text></view
                 > -->
-              </view>
-            </view>
-          </template>
+							</view>
+						</view>
+					</template>
 
-          <!-- 在班级有效期之间或者没有班级有效期 -->
-          <template v-else>
-            <view
-              class="class-warm"
-              v-if="
+					<!-- 在班级有效期之间或者没有班级有效期 -->
+					<template v-else>
+						<view class="class-warm" v-if="
                 item.gradeId != 0 &&
                 item.gradeStatus == 1 &&
                 item.classStatus != null
-              "
-            >
-              <view class="class-warm__text">
-                <view class="date">
-                  班级状态:
-                  <text v-if="item.classStatus == 1">已开班</text>
-                  <text v-if="item.classStatus == 0">未开班</text>
-                </view>
-                <view class="state" v-if="item.classStatus == 0"
-                  >教务处正在为您开通班级,请耐心等待</view
-                >
-                <view
-                  class="state"
-                  v-if="
+              ">
+							<view class="class-warm__text">
+								<view class="date">
+									班级状态:
+									<text v-if="item.classStatus == 1">已开班</text>
+									<text v-if="item.classStatus == 0">未开班</text>
+								</view>
+								<view class="state" v-if="item.classStatus == 0">教务处正在为您开通班级,请耐心等待</view>
+								<view class="state" v-if="
                     item.classStatus == 1 &&
                     item.classStartTime &&
                     item.classEndTime
-                  "
-                >
-                  班级有效期:{{
+                  ">
+									班级有效期:{{
                     $method.timestampToTime(item.classStartTime, true, true)
                   }}-{{
                     $method.timestampToTime(item.classEndTime, true, true)
                   }}
-                </view>
-              </view>
-            </view>
-            <!-- 学时审核状态不可审核 -->
-            <template v-if="item.periodStatus == -1 || item.periodStatus == 2">
-              <view
-                class="class-warm"
-                v-if="item.classStatus == 1 || item.classStatus === null"
-              >
-                <view class="class-warm__text">
-                  <view class="date">
-                    <template
-                      v-if="
+								</view>
+							</view>
+						</view>
+						<!-- 学时审核状态不可审核 -->
+						<template v-if="item.periodStatus == -1 || item.periodStatus == 2">
+							<view class="class-warm" v-if="item.classStatus == 1 || item.classStatus === null">
+								<view class="class-warm__text">
+									<view class="date">
+										<template v-if="
                         sysTime >= item.serviceStartTime &&
                         sysTime <= item.serviceEndTime
-                      "
-                    >
-                      学习状态:
-                      <text v-if="item.stuAllNum + item.recordNum == 0"
-                        >未学习</text
-                      >
-                      <text
-                        v-else-if="
+                      ">
+											学习状态:
+											<text v-if="item.stuAllNum + item.recordNum == 0">未学习</text>
+											<text v-else-if="
                           item.stuAllNum + item.recordNum > 0 &&
                           item.stuAllNum + item.recordNum <
                             item.secAllNum + item.examNum
-                        "
-                        >学习中</text
-                      >
-                      <text
-                        v-else-if="
+                        ">学习中</text>
+											<text v-else-if="
                           item.stuAllNum + item.recordNum >=
                           item.secAllNum + item.examNum
-                        "
-                        >已学完</text
-                      >
-                    </template>
-                    <template v-else>
-                      <template v-if="item.serviceStartTime"
-                        >已过学习服务期,不可以学习了哦!</template
-                      >
-                    </template>
-                  </view>
-                </view>
-              </view>
+                        ">已学完</text>
+										</template>
+										<template v-else>
+											<template v-if="item.serviceStartTime">已过学习服务期,不可以学习了哦!</template>
+										</template>
+									</view>
+								</view>
+							</view>
 
-              <!-- <view class="class-warm" v-if="item.profileTpStatus == 1">
+							<!-- <view class="class-warm" v-if="item.profileTpStatus == 1">
 								<view class="class-warm__text">
 									<view class="date">
 										资料审核状态:
@@ -205,37 +152,29 @@
 									</view>
 								</view>
 							</view> -->
-            </template>
+						</template>
 
-            <!-- 学时审核状态可以审核 -->
-            <template v-if="item.periodStatus != -1">
-              <view class="class-warm">
-                <view class="class-warm__text">
-                  <view class="date">
-                    <text v-if="item.periodStatus == 0"
-                      >机构审核:学时审核不通过</text
-                    >
-                    <!-- <text v-else-if="item.periodStatus == 2">学时待审核</text> -->
-                    <text v-else-if="item.periodStatus == 3">学时审核中</text>
-                    <text v-else-if="item.periodStatus == 1">
-                      <text v-if="item.periodPlush > 0"
-                        >学时已上报信息中心</text
-                      >
-                      <text v-else>机构审核:学时审核通过</text>
-                    </text>
-                  </view>
-                </view>
-              </view>
+						<!-- 学时审核状态可以审核 -->
+						<template v-if="item.periodStatus != -1">
+							<view class="class-warm">
+								<view class="class-warm__text">
+									<view class="date">
+										<text v-if="item.periodStatus == 0">机构审核:学时审核不通过</text>
+										<!-- <text v-else-if="item.periodStatus == 2">学时待审核</text> -->
+										<text v-else-if="item.periodStatus == 3">学时审核中</text>
+										<text v-else-if="item.periodStatus == 1">
+											<text v-if="item.periodPlush > 0">学时已上报信息中心</text>
+											<text v-else>机构审核:学时审核通过</text>
+										</text>
+									</view>
+								</view>
+							</view>
 
-              <view
-                class="class-warm"
-                v-if="item.subscribeId != null && item.periodStatus == 1"
-              >
-                <view class="class-warm__text">
-                  <view class="date">
-                    <view v-if="item.subExamStatus === null">待预约考试</view>
-                    <view
-                      v-else-if="
+							<view class="class-warm" v-if="item.subscribeId != null && item.periodStatus == 1">
+								<view class="class-warm__text">
+									<view class="date">
+										<view v-if="item.subExamStatus === null">待预约考试</view>
+										<view v-else-if="
                         item.subExamStatus === 0 &&
                         sysTime <
                           $method.TimeTotimestamp(
@@ -246,10 +185,9 @@
                               ' ' +
                               item.subApplySiteStartTime
                           )
-                      "
-                    >
-                      待考试,考试时间:
-                      {{
+                      ">
+											待考试,考试时间:
+											{{
                         $method.timestampToTime(
                           item.subApplySiteExamTime,
                           true
@@ -257,8 +195,8 @@
                         " " +
                         item.subApplySiteStartTime
                       }}
-                      -
-                      {{
+											-
+											{{
                         $method.timestampToTime(
                           item.subApplySiteExamTime,
                           true
@@ -266,41 +204,28 @@
                         " " +
                         item.subApplySiteEndTime
                       }}
-                    </view>
-                    <view v-else-if="item.subExamStatus === 0"
-                      >待出考试结果</view
-                    >
-                    <view v-else-if="item.subExamStatus === 1">
-                      <text v-if="item.subResult === null">待出考试结果</text>
-                      <text v-if="item.subResult === 0"
-                        >考试结果:不通过,需补考</text
-                      >
-                      <text v-else-if="item.subResult === 1"
-                        >考试结果:通过,考试成绩为{{
+										</view>
+										<view v-else-if="item.subExamStatus === 0">待出考试结果</view>
+										<view v-else-if="item.subExamStatus === 1">
+											<text v-if="item.subResult === null">待出考试结果</text>
+											<text v-if="item.subResult === 0">考试结果:不通过,需补考</text>
+											<text v-else-if="item.subResult === 1">考试结果:通过,考试成绩为{{
                           item.subPerformance
-                        }}</text
-                      >
-                    </view>
-                    <view v-else-if="item.subExamStatus === 2"
-                      >缺考,无成绩,需补考</view
-                    >
-                    <view v-else-if="item.subExamStatus === 3"
-                      >作弊,无成绩,需补考</view
-                    >
-                    <view v-else-if="item.subExamStatus === 4"
-                      >替考,无成绩,需补考</view
-                    >
-                  </view>
-                </view>
-              </view>
-            </template>
-          </template>
-        </template>
-      </view>
+                        }}</text>
+										</view>
+										<view v-else-if="item.subExamStatus === 2">缺考,无成绩,需补考</view>
+										<view v-else-if="item.subExamStatus === 3">作弊,无成绩,需补考</view>
+										<view v-else-if="item.subExamStatus === 4">替考,无成绩,需补考</view>
+									</view>
+								</view>
+							</view>
+						</template>
+					</template>
+				</template>
+			</view>
 
-      <view class="bottomBox">
-        <template
-          v-if="
+			<view class="bottomBox">
+				<template v-if="
             item.gradeStatus == 1 &&
             item.status == 1 &&
             item.serviceEndTime > sysTime &&
@@ -309,38 +234,31 @@
             item.classEndTime < sysTime &&
             (item.periodStatus == 0 || item.periodStatus == -1) &&
             item.studyCount > 0
-          "
-        >
-          <view class="restart" @click.stop="selectClass(item, index)">
-            选班重学
-          </view>
-        </template>
+          ">
+					<view class="restart" @click.stop="selectClass(item, index)">
+						选班重学
+					</view>
+				</template>
 
-        <template v-else>
-          <view class="content_box">
-            <image src="/static/icon/wk_icon3.png" class="wk_icon"></image>
-            学习进度:{{ item.stuAllNum + item.recordNum }}/{{
+				<template v-else>
+					<view class="content_box">
+						<image src="/static/icon/wk_icon3.png" class="wk_icon"></image>
+						学习进度:{{ item.stuAllNum + item.recordNum }}/{{
               item.secAllNum + item.examNum
             }}
-          </view>
-          <view class="box_progress">
-            <view style="width: 60%">
-              <u-line-progress
-                :showText="false"
-                height="22"
-                active-color="#ff9900"
-                :show-percent="false"
-                :percent="
+					</view>
+					<view class="box_progress">
+						<view style="width: 60%">
+							<u-line-progress :showText="false" height="22" active-color="#ff9900" :show-percent="false"
+								:percent="
                   ((item.stuAllNum + item.recordNum) /
                     (item.secAllNum + item.examNum)) *
                   100
-                "
-              ></u-line-progress>
-            </view>
+                "></u-line-progress>
+						</view>
 
-            <view>
-              <u-button
-                :class="{
+						<view>
+							<u-button :class="{
                   disabled:
                     (item.serviceStartTime &&
                       (sysTime <= item.serviceStartTime ||
@@ -351,20 +269,12 @@
                     item.classStatus == 0 ||
                     (item.learningStatus == 3 &&
                       sysTime < item.learningTimeStart),
-                }"
-                type="warning"
-                size="mini"
-                @click.stop="studyIn(item.goodsId, item.gradeId, item, index)"
-              >
-                进入学习</u-button
-              >
-            </view>
-          </view>
-          <template v-for="(appoint, appointIndex) in item.examApplyGoodsList">
-            <view
-              class="box_progress"
-              :key="appointIndex"
-              v-if="
+                }" type="warning" size="mini" @click.stop="studyIn(item.goodsId, item.gradeId, item, index)">
+								进入学习</u-button>
+						</view>
+					</view>
+					<template v-for="(appoint, appointIndex) in item.examApplyGoodsList">
+						<view class="box_progress" :key="appointIndex" v-if="
                 item.applyStatus === 1 &&
                 !(
                   sysTime <= item.serviceStartTime ||
@@ -375,25 +285,18 @@
                   item.classStatus == 0 ||
                   (item.learningStatus == 3 && sysTime < item.learningTimeStart)
                 )
-              "
-            >
-              <view style="flex: 1; margin-right: 10rpx">
-                <text style="color: #333333">{{ appoint.applyName }}</text>
-              </view>
-              <view>
-                <u-button
-                  :plain="true"
-                  type="primary"
-                  size="mini"
-                  @click.stop="appointment(item, appoint)"
-                  >预约考试
-                </u-button>
-              </view>
-            </view>
-          </template>
-          <view
-            class="box_progress"
-            v-if="
+              ">
+							<view style="flex: 1; margin-right: 10rpx">
+								<text style="color: #333333">{{ appoint.applyName }}</text>
+							</view>
+							<view>
+								<u-button :plain="true" type="primary" size="mini"
+									@click.stop="appointment(item, appoint)">预约考试
+								</u-button>
+							</view>
+						</view>
+					</template>
+					<view class="box_progress" v-if="
               item.beforeStatus === 1 &&
               !(
                 sysTime <= item.serviceStartTime ||
@@ -404,794 +307,764 @@
                 item.classStatus == 0 ||
                 (item.learningStatus == 3 && sysTime < item.learningTimeStart)
               )
-            "
-          >
-            <view style="flex: 1; margin-right: 10rpx">
-              <text style="color: #2979ff">{{ item.beforeName }}</text>
-            </view>
-            <view>
-              <u-button
-                type="primary"
-                size="mini"
-                @click="appBeforeAddress(item.goodsId, item)"
-                >进入刷题</u-button
-              >
-            </view>
-          </view>
-        </template>
-      </view>
-    </view>
+            ">
+						<view style="flex: 1; margin-right: 10rpx">
+							<text style="color: #2979ff">{{ item.beforeName }}</text>
+						</view>
+						<view>
+							<u-button type="primary" size="mini"
+								@click="appBeforeAddress(item.goodsId, item)">进入刷题</u-button>
+						</view>
+					</view>
+				</template>
+			</view>
+		</view>
 
-    <view v-if="goodsList.length == 0">
-      <u-empty text="暂无网课" margin-top="500" mode="list"></u-empty>
-    </view>
-    <u-popup
-      v-model="selectClassModal"
-      @close="gradeValue = -1"
-      mode="bottom"
-      border-radius="40"
-    >
-      <view class="popup_box">
-        <view style="margin-bottom: 20rpx">
-          <view class="line1"></view>
-          <view class="grade">选择班级1</view>
-        </view>
-        <u-line color="#D6D6DB" />
-        <view>
-          <scroll-view scroll-y="true" style="height: 500rpx">
-            <view>
-              <u-radio-group v-model="gradeValue" @change="radioGroupChange">
-                <view v-for="(item, index) in gradeList" :key="index">
-                  <view
-                    style="display: flex; align-items: center; padding: 20rpx"
-                  >
-                    <view>
-                      <u-radio
-                        shape="circle"
-                        :name="index"
-                        :disabled="
+		<view v-if="goodsList.length == 0">
+			<u-empty text="暂无网课" margin-top="500" mode="list"></u-empty>
+		</view>
+		<u-popup v-model="selectClassModal" @close="gradeValue = -1" mode="bottom" border-radius="40">
+			<view class="popup_box">
+				<view style="margin-bottom: 20rpx">
+					<view class="line1"></view>
+					<view class="grade">选择班级1</view>
+				</view>
+				<u-line color="#D6D6DB" />
+				<view>
+					<scroll-view scroll-y="true" style="height: 500rpx">
+						<view>
+							<u-radio-group v-model="gradeValue" @change="radioGroupChange">
+								<view v-for="(item, index) in gradeList" :key="index">
+									<view style="display: flex; align-items: center; padding: 20rpx">
+										<view>
+											<u-radio shape="circle" :name="index" :disabled="
                           item.studentNum > 0 &&
                           item.studentNum == item.studentUpper
-                        "
-                      >
-                        <view
-                          :class="
+                        ">
+												<view :class="
                             item.checked ? 'white-box blue-box' : 'white-box'
-                          "
-                        >
-                          <view>
-                            <view class="blackTxt">{{ item.className }}</view>
-                            <Class-time-tip :classInfo="item"></Class-time-tip>
-                          </view>
-                        </view>
-                      </u-radio>
-                    </view>
-                  </view>
-                </view>
-              </u-radio-group>
-            </view>
-          </scroll-view>
-        </view>
-        <view class="confrim-btn">
-          <view class="okBtn" @click="okPopup()">确定</view>
-        </view>
-      </view>
-    </u-popup>
-    <u-modal
-      v-model="showMark"
-      title="提示"
-      @confirm="markConfirm"
-      confirm-text="复制学习网址"
-      :show-cancel-button="true"
-      cancel-text="关闭"
-    >
-      <view class="slot-content">
-        <view>您的学习账号已经开通,请按照步骤操作,进行学习。</view>
-        <view>1.复制学习地址:{{ markContent }}</view>
-        <view>2.在【浏览器中】打开复制的学习网址</view>
-        <view>3.打开学习网址后,选择【个人用户】进行登录</view>
-        <view>(1)账号:您个人的身份证号码</view>
-        <view>(2)密码:身份证号码,再加111111</view>
-      </view>
-    </u-modal>
+                          ">
+													<view>
+														<view class="blackTxt">{{ item.className }}</view>
+														<Class-time-tip :classInfo="item"></Class-time-tip>
+													</view>
+												</view>
+											</u-radio>
+										</view>
+									</view>
+								</view>
+							</u-radio-group>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="confrim-btn">
+					<view class="okBtn" @click="okPopup()">确定</view>
+				</view>
+			</view>
+		</u-popup>
+		<u-modal v-model="showMark" title="提示" @confirm="markConfirm" confirm-text="复制学习网址" :show-cancel-button="true"
+			cancel-text="关闭">
+			<view class="slot-content">
+				<view>您的学习账号已经开通,请按照步骤操作,进行学习。</view>
+				<view>1.复制学习地址:{{ markContent }}</view>
+				<view>2.在【浏览器中】打开复制的学习网址</view>
+				<view>3.打开学习网址后,选择【个人用户】进行登录</view>
+				<view>(1)账号:您个人的身份证号码</view>
+				<view>(2)密码:身份证号码,再加111111</view>
+			</view>
+		</u-modal>
 
-    <u-modal
-      v-model="showUserConfirmInfo"
-      @confirm="confirmUserConfirm"
-      ref="uModal"
-      :async-close="true"
-      @cancel="cancelUserConfirm"
-      :confirm-text="
+		<u-modal v-model="showUserConfirmInfo" @confirm="confirmUserConfirm" ref="uModal" :async-close="true"
+			@cancel="cancelUserConfirm" :confirm-text="
         '确认' + (confirmCount > 0 ? '(' + confirmCount + ')' : '')
-      "
-      :confirm-color="confirmCount > 0 ? '#999' : '#2979ff'"
-      class="confirm-modal"
-      title="实名验证确认"
-      cancel="取消"
-      :show-cancel-button="true"
-    >
-      <view class="slot-content">
-        <view class="content">
-          <!-- ,立刻联系020-38946666 -->
-          为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作。
-          <view class="msg-list">
-            <view class="item">
-              <text class="item__left">姓名:</text>
-              <text class="item__right">{{ userInfo.realname }}</text>
-            </view>
-            <view class="item">
-              <text class="item__left">手机号:</text>
-              <text class="item__right">{{ userInfo.telphone }}</text>
-            </view>
-            <view class="item">
-              <text class="item__left">身份号:</text>
-              <text class="item__right">{{ userInfo.idCard }}</text>
-            </view>
-            <view class="item">
-              <u-checkbox v-model="confirmChecked" :label-disabled="false"
-                >确认个人信息无误</u-checkbox
-              >
-            </view>
-          </view>
-        </view>
-      </view>
-    </u-modal>
-  </view>
+      " :confirm-color="confirmCount > 0 ? '#999' : '#2979ff'" class="confirm-modal" title="实名验证确认" cancel="取消"
+			:show-cancel-button="true">
+			<view class="slot-content">
+				<view class="content">
+					<!-- ,立刻联系020-38946666 -->
+					为避免个人信息不正确导致您的学习时长无效,请认真核对以下信息是否正确,如信息有误请取消当前操作。
+					<view class="msg-list">
+						<view class="item">
+							<text class="item__left">姓名:</text>
+							<text class="item__right">{{ userInfo.realname }}</text>
+						</view>
+						<view class="item">
+							<text class="item__left">手机号:</text>
+							<text class="item__right">{{ userInfo.telphone }}</text>
+						</view>
+						<view class="item">
+							<text class="item__left">身份号:</text>
+							<text class="item__right">{{ userInfo.idCard }}</text>
+						</view>
+						<view class="item">
+							<u-checkbox v-model="confirmChecked" :label-disabled="false">确认个人信息无误</u-checkbox>
+						</view>
+					</view>
+				</view>
+			</view>
+		</u-modal>
+	</view>
 </template>
 
 <script>
-import { mapGetters, mapActions } from "vuex";
-import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
-export default {
-  computed: {
-    ...mapGetters(["userInfo"]),
-  },
-  data() {
-    return {
-      activeItem: {},
-      confirmTimer: null,
-      confirmCount: 10,
-      confirmChecked: false,
-      showUserConfirmInfo: false,
-      showMark: false,
-      list: [1, 2, 3],
-      goodsList: [],
-      selectClassModal: false,
-      gradeList: [],
-      gradeValue: -1,
-      param: {
-        pageNum: 1,
-        pageSize: 10,
-      },
-      total: 0,
-      sysTime: 0,
-      itemIndex: "",
-      selectItem: {},
-    };
-  },
-  onLoad(option) {
-    // this.sysTime = +this.$method.timest();
-    this.courseGoodsList();
-  },
-  async onShow() {
-    this.getUserInfo();
-    if (this.itemIndex !== "") {
-      this.refreshByIndex();
-    }
-    await this.commonSystemTime();
-    this.sysTime = +this.$method.timest();
-  },
-  onReachBottom() {
-    if (this.goodsList.length < this.total) {
-      this.param.pageNum++;
-      this.courseGoodsList();
-    }
-  },
-  methods: {
-    ...mapActions(["getUserInfo"]),
-    /**
-     * 复制网址
-     */
-    markConfirm() {
-      uni.setClipboardData({
-        data: this.markContent,
-        success: function () {
-          console.log("success");
-        },
-      });
-    },
-    /**
-     * 返回刷新之前进入的课程数据
-     */
-    refreshByIndex() {
-      let self = this;
-      this.$api
-        .courseGoodsList({
-          pageNum: this.itemIndex + 1,
-          pageSize: 1,
-        })
-        .then((res) => {
-          if (res.data.code == 200) {
-            this.$set(this.goodsList, this.itemIndex, res.data.rows[0]);
-          }
-        });
-    },
-    commonSystemTime() {
-      return new Promise((resolve) => {
-        this.$api.commonSystemTime().then((res) => {
-          this.sysTime = res.data.data;
-        });
-      });
-    },
-    selectClass(item, index) {
-      console.log(item);
-      this.itemIndex = index;
-      this.selectItem = item;
-      this.selectClassModal = true;
-      this.goodsGradeList(item.goodsId);
-    },
-    radioGroupChange(e) {
-      console.log(e);
-    },
-    userConfirmInfoDetail() {
-      return new Promise((resolve) => {
-        this.$api
-          .userConfirmInfoDetail({
-            orderGoodsId: this.activeItem.orderGoodsId,
-          })
-          .then((res) => {
-            if (!res.data.data) {
-              clearInterval(this.confirmTimer);
-              this.confirmCount = 10;
-              this.showUserConfirmInfo = true;
-              this.confirmTimer = setInterval(() => {
-                if (this.confirmCount > 0) {
-                  this.confirmCount--;
-                } else {
-                  clearInterval(this.confirmTimer);
-                }
-              }, 1000);
-            } else {
-              if (res.data.data.pushInfo) {
-                resolve(true);
-              } else {
-                // ,请联系020-87085982
-                uni.showModal({
-                  showCancel: false,
-                  title: "提示",
-                  content: "开通信息推送不成功,无法进入学习!",
-                });
-                resolve(false);
-              }
-            }
-          });
-      });
-    },
-    confirmUserConfirm() {
-      this.$refs.uModal.clearLoading();
-      if (this.confirmCount <= 0) {
-        if (this.confirmChecked) {
-          let infoJson = {
-            realname: this.userInfo.realname,
-            idCard: this.userInfo.idCard,
-            telphone: this.userInfo.telphone,
-          };
-          this.$api
-            .userConfirminfo({
-              orderGoodsId: this.activeItem.orderGoodsId,
-              infoJson: JSON.stringify(infoJson),
-            })
-            .then((res) => {
-              if (res.data.data.pushInfo) {
-                uni.showToast({
-                  icon: "none",
-                  title: "提交成功",
-                });
-              } else {
-                // ,请联系020-87085982
-                uni.showModal({
-                  showCancel: false,
-                  title: "提示",
-                  content: "开通信息推送不成功,无法进入学习!",
-                });
-              }
-              this.showUserConfirmInfo = false;
-            });
-        } else {
-          uni.showToast({
-            icon: "none",
-            title: "请勾选确认个人信息无误",
-          });
-        }
-      } else {
-        return;
-      }
-    },
+	import {
+		mapGetters,
+		mapActions
+	} from "vuex";
+	import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
+	export default {
+		computed: {
+			...mapGetters(["userInfo"]),
+		},
+		data() {
+			return {
+				activeItem: {},
+				confirmTimer: null,
+				confirmCount: 10,
+				confirmChecked: false,
+				showUserConfirmInfo: false,
+				showMark: false,
+				list: [1, 2, 3],
+				goodsList: [],
+				selectClassModal: false,
+				gradeList: [],
+				gradeValue: -1,
+				param: {
+					pageNum: 1,
+					pageSize: 10,
+				},
+				total: 0,
+				sysTime: 0,
+				itemIndex: "",
+				selectItem: {},
+			};
+		},
+		onLoad(option) {
+			// this.sysTime = +this.$method.timest();
+			this.courseGoodsList();
+		},
+		async onShow() {
+			this.getUserInfo();
+			if (this.itemIndex !== "") {
+				this.refreshByIndex();
+			}
+			await this.commonSystemTime();
+			this.sysTime = +this.$method.timest();
+		},
+		onReachBottom() {
+			if (this.goodsList.length < this.total) {
+				this.param.pageNum++;
+				this.courseGoodsList();
+			}
+		},
+		methods: {
+			...mapActions(["getUserInfo"]),
+			/**
+			 * 复制网址
+			 */
+			markConfirm() {
+				uni.setClipboardData({
+					data: this.markContent,
+					success: function() {
+						console.log("success");
+					},
+				});
+			},
+			/**
+			 * 返回刷新之前进入的课程数据
+			 */
+			refreshByIndex() {
+				let self = this;
+				this.$api
+					.courseGoodsList({
+						pageNum: this.itemIndex + 1,
+						pageSize: 1,
+					})
+					.then((res) => {
+						if (res.data.code == 200) {
+							this.$set(this.goodsList, this.itemIndex, res.data.rows[0]);
+						}
+					});
+			},
+			commonSystemTime() {
+				return new Promise((resolve) => {
+					this.$api.commonSystemTime().then((res) => {
+						this.sysTime = res.data.data;
+					});
+				});
+			},
+			selectClass(item, index) {
+				console.log(item);
+				this.itemIndex = index;
+				this.selectItem = item;
+				this.selectClassModal = true;
+				this.goodsGradeList(item.goodsId);
+			},
+			radioGroupChange(e) {
+				console.log(e);
+			},
+			userConfirmInfoDetail() {
+				return new Promise((resolve) => {
+					this.$api
+						.userConfirmInfoDetail({
+							orderGoodsId: this.activeItem.orderGoodsId,
+						})
+						.then((res) => {
+							if (!res.data.data) {
+								clearInterval(this.confirmTimer);
+								this.confirmCount = 10;
+								this.showUserConfirmInfo = true;
+								this.confirmTimer = setInterval(() => {
+									if (this.confirmCount > 0) {
+										this.confirmCount--;
+									} else {
+										clearInterval(this.confirmTimer);
+									}
+								}, 1000);
+							} else {
+								if (res.data.data.pushInfo) {
+									resolve(true);
+								} else {
+									// ,请联系020-87085982
+									uni.showModal({
+										showCancel: false,
+										title: "提示",
+										content: "开通信息推送不成功,无法进入学习!",
+									});
+									resolve(false);
+								}
+							}
+						});
+				});
+			},
+			confirmUserConfirm() {
+				this.$refs.uModal.clearLoading();
+				if (this.confirmCount <= 0) {
+					if (this.confirmChecked) {
+						let infoJson = {
+							realname: this.userInfo.realname,
+							idCard: this.userInfo.idCard,
+							telphone: this.userInfo.telphone,
+						};
+						this.$api
+							.userConfirminfo({
+								orderGoodsId: this.activeItem.orderGoodsId,
+								infoJson: JSON.stringify(infoJson),
+							})
+							.then((res) => {
+								if (res.data.data.pushInfo) {
+									uni.showToast({
+										icon: "none",
+										title: "提交成功",
+									});
+								} else {
+									// ,请联系020-87085982
+									uni.showModal({
+										showCancel: false,
+										title: "提示",
+										content: "开通信息推送不成功,无法进入学习!",
+									});
+								}
+								this.showUserConfirmInfo = false;
+							});
+					} else {
+						uni.showToast({
+							icon: "none",
+							title: "请勾选确认个人信息无误",
+						});
+					}
+				} else {
+					return;
+				}
+			},
 
-    cancelUserConfirm() {
-      clearInterval(this.confirmTimer);
-    },
-    goodsGradeList(id) {
-      let self = this;
-      this.$api
-        .goodsGradeList({
-          goodsId: id,
-        })
-        .then((res) => {
-          if (res.data.code == 200) {
-            self.gradeList = res.data.rows;
-            if (self.gradeList.length == 0) {
-              let item = {
-                className: "系统分班",
-                gradeId: 0,
-              };
-              self.gradeList.push(item);
-            } else {
-              let isGradeFull = self.gradeList.every(
-                (item) =>
-                  item.studentNum > 0 && item.studentNum == item.studentUpper
-              );
-              //所有班级都满了
-              if (isGradeFull) {
-                let item = {
-                  className: "系统分班",
-                  gradeId: 0,
-                };
-                self.gradeList.unshift(item);
-              }
-            }
-          }
-        });
-    },
-    appBeforeAddress(goodsId, item) {
-      this.$api
-        .appBeforeAddress({
-          // goodsId,
-          orderGoodsId: item.orderGoodsId,
-        })
-        .then((res) => {
-          if (res.data.code == 200) {
-            uni.navigateToMiniProgram({
-              appId: res.data.data.url,
-              success(res) {
-                // 打开成功
-              },
-            });
-          } else {
-            uni.showModal({
-              title: "提示",
-              content: res.data.msg,
-              showCancel: false,
-            });
-          }
-        });
-    },
-    courseGoodsList() {
-      let self = this;
-      // /course/goodsList 查询用户拥有的商品
-      this.$api.courseGoodsList(this.param).then((res) => {
-        if (res.data.code == 200) {
-          self.goodsList.push.apply(self.goodsList, res.data.rows);
-          self.total = res.data.total;
-        }
-      });
-    },
-    async studyIn(v, i, item, index) {
-      this.activeItem = item;
-      if (item.interfaceAccountId > 0) {
-        //学习账号已开通
+			cancelUserConfirm() {
+				clearInterval(this.confirmTimer);
+			},
+			goodsGradeList(id) {
+				let self = this;
+				this.$api
+					.goodsGradeList({
+						goodsId: id,
+					})
+					.then((res) => {
+						if (res.data.code == 200) {
+							self.gradeList = res.data.rows;
+							if (self.gradeList.length == 0) {
+								let item = {
+									className: "系统分班",
+									gradeId: 0,
+								};
+								self.gradeList.push(item);
+							} else {
+								let isGradeFull = self.gradeList.every(
+									(item) =>
+									item.studentNum > 0 && item.studentNum == item.studentUpper
+								);
+								//所有班级都满了
+								if (isGradeFull) {
+									let item = {
+										className: "系统分班",
+										gradeId: 0,
+									};
+									self.gradeList.unshift(item);
+								}
+							}
+						}
+					});
+			},
+			appBeforeAddress(goodsId, item) {
+				this.$api
+					.appBeforeAddress({
+						// goodsId,
+						orderGoodsId: item.orderGoodsId,
+					})
+					.then((res) => {
+						if (res.data.code == 200) {
+							uni.navigateToMiniProgram({
+								appId: res.data.data.url,
+								success(res) {
+									// 打开成功
+								},
+							});
+						} else {
+							uni.showModal({
+								title: "提示",
+								content: res.data.msg,
+								showCancel: false,
+							});
+						}
+					});
+			},
+			courseGoodsList() {
+				let self = this;
+				// /course/goodsList 查询用户拥有的商品
+				this.$api.courseGoodsList(this.param).then((res) => {
+					if (res.data.code == 200) {
+						self.goodsList.push.apply(self.goodsList, res.data.rows);
+						self.total = res.data.total;
+					}
+				});
+			},
+			async studyIn(v, i, item, index) {
+				this.activeItem = item;
+				if (item.interfaceAccountId > 0) {
+					//学习账号已开通
 
-        if (item.learnStatus > 0) {
-          //跳转第三方h5
-          // this.showMark = true;
-          uni.navigateTo({
-            url: `/pages3/polyv/detail?goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}&isOther=1`,
-          });
-          return;
-          // uni.navigateTo({
-          // 	url:'/pages5/webview/index?url='+item.officialLearningUrl
-          // })
-          // return;
-        } else {
-          // ,请联系020-87085982
-          uni.showModal({
-            showCancel: false,
-            content: "您的学习账号未开通,请稍后再尝试,有疑问!",
-          });
-          return;
-        }
+					if (item.learnStatus > 0) {
+						//跳转第三方h5
+						// this.showMark = true;
+						uni.navigateTo({
+						  url: `/pages3/polyv/detail?goodsId=${item.goodsId}&orderGoodsId=${item.orderGoodsId}&isOther=1`,
+						});
+						return;
+						// uni.navigateTo({
+						// 	url:'/pages5/webview/index?url='+item.officialLearningUrl
+						// })
+						// return;
+					} else {
+						// ,请联系020-87085982
+						uni.showModal({
+							showCancel: false,
+							content: "您的学习账号未开通,请稍后再尝试,有疑问!",
+						});
+						return;
+					}
 
-        return;
-      }
+					return;
+				}
 
-      if (
-        item.serviceStartTime &&
-        (this.sysTime <= item.serviceStartTime ||
-          this.sysTime >= item.serviceEndTime)
-      ) {
-        uni.showToast({
-          icon: "none",
-          title: "不在学习服务期,不能进入学习",
-        });
-        return;
-      }
+				if (
+					item.serviceStartTime &&
+					(this.sysTime <= item.serviceStartTime ||
+						this.sysTime >= item.serviceEndTime)
+				) {
+					uni.showToast({
+						icon: "none",
+						title: "不在学习服务期,不能进入学习",
+					});
+					return;
+				}
 
-      if (
-        (item.classStartTime && this.sysTime <= item.classStartTime) ||
-        (item.classEndTime && this.sysTime >= item.classEndTime)
-      ) {
-        uni.showToast({
-          icon: "none",
-          title: "不在班级有效期,不能进入学习",
-        });
-        return;
-      }
+				if (
+					(item.classStartTime && this.sysTime <= item.classStartTime) ||
+					(item.classEndTime && this.sysTime >= item.classEndTime)
+				) {
+					uni.showToast({
+						icon: "none",
+						title: "不在班级有效期,不能进入学习",
+					});
+					return;
+				}
 
-      if (item.learningStatus == 2) {
-        uni.showToast({
-          icon: "none",
-          title: "开放学习时间待定,不能进入学习",
-        });
-        return;
-      }
+				if (item.learningStatus == 2) {
+					uni.showToast({
+						icon: "none",
+						title: "开放学习时间待定,不能进入学习",
+					});
+					return;
+				}
 
-      if (item.classStatus == 0) {
-        uni.showToast({
-          icon: "none",
-          title: "尚未开班,不能进入学习",
-        });
-        return;
-      }
-      console.log(this.sysTime, item.learningTimeStart);
-      console.log(this.sysTime < item.learningTimeStart);
-      if (item.learningStatus == 3 && this.sysTime < item.learningTimeStart) {
-        uni.showToast({
-          icon: "none",
-          title: "不在开放学习时间,不能进入学习",
-        });
-        return;
-      }
+				if (item.classStatus == 0) {
+					uni.showToast({
+						icon: "none",
+						title: "尚未开班,不能进入学习",
+					});
+					return;
+				}
+				console.log(this.sysTime, item.learningTimeStart);
+				console.log(this.sysTime < item.learningTimeStart);
+				if (item.learningStatus == 3 && this.sysTime < item.learningTimeStart) {
+					uni.showToast({
+						icon: "none",
+						title: "不在开放学习时间,不能进入学习",
+					});
+					return;
+				}
 
-      var confirmDetail = true;
-      if (item.educationName == "继续教育") {
-        if (
-          item.officialName &&
-          item.businessName == "二级" &&
-          item.projectName == "建造师"
-        ) {
-          confirmDetail = await this.userConfirmInfoDetail();
-        }
-      }
+				var confirmDetail = true;
+				if (item.educationName == "继续教育") {
+					if (
+						item.officialName &&
+						item.businessName == "二级" &&
+						item.projectName == "建造师"
+					) {
+						confirmDetail = await this.userConfirmInfoDetail();
+					}
+				}
 
-      if (!confirmDetail) {
-        return;
-      }
+				if (!confirmDetail) {
+					return;
+				}
 
-      // //内部系统
-      // if (item.interfacePushId > 0 && item.officialStatus != 1) {
-      // 	uni.showModal({
-      // 		showCancel: false,
-      // 		content: '机构正在为您报名中,请耐心等待,有疑问请联系020-87085982!'
-      // 	});
-      // 	return;
-      // }
+				// //内部系统
+				// if (item.interfacePushId > 0 && item.officialStatus != 1) {
+				// 	uni.showModal({
+				// 		showCancel: false,
+				// 		content: '机构正在为您报名中,请耐心等待,有疑问请联系020-87085982!'
+				// 	});
+				// 	return;
+				// }
 
-      this.itemIndex = index;
+				this.itemIndex = index;
 
-      if (
-        item.gradeStatus == 1 &&
-        item.status == 1 &&
-        item.serviceEndTime > this.sysTime &&
-        item.classEndTime &&
-        item.classEndTime < this.sysTime &&
-        (item.periodStatus == 0 || item.periodStatus == -1) &&
-        item.studyCount > 0
-      ) {
-        this.selectClass(item, index);
-        return;
-      }
+				if (
+					item.gradeStatus == 1 &&
+					item.status == 1 &&
+					item.serviceEndTime > this.sysTime &&
+					item.classEndTime &&
+					item.classEndTime < this.sysTime &&
+					(item.periodStatus == 0 || item.periodStatus == -1) &&
+					item.studyCount > 0
+				) {
+					this.selectClass(item, index);
+					return;
+				}
 
-      let rebuildStatus = await this.courseGoodsRebuildStatus(
-        item.goodsId,
-        item.gradeId
-      );
+				let rebuildStatus = await this.courseGoodsRebuildStatus(
+					item.goodsId,
+					item.gradeId
+				);
 
-      if (rebuildStatus == 0) {
-        this.$navTo.togo("/pages2/learn/details", {
-          gradeId: item.gradeId,
-          goodsId: item.goodsId,
-          orderGoodsId: item.orderGoodsId,
-        });
-        return;
-      }
+				if (rebuildStatus == 0) {
+					this.$navTo.togo("/pages2/learn/details", {
+						gradeId: item.gradeId,
+						goodsId: item.goodsId,
+						orderGoodsId: item.orderGoodsId,
+					});
+					return;
+				}
 
-      // if (item.educationName == '继续教育') {
-      this.$method.checkLock("jxjy").then((res) => {
-        //可以学习
-        if (item.courseNum == 1) {
-          this.$api
-            .courseCourseList({
-              pageNum: 1,
-              pageSize: 1,
-              goodsId: item.goodsId,
-              gradeId: item.gradeId,
-              orderGoodsId: item.orderGoodsId,
-            })
-            .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}`
-        );
-      });
-    },
-    /**
-     * @param {Object} goodsId 商品id
-     * 查询商品重修状态
-     */
-    courseGoodsRebuildStatus(goodsId, gradeId) {
-      return new Promise((resolve) => {
-        this.$api
-          .courseGoodsRebuildStatus({
-            goodsId: goodsId,
-            gradeId: gradeId,
-          })
-          .then((res) => {
-            resolve(res.data.data);
-          });
-      });
-    },
-    appointment(item, appoint) {
-      var data = {
-        goodsId: item.goodsId,
-        gradeId: item.gradeId,
-        applyId: appoint.applyId,
-        orderGoodsId: item.orderGoodsId,
-      };
-      this.$api.getApplysubscribe(data).then((res) => {
-        if (res.data.code === 500) {
-          uni.showModal({
-            showCancel: false,
-            content: res.data.msg,
-          });
-        }
-        if (res.data.code === 200) {
-          this.$navTo.togo("/pages2/appointment/index", {
-            goodsId: item.goodsId,
-            gradeId: item.gradeId,
-            orderGoodsId: item.orderGoodsId,
-            applyId: appoint.applyId,
-          });
-        }
-      });
-    },
-    okPopup() {
-      if (this.gradeValue == -1) {
-        uni.showToast({
-          icon: "none",
-          title: "请选择班级",
-        });
-        return;
-      }
-      this.$api
-        .changeGrade({
-          goodsId: this.selectItem.goodsId,
-          gradeId: this.gradeValue,
-          oldGradeId: this.selectItem.gradeId,
-          orderGoodsId: this.selectItem.orderGoodsId,
-          userId: this.selectItem.userId,
-        })
-        .then((res) => {
-          if (res.data.code == 200) {
-            if (this.itemIndex !== "") {
-              this.refreshByIndex();
-            }
-            this.selectClassModal = false;
-            uni.showToast({
-              title: "选班成功",
-            });
-          } else {
-            uni.showToast({
-              icon: "none",
-              title: res.data.msg,
-            });
-          }
-        });
-    },
-    call() {
-      uni.makePhoneCall({
-        phoneNumber: "020-87085982", //仅为示例
-      });
-    },
-  },
-  components: { ClassTimeTip },
-};
+				// if (item.educationName == '继续教育') {
+				this.$method.checkLock("jxjy").then((res) => {
+					//可以学习
+					if (item.courseNum == 1) {
+						this.$api
+							.courseCourseList({
+								pageNum: 1,
+								pageSize: 1,
+								goodsId: item.goodsId,
+								gradeId: item.gradeId,
+								orderGoodsId: item.orderGoodsId,
+							})
+							.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}`
+					);
+				});
+			},
+			/**
+			 * @param {Object} goodsId 商品id
+			 * 查询商品重修状态
+			 */
+			courseGoodsRebuildStatus(goodsId, gradeId) {
+				return new Promise((resolve) => {
+					this.$api
+						.courseGoodsRebuildStatus({
+							goodsId: goodsId,
+							gradeId: gradeId,
+						})
+						.then((res) => {
+							resolve(res.data.data);
+						});
+				});
+			},
+			appointment(item, appoint) {
+				var data = {
+					goodsId: item.goodsId,
+					gradeId: item.gradeId,
+					applyId: appoint.applyId,
+					orderGoodsId: item.orderGoodsId,
+				};
+				this.$api.getApplysubscribe(data).then((res) => {
+					if (res.data.code === 500) {
+						uni.showModal({
+							showCancel: false,
+							content: res.data.msg,
+						});
+					}
+					if (res.data.code === 200) {
+						this.$navTo.togo("/pages2/appointment/index", {
+							goodsId: item.goodsId,
+							gradeId: item.gradeId,
+							orderGoodsId: item.orderGoodsId,
+							applyId: appoint.applyId,
+						});
+					}
+				});
+			},
+			okPopup() {
+				if (this.gradeValue == -1) {
+					uni.showToast({
+						icon: "none",
+						title: "请选择班级",
+					});
+					return;
+				}
+				this.$api
+					.changeGrade({
+						goodsId: this.selectItem.goodsId,
+						gradeId: this.gradeValue,
+						oldGradeId: this.selectItem.gradeId,
+						orderGoodsId: this.selectItem.orderGoodsId,
+						userId: this.selectItem.userId,
+					})
+					.then((res) => {
+						if (res.data.code == 200) {
+							if (this.itemIndex !== "") {
+								this.refreshByIndex();
+							}
+							this.selectClassModal = false;
+							uni.showToast({
+								title: "选班成功",
+							});
+						} else {
+							uni.showToast({
+								icon: "none",
+								title: res.data.msg,
+							});
+						}
+					});
+			},
+			call() {
+				uni.makePhoneCall({
+					phoneNumber: "020-87085982", //仅为示例
+				});
+			},
+		},
+		components: {
+			ClassTimeTip
+		},
+	};
 </script>
 <style>
-page {
-  background: #eaeef1;
-}
+	page {
+		background: #eaeef1;
+	}
 </style>
 <style scope lang="scss">
-.box_progress {
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-  margin-top: 20rpx;
+	.box_progress {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-top: 20rpx;
 
-  .disabled {
-    opacity: 0.6;
-  }
-}
+		.disabled {
+			opacity: 0.6;
+		}
+	}
 
-.bottomBox {
-  background: #ffffff;
-  width: 94%;
-  border-bottom-left-radius: 24rpx;
-  border-bottom-right-radius: 24rpx;
-  margin: 0 auto;
-  padding: 20rpx;
+	.bottomBox {
+		background: #ffffff;
+		width: 94%;
+		border-bottom-left-radius: 24rpx;
+		border-bottom-right-radius: 24rpx;
+		margin: 0 auto;
+		padding: 20rpx;
 
-  .restart {
-    margin: 0 auto;
-    text-align: center;
-    line-height: 80rpx;
-    color: #fff;
-    font-size: 30rpx;
-    width: 440rpx;
-    height: 80rpx;
-    background: #ff0000;
-    border-radius: 40rpx 40rpx 40rpx 40rpx;
-  }
-}
+		.restart {
+			margin: 0 auto;
+			text-align: center;
+			line-height: 80rpx;
+			color: #fff;
+			font-size: 30rpx;
+			width: 440rpx;
+			height: 80rpx;
+			background: #ff0000;
+			border-radius: 40rpx 40rpx 40rpx 40rpx;
+		}
+	}
 
-.content_box {
-  font-size: 24rpx;
-  display: flex;
-  align-items: center;
-  color: #999999;
-  margin-top: 8rpx;
-}
+	.content_box {
+		font-size: 24rpx;
+		display: flex;
+		align-items: center;
+		color: #999999;
+		margin-top: 8rpx;
+	}
 
-.content {
-  color: #000000;
-  margin: 0 8rpx;
-}
+	.content {
+		color: #000000;
+		margin: 0 8rpx;
+	}
 
-.wk_icon {
-  width: 24rpx;
-  height: 24rpx;
-  margin-right: 8rpx;
-}
+	.wk_icon {
+		width: 24rpx;
+		height: 24rpx;
+		margin-right: 8rpx;
+	}
 
-.class {
-  margin-bottom: 30rpx;
+	.class {
+		margin-bottom: 30rpx;
 
-  .class_item {
-    width: 100%;
-    background: #ffffff;
-    box-shadow: 0rpx 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);
-    border-radius: 24rpx;
-    padding: 20rpx;
-    z-index: 999;
-    position: relative;
+		.class_item {
+			width: 100%;
+			background: #ffffff;
+			box-shadow: 0rpx 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);
+			border-radius: 24rpx;
+			padding: 20rpx;
+			z-index: 999;
+			position: relative;
 
-    .class_img {
-      height: 367rpx;
-      width: 100%;
-      border-radius: 24rpx;
-    }
+			.class_img {
+				height: 367rpx;
+				width: 100%;
+				border-radius: 24rpx;
+			}
 
-    .class_text {
-      padding: 0 20rpx;
+			.class_text {
+				padding: 0 20rpx;
 
-      .class_title {
-        color: #333333;
-        font-weight: bold;
-        font-size: 32rpx;
-      }
-    }
+				.class_title {
+					color: #333333;
+					font-weight: bold;
+					font-size: 32rpx;
+				}
+			}
 
-    .class-warm {
-      padding: 10rpx 20rpx;
-      display: flex;
-      align-items: flex-start;
+			.class-warm {
+				padding: 10rpx 20rpx;
+				display: flex;
+				align-items: flex-start;
 
-      &__icon {
-        margin-right: 10rpx;
-      }
+				&__icon {
+					margin-right: 10rpx;
+				}
 
-      &__text {
-        .date {
-          font-size: 24rpx;
-          font-weight: bold;
-          color: #ff3b30;
-        }
+				&__text {
+					.date {
+						font-size: 24rpx;
+						font-weight: bold;
+						color: #ff3b30;
+					}
 
-        .state {
-          margin-top: 15rpx;
-          font-size: 24rpx;
-          font-weight: bold;
-          color: #ff3b30;
-        }
-      }
-    }
-  }
-}
+					.state {
+						margin-top: 15rpx;
+						font-size: 24rpx;
+						font-weight: bold;
+						color: #ff3b30;
+					}
+				}
+			}
+		}
+	}
 
-.popup_box {
-  height: 700rpx;
-  box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
-  border-radius: 32rpx 32rpx 0rpx 0rpx;
+	.popup_box {
+		height: 700rpx;
+		box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
+		border-radius: 32rpx 32rpx 0rpx 0rpx;
 
-  .line1 {
-    width: 80rpx;
-    height: 8rpx;
-    background: #999999;
-    border-radius: 4rpx;
-    margin: 0 auto;
-    margin-top: 15rpx;
-  }
+		.line1 {
+			width: 80rpx;
+			height: 8rpx;
+			background: #999999;
+			border-radius: 4rpx;
+			margin: 0 auto;
+			margin-top: 15rpx;
+		}
 
-  .grade {
-    height: 23rpx;
-    font-size: 24rpx;
-    color: #999999;
-    margin: 0 auto;
-    margin-top: 15rpx;
-    text-align: center;
-  }
+		.grade {
+			height: 23rpx;
+			font-size: 24rpx;
+			color: #999999;
+			margin: 0 auto;
+			margin-top: 15rpx;
+			text-align: center;
+		}
 
-  .confrim-btn {
-    height: 98rpx;
-    width: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
+		.confrim-btn {
+			height: 98rpx;
+			width: 100%;
+			display: flex;
+			align-items: center;
+			justify-content: center;
 
-    .okBtn {
-      width: 200rpx;
-      height: 64rpx;
-      background: linear-gradient(0deg, #015eea, #00c0fa);
-      border-radius: 32rpx;
-      color: #ffffff;
-      text-align: center;
-      line-height: 64rpx;
-    }
-  }
-}
+			.okBtn {
+				width: 200rpx;
+				height: 64rpx;
+				background: linear-gradient(0deg, #015eea, #00c0fa);
+				border-radius: 32rpx;
+				color: #ffffff;
+				text-align: center;
+				line-height: 64rpx;
+			}
+		}
+	}
 
-.slot-content {
-  padding: 0 20rpx;
-}
+	.slot-content {
+		padding: 0 20rpx;
+	}
 
-.confirm-modal {
-  .slot-content {
-    padding: 0 20rpx;
-    .content {
-      color: red;
+	.confirm-modal {
+		.slot-content {
+			padding: 0 20rpx;
 
-      .msg-list {
-        .item {
-          padding: 20rpx 0;
+			.content {
+				color: red;
 
-          &__left {
-            color: #666;
-            margin-right: 20rpx;
-          }
+				.msg-list {
+					.item {
+						padding: 20rpx 0;
 
-          &__right {
-            color: #333;
-          }
-        }
-      }
-    }
-  }
-}
-</style>
+						&__left {
+							color: #666;
+							margin-right: 20rpx;
+						}
+
+						&__right {
+							color: #333;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 112 - 31
pages3/polyv/detail.vue

@@ -1,19 +1,25 @@
 <template>
 	<view class="polyv_detail">
-		<uni-nav-bar left-icon="back" :statusBar="true" fixed="true" :title="detail.courseName || '课程详情'"
-			@clickLeft="clickLeft"></uni-nav-bar>
+		<uni-nav-bar v-if="isShowBar" left-icon="back" :statusBar="true" fixed="true"
+			:title="detail.courseName || '课程详情'" @clickLeft="clickLeft"></uni-nav-bar>
 		<view id="top">
 			<view class="video_box" v-if="!playVid">
 				<image :src="$method.splitImgHost(goodsData.coverUrl)" mode="widthFix"
 					style="width: 100%; height: 421rpx">
 				</image>
 			</view>
-			<view v-else>
+			<view v-else-if="playSource == 1">
 				<my-player ref="player" :playVid="playVid" :autoplay="autoplay" :allowSeek="isAllowSeek"
 					:playbackRate="playbackRate" :videoCurrentTime="videoCurrentTime || 0" @playing="playing"
 					@pause="pause" @ended="ended" @loadedmetadata="loadedmetadata" @timeupdate="timeupdate"
 					@playerError="playerError" @studyLog="studyLog"></my-player>
 			</view>
+			<view v-else>
+				<my-player2 ref="player2" :playFileId="playVid" :autoplay="autoplay" :progressControl="isAllowSeek"
+					:playbackRate="playbackRate" :currentTime="videoCurrentTime || 0" @playing="playing" @pause="pause"
+					@ended="ended" @loadedmetadata="loadedmetadata" @timeupdate="timeupdate" @playerError="playerError"
+					@studyLog="studyLog"></my-player2>
+			</view>
 			<view class="course_name">
 				<view class="course_titles">
 					<view class="video_t1" :class="{ one: !goodsData.buyNote }">{{
@@ -177,6 +183,7 @@
 	import courseTree from "@/components/course/courseTree.vue";
 	import PopupCamera from "../../components/popup/camera.vue";
 	import myPlayer from "@/components/myPlayer/polyvPlayer.vue";
+	import myPlayer2 from "@/components/myPlayer2/tcPlayer.vue";
 	import noteBox from "@/components/course/noteBox.vue";
 	import answerBox from "@/components/course/answerBox.vue";
 	import {
@@ -195,6 +202,7 @@
 		components: {
 			handoutsBox,
 			myPlayer,
+			myPlayer2,
 			noteBox,
 			answerBox,
 			courseTree,
@@ -210,6 +218,7 @@
 				showSet: false,
 				courseId: 0,
 				current: 0,
+				playSource: 1,
 				vid: "",
 				goodsId: 0,
 				goodsData: {},
@@ -233,6 +242,7 @@
 				photoConfig: false, //是否配置好拍照次数
 				photoHistoryList: [], //已拍照历史的下标点
 				sectionItem: {},
+				isShowBar: true,
 				isRebuild: false, //视频是否从重修目录点击
 				livingItem: "",
 				option: null,
@@ -264,7 +274,7 @@
 				beforeHideIsPlaying: false,
 				isLeave: false,
 				text: "",
-				throttleFn: throttle(this.postStudyRecord, 15000),
+				throttleFn: throttle(this.postStudyRecord, 15000)
 			};
 		},
 		computed: {
@@ -342,6 +352,38 @@
 				return
 			}
 			// #endif
+			// 针对腾讯商品并且是webview重载后的对URl参数的处理
+			if (option.obj) {
+				this.isShowBar = false;
+				console.log("检测option.obj", option)
+				console.log("解析后的option.obj", JSON.parse(decodeURIComponent(option.obj)))
+				option = JSON.parse(decodeURIComponent(option.obj));
+			}
+			// 请求商品类型并判断是否是小程序环境
+			this.$api.orderGetViewSign(Number(option.orderGoodsId)).then((res) => {
+				this.playSource = res.data.data.viewSign;
+				if (this.playSource == 2) {
+					// #ifdef MP-WEIXIN
+					this.$api
+						.courseSkipPort()
+						.then((res2) => {
+							console.log("详情页请求的域名", res2.data.data.domain, res2.data.data.skipPort)
+							let obj = {
+								skipPort: res2.data.data.skipPort,
+								...option
+							}
+							let webViewUrl = encodeURIComponent(
+								res2.data.data.domain +
+								'/pages3/polyv/detail?obj=' +
+								JSON.stringify(obj))
+							uni.redirectTo({
+								url: `/pages5/webview/detaillink?url=${webViewUrl}`
+							})
+						})
+					return;
+					// #endif
+				}
+			})
 			if (option.isOther) {
 				this.showMark = true;
 				return;
@@ -418,10 +460,13 @@
 				this.$api.lockDelLock({
 					action: "jxjy",
 					uuid: this.$method.getUuid(),
+				}).then(res => {
+					console.log("删除登录", res)
 				});
 			}
 		},
 		onHide() {
+			console.log('隐藏页面')
 			this.beforeHideIsPlaying = this.isPlaying;
 			if (this.isPlaying) {
 				this.refPlv.playPause();
@@ -447,12 +492,16 @@
 				uni.setStorageSync("loaclCheckClass", ary)
 			},
 			async init() {
-				// #ifdef MP-WEIXIN
-				this.isAllowSeek = "no";
-				// #endif
-				// #ifdef H5
-				this.isAllowSeek = "on";
-				// #endif
+				if (this.playSource == 2) {
+					this.isAllowSeek = false;
+				} else {
+					// #ifdef MP-WEIXIN
+					this.isAllowSeek = "no";
+					// #endif
+					// #ifdef H5
+					this.isAllowSeek = "on";
+					// #endif
+				}
 				this.photoList = [];
 				this.courseList = [];
 				this.photoConfig = false;
@@ -681,8 +730,14 @@
 				uni.$on(
 					"getSection",
 					debounce((item) => {
-						if (!this.refPlv && this.playVid) {
-							this.refPlv = this.$refs.player;
+						if (this.playSource == 2) {
+							if (!this.refPlv && this.playVid) {
+								this.refPlv = this.$refs.player2;
+							}
+						} else {
+							if (!this.refPlv && this.playVid) {
+								this.refPlv = this.$refs.player;
+							}
 						}
 						if (this.isPlaying) {
 							this.refPlv.playPause();
@@ -917,6 +972,17 @@
 						let {
 							data
 						} = res.data;
+						if(data && data.endTime > parseInt(new Date().getTime() / 1000)){
+							uni.showModal({
+								showCancel: false,
+								title: "提示",
+								content: "当前无法学习,"+ this.$method.timestampToTime(data.endTime,false) +"过后可继续学习",
+								success: (resultst) => {
+									uni.navigateBack();
+								},
+							});
+							return
+						}
 						if (!data.sectionId) {
 							data = this.menuAllList[0];
 						}
@@ -1086,7 +1152,7 @@
 				return Promise.resolve();
 			},
 			async isCanLearn() {
-				this.option.isQ !== "" && (await this.qCheckIsCanLearn());
+				await this.qCheckIsCanLearn();
 				await this.getGradeInfo();
 				await this.getGoodsDetail();
 			},
@@ -1097,7 +1163,11 @@
 				return 100 / this.list.length + "%";
 			},
 			loadedmetadata(event) {
-				this.refPlv = this.$refs.player;
+				if (this.playSource == 2) {
+					this.refPlv = this.$refs.player2;
+				} else {
+					this.refPlv = this.$refs.player;
+				}
 			},
 			getPhotoLastRecord() {
 				let {
@@ -1278,10 +1348,17 @@
 					await this.getPhotoLastRecord();
 				}
 				if (this.refPlv) {
-					this.refPlv.changeVid({
-						vid: recordingUrl,
-						videoCurrentTime: this.videoCurrentTime,
-					});
+					if (this.playSource == 2) {
+						this.refPlv.changeFileId({
+							fileId: recordingUrl,
+							currentTime: this.videoCurrentTime,
+						});
+					} else {
+						this.refPlv.changeVid({
+							vid: recordingUrl,
+							videoCurrentTime: this.videoCurrentTime,
+						});
+					}
 				}
 			},
 			getRecordLast(sectionItem) {
@@ -1469,7 +1546,7 @@
 				}).then((res) => {});
 			},
 			timeupdate(time) {
-				console.log("🚀 ~ file: detail.vue:1498 ~ timeupdate ~ time:");
+				// console.log("🚀 ~ file: detail.vue:1498 ~ timeupdate ~ time:");
 				if (this.noticeShow) {
 					this.refPlv.playPause();
 					return;
@@ -1483,9 +1560,8 @@
 				if (this.showCamera) {
 					this.refPlv.playPause();
 					this.refPlv.exitFullScreen();
-					return
+					return;
 				}
-				console.log("播放");
 				this.isPlaying = true;
 				this.clearPauseTimer();
 			},
@@ -1500,12 +1576,12 @@
 				this.showCamera = false;
 			},
 			pause() {
-				console.log("暂停");
+				console.log("视频暂停");
 				this.isPlaying = false;
 				this.erJianErZaoPauseTip();
 			},
 			async ended() {
-				console.log("结束");
+				console.log("视频播放完毕");
 				this.isPlaying = false;
 				uni.showToast({
 					icon: "none",
@@ -1652,9 +1728,10 @@
 					data
 				} = await this.$api.goodsDetail(this.goodsId);
 				this.goodsData = data.data;
+
 				if (data.data.firstChoiceStatus) {
 					uni.redirectTo({
-						url: `/pages3/polyv/preference?courseId=${this.courseId}&goodsId=${data.data.goodsId}&orderGoodsId=${this.orderGoodsId}&gradeId=${data.data.gradeId}&periodWaitTime=${this.option.periodWaitTime ? 1 : ""}&isQ=${this.option.isQ}&minClassHour=${data.data.minClassHour || 0}`,
+						url: `/pages3/polyv/preference?courseId=${this.courseId}&goodsId=${data.data.goodsId}&orderGoodsId=${this.orderGoodsId}&gradeId=${data.data.gradeId}&minClassHour=${data.data.minClassHour || 0}`,
 					});
 					return
 				}
@@ -1665,7 +1742,7 @@
 					await this.userConfirmInfoDetail();
 				}
 				if (this.erJianErZao) {
-					this.option.periodWaitTime && (await this.checkFinishRequiredCourse());
+					await this.checkFinishRequiredCourse()
 				}
 				this.goodsData.buyNote && this.baseHandoutTipList();
 				!this.gradeId && (this.gradeId = this.goodsData.gradeId);
@@ -1675,12 +1752,16 @@
 						this.autoplay = true;
 					}
 					if (this.goodsPlayConfig.drag > 0 && !this.erJianErZao) {
-						// #ifdef MP-WEIXIN
-						this.isAllowSeek = "yes";
-						// #endif
-						// #ifdef H5
-						this.isAllowSeek = "off";
-						// #endif
+						if (this.playSource == 2) {
+							this.isAllowSeek = true;
+						} else {
+							// #ifdef MP-WEIXIN
+							this.isAllowSeek = "yes";
+							// #endif
+							// #ifdef H5
+							this.isAllowSeek = "off";
+							// #endif
+						}
 					}
 					if (this.goodsPlayConfig.speed > 0) {
 						this.playbackRate = [0.5, 0.8, 1.0, 1.25, 1.5, 2.0];

+ 4 - 4
pages5/mockExam/registrationSuccess.vue

@@ -73,14 +73,14 @@
 		<view class="activity_phone">
 			<view class="titles">活动咨询电话</view>
 			<view class="phone_num">
-				<text @click="call('020-87085982')">020-87085982</text>、
-				<text @click="call('87085983')">87085983</text>
+				<text @click="call('13138489426')">13138489426</text>、
+				<text @click="call('13631379636')">13631379636</text>
 			</view>
 			<view class="titles">报名咨询</view>
 			<view class="phone_num">
-				<text style="margin-right: 20rpx" @click="call('13631379636')">苏老师13631379636
+				<text style="margin-right: 20rpx" @click="call('13434221571')">苏老师13434221571
 				</text>
-				<text @click="call('13138489426')">13138489426</text>
+				<text @click="call('13434221571')">13434221571</text>
 			</view>
 			<view class="titles">联系地址</view>
 			<view class="phone_num">广州市天河区燕岭路123号建设大厦3楼</view>

+ 39 - 0
pages5/webview/detaillink.vue

@@ -0,0 +1,39 @@
+<template>
+	<view>
+		<web-view :webview-styles="webviewStyles" :src="url"></web-view>
+	</view>
+</template>
+
+<script>
+	import {
+		metaSetScalable
+	} from "../../common/navTo";
+	export default {
+		data() {
+			return {
+				webviewStyles: {
+					progress: {
+						color: "#007AFF",
+					}
+				},
+				url: "",
+			};
+		},
+		onLoad(option) {
+			this.url = decodeURIComponent(option.url);
+			// #ifdef H5
+			metaSetScalable();
+			// #endif
+		},
+		onUnload() {
+			this.$api.lockDelLock({
+				action: "jxjy",
+				uuid: this.$method.getUuid(),
+			}).then(res => {
+				console.log("删除登录", res)
+			});
+		}
+	};
+</script>
+
+<style></style>

+ 1 - 1
pages5/webview/sdlink.vue

@@ -26,4 +26,4 @@ export default {
 };
 </script>
 
-<style></style>
+<style></style>