Quellcode durchsuchen

update ExamQuestionAdd.vue

reghao vor 1 Jahr
Ursprung
Commit
5eefbc96fb
2 geänderte Dateien mit 32 neuen und 307 gelöschten Zeilen
  1. 1 233
      src/views/exam/ExamQuestion.vue
  2. 31 74
      src/views/exam/ExamQuestionAdd.vue

+ 1 - 233
src/views/exam/ExamQuestion.vue

@@ -274,237 +274,6 @@
         <el-button type="primary" @click="updateQuestion">确 定</el-button>
       </div>
     </el-dialog>
-    <el-dialog title="添加试题" :visible.sync="addQuTableVisible" width="50%" center @close="resetAddQuForm">
-      <el-card>
-        <el-form ref="addQuForm" :model="addQuForm" :rules="addQuFormRules">
-          <el-form-item label="所属科目" label-width="120px" prop="subjectId">
-            <el-select v-model="addQuForm.subjectId" placeholder="请选择">
-              <el-option
-                v-for="item in allSubject"
-                :key="item.key"
-                :label="item.value"
-                :value="item.key"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="试题类型" label-width="120px" prop="questionType">
-            <el-select v-model="addQuForm.questionType" placeholder="请选择" @change="addQuForm.answer = []">
-              <el-option
-                v-for="item in questionType"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="试题难度" label-width="120px" prop="questionLevel">
-            <el-select v-model="addQuForm.questionLevel" placeholder="请选择">
-              <el-option :value="parseInt(1)" label="简单" />
-              <el-option :value="parseInt(2)" label="中等" />
-              <el-option :value="parseInt(3)" label="困难" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="试题内容" label-width="120px" prop="questionContent">
-            <el-input
-              v-model="addQuForm.questionContent"
-              style="margin-left: 5px"
-              type="textarea"
-              :rows="5"
-            />
-          </el-form-item>
-          <el-form-item label="试题图片" label-width="120px" prop="image">
-            <el-upload
-              :action="uploadImageUrl + '/teacher/uploadQuestionImage'"
-              :on-preview="uploadPreview"
-              :on-remove="handleRemove"
-              :before-upload="beforeAvatarUpload"
-              list-type="picture"
-              :on-success="uploadImgSuccess"
-              name="file"
-            >
-              <el-button size="small" type="primary">点击上传</el-button>
-              <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过10M</div>
-            </el-upload>
-          </el-form-item>
-          <el-form-item label="试题解析" label-width="120px" prop="analysis">
-            <el-input
-              v-model="addQuForm.analysis"
-              style="margin-left: 5px"
-              type="textarea"
-              :rows="5"
-            />
-          </el-form-item>
-          <div v-if="addQuForm.questionType <= 7">
-            <el-button
-              type="primary"
-              plain
-              size="small"
-              icon="el-icon-plus"
-              style="margin-left: 40px"
-              @click="addAnswer"
-            >
-              添加问题选项
-            </el-button>
-            <!--存放答案表单的信息-->
-            <el-form-item prop="options">
-              <el-table :data="addQuForm.options" border style="width: 96%;margin-left: 40px;margin-top: 10px">
-                <el-table-column label="是否答案" width="80" align="center">
-                  <template slot-scope="scope">
-                    <el-checkbox v-model="scope.row.correct" @change="checked=>checkAnswer(checked,scope.row.id)">答案
-                    </el-checkbox>
-                  </template>
-                </el-table-column>
-                <el-table-column label="选项图片">
-                  <template slot-scope="scope">
-                    <el-upload
-                      :limit="1"
-                      :action="uploadImageUrl + '/teacher/uploadQuestionImage'"
-                      :on-preview="uploadPreview"
-                      :on-remove="handleAnswerRemove"
-                      :before-upload="beforeAvatarUpload"
-                      list-type="picture"
-                      :on-success="(res) => { return uploadAnswerImgSuccess(res,scope.row.id)}"
-                      name="file"
-                    >
-                      <el-button size="small" type="primary">点击上传</el-button>
-                    </el-upload>
-                  </template>
-                </el-table-column>
-                <el-table-column label="选项内容">
-                  <template slot-scope="scope">
-                    <el-input
-                      v-model="scope.row.content"
-                      style="margin-left: 5px"
-                      type="textarea"
-                      :rows="2"
-                    />
-                  </template>
-                </el-table-column>
-                <el-table-column label="选项解析">
-                  <template slot-scope="scope">
-                    <el-input
-                      v-model="scope.row.analysis"
-                      style="margin-left: 5px"
-                      type="textarea"
-                      :rows="2"
-                    />
-                  </template>
-                </el-table-column>
-                <el-table-column label="操作" width="80" align="center">
-                  <template slot-scope="scope">
-                    <el-button type="danger" icon="el-icon-delete" circle @click="delAnswer(scope.row.id)" />
-                  </template>
-                </el-table-column>
-              </el-table>
-            </el-form-item>
-          </div>
-          <div v-else>
-            <el-card>
-              <el-form ref="addQuForm" :model="questionForm" :rules="addQuFormRules">
-                <el-form-item label="试题内容" label-width="120px" prop="questionContent">
-                  <el-input
-                    v-model="questionForm.questionContent"
-                    style="margin-left: 5px"
-                    type="textarea"
-                    :rows="5"
-                  />
-                </el-form-item>
-                <el-form-item label="试题图片" label-width="120px" prop="image">
-                  <el-upload
-                    :action="uploadImageUrl + '/teacher/uploadQuestionImage'"
-                    :on-preview="uploadPreview"
-                    :on-remove="handleRemove"
-                    :before-upload="beforeAvatarUpload"
-                    list-type="picture"
-                    :on-success="uploadImgSuccess"
-                    name="file"
-                  >
-                    <el-button size="small" type="primary">点击上传</el-button>
-                    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过10M</div>
-                  </el-upload>
-                </el-form-item>
-                <el-form-item label="试题解析" label-width="120px" prop="analysis">
-                  <el-input
-                    v-model="questionForm.analysis"
-                    style="margin-left: 5px"
-                    type="textarea"
-                    :rows="5"
-                  />
-                </el-form-item>
-                <div>
-                  <el-button
-                    type="primary"
-                    plain
-                    size="small"
-                    icon="el-icon-plus"
-                    style="margin-left: 40px"
-                    @click="addAnswer"
-                  >
-                    添加问题选项
-                  </el-button>
-                  <!--存放答案表单的信息-->
-                  <el-form-item prop="options">
-                    <el-table :data="questionForm.options" border style="width: 96%;margin-left: 40px;margin-top: 10px">
-                      <el-table-column label="是否答案" width="80" align="center">
-                        <template slot-scope="scope">
-                          <el-checkbox v-model="scope.row.correct" @change="checked=>checkAnswer(checked,scope.row.id)">答案
-                          </el-checkbox>
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="选项图片">
-                        <template slot-scope="scope">
-                          <el-upload
-                            :limit="1"
-                            :action="uploadImageUrl + '/teacher/uploadQuestionImage'"
-                            :on-preview="uploadPreview"
-                            :on-remove="handleAnswerRemove"
-                            :before-upload="beforeAvatarUpload"
-                            list-type="picture"
-                            :on-success="(res) => { return uploadAnswerImgSuccess(res,scope.row.id)}"
-                            name="file"
-                          >
-                            <el-button size="small" type="primary">点击上传</el-button>
-                          </el-upload>
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="选项内容">
-                        <template slot-scope="scope">
-                          <el-input
-                            v-model="scope.row.content"
-                            style="margin-left: 5px"
-                            type="textarea"
-                            :rows="2"
-                          />
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="选项解析">
-                        <template slot-scope="scope">
-                          <el-input
-                            v-model="scope.row.analysis"
-                            style="margin-left: 5px"
-                            type="textarea"
-                            :rows="2"
-                          />
-                        </template>
-                      </el-table-column>
-                      <el-table-column label="操作" width="80" align="center">
-                        <template slot-scope="scope">
-                          <el-button type="danger" icon="el-icon-delete" circle @click="delAnswer(scope.row.id)" />
-                        </template>
-                      </el-table-column>
-                    </el-table>
-                  </el-form-item>
-                </div>
-              </el-form>
-            </el-card>
-          </div>
-        </el-form>
-      </el-card>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="addQuTableVisible = false">取 消</el-button>
-        <el-button type="primary" @click="addQuestion">确 定</el-button>
-      </div>
-    </el-dialog>
     <el-dialog title="试题详情" :visible.sync="questionDetailDialog" width="50%" center>
       <el-card>
         <el-form :model="questionDetail">
@@ -517,10 +286,10 @@
           <el-form-item label="试题难度" label-width="120px">
             <span> {{ questionDetail.level }} </span>
           </el-form-item>
+          <el-divider />
           <el-form-item label="试题内容" label-width="120px">
             <span> {{ questionDetail.content }} </span>
           </el-form-item>
-          <el-form-item label="试题图片" label-width="120px" />
           <el-form-item label="试题解析" label-width="120px">
             <span> {{ questionDetail.analysis }} </span>
           </el-form-item>
@@ -560,7 +329,6 @@
                 <el-form-item label="试题内容" label-width="120px">
                   <span> {{ item.content }} </span>
                 </el-form-item>
-                <el-form-item label="试题图片" label-width="120px" />
                 <el-form-item label="试题解析" label-width="120px">
                   <span> {{ item.analysis }} </span>
                 </el-form-item>

+ 31 - 74
src/views/exam/ExamQuestionAdd.vue

@@ -12,7 +12,7 @@
       <el-card class="box-card">
         <div slot="header" class="clearfix">
           <span>添加试题</span>
-          <el-button style="float: right; padding: 10px" type="text" @click="addQuestion">提交数据</el-button>
+          <el-button style="float: right; padding: 10px" type="text" @click="submitQuestion">提交数据</el-button>
           <el-button style="float: right; padding: 10px" type="text" @click="clear">清空数据</el-button>
         </div>
         <div class="text item">
@@ -537,90 +537,47 @@ export default {
         })
       }
     },
-    // 新增试题
-    addQuestion() {
+    // 提交试题
+    submitQuestion() {
       this.$refs['addQuForm'].validate((valid) => {
-        if (valid && this.addQuForm.options.some(item => item.correct) && this.addQuForm.questionType !== 4) {
-          // 单选或者多选或者判断
-          postExamQuestion(this.addQuForm).then((resp) => {
-            if (resp.code === 0) {
-              this.resetAddQuForm()
-              this.addQuTableVisible = false
-              this.$notify({
-                title: 'Tips',
-                message: '试题已添加',
-                type: 'success',
-                duration: 2000
-              })
-            } else {
-              this.$notify({
-                title: 'Tips',
-                message: resp.msg,
-                type: 'success',
-                duration: 2000
-              })
-            }
-          })
-        } else if (valid && !this.addQuForm.options.some(item => item.correct) && this.addQuForm.questionType < 5) {
+        if (!valid) {
+          this.$message.error('请填写必要信息')
+          return false
+        }
+
+        if (!this.addQuForm.options.some(item => item.correct)) {
           // 无答案
-          this.$message.error('必须有一个答案')
+          this.$message.error('必须提供答案')
           return false
-        } else if (valid && this.addQuForm.questionType >= 5 && this.addQuForm.questionType <= 7) {
-          // 简答题 无标准答案直接发请求
-          // 当是简答题的时候需要清除answer
-          this.addQuForm.options = []
-          postExamQuestion(this.addQuForm).then((resp) => {
-            if (resp.code === 0) {
-              this.resetAddQuForm()
-              this.addQuTableVisible = false
-              this.$notify({
-                title: 'Tips',
-                message: '试题已添加',
-                type: 'success',
-                duration: 2000
-              })
-            } else {
-              this.$notify({
-                title: 'Tips',
-                message: resp.msg,
-                type: 'success',
-                duration: 2000
-              })
-            }
+        }
+
+        this.submitExamQuestion()
+      })
+    },
+    submitExamQuestion() {
+      postExamQuestion(this.addQuForm).then((resp) => {
+        if (resp.code === 0) {
+          this.resetAddQuForm()
+          this.$notify({
+            title: 'Tips',
+            message: '试题已添加',
+            type: 'success',
+            duration: 2000
           })
-        } else if (this.addQuForm.questionType > 7) {
-          // 組题
-          // 当是简答题的时候需要清除answer
-          this.addQuForm.options = []
-          postExamQuestion(this.addQuForm).then((resp) => {
-            if (resp.code === 0) {
-              this.resetAddQuForm()
-              this.addQuTableVisible = false
-              this.$notify({
-                title: 'Tips',
-                message: '试题已添加',
-                type: 'success',
-                duration: 2000
-              })
-            } else {
-              this.$notify({
-                title: 'Tips',
-                message: resp.msg,
-                type: 'success',
-                duration: 2000
-              })
-            }
+        } else {
+          this.$notify({
+            title: 'Tips',
+            message: resp.msg,
+            type: 'success',
+            duration: 2000
           })
-        } else if (!valid) {
-          this.$message.error('请填写必要信息')
-          return false
         }
       })
     },
     addGroupQuestion() {
       this.$refs['questionForm'].validate((valid) => {
         console.log(this.questionForm.options.some(item => item.correct))
-        if (valid && !this.questionForm.options.some(item => item.correct)) {
+        if (!this.questionForm.options.some(item => item.correct)) {
           // 无答案
           this.$message.error('必须有一个答案')
           return false