chenxiong 3 anos atrás
pai
commit
643fe37e5d

+ 160 - 22
pages2/bank/questionBank.vue

@@ -649,68 +649,148 @@ export default {
 			});
 			let score = 0; //计算总分
 			let reportStatus = 0;
-			let number = 0;
+			let number = 0;  //做对的题目数量
+			let doQuestionNum = 0;  //做过的题目数量
+			let allScore = 0;  //总分
 			let passScore = 0;
+			let doWrongQuestionIds = []; //错题和未做题id(客观题)
+			let doQuestionIds = []; //做过的题目id
+			let rightQuestionIds = []; //做对的题目id
 			this.questionList.forEach((item, index) => {
-				passScore = item.passScore
+				// passScore = item.passScore
 				if (item.type == 1) {
+					//正确
 					if (item.ques == item.ans) {
 						item.scoreResult = item.score;
 						score += item.score;
 						number++;
-					} else {
-						
-							item.scoreResult = 0;
+						rightQuestionIds.push(item.questionId)
+					} else { //错误
+						item.scoreResult = 0;
+						doWrongQuestionIds.push(item.questionId)
+					}
+					allScore += item.score;
+					if (item.ques) {
+						doQuestionNum++;
+						doQuestionIds.push(item.questionId)
 					}
 				} else if (item.type == 2) {
 					let isRight =
-						item.ques &&
-						item.ques.every((quesItem, quesIndex) => {
+						item.ans &&
+						item.ans.every((quesItem, quesIndex) => {
 							return item.ques[quesIndex] == item.ans[quesIndex];
 						});
-
+			
 					if (isRight) {
-						item.scoreResult = item.score;
 						score += item.score;
 						number++;
+						item.scoreResult = item.score;
+						rightQuestionIds.push(item.questionId)
 					} else {
+						let checkboxScore = item.score;  //获取单题总分数
+						item.ques.forEach((ques,quesIndex) => {
+							//选错一个全扣
+							if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+								checkboxScore = 0;
+							} 
+						})
+						console.log(checkboxScore)
+						
+						//没选错
+						if(checkboxScore) {
+							
+							item.ans.forEach((ans,quesIndex) => {
+								//漏选扣一部分
+								console.log(item.ques.indexOf(item.ans[quesIndex]))
+								if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+									checkboxScore -= item.partScore;
+								} 
+							})
+						}
+						
 						
+						if(checkboxScore <= 0) { //0分
 							item.scoreResult = 0;
+							doWrongQuestionIds.push(item.questionId)
+						} else { //部分分
+							number++;
+							item.scoreResult = checkboxScore;
+							score += checkboxScore;
+							rightQuestionIds.push(item.questionId)
+						}
+					}
+					allScore += item.score;
+					if (item.ques && item.ques.length) {
+						doQuestionNum++;
+						doQuestionIds.push(item.questionId)
 					}
 				} else if (item.type == 3) {
 					if (item.ques == item.ans) {
 						item.scoreResult = item.score;
 						score += item.score;
 						number++;
+						rightQuestionIds.push(item.questionId)
 					} else {
-						
 						item.scoreResult = 0;
+						doWrongQuestionIds.push(item.questionId)
+					}
+					allScore += item.score;
+					if (item.ques) {
+						doQuestionNum++;
+						doQuestionIds.push(item.questionId)
+					}
+				} else if (item.type == 4) {
+					if (item.ques && item.ques.length) {
+						doQuestionNum++;
+					}
+				} else if (item.type == 5) {
+					if (item.ques) {
+						doQuestionNum++;
 					}
 				}
 			});
-
-			if(score >= passScore) {
+			
+			//大于60分及格
+			if(score >= 60) {
 				reportStatus = 1
 			} else {
 				reportStatus = 0
 			}
-
+			
+			//交卷
 			this.$api
 				.examRecordEdit({
 					examId: this.id,
 					goodsId: this.goodsId,
 					reportStatus:reportStatus,
-					doQuestionNum: this.questionOverNum(),
 					recordId: this.recordId,
 					rightQuestionNum: number,
 					status: 1,
+					doQuestionIds:doQuestionIds.join(','),
+					rightQuestionIds:rightQuestionIds.join(','),
+					doQuestionNum: doQuestionNum,
 					performance: score,
 					totalScore: allScore,
 					examTime: parseInt(this.allTimes),
 					doTime: parseInt(this.allTimes) - parseInt(this.lastTime),
 					historyExamJson: JSON.stringify(this.questionList)
 				})
-				.then(res => {});
+				.then(res => {
+					this.isSubmit = true;
+					if (res.data.code == 200) {
+						
+					}
+				});
+				
+				//错题集id提交(客观题)
+				this.$api.examWrongRecord({
+						examId: this.id,
+						goodsId: this.goodsId,
+						questionIds: doWrongQuestionIds,
+						recordId: this.recordId
+					}).then(res => { 
+						
+					});
 		},
 		/**
 		 * 立即交卷
@@ -740,18 +820,47 @@ export default {
 						}
 					} else if (item.type == 2) {
 						let isRight =
-							item.ques &&
-							item.ques.every((quesItem, quesIndex) => {
+							item.ans &&
+							item.ans.every((quesItem, quesIndex) => {
 								return item.ques[quesIndex] == item.ans[quesIndex];
 							});
 
 						if (isRight) {
 							score += item.score;
 							number++;
+						}  else {
+							let checkboxScore = item.score;  //获取单题总分数
+							item.ques.forEach((ques,quesIndex) => {
+								//选错一个全扣
+								if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+									checkboxScore = 0;
+								} 
+							})
+							console.log(checkboxScore)
+							
+							//没选错
+							if(checkboxScore) {
+								
+								item.ans.forEach((ans,quesIndex) => {
+									//漏选扣一部分
+									console.log(item.ques.indexOf(item.ans[quesIndex]))
+									if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+										checkboxScore -= item.partScore;
+									} 
+								})
+							}
+							
+							
+							if(checkboxScore <= 0) { //0分
+							
+							} else { //部分分
+								number++;
+								score += checkboxScore;
+							}
 						}
-
 						if (item.ques && item.ques.length) {
 							doQuestionNum++;
+							doQuestionIds.push(item.questionId)
 						}
 					} else if (item.type == 3) {
 						if (item.ques == item.ans) {
@@ -1188,8 +1297,8 @@ export default {
 					}
 				} else if (item.type == 2) {
 					let isRight =
-						item.ques &&
-						item.ques.every((quesItem, quesIndex) => {
+						item.ans &&
+						item.ans.every((quesItem, quesIndex) => {
 							return item.ques[quesIndex] == item.ans[quesIndex];
 						});
 
@@ -1199,8 +1308,37 @@ export default {
 						item.scoreResult = item.score;
 						rightQuestionIds.push(item.questionId)
 					} else {
-						item.scoreResult = 0;
-						doWrongQuestionIds.push(item.questionId)
+						let checkboxScore = item.score;  //获取单题总分数
+						item.ques.forEach((ques,quesIndex) => {
+							//选错一个全扣
+							if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+								checkboxScore = 0;
+							} 
+						})
+						console.log(checkboxScore)
+						
+						//没选错
+						if(checkboxScore) {
+							
+							item.ans.forEach((ans,quesIndex) => {
+								//漏选扣一部分
+								console.log(item.ques.indexOf(item.ans[quesIndex]))
+								if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+									checkboxScore -= item.partScore;
+								} 
+							})
+						}
+						
+						
+						if(checkboxScore <= 0) { //0分
+							item.scoreResult = 0;
+							doWrongQuestionIds.push(item.questionId)
+						} else { //部分分
+							number++;
+							item.scoreResult = checkboxScore;
+							score += checkboxScore;
+							rightQuestionIds.push(item.questionId)
+						}
 					}
 					allScore += item.score;
 					if (item.ques && item.ques.length) {

+ 34 - 4
pages2/bank/questionBankExplain.vue

@@ -677,7 +677,7 @@ export default {
 						doQuestionIds.push(item.questionId)
 					}
 				} else if(item.type == 2) {
-					let isRight = item.ques && item.ques.every((quesItem,quesIndex) => {
+					let isRight = item.ans && item.ans.every((quesItem,quesIndex) => {
 						return item.ques[quesIndex] == item.ans[quesIndex]
 					})
 					
@@ -686,9 +686,39 @@ export default {
 						number++
 						rightQuestionIds.push(item.questionId)
 					} else {
-						doWrongQuestionIds.push(item.questionId)
+						let checkboxScore = item.score;  //获取单题总分数
+						item.ques.forEach((ques,quesIndex) => {
+							//选错一个全扣
+							if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+								checkboxScore = 0;
+							} 
+						})
+						console.log(checkboxScore)
+						
+						//没选错
+						if(checkboxScore) {
+							
+							item.ans.forEach((ans,quesIndex) => {
+								//漏选扣一部分
+								console.log(item.ques.indexOf(item.ans[quesIndex]))
+								if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+									checkboxScore -= item.partScore;
+								} 
+							})
+						}
+						
+						
+						if(checkboxScore <= 0) { //0分
+							item.scoreResult = 0;
+							doWrongQuestionIds.push(item.questionId)
+						} else { //部分分
+							number++;
+							item.scoreResult = checkboxScore;
+							score += checkboxScore;
+							rightQuestionIds.push(item.questionId)
+						}
 					}
-					allScore += item.score
+					allScore += item.score;
 					if (item.ques && item.ques.length) {
 						doQuestionNum++;
 						doQuestionIds.push(item.questionId)
@@ -718,7 +748,7 @@ export default {
 			})
 			
 			//大于60分及格
-			if(score >= 60) {
+			if(score >= passScore) {
 				reportStatus = 1
 			} else {
 				reportStatus = 0

+ 90 - 9
pages2/class/questionBank.vue

@@ -666,13 +666,38 @@ export default {
 							return item.ques[quesIndex] == item.ans[quesIndex];
 						});
 
-					if (isRight) {
+					if (isRight) { //全对
 						item.scoreResult = item.score;
 						score += item.score;
 						number++;
 					} else {
+						let checkboxScore = item.score;  //获取单题总分数
+						item.ques.forEach((ques,quesIndex) => {
+							//选错一个全扣
+							if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+								checkboxScore = 0;
+							} 
+						})
+						
+						//没选错
+						if(checkboxScore) {
+							item.ans.forEach((ans,quesIndex) => {
+								//选错一个全扣
+								if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+									checkboxScore -= item.partScore;
+								} 
+							})
+						}
+						
+						
+						if(checkboxScore <= 0) {
+							item.scoreResult = 0;
+						} else {
+							item.scoreResult = checkboxScore;
+						}
+						
+						score += checkboxScore;
 						
-						item.scoreResult = 0;
 					}
 					allScore += item.score;
 				} else if (item.type == 3) {
@@ -751,6 +776,33 @@ export default {
 						if (isRight) {
 							score += item.score;
 							number++;
+						} else {
+							let checkboxScore = item.score;  //获取单题总分数
+							item.ques.forEach((ques,quesIndex) => {
+								//选错一个全扣
+								if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+									checkboxScore = 0;
+								} 
+							})
+							
+							//没选错
+							if(checkboxScore) {
+								item.ans.forEach((ans,quesIndex) => {
+									//选错一个全扣
+									if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+										checkboxScore -= item.partScore;
+									} 
+								})
+							}
+							
+							
+							if(checkboxScore <= 0) {
+								item.scoreResult = 0;
+							} else {
+								item.scoreResult = checkboxScore;
+								score += checkboxScore;
+								number++;
+							}
 						}
 
 						if (item.ques && item.ques.length) {
@@ -1083,7 +1135,7 @@ export default {
 			let doQuestionIds = []; //做过的题目id
 			let rightQuestionIds = []; //做对的题目id
 			this.questionList.forEach((item, index) => {
-				// passScore = item.passScore
+				passScore = item.passScore
 				if (item.type == 1) {
 					//正确
 					if (item.ques == item.ans) {
@@ -1102,8 +1154,8 @@ export default {
 					}
 				} else if (item.type == 2) {
 					let isRight =
-						item.ques &&
-						item.ques.every((quesItem, quesIndex) => {
+						item.ans &&
+						item.ans.every((quesItem, quesIndex) => {
 							return item.ques[quesIndex] == item.ans[quesIndex];
 						});
 
@@ -1113,8 +1165,37 @@ export default {
 						item.scoreResult = item.score;
 						rightQuestionIds.push(item.questionId)
 					} else {
-						item.scoreResult = 0;
-						doWrongQuestionIds.push(item.questionId)
+						let checkboxScore = item.score;  //获取单题总分数
+						item.ques.forEach((ques,quesIndex) => {
+							//选错一个全扣
+							if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
+								checkboxScore = 0;
+							} 
+						})
+						console.log(checkboxScore)
+						
+						//没选错
+						if(checkboxScore) {
+							
+							item.ans.forEach((ans,quesIndex) => {
+								//漏选扣一部分
+								console.log(item.ques.indexOf(item.ans[quesIndex]))
+								if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
+									checkboxScore -= item.partScore;
+								} 
+							})
+						}
+						
+						
+						if(checkboxScore <= 0) { //0分
+							item.scoreResult = 0;
+							doWrongQuestionIds.push(item.questionId)
+						} else { //部分分
+							number++;
+							item.scoreResult = checkboxScore;
+							score += checkboxScore;
+							rightQuestionIds.push(item.questionId)
+						}
 					}
 					allScore += item.score;
 					if (item.ques && item.ques.length) {
@@ -1147,8 +1228,8 @@ export default {
 				}
 			});
 			
-			//大于60分及格
-			if(score >= 60) {
+			//大于分及格
+			if(score >= passScore) {
 				reportStatus = 1
 			} else {
 				reportStatus = 0

+ 2 - 2
pages2/class/question_report.vue

@@ -1,8 +1,8 @@
 <template>
 	<view>
-		<!-- <view :class="reportStatus == 0 ? 'redBtn' : reportStatus == 1 ? 'greenBtn' : 'disNone'" v-if="reportStatus !== null">
+		<view :class="reportStatus == 0 ? 'redBtn' : reportStatus == 1 ? 'greenBtn' : 'disNone'" v-if="reportStatus !== null">
 			{{ reportStatus == 0 ? '测试未通过' : reportStatus == 1 ? '测试通过' : '' }}
-		</view> -->
+		</view>
 		<view class="top">
 
 			<view class="box">

+ 19 - 0
pages2/subject/wrongBank.vue

@@ -299,6 +299,12 @@
 							</view>
 							答题卡
 						</view>
+						<view class="collect" :class="{show:!explain}" @click="pdsubmit">
+							<view>
+								<image src="/static/jj.png" mode=""></image>
+								<view>交卷</view>
+							</view>
+						</view>
 					</view>
 				</view>
 			</swiper-item>
@@ -949,6 +955,19 @@ export default {
 			this.$set(this.questionList[bankindex],'current',index)
 			
 		},
+		pdsubmit() {
+			uni.showToast({
+				icon:'none',
+				title:'交卷成功',
+				duration:1000,
+			})
+			
+			setTimeout(() => {
+				uni.navigateBack({
+					delta:1
+				})
+			},1000)
+		}
 	}
 };
 </script>

+ 23 - 3
pages2/subject/wrongTypeBank.vue

@@ -299,6 +299,12 @@
 							</view>
 							答题卡
 						</view>
+						<view class="collect" :class="{show:!explain}" @click="pdsubmit">
+							<view>
+								<image src="/static/jj.png" mode=""></image>
+								<view>交卷</view>
+							</view>
+						</view>
 					</view>
 				</view>
 			</swiper-item>
@@ -519,9 +525,9 @@ export default {
 				let question = this.questionList.find(item => item.questionId == this.questionList[bindex].questionId);
 				if(question) {
 					this.$api.wrongRecordDelete({
-						"examId": this.questionId[bindex].examId,
-						"goodsId": this.questionId[bindex].examId,
-						"questionId": this.questionList[bindex].questionId,
+						"examId": question.examId,
+						"goodsId": question.goodsId,
+						"questionId": question.questionId,
 					}).then(res => {
 						
 					})
@@ -840,6 +846,20 @@ export default {
 			this.$set(this.questionList[bankindex],'current',index)
 			
 		},
+		
+		pdsubmit() {
+			uni.showToast({
+				icon:'none',
+				title:'交卷成功',
+				duration:1000,
+			})
+			
+			setTimeout(() => {
+				uni.navigateBack({
+					delta:1
+				})
+			},1000)
+		}
 	}
 };
 </script>