chenxiong il y a 3 ans
Parent
commit
49a26f7660

+ 37 - 35
pages2/bank/questionBank.vue

@@ -129,7 +129,7 @@
 					<template v-if="bank.type == 5">
 						<view class="pad_8 titBox">
 							<view class="ans">
-								<view class="ans_input" v-if="!bank.ques">
+								<view class="ans_input" v-if="!bank.ques || (!bank.ques.imageList.length && !bank.ques.text)">
 									<view class="top flex">
 										<image :data-index="bankIndex" class="icon" @click="chooseImg(bankIndex)" src="/static/camera.png" mode=""></image>
 										<view class="progress">{{bank.ansText.imageList.length || '0'}}/4</view>
@@ -143,13 +143,13 @@
 										</view>
 									</view>
 								</view>
-								<view class="ans_submit answerInfos" v-if="bank.ques">
+								<view class="ans_submit answerInfos" v-if="bank.ques.imageList.length || bank.ques.text">
 									<view class="answerTitle">我的答案:</view>
 									{{ bank.ques.text }}
 									<view class="imgs"><image class="img" :key="quesIndex" v-for="(ques,quesIndex) in bank.ques.imageList" :src="$method.splitImgHost(ques, true)"></image></view>
 								</view>
 							</view>
-							<view v-if="bank.ques">
+							<view v-if="bank.ques.imageList.length || bank.ques.text">
 								<view class="pad_8 answerInfos">
 									<view class="answerTitle">答案解析:</view>
 									<view class="answerContent"><rich-text :nodes="bank.analysisContent"></rich-text></view>
@@ -287,7 +287,7 @@
 								<!-- 简答题 -->
 								<template v-if="ansItem.type == 5">
 									<view class="ans">
-										<view class="ans_input" v-if="!bank.ques[ansIndex]">
+										<view class="ans_input" v-if="!bank.ques[ansIndex] || (!bank.ques[ansIndex].text && !bank.ques[ansIndex].imageList.length)">
 											<view class="top flex">
 												<image class="icon" @click="chooseImgChild(bankIndex, ansIndex)" src="/static/camera.png" mode=""></image>
 												<view class="progress">{{ansItem.ansText.imageList.length || '0'}}/4</view>
@@ -301,15 +301,15 @@
 												</view>
 											</view>
 										</view>
-										<view class="ans_submit answerInfos" v-if="bank.ques[ansIndex]">
+										<view class="ans_submit answerInfos" v-if="bank.ques[ansIndex] || bank.ques[ansIndex].imageList.length || bank.ques[ansIndex].text">
 											<view class="answerTitle">答案我的</view>
-											{{ bank.ques[ansIndex].text }}
+											{{ bank.ques[ansIndex].text || ''}}
 											<view class="imgs">
 												<image class="img" v-for="(ques,quesIndex) in bank.ques[ansIndex].imageList" :key="quesIndex" :src="$method.splitImgHost(ques, true)"></image>
 											</view>
 										</view>
 									</view>
-									<view v-if="bank.ques[ansIndex]">
+									<view v-if="bank.ques[ansIndex].imageList.length || bank.ques[ansIndex].text">
 										<view class="pad_8 answerInfos">
 											<view class="answerTitle">答案解析</view>
 											<view class="answerContent"><rich-text :nodes="ansItem.analysisContent"></rich-text></view>
@@ -480,7 +480,7 @@ export default {
 			cgType: 0 //对应设计稿弹窗编码
 		};
 	},
-	onLoad(option) {
+	async onLoad(option) {
 		this.current = +option.current || 0
 		this.id = option.id;
 		this.goodsId = option.goodsid;
@@ -498,7 +498,8 @@ export default {
 			this.showDialog = true;
 			uni.setStorageSync('showDialog','1');
 		}
-
+		
+		//考试被迫返回
 		if (isBack) {
 			let app = getApp();
 			let globalData = app.globalData;
@@ -524,8 +525,9 @@ export default {
 				this.lastTime--;
 			}, 1000);
 		} else {
+			//进入页面
+			await this.bankExam();
 			this.goodsQuestionList();
-			this.bankExam();
 		}
 	},
 	onUnload() {
@@ -560,12 +562,17 @@ export default {
 		 * 获取试卷类型2考试,1练习
 		 */
 		bankExam() {
-			this.$api.bankExam(this.id).then(res => {
-				this.bankType = res.data.data.doType;
-				if (this.bankType == 2) {
-					this.needBack = true;
-				}
-			});
+			return new Promise(resolve => {
+				
+				this.$api.bankExam(this.id).then(res => {
+					this.bankType = res.data.data.doType;
+					if (this.bankType == 2) {
+						this.needBack = true;
+					}
+					
+					resolve()
+				});
+			})
 		},
 		/**
 		 * 点击后退按钮
@@ -975,20 +982,6 @@ export default {
 				questionList = this.questionList.length;
 			}
 			
-			if(this.isFromVideo) {  //视频课程
-				this.$api
-					.bankRecord({
-						chapterExamId: this.chapterId || 0,
-						moduleExamId: this.moduleId || 0,
-						examId: this.id,
-						goodsId: this.goodsId,
-						gradeId:this.gradeId,
-						totalQuestionNum: questionList
-					})
-					.then(res => {
-						this.recordId = res.data.data;
-					});
-			} else { //题库
 				this.$api
 					.examRecord({
 						chapterExamId: this.chapterId || 0,
@@ -999,8 +992,12 @@ export default {
 					})
 					.then(res => {
 						this.recordId = res.data.data;
+						//获取recordId 初始化先提交题目 以防突然下次继续做题退出报错
+						if(this.bankType == 1) {
+							this.examRecordEdit();
+						}
+						
 					});
-			}
 			
 		},
 		/**
@@ -1085,6 +1082,11 @@ export default {
 									text: '',
 									imageList: []
 								};
+								
+								item.ques = {
+									text: '',
+									imageList: []
+								}
 							} else if (item.type == 4) {
 								//案例题
 								console.log(item.jsonStr);
@@ -1727,8 +1729,8 @@ export default {
 			}
 
 			this.$set(this.questionList[bankindex], 'ques', {
-				imageList: this.questionList[bankindex].ansText.imageList,
-				text: this.questionList[bankindex].ansText.text
+				imageList: this.questionList[bankindex].ansText.imageList || [],
+				text: this.questionList[bankindex].ansText.text || ''
 			});
 		},
 
@@ -1748,8 +1750,8 @@ export default {
 			}
 
 			this.$set(this.questionList[bankindex].ques, ansindex, {
-				imageList: this.questionList[bankindex].jsonStr[ansindex].ansText.imageList,
-				text: this.questionList[bankindex].jsonStr[ansindex].ansText.text
+				imageList: this.questionList[bankindex].jsonStr[ansindex].ansText.imageList || [],
+				text: this.questionList[bankindex].jsonStr[ansindex].ansText.text || ''
 			});
 		},
 

+ 12 - 8
pages2/bank/questionBankExplain.vue

@@ -122,7 +122,7 @@
 					<template v-if="bank.type == 5">
 						<view class="pad_8 titBox">
 							<view class="ans">
-								<view class="ans_input" v-if="!bank.ques">
+								<view class="ans_input" v-if="!bank.ques ||( !bank.ques.text && !bank.ques.imageList.length)">
 									<view class="top flex" v-if="!allExplain && !explain && !wrongExplain">
 										<image :data-index="bankIndex" class="icon" @click="chooseImg(bankIndex)" src="/static/camera.png" mode=""></image>
 										<view class="progress">{{bank.ansText.imageList.length || '0'}}/4</view>
@@ -138,7 +138,7 @@
 										</view>
 									</view>
 								</view>
-								<view class="ans_submit answerInfos" v-if="(bank.ques && !explain) || allExplain || wrongExplain">
+								<view class="ans_submit answerInfos" v-if="((bank.ques.text || bank.ques.imageList.length) && !explain) || allExplain || wrongExplain">
 									<view class="answerTitle">我的答案:</view>
 									{{bank.ques.text || ''}}
 									<view class="imgs">
@@ -146,7 +146,7 @@
 									</view>
 								</view>
 							</view>
-							<view v-if="bank.ques || allExplain || explain || wrongExplain">
+							<view v-if="bank.ques.text || bank.ques.imageList.length || allExplain || explain || wrongExplain">
 								<view class="pad_8 answerInfos">
 									<view class="answerTitle">答案解析:</view>
 									<view class="answerContent">
@@ -259,7 +259,7 @@
 								<!-- 简答题 -->
 								<template v-if="ansItem.type == 5">
 									<view class="ans">
-										<view class="ans_input" v-if="!bank.ques[ansIndex]">
+										<view class="ans_input" v-if="!bank.ques[ansIndex] || (!bank.ques[ansIndex].text && !bank.ques[ansIndex].imageList.length)">
 											<view class="top flex" v-if="!allExplain && !explain && !wrongExplain">
 												<image class="icon" @click="chooseImgChild(bankIndex,ansIndex)" src="/static/08-10_032.jpg" mode=""></image>
 												<view class="progress">{{ansItem.ansText.imageList.length || '0'}}/4</view>
@@ -275,10 +275,10 @@
 												</view>
 											</view>
 										</view>
-										<view class="ans_submit answerInfos" v-if="(bank.ques[ansIndex] && !explain)  || allExplain || wrongExplain">
+										<view class="ans_submit answerInfos" v-if="((bank.ques[ansIndex] || bank.ques[ansIndex].text || bank.ques[ansIndex].imageList.length) && !explain)  || allExplain || wrongExplain">
 											<view class="answerTitle">答案我的</view>
 											{{bank.ques[ansIndex].text || ''}}
-											<view class="imgs">
+											<view class="imgs" v-if="bank.ques[ansIndex] && bank.ques[ansIndex].imageList.length">
 												<image class="img" :key="quesIndex" v-for="(ques,quesIndex) in bank.ques[ansIndex].imageList" :src="$method.splitImgHost(ques,true)"></image>
 											</view>
 										</view>
@@ -433,7 +433,7 @@ export default {
 		this.goodsQuestionList();
 	},
 	onUnload() {
-		if(this.isSubmit || this.isHistory || this.explain) {
+		if(this.isSubmit || this.isHistory || this.explain || this.allExplain || this.wrongExplain) {
 			return
 		}
 		this.examRecordEdit();
@@ -621,7 +621,8 @@ export default {
 								
 								if(this.explain) {
 									item.ques = {
-										text:item.analysisContent
+										text:item.analysisContent,
+										imageList:[]
 									}
 									
 									return;
@@ -740,6 +741,9 @@ export default {
 		 * @param {Object} e单选点击
 		 */
 		radioSelect(optionsId,bindex) {
+			if(this.allExplain || this.wrongExplain || this.explain) {
+				return;
+			}
 			if(this.questionList[bindex].ques) return;
 			this.$set(this.questionList[bindex],'ques',optionsId)
 			

+ 2 - 2
pages2/bank/questionBankExplainDetail.vue

@@ -124,7 +124,7 @@
 					<template v-if="bank.type == 5">
 						<view class="pad_8 titBox">
 							<view class="ans">
-								<view class="ans_input" v-if="!bank.ques">
+								<view class="ans_input" v-if="!bank.ques || (!bank.ques.text && !bank.ques.imageList.length)">
 									<view class="top flex">
 										<image :data-index="bankIndex" class="icon" @click="chooseImg(bankIndex)" src="/static/camera.png" mode=""></image>
 										<view class="progress">{{bank.ansText.imageList.length || '0'}}/4</view>
@@ -261,7 +261,7 @@
 								<!-- 简答题 -->
 								<template v-if="ansItem.type == 5">
 									<view class="ans">
-										<view class="ans_input" v-if="!bank.ques[ansIndex]">
+										<view class="ans_input" v-if="!bank.ques[ansIndex] || (!bank.ques[ansIndex].text && !bank.ques[ansIndex].imageList.length)">
 											<view class="top flex">
 												<image class="icon" @click="chooseImgChild(bankIndex,ansIndex)" src="/static/08-10_032.jpg" mode=""></image>
 												<view class="progress">{{ansItem.ansText.imageList.length || '0'}}/4</view>

+ 7 - 5
pages2/bank/question_report.vue

@@ -101,6 +101,13 @@ export default {
 	onUnload() {},
 	computed: { ...mapGetters(['userInfo']) },
 	async onShow() {
+		
+	},
+	async onLoad(option) {
+		this.id = option.id;
+		this.examId = option.examId;
+		this.hideBtns = Boolean(option.hideBtns);
+		
 		this.examWrongRecordWrongNum();
 		await this.bankExam();
 		await this.examReport();
@@ -193,11 +200,6 @@ export default {
 					});
 			}
 		});
-	},
-	async onLoad(option) {
-		this.id = option.id;
-		this.examId = option.examId;
-		this.hideBtns = Boolean(option.hideBtns);
 		
 	},
 	methods: {

+ 7 - 2
pages2/class/questionBank.vue

@@ -129,7 +129,7 @@
 					<template v-if="bank.type == 5">
 						<view class="pad_8 titBox">
 							<view class="ans">
-								<view class="ans_input" v-if="!bank.ques">
+								<view class="ans_input" v-if="!bank.ques || (!bank.ques.text && !bank.ques.imageList.length)">
 									<view class="top flex">
 										<image :data-index="bankIndex" class="icon" @click="chooseImg(bankIndex)" src="/static/camera.png" mode=""></image>
 										<view class="progress">{{bank.ansText.imageList.length || '0'}}/4</view>
@@ -287,7 +287,7 @@
 								<!-- 简答题 -->
 								<template v-if="ansItem.type == 5">
 									<view class="ans">
-										<view class="ans_input" v-if="!bank.ques[ansIndex]">
+										<view class="ans_input" v-if="!bank.ques[ansIndex] || (!bank.ques[ansIndex].text && !bank.ques[ansIndex].imageList.length)">
 											<view class="top flex">
 												<image class="icon" @click="chooseImgChild(bankIndex, ansIndex)" src="/static/08-10_032.jpg" mode=""></image>
 												<view class="progress">{{ansItem.ansText.imageList.length || '0'}}/4</view>
@@ -1114,6 +1114,11 @@ export default {
 									text: '',
 									imageList: []
 								};
+								
+								item.ques = {
+									text: '',
+									imageList: []
+								}
 							} else if (item.type == 4) {
 								//案例题
 								console.log(item.jsonStr);