Sfoglia il codice sorgente

#3680 C1092 学校题库--艺术评测随机组卷,同套试题有重复知识点时出题重复判断

XW 6 mesi fa
parent
commit
7f062ffc83
1 ha cambiato i file con 36 aggiunte e 12 eliminazioni
  1. 36 12
      TEAMModelOS/ClientApp/src/common/BaseQuickArtPaper.vue

+ 36 - 12
TEAMModelOS/ClientApp/src/common/BaseQuickArtPaper.vue

@@ -305,10 +305,38 @@
 							quesList: new Array(this.orderItemsArr.length)
 						}
 					})
-					let qIndex = await this.getPaperItem(this.orderItemsArr, params)
+					let qIndex = []
+					let quesArr = await this.getPaperItem(this.orderItemsArr, params)
+					let newItemsArr = []
+					this.orderItemsArr.forEach((item, index) => {
+						item.index = index
+						if(item.tags) {
+							newItemsArr.unshift(item)
+						} else {
+							newItemsArr.push(item)
+						}
+					})
+					this.paperList.forEach((paper, pIndex) => {
+						let newQuesArr = this._.cloneDeep(quesArr)
+						// !(pIndex % 2) && newQuesArr.reverse()
+						newQuesArr.sort((a, b) => Math.random() - 0.5)
+						newItemsArr.forEach((item, index) => {
+							let needInfoIndex = newQuesArr.findIndex(ques => ques.type === item.type && ques.knowledge.includes(item.knowledge[0]) && (item.tags ? (ques?.tags && ques.tags.includes(item.tags)) : true))
+							if(needInfoIndex != -1) {
+								paper.quesList.splice(item.index, 1, newQuesArr[needInfoIndex])
+								newQuesArr.splice(needInfoIndex, 1)
+							} else if(!qIndex.includes(item.index + 1)){
+								qIndex.push(item.index + 1)
+							}
+						})
+					})
 					if(qIndex.length) {
 						let message = qIndex.join('、')
-						this.$Message.warning(`第${message}题未查询到题目,请重新配置`);
+						this.$Message.warning({
+							content: `第${message}题未查询到题目,或查询的题目数量少于所需题目数量,请重新配置`,
+							duration: 7,
+							closable: true
+						});
 						this.paperList = []
 						return
 					}
@@ -337,6 +365,7 @@
 			// 为试卷匹配对应题目
 			getPaperItem(itemArr, params) {
 				return new Promise((resolve, reject) => {
+					let quesArr = []
 					let promiseArr = []
 					itemArr.forEach((item, index) => {
 						params['type'] = [item.type] || []
@@ -346,23 +375,18 @@
 							this.$api.newEvaluation.FindExerciseList(params).then(res => {
 								if(res.items.length) {
 									res.items.forEach(items => {
+										items.tags = items?.tags || []
 										items.score = item.score
+										let quesInfo = quesArr.find(ques => ques.id === items.id)
+										if(!quesInfo) quesArr.push(items)
 									})
-									// 需获取题目的json文件
-									this.paperList.forEach((paper, pIndex) => {
-										let qIndex = pIndex + 1 > res.items.length ? ((pIndex + 1) % res.items.length) - 1 : pIndex
-										paper.quesList.splice(index, 1, res.items[qIndex === -1 ? (res.items.length - 1) : qIndex])
-									})
-									r(-1)
-								} else {
-									r(index + 1)
 								}
+								r(-1)
 							})
 						}))
 					})
 					Promise.all(promiseArr).then(result => {
-						let qIndex = result.filter(item => item != -1)
-						resolve(qIndex)
+						resolve(quesArr)
 					})
 				})
 			},