QA-UniApp-wlaq/pages/application/onlinexxks/courseware-list.vue

335 lines
9.7 KiB
Vue
Raw Normal View History

2024-11-19 14:17:54 +08:00
<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 + '&currentPage=' + _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>