This commit is contained in:
@fawn-nine
2024-10-15 16:50:47 +08:00
parent 42da449031
commit bc7656e5ed
12 changed files with 580 additions and 392 deletions

View File

@@ -26,7 +26,7 @@
onLaunch: function(e) {
// 检测自动更新
// #ifdef APP-PLUS
updata();
// updata();
// #endif
uni.getSystemInfo({

View File

@@ -6,9 +6,9 @@ if (process.env.NODE_ENV === 'development') {
// socketUrl = "ws://localhost:6001/";
// baseUrl = "https://twin-ui.com/demo/";
// baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境
// baseUrl = "https://api.nuttyreading.com/"; // 线上正式
baseUrl = "https://api.nuttyreading.com/"; // 线上正式
// baseUrl = "http://192.168.110.110:9200/pb/"; // 磊哥
baseUrl = "http://192.168.110.100:9200/pb/"; // 开发用电脑
// baseUrl = "http://192.168.110.100:9200/pb/"; // 开发用电脑
// baseUrl = "http://59.110.212.44:9200/pb/";
// baseUrl = "http://192.168.110.100:9100/pb/"; // 开发用电脑
// baseUrl = "http://192.168.110.110:9200/pb/";

View File

@@ -4,7 +4,7 @@
<public-module></public-module>
<!-- <z-nav-bar :title="pageTitle ? pageTitle : '课程详情'"> -->
<z-nav-bar title="课程介绍"></z-nav-bar>
<view class="contentBox commonPageContentBox" >
<view class="contentBox commonPageContentBox">
<u-alert v-if="goBuyTitle && isAndorid" style="
background: linear-gradient(90deg, #258feb 0%, #00e1ec 100%);
position: fixed;
@@ -51,15 +51,13 @@
<view :class="`${isHideCourseInfo ? 'hidden2' : ''}`"
style="font-size: 30rpx; text-align: justify;" v-html="course.content">
</view>
<text @click="isHideCourseInfo = !isHideCourseInfo"
style="
<text @click="isHideCourseInfo = !isHideCourseInfo" style="
position: absolute;
background-color: #f2f8ff; padding: 4rpx ;
bottom: 0;
right: 0;
color: #838588;
"
>
">
{{ isHideCourseInfo ? "展开" : "收起" }}
</text>
</view>
@@ -68,15 +66,21 @@
</view>
</view>
</view>
<!-- {{selfStudyCertificate.length}}-{{classInfo.id}}-{{classInfo.state}}- -->
<!-- 自考入口 没有加入班级的时候暴漏入口-->
<view class="selfStudyBox" v-if="librayList[curIndex] && !classInfo.id">
<view style="padding: 20rpx;">
<view class="selfStudyBox"
v-if="librayList[curIndex] && (!classInfo.id || classInfo.state == '2' || selfStudyCertificate.length >= 0)">
<view style="padding: 20rpx;"
v-if="(selfStudyCertificate.length == 0 || selfStudyPaperList.length > 0 && !testingPaper.id) && (!classInfo.id || classInfo.state == '2')">
<view class="">
<view class="" style="line-height: 40rpx; font-size: 28rpx;" v-if="selfStudyCertificate.length == 0">
<text>课程学习进度大于等于70%您可以参与本门课程的自考考试考试成绩大于60分即可获得本门课程的B级证书如您想获得本门课程的A级证书可参加小班教学</text>
<view class="" style="line-height: 40rpx; font-size: 28rpx;"
v-if="selfStudyCertificate.length == 0">
<text>课程学习进度大于等于70%您可以参与本门课程的自考考试考试成绩大于60分即可获得本门课程的自考证书如您想获得本门课程的A级或B级证书可参加小班教学</text>
</view>
<view :class="['testRecode',zhedieTestRecode?'zhedie':'']" v-if="selfStudyPaperList.length > 0 && !testingPaper.id">
<view class="item flex_box flex_between align-items_box" v-for="(item, index) in selfStudyPaperList" :key="index">
<view :class="['testRecode',!zhedieTestRecode?'zhedie':'']"
v-if="selfStudyPaperList.length > 0 && !testingPaper.id">
<view class="item flex_box flex_between align-items_box"
v-for="(item, index) in selfStudyPaperList" :key="index">
<text style="color: #999; font-size: 26rpx;">{{index + 1}}次自考成绩</text>
<text class="score PM_font">{{item.score}}</text>
<view class="seePaper" @click.stop="seePaper(item.id)">
@@ -87,40 +91,52 @@
查看试卷
</view>
</view>
<view class="opbutn" v-if="selfStudyPaperList.length >= 3" @click="zhedieTestRecode = !zhedieTestRecode">
<view class="opbutn" v-if="selfStudyPaperList.length >= 3"
@click="zhedieTestRecode = !zhedieTestRecode">
{{zhedieTestRecode ? '收起' : '展开'}}
</view>
</view>
<view v-if="selfStudyCertificate.length > 0" style="font-size: 30rpx; text-align: center; margin: 20rpx 0;">
<text>恭喜您已通过自考考试获得本门课程的B级证书,如您想获得本门课程的A级证书可参加小班教学</text>
<view class="" v-if="selfStudyCertificate.length > 0"
style="font-size: 30rpx; text-align: center; margin: 20rpx 0;">
<view class="congritulations">
<image src="../../static/icon/xunzhang.png" mode="widthFix"></image>
</view>
<view class="">
<text>恭喜您已通过自考考试获得本门课程的自考证书,如您想获得本门课程的A级或B级证书可参加小班教学</text>
</view>
</view>
<view class=" " style="margin-top: 20rpx;">
</view>
<view class=" " style="margin-top: 20rpx; text-align: center;">
<!-- <view class=""> -->
<template v-if="selfStudyCertificate.length <= 0">
<!-- {{canJoinTestTime}} -->
<!-- {{selfStudyPaperList.length % 2}} -->
<template v-if="selfStudyCertificate.length <= 0 && (!classInfo.id || classInfo.state == '2')">
<template v-if="!testingPaper.id">
<button @click="onPageJump('/pages/selfStudy/selfStudy',courseId)" style="padding: 0 20rpx"
type="primary" v-if="selfStudyPaperList.length == 0"
:disabled="librayList[curIndex].completion < 70 && canJoinTestTime">参加自考考试</button>
<button v-if="selfStudyPaperList.length % 2 != 0 && canJoinTestTime" @click="onPageJump('/pages/selfStudy/selfStudy',courseId)" style="padding: 0 20rpx"
type="primary"
:disabled="librayList[curIndex].completion < 70">再考一次</button>
<button v-if="!canJoinTestTime && showNextTestDate" @click="onPageJump('/pages/selfStudy/selfStudy',courseId)" style="padding: 0 20rpx"
type="primary"
:disabled="!canJoinTestTime">{{showNextTestDate.nextZKTime}} 后可参与自考</button>
<button @click="onPageJump('/pages/selfStudy/selfStudy',courseId)"
style="padding: 0 20rpx" type="primary"
v-if="canJoinTestTime && selfStudyPaperList.length % 2 == 0"
:disabled="courseCompletion < 70 ">参加自考考试</button>
<button v-if="selfStudyPaperList.length % 2 != 0 && canJoinTestTime"
@click="onPageJump('/pages/selfStudy/selfStudy',courseId)" style="padding: 0 20rpx"
type="primary" :disabled="courseCompletion < 70">再考一次</button>
<button v-if="!canJoinTestTime && showNextTestDate"
@click="onPageJump('/pages/selfStudy/selfStudy',courseId)" style="padding: 0 20rpx"
type="primary" :disabled="!canJoinTestTime">{{showNextTestDate.nextZKTime}}
后可参与自考</button>
</template>
<button v-else @click="onPageJump('/pages/miniClass/continueTest',testingPaper.id)" style="padding: 0 20rpx"
type="primary"
:disabled="librayList[curIndex].completion < 70">
<button v-else @click="onPageJump('/pages/miniClass/continueTest',testingPaper.id)"
style="padding: 0 20rpx" type="primary" :disabled="courseCompletion < 70">
继续自考考试
<template v-if="showCountDown" style="font-size: 26rpx;"> (剩余时间
<uni-countdown style="display: inline-block; " @timeup="timeup" :font-size="20" :show-day="false"
:hour="timeDif.hour" :minute="timeDif.minutes" :second="timeDif.second"
color="#fff" splitorColor="#fff" />)
<uni-countdown style="display: inline-block; " @timeup="timeup" :font-size="20"
:show-day="false" :hour="timeDif.hour" :minute="timeDif.minutes"
:second="timeDif.second" color="#fff" splitorColor="#fff" />)
</template>
</button>
</template>
<button style="padding: 0 20rpx" v-if="selfStudyCertificate.length > 0" type="primary" @click="onPageJump('/pages/certificate/certificate')">查看证书</button>
<button style="padding: 0 20rpx" v-if="selfStudyCertificate.length > 0" type="primary"
@click="onPageJump('/pages/certificate/certificate')">查看证书</button>
<!-- </view> -->
<!-- <view class="" v-if="!classInfo.id">
<button style="background-color: #00e1ec;" type="primary" size="mini">查看可加入的小班</button>
@@ -129,26 +145,36 @@
</view>
</view>
<!-- 小班入口 -->
<view class="classEntrance" >
<view class="classEntrance" style="text-align: center;" v-if="classCertificate.length > 0 ">
<view class="congritulations">
<image src="../../static/icon/xunzhang.png" mode="widthFix"></image>
</view>
<view style="margin: 10rpx 0;"><text>恭喜您在小班学习中取得了本课程的{{classCertificate[0].type}}级证书</text></view>
<button type="primary" style="background-color: #ffaa7f;"
@click="onPageJump('/pages/certificate/certificate')">前往查看</button>
</view>
<template v-else>
<view class="classEntrance" v-if="linkClassList.length > 0 ">
<view class="flex_box" style="justify-content: space-between;">
<view class="flex_box classTitleBox">
<image src="../../static/icon/class.png" mode="" style="width: 64rpx; height: 64rpx;"></image>
<text class="mainTxt" v-if="linkClassList.length > 0 ">
<image src="../../static/icon/class.png" mode="" style="width: 64rpx; height: 64rpx;">
</image>
<text class="mainTxt">
<span style="font-weight: bold; padding: 0 16rpx;"></span>
加入班级开始更加系统的学习</text>
<text class="mainTxt" v-else>
<span style="font-weight: bold; padding: 0 16rpx;"></span>
暂无可加入的小班</text>
</view>
<view class="btntext" v-if="linkClassList.length > 0 ">
<text @click="goClassLIst('/pages/miniClass/courseClassList', course.id,course.title)">前往查看 >></text>
<view class="btntext">
<text @click="goClassLIst('/pages/miniClass/courseClassList', course.id,course.title)">前往查看
>></text>
</view>
</view>
</view>
<!-- {{classInfo.id}} -->
<view class="classEntrance" v-if="classInfo.id">
<view class="flex_box" style="justify-content: space-between;">
<view class="flex_box classTitleBox">
<image src="../../static/icon/class.png" mode="" style="width: 64rpx; height: 64rpx;"></image>
<image src="../../static/icon/class.png" mode="" style="width: 64rpx; height: 64rpx;">
</image>
<text class="mainTxt">
<span style="font-weight: bold; padding: 0 16rpx;"></span>
班级{{classInfo.title}}</text>
@@ -158,6 +184,18 @@
</view>
</view>
</view>
<view class="classEntrance" v-if="linkClassList.length == 0 && !classInfo.id">
<view class="flex_box" style="justify-content: space-between;">
<view class="flex_box classTitleBox">
<image src="../../static/icon/class.png" mode="" style="width: 64rpx; height: 64rpx;">
</image>
<text class="mainTxt">
<span style="font-weight: bold; padding: 0 16rpx;"></span>
暂无可加入的小班</text>
</view>
</view>
</view>
</template>
<view class="containerBg2">
<!-- 目录 -->
<view :class="['coursePart','flexbox', (userMsg.vip == 1 || userMsg.vip == 2) ? 'vipBgColor':'']"
@@ -211,7 +249,8 @@
</template>
<view class="shiting_content">
<view :class="['chapter_content', (userMsg.vip == 1 || userMsg.vip == 2) ? 'vipchapter_content' : '']"
<view
:class="['chapter_content', (userMsg.vip == 1 || userMsg.vip == 2) ? 'vipchapter_content' : '']"
v-if="chapterList.length > 0">
<view class="vipSee" v-if="userMsg && (userMsg.vip == 1 || userMsg.vip == 2)">
<text>VIP畅学权益生效中</text>
@@ -258,7 +297,7 @@
v-if="librayList.length > 0 && librayList[curIndex].completion > 0"> -->
<!-- {{librayList[curIndex]}} -->
<view class="progress-box">
<progress v-if="librayList[curIndex]" :percent="librayList[curIndex].completion ? librayList[curIndex].completion : 0" show-info stroke-width="3" />
<progress v-if="course.id" :percent="courseCompletion" show-info stroke-width="3" />
</view>
<!-- </uni-section> -->
</view>
@@ -300,7 +339,7 @@
<view class="flexbox" style="align-items: center" @click="addSay()">
<!-- <u-icon name="edit-pen" color="#2979ff" size="28"></u-icon> -->
<!-- <uni-icons type="chatboxes" color="#2979ff" size="28"></uni-icons> -->
<text style="color:#2979ff; font-size: 30rpx; font-weight: bold;" >发布留言</text>
<text style="color:#2979ff; font-size: 30rpx; font-weight: bold;">发布留言</text>
</view>
</view>
<view class="liuyanBox">
@@ -413,7 +452,8 @@
</view>
<view class="sbmitBox">
<button class="submit" @click="submitSay" type="default"> </button>
<button style="background-color: #fff !important; color: ; " @click="sayclose" type="default"> </button>
<button style="background-color: #fff !important; color: ; " @click="sayclose" type="default">
</button>
</view>
</view>
</u-popup>
@@ -476,7 +516,7 @@
export default {
data() {
return {
zhedieTestRecode:false, // 是否折叠自考的记录
zhedieTestRecode: false, // 是否折叠自考的记录
goodsList: [],
currentCateIndex: 0,
protocolShow: false,
@@ -582,18 +622,19 @@
startStudyForMF: "sociology/course/startStudyForMF",
},
isAndorid: true,
oprateOsName:'',
linkClassList:[], // 可加入关联班级数组
classInfo:[], // 所在班级信息
selfStudyCertificate:[], // 自考证书
classCertificate:[], // 小班学习证书
testingPaper:{}, // 当前课程正在考试信息
oprateOsName: '',
linkClassList: [], // 可加入关联班级数组
classInfo: [], // 所在班级信息
selfStudyCertificate: [], // 自考证书
classCertificate: [], // 小班学习证书
testingPaper: {}, // 当前课程正在考试信息
timeDif: {},
showCountDown: false,
showSecondTestBtn:false, // 先否显示二次考试按钮
selfStudyPaperList:[], ///自考考试记录
showNextTestDate:undefined,
canJoinTestTime:false, //时间上是否可以参加自考考试
showSecondTestBtn: false, // 先否显示二次考试按钮
selfStudyPaperList: [], ///自考考试记录
showNextTestDate: undefined,
canJoinTestTime: false, //时间上是否可以参加自考考试
courseCompletion: undefined, // 课程学习进度
};
},
//第一次加载
@@ -626,67 +667,14 @@
// 隐藏原生的tabbar
uni.hideTabBar();
console.log('this.courseId', this.courseId);
this.canJoinTestTime = false
await this.getData(this.courseId);
// #ifdef APP-PLUS
plus.screen.unlockOrientation();
plus.screen.lockOrientation("portrait-primary");
// #endif
this.getLinkClassList()
var newCertificate = await this.getCertificateInfo()
console.log('5555555证书资料', newCertificate);
this.selfStudyCertificate = []
this.classCertificate = []
if(newCertificate && newCertificate.length > 0){
newCertificate.forEach(item => {
if(item.classId!= '' && item.classId > 0){
this.classCertificate.push(item)
}else{
this.selfStudyCertificate.push(item)
}
})
}
var historyPaper = await this.getingPaper()
console.log('historyPaper正在考试的信息',historyPaper);
if(historyPaper && historyPaper.id && historyPaper.type == '2' && historyPaper.relationId == this.courseId){
this.testingPaper = historyPaper
var paperEndTime = historyPaper.planEndTime
var severNowTime = await this.getServerTime()
if (severNowTime > -1 && paperEndTime - severNowTime > 0) {
var secondTimeDif = paperEndTime - severNowTime
this.timeDif.hour = parseInt((secondTimeDif % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
this.timeDif.minutes = parseInt((secondTimeDif % (1000 * 60 * 60)) / (1000 * 60));
this.timeDif.second = (secondTimeDif % (1000 * 60)) / 1000
this.showCountDown = true
console.log('时间符合吗?', this.showCountDown, secondTimeDif);
} else {
this.showCountDown = false
}
}
var selfStudyPaperList = await this.getSelfStudyPaperList()
this.selfStudyPaperList = selfStudyPaperList
console.log('selfStudyPaperList',selfStudyPaperList);
if(selfStudyPaperList && selfStudyPaperList.length > 0 && selfStudyPaperList.length < 2){
this.canJoinTestTime = true
}
if(selfStudyPaperList && selfStudyPaperList.length > 0){
selfStudyPaperList.forEach((item, index) => {
if(item.score < 60 && index < 2){
this.showSecondTestBtn = true
}else{
this.showSecondTestBtn = false
}
})
}
if(selfStudyPaperList.length >= 2 && this.selfStudyCertificate.length == 0){
this.showNextTestDate = await this.getNextTestDate()
console.log('下次考试时间',this.showNextTestDate);
var now = new Date()
if(this.showNextTestDate.nextLongTime < now){
this.canJoinTestTime = true
}else{
this.canJoinTestTime = false
}
}
await this.request()
},
onUnload() {
@@ -704,7 +692,9 @@
// this.showSearchList = false
// this.searchList = []
},
onPullDownRefresh() {
async onPullDownRefresh() {
await this.getData(this.courseId);
await this.request()
uni.stopPullDownRefresh()
},
onReachBottom() {
@@ -720,11 +710,83 @@
},
//方法
methods: {
async request(){
var newCertificate = await this.getCertificateInfo()
console.log('5555555证书资料', newCertificate);
this.selfStudyCertificate = []
this.classCertificate = []
if (newCertificate && newCertificate.length > 0) {
newCertificate.forEach(item => {
if (item.classId != '' && item.classId > 0) {
this.classCertificate.push(item)
} else {
this.selfStudyCertificate.push(item)
}
})
}
var historyPaper = await this.getingPaper()
console.log('historyPaper正在考试的信息', historyPaper);
if (historyPaper && historyPaper.id && historyPaper.type == '2' && historyPaper.relationId == this
.courseId) {
// this.testingPaper = historyPaper
this.testingPaper = historyPaper
var paperEndTime = historyPaper.planEndTime
var severNowTime = await this.getServerTime()
if (severNowTime > -1 && paperEndTime - severNowTime > 0) {
var secondTimeDif = paperEndTime - severNowTime
this.timeDif.hour = parseInt((secondTimeDif % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))
this.timeDif.minutes = parseInt((secondTimeDif % (1000 * 60 * 60)) / (1000 * 60));
this.timeDif.second = (secondTimeDif % (1000 * 60)) / 1000
this.showCountDown = true
console.log('时间符合吗?', this.showCountDown, secondTimeDif);
} else {
this.showCountDown = false
}
}else{
this.testingPaper = {}
this.showCountDown = false
}
var selfStudyPaperList = await this.getSelfStudyPaperList()
this.selfStudyPaperList = selfStudyPaperList
console.log('selfStudyPaperList', selfStudyPaperList);
if (this.selfStudyCertificate.length <= 0) { // 没有获得自考证书时查询下次可以自考的时间
if (selfStudyPaperList && selfStudyPaperList.length <= 2) {
this.canJoinTestTime = true
}
if (selfStudyPaperList && selfStudyPaperList.length >= 2) {
if(selfStudyPaperList.length % 2 != 0){
this.canJoinTestTime = true
return
}
this.showNextTestDate = await this.getNextTestDate()
console.log('下次考试时间', this.showNextTestDate);
if (this.showNextTestDate.nextLongTime == null || this.showNextTestDate.nextLongTime == null) {
this.canJoinTestTime = false
}
var now = new Date()
if (this.showNextTestDate.nextLongTime < now) {
this.canJoinTestTime = true
} else {
this.canJoinTestTime = false
}
}
if (selfStudyPaperList && selfStudyPaperList.length > 0) {
selfStudyPaperList.forEach((item, index) => {
if (item.score < 60 && index % 2 != 0) {
this.showSecondTestBtn = true
} else {
this.showSecondTestBtn = false
}
})
}
}
},
// 查询下次可以考试的时间
async getNextTestDate(){
async getNextTestDate() {
var time = {
nextLongTime:0,
nextZKTime:''
nextLongTime: 0,
nextZKTime: ''
}
await $http.request({
url: "common/classExam/getNextZKTime",
@@ -737,22 +799,22 @@
},
})
.then(async (res) => {
if(res.code != 0) {
if (res.code != 0) {
uni.showToast({
title:res.errMsg,
icon:'none'
title: res.errMsg,
icon: 'none'
})
return
}
if (res.code == 0) {
console.log('res',res);
console.log('res', res);
time.nextZKTime = res.nextZKTime
time.nextLongTime = res.nextLongTime
}
}).catch(e => {
uni.showToast({
title:e.errMsg,
icon:'none'
title: e.errMsg,
icon: 'none'
})
});
return time
@@ -765,23 +827,23 @@
},
async timeup() {
this.showCountDown = false
setTimeout(async ()=>{
setTimeout(async () => {
var selfStudyPaperList = await this.getSelfStudyPaperList()
this.selfStudyPaperList = selfStudyPaperList
console.log('selfStudyPaperList',selfStudyPaperList);
if(selfStudyPaperList && selfStudyPaperList.length > 0){
console.log('selfStudyPaperList', selfStudyPaperList);
if (selfStudyPaperList && selfStudyPaperList.length > 0) {
selfStudyPaperList.forEach((item, index) => {
if(item.score < 60 && index < 2){
if (item.score < 60 && index < 2) {
this.showSecondTestBtn = true
}else{
} else {
this.showSecondTestBtn = false
}
})
}
},3000)
}, 3000)
},
// 获取自考试卷列表
async getSelfStudyPaperList(){
async getSelfStudyPaperList() {
var list = undefined
await $http.request({
url: "common/classExam/getZKExamPaperList",
@@ -794,21 +856,21 @@
},
})
.then(async (res) => {
if(res.code != 0) {
if (res.code != 0) {
uni.showToast({
title:res.errMsg,
icon:'none'
title: res.errMsg,
icon: 'none'
})
return
}
if (res.code == 0) {
console.log('res',res);
console.log('res', res);
list = res.ZKExamUserList
}
}).catch(e => {
uni.showToast({
title:e.errMsg,
icon:'none'
title: e.errMsg,
icon: 'none'
})
});
return list
@@ -836,7 +898,7 @@
return time
},
// 获取进行中的考试
async getingPaper(){
async getingPaper() {
var obj = undefined
await $http.request({
url: "common/classExam/examingPaper",
@@ -847,10 +909,13 @@
},
})
.then(async (res) => {
console.log('考试中',res);
console.log('考试中', res);
if (res.code == 0 && res.classExamUser != null) {
obj = {...res.classExamUser, planEndTime:res.planEndTime}
}else{
obj = {
...res.classExamUser,
planEndTime: res.planEndTime
}
} else {
obj = undefined
}
}).catch(e => {
@@ -860,7 +925,7 @@
},
// 获得课程关联的班级
getLinkClassList(){
getLinkClassList() {
this.$http
.request({
url: 'common/class/getClassByCourseIdNoUser',
@@ -878,19 +943,19 @@
.then(async (res) => {
if (res.code == 0 && res.result.length > 0) {
this.linkClassList = res.result
}else{
} else {
this.linkClassList = []
// 查询是否有所在的班级
this.getClassList()
}
}).catch(e => {
uni.showToast({
title:'获取班级列表错误',
icon:'none'
title: '获取班级列表错误',
icon: 'none'
})
})
},
getClassList(){
getClassList() {
$http.request({
url: '/common/class/getClassByUser',
method: "POST",
@@ -903,15 +968,15 @@
})
.then(res => {
this.classInfo = {}
console.log('获取班级列表',res.result);
if(res.code == 0 && res.result != null){
if(res.result.id){
console.log('获取班级列表', res.result);
if (res.code == 0 && res.result != null) {
if (res.result.id) {
this.classInfo = res.result
}
}
console.log('获取班级列表++++++',this.classList);
console.log('获取班级列表++++++', this.classList);
}).catch(e => {
console.log('获取班级列表失败',e);
console.log('获取班级列表失败', e);
this.classInfo = {}
});
},
@@ -920,7 +985,7 @@
let oprateOs = "";
oprateOs = uni.getSystemInfoSync().platform;
this.oprateOsName = uni.getSystemInfoSync().platform;
console.log('oprateOs',oprateOs)
console.log('oprateOs', oprateOs)
if (oprateOs == "android") {
this.isAndorid = true;
} else {
@@ -1015,7 +1080,7 @@
uni.navigateTo({
url: `${_myurl}?navTitle=${this.pageTitle}&title=${v.title}&courseId=${this.courseId}&id=${v.id}&conditions=${v.conditions}&noRecored=${noRecored}`,
});
}else if(this.vip.type != "1" && this.librayList[this.curIndex].type == 2){
} else if (this.vip.type != "1" && this.librayList[this.curIndex].type == 2) {
this.$commonJS.showToast("请开通超V后观看本课程");
} else {
this.$commonJS.showToast("请先购买课程");
@@ -1070,14 +1135,14 @@
}
this.$forceUpdate();
});
} else if(v.type == 2 && this.userMsg.vip != 1 ){
} else if (v.type == 2 && this.userMsg.vip != 1) {
uni.showModal({
title:'提示',
content:'当前课程目录是超V专享,开通超V可观看',
confirmText:'好的',
showCancel:false
title: '提示',
content: '当前课程目录是超V专享,开通超V可观看',
confirmText: '好的',
showCancel: false
})
}else {
} else {
this.$http
.request({
url: this.urlList.goodsList,
@@ -1567,17 +1632,33 @@
this.$forceUpdate();
this.pageTitle = this.course.title;
this.librayList = [...res.data.catalogues];
console.log('获取课程详情=》',res.data);
console.log('获取课程详情=》', res.data);
if (this.librayList.length > 0) {
var ll = this.librayList.map(item => item.completion)
var sums = 0
ll.forEach(item => {
sums += item
})
if (sums > 0) {
this.courseCompletion = (sums / ll.length).toFixed(2)
} else {
this.courseCompletion = 0
}
} else {
this.courseCompletion = 0
}
console.log('lllllll', this.courseCompletion);
that.$forceUpdate();
if (this.librayList.length > 0) {
if(this.catalogueId){
if (this.catalogueId) {
this.curId = this.catalogueId
let _list = this.librayList
_list = _list.map( item => item.id)
_list = _list.map(item => item.id)
// console.log('_list过滤后的_list',_list);
this.curIndex = _list.findIndex((element) => element == this.catalogueId)
console.log('其他页面返回来_list过滤后的curIndex',this.curIndex,this.catalogueId);
}else{
console.log('其他页面返回来_list过滤后的curIndex', this.curIndex, this.catalogueId);
} else {
this.catalogueId = this.librayList[0].id;
this.curId = this.librayList[0].id;
this.curIndex = 0
@@ -1726,13 +1807,13 @@
});
},
// 查询证书情况
async getCertificateInfo(){
async getCertificateInfo() {
var list = undefined
await $http.request({
url: "common/userCertificate/getUserCertificateList",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
"type":'', //证书类型A a证 B b证 ZK自考
"type": '', //证书类型A a证 B b证 ZK自考
"courseId": this.courseId //课程id
},
header: { //默认 无 说明:请求头
@@ -1740,7 +1821,7 @@
},
})
.then(res => {
if(res.code != 0) {
if (res.code != 0) {
uni.showToast({
title: res.errMsg,
icon: 'none'
@@ -1749,7 +1830,9 @@
}
if (res.code == 0) {
res.certificateList.forEach(item => {
item.certificateUrl && item.certificateUrl != '' ? item.certificateUrlList = item.certificateUrl.split(',') : item.certificateUrlList = []
item.certificateUrl && item.certificateUrl != '' ? item
.certificateUrlList = item.certificateUrl.split(',') : item
.certificateUrlList = []
})
list = res.certificateList
}
@@ -1766,7 +1849,7 @@
});
return list
},
goClassLIst(url, id,title){
goClassLIst(url, id, title) {
uni.navigateTo({
url: `${url}?courseId=${id}&courseTitle=${title}`,
});
@@ -1776,27 +1859,65 @@
</script>
<style lang="scss" scoped>
@import "@/style/mixin.scss";
.selfStudyBox{position: relative; background-color:#fff0e7;}
.classEntrance{background-color: #d0ecc1; padding:20rpx;
.congritulations {
width: 80rpx;
height: 80rpx;
text-align: center;
margin: 10rpx auto;
display: block;
image {
width: 80rpx;
height: 80rpx;
}
}
.selfStudyBox {
position: relative;
background-color: #fff0e7;
}
.classEntrance {
background-color: #d0ecc1;
padding: 20rpx;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
.flex_box{align-items: center;}
.flex_box {
align-items: center;
}
.btntext{color: $themeColor; }
.classTitleBox{font-size: 28rpx; flex: 1;
.mainTxt{font-size: 30rpx; flex: 1; padding-left: 10rpx;}
}
.completionBg { padding: 10rpx 0;
background-color: #fff; border-bottom: 1px solid #eee;
}
.btntext {
color: $themeColor;
}
.classTitleBox {
font-size: 28rpx;
flex: 1;
.mainTxt {
font-size: 30rpx;
flex: 1;
padding-left: 10rpx;
}
}
.completionBg {
padding: 10rpx 0;
background-color: #fff;
border-bottom: 1px solid #eee;
}
.endBox {
// @include theme("vipbtnbg");
color: #333;
font-size: 26rpx;
// margin: 20rpx 0;
padding: 10rpx 20rpx;
.box{
.box {
// background-color: #258feb;
}
.flexbox {
justify-content: space-between;
}
@@ -1852,9 +1973,15 @@
// height: 100rpx !important;}
}
.img{ width: 60rpx;
.img {
width: 60rpx;
height: 60rpx;
image{width:60rpx; height: 60rpx; border-radius: 100%;}
image {
width: 60rpx;
height: 60rpx;
border-radius: 100%;
}
}
}
@@ -1895,7 +2022,9 @@
}
.xufeiBtn {
display: block; line-height: 50rpx; height: 50rpx;
display: block;
line-height: 50rpx;
height: 50rpx;
padding: 0 10rpx;
border: 1px solid #333;
border-radius: 10rpx;
@@ -2485,7 +2614,12 @@
// margin-bottom: 10rpx;
}
::v-deep .prof img{ width: 100px; height: 100px;}
::v-deep .prof img {
width: 100px;
height: 100px;
}
.catalogueTitle {
justify-content: space-between;
overflow: hidden;
@@ -2610,7 +2744,11 @@
/deep/.u-icon__icon--warning {
color: #fff !important;
}
/deep/.uni-tag{border-width: 2rpx !important;}
/deep/.uni-tag {
border-width: 2rpx !important;
}
/deep/.uni-section {
background: transparent !important;
}
@@ -2765,7 +2903,12 @@
}
}
}
.hidden2{line-height: 50rpx; height: 100rpx;}
.hidden2 {
line-height: 50rpx;
height: 100rpx;
}
.subLine {
* {
display: inline !important;
@@ -2912,15 +3055,51 @@
padding: 20rpx;
}
}
.testRecode{ position: relative; margin-top: 20rpx; background-color:rgba(255, 255, 255, .8); padding: 20rpx;
.item{margin-bottom: 20rpx; border-bottom:1px solid #e1e1e1 ; line-height: 60rpx;}
.item:last-child{border-bottom: none; margin-bottom: 0;}
.score{color:#35a6ff ; font-size: 34rpx;}
.opbutn{position:absolute; padding-bottom: 20rpx; width: 100%; text-align: center; font-size: 26rpx; color: #999; bottom: 0; left: 0; z-index: 1;}
}
.testRecode.zhedie{height: 240rpx; overflow: hidden;}
.seePaper { color: #35a6ff; font-size: 26rpx;
.testRecode {
position: relative;
margin-top: 20rpx;
background-color: rgba(255, 255, 255, .8);
padding: 20rpx;
// padding-bottom: 30rpx;
.item {
margin-bottom: 20rpx;
border-bottom: 1px solid #e1e1e1;
line-height: 60rpx;
}
.item:last-child {
border-bottom: none;
margin-bottom: 0;
}
.score {
color: #35a6ff;
font-size: 46rpx;
}
}
.opbutn {
position: absolute;
padding-bottom: 0;
width: 100rpx;
text-align: center;
font-size: 26rpx; border-radius: 10rpx 10rpx 0 0;
color: #fff; background-color: #aaaaff;
bottom: 0;
left: calc(50vw - 50rpx);
z-index: 1;
}
.testRecode.zhedie {
max-height: 280rpx;
// padding-bottom: 30rpx;
overflow: hidden;
}
.seePaper {
color: #35a6ff;
font-size: 32rpx;
// width: 50rpx;
// height: 50rpx;

View File

@@ -21,7 +21,7 @@
<uni-collapse-item v-for="(item,index) in courseList" :key="index" :title="item.courseMedicine.title"
:thumb="item.courseMedicine.icon">
<view class="content" v-show="item.courseList.length > 1" style="padding:20rpx;">
<view :class="['courseItemleve1',userMsg.vip != 0 ? 'isVip' :'']"
<view :class="['courseItemleve1',(userMsg.vip != 0 && userMsg.vip != 3) ? 'isVip' :'']"
v-for="(item1, index1) in item.courseList" :key="index1"
@click="onPageJump('/pages/course/courseDetail',item1.id)">
<view class="vipSee" v-if="userMsg.vip != 0 && userMsg.vip != 3">
@@ -31,8 +31,9 @@
size="24"></u-icon><text style="font-size: 32rpx;">{{item1.title}}</text>
</view>
<template v-if="item1.courseCatalogueEntityList && item1.courseCatalogueEntityList.length > 0">
<view class="" v-for="(item2, index2) in item1.courseCatalogueEntityList" :key="index2">
<view :class="['priceItem', item2.isBuy == 1 && userMsg.vip == 0 ? 'isBuy' : '']">
<view :class="['priceItem', item2.isBuy == 1 && (userMsg.vip == 0 || userMsg.vip == 3) ? 'isBuy' : '']">
<text class="text mname" v-if="item1.courseCatalogueEntityList.length > 1"
style="font-weight: bold; margin-right: 10rpx;">{{item2.title}}</text>
<view class="pbox flexbox">
@@ -40,11 +41,13 @@
height: 40rpx; text-align: center; line-height: 40rpx; color: #ffb861;">V</text>
<text class="text">半年{{item2.halfFee}} </text><text class="text"
style="margin-left: 20rpx;">整年{{item2.fee}} </text>
<!-- <pre>
{{userMsg}}-{{item2.isBuy}}
</pre> -->
<text class="buybtns" @click.stop="goBuy(item2)"
v-if="item2.isBuy == 0 && userMsg.vip == 0">立即购买</text>
v-if="item2.isBuy == 0 && (userMsg.vip == 0 || userMsg.vip == 3)">立即购买</text>
</view>
<i class="haveBuy" v-if="item2.isBuy == 1 && userMsg.vip == 0">已购买</i>
<i class="haveBuy" v-if="item2.isBuy == 1 && (userMsg.vip == 0 || userMsg.vip == 3)">已购买</i>
</view>
</view>
</template>

View File

@@ -290,6 +290,10 @@
</template>
</text>
<text class="txt555" v-else> 匿名用户 </text>
<!-- {{item.buyState}} -->
<view class="" style="width: 50rpx; height: 50rpx;">
<image style="width: 50rpx; height: 50rpx;" :src="item.buyState.includes('未购买') ? '../../static/icon/notbuy.png' : '../../static/icon/yesbuy.png'" mode="widthFix"></image>
</view>
<text
@click.stop="outClass(item.student.id)"
class="outBtn"

View File

@@ -33,7 +33,7 @@
</view>
<view class="flex_box align-items_box" v-if="secondTimeDif > 0">
<view class="" style="font-size: 26rpx;">
剩余时间
剩余时间:
</view>
<view class="">
<uni-countdown @timeup="timeup" :font-size="20" :show-day="false"

View File

@@ -78,6 +78,9 @@
</view>
</view>
</view>
<view class="" style="margin-top: 20rpx;">
<text style="color: #666; font-size: 28rpx;">开始时间{{testPaper.startTime}} <br/> 结束时间{{testPaper.endTime}}</text>
</view>
</view>
</template>
<u-popup key="1" :show="showPopup" :round="10" @close="hidePopup">
@@ -223,8 +226,6 @@ checkAnswer(id){
if (res.code == 0) {
// that.isHave = true
var subOptions = JSON.parse(res.examPaper.subject)
subOptions.forEach(item => {
var code = 0
item.options.forEach(item1 => {
@@ -236,6 +237,7 @@ checkAnswer(id){
this.questionList = subOptions
this.testPaper = res.examPaper
console.log('试卷信息', this.testPaper);
this.answerIdsList = JSON.parse(res.examPaper.answer)
var newList = JSON.parse(res.examPaper.answer)
newList = newList.map(item => {

View File

@@ -32,7 +32,7 @@
</view>
<view class="flex_box align-items_box" v-if="secondTimeDif > 0">
<view class="">
剩余时间
剩余时间:
</view>
<view class="">
<uni-countdown @timeup="timeup" :font-size="20" :show-day="false"

View File

@@ -32,7 +32,7 @@
</view>
<view class="flex_box align-items_box" v-if="secondTimeDif > 0">
<view class="">
剩余时间
剩余时间:
</view>
<view class="">
<uni-countdown @timeup="timeup" :font-size="20" :show-day="false"

BIN
static/icon/notbuy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
static/icon/xunzhang.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
static/icon/yesbuy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB