<template>
	<view class="app" v-if="list">
		<image class="topimage" :src="baseurl + list.trainingItemPosterUrl" mode=""></image>
		<view class="title">
			{{list.trainingItemTitle}}
		</view>
		<view class="border"></view>
		<u-tabs :list="tablist" :is-scroll="false" :current="tabcurrent" @change="change" font-size='34' bar-height='3'>
		</u-tabs>
		<view class="detail" v-if="tabcurrent==0">
			{{list.trainingItemDetails}}
		</view>
		<view class="directory" v-if="tabcurrent==1">
			<view class="item" v-for="(item,index) in list.trainingOrderItemDirectoryVOList" :key="index">
				<view class="text">
					<span class='DirectoryName'>{{item.itemDirectoryName?item.itemDirectoryName:''}}</span>
					<span class='texttitle'>{{item.itemDirectoryTitle?item.itemDirectoryTitle:''}}</span>
				</view>
				<view class="Introduce">
					{{item.itemDirectoryIntroduce?item.itemDirectoryIntroduce:''}}
				</view>
				<view class="" v-if="trainingOrderStatus=='PAY'">
					<view class="play" @tap='videoplay(item)'
						:style="item.itemDirectoryWatchStatus=='NOT_WATCHED'?'background-color: #3D7DCA;color:#fff':''"
						v-if="item.itemDirectoryWatchStatus=='NOT_WATCHED'">
						开始播放
					</view>
					<view class="play" @tap='videoplay(item)'
						:style="item.itemDirectoryWatchStatus=='WATCHED'?'background-color: #E3EAF5;color:#3D7DCA':''"
						v-if="item.itemDirectoryWatchStatus=='WATCHED'">
						继续播放
					</view>
					<view class="play" @tap='videoplay(item)'
						:style="item.itemDirectoryWatchStatus=='FINISHED_READING'?'background-color: #E6E6E6;color:#76777B':''"
						v-if="item.itemDirectoryWatchStatus=='FINISHED_READING'">
						已看完
					</view>
				</view>
				<view class="play" v-else @tap='novideoplay'>
					开始播放
				</view>
			</view>
		</view>
		<u-popup v-model="videoshow" mode="center" closeable @close='videoshowfalse'>
			<video id="video" v-if="videoshow" :src="baseurl+videoitem.itemDirectoryUrl" @timeupdate='videotimeupdate'
				:initial-time='videoitem.watchTime' @error='videoerror' :custom-cache="false"
				@play='videoplays'></video>
		</u-popup>
		<u-toast ref="uToast" />
	</view>
	<view class="" v-else style="padding-top: 100rpx;">
		<u-empty text="暂无内容" mode="list" icon-size='240' font-size='32'></u-empty>
	</view>
</template>
<script>
	import baseurl from '@/api/baseurl.js'
	import {
		selectTrainingOrderVideoDetails,
		insertTrainingItemWatchRecord,
		getTrainingItemWatchRecord
	} from '@/api/Ordervideolearning/index.js'
	export default {
		data() {
			return {
				list: undefined,
				baseurl: undefined,
				nurseStationPersonId: undefined,
				tabcurrent: 0, //tabsindex
				tablist: [{ //tabs的list
					name: '详情'
				}, {
					name: '目录'
				}],
				trainingItemId: undefined, //上个页面id
				trainingOrderNo: undefined, //上个页面orderno
				videoshow: false, //视频开关
				videoitem: {
					watchTime: 0,
				}, //视频对象
				trainingOrderStatus: undefined,
				trainingOrderDetailsId: undefined,
				videoerroshow: true,
				videoContext: undefined,
			};
		},
		methods: {
			//播放进度变化
			videotimeupdate(e) {
				//e.detail.currentTime是已经播放了多久，e.detail.duration是该视频多长
				this.videoitem.watchTime = e.detail.currentTime
			},
			//关闭播放弹出框
			videoshowfalse() {
				if (this.videoerroshow) {
					if (this.videoitem.watchTime) {
						this.videoitem.watchTime = this.formatSeconds(this.videoitem.watchTime)
					}
					insertTrainingItemWatchRecord(this.videoitem).then(res => {
						this.videoitem.watchTime = 0
						this.info();
						this.videoshow = false
					})
				}
			},
			//视频播放出错
			videoerror(e) {
				this.$refs.uToast.show({
					title: '暂无视频',
					type: 'error',
					duration: '2000'
				})
				this.videoerroshow = false
				this.videoshow = false
			},
			//novideoplay未购买
			novideoplay() {
				this.$refs.uToast.show({
					title: '您未购买',
					type: 'error',
					duration: '2000'
				})
			},
			//视频播放
			videoplays() {
				if (this.videoitem.watchTime) {
					this.videoContext.seek(this.videoitem.watchTime)
				}
			},
			videoplay(item) {
				this.videoerroshow = true
				if (item.itemDirectoryUrl) {
					if (!item.watchTime) {
						this.videoitem.watchTime = 0
					}
					this.videoitem = item
					this.videoitem.trainingOrderId = this.list.trainingOrderId
					this.videoitem.trainingItemId = this.list.trainingItemId
					this.videoitem.nurseStationPersonId = this.nurseStationPersonId
					this.videoitem.trainingItemTitle = this.list.trainingItemTitle
					this.videoitem.nursePersonName = uni.getStorageSync('nursePersonName')
					if (item.itemDirectoryWatchStatus == 'WATCHED') {
						getTrainingItemWatchRecord(this.videoitem.trainingOrderId, this.videoitem.trainingItemId, this
							.videoitem
							.trainingItemDirectoryId, this.videoitem.nurseStationPersonId).then(res => {
							if (res.code == 200) {
								if (res.data.watchTime) {
									this.videoitem.watchTime = res.data.watchTime
									this.videoitem.watchTime = this.formatsecond(this.videoitem.watchTime)
								}
							}
						})
					}
					this.videoshow = true
					this.videoContext = uni.createVideoContext('video', this)
				} else {
					this.$refs.uToast.show({
						title: '暂无视频',
						type: 'error',
						duration: '2000'
					})
				}
			},
			info() {
				selectTrainingOrderVideoDetails(this.trainingItemId, this.trainingOrderNo, this.trainingOrderDetailsId)
					.then(
						res => {
							this.list = res.data
						})
			},
			//点击tabs
			change(index) {
				this.tabcurrent = index;
			},
			//时分秒转秒
			formatsecond(value) {
				value = value.split(':')
				var number = 0
				value.forEach(e => {
					e = Number(e)
				})
				value[0] = value[0] * 24 * 60
				value[1] = value[1] * 60
				value.forEach(e => {
					e = Number(e)
					if (e > 0) {
						number = number + e
					}
				})
				return number
			},
			//秒转时分秒
			formatSeconds(value) {
				let result = parseInt(value)
				let h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600);
				let m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result /
					60 % 60));
				let s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
				let res = '';
				res += `${h}:`;
				res += `${m}:`;
				res += `${s}`;
				return res;
			},
		},
		onLoad(options) {
			const that = this
			this.baseurl = baseurl
			this.trainingOrderStatus = options.trainingOrderStatus
			this.trainingItemId = options.trainingItemId
			this.trainingOrderNo = options.trainingOrderNo
			this.trainingOrderDetailsId = options.trainingOrderDetailsId
			this.info();
			const value = uni.getStorageSync('nursePersonId');
			if (value) {
				that.nurseStationPersonId = value
			} else {}
		},
	}
</script>

<style lang="scss">
	@import "./Ordervideolearning.scss";
</style>
