qa-prevention-gwj-first-app/pages/application/onlinexxks/courseware-list.vue

331 lines
9.6 KiB
Vue
Raw 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 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: ''
// 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()
}
},
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>