sx_yjb_app/pages/application/onlinexxks/my-study.vue

974 lines
33 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view>
<cu-custom ref="cuCustom" bgColor="bg-gradual-blueness" :isBack="true" :isRingt="true" :backUrl="backUrl">
<block slot="backText">返回</block>
<block slot="content">学习详细</block>
</cu-custom>
<view v-show="isNoPass" class="waring">
<text>人脸识别失败,无法视频播放视频!</text>
</view>
<view v-if="TabCur == 0" class="svideo">
<!-- <video v-if="movie.poster" id="coursewareVideo" style="width: 100%;" :src="movie.src" :poster="movie.poster" :show-progress="false"-->
<!-- :enable-progress-gesture="false" direction="-90" :initial-time="playTime" @play="onPlayerPlay($event)"-->
<!-- @pause="onPlayerPause($event)" @ended="onPlayerEnded($event)" @timeupdate="onPlayerTimeupdate($event)"></video>-->
<view id="fixed">
<web-view-video
v-if="movie.src"
ref="video"
:src="movie.src"
:poster="movie.poster"
:play-time="Number(serverVideoPlayTime)"
@timeupdate="onPlayerTimeupdate"
@pause="fnPause"
@play="fnPlay"
@ended="fnEnded"
/>
</view>
</view>
<view class="sdetail">
<scroll-view scroll-x class="bg-white nav text-center" scroll-with-animation :scroll-left="scrollLeft">
<view class="cu-item " :class="index==TabCur?'text-blue cur':''" v-for="(item,index) in tabNav" :key="index"
@tap="tabSelect"
:data-id="index">
{{ item.name }}
</view>
</scroll-view>
<block v-if="TabCur==0">
<view v-if="pd.VIDEOLIST.length>0">
<view class="tcl_box" v-for="(item,index) in pd.VIDEOLIST" :key="item.COURSEWAREID">
<view class="tcl_item">
<view class="sleft">
<text class=" cuIcon-videofill mr10"
:class="item.COURSEWAREID == currentCoursewareID ? 'text-blue' : 'text-grey'"></text>
<text @click="$noMultipleClicks(fnVideoSwitching,index)" class="text-title">{{
item.COURSEWARENAME
}}
</text>
<text v-show="item.PLAYCOUNT>0" class="text-green">(已学习)</text>
</view>
<view class="tcl_time">
<view class="tcl_text">
<text class="mr20">{{ item.VIDEOTIMEFORMAT }}</text>
<text v-if="item.VIDEOTIME != 0">已学{{ item.VIDEOPROGRESS }}%</text>
</view>
<button class="cu-btn bg-orange round sm" @click="$noMultipleClicks(goStudyQuestion,item)">习题练习
</button>
</view>
</view>
</view>
<!--<view class="svideol" v-for="(item,index) in pd.VIDEOLIST" :key="item.COURSEWAREID">
<view class="sitem">
<view class="sleft">
<text v-if="item.COURSEWAREID == currentCoursewareID" class="text-blue cuIcon-videofill mr10"></text>
<text @click="$noMultipleClicks(studyVideo,index)">{{item.COURSEWARENAME}}</text>
<text v-show="item.PLAYCOUNT>0" class="text-green">(已学习)</text>
</view>
<view class="sright">
<button class="cu-btn bg-green round sm" @click="$noMultipleClicks(goStudyQuestion,item)">习题练习</button>
</view>
</view>
</view>-->
</view>
<view v-else-if="dataFlag=='noData'" class="dy-null">
<view class="dy-null-img">
<image src="../../../static/null.png" mode=""></image>
</view>
<view class="dy-null-title">
暂无数据
</view>
</view>
<view class="cu-tabbar-height"></view>
</block>
<block v-if="TabCur==1">
<view v-if="pd.DATALIST.length>0">
<view class="svideol" v-for="(item,index) in pd.DATALIST" :key="item.COURSEWAREID">
<view class="sitem">
<view class="sleft">
<text class="text-blue cuIcon-newsfill mr10"></text>
<!-- <text class="text-red">(必修)</text>-->
<text @click="$noMultipleClicks(studyData,index)">{{ item.COURSEWARENAME }}</text>
<text v-show="item.PLAYCOUNT>0" class="text-green">(已学习)</text>
</view>
<view class="sright">
<button class="cu-btn bg-green round sm" @click="$noMultipleClicks(goStudyQuestion,item)">习题练习
</button>
</view>
</view>
</view>
</view>
<view v-else-if="dataFlag=='noData'" class="dy-null">
<view class="dy-null-img">
<image src="../../../static/null.png" mode=""></image>
</view>
<view class="dy-null-title">
暂无数据
</view>
</view>
<view class="cu-tabbar-height"></view>
</block>
<view class="bottom-fixed">
<button class="cu-btn bg-green lg" @click="$noMultipleClicks(goExam)"></button>
</view>
</view>
</view>
</template>
<script>
import {
basePath,
baseImgPath,
loginUser
} from '@/common/tool.js';
import WebViewVideo from './web_view_video.vue'
let throttleTimer;
let throttleFlag;
// 人脸识别定时器
let faceAuthTimer;
export default {
components: {
WebViewVideo,
},
data() {
return {
baseImgPath: baseImgPath,
backUrl: '/pages/application/onlinexxks/my-tasks',
loading: false,
sTop: 0,
totalHeight: 0,
tabNav: [{
name: '视频课件'
},
{
name: '资料课件'
}
],
TabCur: 0,
scrollLeft: 0,
noClick: true,
coursewareIntroduce: '课程课件介绍',
STAGESTUDENTRELATION_ID: '',
// videoId
coursewareFiles: '',
coursewareCapture: '',
list: [],
pd: {
STUDYTASK_ID: '',
STUDY_NAME: '',
COURSEWARE_COUNT: 0,
STAGEEXAMPAPER_ID: '',
EXAMNAME: '',
EXAMTIME: '',
ANSWERSHEETTIME: '',
EXAMSCORE: '',
QUESTIONNUM: '',
EXAMSTATE: '',
PASSSCORE: '',
STAGEEXAMSTATE: '',
STAGEEXAMSCORE: '',
COMPLETE_COURSEWARE: 0,
VIDEOLIST: [],
DATALIST: [],
}, // 数据,
// 当前播放课件
currentCoursewareListIndex: 0,
currentCoursewareID: '',
currentCurriculumID: '',
videoRecord: {},
movie: {
'id': 0,
'title': '课件名称',
'src': '', //视频地址
'poster': '', //封面地址
'actors': '主讲人',
'desc': '课件简介'
},
dataFlag: 'noData',
// 人脸倒计时
randomTime: 0,
isNoPass: false,
showTitle: true,
// 服务器存入的视频播放时间
serverVideoPlayTime: 0,
// 当前视频播放进度
changeVideoPlayTime: 0,
submitTimeWaitForCount: 0, // 提交时间等待次数
}
},
// 初始化页面用
async onLoad(event) {
this.STAGESTUDENTRELATION_ID = event.STAGESTUDENTRELATION_ID
await this.fnGetData()
// 人脸识别后的
// if (event.isNoPass) {
// this.isNoPass = event.isNoPass
// }
// if (event.showTitle) {
// this.showTitle = false;
// }
// // 人脸识别后的
// if (event.FACED) {
// this.currentCoursewareID = event.CURRENTCOURSEWAREID
// this.currentCurriculumID = event.CURRICULUM_ID
// this.currentCoursewareListIndex = event.COURSEWAREINDEX
// await this.fnGetData()
// this.$forceUpdate()
// } else {
// await this.goFaceRecognition(0)
// }
},
onBackPress() {
if (this.timer) {
clearInterval(this.timer)
this.timer = null
}
this.$refs.cuCustom.BackPage()
return true
},
beforeDestroy() {
this.fnClearInterval()
},
onUnload() {
this.fnClearInterval()
// 如果定时器在运行则关闭
// this.saveVideoRecord(0, this.changeVideoPlayTime)
if (this.timer) {
clearInterval(this.timer)
this.timer = null
}
},
methods: {
// 异步调用 CORPINFO_ID,USER_ID
post(url, data) {
return new Promise((resolve, reject) => {
if (data && data.loading !== false) {
uni.showLoading({
title: "加载中",
});
}
uni.request({
url: basePath + url,
data: {
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
...data,
},
method: "POST",
header: {
"Content-type": "application/x-www-form-urlencoded",
},
success: (res) => {
if (res.statusCode !== 200) {
uni.showToast({
title: "网络错误请重试," + res.statusCode,
icon: "error",
duration: 2000,
});
}
if (data && data.loading !== false) {
uni.hideLoading();
}
if (res.data.result === "success") {
resolve(res.data);
} else {
uni.showToast({
title: res.data.msg || "系统开小差了",
icon: "none",
duration: 2000,
});
reject(res.data);
}
},
fail: (err) => {
if (data && data.loading !== false) {
uni.hideLoading();
}
uni.showToast({
title: "网络错误请重试",
icon: "none",
duration: 2000,
});
reject(err);
},
});
});
},
async fnGetData() {
uni.showLoading({
title: '请稍候'
})
const resData = await this.post('/app/stagestudentrelation/getMyTask', {
STAGESTUDENTRELATION_ID: this.STAGESTUDENTRELATION_ID,
});
this.pd = resData.pd;
this.pd.VIDEOLIST.forEach((ele) => {
if (ele.VIDEOTIME == 0) {
ele.VIDEOTIMEFORMAT = ''
ele.VIDEOPROGRESS = ''
} else {
ele.VIDEOTIMEFORMAT = this.formatVideoTime(ele.VIDEOTIME)
this.operatVideoList(ele)
}
})
// 默认播放第一个此时currentCoursewareListIndex默认是0人脸识别后这个值会变
this.currentCoursewareID = this.pd.VIDEOLIST?.[this.currentCoursewareListIndex].COURSEWAREID
this.currentCurriculumID = this.pd.VIDEOLIST?.[this.currentCoursewareListIndex].CURRICULUMID
this.$forceUpdate()
// 获取播放地址,设置播放时间
await this.fnGetVideoPlayInfo(
this.pd.VIDEOLIST?.[this.currentCoursewareListIndex].COURSEWAREFILES,
this.pd.VIDEOLIST?.[this.currentCoursewareListIndex].COURSEWAREID
)
uni.hideLoading();
},
// 获取视频详情,封面与路径
async fnGetVideoPlayInfo(videoId, courseware_id) {
const resData = await this.post('/app/audioOrVideo/getPlayInfo', {
videoId: videoId,
CURRICULUM_ID: this.currentCurriculumID,
VIDEOCOURSEWARE_ID: courseware_id,
});
if (!resData.PLAYURL) {
uni.showModal({
title: "温馨提示",
content: "检测到课件切换过于频繁!退出视频播放!",
confirmText: "退出视频播放",
cancelText: "确定",
success: (res) => {
uni.navigateBack();
}
})
return
}
await this.fnGetVideoPlayProgress(resData.PLAYURL, resData.COVERURL);
},
// 获取视频播放进度
async fnGetVideoPlayProgress(PLAYURL, COVERURL) {
const resData = await this.post('/app/coursestudyvideorecord/getVideoProgress', {
STUDYTASK_ID: this.pd.STUDYTASK_ID,
CURRICULUM_ID: this.currentCurriculumID,
VIDEOCOURSEWARE_ID: this.currentCoursewareID,
});
// 没有 存一次
if (!resData.pd.RESOURCETIME) {
await this.fnSubmitPlayTime("0", 0);
}
this.serverVideoPlayTime = Math.floor(resData.pd.RESOURCETIME) || 0
console.log('获取到当前视频进度' + this.serverVideoPlayTime)
this.movie.src = PLAYURL;
this.movie.poster = COVERURL;
console.log('获取到当前视频路径' + this.movie.src)
this.$forceUpdate()
// 开启 人脸定时扫 任务
},
// 保存视频进度
async fnSubmitPlayTime(isEnd, time) {
const resData = await this.post('/app/coursestudyvideorecord/save', {
CURRICULUM_ID: this.currentCurriculumID,
VIDEOCOURSEWARE_ID: this.currentCoursewareID,
STUDYTASK_ID: this.pd.STUDYTASK_ID,
RESOURCETIME: time,
IS_END: isEnd,
TYPE: 1,
});
this.videoRecord = resData.pd
if (isEnd == 1) {
this.pd.COMPLETE_COURSEWARE = resData.pd.COMPLETE_COURSEWARE
this.pd.VIDEOLIST[this.currentCoursewareListIndex].PLAYCOUNT = resData.pd.PLAYCOUNT
this.changeOperatVideoList(this.pd.VIDEOLIST[this.currentCoursewareListIndex])
}
this.$forceUpdate()
// this.changeOperatVideoList(this.pd.VIDEOLIST[this.currentCoursewareListIndex])
},
// 防抖
throttle(func, wait = 500, immediate = true) {
if (immediate) {
if (!throttleFlag) {
throttleFlag = true
// 如果是立即执行则在wait毫秒内开始时执行
typeof func === 'function' && func()
throttleTimer = setTimeout(() => {
throttleFlag = false
}, wait)
}
} else if (!throttleFlag) {
throttleFlag = true
// 如果是非立即执行则在wait毫秒内的结束处执行
throttleTimer = setTimeout(() => {
throttleFlag = false
typeof func === 'function' && func()
}, wait)
}
},
// 当前播放位置发生变化时触发。 只有
onPlayerTimeupdate(event) {
this.throttle(async () => {
this.changeOperatVideoList(this.pd.VIDEOLIST[this.currentCoursewareListIndex])
this.changeVideoPlayTime = event;
if (event - this.serverVideoPlayTime >= 5) {
this.serverVideoPlayTime = event;
this.submitTimeWaitForCount = ++this.submitTimeWaitForCount;
}
if (this.submitTimeWaitForCount === 6) {
this.submitTimeWaitForCount = 0;
await this.fnSubmitPlayTime("0", event);
}
}, 1000);
},
fnClearInterval() {
faceAuthTimer && clearInterval(faceAuthTimer);
faceAuthTimer = null;
},
fnEnded() {
if (this.changeVideoPlayTime - this.serverVideoPlayTime >= 10) {
uni.navigateBack();
return;
}
this.changeVideoPlayTime = 0;
this.fnSubmitPlayTime("1", 0);
// this.fnClearInterval();
},
fnPlay() {
// this.fnClearInterval();
// if (this.randomTime === 0) {
// // 十分钟后 进行人脸
// this.randomTime = new Date().getTime() + 60 * 1000 * 10;
// }
// faceAuthTimer = setInterval(async () => {
// if (new Date().getTime() >= this.randomTime) {
// // 到人脸识别的时候了
// this.fnClearInterval();
// this.$refs.video && this.$refs.video.fn('fullscreen.exit')
// this.movie.src = ''
// this.movie.poster = ''
// this.randomTime = 0;
// await this.fnSubmitPlayTime("0", this.changeVideoPlayTime);
// await this.goFaceRecognition(this.currentCoursewareListIndex);
// }
// }, 1000);
},
// 视频暂停
async fnPause() {
await this.fnSubmitPlayTime("0", this.changeVideoPlayTime);
// this.fnClearInterval();
},
// 切换课件
async fnVideoSwitching(index) {
var item = this.pd.VIDEOLIST[index]
//播放视频不是同一个的时候
if (this.currentCoursewareID != item.COURSEWAREID) {
this.movie.src = "";
this.movie.poster = "";
this.submitTimeWaitForCount = 0;
this.$forceUpdate()
this.$refs.video && this.$refs.video.fn('destroy')
// 当前播放时间 存起来
if (this.changeVideoPlayTime !== 0) {
await this.fnSubmitPlayTime("0", this.changeVideoPlayTime);
this.changeVideoPlayTime = 0;
this.serverVideoPlayTime = 0;
}
this.$forceUpdate()
console.log(item)
this.currentCoursewareListIndex = index
this.currentCoursewareID = item.COURSEWAREID
this.currentCurriculumID = item.CURRICULUMID
this.getPlayInfo(item.COURSEWAREFILES, item.COURSEWAREID)
this.getVideoProgress()
}
},
startTimer() {
this.seconds += 1
this.$nextTick(() => {
if (this.seconds == 1 * 60) {
}
})
},
async tabSelect(e) {
if (this.TabCur != e.currentTarget.dataset.id) {
this.TabCur = e.currentTarget.dataset.id;
this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60
this.currentCoursewareID = ''
if (this.TabCur == 1) {
this.movie.poster = ''
this.movie.src = ''
await this.fnSubmitPlayTime(0, this.changeVideoPlayTime)
if (this.timer) {
clearInterval(this.timer)
this.timer = null
}
} else {
await this.fnGetData()
// this.movie.poster = baseImgPath + this.pd.VIDEOLIST[0].COURSEWARECAPTURE
// this.movie.src = baseImgPath + this.pd.VIDEOLIST[0].COURSEWAREFILES
}
}
},
getData() {
console.log('getData')
return new Promise((resolve, reject) => {
var _this = this;
uni.showLoading({
title: '请稍候'
})
uni.request({
url: basePath + '/app/stagestudentrelation/getMyTask',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
STAGESTUDENTRELATION_ID: this.STAGESTUDENTRELATION_ID,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
if ("success" == res.data.result) {
uni.hideLoading();
_this.pd = res.data.pd;
_this.pd.VIDEOLIST.forEach((ele) => {
if (ele.VIDEOTIME == 0) {
ele.VIDEOTIMEFORMAT = ''
ele.VIDEOPROGRESS = ''
} else {
ele.VIDEOTIMEFORMAT = _this.formatVideoTime(ele.VIDEOTIME)
_this.operatVideoList(ele)
}
// 如果数据不更新的话,增加下面代码
// res.data.varList.splice(1, 0)
})
// 进入后自动播放第一个
if (_this.currentCoursewareID == '') {
this.currentCoursewareID = _this.pd.VIDEOLIST[0].COURSEWAREID
this.currentCurriculumID = _this.pd.VIDEOLIST?.[0].CURRICULUMID
console.log(this.currentCurriculumID)
// 初始化 服务器播放时间
let rTime = _this.pd.VIDEOLIST?.[0].RESOURCETIME
console.log(_this.pd)
console.log('getData---RESOURCETIME' + rTime)
this.serverVideoPlayTime = Math.floor(rTime) || 0
this.getPlayInfo(_this.pd.VIDEOLIST?.[0].COURSEWAREFILES, _this.pd.VIDEOLIST?.[0].COURSEWAREID)
// _this.movie.poster = baseImgPath + _this.pd.VIDEOLIST[0].COURSEWARECAPTURE
// _this.movie.src = baseImgPath + _this.pd.VIDEOLIST[0].COURSEWAREFILES
}
} else {
uni.showToast({
icon: 'none',
title: res.data.message,
duration: 2000
});
}
resolve(true)
}
})
})
},
changeOperatVideoList(ele) {
console.log('视频播放刷新百分比')
console.log(ele)
if (ele.PLAYCOUNT > 0) {
ele.VIDEOPROGRESS = 100
} else {
if (this.changeVideoPlayTime != 0) {
ele.VIDEOPROGRESS = (this.changeVideoPlayTime / ele.VIDEOTIME * 100).toFixed(0)
}
}
this.$forceUpdate()
console.log(ele.VIDEOPROGRESS)
},
operatVideoList(ele) {
console.log('初始化刷新百分比')
if (ele.PLAYCOUNT > 0) { //已学习
ele.VIDEOPROGRESS = 100
} else {
if (ele.VIDEOTIME == 0 || ele.RESOURCETIME == 0) { //视频无时长信息或没有开始学习
ele.VIDEOPROGRESS = 0
} else {
ele.VIDEOPROGRESS = (ele.RESOURCETIME / ele.VIDEOTIME * 100).toFixed(0)
this.$forceUpdate()
}
}
console.log(ele.VIDEOPROGRESS)
},
formatVideoTime(VIDEOTIME) {
var minute = Math.floor((VIDEOTIME / 60))
var second = (VIDEOTIME - minute * 60).toFixed(0)
return (minute < 10 ? ("0" + minute) : minute) + ":" + (second < 10 ? ("0" + second) : second)
},
validStr(str) {
if (str != null && str != '' && typeof (str) != "undefined" && str != 0)
return true
return false
},
async studyVideo(index) {
var item = this.pd.VIDEOLIST[index]
//播放视频不是同一个的时候
if (this.currentCoursewareID != item.COURSEWAREID) {
this.currentCoursewareListIndex = index
//保存上个视频的播放进度
if (this.currentCoursewareID != '') {
this.saveVideoRecord(0, this.changeVideoPlayTime)
}
this.serverVideoPlayTime = 0
this.changeVideoPlayTime = 0
this.currentTime = 0
// this.isPaused = false
this.currentCoursewareID = item.COURSEWAREID
this.currentCurriculumID = item.CURRICULUMID
this.$forceUpdate()
if (this.validStr(item.COURSEWAREFILES)) {
this.coursewareFiles = item.COURSEWAREFILES
this.coursewareCapture = item.COURSEWARECAPTURE
this.getPlayInfo(item.COURSEWAREFILES)
// this.movie.poster = baseImgPath + item.COURSEWARECAPTURE
// this.movie.src = baseImgPath + item.COURSEWAREFILES
this.getVideoProgress() //方法放在studyVideo加载后此方法里的this.playTime获取不到值
// todo 人脸需放开
// if (!this.pd.VIDEOLIST[index].ISCHECKFACE) {
// this.pd.VIDEOLIST[index].ISCHECKFACE = 1
// this.goFaceRecognition(index)
// return
// }
// myvideo.seek(parseInt(this.playTime));
// if(this.timer) {
// clearInterval(this.timer)
// this.timer = null
// }
// this.timer = setInterval(this.startTimer, 1000)
} else {
uni.showToast({
icon: 'none',
title: '课件视频资源已失效,请联系管理员',
duration: 2000
});
}
}
},
// 监听播放
onPlayerPlay(player) {
if (this.currentCoursewareID == '') {
this.studyVideo(0)
}
this.isPaused = false
},
// 监听暂停
onPlayerPause(player) {
this.isPaused = true
},
onPlayerEnded(player) {
this.isPaused = true
// localStorage.setItem('currentTime' + this.currentCoursewareID, 0)
this.playTime = 0
this.currentTime = 0
this.saveVideoRecord(1)
if (this.timer) {
clearInterval(this.timer)
this.timer = null
}
if (this.pd.VIDEOLIST[this.currentCoursewareListIndex].VIDEOTIME != 0) {
this.pd.VIDEOLIST[this.currentCoursewareListIndex].PLAYCOUNT = Number(this.pd.VIDEOLIST[this.currentCoursewareListIndex].PLAYCOUNT) + 1
this.pd.VIDEOLIST[this.currentCoursewareListIndex].RESOURCETIME = this.playTime
this.operatVideoList(this.pd.VIDEOLIST[this.currentCoursewareListIndex])
}
},
saveVideoRecord(isEnd, time) {
if (this.currentCoursewareID != '') {
uni.request({
url: basePath + '/app/coursestudyvideorecord/save',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
USERNAME: loginUser.USERNAME,
CURRICULUM_ID: this.currentCurriculumID,
VIDEOCOURSEWARE_ID: this.currentCoursewareID,
RESOURCETIME: time,
STUDYTASK_ID: this.pd.STUDYTASK_ID,
IS_END: isEnd,
TYPE: 1,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
this.videoRecord = res.data.pd
if (isEnd == 1) {
this.pd.COMPLETE_COURSEWARE = res.data.pd.COMPLETE_COURSEWARE
this.pd.VIDEOLIST[this.currentCoursewareListIndex].PLAYCOUNT = res.data.pd.PLAYCOUNT
}
}
})
}
},
getVideoProgress() {
uni.request({
url: basePath + 'app/coursestudyvideorecord/getVideoProgress',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
STUDYTASK_ID: this.pd.STUDYTASK_ID,
CURRICULUM_ID: this.currentCurriculumID,
VIDEOCOURSEWARE_ID: this.currentCoursewareID,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
if (res.data.pd != '') {
this.videoRecord = res.data.pd
this.serverVideoPlayTime = this.videoRecord.RESOURCETIME
}
}
})
},
getPlayInfo(videoId, courseware_id) {
uni.request({
url: basePath + 'app/audioOrVideo/getPlayInfo',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
videoId: videoId,
CURRICULUM_ID: this.currentCurriculumID,
VIDEOCOURSEWARE_ID: courseware_id || this.currentCoursewareID,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
console.log(res.data)
if (res.data != '') {
if (res.data.trafficOverruns) {
uni.showToast({
icon: 'none',
title: '商城课件点播流量超限,请联系管理员',
duration: 2000
});
} else {
this.movie.poster = res.data.COVERURL
this.movie.src = res.data.PLAYURL
}
}
}
})
},
studyData(index) {
var item = this.pd.DATALIST[index]
this.currentCoursewareListIndex = index
this.currentCoursewareID = item.COURSEWAREID
this.currentCurriculumID = item.CURRICULUMID
if (this.validStr(item.COURSEWAREFILES)) {
uni.showLoading({
title: "加载中..."
}); //加载中动画
uni.downloadFile({
url: baseImgPath + item.COURSEWAREFILES,
success: (res) => {
uni.hideLoading(); //结束加载中动画
uni.openDocument({
filePath: res.tempFilePath,
success: function (res) {
}
})
}
})
uni.request({
url: basePath + 'app/coursestudyvideorecord/save',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
USERNAME: loginUser.USERNAME,
CURRICULUM_ID: item.CURRICULUMID,
VIDEOCOURSEWARE_ID: item.COURSEWAREID,
RESOURCETIME: item.VIDEOTIME,
STUDYTASK_ID: this.pd.STUDYTASK_ID,
IS_END: 1,
TYPE: 2,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
this.pd.COMPLETE_COURSEWARE = res.data.pd.COMPLETE_COURSEWARE
this.pd.DATALIST[this.currentCoursewareListIndex].PLAYCOUNT = res.data.pd.PLAYCOUNT
}
})
} else {
uni.showToast({
icon: 'none',
title: '课件文件资源已失效,请联系管理员',
duration: 2000
});
}
},
async goFaceRecognition(index) {
this.currentCoursewareListIndex = index
await this.getData()
// uni.showModal({
// title: "温馨提示",
// content: "需进行人脸认证",
// confirmText: "确认",
// success: (res) => {
// if (res.confirm) {
// uni.redirectTo({
// url: '/pages/application/onlinexxks/face/index?CURRICULUM_ID=' + this.currentCurriculumID
// + '&STAGESTUDENTRELATION_ID=' + this.STAGESTUDENTRELATION_ID
// + '&CURRENTCOURSEWAREID=' + this.currentCoursewareID + '&COURSEWAREFILES=' + this.coursewareFiles
// + '&COURSEWARECAPTURE=' + this.coursewareCapture + '&PLAYTIME=' + this.serverVideoPlayTime
// + '&COURSEWAREINDEX=' + index
//
// })
// }
// if (res.cancel) {
// uni.redirectTo({
// url: '/pages/application/onlinexxks/my-tasks'
// });
// }
// }
// })
},
//习题练习
goStudyQuestion(item) {
uni.request({
url: basePath + '/app/mycurriculum/countForStudyByCoursewareId',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
CURRICULUMID: item.CURRICULUMID,
COURSEWAREID: item.COURSEWAREID,
COURSEWARETYPE: item.COURSEWARETYPE,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
uni.hideLoading(); //结束加载中动画
if ("success" == res.data.result) {
if (res.data.pd.COUNT > 0) {
this.goStudyDetail(item)
} else {
uni.showToast({
icon: 'none',
title: '课件还没有添加课件习题',
duration: 2000
})
}
}
}
})
},
goStudyDetail(item) {
/*
if (item.STUDYSTATE == '1') {
uni.request({
url: basePath + '/app/coursestudentrelation/updateStudentState',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
USERNAME: loginUser.USERNAME,
TYPE: '1',
STUDYSTATE: '2',
STAGESTUDENTRELATION_ID: this.STAGESTUDENTRELATION_ID,
},
success: (res) => {
if ("success" == res.data.result) {
} else {
uni.showToast({
icon: 'none',
title: res.data.message,
duration: 2000
});
}
}
});
}*/
uni.redirectTo({
url: '/pages/application/onlinexxks/my-study-detail?STUDYTASK_ID=' + this.pd.STUDYTASK_ID + '&COURSEWAREID=' + item.COURSEWAREID + '&COURSEWARETYPE=' +
item.COURSEWARETYPE + '&CURRICULUM_ID=' + item.CURRICULUMID + '&STAGESTUDENTRELATION_ID=' + this.STAGESTUDENTRELATION_ID
})
},
goExam() {
uni.request({
url: basePath + '/app/stagestudentrelation/checkMyTask',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
STAGESTUDENTRELATION_ID: this.pd.STAGESTUDENTRELATION_ID,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
uni.hideLoading(); //结束加载中动画
console.log(res)
if (res.data.code == 500) {
uni.showToast({
icon: 'none',
title: res.data.msg,
duration: 2000
})
return
}
uni.showModal({
title: '',
content: '确定要进行考试吗?',
cancelColor: '#000000',
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
// uni.redirectTo({
// url: '/pages/application/onlinexxks/my-exam-curriculum?CURRICULUM_ID=' + this.currentCurriculumID +
// '&STAGESTUDENTRELATION_ID=' + this.STAGESTUDENTRELATION_ID
// })
uni.redirectTo({
url: '/pages/application/onlinexxks/my-exam-stage?STUDYTASK_ID=' + this.pd.STUDYTASK_ID + '&STAGEEXAMPAPER_ID=' + this.pd.STAGEEXAMPAPER_ID +
'&STAGESTUDENTRELATION_ID=' + this.pd.STAGESTUDENTRELATION_ID
});
}
}
})
}
})
// }
},
BackPage() {
uni.redirectTo({
url: '/pages/application/onlinexxks/my-curriculum',
})
}
}
}
</script>
<style>
.sdetail {
margin-top: 30px;
}
</style>