|
|
@@ -10,6 +10,7 @@
|
|
|
<el-option :value="2" label="多选题"/>
|
|
|
<el-option :value="3" label="填空题"/>
|
|
|
<el-option :value="4" label="简答题"/>
|
|
|
+ <el-option :value="5" label="代码题"/>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item v-if="form.type === 1 || form.type === 2" label="选项">
|
|
|
@@ -32,7 +33,7 @@
|
|
|
{{ option.label }}
|
|
|
</el-checkbox>
|
|
|
</el-checkbox-group>
|
|
|
- <el-input v-if="!(form.type === 1 || form.type === 2)" placeholder="请输入题目答案"></el-input>
|
|
|
+ <el-input v-if="!(form.type === 1 || form.type === 2)" v-model="form.answer" placeholder="请输入题目答案"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="解析">
|
|
|
<el-input v-model="form.analysis" placeholder="请输入题目解析"></el-input>
|
|
|
@@ -62,10 +63,10 @@
|
|
|
></el-cascader>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="标签">
|
|
|
- <el-input v-model="form.tag" placeholder="请输入题目标签"></el-input>
|
|
|
+ <el-input v-model="form.tags" placeholder="请输入题目标签"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="关键词">
|
|
|
- <el-input v-model="form.keyword" placeholder="请输入题目关键词"></el-input>
|
|
|
+ <el-input v-model="form.keyPoints" placeholder="请输入题目关键词"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<el-button type="primary" @click="handleAckButtonClick">确定</el-button>
|
|
|
@@ -74,7 +75,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { knowledgeData } from "@/utils/knowledgeData";
|
|
|
+import {knowledgeData} from "@/utils/knowledgeData";
|
|
|
|
|
|
export default {
|
|
|
name: "SingleQuestionCreator",
|
|
|
@@ -103,12 +104,15 @@ export default {
|
|
|
analysis: "",
|
|
|
difficulty: null,
|
|
|
knowledgeId: [],
|
|
|
- tag: "",
|
|
|
- keyword: "",
|
|
|
+ tags: "",
|
|
|
+ keyPoints: "",
|
|
|
},
|
|
|
knowledgeIdOptions: knowledgeData,
|
|
|
}
|
|
|
},
|
|
|
+ created() {
|
|
|
+ this.formatKnowledgeData(this.knowledgeIdOptions[0]);
|
|
|
+ },
|
|
|
methods: {
|
|
|
addQuestionOption() {
|
|
|
let labels = ["A", "B", "C", "D", "E", "F", "G"];
|
|
|
@@ -122,10 +126,12 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- handleAckButtonClick() {
|
|
|
- this.checkFormCompletion();
|
|
|
- let questionVO = this.formatQuestionVO2backend();
|
|
|
- this.$api.createQuestion(questionVO);
|
|
|
+ async handleAckButtonClick() {
|
|
|
+ if (this.checkFormCompletion()) {
|
|
|
+ let questionVO = this.formatQuestionVO2backend();
|
|
|
+ let res = await this.$api.createQuestion(questionVO);
|
|
|
+ console.log(res);
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
checkFormCompletion() {
|
|
|
@@ -170,6 +176,9 @@ export default {
|
|
|
return false;
|
|
|
}
|
|
|
break;
|
|
|
+ case 5:
|
|
|
+ this.$message.error("暂不支持新建代码题!");
|
|
|
+ return false;
|
|
|
}
|
|
|
if (this.form.analysis === "") {
|
|
|
this.$message.error("未输入题目解析!");
|
|
|
@@ -183,15 +192,15 @@ export default {
|
|
|
this.$message.error("未选择题目知识点!");
|
|
|
return false;
|
|
|
}
|
|
|
- if (this.form.tag === "") {
|
|
|
+ if (this.form.tags === "") {
|
|
|
this.$message.error("未输入题目标签!");
|
|
|
return false;
|
|
|
}
|
|
|
- if (this.form.tag === "") {
|
|
|
+ if (this.form.tags === "") {
|
|
|
this.$message.error("未输入题目标签!");
|
|
|
return false;
|
|
|
}
|
|
|
- if (this.form.keyword === "") {
|
|
|
+ if (this.form.keyPoints === "") {
|
|
|
this.$message.error("未输入题目关键词!");
|
|
|
return false;
|
|
|
}
|
|
|
@@ -246,17 +255,74 @@ export default {
|
|
|
analysis: "",
|
|
|
difficulty: null,
|
|
|
knowledgeId: [],
|
|
|
- tag: "",
|
|
|
- keyword: "",
|
|
|
+ tags: "",
|
|
|
+ keyPoints: "",
|
|
|
};
|
|
|
},
|
|
|
|
|
|
formatQuestionVO2backend() {
|
|
|
const savedUserId = this.$store.state.user.id;
|
|
|
- const createTime = this.$moment().format();
|
|
|
- const lastModifiedTime = this.$moment().format();
|
|
|
+ const checkedUserId = this.$store.state.user.id;
|
|
|
+ const createTime = new Date();
|
|
|
+ const lastModifiedTime = new Date();
|
|
|
const state = "CHECKING";
|
|
|
- return { ...this.form, savedUserId, createTime, lastModifiedTime, state };
|
|
|
+
|
|
|
+ let type;
|
|
|
+ switch (this.form.type) {
|
|
|
+ case 1:
|
|
|
+ type = "choice";
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ type = "multiple_choice";
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ type = "blank";
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ type = "short_answer";
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ type = "code";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ let options = {};
|
|
|
+ for (let option of this.form.options) {
|
|
|
+ options[option.label] = option.content;
|
|
|
+ }
|
|
|
+ let multi_answer;
|
|
|
+ if (this.form.type === 2) {
|
|
|
+ multi_answer = this.form.multi_answer.sort().join("");
|
|
|
+ }
|
|
|
+ let knowledgeId = [];
|
|
|
+ for (let knowledgeIdElement of this.form.knowledgeId) {
|
|
|
+ knowledgeId.push(knowledgeIdElement[knowledgeIdElement.length - 1]);
|
|
|
+ }
|
|
|
+ let tags = [this.form.tags];
|
|
|
+
|
|
|
+ return {
|
|
|
+ stem: this.form.stem,
|
|
|
+ type,
|
|
|
+ options,
|
|
|
+ answer: (this.form.type !== 2) ? this.form.answer : multi_answer,
|
|
|
+ analysis: this.form.analysis,
|
|
|
+ difficulty: this.form.difficulty,
|
|
|
+ knowledgeId,
|
|
|
+ tags,
|
|
|
+ keyPoints: this.form.keyPoints,
|
|
|
+ savedUserId,
|
|
|
+ createTime,
|
|
|
+ lastModifiedTime,
|
|
|
+ state
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ formatKnowledgeData(knowledgeData) {
|
|
|
+ knowledgeData["value"] = knowledgeData.label;
|
|
|
+ if (knowledgeData.children !== undefined) {
|
|
|
+ for (let child of knowledgeData.children) {
|
|
|
+ this.formatKnowledgeData(child);
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
},
|
|
|
computed: {},
|