Browse Source

对接我的网课-学习相关状态

chenxiong 3 năm trước cách đây
mục cha
commit
35da55738b
2 tập tin đã thay đổi với 170 bổ sung14 xóa
  1. 145 9
      pages2/wd/class.vue
  2. 25 5
      pages2/wd/course.vue

+ 145 - 9
pages2/wd/class.vue

@@ -10,7 +10,7 @@
 								<image src="/static/icon/wk_icon1.png" class="wk_icon"></image>
 								<text class="content">{{ item.courseNum }}</text>
-								
+								课程
 								<text class="content">{{ item.secAllNum }}</text>
 								<text class="content">{{ item.classHours }}</text>
@@ -23,21 +23,132 @@
 							</view>
 						</view>
 						
-						<template v-if="item.classEndTime && (item.classEndTime < sysTime) ">
-							<view class="class-warm">
-								<u-icon class="class-warm__icon" size="30" color="#FF3B30" name="error-circle-fill"></u-icon>
+						
+						<template v-if="sysTime < item.validityStartTime || sysTime > item.validityEndTime">
+							<view class="class-warm" v-if="item.gradeId != 0 && item.gradeStatus == 1">
 								<view class="class-warm__text">
-									<view class="date">班级有效期:{{$method.timestampToTime(item.classStartTime)}} - {{$method.timestampToTime(item.classEndTime)}}</view>
-									<view class="state">班级状态:已过期,有疑问请联系 <text @click="call">020-87085982</text></view>
+									<view class="date">
+										不在学习有效期,不可以学习了哦
+									</view>
 								</view>
 							</view>
 						</template>
+						
+						<template v-else>
+							<!-- 班级有效期过了 -->
+							<template v-if="item.classEndTime && (item.classEndTime < sysTime) ">
+								<view class="class-warm">
+									<u-icon class="class-warm__icon" size="30" color="#FF3B30" name="error-circle-fill"></u-icon>
+									<view class="class-warm__text">
+										<view class="date">班级有效期:{{$method.timestampToTime(item.classStartTime)}} - {{$method.timestampToTime(item.classEndTime)}}</view>
+										<view class="state">班级状态:已过期,有疑问请联系 <text @click="call">020-87085982</text></view>
+									</view>
+								</view>
+							</template>
+							
+							<!-- 班级有效期之前 -->
+							<template v-else-if="item.classStartTime && (item.classStartTime > sysTime) ">
+								<view class="class-warm">
+									<u-icon class="class-warm__icon" size="30" color="#FF3B30" name="error-circle-fill"></u-icon>
+									<view class="class-warm__text">
+										<view class="date">班级有效期:{{$method.timestampToTime(item.classStartTime)}} - {{$method.timestampToTime(item.classEndTime)}}</view>
+										<view class="state">班级状态:未到学习时间,有疑问请联系 <text @click="call">020-87085982</text></view>
+									</view>
+								</view>
+							</template>
+							
+							<!-- 在班级有效期之间 -->
+							<template v-else>
+								
+								<!-- 学时审核状态不可审核 -->
+								<template v-if="item.periodStatus == -1">
+									<view class="class-warm" v-if="item.gradeId != 0 && item.gradeStatus == 1">
+										<view class="class-warm__text">
+											<view class="date">
+												班级状态:
+												<text v-if="item.learningStatus == 1 || (item.learningStatus == 3 && item.learningTimeStart < sysTime)">已开班</text>
+												<text v-if="item.learningStatus == 2">未开班</text>
+											</view>
+											<view class="state" v-if="item.learningStatus == 2">教务处正在为您开通班级,请耐心等待</view>
+										</view>
+									</view>
+									
+									<view class="class-warm">
+										<view class="class-warm__text">
+											<view class="date">
+												<template v-if="sysTime >= item.validityStartTime && sysTime <= item.validityEndTime">
+													学习状态:
+													<text v-if="item.stuAllNum == 0">未学习</text>
+													<text v-else-if="item.stuAllNum > 0 && item.stuAllNum < item.secAllNum">学习中</text>
+													<text v-else-if="item.stuAllNum == item.secAllNum">已学完</text>
+												</template>
+												<template v-else>
+													已过学习有效期,不可以学习了哦!
+												</template>
+											</view>
+										</view>
+									</view>
+									
+									<view class="class-warm" v-if="item.profileTpStatus == 1">
+										<view class="class-warm__text">
+											<view class="date">
+												资料审核状态:
+												<text v-if="item.profileStatus == 1">已通过</text>
+												<text v-else-if="item.profileStatus == 2">审核中</text>
+												<text v-else-if="item.profileStatus == 3">待完善</text>
+											</view>
+										</view>
+									</view>
+								</template>
+								
+								<!-- 学时审核状态可以审核 -->
+								<template v-if="item.periodStatus != -1">
+									<view class="class-warm">
+										<view class="class-warm__text">
+											<view class="date">
+												<text v-if="item.periodStatus == 0">机构审核:学时审核不通过</text>
+												<text v-else-if="item.periodStatus == 1">机构审核:学时审核通过</text>
+												<text v-else-if="item.periodStatus == 2">学时待审核</text>
+											</view>
+										</view>
+									</view>
+									
+									<view class="class-warm" v-if="item.periodStatus == 1">
+										<view class="class-warm__text">
+											<view class="date">
+												<text v-if="item.subExamStatus === null">待预约考试</text>
+												<text v-else-if="item.subExamStatus === 0 &&  sysTime < subApplySiteStartTime">
+													待考试,考试时间:{{$method.timestampToTime(item.subApplySiteStartTime)}} - {{$method.timestampToTime(item.subaApplySiteEndTime)}}
+												</text>
+												<text v-else-if="item.subExamStatus === 1">待出考试结果</text>
+												<text v-else-if="item.subExamStatus === 2">缺考</text>
+												<text v-else-if="item.subExamStatus === 3">作弊</text>
+												<text v-else-if="item.subExamStatus === 4">替考</text>
+												<text v-else-if="item.subResult === 0">考试结果:不通过,需补考</text>
+												<text v-else-if="item.subResult === 1">考试结果:通过,考试成绩为{{item.subPerformance}}</text>
+												
+											</view>
+										</view>
+									</view>
+								</template>
+								
+							</template>
+							
+							
+							
+							
+							
+							
+							
+						</template>
+						
+						
 				</view>
 			
 			
 			<view class="bottomBox">
 				<template v-if="item.gradeStatus == 1 && item.status == 1 && (item.studyEndTime > sysTime) &&  (item.classEndTime && (item.classEndTime < sysTime)) && (item.periodStatus == 0 || item.periodStatus == -1) && item.studyCount > 0">
-					<view class="restart" @click="selectClass(item)">
+					<view class="restart" @click.stop="selectClass(item)">
 						选班重学
 					</view>
 				</template>
@@ -50,7 +161,7 @@
 					<view class="box_progress">
 						<view style="width: 60%;"><u-line-progress :showText="false" height="22" active-color="#ff9900" :show-percent="false" :percent="(item.stuAllNum / item.secAllNum) * 100"></u-line-progress></view>
 						
-						<view><u-button :class="{disabled:sysTime <= item.validityStartTime || sysTime >= item.validityEndTime}" type="warning" size="mini" @click.stop="studyIn(item.goodsId,item.gradeId,item)">进入学习</u-button></view>
+						<view><u-button :class="{disabled:sysTime <= item.validityStartTime || sysTime >= item.validityEndTime || (item.classStartTime && sysTime <= item.classStartTime) || (item.classEndTime && sysTime >= item.classEndTime) || item.learningStatus == 2}" type="warning" size="mini" @click.stop="studyIn(item.goodsId,item.gradeId,item)">进入学习</u-button></view>
 					</view>
 					<view class="box_progress" v-if="item.applyStatus === 1">
 						<view style="width: 60%;">
@@ -217,7 +328,7 @@ export default {
 			});
 		},
 		async studyIn(v,i,item) {
-			if(this.sysTime <= item.validityStartTime || this.sysTime >= item.validityEndTime) {
+			if(this.sysTime <= item.validityStartTime || this.sysTime >= item.validityEndTime || (item.classStartTime && this.sysTime <= item.classStartTime) || (item.classEndTime && this.sysTime >= item.classEndTime) ) {
 				uni.showToast({
 					icon:'none',
 					title:'不在学习时间,不能进入学习'
@@ -225,6 +336,14 @@ export default {
 				return;
 			}
 			
+			if(item.learningStatus == 2) {
+				uni.showToast({
+					icon:'none',
+					title:'未开班'
+				})
+				return 
+			}
+			
 			if(item.gradeStatus == 1 && item.status == 1 && (item.studyEndTime > this.sysTime) &&  (item.classEndTime && (item.classEndTime < this.sysTime)) && (item.periodStatus == 0 || item.periodStatus == -1) && item.studyCount > 0) {
 				this.selectClass(item);
 				return ;
@@ -239,6 +358,23 @@ export default {
 				});
 				return;
 			}
+			
+			if(item.courseNum == 1 ) {
+				
+				this.$api.courseCourseList({
+					pageNum:1,
+					pageSize:1,
+					goodsId:item.goodsId,
+					gradeId:item.gradeId
+				}).then(res => {
+					if(res.data.code == 200) {
+						uni.navigateTo({
+							url:`/pages3/polyv/detail?id=${res.data.rows[0].courseId}&goodsId=${item.goodsId}`
+						})
+					}
+				});
+				return;
+			}
 			this.$navTo.togo(`/pages2/wd/course?id=${v}&gid=${i}`);
 		},
 		/**

+ 25 - 5
pages2/wd/course.vue

@@ -3,7 +3,7 @@
 		<view v-if="!courseList.length">
 			<u-empty text="暂无课程" mode="list"></u-empty>
 		</view>
-		<view v-else @click="jump(item)" v-for="(item, index) in courseList" :key="index" style="margin-bottom: 30rpx;">
+		<view v-else @click="jump(item,index)" v-for="(item, index) in courseList" :key="index" style="margin-bottom: 30rpx;">
 			<view class="class_item">
 				<image :src="$method.splitImgHost(item.coverUrl, true)" style="height: 316rpx;width: 100%;border-radius: 24rpx;"></image>
 				<view style="color: #333333;font-weight: bold;font-size: 32rpx;">{{ item.courseName }}</view>
@@ -15,7 +15,7 @@
 				</view>
 				<view class="box_progress">
 					<view style="width: 60%;"><u-line-progress height="22" :show-percent="false" active-color="#ff9900" :percent="(item.stuAllNum / item.secAllNum) * 100"></u-line-progress></view>
-					<view><u-button type="warning" size="mini" @click.stop="studyIn(item)">进入学习</u-button></view>
+					<view><u-button type="warning" size="mini" @click.stop="studyIn(item,index)">进入学习</u-button></view>
 				</view>
 			</view>
 		</view>
@@ -34,7 +34,7 @@ export default {
 				pageSize: 10,
 				total: 0
 			},
-			
+			itemIndex:''
 		};
 	},
 	onLoad(option) {
@@ -44,6 +44,11 @@ export default {
 		this.courseCourseList();
 		this.$store.getters.dictObj
 	},
+	onShow(){
+		if(this.itemIndex !== '') {
+			this.refreshByIndex();
+		}
+	},
 	onReachBottom() {
 		if (this.courseList.length < this.param.total) {
 			this.param.pageNum++;
@@ -51,7 +56,21 @@ export default {
 		}
 	},
 	methods: {
-		jump(item) {
+		/**
+		 * 返回刷新之前进入的课程数据
+		 */
+		refreshByIndex() {
+			this.$api.courseCourseList({
+				pageNum: this.itemIndex+1,
+				pageSize: 1,
+			}).then(res => {
+				if (res.data.code == 200) {
+					this.$set(this.courseList,this.itemIndex,res.data.rows[0])
+				}
+			});
+		},
+		jump(item,index) {
+			this.itemIndex = index;
 			if(item.rebuild === 0) {  //未重修
 				this.$navTo.togo('/pages2/learn/details', {
 					id: item.courseId,
@@ -65,7 +84,8 @@ export default {
 				goodsId: this.goodsId,
 			}); 
 		},
-		studyIn(item) {
+		studyIn(item,index) {
+			this.itemIndex = index;
 			if(item.rebuild === 0) {  //未重修
 				this.$navTo.togo('/pages2/learn/details', {
 					id: item.courseId,