Jelajahi Sumber

试题编辑修改

zhangjie 2 tahun lalu
induk
melakukan
8f1f25b64d

+ 11 - 5
src/modules/paper/views/EditPaper.vue

@@ -860,8 +860,13 @@ export default {
         questionUnitId: row.id,
       };
       if (curQuestion.subQuestions && curQuestion.subQuestions.length) {
-        curQuestion.subQuestions = curQuestion.subQuestions.map((q) => {
-          return { ...q, ...courseInfo, editMode: "paper" };
+        curQuestion.subQuestions = curQuestion.subQuestions.map((q, qindex) => {
+          return {
+            ...q,
+            ...courseInfo,
+            score: row.subScoreList[qindex],
+            editMode: "paper",
+          };
         });
       }
       this.curQuestion = curQuestion;
@@ -869,16 +874,17 @@ export default {
       this.$refs.QuestionEditDialog.open();
     },
     async questionEdited(question) {
+      let subScoreList = [];
       if (question.subQuestions && question.subQuestions.length) {
-        question.score = calcSum(
-          question.subQuestions.map((item) => item.score || 0)
-        );
+        subScoreList = question.subQuestions.map((item) => item.score || 0);
+        question.score = calcSum(subScoreList);
       }
       let questionUnit = {
         id: this.curQuestion.questionUnitId,
         question,
         score: question.score,
       };
+      if (subScoreList.length) questionUnit.subScoreList = subScoreList;
       const res = await paperQuestionSaveApi(questionUnit).catch(() => {});
       if (!res) return;
       this.$message.success("保存成功!");

+ 9 - 5
src/modules/question/components/QuestionEditDialog.vue

@@ -28,7 +28,12 @@
     </div>
     <div class="part-box question-edit">
       <el-form label-width="100px">
-        <el-form-item label="题型">
+        <el-form-item v-if="isEdit" label="题型">
+          <el-button type="primary" size="small">
+            {{ question.sourceDetailName }}
+          </el-button>
+        </el-form-item>
+        <el-form-item v-else label="题型">
           <el-button
             v-for="item in sourceDetailList"
             :key="item.id"
@@ -36,18 +41,17 @@
               questionModel.sourceDetailId === item.id ? 'primary' : 'default'
             "
             size="small"
-            :disabled="isEdit || loading"
+            :disabled="loading"
             @click="switchType(item)"
             >{{ item.name }}</el-button
           >
           <el-button
-            v-if="sourceDetailAllList.length > limitShowCount && !isEdit"
+            v-if="sourceDetailAllList.length > limitShowCount"
             size="small"
             :icon="showMore ? 'el-icon-arrow-up' : 'el-icon-more'"
             @click="switchMoreSourceDetail"
           ></el-button>
           <el-button
-            v-if="!isEdit"
             size="small"
             icon="el-icon-plus"
             @click="toAddSourceDetail"
@@ -146,7 +150,7 @@ export default {
   },
   methods: {
     async visibleChange() {
-      await this.getSourceDetailList();
+      if (!this.question.id) await this.getSourceDetailList();
       this.initData();
     },
     initData() {

+ 48 - 18
src/modules/question/components/QuestionInfoEdit.vue

@@ -1,7 +1,21 @@
 <template>
   <div class="question-info-edit">
-    <el-form label-width="100px" inline>
-      <el-form-item label="难度">
+    <el-form label-width="100px">
+      <el-form-item v-if="IS_PAPER_MODE" label="分值">
+        <el-input-number
+          v-model="modalForm.score"
+          placeholder="分值"
+          :precision="1"
+          :min="0"
+          :max="999"
+          :step="0.1"
+          step-strictly
+          :controls="false"
+          @change="emitChange"
+        ></el-input-number>
+      </el-form-item>
+
+      <el-form-item label="难度" style="display: inline-block">
         <el-select
           v-model="modalForm.difficulty"
           placeholder="请选择难度"
@@ -16,30 +30,42 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item v-if="IS_PAPER_MODE" label="分值" label-width="50px">
-        <el-input-number
-          v-model="modalForm.score"
-          placeholder="分值"
-          :precision="1"
-          :min="0"
-          :max="999"
-          :step="0.1"
-          step-strictly
-          :controls="false"
-        ></el-input-number>
-      </el-form-item>
-      <el-form-item v-if="IS_PAPER_MODE" label="时长" label-width="50px">
+      <el-form-item
+        label="时长"
+        style="display: inline-block"
+        label-width="60px"
+      >
         <el-input-number
           v-model="modalForm.control.maxAnswerTime"
           :precision="0"
-          :min="1"
+          :min="0"
           :max="999"
           :step="1"
           step-strictly
           :controls="false"
+          @change="emitChange"
         ></el-input-number>
       </el-form-item>
-      <br />
+      <el-form-item
+        label="公开度"
+        style="display: inline-block"
+        label-width="59px"
+      >
+        <el-select
+          v-model="modalForm.publicity"
+          placeholder="请选择公开度"
+          @change="emitChange"
+        >
+          <el-option
+            v-for="item in publicityList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+
       <el-form-item prop="quesProperties" label="属性名">
         <div class="box-flex">
           <property-select
@@ -71,7 +97,6 @@
           >
         </div>
       </el-form-item>
-      <br />
       <el-form-item label="属性列表">
         <el-tag
           v-for="content in modalForm.quesProperties"
@@ -106,6 +131,7 @@ const initModalForm = {
   difficulty: "易",
   quesProperties: [],
   score: 0,
+  publicity: true,
   control: { maxAnswerTime: 0 },
 };
 
@@ -135,6 +161,10 @@ export default {
         firstProperty: {},
         secondProperty: {},
       },
+      publicityList: [
+        { label: "公开", value: true },
+        { label: "非公开", value: false },
+      ],
     };
   },
   computed: {

+ 2 - 1
src/modules/question/components/model/questionModel.js

@@ -118,12 +118,13 @@ const models = {
 export const getInitQuestionModel = (qtype) => {
   return {
     id: null,
+    editMode: "question",
     sourceDetailId: "",
     courseId: "",
     difficulty: "易",
     quesProperties: [],
-    editMode: "question",
     score: 0,
+    publicity: true,
     control: { maxAnswerTime: 0 },
     ...deepCopy(models[qtype]),
   };