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

974 lines
33 KiB
Vue
Raw Permalink Normal View History

2025-09-09 09:32:47 +08:00
<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>