zhangjie преди 2 години
родител
ревизия
32764d2710

+ 40 - 3
src/modules/paper/components/SelectQuestionDialog.vue

@@ -91,7 +91,7 @@
           </el-table-column>
           <el-table-column label="创建时间" width="170" prop="creationTime">
           </el-table-column>
-          <el-table-column label="操作" width="160" fixed="right">
+          <el-table-column label="操作" width="90" fixed="right">
             <div v-if="!scope.row.disabled" slot-scope="scope">
               <el-button
                 v-if="scope.row.selected"
@@ -133,7 +133,7 @@
           <span class="color-primary">({{ curSelectedQuestions.length }})</span>
         </span>
 
-        <el-table :data="curSelectedQuestions" border>
+        <el-table :data="curSelectedQuestions">
           <el-table-column width="60" type="index" label="编号">
           </el-table-column>
           <el-table-column label="题干" min-width="200">
@@ -160,7 +160,27 @@
           </el-table-column>
           <el-table-column label="创建时间" width="170" prop="creationTime">
           </el-table-column>
-          <el-table-column label="操作" width="160" fixed="right">
+          <!-- <el-table-column
+            v-if="IS_PAPER_MODE"
+            label="分值"
+            width="120"
+            prop="score"
+          >
+            <template slot-scope="scope">
+              <el-input-number
+                v-model="scope.row.score"
+                placeholder="分值"
+                :precision="1"
+                :min="0"
+                :max="999"
+                :step="0.1"
+                step-strictly
+                :controls="false"
+                style="width: 90px"
+              ></el-input-number>
+            </template>
+          </el-table-column> -->
+          <el-table-column label="操作" width="90" fixed="right">
             <div slot-scope="scope">
               <el-button
                 size="mini"
@@ -223,6 +243,10 @@ export default {
         return [];
       },
     },
+    selectMode: {
+      type: String,
+      default: "question",
+    },
   },
   data() {
     return {
@@ -245,6 +269,11 @@ export default {
       curQuestion: {},
     };
   },
+  computed: {
+    IS_PAPER_MODE() {
+      return this.selectMode === "paper";
+    },
+  },
   methods: {
     initData() {
       this.filter = Object.assign({}, this.filter, {
@@ -329,6 +358,14 @@ export default {
       );
     },
     confirm() {
+      // if (this.IS_PAPER_MODE) {
+      //   const unvalid = this.curSelectedQuestions.some((item) => !item.score);
+      //   if (unvalid) {
+      //     this.$message.error("请完成已选试题分值设置");
+      //     this.tabType = "2";
+      //     return;
+      //   }
+      // }
       this.$emit("confirm", deepCopy(this.curSelectedQuestions));
       this.cancel();
     },

+ 1 - 0
src/modules/paper/views/BuildPaper.vue

@@ -242,6 +242,7 @@ export default {
       if (!res) return;
 
       this.$message.success("组卷成功!");
+      this.toback();
     },
     async saveAutoBuildPaperStruct(structInfo) {
       await autoBuildPaperStructSaveApi({

+ 30 - 7
src/modules/paper/views/EditPaper.vue

@@ -276,7 +276,9 @@
                   <rich-text
                     :text-json="paperDetailUnit.question.quesBody"
                   ></rich-text>
-                  <span> ({{ paperDetailUnit.score }}分) </span>
+                  <span :class="{ 'color-danger': !paperDetailUnit.score }">
+                    ({{ paperDetailUnit.score }}分)
+                  </span>
                 </div>
                 <div class="edit-cont-body">
                   <div
@@ -551,6 +553,7 @@
       ref="SelectQuestionDialog"
       :course-id="paper.course.id"
       :disabled-question-ids="paperQuestionIds"
+      select-mode="paper"
       @confirm="questionSelected"
     ></select-question-dialog>
   </div>
@@ -568,7 +571,7 @@ import {
   paperQuestionDeleteApi,
   paperQuestionSaveApi,
   paperDetailAddQuestionApi,
-  // paperQuestionChangeApi,
+  paperQuestionChangeApi,
 } from "../api";
 import { QUESTION_API } from "@/constants/constants";
 
@@ -656,6 +659,10 @@ export default {
       });
       this.paper = res.data;
       this.showCheckDuplicate();
+
+      if (!this.checkPaperQuestionAllHasScore()) {
+        this.$notify.error("有小题未设置分值!");
+      }
     },
     // header-actions
     showCheckDuplicate() {
@@ -680,6 +687,11 @@ export default {
         },
       });
     },
+    checkPaperQuestionAllHasScore() {
+      return !this.paper.paperDetails.some((detail) => {
+        return detail.paperDetailUnits.some((qUnit) => !qUnit.question.score);
+      });
+    },
     // 保存试卷
     async toSavePaper() {
       const res = await paperSaveApi(this.paper).catch((error) => {
@@ -894,12 +906,23 @@ export default {
       });
     },
     // 更换试题
-    toChangeQues(row) {
-      // let question = row.question;
-      // if (!this.changeSelectQuestionMap[question.sourceDetailId])
-      //   this.changeSelectQuestionMap[question.sourceDetailId] = [];
+    async toChangeQues(row) {
+      let question = row.question;
+      if (!this.changeSelectQuestionMap[question.sourceDetailId])
+        this.changeSelectQuestionMap[question.sourceDetailId] = [];
 
-      console.log(row);
+      const res = await paperQuestionChangeApi(
+        row.id,
+        this.changeSelectQuestionMap[question.sourceDetailId].join()
+      ).catch(() => {});
+
+      if (!res) return;
+
+      if (!this.changeSelectQuestionMap[question.sourceDetailId].length) {
+        this.changeSelectQuestionMap[question.sourceDetailId].push(question.id);
+      }
+      this.changeSelectQuestionMap[question.sourceDetailId].push(res.data);
+      this.initPaper();
     },
     // 编辑小题
     toEditQues(row) {

+ 1 - 1
src/modules/question/components/edit/BooleanQuestion.vue

@@ -24,7 +24,7 @@
         </el-radio-group>
       </el-form-item>
       <el-form-item label="答案解析">
-        <v-editor v-model="modalForm.comment"></v-editor>
+        <v-editor v-model="modalForm.comment" :enable-audio="false"></v-editor>
       </el-form-item>
     </el-form>
     <question-info-edit

+ 1 - 1
src/modules/question/components/edit/FillBlankQuestion.vue

@@ -33,7 +33,7 @@
         </div>
       </el-form-item>
       <el-form-item label="答案解析">
-        <v-editor v-model="modalForm.comment"></v-editor>
+        <v-editor v-model="modalForm.comment" :enable-audio="false"></v-editor>
       </el-form-item>
     </el-form>
     <question-info-edit

+ 3 - 0
src/modules/question/components/edit/MatchQuestion.vue

@@ -23,6 +23,9 @@
           </el-radio-button>
         </el-radio-group>
       </el-form-item>
+      <el-form-item label="答案解析">
+        <v-editor v-model="modalForm.comment" :enable-audio="false"></v-editor>
+      </el-form-item>
     </el-form>
     <question-info-edit
       ref="QuestionInfoEdit"

+ 1 - 1
src/modules/question/components/edit/SelectQuestion.vue

@@ -94,7 +94,7 @@
         </el-checkbox-group> -->
       </el-form-item>
       <el-form-item label="答案解析">
-        <v-editor v-model="modalForm.comment"></v-editor>
+        <v-editor v-model="modalForm.comment" :enable-audio="false"></v-editor>
       </el-form-item>
     </el-form>
     <question-info-edit

+ 1 - 1
src/modules/question/components/edit/TextAnswerQuestion.vue

@@ -20,7 +20,7 @@
         ></v-editor>
       </el-form-item>
       <el-form-item label="答案解析">
-        <v-editor v-model="modalForm.comment"></v-editor>
+        <v-editor v-model="modalForm.comment" :enable-audio="false"></v-editor>
       </el-form-item>
     </el-form>
     <question-info-edit