integrated_traffic_uniapp/pages/application/onlinexxks/my-curriculum.vue

333 lines
8.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 ref="cuCustom" bgColor="bg-gradual-blueness" :isBack="true" :isRingt="true" :backUrl="backUrl">
<block slot="backText">返回</block>
<block slot="content">我的课程</block>
</cu-custom>
<view class="select-fixed top-fixed">
<view class="cu-bar search bg-white">
<picker @change="statusChange" :value="sindex" :range="statusList" range-key="name">
<view class="saixuan">
<text>课程进度</text>
<text>{{ studyText }}</text>
<text class="cuIcon-triangledownfill"></text>
</view>
</picker>
</view>
<view class="line"></view>
</view>
<scroll-view class="dy-scroll" @scrolltolower="scrolltolower" scroll-y :style="'top:'+sTop+'px;height:calc(100vh - '+totalHeight+'px)'">
<view v-if="list.length>0">
<view class="dy-list">
<view v-for="(item,index) of list" :key="index" :data-id="item.CURRICULUM_ID"
class="dy-list-item p20">
<view class="dy-title-flex">
<text style="flex: 1;">{{item.CURRICULUMNAME}}</text>
<view class="dy-br">
<button v-if="item.ISVISIBLE" class="cu-btn bg-green round sm" @click="$noMultipleClicks(goToMyStudy, item)">
<text class="cuIcon-playfill"></text>开始学习</button>
</view>
</view>
<view class="dy-subtitle-flex">
<text>课程状态:{{item.STUDYSTATENAME}}</text>
</view>
<view class="dy-subtitle-flex">
<text>开始时间:{{item.STARTTIME}}</text>
</view>
<view class="dy-subtitle-flex">
<text>结束时间:{{item.ENDTIME}}</text>
</view>
<view class="dy-subtitle-flex">
<text>相关课件:{{item.COURSEWARECOUNT}}</text>
</view>
<view v-if="item.STUDYSTATE === '2' || item.STUDYSTATE === '3'" class="dy-subtitle-flex">
<text>考试成绩:{{item.COURSEEXAMSCORE}}</text>
</view>
</view>
</view>
</view>
<view v-else-if="dataFlag=='noData'" class="dy-null">
<view class="dy-null-img">
<image :src="background[dataFlag].url" mode=""></image>
</view>
<view class="dy-null-title">
{{background[dataFlag].msg}}
</view>
</view>
<view class="cu-tabbar-height"></view>
</scroll-view>
</view>
</template>
<script>
import {
basePath,
corpinfoId,
deptId,
loginSession,
formatDate,
loginUser
} from '@/common/tool.js';
import tkiTree from "@/components/select-tree/select-tree.vue"
export default {
components: {
tkiTree
},
data() {
return {
backUrl: '/pages/application/onlinexxks/home',
showRight: false,
dataFlag: 'noData',
sTop: 0,
totalHeight: 0,
list: [], //返回数据
page: 1, //分页参数--页数
rows: 10, //分页参数--每页数据条数
totalCount: 0, //分页参数--初始化页数
isEnd: false, //防止多次刷新
totalPage: 0, //分页参数--分页数量
noClick: true,
statusList: [{
id: '',
name: '请选择'
},
{
id: '1',
name: '未开始'
},
{
id: '2',
name: '进行中'
},
{
id: '3',
name: '已通过'
},
{
id: '4',
name: '已结束'
}
],
sindex: -1,
studyState: '',
studyText: '请选择'
}
},
onReady() {
let that = this;
let CustomBar = this.CustomBar;
uni.getSystemInfo({ //调用uni-app接口获取屏幕高度
success(res) { //成功回调函数
let titleH = uni.createSelectorQuery().select(".top-fixed"); //想要获取高度的元素名class/id
titleH.boundingClientRect(data => {
that._data.sTop = data.height //计算高度:元素高度=窗口高度-元素距离顶部的距离data.top
that.totalHeight = data.height + CustomBar
}).exec()
}
})
},
onLoad() { //页面第一次加载时触发,从跳转页面返回时不能触发,可以传递参
},
onBackPress() {
this.$refs.cuCustom.BackPage()
return true
},
onShow() {
//页面显示或从后台跳回小程序时显示此页面时触发,从跳转页面返回时触发,不能传递参数
var _this = this;
_this.background = require('@/common/background.json');
_this.showCount = -1;
_this.currentPage = 1;
_this.list = [];
_this.isEnd = false;
_this.getData();
loginSession();
},
filters: {
formatDate(time) {
let date = new Date(time)
return formatDate(date, 'yyyy-MM-dd')
}
},
methods: {
//跳转事件
goToMyStudy(item) {
uni.redirectTo({
url: '/pages/application/onlinexxks/my-study?CURRICULUM_ID=' + item.CURRICULUM_ID + '&COURSESTUDENTRELATION_ID=' + item.COURSESTUDENTRELATION_ID
})
},
statusChange(e) {
console.info(e.detail.value)
console.info(this.statusList[this.sindex])
this.sindex = e.detail.value;
this.studyState = this.statusList[this.sindex].id;
this.studyText = this.statusList[this.sindex].name
this.getQuery();
},
getQuery() { //搜索按钮事件
var _this = this;
_this.showCount = -1;
_this.currentPage = 1;
_this.list = [];
_this.isEnd = false;
_this.getData();
},
// 滑动到底方法
scrolltolower() {
var _this = this;
_this.showCount = -1;
_this.currentPage = _this.currentPage + 1;
_this.isEnd = false;
if (_this.totalPage >= _this.currentPage) {
_this.getData(); //开始分页查询
}
},
getData() {
var _this = this;
if (_this.isEnd) {
return
} else {
this.isEnd = true;
}
uni.showLoading({
title: "加载中..."
}); //加载中动画
uni.request({
url: basePath + '/app/mycurriculum/pageDataByUser?showCount=' + _this.showCount + '&currentPage=' + _this.currentPage,
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
tm: new Date().getTime(),
STUDYSTATE: _this.studyState, //关键字模糊查询
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
uni.hideLoading(); //结束加载中动画
if (res.data != null) {
_this.totalPage = res.data.page.totalPage
// 从后端获取的数据,将这一步骤放到异步获取后端数据的地方,对后端返回的数据进行处理
res.data.varList.forEach((ele) => {
const nowDate = new Date()
const beginDate = new Date(ele.STARTTIME.replace(/-/g,'/'))
const endDate = new Date(ele.ENDTIME.replace(/-/g,'/'))
if (nowDate < beginDate) {
ele.STUDYSTATENAME = '未开始'
ele.ISVISIBLE = false
} else {
ele.ISVISIBLE = true
switch (ele.STUDYSTATE) {
case '1':
ele.STUDYSTATENAME = '未开始'
break
case '2':
ele.STUDYSTATENAME = '进行中'
break
case '3':
ele.STUDYSTATENAME = '已通过'
ele.ISVISIBLE = false
break
case '4':
ele.STUDYSTATENAME = '已结束'
ele.ISVISIBLE = false
break
default:
ele.STUDYSTATENAME = ''
break
}
}
// 如果数据不更新的话,增加下面代码
res.data.varList.splice(1, 0)
})
if (_this.list.length == 0) {
_this.list = res.data.varList;
} else {
console.info(1)
if (res.data.varList != null) {
_this.list2 = res.data.varList;
console.info(_this.list2)
_this.list = _this.list.concat(_this.list2);
console.info(_this.list)
}
}
}
}
})
},
}
}
</script>
<style>
.dy-card {
background-color: #fff;
border-radius: 10upx;
margin: 30upx
}
.dy-card-title {
display: flex;
justify-content: space-between;
border-bottom: 1px solid #eee;
min-height: 80upx;
line-height: 80upx;
padding: 0 30upx;
}
.dy-card-content {
padding: 0upx 30upx 30upx;
}
.dy-card-content-item {
margin-top: 20upx;
}
.dy-card-content-item .title {
display: flex;
align-items: center;
}
.dy-card-content-item .title .l {
width: 10upx;
height: 30upx;
border-radius: 20upx;
background-color: #666;
margin-right: 10upx;
}
.dy-card-content-item .content {
background-color: #F1F1F1;
padding: 10upx 14upx;
margin-top: 14upx;
line-height: 1.6;
}
.dy-card-content-item .name text {
background-color: #F1F1F1;
padding: 10upx 14upx;
margin-top: 14upx;
line-height: 1.6;
display: inline-block;
}
.dy-card-foot {
border-top: 1px solid #eee;
padding: 30upx;
}
.dy-br{
width: 200upx;
text-align: right;
}
.dy-br .cu-btn{
white-space: normal;
}
</style>