zhangjie 2 gadi atpakaļ
vecāks
revīzija
ac19acb2e6

+ 1 - 0
src/modules/paper/components/BuildPaperAuto.vue

@@ -181,6 +181,7 @@ export default {
           description: item.description,
           detailName: item.detailName,
           sourceDetailId: item.sourceDetailId,
+          sourceDetailName: item.sourceDetailName,
           courseId: item.courseId,
           score: item.score,
           ...structData,

+ 1 - 15
src/modules/paper/components/BuildPaperManual.vue

@@ -211,21 +211,7 @@ export default {
       });
     },
     toEditQuestion(row) {
-      const courseInfo = {
-        courseId: row.course.id,
-        courseCode: row.course.code,
-        courseName: row.course.name,
-      };
-      let curQuestion = {
-        ...row,
-        ...courseInfo,
-      };
-      if (curQuestion.subQuestions && curQuestion.subQuestions.length) {
-        curQuestion.subQuestions = curQuestion.subQuestions.map((q) => {
-          return { ...q, ...courseInfo };
-        });
-      }
-      this.curQuestion = curQuestion;
+      this.curQuestion = row;
       this.$refs.QuestionEditDialog.open();
     },
     questionModified(question) {

+ 3 - 1
src/modules/paper/components/QuestionGroupStruct.vue

@@ -410,7 +410,9 @@ export default {
         });
         pDistributeInfo = pDistributeInfo.filter(
           (data) =>
-            data.propertyDistributeInfo && data.propertyDistributeInfo.length
+            (data.propertyDistributeInfo &&
+              data.propertyDistributeInfo.length) ||
+            data.questionCount
         );
         return pDistributeInfo;
       }

+ 6 - 2
src/modules/paper/views/BuildPaper.vue

@@ -150,6 +150,7 @@ import BuildPaperSimple from "../components/BuildPaperSimple.vue";
 import AutoBuildPaperStructManage from "../components/AutoBuildPaperStructManage.vue";
 
 import { buildPaperApi, autoBuildPaperStructSaveApi } from "../api";
+import { deepCopy, randomCode } from "@/plugins/utils";
 
 const initModalForm = {
   courseId: "",
@@ -240,8 +241,11 @@ export default {
       this.$refs.AutoBuildPaperStructManage.open();
     },
     structSelected(row) {
-      console.log(row);
-      this.$refs.BuildPaperDetail.setDetails(row.structInfo);
+      let details = deepCopy(row.structInfo);
+      details.forEach((detail) => {
+        detail.id = randomCode();
+      });
+      this.$refs.BuildPaperDetail.setDetails(details);
     },
     async confirm() {
       let valid = await this.$refs.modalFormComp.validate().catch(() => {});

+ 3 - 26
src/modules/paper/views/EditPaper.vue

@@ -555,6 +555,7 @@
     <question-edit-dialog
       ref="QuestionEditDialog"
       :question="curQuestion"
+      edit-mode="paper"
       @modified="questionEdited"
     ></question-edit-dialog>
     <!-- SelectQuestionDialog -->
@@ -913,31 +914,7 @@ export default {
     },
     // 编辑小题
     toEditQues(row) {
-      let question = row.question;
-      const courseInfo = {
-        courseId: question.course.id,
-        courseCode: question.course.code,
-        courseName: question.course.name,
-      };
-      let curQuestion = {
-        ...question,
-        ...courseInfo,
-        score: row.score,
-        editMode: "paper",
-        questionUnitId: row.id,
-      };
-      if (curQuestion.subQuestions && curQuestion.subQuestions.length) {
-        curQuestion.subQuestions = curQuestion.subQuestions.map((q, qindex) => {
-          return {
-            ...q,
-            ...courseInfo,
-            score: row.subScoreList[qindex],
-            editMode: "paper",
-          };
-        });
-      }
-      this.curQuestion = curQuestion;
-
+      this.curQuestion = row;
       this.$refs.QuestionEditDialog.open();
     },
     async questionEdited(question) {
@@ -947,7 +924,7 @@ export default {
         question.score = calcSum(subScoreList);
       }
       let questionUnit = {
-        id: this.curQuestion.questionUnitId,
+        id: this.curQuestion.id,
         question,
         score: question.score,
       };

+ 4 - 0
src/modules/question/api.js

@@ -40,6 +40,10 @@ export function questionPageListApi(data) {
   const url = `${QUESTION_API}/question/question/page`;
   return $httpWithMsg.get(url, { params: data });
 }
+export function questionDetailApi(id) {
+  const url = `${QUESTION_API}/question/${id}`;
+  return $httpWithMsg.get(url);
+}
 export function classifyQuestionPageListApi(data) {
   const url = `${QUESTION_API}/question/classify/find_current_classify_question_page`;
   return $httpWithMsg.post(url, {}, { params: data });

+ 1 - 1
src/modules/question/components/AuditQuestionApply.vue

@@ -38,7 +38,7 @@
         </el-table-column>
         <el-table-column label="提交时间" prop="updateTime" width="170">
         </el-table-column>
-        <el-table-column label="状态" prop="auditStatusName" width="100">
+        <el-table-column label="状态" prop="inReviewStatus" width="100">
         </el-table-column>
         <el-table-column label="操作" width="170" fixed="right">
           <template slot-scope="scope">

+ 1 - 16
src/modules/question/components/AuditQuestionUnsubmit.vue

@@ -135,22 +135,7 @@ export default {
       this.$refs.QuestionPreviewDialog.open();
     },
     toEdit(row) {
-      const courseInfo = {
-        courseId: row.course.id,
-        courseCode: row.course.code,
-        courseName: row.course.name,
-      };
-      let curQuestion = {
-        ...row,
-        ...courseInfo,
-      };
-      if (curQuestion.subQuestions && curQuestion.subQuestions.length) {
-        curQuestion.subQuestions = curQuestion.subQuestions.map((q) => {
-          return { ...q, ...courseInfo };
-        });
-      }
-      this.curQuestion = curQuestion;
-
+      this.curQuestion = row;
       this.$refs.QuestionEditDialog.open();
     },
     async toSubmit(row) {

+ 1 - 15
src/modules/question/components/FolderQuestionManageDialog.vue

@@ -300,21 +300,7 @@ export default {
       this.$refs.QuestionPreviewDialog.open();
     },
     toEditQuestion(row) {
-      const courseInfo = {
-        courseId: row.course.id,
-        courseCode: row.course.code,
-        courseName: row.course.name,
-      };
-      let curQuestion = {
-        ...row,
-        ...courseInfo,
-      };
-      if (curQuestion.subQuestions && curQuestion.subQuestions.length) {
-        curQuestion.subQuestions = curQuestion.subQuestions.map((q) => {
-          return { ...q, ...courseInfo };
-        });
-      }
-      this.curQuestion = curQuestion;
+      this.curQuestion = row;
       this.$refs.QuestionEditDialog.open();
     },
     toMoveQuestion(row) {

+ 53 - 19
src/modules/question/components/QuestionEditDialog.vue

@@ -13,8 +13,8 @@
     <div slot="title" class="box-justify">
       <div>
         <h2>{{ isEdit ? "编辑试题" : "创建试题" }}</h2>
-        <span>课程代码:{{ question.courseCode }}</span>
-        <span>课程名称:{{ question.courseName }}</span>
+        <span>课程代码:{{ questionModel.courseCode }}</span>
+        <span>课程名称:{{ questionModel.courseName }}</span>
       </div>
       <div>
         <el-button
@@ -90,8 +90,12 @@ import SelectQuestion from "./edit/SelectQuestion.vue";
 import TextAnswerQuestion from "./edit/TextAnswerQuestion.vue";
 import NestedQuestion from "./edit/NestedQuestion.vue";
 import BankedClozeQuestion from "./edit/BankedClozeQuestion.vue";
-import { deepCopy, randomCode } from "@/plugins/utils";
-import { updateQuestionApi, sourceDetailPageListApi } from "../api";
+import { randomCode } from "@/plugins/utils";
+import {
+  updateQuestionApi,
+  sourceDetailPageListApi,
+  questionDetailApi,
+} from "../api";
 import ModifySourceDetail from "./ModifySourceDetail.vue";
 
 const initQuestionModel = {
@@ -117,9 +121,13 @@ export default {
     question: {
       type: Object,
       default() {
-        return {};
+        return { id: "" };
       },
     },
+    editMode: {
+      type: String,
+      default: "question",
+    },
   },
   data() {
     return {
@@ -152,25 +160,52 @@ export default {
   },
   methods: {
     async visibleChange() {
-      if (!this.question.id) await this.getSourceDetailList();
+      if (this.question.id) {
+        const res = await questionDetailApi(this.question.id);
+
+        const courseInfo = {
+          courseId: res.data.course.id,
+          courseCode: res.data.course.code,
+          courseName: res.data.course.name,
+        };
+        let questionModel = {
+          ...res.data,
+          ...courseInfo,
+          score: this.question.score,
+          editMode: this.editMode,
+        };
+        if (questionModel.subQuestions && questionModel.subQuestions.length) {
+          questionModel.subQuestions = questionModel.subQuestions.map(
+            (q, qindex) => {
+              let nq = { ...q, ...courseInfo, editMode: this.editMode };
+              if (this.editMode === "paper")
+                nq.score = this.question.subScoreList[qindex];
+              return nq;
+            }
+          );
+        }
+        this.questionModel = questionModel;
+      } else {
+        await this.getSourceDetailList();
+
+        this.questionModel = Object.assign(
+          {},
+          initQuestionModel,
+          this.question
+        );
+      }
+
       this.initData();
     },
     initData() {
       this.loading = false;
       this.hasModifyQuestion = false;
-
-      let questionModel = Object.assign(
-        {},
-        initQuestionModel,
-        deepCopy(this.question)
-      );
-
       if (this.isEdit) {
         this.sourceDetailList = this.sourceDetailAllList;
 
         this.curSourceDetail = {
-          id: this.question.sourceDetailId,
-          questionType: this.question.questionType,
+          id: this.questionModel.sourceDetailId,
+          questionType: this.questionModel.questionType,
         };
       } else {
         if (this.sourceDetailAllList.length > this.limitShowCount) {
@@ -181,13 +216,12 @@ export default {
         } else {
           this.sourceDetailList = this.sourceDetailAllList;
         }
-        if (!this.question.sourceDetailId && !this.curSourceDetail.id) {
+        if (!this.questionModel.sourceDetailId && !this.curSourceDetail.id) {
           this.curSourceDetail = this.sourceDetailList[0];
         }
-        questionModel.questionType = this.curSourceDetail.questionType;
-        questionModel.sourceDetailId = this.curSourceDetail.id;
+        this.questionModel.questionType = this.curSourceDetail.questionType;
+        this.questionModel.sourceDetailId = this.curSourceDetail.id;
       }
-      this.questionModel = questionModel;
       this.questionKey = randomCode();
     },
     close() {

+ 1 - 16
src/modules/question/views/QuestionManage.vue

@@ -339,22 +339,7 @@ export default {
       this.$refs.QuestionPreviewDialog.open();
     },
     toEditQuestion(row) {
-      const courseInfo = {
-        courseId: row.course.id,
-        courseCode: row.course.code,
-        courseName: row.course.name,
-      };
-      let curQuestion = {
-        ...row,
-        ...courseInfo,
-      };
-      if (curQuestion.subQuestions && curQuestion.subQuestions.length) {
-        curQuestion.subQuestions = curQuestion.subQuestions.map((q) => {
-          return { ...q, ...courseInfo };
-        });
-      }
-      this.curQuestion = curQuestion;
-
+      this.curQuestion = row;
       this.$refs.QuestionEditDialog.open();
     },
     toMoveQuestion(row) {