Skip to content

Commit

Permalink
题目的分数更新完成
Browse files Browse the repository at this point in the history
  • Loading branch information
lsgwr committed Oct 25, 2020
1 parent a95ec43 commit 8e62dd9
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,80 +64,82 @@ private List<QuestionVo> getQuestionVos(List<Question> questionList) {
List<QuestionVo> questionVoList = new ArrayList<>();
// 循环完成每个属性的定制
for (Question question : questionList) {
QuestionVo questionVo = new QuestionVo();
// 先复制能复制的属性
BeanUtils.copyProperties(question, questionVo);
// 设置问题的创建者
questionVo.setQuestionCreator(
Objects.requireNonNull(
userRepository.findById(
question.getQuestionCreatorId()
).orElse(null)
).getUserUsername());
QuestionVo questionVo = getQuestionVo(question);
questionVoList.add(questionVo);
}
return questionVoList;
}

// 设置问题的难度
questionVo.setQuestionLevel(
Objects.requireNonNull(
questionLevelRepository.findById(
question.getQuestionLevelId()
).orElse(null)
).getQuestionLevelDescription());
private QuestionVo getQuestionVo(Question question) {
QuestionVo questionVo = new QuestionVo();
// 先复制能复制的属性
BeanUtils.copyProperties(question, questionVo);
// 设置问题的创建者
questionVo.setQuestionCreator(
Objects.requireNonNull(
userRepository.findById(
question.getQuestionCreatorId()
).orElse(null)
).getUserUsername());

// 设置题目的类别,比如单选、多选、判断等
questionVo.setQuestionType(
Objects.requireNonNull(
questionTypeRepository.findById(
question.getQuestionTypeId()
).orElse(null)
).getQuestionTypeDescription());
// 设置问题的难度
questionVo.setQuestionLevel(
Objects.requireNonNull(
questionLevelRepository.findById(
question.getQuestionLevelId()
).orElse(null)
).getQuestionLevelDescription());

// 设置题目分类,比如数学、语文、英语、生活、人文等
questionVo.setQuestionCategory(
Objects.requireNonNull(
questionCategoryRepository.findById(
question.getQuestionCategoryId()
).orElse(null)
).getQuestionCategoryName()
);
// 设置题目的类别,比如单选、多选、判断等
questionVo.setQuestionType(
Objects.requireNonNull(
questionTypeRepository.findById(
question.getQuestionTypeId()
).orElse(null)
).getQuestionTypeDescription());

// 选项的自定义Vo列表
List<QuestionOptionVo> optionVoList = new ArrayList<>();
// 设置题目分类,比如数学、语文、英语、生活、人文等
questionVo.setQuestionCategory(
Objects.requireNonNull(
questionCategoryRepository.findById(
question.getQuestionCategoryId()
).orElse(null)
).getQuestionCategoryName()
);

// 获得所有的选项列表
List<QuestionOption> optionList = questionOptionRepository.findAllById(
Arrays.asList(question.getQuestionOptionIds().split("-"))
);
// 选项的自定义Vo列表
List<QuestionOptionVo> optionVoList = new ArrayList<>();

// 获取所有的答案列表optionList中每个option的isAnswer选项
List<QuestionOption> answerList = questionOptionRepository.findAllById(
Arrays.asList(question.getQuestionAnswerOptionIds().split("-"))
);
// 获得所有的选项列表
List<QuestionOption> optionList = questionOptionRepository.findAllById(
Arrays.asList(question.getQuestionOptionIds().split("-"))
);

// 根据选项和答案的id相同设置optionVo的isAnswer属性
for (QuestionOption option : optionList) {
QuestionOptionVo optionVo = new QuestionOptionVo();
BeanUtils.copyProperties(option, optionVo);
for (QuestionOption answer : answerList) {
if (option.getQuestionOptionId().equals(answer.getQuestionOptionId())) {
optionVo.setAnswer(true);
}
// 获取所有的答案列表optionList中每个option的isAnswer选项
List<QuestionOption> answerList = questionOptionRepository.findAllById(
Arrays.asList(question.getQuestionAnswerOptionIds().split("-"))
);

// 根据选项和答案的id相同设置optionVo的isAnswer属性
for (QuestionOption option : optionList) {
QuestionOptionVo optionVo = new QuestionOptionVo();
BeanUtils.copyProperties(option, optionVo);
for (QuestionOption answer : answerList) {
if (option.getQuestionOptionId().equals(answer.getQuestionOptionId())) {
optionVo.setAnswer(true);
}
optionVoList.add(optionVo);
}

// 设置题目的所有选项
questionVo.setQuestionOptionVoList(optionVoList);

questionVoList.add(questionVo);
optionVoList.add(optionVo);
}
return questionVoList;

// 设置题目的所有选项
questionVo.setQuestionOptionVoList(optionVoList);
return questionVo;
}

@Override
public void updateQuestion(QuestionVo questionVo) {
public QuestionVo updateQuestion(QuestionVo questionVo) {
// 1.把需要的属性都设置好
String questionName = questionVo.getQuestionName();
String questionDesc = questionVo.getQuestionDescription();
StringBuilder questionAnswerOptionIds = new StringBuilder();
List<QuestionOption> questionOptionList = new ArrayList<>();
List<QuestionOptionVo> questionOptionVoList = questionVo.getQuestionOptionVoList();
Expand All @@ -156,19 +158,20 @@ public void updateQuestion(QuestionVo questionVo) {
questionAnswerOptionIds.append(questionOptionVo.getQuestionOptionId());
}
}

}

// 1.更新问题
Question question = questionRepository.findById(questionVo.getQuestionId()).orElse(null);
assert question != null;
question.setQuestionName(questionName);
question.setQuestionDescription(questionDesc);
BeanUtils.copyProperties(questionVo, question);
question.setQuestionAnswerOptionIds(questionAnswerOptionIds.toString());
questionRepository.save(question);

// 2.更新所有的option
questionOptionRepository.saveAll(questionOptionList);

// 返回更新后的问题,方便前端局部刷新
return getQuestionVo(question);
}

@Override
Expand Down
33 changes: 23 additions & 10 deletions frontend/exam/src/views/list/QuestionTableList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ export default {
field: 'name',
width: 200,
formatter: (value, row) => {
return '<div class="question-name">' + value + '</div>'
return '<div class="question-name" style="height: 100%;width: 100%">' + value + '</div>'
},
events: {
'dblclick .question-name': function (e, value, row, index) {
Expand Down Expand Up @@ -80,13 +80,9 @@ export default {
return '<div class="question-score">' + value + '</div>'
},
events: {
'dblclick .question-score': function (e, value, row, index) {
'click .question-score': function (e, value, row, index) {
const $element = $(e.target) // 把元素转换成html对象
$element.html('<input type="text" value="' + value + '"><button class="question-score-save-btn">保存</button>')
},
'click .question-score-save-btn': function (e, value, row, index) {
const $element = $(e.target)
console.log($element.parent())
$element.html('<input type="text" value="' + value + '">')
}
}
},
Expand Down Expand Up @@ -139,11 +135,11 @@ export default {
toolbar: '#toolbar',
// 下面两行是支持高级搜索,即按照字段搜索
advancedSearch: true,
idTable: 'advancedTable'
idTable: 'advancedTable',
// 下面是常用的事件,更多的点击事件可以参考:http://www.itxst.com/bootstrap-table-events/tutorial.html
// onClickRow: that.clickRow,
// onClickCell: that.clickCell, // 单元格单击事件
// onDblClickCell: that.dblClickCell // 单元格双击事件
// onClickCell: that.clickCell // 单元格单击事件
onDblClickCell: that.dblClickCell // 单元格双击事件
}
}
},
Expand All @@ -162,6 +158,23 @@ export default {
handleOk () {
this.loadAll() // 加载所有问题的数据
},
dblClickCell (field, value, row, $element) {
if (field === 'score') { // 更新分数
row.score = $element.children('.question-score').children('input')[0].value
const that = this
questionUpdate(row).then(res => {
// 成功就跳转到结果页面
console.log(res)
if (res.code === 0) {
$element.html('<div class="question-desc">' + row.score + '</div>')
that.$notification.success({
message: '更新成功',
description: '更新成功'
})
}
})
}
},
loadAll () {
const that = this
getQuestionAll()
Expand Down

0 comments on commit 8e62dd9

Please sign in to comment.