<template>
	<view class="container">

		<!-- 禁用弹窗 -->
		<restrictedTip ref="restrictedTip" />
		<view v-if="!mpCffp">
			<view class="shareheader" style="" v-if="coursesharing != 1 || deviceType==3">
				<!-- #ifdef APP -->
				<view class="iconfont icon-youjiantou" style="margin-left: 30rpx;" @click="goBack()"></view>
				<!-- #endif -->


				<view class="share-entrance">
					<view style="z-index: 99999;">
						<uni-popup ref="share" type="top" safeArea backgroundColor="#F4F2F3" :maskClick='true'
							@change="maskClick">
							<uni-popup-share @select="sharechange"></uni-popup-share>
						</uni-popup>
					</view>


					<!-- v-if="isWxH5" -->
					<view v-if="isWxH5" style="width: 40rpx;height: 40rpx;padding-right: 20rpx;">
						<image class="image" @click="reinvite" src="../../static/fastentry/Slice122.png" mode="">
						</image>
					</view>
					<view class="" style="width: 40rpx;height: 40rpx; ">
						<image class="image" @click="shareToggle" src="../../static/fastentry/Slice12.png" mode="">
						</image>
					</view>


				</view>
			</view>
		</view>

		<!-- 课程banner图 -->
		<!-- v-show="!sliceshare" -->
		<view class="courseBannerBox" v-if="!sliceshare && bannerViewType == '1'">
			<video v-if="isRenderVideo" id="myVideo" :src="courseInfo.filePathOss" :initial-time="viewTime"
				object-fit="contain" class="videoBox" :poster="courseInfo.fileFirstImage" :title="courseInfo.fileTitle"
				@play="playVideo" @pause="pause" @timeupdate="timeupdate"
				style="width: 100vw;height: 312.5rpx;"></video>
		</view>
		<view class="swiperBox" v-if="bannerViewType == '2'">
			<uni-swiper-dot :dots-styles="{
				  backgroundColor: 'rgba(145, 151, 201, .5)',
				    selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
				    bottom:100,
				    selectedBorder: '10rpx rgba(255, 255, 255, 1) solid',
				    width:8
				  }" :info="swiperList" :current="current" mode="default">
				<swiper autoplay :indicator-dots="true" :interval="3000" circular class="swiper-box"
					@change="changeSwiper">
					<swiper-item v-for="(item,index) in swiperList" :key="index" class="swiper-item-no-gap">
						<view class="swiper-item">
							<image style="height: 100%;width: 100%;display: block;" :src="item['filePath']"
								mode="aspectFill"></image>
						</view>
					</swiper-item>
				</swiper>
			</uni-swiper-dot>
		</view>

		<!-- 课程详情图 -->
		<view class="courseTitleContent">
			<view class="courseTitle">
				<view class="" style="width: 100%;">
					<h4>{{courseInfo.fileTitle}}</h4>
					<view>{{courseInfo.fileSynopsis}}</view>
				</view>

			</view>
			<view class="dataBox">
				<strong
					v-if="(courseInfo.status==1 || courseInfo.status==2 )&& courseInfo.coursePrice !== 0">￥{{Number(courseInfo.coursePrice).toFixed(2)}}</strong>

				<text v-if="courseInfo.coursePrice != 0">{{courseInfo.salesNumber}}人{{showName}}</text>

			</view>

		</view>
		<!-- 课程介绍，相关课程，讲师 -->
		<view class="courseProBox">
			<!-- tab区域 -->
			<!-- <view class="tab">
				<text :class="{'actived': tabType===1}" @click="switchTab(1)">详情</text>
				<text :class="{'actived': tabType===3}" @click="switchTab(3)">讲师</text>
			</view> -->
			<!-- tabContent区域 -->
			<view class="tabContent">
				<!-- 课程介绍 -->
				<view class="courseIntroContent" v-if="tabType===1" style="margin-top: 20rpx;">
					<!-- <view v-html="courseInfo.fileIntroduce" class="richTextContent"></view> -->
					<image class="imageStyle" v-for="(item,index) in imagesList" :key="index" style="width: 100%"
						:src="item" mode="widthFix" @click="previewImage(index)">
					</image>
				</view>
				<!-- 服务流程 -->
				<view class="courseIntroContent" v-if="tabType===4" style="margin-top: 20rpx;">
					<image :src="courseInfo.serviceContent" mode="widthFix"></image>
				</view>
				<!-- 相关课程列表 -->
				<view class="relationCourseListsContent" v-show="tabType===2">
					<view class="totalCourseCount">
						<text v-if="requiredCount">{{requiredCount}}节必修</text>
						<text v-if="nonRequiredCount"> + {{nonRequiredCount}}节必修</text>
					</view>
					<view class="courseItemContent" v-for="(item,index) in relatedCoursesLists" :key="item.fileId">
						<view class="courseInfoContent">
							<h4>{{index + 1}}.{{item.fileTitle}}<text
									class="courseType">{{item.fileType=='1' ? '必修' : '选修'}}</text></h4>
							<view class="timeContent">
								<view class="">
									{{secondsTransferPipe(Number(item.maxViewTime))}}/{{secondsTransferPipe(Number(item.courseTotalTime))}}
								</view>
							</view>
						</view>
						<view class="statusBtnContent" @click="play(item)">
							<i class="iconfont icon-24gf-playCircle"
								:style="{'opacity':courseInfo.status == 1 ? '0.5' : '1'}"></i>
							<text>{{courseInfo.status == 1 ? '不可播放' : '播放'}}</text>
						</view>
					</view>
				</view>
				<!-- 讲师介绍 -->
				<view class="lecturerContent" v-if="tabType===3">
					<view class="lecturerIntro">
						<view class="lecturerUrl">
							<image :src="lecturerInfo.lecturerUrl" mode="widthFix"></image>
						</view>
						<view>
							<p><text class="lecturerName">{{lecturerInfo.lecturerName}}</text></p>
							<template v-if="lecturerInfo?.lecturerRankNames">
								<p v-for="(item,index) in lecturerInfo.lecturerRankNames.split(',')" :key="index"
									class="lecturerTitle">
									<text>{{item}}</text>
								</p>
							</template>
						</view>
					</view>
					<h4>
						<text>讲师介绍</text>
					</h4>
					<view v-html="lecturerInfo?.lecturerIntroduce" class="lecturerText richTextContent"></view>
				</view>
				<view v-if="!mpCffp">
					<view class="buyBox" @click="saveOrder()"
						v-if="(courseInfo.status == 1 || courseInfo.status == 2) && courseInfo.coursePrice != 0">
						<text>{{showName}}</text>
					</view>
				</view>
				<view v-if="mpCffp" class="shareBuyBox">
					<view class="rightShare" @click="reinvite">
						<loadingIcon :loading="isLoading" v-if="isLoading" loadColor="#20269B" />
						<text style="margin-left: 5rpx;">分享</text>
					</view>
					<view class="leftBuy" @click="saveOrder()"
						v-if="(courseInfo.status == 1 || courseInfo.status == 2) && courseInfo.coursePrice != 0">
						<loadingIcon :loading="isOrderLoading" v-if="isOrderLoading" />
						<text style="margin-left: 5rpx;">{{showName}}</text>
					</view>

				</view>

			</view>
		</view>
		<boot-page loginSource="产品详情" v-if="sharelogin" :wayType="wayType" ref="sharelogin" @close="close"></boot-page>
		<uni-share-wx ref="sharewx"></uni-share-wx>
		<!-- <view class="markBox" @click="shareTipsFlag=false" v-if="shareTipsFlag">
			<view class="guideImgBox">
				<image src="../../static/Group132.png" mode="widthFix"></image>
				<view class="tips">
					<view style="margin-bottom:30rpx">请点击右上角菜单</view>
					<view>分享给朋友</view>
				</view>
			</view>
		</view> -->
		<!-- 分享得向导图 -->
		<ShareGuide :show.sync="shareTipsFlag" @close="shareTipsFlag=false"></ShareGuide>

		<login-popup ref="loginPopupCom" @confirm="c_confirmLoginPopup" @canle="canleLogin"></login-popup>
		<verify-popup ref="verifyPopupCom" title="温馨提示" content="请问您确认预约本课程吗？" @confirm="c_confirmVerifyPopup"
			@canle="canleVerify">
		</verify-popup>
		<uni-popup ref="subscribeSuccessPopup" :mask-click="false">
			<view class="loginPopupBox"
				style="text-align: center;width: 630rpx;padding-top: 35rpx;letter-spacing: 1rpx;">
				<view
					style="display: flex;align-items: center;;justify-content: center;font-size: 32rpx;font-weight: bold;color: #20269B;margin:40rpx 0 60rpx 0;">
					<view style="width: 6%;margin-right: 10rpx;margin-bottom: -10rpx;">
						<image src="../../static/images/correct.png" mode="widthFix"></image>
					</view>
					<view>
						恭喜您预约成功！
					</view>
				</view>
				<view style="text-align: left;padding:0 10rpx 10rpx 10rpx;font-size: 24rpx;color: #7a7a7a;">
					{{successMessage}}
				</view>
				<view style="margin-top: 10rpx;">
					<view @click="c_closeSubscribeSuccessPopup"><button class="popup_replenish_button2"
							size="mini">关闭</button>
					</view>
				</view>
			</view>
		</uni-popup>
		<partner-tip-popup ref="partnerTipPopup" @join="gotoJoinPartner" @continue="continueShare" />
		<!-- 海报弹窗 -->
		<sharePosterPop ref="sharePosterPop" :generatedImage="generatedImage" @closePoster="closePoster"
			:shareTxt="posterShareTxt" :imgType="posterImgType"></sharePosterPop>
		<!-- #ifdef H5 -->
		<view class="generateImageBox" ref="captureElement" v-if="!generatedImage">
			<view class="imgBox">
				<img v-if="showImg" class="posterImg" @load="handleBgImageLoad" @error="handleBgImageError"
					style="display: block;" :src="shareItem.fileFirstImage+'?t='+Math.random()" crossorigin="anonymous"
					alt="防缓存图片" />
			</view>
			<view class="txtBox">
				<view class="descriptionTxt">
					{{shareItem.fileSynopsis}}
				</view>
				<view class="productNum">
					￥{{shareItem.coursePrice}}
				</view>
				<view class="generateImageBottom">
					<view class="left">
						<view class="top">
							<view style="width: 100rpx;">
								<image :src="companyLogo" mode="widthFix"></image>
							</view>

							<view class="companyName">银盾家办</view>
						</view>
						<view class="bottom">
							{{posterDesTxt}}
						</view>
					</view>
					<!-- 二维码容器 -->
					<view class="qrcode-container">
						<canvas canvas-id="qrcode" class="qrcode-canvas"
							:style="{width: qrCodeSize + 'px', height: qrCodeSize + 'px'}"></canvas>
					</view>
				</view>
			</view>

		</view>
		<!-- #endif -->
	</view>
</template>

<script>
	import restrictedTip from '@/components/commonPopup/restrictedTip.vue';
	import PartnerTipPopup from "@/components/commonPopup/PartnerTipPopup.vue";
	import api from "../../api/api";
	import BootPage from "@/components/bootpage/bootpage.vue";
	import LoginPopup from "@/components/unipopup/loginPopup.vue";
	import VerifyPopup from "@/components/unipopup/verifyPopup.vue";
	import UniShareWx from "@/uni_modules/uni-share-wx/index.vue";
	import dataHandling from "@/util/dataHandling";
	import { hshare, setWechatShare, initJssdkShare } from '@/util/fiveshare';
	import { nanoid } from 'nanoid';
	import common from '../../common/common';
	import { baseURL, apiURL, cffpURL, companyInfo, shareURL } from "@/environments/environment";
	import sharePosterPop from '@/components/commonPopup/sharePosterPop.vue';
	import UQRCode from 'uqrcodejs';
	import { elementToImage } from '@/util/htmlToImage';
	import loadingIcon from '@/components/loading/loading.vue';
	import ShareGuide from '@/components/ShareGuide/ShareGuide.vue';
	import wx from 'weixin-js-sdk'
	import { previewImages } from '@/util/previewImage.js';
	export default {
		components: {
			UniShareWx,
			BootPage,
			LoginPopup,
			VerifyPopup,
			PartnerTipPopup,
			restrictedTip,
			sharePosterPop,
			loadingIcon,
			ShareGuide
		},
		data() {
			return {
				pollingTimer: null, // 轮询定时器
				miniShareInfo: {}, //通过小程序分享出去的信息
				sharePosterObj: {},
				userInfo: {},
				wayType: '1', //登陆的类型
				partnerType: '', //是否是合伙人
				addSystemType: '', //因为会从其他公众号跳转过来所以接受一下公众号的类型
				systemType: companyInfo.systemType,
				showName: '购买',
				successMessage: '',
				show: false,
				isWxH5: false,
				bannerViewType: '1',
				swiperList: [],
				current: 0,
				isWeixin: false,
				isRenderVideo: false,
				fileId: null,
				lecturerId: null,
				tabType: 3,
				lecturerInfo: {},
				courseInfo: {},
				relatedCoursesLists: [],
				orderId: '',
				userId: uni.getStorageSync('cffp_userId'),
				shareUserId: '',
				shareReadId: '',
				dataSource: '1',
				requiredCount: 0,
				nonRequiredCount: 0,
				videoPlaybackInfo: {},
				playbackId: '',
				totalTime: 0,
				auditionTime: 0,
				viewTime: 0,
				timer: null,
				loginType: '',
				sliceshare: false,
				realName: '',
				coursesharing: null,
				serialsNo: null,
				shareCode: null,
				sharelogin: false,
				startTime: '',
				newCourseInfo: {},
				isPauseFlag: true,
				CONFIG: {
					android: 'https://a.app.qq.com/o/simple.jsp?pkgname=com.xiaoxiao.shihaoo',
					ios: 'https://apps.apple.com/cn/app/%E6%98%AF%E5%A5%BD/id1457958161',
					scheme: 'com.qdxxzy.user://'
				},
				deviceType: null,
				shareTipsFlag: false,
				src: '',
				danmuList: [{
						text: '第 1s 出现的弹幕',
						color: '#ff0000',
						time: 1
					},
					{
						text: '第 3s 出现的弹幕',
						color: '#ff00ff',
						time: 3
					}
				],
				danmuValue: '',
				qrCodeUrl: 'https://example.com', //二维码的链接地址
				qrCodeSize: 100, //二维码的尺寸
				companyLogo: '../../static/suplogo.png',
				generatedImage: '', //生成的海报图片,
				shareItem: { fileFirstImage: '' },
				showImg: false,
				mpCffp: '',
				isLoading: false,
				posterDesTxt: '',
				isOrderLoading: false,
				posterShareTxt: '长按图片分享给朋友',
				orderCodeUrl: '',
				posterImgType: 'sharePoster',
				imagesList:[]
			};
		},
		methods: {
			previewImage (index)  {
			  // 过滤掉无效的图片地址（空字符串或非http开头）
			  const validUrls = this.imagesList.filter(url => url && url.trim() !== '');
			  if (validUrls.length === 0) {
			    uni.showToast({ title: '暂无图片', icon: 'none' });
			    return;
			  }
			  // 确保索引有效
			  const idx = Math.min(index, validUrls.length - 1);
			  previewImages(validUrls, idx);
			},
			gotoJoinPartner() {
				dataHandling.pocessTracking(
					'加盟',
					`用户在产品详情未加盟时点击了加盟按钮`,
					'点击',
					2,
					'产品详情',
					'pages/courseDetail/courseDetail'
				)
				uni.navigateTo({
					url: '/myPackageA/applyFranchise/applyFranchise'
				})
				this.$refs.partnerTipPopup.close()
			},
			// 打开微信分享啊
			reinvite() {
				//小程序没登录进入到系统，要回到小程序去登录
				if (uni.getStorageSync('mpCffp') && !uni.getStorageSync('dataToken')) {
					this.jumpMplogin()
					return
				}
				// 未登录去登录
				if (!uni.getStorageSync('loginType') || uni.getStorageSync('loginType') == 'visitor') {
					dataHandling.pocessTracking(
						'分享',
						`用户在产品详情未登录时点击产品分享按钮`,
						'点击',
						2,
						'产品详情',
						'pages/courseDetail/courseDetail'
					)
					this.sharelogin = true,
						this.wayType = '2'
					return
				}
				// 已登录，未成为合伙人
				if (this.userInfo && !this.userInfo['partnerType']) {
					dataHandling.pocessTracking(
						'分享',
						`用户在产品详情未加盟时点击产品分享按钮`,
						'点击',
						2,
						'产品详情',
						'pages/courseDetail/courseDetail'
					)
					this.$refs.partnerTipPopup.open()
					return
				}
				this.continueShare()
			},
			continueShare() {
				this.userId = uni.getStorageSync('cffp_userId')
				const shareCode = nanoid() + this.userId
				const jumptime = Date.parse(new Date()) / 1000

				// if(this.mpCffp){
				// 	if(uni.getStorageSync('posterItem')){
				// 		this.shareItem = JSON.parse(JSON.stringify(uni.getStorageSync('posterItem')))
				// 	}
				// 	this.posterShareTxt = '长按图片分享给朋友'
				// 	this.posterDesTxt = '识别二维码查看商品'
				// 	let newLink = shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
				// 		'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
				// 		this.userId + '&jumpUrl=' + jumptime +  "&"

				// 	this.qrCodeUrl = newLink
				// 	this.showImg = true
				// 	this.isLoading = true
				// 	this.submitsuessc(shareCode,jumptime),
				// 	this.posterImgType = 'sharePoster'
				// 	return
				// }
				//app分享
				// #ifdef APP-PLUS
				let dataWXform = {
					href: shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
						'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
						this.userId + '&jumpUrl=' + jumptime + "&",
					title: this.courseInfo.fileTitle,
					// summary: `加入我们开启学习之旅`,
					summary: this.courseInfo.fileSynopsis,
					imageUrl: this.courseInfo.displayImage,
					fileId: this.fileId,
					shareCode: shareCode
				}
				this.$refs.sharewx.open(dataWXform)
				dataHandling.pocessTracking(
					'分享',
					`用户在产品详情点击分享按钮，分享${this.courseInfo.fileTitle}`,
					'点击',
					2,
					'产品详情',
					'pages/courseDetail/courseDetail'
				)
				// #endif

				//#ifdef H5
				this.shareTipsFlag = true;
				if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
					let shareInfo = {
						title: this.courseInfo.fileTitle,
						// desc: '加入我们开启学习之旅',
						desc: this.courseInfo.fileSynopsis,
						link: `${shareURL}/pages/lanch/index?fileId=${this.fileId}&coursesharing=1&serialsNo=${nanoid()}&shareCode=${shareCode}&shareUserId=${this.userId}&jumpUrl=${jumptime}&landingPage=courseDetail&miniShare=1`,
						imgUrl: this.courseInfo.displayImage, //图片
						sharePage: 'courseDetail', //分享的哪个页面
						commonId: shareCode,
						userId: this.userId,
						fileId: this.fileId,
						shareCode: shareCode,
						isSaveShare: '1', //是否存贮分享便于统计分享数据
					}
					wx.miniProgram.postMessage({
						data: {
							type: 'share',
							shareData: JSON.stringify(shareInfo)
						}

					})
					return
				}
				this.getshareData2(shareCode, jumptime)

				// #endif
				this.$refs.partnerTipPopup.close()
				this.wayType = '1'
			},
			canleLogin() {
				this.show = false;
			},
			canleVerify() {
				this.show = false;
			},
			//关闭预约成功弹窗
			c_closeSubscribeSuccessPopup() {
				this.show = false;
				this.$refs.subscribeSuccessPopup.close();
			},
			//预约成功组件点击确认后的回调函数
			c_confirmVerifyPopup() {
				api.appointment({
					userId: uni.getStorageSync('cffp_userId'),
					courseId: this.fileId
				}).then((res) => {
					if (res['success']) {
						this.$refs.verifyPopupCom.canle();
						this.show = true;
						this.successMessage = res['message'];
						this.$refs.subscribeSuccessPopup.open();

					} else {
						uni.showToast({
							title: res['message'],
							duration: 2000,
							icon: 'none'
						})
					}
				})
			},
			// 登录组件成功后回调函数
			c_confirmLoginPopup() {
				//登录完成之后 弹出预约弹窗
				this.$refs.verifyPopupCom.open();
			},
			//关闭登录
			close(val, loginTypeSync, type) {
				// 直接点击了关闭登录的叉号
				if (type) {
					this.sharelogin = false
					return
				}
				if (val) {
					this.sharelogin = false
					this.userId = val;
					this.loginType = loginTypeSync;
					uni.setStorageSync('cffp_userId', this.userId);
					this.courseDetail();
					if (JSON.parse(uni.getStorageSync('cffp_userInfo'))) {
						this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
					}

					if (this.wayType == '2' && !this.userInfo['partnerType']) {
						this.$refs.partnerTipPopup.open()
						return
					}
					if (this.wayType == '2' && this.userInfo['partnerType']) {
						this.continueShare()
						return
					}
					if (loginTypeSync == 'codelogin' && this.wayType == '1') {
						setTimeout(() => {
							if (this.courseInfo.status == 1) {
								this.jumppurchase();
							}
						}, 500)
					} else {
						this.startTime = Date.parse(new Date()) / 1000;
						uni.setStorageSync('h5_startTime', this.startTime)
						setTimeout(() => {
							this.getuserRead(this.courseInfo.status)
						}, 500)
					}
				} else {
					this.sharelogin = false
					this.wayType = '1'
				}

			},
			isWx_Miniprogram() {
				// 判断是否在微信内

				// #ifdef APP-PLUS
				this.isWxH5 = true;
				// #endif
				// #ifndef APP-PLUS
				if (this.isWeiXin()) {
					this.isWxH5 = true;
				} else {
					this.isWxH5 = false;
				}
				// #endif
			},
			/**
			 * 判断是否为微信浏览器
			 * 兼容ios
			 * */
			isWeiXin() {
				return /micromessenger/i.test(navigator.userAgent.toLowerCase()) || typeof navigator.wxuserAgent !==
					'undefined'
			},

			goBack() {
				uni.navigateBack({
					delta: 1
				});
			},
			// 监听空白关闭
			maskClick(val) {
				this.sliceshare = val.show
			},

			shareToggle() {
				this.sliceshare = true
				this.$refs.share.open()
			},
			sharechange(val) {
				if (val.tabbar) {
					uni.switchTab({
						url: val.link
					})
					return
				} else {
					uni.navigateTo({
						url: val.link
					})
				}
			},
			// 订单保存
			saveOrder() {
				//小程序没登录进入到系统，要回到小程序去登录
				if (uni.getStorageSync('mpCffp') && !uni.getStorageSync('dataToken')) {
					this.jumpMplogin()
					return
				}
				this.loginType = uni.getStorageSync('loginType');
				if (this.loginType === 'visitor') {
					this.wayType = '1'
					if (this.systemType == 'IOS') {
						this.$refs.loginPopupCom.open();
						this.show = true;
					} else {
						this.sharelogin = true;
					}
				} else {
					if (this.coursesharing == '1') {
						this.h5jump()
					} else {
						if (this.systemType == 'IOS') {
							this.$refs.verifyPopupCom.open();
							this.show = true;
						} else {
							this.jumppurchase();
						}
					}
				}
			},
			h5jump() {
				let h5userId = uni.getStorageSync('cffp_userId');
				if (h5userId) {
					if (this.systemType == 'IOS') {
						this.show = true;
						this.$refs.verifyPopupCom.open();
					} else {
						this.jumppurchase();
					}
				} else {
					if (this.systemType == 'IOS') {
						this.show = true;
						this.$refs.loginPopupCom.open();
					} else {
						this.sharelogin = true;
					}
				}
			},
			jumppurchase() {
				if (uni.getStorageSync('cffp_userInfo')) {
					this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
				}
				// 登录并且是禁用状态
				if (this.userInfo.userIsActive == 2) {
					this.$refs.restrictedTip.open()
					return
				}

				let orderPlatform = ''
				// 不同得公司主题不同得购买平台
				// #ifdef APP
				if (companyInfo.companyType == '1') {
					orderPlatform = 'JS-FX-APP'
				}
				if (companyInfo.companyType == '2') {
					orderPlatform = 'YDFO-FX-APP'
				}
				// #endif
				// #ifdef H5
				if (companyInfo.companyType == '1') {
					orderPlatform = 'JS-FX-H5'
				}
				if (companyInfo.companyType == '2') {
					orderPlatform = 'YDFO-FX-H5'
				}
				// #endif
				// #ifdef MP-WEIXIN
				if (companyInfo.companyType == '1') {
					orderPlatform = 'JS-FX-MP'
				}
				if (companyInfo.companyType == '2') {
					orderPlatform = 'YDFO-FX-MP'
				}
				// #endif
				const param = {
					orderPlatform,
					productType: '1',
					productId: this.courseInfo.fileId,
					userId: uni.getStorageSync('cffp_userId'),
					shareUserId: this.shareUserId,
					shareReadId: this.shareReadId,
					shareCode: this.shareCode,
					dataSource: this.coursesharing == 1 ? '2' : this.dataSource
				}
				api.saveOrder(param).then(res => {
					if (res['success']) {
						this.orderId = res['data']['id'];
						if (this.coursesharing == '1') {
							this.userId = uni.getStorageSync('cffp_userId')
						}
						dataHandling.pocessTracking(
							'购买',
							`用户在产品中心点击购买按钮，购买${this.courseInfo.fileTitle}`,
							'点击',
							2,
							'产品详情',
							'pages/courseDetail/courseDetail'
						)

						// 如果是商城跳转到cffp得购买直接弹出海报框

						// if(this.mpCffp){
						// 	// if(uni.getStorageSync('posterItem')){
						// 	// 	this.shareItem = JSON.parse(JSON.stringify(uni.getStorageSync('posterItem')))
						// 	// }

						// 	// 因为是从家办商城小程序跳转到cffp的，所以这里购买要带家办商城的token，
						// 	let dataToken = uni.getStorageSync('dataToken')
						// 	console.log('家办商城dataToken',dataToken);
						// 	this.posterShareTxt = '保存图片扫码下单'
						// 	this.posterDesTxt = '扫码下单'
						// 	let newLink = shareURL + `/pages/orderConfirm/orderConfirm?fileId=${this.fileId}&orderId=${this.orderId}&userId=${this.userId}&dataToken=${encodeURIComponent(dataToken)}`
						// 	// let newLink = shareURL + `/pages/lanch/index?fileId=${this.fileId}&orderId=${this.orderId}&userId=${this.userId}&dataToken=${encodeURIComponent(dataToken)}&landingPage=orderConfirm`
						// 	console.log('newLink',newLink);
						// 	this.qrCodeUrl = newLink
						// 	this.showImg = true
						// 	this.isOrderLoading = true,
						// 	this.posterImgType = 'orderPoster'
						// 	return
						// }
						uni.navigateTo({
							url: `/pages/orderConfirm/orderConfirm?fileId=${this.fileId}&orderId=${this.orderId}&userId=${this.userId}`
						})
					} else {
						uni.showToast({
							title: res['message'],
							duration: 2000
						});
						return;
					}
				})
			},
			// 切换tab
			switchTab(type) {
				this.tabType = type;
				if (type === 3) {
					//this.lecturerQuery();
				} else if (type == 2) {
					//this.relatedCoursesList()
				} else if (type === 1) {
					//this.courseDetail();
				} else {
					//this.courseDetail();
				}
			},
			// 讲师信息查询
			lecturerQuery() {
				api.lecturerQuery({
					id: this.lecturerId
				}).then(res => {
					if (res['success']) {
						this.lecturerInfo = res['data']['lecturerInfos'][0];
					}
				})
			},
			extractImageUrls(htmlString) {
			  if (!htmlString) return [];
			  const imgRegex = /<img[^>]+src=["']([^"']+)["']/g;
			  const urls = [];
			  let match;
			  while ((match = imgRegex.exec(htmlString)) !== null) {
			    urls.push(match[1]);
			  }
			  return urls;
			},
			// 课程详情页面
			courseDetail() {
				this.userId = uni.getStorageSync('cffp_userId')
				const shareCode = nanoid() + this.userId
				const jumptime = Date.parse(new Date()) / 1000
				api.courseDetail({
					fileId: this.fileId,
					userId: uni.getStorageSync('cffp_userId'),
					packFileId: this.courseInfo.packFileId
				}).then(res => {
					if (res['success']) {
						this.courseInfo = this.shareItem = res['data']['data'];
						if (this.courseInfo.filePathOss != null && Number(this.courseInfo.filePathOss)) {
							this.bannerViewType = "2";
							this.getBanner(Number(this.courseInfo.filePathOss));
						}
						if(this.courseInfo.fileIntroduce){
							  this.imagesList =  this.extractImageUrls(this.courseInfo.fileIntroduce) 
							  console.log(' this.imagesList', this.imagesList);
						}
						//this.courseInfo.serviceContent = res['data']['data']['filePathOss'];
						this.lecturerId = res['data']['data']['fileLecturerId'];
						// this.lecturerQuery();
						// this.relatedCoursesList();
						if (uni.getStorageSync('h5_coursesharing')) {
							this.coursesharing = uni.getStorageSync('h5_coursesharing')
							this.getshareData()
						}
						if (this.courseInfo.status == 2) {
							this.findVideoPlayback();
						} else {
							this.isRenderVideo = true;
						}
						// #ifdef H5
						const shareCode = nanoid() + this.userId
						const jumptime = Date.parse(new Date()) / 1000
						if (dataHandling.h5RuntimeEnv() == 'wechat-miniprogram') {
							let newLink = ''
							let shareInfo = {
								title: this.courseInfo.fileTitle,
								// desc: '加入我们开启学习之旅',
								desc: this.courseInfo.fileSynopsis,
								imgUrl: this.courseInfo.displayImage, //图片
								sharePage: 'courseDetail', //分享的哪个页面
								commonId: shareCode,
								shareCode: shareCode,
								isSaveShare: '1', //是否存贮分享便于统计分享数据
								fileId: this.fileId,
							}
							if (uni.getStorageSync('loginType') == 'codelogin') {
								shareInfo.userId = this.userId
								newLink =
									`${shareURL}/pages/lanch/index?fileId=${this.fileId}&coursesharing=1&serialsNo=${nanoid()}&shareCode=${shareCode}&shareUserId=${this.userId}&jumpUrl=${jumptime}&landingPage=courseDetail&miniShare=1`
							} else {
								newLink =
									`${shareURL}/pages/lanch/index?fileId=${this.fileId}&landingPage=courseDetail&miniShare=1`
							}
							shareInfo.link = newLink
							wx.miniProgram.postMessage({
								data: {
									type: 'share',
									shareData: JSON.stringify(shareInfo)
								}

							})
							return
						}
						this.getshareData2(shareCode, jumptime, 0)
						// #endif
					}
				})
			},
			// 相关课程查询
			relatedCoursesList() {
				api.relatedCoursesList({
					fileId: this.fileId,
					userId: uni.getStorageSync('cffp_userId'),
					orderId: this.courseInfo.orderId,
					packFileId: this.courseInfo.packFileId
				}).then(res => {
					if (res['success']) {
						if (res['data'] && res['data']['data']) {
							this.relatedCoursesLists = res['data']['data']['relatedCourseList'];
							this.nonRequiredCount = res['data']['data']['nonRequiredCount'];
							this.requiredCount = res['data']['data']['requiredCount'];
						}
					}
				})
			},
			// 秒转时分秒格式
			secondsTransferPipe(value) {
				return dataHandling.secondsTransferPipe(value)
			},
			async play(item) {
				// 相关列表点击播放
				if (this.courseInfo.status == 1) {
					// 不可播放
					uni.showToast({
						title: '购买才可观看哦~',
						icon: 'none',
						duration: 2000
					});
				} else {
					this.videoContext.pause();
					if (this.fileId != item.fileId) {
						// 当点击的课程和当前播放的课程不一致时，执行此方法
						uni.showLoading({
							title: '加载中'
						});
						this.newCourseInfo = {
							fileId: item.fileId,
							packFileId: item.packFileId,
						}
						if (this.isPauseFlag) {
							this.pause()
						}
					}
				}
			},
			saveVideoPlayback() {
				// 视频播放轨迹保存
				const param = {
					id: this.playbackId ? this.playbackId : null,
					systemType: 1,
					userId: this.userId,
					fileId: this.fileId,
					packFileId: this.courseInfo.packFileId,
					totalTime: Math.floor(this.totalTime),
					viewTime: Math.floor(this.viewTime),
					playbackStatus: this.viewTime >= this.totalTime ? '2' : '1'
				}
				return new Promise((resolve, reject) => {
					if (this.viewTime == 0) {
						resolve('success');
						return;
					}
					api.saveVideoPlayback(param).then(res => {
						if (res['success']) {
							this.playbackId = res['data']['id'];
							resolve('success');
						} else {
							reject('fail')
						}
					}).catch((err) => {
						reject('fail')
					})
				})

			},
			findVideoPlayback() {
				// 查询视频播放最新记录
				const param = {
					systemType: 1,
					userId: this.userId,
					fileId: this.fileId,
					packFileId: this.courseInfo.packFileId,
				}
				api.findVideoPlayback(param).then(res => {
					if (res['success']) {
						this.videoPlaybackInfo = res['data'];
						this.viewTime = this.videoPlaybackInfo.viewTime
						this.viewTime = this.videoPlaybackInfo.viewTime ? this.videoPlaybackInfo.viewTime : 0;
						this.totalTime = this.videoPlaybackInfo.totalTime ? this.videoPlaybackInfo.totalTime : 0;
						this.packFileId = this.videoPlaybackInfo.id ? this.videoPlaybackInfo.id : null;
						this.isRenderVideo = true;
						// 跳转到指定位置
						this.videoContext.seek(this.viewTime);
						uni.hideLoading();
					} else {
						this.isRenderVideo = true;
						this.totalTime = this.viewTime = 0;
						// 跳转到指定位置
						this.videoContext.seek(this.viewTime);
						uni.hideLoading();
					}
				})
			},
			sendDanmu: function() {
				this.videoContext.sendDanmu({
					text: this.danmuValue,
					color: this.getRandomColor()
				});
				this.danmuValue = '';
			},
			videoErrorCallback: function(e) {
				uni.showModal({
					content: e.target.errMsg,
					showCancel: false
				})
			},
			getRandomColor: function() {
				const rgb = []
				for (let i = 0; i < 3; ++i) {
					let color = Math.floor(Math.random() * 256).toString(16)
					color = color.length == 1 ? '0' + color : color
					rgb.push(color)
				}
				return '#' + rgb.join('')
			},
			// 点击播放
			playVideo(e) {
				this.isPauseFlag = false;
				if (this.viewTime >= this.totalTime) {
					this.viewTime = 0;
					this.videoContext.seek(this.viewTime);
				}
				// 开始/继续播放
				if (this.courseInfo.status === 2) {
					if (this.timer) {
						clearInterval(this.timer)
					}
					this.timer = setInterval(() => {
						this.saveVideoPlayback()
					}, 20 * 1000)
				}
			},
			// // 暂停播放
			async pause() {
				if (this.courseInfo.status != 1) {
					this.isPauseFlag = true;
					if (this.timer) {
						clearInterval(this.timer)
					}
					const result = await this.saveVideoPlayback()
					if (result == 'success' && this.newCourseInfo.fileId) {
						this.fileId = this.newCourseInfo.fileId;
						this.courseInfo.packFileId = this.newCourseInfo.packFileId;
						this.playbackId = null;
						this.courseDetail();
					}
				}
			},
			timeupdate(e) {
				this.totalTime = e.detail.duration;
				// 播放进度变化
				this.viewTime = e.detail.currentTime > this.totalTime ? this.totalTime : e.detail.currentTime;
				if (this.courseInfo.status === 1) {
					// 如果是试听，那么当观看时间大于等于试听时间的时候，强制暂停，并出弹窗
					if (this.viewTime >= this.courseInfo.auditionTime) {
						this.videoContext.pause();
						// // 不可播放
						uni.showModal({
							content: '购买之后才可继续播放哦~',
							showCancel: false,
							success: function(res) {
								if (res.confirm) {} else if (res.cancel) {}
							}
						});
						this.videoContext.seek(0);
					}
				}
			},
			// 用户阅读
			getuserRead(type) {
				let UserReadRequestVO = {
					userId: uni.getStorageSync('cffp_userId'),
					serialsNo: this.serialsNo || 1,
					shareCode: this.shareCode || 1,
					shareUrl: window.location.href
				}
				api.userRead(UserReadRequestVO).then(res => {
					if (res['success']) {
						this.shareReadId = res.data.id
						if (type == 1) {
							this.jumppurchase()
						}
					}
				})
			},
			getshareData2(shareCode, jumptime, type = 1) {
				let newLink = type == 1 ? shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
					'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
					this.userId + '&jumpUrl=' + jumptime + "&" :
					shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId

				let data = {
					title: this.courseInfo.fileTitle,
					// desc: '加入我们开启学习之旅',
					desc: this.courseInfo.fileSynopsis,
					link: newLink, //分享链接
					imgUrl: this.courseInfo.displayImage, //图片
				}
				console.log('data', data);
				//安卓机型获取当前页面路径
				let url = window.location.href.split('#')[0];

				//ios机型获取当前页面路径
				let ua = navigator.userAgent.toLowerCase();
				let isWeixin = ua.indexOf('micromessenger') !== -1;
				if (isWeixin) {
					let isiOS = /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent); //ios终端
					if (isiOS && window.sessionStorage.getItem('firstEntryUrl')) {
						url = window.sessionStorage.getItem('firstEntryUrl').split('#')[0];
					}
				}
				hshare(data, url)
				if (type == 1) {
					this.submitsuessc(shareCode, jumptime)
				}
				if (type == 1) {
					dataHandling.pocessTracking(
						'点击',
						`用户在产品中心点击分享按钮，分享${this.courseInfo.fileTitle}`,
						'点击',
						2,
						'产品详情',
						'pages/courseDetail/courseDetail'
					)
				}

			},
			// H5 自定义分享
			getshareData() {
				let data = {
					title: this.courseInfo.fileTitle,
					// desc: '加入我们开启学习之旅',
					desc: this.courseInfo.fileSynopsis,
					link: window.location.href, //分享链接
					imgUrl: this.courseInfo.displayImage, //图片
				}
				var url = window.location.href.split('#')[0]
				hshare(data, url)

			},
			// 唤醒app 测试
			JsApiTicketApi() {
				let WxConfigRequestVO = {
					url: window.location.href.split('#')[0],
					systemType: this.addSystemType ? this.addSystemType : '1'
				}
				api.Wxshare(WxConfigRequestVO).then(res => {
					jWeixin.config({
						debug: false, //调试的时候需要 在app上回弹出errmg:config ok 的时候就证明没问题了 这时候就可以改为false
						appId: res.data.appId, //appid
						timestamp: res.data.timestamp, //时间戳
						nonceStr: res.data.nonceStr, //随机串 
						signature: res.data.signature, //签名
						jsApiList: res.data.jsApiList, //必填 是下面需要用到的方法集合
						openTagList: ['wx-open-launch-app', 'wx-open-launch-weapp']
					});
					jWeixin.ready(function(res1) {

					});
					jWeixin.error(function(res2) {

					});
				})
			},
			submitsuessc(shareCode, jumptime) {
				let platform = uni.getSystemInfoSync().platform
				let UserShareRequestVO = {
					systemType: platform == 'ios' ? '1' : '0',
					userId: uni.getStorageSync('cffp_userId'),
					businessType: '1', // 分享类型
					businessId: this.fileId, // 课程Id
					shareUrl: shareURL + "/pages/courseDetail/courseDetail?fileId=" + this.fileId +
						'&coursesharing=1' + '&serialsNo=' + nanoid() + '&shareCode=' + shareCode + '&shareUserId=' +
						this.userId + '&jumpUrl=' + jumptime + "&", // 分享链接
					shareType: '2', // 分享类型(1:图片分享; 2:链接分享)
					shareToWhere: 3, //分享到哪儿（1好友 2朋友圈）
					shareCode: shareCode
				}
				api.userShare(UserShareRequestVO).then(res => {
					if (res['success']) {
						// uni.showToast({
						// 	title: '分享成功',
						// 	duration: 2000
						// });
					}
				})
			},
			getBanner(itemType) {
				//加载轮播图
				api.getBanner({ fileCategory: 7, itemType: itemType }).then(res => {
					if (res['success']) {
						this.swiperList = res['data']['homeItemList']
					}
				})
			},
			changeSwiper(e) {
				if (e.detail.source == 'touch') {
					this.current = e.detail.current
				}
			},
			queryInfo() {
				api.queryInfo({ userId: uni.getStorageSync('cffp_userId') }).then(res => {
					if (res['success']) {
						delete res.data.commonResult
						const cffp_userInfo = {
							...res.data
						}
						// 账号禁用用户
						if(res.data.userIsActive&&res.data.userIsActive==2){
							this.$refs.restrictedTip.open()
							uni.setStorageSync('userIsActive',res.data.userIsActive)
							return
						}
						if(res.data.userIsActive&&res.data.userIsActive!=2){
							this.$refs.restrictedTip.close()
							uni.removeStorageSync('userIsActive')
						}
						uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))

						// this.realName = res.data.realName;
					}
				})
			},
			init() {
				if (!uni.getStorageSync('loginType') && uni.getStorageSync('loginType') == 'visitor') {
					api.loginVerification({
						"loginType": 1,

					}).then((res) => {
						if (res['success']) {
							this.userId = String(res['data']['userId']);
							uni.setStorageSync('isLogin', '1');
							uni.setStorageSync('cffp_userId', this.userId);
							uni.setStorageSync('loginType', 'visitor');
							uni.setStorageSync('uni-token', res.data['token']);

						}
					})
				}
			},

			// 海报分享方法
			// 背景图片加载成功
			handleBgImageLoad() {
				this.generateQrcodeAndCapture();
			},

			// 背景图片加载失败
			handleBgImageError() {
				console.log('产品图片加载完成');
				// uni.showToast({
				// 	title:'海报生成失败，图片'
				// })
			},

			// 顺序执行：生成二维码 -> 截图
			async generateQrcodeAndCapture() {
				try {
					// uni.showLoading({
					//   title: '准备生成分享图...'
					// });

					// 1. 先生成二维码
					console.log('开始生成二维码...');
					await this.makeQrcode();
					console.log('二维码生成完成');

					// 2. 等待500ms确保渲染完成
					await new Promise(resolve => setTimeout(resolve, 1500));

					// 3. 执行截图
					console.log('开始截图...');
					await this.captureImage();
					console.log('截图完成');

					// uni.hideLoading();
				} catch (error) {
					console.error('生成分享图失败:', error);
					// uni.hideLoading();
					// this.retryGenerate();
				}
			},


			// 生成二维码
			makeQrcode() {
				return new Promise((resolve, reject) => {
					// 创建实例
					const qr = new UQRCode();

					// 设置二维码内容
					qr.data = this.qrCodeUrl;

					// 设置二维码大小
					qr.size = this.qrCodeSize;

					// 设置前景色（二维码颜色）
					qr.foregroundColor = '#000000';

					// 设置背景色
					qr.backgroundColor = '#FFFFFF';

					// 设置边距
					qr.margin = 10;

					// 设置纠错等级
					qr.errorCorrectLevel = UQRCode.errorCorrectLevel.H;

					try {
						// 调用制作二维码方法
						qr.make();

						// 获取canvas上下文
						const ctx = uni.createCanvasContext('qrcode', this);

						// 清空画布
						ctx.clearRect(0, 0, this.qrCodeSize, this.qrCodeSize);

						// 将二维码绘制到canvas上
						qr.canvasContext = ctx;
						qr.drawCanvas();

						// 绘制完成
						ctx.draw(true, () => {
							console.log('二维码绘制完成');
							resolve();
						});
					} catch (err) {
						reject(err);
					}
				});
			},

			// 截图方法
			async captureImage() {
				try {
					// uni.showLoading({
					//   title: '正在生成图片...'
					// });

					// 获取DOM元素（在H5环境下）
					const element = this.$refs.captureElement.$el;
					// 调用工具函数生成图片
					const imageData = await elementToImage(element);
					this.generatedImage = imageData
					this.isLoading = false
					this.isOrderLoading = false
					this.$refs.sharePosterPop.toggleDropdown()

					// 压缩图片
					// const compressedImage = await this.compressImage(imageData);

					// this.generatedImage = compressedImage;
				} catch (error) {
					console.error('截图失败:', error);
					throw error; // 抛出错误以便外部捕获
				} finally {
					// uni.hideLoading();
				}
			},
			compressImage(base64) {
				return new Promise((resolve) => {
					const img = new Image();
					img.src = base64;
					img.onload = () => {
						const canvas = document.createElement('canvas');
						const ctx = canvas.getContext('2d');

						// 设置压缩后的宽高
						const maxWidth = 800;
						const maxHeight = 1200;
						let width = img.width;
						let height = img.height;

						if (width > maxWidth) {
							height *= maxWidth / width;
							width = maxWidth;
						}

						if (height > maxHeight) {
							width *= maxHeight / height;
							height = maxHeight;
						}

						canvas.width = width;
						canvas.height = height;
						ctx.drawImage(img, 0, 0, width, height);

						// 降低质量
						resolve(canvas.toDataURL('image/jpeg', 0.7));
					};
				});
			},
			// 关闭海报弹窗
			closePoster() {
				this.showImg = false
				this.generatedImage = ''
				// this.shareItem = {
				// 	fileFirstImage:''
				// }
			},
			// 跳转到小程序登录
			jumpMplogin() {
				let currentUrl = ``;
				if (this.miniShareInfo.miniShare) {
					if (uni.getStorageSync('loginType') == 'codelogin') {
						currentUrl =
							`${shareURL}/pages/lanch/index?fileId=${this.miniShareInfo.fileId}&coursesharing=1&serialsNo=${this.miniShareInfo.serialsNo}&shareCode=${this.miniShareInfo.shareCode}&shareUserId=${this.miniShareInfo.shareUserId}&jumpUrl=${this.miniShareInfo.jumpUrl}&landingPage=courseDetail&miniShare=1`
					} else {
						currentUrl =
							`${shareURL}/pages/lanch/index?fileId=${this.miniShareInfo.fileId}&landingPage=courseDetail&miniShare=1`
					}

				} else {
					currentUrl = `${shareURL}/pages/lanch/index?fileId=${this.fileId}&landingPage=courseDetail&noShare=1`
				}
				let data = {
					type: 'login',
					h5SystemType: 'cffp',
					link: encodeURIComponent(currentUrl),
					miniShare: this.miniShareInfo.miniShare ? this.miniShareInfo.miniShare : '' //是否从小程序的分享卡片进入的
				}
				wx.miniProgram.postMessage({
					data: {
						type: 'login',
						shareData: JSON.stringify(data)
					}

				})
				wx.miniProgram.navigateBack({
					delta: 1
				})
			}
		},
		onLoad(option) {


			// 通过小程序的分享卡片进来的，保存分享参数
			if (option.miniShare) {
				this.miniShareInfo = option
			}
			this.sharePosterObj = uni.getStorageSync('sharePosterObj') || {};
			// console.log('sharePosterObj======',this.sharePosterObj);
			// 如果通过海报分享进入系统，海报分享人为合伙人且普通客户完成购买了，那么海报分享人可以获得销售佣金
			this.shareUserId = this.sharePosterObj.inviteUserId || '';
			if (companyInfo.companyType == '1') {
				this.companyLogo = '../../static/myteam/Group1633.png';
			} else if (this.companyType == '2') {
				this.companyLogo = '../../static/suplogo.png';
			}
			if (option.addSystemType) {
				this.addSystemType = option.addSystemType
			}
			if (this.systemType == 'IOS') {
				this.showName = '预约';
				this.show = false;
			}
			this.fileId = option.fileId;

			this.courseInfo.packFileId = option.packFileId;
			this.deviceType = common.checkDeviceType();
			if (option.coursesharing) {
				this.userId = ''
				this.coursesharing = option.coursesharing
				this.isWeixin = true; // 是微信端
				this.JsApiTicketApi();
				this.serialsNo = option.serialsNo
				this.shareCode = option.shareCode
				this.shareUserId = option.shareUserId
				this.getuserRead()
				let endTime = Date.parse(new Date()) / 1000;
				let startTime = uni.getStorageSync('h5_startTime')

				uni.setStorageSync('h5_coursesharing', this.coursesharing);
				this.getshareData()
			}
			let dataForm = JSON.parse(JSON.stringify(uni.getStorageSync('cffp_userInfo')))
			// this.realName = dataForm.realName;
			// if (!this.realName) {
			// 	this.queryInfo();
			// }

			// this.switchTab(1);
		},
		onShow() {
			this.isLoading = false
			if (uni.getStorageSync('mpCffp')) {
				this.mpCffp = uni.getStorageSync('mpCffp')
			}
			this.showImg = false
			this.generatedImage = ''
			this.shareItem = { fileFirstImage: '' },
				this.loginType = uni.getStorageSync('loginType')
			this.init();
			this.isWx_Miniprogram();
			this.tabType = 1;
			this.wayType = '1'
			this.courseDetail();
			uni.setStorageSync('entryUrl', window.location.href.split('#')[0])
			if (uni.getStorageSync('cffp_userInfo')) {
				this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
			}
			this.userId = uni.getStorageSync('cffp_userId')
			if(uni.getStorageSync('loginType')=='codelogin'){
				this.queryInfo()
			}
			// #ifdef H5
			initJssdkShare(() => {
				setWechatShare();
			}, window.location.href);
			// #endif

		},
		onReady() {
			this.videoContext = uni.createVideoContext('myVideo');
		},
		onUnload() {
			if (this.courseInfo.status != 1 && this.viewTime != 0) {
				this.videoContext.pause();
				this.saveVideoPlayback();
				if (this.timer) {
					clearInterval(this.timer)
				}
			}
			// #ifdef H5
			initJssdkShare(() => {
				setWechatShare();
			}, window.location.href);
			// #endif
		},
		onHide() {
			this.$nextTick(() => {
				this.$refs.sharePosterPop.closeDropdown()
			})
		}
	}
</script>

<style lang="scss" scoped>
	.imageStyle {
		display: block;
		/* 将图像转为块级元素以去除底部空白 */
		width: 100%;
		/* 确保图像宽度适应容器 */
	
		margin-top: -1rpx;
	}
	.container {
		width: 100%;
		height: auto;
		box-sizing: border-box;
		position: relative;
		
		.generateImageBox {
			position: absolute;
			top: -100%;
			z-index: -1;
			border-radius: 20rpx;
			width: 100%;
			box-sizing: border-box;
			background-color: #fff;

			.imgBox {
				box-sizing: border-box;
				width: 100%;
				display: flex;
				align-items: center;
				justify-content: center;
				padding: 20rpx;

				.posterImg {
					width: 900rpx;
					height: 900rpx;
				}

			}

			.txtBox {
				padding: 20rpx;

				.descriptionTxt {
					font-size: 45rpx;
				}

				.productNum {
					font-size: 45rpx;
					font-weight: 500;
					margin: 10rpx 0;
					color: rgba(255, 74, 50, 1);
				}

				.generateImageBottom {
					width: 100%;
					display: flex;
					align-items: center;
					justify-content: space-between;

					.left {
						min-width: 500rpx;

						.top {
							width: 100%;
							display: flex;
							align-items: center;

							image {
								width: 100%;
							}

							.companyName {
								min-width: 300rpx;
								color: #333;
								font-size: 35rpx;
							}
						}

						.bottom {
							font-size: 30rpx;
							color: #999;
							margin-top: 10rpx;
							font-weight: 500;
						}
					}

					.qrcode-container {

						background: #fff;
						padding: 10rpx;
						border-radius: 10rpx;
						box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.1);

						.qrcode-canvas {
							display: block;
						}
					}
				}
			}

		}
	}

	page {
		padding: 0;
	}

	.loginPopupBox {
		margin-top: 8vh;
		padding: 20rpx 30rpx;
		border-radius: 20rpx;
		font-size: 30rpx;
		background: #fff;

		.popup_replenish_button2 {
			color: rgba(9, 44, 171, 1);
			background-color: #fff;
			border: 1rpx solid rgba(9, 44, 171, 1);
			border-radius: 200rpx;
			padding: 0rpx 50rpx;
			font-size: 30rpx;
		}
	}

	.swiperBox {
		height: 930rpx;
	}

	.swiper-box {
		height: 930rpx;
	}

	.swiper-item {
		/* #ifndef APP-NVUE */
		display: flex;
		/* #endif */
		flex-direction: column;
		justify-content: center;
		align-items: center;
		height: 930rpx;
		color: #fff;
	}

	.courseBannerBox {
		// background-color: #ebebeb;
		// display: flex;
		// justify-content: center;
		// z-index: 1;
	}

	.courseTitleContent {
		box-sizing: border-box;
		width: 100%;
		height: auto;
		background-color: #fff;
		margin-bottom: 10rpx;
		padding: 20rpx 0rpx 20rpx 30rpx;
		box-sizing: border-box;

		.courseTitle {
			display: flex;
			justify-content: space-between;
			margin-bottom: 16rpx;
			box-sizing: border-box;

			h4 {
				font-size: 40rpx;
			}
		}

		.dataBox {
			strong {
				font-size: 30rpx;
				color: #F15A1F;
				margin-right: 30rpx;
			}

			text {
				font-size: 28rpx;
				color: #333;
			}
		}
	}

	.awakenApp {
		display: flex;
		align-items: center;
		border-top-left-radius: 30rpx;
		border-bottom-left-radius: 30rpx;
		color: #fff;
		height: 60rpx;
		background: #20269B;
	}

	.shareheader {
		background-color: #fff;
		display: flex;
		/* #ifdef H5 */
		justify-content: flex-end;
		/* #endif */
		/* #ifdef APP */
		justify-content: space-between;
		/* #endif */
		align-items: center;
		height: 100rpx;

		.icon-youjiantou {
			display: inline-block;
			transform: rotate(180deg);
			font-size: 30rpx;
			z-index: 1;
		}

		.share-entrance {
			width: 120rpx;
			display: flex;
			justify-content: space-between;
			align-items: center;
			margin-right: 30rpx;

			.image {
				width: 40rpx;
				height: 40rpx;
				// margin-top: 10rpx;
				// margin-right: 25rpx;
			}
		}

	}

	.image {
		width: 30rpx;
		height: 30rpx;
	}

	.courseProBox {
		.tab {
			display: flex;
			justify-content: space-between;
			padding: 40rpx 150rpx 0;
			background-color: #fff;
			color: #666;
			font-size: 32rpx;

			text.actived {
				border-bottom: 2px solid #20269B;
				color: #333;
			}
		}

		.tabContent {
			padding-bottom: 200rpx;
			background-color: #fff;

			.statusBtnContent {
				display: flex;
				flex-direction: column;
				align-items: center;
				color: #999;
				font-size: 20rpx;

				.iconfont {
					font-size: 60rpx;
					color: #5359CD;
				}
			}

			.lecturerContent {
				.lecturerIntro {
					display: flex;
					padding: 40rpx 50rpx;
					border-bottom: 2rpx solid #fbfbfb;

					.lecturerUrl {
						width: 200rpx;
						height: 200rpx;
						border-radius: 50%;
						background-color: #ccc;
						overflow: hidden;
						margin-right: 40rpx;
					}

					.lecturerName {
						display: inline-block;
						background: #5359CD;
						border-radius: 10rpx;
						color: #fff;
						font-size: 28rpx;
						padding: 4rpx 20rpx;
					}

					.lecturerTitle {
						font-size: 28rpx;
						color: #5359CD;
						margin-top: 16rpx;
					}
				}

				h4 {
					padding-left: 30rpx;
					padding-top: 10rpx;
					padding-bottom: 20rpx;
					background-color: #fff;

					text {
						border-bottom: 1px solid #333;
						font-size: 30rpx;
					}
				}

				.lecturerText {
					padding: 0 28rpx;
					background-color: #fff;
					white-space: pre-wrap;
					width: 100%;
					box-sizing: border-box;
				}

			}

			.courseIntroContent,
			.relationCourseListsContent {
				padding: 0 28rpx;
				background-color: #fff;
				white-space: pre-wrap;
				width: 100%;
				box-sizing: border-box;
			}

			.relationCourseListsContent {
				.courseType {
					background-color: #5359CD;
					color: #fff;
					border-radius: 2rpx;
					padding: 2rpx 10rpx;
					font-size: 16rpx;
					margin-left: 10rpx;
				}

				.totalCourseCount {
					color: #20269B;
					font-size: 24rpx;
					padding: 8rpx 0;
					border: 1px solid #fbfbfb;
					border-left: none;
					border-right: none;
				}

				.courseItemContent {
					padding: 16rpx 0;
					border-bottom: 1px solid #fbfbfb;
					display: flex;
					align-items: center;
					justify-content: space-between;

					.courseInfoContent {
						width: 75%;

						h4 {
							color: #666;
						}

						.timeContent {
							color: #999;
							padding-left: 28rpx;

						}
					}
				}

			}

			.buyBox {
				position: fixed;
				bottom: 0;
				left: 0;
				right: 0;
				border-radius: 80rpx;
				background-color: #20269B;
				color: #fff;
				font-size: 36rpx;
				padding: 20rpx 90rpx;
				text-align: center;
				max-width: 60%;
				margin: 0 auto;
				display: flex;
				align-items: center;
				justify-content: center;
			}

			.shareBuyBox {
				position: fixed;
				bottom: 0;
				left: 0;
				right: 0;
				color: #fff;
				font-size: 36rpx;
				padding: 40rpx 20rpx;
				width: 100%;
				margin: 0 auto;
				display: flex;
				align-items: center;
				justify-content: space-between;
				background-color: #fff;
				box-sizing: border-box;

				.leftBuy {
					color: #fff;
					background-color: #20269B;
					padding: 20rpx 100rpx;
					border-radius: 80rpx;
					font-size: 36rpx;
					width: 50%;
					display: flex;
					align-items: center;
					justify-content: center;
				}

				.rightShare {
					margin-right: 30rpx;
					width: 30%;
					color: #20269B;
					font-size: 36rpx;
					padding: 20rpx 0rpx;
					border-radius: 80rpx;
					border: 1rpx solid #20269B;
					display: flex;
					align-items: center;
					justify-content: center;
				}
			}
		}
	}

	.markBox {
		position: fixed;
		left: 0;
		top: 0;
		bottom: 0;
		right: 0;
		width: 100%;
		height: 100%;
		color: #fff;
		display: flex;
		justify-content: flex-end;
		z-index: 100000;
		background: rgba(0, 0, 0, 0.8);

		.guideImgBox {
			margin: 20px auto;

			uni-image {
				width: 25% !important;
				position: absolute;
				right: 0;
				top: 0;
			}
		}

		.tips {
			margin-top: 30%;
			padding: 0 30px;
		}

		/* iPad横屏特定适配 */
		@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: landscape) {
			.container {
				.generateImageBox {
					max-width: 950rpx !important;

					.descriptionTxt {
						font-size: 33rpx !important;
					}

					.txtBox {
						.generateImageBottom {
							.left {
								width: 60% !important;

								.top {
									width: 100%;

									.companyName {
										min-width: 200rpx !important;
										font-size: 30rpx !important;
									}
								}

								.bottom {
									font-size: 28rpx !important;
								}
							}
						}
					}
				}
			}
		}

		/* 所有iPad竖屏 */
		@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) and (orientation: portrait) {

			/* 竖屏样式 */
			.generateImageBox {
				max-width: 950rpx !important;

				.descriptionTxt {
					font-size: 33rpx !important;
				}

				.txtBox {
					.generateImageBottom {
						.left {
							width: 60% !important;

							.top {
								width: 100%;

								.companyName {
									min-width: 200rpx !important;
									font-size: 30rpx !important;
								}
							}

							.bottom {
								font-size: 28rpx !important;
							}
						}
					}
				}
			}
		}
	}
</style>