|
@@ -1,37 +1,50 @@
|
|
<template>
|
|
<template>
|
|
<div class="select-question">
|
|
<div class="select-question">
|
|
- <div v-if="showQuesBody" class="ep-question-title">
|
|
|
|
- <span class="ep-question-title-number">{{ question.number }}.</span>
|
|
|
|
- <rich-text :text-json="question.body"></rich-text>
|
|
|
|
- </div>
|
|
|
|
- <div class="ep-question-body">
|
|
|
|
- <div
|
|
|
|
- v-for="(option, optionIndex) in options"
|
|
|
|
- :key="optionIndex"
|
|
|
|
- class="ep-question-option"
|
|
|
|
- >
|
|
|
|
- <div class="ep-question-option-check">
|
|
|
|
- <el-radio
|
|
|
|
- v-if="IS_SIMPLE"
|
|
|
|
- v-model="quesAnswer"
|
|
|
|
- :label="option.number"
|
|
|
|
- @change="answerChange"
|
|
|
|
- >
|
|
|
|
- {{ (option.number - 1) | optionOrderWordFilter }}.
|
|
|
|
- </el-radio>
|
|
|
|
- <el-checkbox
|
|
|
|
- v-else
|
|
|
|
- v-model="option.isCorrect"
|
|
|
|
- :label="option.number"
|
|
|
|
- @change="answerChange"
|
|
|
|
- >
|
|
|
|
|
|
+ <div
|
|
|
|
+ :class="['ep-question-content', { 'is-active': isActive }]"
|
|
|
|
+ @click="activeQuestion"
|
|
|
|
+ >
|
|
|
|
+ <div class="ep-question-title">
|
|
|
|
+ <span class="ep-question-title-number">{{ question.number }}.</span>
|
|
|
|
+ <rich-text :text-json="question.body"></rich-text>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="ep-question-body">
|
|
|
|
+ <div
|
|
|
|
+ v-for="(option, optionIndex) in options"
|
|
|
|
+ :key="optionIndex"
|
|
|
|
+ class="ep-question-option"
|
|
|
|
+ >
|
|
|
|
+ <div v-if="isActive" class="ep-question-option-check">
|
|
|
|
+ <el-radio
|
|
|
|
+ v-if="IS_SIMPLE"
|
|
|
|
+ v-model="quesAnswer"
|
|
|
|
+ :label="option.number"
|
|
|
|
+ @change="answerChange"
|
|
|
|
+ >
|
|
|
|
+ {{ (option.number - 1) | optionOrderWordFilter }}.
|
|
|
|
+ </el-radio>
|
|
|
|
+ <el-checkbox
|
|
|
|
+ v-else
|
|
|
|
+ v-model="option.isCorrect"
|
|
|
|
+ :label="option.number"
|
|
|
|
+ @change="answerChange"
|
|
|
|
+ >
|
|
|
|
+ {{ (option.number - 1) | optionOrderWordFilter }}.
|
|
|
|
+ </el-checkbox>
|
|
|
|
+ </div>
|
|
|
|
+ <div v-else class="ep-question-option-check">
|
|
{{ (option.number - 1) | optionOrderWordFilter }}.
|
|
{{ (option.number - 1) | optionOrderWordFilter }}.
|
|
- </el-checkbox>
|
|
|
|
|
|
+ </div>
|
|
|
|
+ <rich-text :text-json="option.body"></rich-text>
|
|
</div>
|
|
</div>
|
|
- <rich-text :text-json="option.body"></rich-text>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
+ <question-info-view
|
|
|
|
+ v-if="!isActive"
|
|
|
|
+ :question="getData()"
|
|
|
|
+ label-width="72px"
|
|
|
|
+ ></question-info-view>
|
|
</div>
|
|
</div>
|
|
- <div class="ep-question-props">
|
|
|
|
|
|
+ <div v-if="isActive" class="ep-question-props">
|
|
<el-form
|
|
<el-form
|
|
ref="modalFormComp"
|
|
ref="modalFormComp"
|
|
:model="modalForm"
|
|
:model="modalForm"
|
|
@@ -61,11 +74,13 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
import QuestionInfoEdit from "../QuestionInfoEdit.vue";
|
|
import QuestionInfoEdit from "../QuestionInfoEdit.vue";
|
|
|
|
+import QuestionInfoView from "./QuestionInfoView.vue";
|
|
import { getInitQuestionModel } from "./model";
|
|
import { getInitQuestionModel } from "./model";
|
|
|
|
+import { mapState, mapMutations } from "vuex";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
name: "SelectQuestion",
|
|
name: "SelectQuestion",
|
|
- components: { QuestionInfoEdit },
|
|
|
|
|
|
+ components: { QuestionInfoEdit, QuestionInfoView },
|
|
props: {
|
|
props: {
|
|
question: {
|
|
question: {
|
|
type: Object,
|
|
type: Object,
|
|
@@ -73,10 +88,6 @@ export default {
|
|
return {};
|
|
return {};
|
|
},
|
|
},
|
|
},
|
|
},
|
|
- showQuesBody: {
|
|
|
|
- type: Boolean,
|
|
|
|
- default: true,
|
|
|
|
- },
|
|
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
@@ -99,6 +110,10 @@ export default {
|
|
};
|
|
};
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
|
|
+ ...mapState("import-edit", ["curQuestion"]),
|
|
|
|
+ isActive() {
|
|
|
|
+ return this.curQuestion.id === this.question.id;
|
|
|
|
+ },
|
|
IS_SIMPLE() {
|
|
IS_SIMPLE() {
|
|
return this.question.questionType === "SINGLE_ANSWER_QUESTION";
|
|
return this.question.questionType === "SINGLE_ANSWER_QUESTION";
|
|
},
|
|
},
|
|
@@ -114,6 +129,7 @@ export default {
|
|
this.initData();
|
|
this.initData();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ ...mapMutations("import-edit", ["setCurQuestion"]),
|
|
initData() {
|
|
initData() {
|
|
this.modalForm = this.$objAssign(getInitQuestionModel(), this.question);
|
|
this.modalForm = this.$objAssign(getInitQuestionModel(), this.question);
|
|
this.quesAnswer = this.IS_SIMPLE ? null : [];
|
|
this.quesAnswer = this.IS_SIMPLE ? null : [];
|
|
@@ -146,6 +162,9 @@ export default {
|
|
data.quesAnswer = JSON.stringify(this.modalForm.quesAnswer);
|
|
data.quesAnswer = JSON.stringify(this.modalForm.quesAnswer);
|
|
return data;
|
|
return data;
|
|
},
|
|
},
|
|
|
|
+ activeQuestion() {
|
|
|
|
+ this.setCurQuestion(this.question);
|
|
|
|
+ },
|
|
},
|
|
},
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|