Переглянути джерело

Merge branch 'dev_1.2.5' of http://git.qmth.com.cn/union-question/union-question-web into dev_1.2.5

xiatian 2 роки тому
батько
коміт
c49ee69231

+ 3 - 0
src/assets/styles/pages.scss

@@ -642,6 +642,9 @@
   .el-form-item__label {
     color: $--color-text-secondary;
   }
+  .el-form-item__content {
+    overflow: auto;
+  }
 
   .sub-question {
     margin: 10px 0 10px 30px;

+ 5 - 0
src/modules/paper-export/views/PaperTemplateBuild.vue

@@ -648,6 +648,7 @@ export default {
           let nelem = deepCopy(elem);
           nelem.id = getElementId();
           nelem.key = randomCode();
+          nelem.h = this.getElementHeight(`preview-${elem.id}`);
           if (nelem.elements && nelem.elements.length) {
             nelem.elements.forEach((celem) => {
               celem.id = getElementId();
@@ -660,6 +661,10 @@ export default {
       });
       return newPage;
     },
+    getElementHeight(elementId) {
+      const dom = document.getElementById(elementId);
+      return dom ? dom.offsetHeight : 0;
+    },
     calcAveOptionPercent(maxPercent) {
       if (maxPercent > 0.5) return 1;
       if (maxPercent > 0.25) return 0.5;

+ 2 - 2
src/modules/question/api.js

@@ -283,8 +283,8 @@ export function questionImportFileUpload(data, headData) {
     headers: headData,
   });
 }
-export function questionImportParseRichText(richText) {
-  return $httpWithMsg.post(`${QUESTION_API}/word/parse/identify`, richText);
+export function questionImportParseRichText(datas) {
+  return $httpWithMsg.post(`${QUESTION_API}/word/parse/identify`, datas);
 }
 export function questionImportPaperSave(paperData) {
   return $httpWithMsg.post(`${QUESTION_API}/word/parse/save`, paperData);

+ 1 - 0
src/modules/question/components/QuestionImportDialog.vue

@@ -213,6 +213,7 @@ export default {
       // Object.entries(this.modalForm).forEach(([key, val]) => {
       //   if (val !== null) formData.append(key, val);
       // });
+      formData.append("courseId", this.modalForm.courseId);
       formData.append("file", this.fileData.file);
 
       const res = await questionImportFileUpload(formData, {

+ 4 - 3
src/modules/question/components/QuestionImportEdit.vue

@@ -205,9 +205,10 @@ export default {
       if (this.loading) return;
       this.loading = true;
 
-      const res = await questionImportParseRichText(this.paperRichJson).catch(
-        () => {}
-      );
+      const res = await questionImportParseRichText({
+        richText: this.paperRichJson,
+        courseId: this.data.importData.courseId,
+      }).catch(() => {});
       this.loading = false;
       if (!res) return;
 

+ 7 - 4
src/modules/question/components/QuestionImportPaperEdit.vue

@@ -14,7 +14,7 @@
           class="ep-question"
         >
           <div class="ep-question-type">
-            [题型:{{ question.questionType | questionTypeFilter }}]
+            [题型:{{ question.sourceDetailName }}]
           </div>
           <component
             :is="structTypeComp(question.questionType)"
@@ -29,7 +29,6 @@
 
 <script>
 import { deepCopy, randomCode } from "@/plugins/utils";
-import { structTypeToQuestionType } from "./import-edit/model";
 import BooleanQuestion from "./import-edit/BooleanQuestion.vue";
 import FillBlankQuestion from "./import-edit/FillBlankQuestion.vue";
 import SelectQuestion from "./import-edit/SelectQuestion.vue";
@@ -76,7 +75,9 @@ export default {
       let paperData = deepCopy(this.paper);
       paperData.forEach((detail) => {
         detail.questions.forEach((question) => {
-          question.questionType = structTypeToQuestionType(question.type);
+          question.sourceDetailId = question.customizeQuestionType.id;
+          question.sourceDetailName = question.customizeQuestionType.name;
+          question.questionType = question.customizeQuestionType.questionType;
           question.courseId = this.courseId;
           question.score = question.score || detail.questionScore || 0;
           question.id = randomCode();
@@ -84,7 +85,9 @@ export default {
           if (question.subQuestions && question.subQuestions.length) {
             question.subQuestions.forEach((subq) => {
               subq.id = randomCode();
-              subq.questionType = structTypeToQuestionType(subq.type);
+              subq.questionType = subq.customizeQuestionType.questionType;
+              subq.sourceDetailId = subq.customizeQuestionType.id;
+              subq.sourceDetailName = subq.customizeQuestionType.name;
               subq.courseId = this.courseId;
               subq.score = subq.score || detail.questionScore || 0;
             });

+ 2 - 1
src/modules/question/components/import-edit/BankedClozeQuestion.vue

@@ -97,8 +97,9 @@ export default {
       let data = {
         ...this.question,
         quesParam: { matchingMode: this.matchingMode },
+        subQuestions: [],
       };
-
+      if (!this.$refs.MatchQuestion) return;
       data.subQuestions = this.$refs.MatchQuestion.map((compInst) =>
         compInst.getData()
       );

+ 2 - 1
src/modules/question/components/import-edit/NestedQuestion.vue

@@ -79,7 +79,8 @@ export default {
       return true;
     },
     getData() {
-      let data = { ...this.question };
+      let data = { ...this.question, subQuestions: [] };
+      if (!this.$refs.QuestionEditDetail) return;
       data.subQuestions = this.$refs.QuestionEditDetail.map((compInst) =>
         compInst.getData()
       );