|
@@ -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)
|
|
|
})
|
|
|
})
|
|
|
},
|