|
@@ -1,244 +1,253 @@
|
|
|
<!-- 编辑填空,问答,判断题 -->
|
|
|
-<style></style>
|
|
|
<template>
|
|
|
- <section class="content" v-loading="fullscreenLoading">
|
|
|
- <div class="box box-info">
|
|
|
- <div class="box-header with-border">
|
|
|
- <h3 class="box-title">
|
|
|
- <span v-if="!quesModel.id">试题新增</span>
|
|
|
- <span v-if="quesModel.id">试题修改</span>
|
|
|
- </h3>
|
|
|
- </div>
|
|
|
- <div class="box-body">
|
|
|
- <el-form
|
|
|
- :model="quesModel"
|
|
|
- ref="quesModel"
|
|
|
- :rules="rules"
|
|
|
- label-position="right"
|
|
|
- label-width="80px"
|
|
|
- >
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :xs="10" :sm="10" :md="10" :lg="10">
|
|
|
- <el-form-item label="题型">
|
|
|
- <el-select
|
|
|
- :disabled="true"
|
|
|
- v-model="quesModel.questionType"
|
|
|
- placeholder="请输入题型"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in questionTypes"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- :key="item.value"
|
|
|
+ <div id="editOtherApp">
|
|
|
+ <section class="content" v-loading="fullscreenLoading">
|
|
|
+ <div class="box box-info">
|
|
|
+ <div class="box-header with-border">
|
|
|
+ <h3 class="box-title">
|
|
|
+ <span v-if="!quesModel.id">试题新增</span>
|
|
|
+ <span v-if="quesModel.id">试题修改</span>
|
|
|
+ </h3>
|
|
|
+ </div>
|
|
|
+ <div class="box-body">
|
|
|
+ <el-form
|
|
|
+ :model="quesModel"
|
|
|
+ ref="quesModel"
|
|
|
+ :rules="rules"
|
|
|
+ label-position="right"
|
|
|
+ label-width="80px"
|
|
|
+ >
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :xs="10" :sm="10" :md="10" :lg="10">
|
|
|
+ <el-form-item label="题型">
|
|
|
+ <el-select
|
|
|
+ :disabled="true"
|
|
|
+ v-model="quesModel.questionType"
|
|
|
+ placeholder="请输入题型"
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <!-- created by weiwenhai -->
|
|
|
- <el-form-item label="难度">
|
|
|
- <el-select
|
|
|
- v-model="quesModel.difficultyDegree"
|
|
|
- placeholder="请输入难度"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in difficultyDegreeList"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- :key="item.value"
|
|
|
- >
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="公开度">
|
|
|
- <el-select v-model="quesModel.publicity" placeholder="请输入公开度">
|
|
|
- <el-option
|
|
|
- v-for="item in publicityList"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- :key="item.value"
|
|
|
+ <el-option
|
|
|
+ v-for="item in questionTypes"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ :key="item.value"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <!-- created by weiwenhai -->
|
|
|
+ <el-form-item label="难度">
|
|
|
+ <el-select
|
|
|
+ v-model="quesModel.difficultyDegree"
|
|
|
+ placeholder="请输入难度"
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="属性列表">
|
|
|
- <el-tooltip
|
|
|
- placement="top"
|
|
|
- v-for="(content, index) in quesModel.quesProperties"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <div slot="content">
|
|
|
- <span v-if="content.firstProperty != null"
|
|
|
- >一级属性:{{ content.firstProperty.name }}</span
|
|
|
- ><br />
|
|
|
- <span v-if="content.secondProperty != null"
|
|
|
- >二级属性:{{ content.secondProperty.name }}</span
|
|
|
+ <el-option
|
|
|
+ v-for="item in difficultyDegreeList"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ :key="item.value"
|
|
|
>
|
|
|
- </div>
|
|
|
- <el-tag
|
|
|
- style="margin-right:5px;"
|
|
|
- :key="content.id"
|
|
|
- closable
|
|
|
- type="success"
|
|
|
- @close="handleClose(content);"
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="公开度">
|
|
|
+ <el-select
|
|
|
+ v-model="quesModel.publicity"
|
|
|
+ placeholder="请输入公开度"
|
|
|
>
|
|
|
- {{ content.coursePropertyName }}
|
|
|
- </el-tag>
|
|
|
- </el-tooltip>
|
|
|
- </el-form-item>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :xs="6" :sm="6" :md="6" :lg="6">
|
|
|
- <el-form-item label="属性名">
|
|
|
- <el-select
|
|
|
- v-model="coursePropertyName"
|
|
|
- placeholder="属性名"
|
|
|
- @change="searchFirst"
|
|
|
- class="property_with"
|
|
|
+ <el-option
|
|
|
+ v-for="item in publicityList"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ :key="item.value"
|
|
|
>
|
|
|
- <el-option
|
|
|
- v-for="item in coursePropertyList"
|
|
|
- :label="item.name"
|
|
|
- :value="item.name"
|
|
|
- :key="item.name"
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="属性列表">
|
|
|
+ <el-tooltip
|
|
|
+ placement="top"
|
|
|
+ v-for="(content, index) in quesModel.quesProperties"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <div slot="content">
|
|
|
+ <span v-if="content.firstProperty != null"
|
|
|
+ >一级属性:{{ content.firstProperty.name }}</span
|
|
|
+ ><br />
|
|
|
+ <span v-if="content.secondProperty != null"
|
|
|
+ >二级属性:{{ content.secondProperty.name }}</span
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :xs="6" :sm="6" :md="6" :lg="6">
|
|
|
- <el-form-item label="一级">
|
|
|
- <el-select
|
|
|
- v-model="firstPropertyId"
|
|
|
- placeholder="一级"
|
|
|
- @change="searchSecond"
|
|
|
- class="property_with"
|
|
|
+ </div>
|
|
|
+ <el-tag
|
|
|
+ style="margin-right:5px;"
|
|
|
+ :key="content.id"
|
|
|
+ closable
|
|
|
+ type="success"
|
|
|
+ @close="handleClose(content);"
|
|
|
>
|
|
|
- <el-option
|
|
|
- v-for="item in firstPropertyList"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- :key="item.id"
|
|
|
+ {{ content.coursePropertyName }}
|
|
|
+ </el-tag>
|
|
|
+ </el-tooltip>
|
|
|
+ </el-form-item>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :xs="6" :sm="6" :md="6" :lg="6">
|
|
|
+ <el-form-item label="属性名">
|
|
|
+ <el-select
|
|
|
+ v-model="coursePropertyName"
|
|
|
+ placeholder="属性名"
|
|
|
+ @change="searchFirst"
|
|
|
+ class="property_with"
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :xs="6" :sm="6" :md="6" :lg="6">
|
|
|
- <el-form-item label="二级">
|
|
|
- <el-select
|
|
|
- v-model="secondPropertyId"
|
|
|
- placeholder="二级"
|
|
|
- class="property_with"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in secondPropertyList"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- :key="item.id"
|
|
|
+ <el-option
|
|
|
+ v-for="item in coursePropertyList"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.name"
|
|
|
+ :key="item.name"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="6" :sm="6" :md="6" :lg="6">
|
|
|
+ <el-form-item label="一级">
|
|
|
+ <el-select
|
|
|
+ v-model="firstPropertyId"
|
|
|
+ placeholder="一级"
|
|
|
+ @change="searchSecond"
|
|
|
+ class="property_with"
|
|
|
>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :xs="3" :sm="3" :md="3" :lg="3">
|
|
|
- <el-form-item>
|
|
|
- <el-button
|
|
|
- type="info"
|
|
|
- @click="insertProperty"
|
|
|
- style="margin-left:-30px;"
|
|
|
- >新增属性</el-button
|
|
|
- >
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <!-- end -->
|
|
|
- <el-row :gutter="10">
|
|
|
- <el-col :xs="30" :sm="30" :md="30" :lg="30">
|
|
|
- <el-form-item label="题干" prop="quesBody">
|
|
|
- <ckeditor
|
|
|
- :editor="editor"
|
|
|
- v-model="quesModel.quesBody"
|
|
|
- :config="editorConfig"
|
|
|
- ></ckeditor>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row
|
|
|
- :gutter="10"
|
|
|
- v-for="quesOption in quesModel.quesOptions"
|
|
|
- :key="quesOption"
|
|
|
- >
|
|
|
- <el-col :xs="30" :sm="30" :md="30" :lg="30">
|
|
|
- <el-form-item :label="quesOption.number">
|
|
|
- <ckeditor
|
|
|
- :editor="editor"
|
|
|
- v-model="quesOption.quesBody"
|
|
|
- :config="editorConfig"
|
|
|
- ></ckeditor>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <!-- 非套题 -->
|
|
|
- <div
|
|
|
- v-if="
|
|
|
- quesModel.questionType !== 'NESTED_ANSWER_QUESTION' &&
|
|
|
- quesModel.questionType !== 'BOOL_ANSWER_QUESTION'
|
|
|
- "
|
|
|
- >
|
|
|
- <el-form-item label="答案" prop="quesAnswer">
|
|
|
- <ckeditor
|
|
|
- :editor="editor"
|
|
|
- v-model="quesModel.quesAnswer"
|
|
|
- :config="editorConfig"
|
|
|
- ></ckeditor>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div v-if="quesModel.questionType == 'BOOL_ANSWER_QUESTION'">
|
|
|
- <el-row>
|
|
|
- <el-col>
|
|
|
- <el-form-item label="答案" prop="quesAnswer">
|
|
|
+ <el-option
|
|
|
+ v-for="item in firstPropertyList"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ :key="item.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :xs="6" :sm="6" :md="6" :lg="6">
|
|
|
+ <el-form-item label="二级">
|
|
|
<el-select
|
|
|
- v-model="quesModel.quesAnswer"
|
|
|
- placeholder="请选择"
|
|
|
+ v-model="secondPropertyId"
|
|
|
+ placeholder="二级"
|
|
|
+ class="property_with"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="op in options"
|
|
|
- :label="op"
|
|
|
- :value="op"
|
|
|
- :key="op"
|
|
|
+ v-for="item in secondPropertyList"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ :key="item.id"
|
|
|
>
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :xs="3" :sm="3" :md="3" :lg="3">
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="info"
|
|
|
+ @click="insertProperty"
|
|
|
+ style="margin-left:-30px;"
|
|
|
+ >新增属性</el-button
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
- </div>
|
|
|
- <div class="paper-top">
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="saveQues('quesModel');"
|
|
|
- >保存</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- icon="caret-left"
|
|
|
- @click="backToQuesList();"
|
|
|
- >返回列表</el-button
|
|
|
- >
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </el-form>
|
|
|
+ <!-- end -->
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :xs="30" :sm="30" :md="30" :lg="30">
|
|
|
+ <el-form-item label="题干" prop="quesBody">
|
|
|
+ <ckeditor
|
|
|
+ :editor="editor"
|
|
|
+ v-model="quesModel.quesBody"
|
|
|
+ :config="editorConfig"
|
|
|
+ ></ckeditor>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row
|
|
|
+ :gutter="10"
|
|
|
+ v-for="quesOption in quesModel.quesOptions"
|
|
|
+ :key="quesOption"
|
|
|
+ >
|
|
|
+ <el-col :xs="30" :sm="30" :md="30" :lg="30">
|
|
|
+ <el-form-item :label="quesOption.number">
|
|
|
+ <ckeditor
|
|
|
+ :editor="editor"
|
|
|
+ v-model="quesOption.quesBody"
|
|
|
+ :config="editorConfig"
|
|
|
+ ></ckeditor>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <!-- 非套题 -->
|
|
|
+ <div
|
|
|
+ v-if="
|
|
|
+ quesModel.questionType !== 'NESTED_ANSWER_QUESTION' &&
|
|
|
+ quesModel.questionType !== 'BOOL_ANSWER_QUESTION'
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-form-item label="答案" prop="quesAnswer">
|
|
|
+ <ckeditor
|
|
|
+ :editor="editor"
|
|
|
+ v-model="quesModel.quesAnswer"
|
|
|
+ :config="editorConfig"
|
|
|
+ ></ckeditor>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div v-if="quesModel.questionType == 'BOOL_ANSWER_QUESTION'">
|
|
|
+ <el-row>
|
|
|
+ <el-col>
|
|
|
+ <el-form-item label="答案" prop="quesAnswer">
|
|
|
+ <el-select
|
|
|
+ v-model="quesModel.quesAnswer"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="op in options"
|
|
|
+ :label="op"
|
|
|
+ :value="op"
|
|
|
+ :key="op"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="paper-top">
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="saveQues('quesModel');"
|
|
|
+ >保存</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="caret-left"
|
|
|
+ @click="backToQuesList();"
|
|
|
+ >返回列表</el-button
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </section>
|
|
|
+ </section>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<script>
|
|
|
import { CORE_API } from "@/constants/constants";
|
|
|
import { QUESTION_TYPES } from "../constants/constants";
|
|
|
+import CKEditor from "@ckeditor/ckeditor5-vue";
|
|
|
import ClassicEditor from "@ckeditor/ckeditor5-build-inline";
|
|
|
export default {
|
|
|
+ name: "editOtherApp",
|
|
|
+ components: {
|
|
|
+ ckeditor: CKEditor.component
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
editor: ClassicEditor,
|