335 lines
9.7 KiB
Vue
335 lines
9.7 KiB
Vue
<template>
|
||
<view>
|
||
<cu-custom bgColor="bg-gradual-blueness" :isBack="true" :backUrl="backUrl">
|
||
<block slot="backText">返回</block>
|
||
<block slot="content">课件管理</block>
|
||
</cu-custom>
|
||
<view v-if="TabCur == 0" class="svideo">
|
||
<video id="coursewareVideo" style="width: 100%;" :src="movie.url" :poster="movie.src" :show-progress="false"
|
||
:enable-progress-gesture="false" direction="-90" autoplay @play="onPlayerPlay($event)"
|
||
@pause="onPlayerPause($event)" @ended="onPlayerEnded($event)" @loadedmetadata="playerReadied($event)" @timeupdate="onPlayerTimeupdate($event)"></video>
|
||
</view>
|
||
<scroll-view scroll-x class="bg-white nav">
|
||
<view class="flex text-center">
|
||
<view class="cu-item flex-sub" :class="index==TabCur?'text-orange cur':''"
|
||
v-for="(item,index) in tabList" :key="index" @tap="tabSelect" :data-id="index">
|
||
{{item.name}}
|
||
</view>
|
||
</view>
|
||
</scroll-view>
|
||
<scroll-view scroll-x class="slist-tabs" scroll-with-animation :scroll-left="scrollLeft">
|
||
<view class="cu-item" :class="index==TabCurPostType?'text-white cur':''" v-for="(item,index) in postTypeList" :key="index" @tap="tabPostTypeSelect" :data-id="index">
|
||
{{item.NAME}}
|
||
</view>
|
||
</scroll-view>
|
||
<block>
|
||
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
|
||
<view v-if="TabCur==0" class="slist" v-for="(item,index) in list" :key="item.VIDEOCOURSEWARE_ID">
|
||
<view class="slist-item" @click="$noMultipleClicks(studyVideo,item)">
|
||
<view class="slist-img">
|
||
<image v-if="item.VIDEOCAPTURE" :src="baseImgPath + item.VIDEOCAPTURE" mode=""></image>
|
||
<image v-else src="../../../static/null.png" mode=""></image>
|
||
</view>
|
||
<view class="slist-right">
|
||
<view class="slist-title">
|
||
{{item.COURSEWARENAME}}
|
||
</view>
|
||
<view class="slist-p">
|
||
{{item.COURSEWAREINTRODUCE}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-if="TabCur==1" class="slist" v-for="(item,index) in list" :key="item.DATACOURSEWARE_ID">
|
||
<view class="slist-item" @click="$noMultipleClicks(studyData,item)">
|
||
<view class="slist-img">
|
||
<image :src="baseImgPath + item.COURSEWARECAPTURE" mode=""></image>
|
||
</view>
|
||
<view class="slist-right">
|
||
<view class="slist-title">
|
||
{{item.COURSEWARENAME}}
|
||
</view>
|
||
<view class="slist-p">
|
||
{{item.COURSEWAREINTRODUCE}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-if="list.length < 1 && 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>
|
||
</mescroll-body>
|
||
</block>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
basePath,baseImgPath,corpinfoId,loginSession,formatDate,loginUser
|
||
} from '@/common/tool.js';
|
||
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js"
|
||
export default {
|
||
mixins: [MescrollMixin], // 使用mixin
|
||
data() {
|
||
return {
|
||
baseImgPath: baseImgPath,
|
||
backUrl: '/pages/application/onlinexxks/home',
|
||
sTop: 0,
|
||
totalHeight: 0,
|
||
downOption: {
|
||
use: true,
|
||
auto: false
|
||
},
|
||
upOption: {
|
||
use: true,
|
||
auto: false,
|
||
noMoreSize: 1,
|
||
textNoMore: '--已经没有更多了--'
|
||
},
|
||
scrollLeft: 0,
|
||
dataFlag: 'noData',
|
||
list: [], //返回数据
|
||
page: 1, //分页参数--页数
|
||
rows: 10, //分页参数--每页数据条数
|
||
totalCount: 0, //分页参数--初始化页数
|
||
isEnd: false, //防止多次刷新
|
||
totalPage: 0, //分页参数--分页数量
|
||
noClick: true,
|
||
movie: {
|
||
'id': 0,
|
||
'title': '课件名称',
|
||
'src': '',
|
||
'actors': '主讲人',
|
||
'desc': '课件简介',
|
||
'url': ''
|
||
},
|
||
listVal: [],
|
||
TabCur: 0,
|
||
tabList : [
|
||
{id:'1',name:'视频课件'},
|
||
{id:'2',name:'资料课件'}
|
||
],
|
||
COURSEWARETYPE: '1',
|
||
TabCurPostType: 0,
|
||
postTypeList: [],
|
||
POSTTYPE: ''
|
||
}
|
||
},
|
||
onLoad() {
|
||
var _this = this
|
||
_this.background = require('@/common/background.json')
|
||
_this.showCount = -1
|
||
_this.currentPage = 1
|
||
_this.list = []
|
||
_this.isEnd = false
|
||
this.getDict()
|
||
loginSession()
|
||
},
|
||
onShow() {
|
||
},
|
||
methods: {
|
||
//跳转事件
|
||
getCoursewareInit() { //搜索按钮事件
|
||
var _this = this;
|
||
_this.showCount = -1;
|
||
_this.currentPage = 1;
|
||
_this.list = [];
|
||
_this.isEnd = false;
|
||
_this.getCoursewareData();
|
||
},
|
||
//跳转事件
|
||
downCallback(page) { //搜索按钮事件
|
||
var _this = this;
|
||
_this.showCount = -1;
|
||
_this.currentPage = 1;
|
||
_this.list = [];
|
||
_this.isEnd = false;
|
||
_this.getCoursewareData();
|
||
},
|
||
// 滑动到底方法
|
||
upCallback(page) {
|
||
var _this = this;
|
||
_this.showCount = -1;
|
||
_this.currentPage = _this.currentPage + 1;
|
||
_this.isEnd = false;
|
||
if (_this.totalPage >= _this.currentPage) {
|
||
_this.getCoursewareData(); //开始分页查询
|
||
}
|
||
},
|
||
getCoursewareData() {
|
||
var _this = this;
|
||
if (_this.isEnd) {
|
||
return
|
||
} else {
|
||
this.isEnd = true;
|
||
}
|
||
uni.showLoading({
|
||
title: "加载中..."
|
||
}); //加载中动画
|
||
uni.request({
|
||
url: basePath + '/app/courseware/list?showCount=' + _this.showCount + '¤tPage=' + _this.currentPage,
|
||
method: 'POST',
|
||
dataType: 'json',
|
||
header: {
|
||
'Content-type': 'application/x-www-form-urlencoded'
|
||
},
|
||
data: {
|
||
CORPINFO_ID: corpinfoId,
|
||
USER_ID: loginUser.USER_ID,
|
||
COURSEWARETYPE: _this.COURSEWARETYPE,
|
||
POSTTYPE: _this.POSTTYPE,
|
||
STATE: '0',
|
||
tm: new Date().getTime()
|
||
},
|
||
success: (res) => {
|
||
uni.hideLoading(); //结束加载中动画
|
||
if (res.data != null) {
|
||
_this.totalPage = res.data.page.totalPage
|
||
// 从后端获取的数据,将这一步骤放到异步获取后端数据的地方,对后端返回的数据进行处理
|
||
if (_this.list.length == 0) {
|
||
_this.list = res.data.varList;
|
||
} else {
|
||
if (res.data.varList != null) {
|
||
_this.list2 = res.data.varList;
|
||
_this.list = _this.list.concat(_this.list2);
|
||
}
|
||
}
|
||
_this.mescroll.endSuccess(res.data.varList.length, (res.data.page.totalPage > res.data.page.currentPage))
|
||
_this.mescroll.endUpScroll(res.data.page.totalPage == res.data.page.currentPage)
|
||
}
|
||
},
|
||
fail: () => {
|
||
// 请求失败,隐藏加载状态
|
||
_this.mescroll.endErr()
|
||
}
|
||
})
|
||
},
|
||
// 获取数据字典数据
|
||
getDict() {
|
||
var _this = this;
|
||
uni.showLoading({
|
||
title: '请稍候'
|
||
})
|
||
uni.request({
|
||
url: basePath + '/dictionaries/getLevelsByCourseware',
|
||
method: 'POST',
|
||
dataType: 'json',
|
||
header: {
|
||
'Content-type': 'application/x-www-form-urlencoded'
|
||
},
|
||
data: {
|
||
CORPINFO_ID: corpinfoId,
|
||
COURSEWARETYPE: _this.COURSEWARETYPE,
|
||
DICTIONARIES_ID: 'f6a7c4f5602f46e291d06b1390a3f820'
|
||
},
|
||
success: (res) => {
|
||
uni.hideLoading(); //结束加载中动画
|
||
var result = res.data.result
|
||
if ("success" == result) {
|
||
_this.postTypeList = res.data.list
|
||
_this.TabCurPostType = 0;
|
||
_this.POSTTYPE = _this.postTypeList[0].DICTIONARIES_ID
|
||
_this.getCoursewareInit()
|
||
}
|
||
}
|
||
})
|
||
},
|
||
tabSelect(e) {
|
||
this.TabCur = e.currentTarget.dataset.id;
|
||
if (this.TabCur == 1) {
|
||
this.movie.src = ''
|
||
this.movie.url = ''
|
||
}
|
||
if (this.COURSEWARETYPE != this.tabList[this.TabCur].id) {
|
||
this.COURSEWARETYPE = this.tabList[this.TabCur].id
|
||
this.getDict()
|
||
}
|
||
},
|
||
tabPostTypeSelect(e) {
|
||
this.TabCurPostType = e.currentTarget.dataset.id;
|
||
if (this.COURSEWARETYPE != this.postTypeList[this.TabCurPostType].DICTIONARIES_ID) {
|
||
this.POSTTYPE = this.postTypeList[this.TabCurPostType].DICTIONARIES_ID
|
||
this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60
|
||
this.getCoursewareInit()
|
||
}
|
||
},
|
||
validStr(str) {
|
||
if (str != null && str != '' && typeof(str) != "undefined" && str != 0)
|
||
return true
|
||
return false
|
||
},
|
||
studyVideo(item) {
|
||
if (this.validStr(item.VIDEOFILES)) {
|
||
this.movie.src = baseImgPath + item.VIDEOCAPTURE
|
||
this.movie.url = baseImgPath + item.VIDEOFILES
|
||
// var myvideo = uni.createVideoContext('coursewareVideo')
|
||
// // console.log('获取视频进度')
|
||
// // console.log('this.playTime:'+this.playTime)
|
||
// // console.log('this.playTime.toFixed:'+parseInt(this.playTime))
|
||
// myvideo.seek(parseInt(this.playTime));
|
||
} else {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '课件视频资源已失效,请联系管理员',
|
||
duration: 2000
|
||
});
|
||
}
|
||
},
|
||
// 监听播放
|
||
onPlayerPlay(player) {
|
||
this.isPaused = false
|
||
},
|
||
// 监听暂停
|
||
onPlayerPause(player) {
|
||
this.isPaused = true
|
||
},
|
||
// 当前播放位置发生变化时触发。
|
||
onPlayerTimeupdate(player) {
|
||
this.playTime = player.detail.currentTime
|
||
},
|
||
onPlayerEnded(player) {
|
||
this.isPaused = true
|
||
},
|
||
studyData(item) {
|
||
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) {
|
||
// console.log(res)
|
||
}
|
||
})
|
||
}
|
||
})
|
||
} else {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
title: '课件文件资源已失效,请联系管理员',
|
||
duration: 2000
|
||
});
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style>
|
||
.nav{margin-bottom: 4upx;}
|
||
.cu-tag+.cu-tag{
|
||
margin-left: 30upx;
|
||
}
|
||
</style>
|