Browse Source

选做题

zhangjie 1 năm trước cách đây
mục cha
commit
49f678c8a7

+ 4 - 0
src/filters/filters.js

@@ -7,6 +7,7 @@ import {
   PAPER_TEMPLATE_TYPE,
   QUESTION_MAIN_TYPE,
   QUESTION_TYPES,
+  SELECTIVE_RULE_TYPE,
 } from "@/constants/constants";
 import { numberToChinese } from "@/plugins/utils";
 
@@ -54,3 +55,6 @@ Vue.filter("questionTypeFilter", function (val) {
 Vue.filter("numberToChaineseFilter", function (val) {
   return val ? numberToChinese(val) : "";
 });
+Vue.filter("selectiveRuleTypeFilter", function (val) {
+  return SELECTIVE_RULE_TYPE[val] || "";
+});

+ 7 - 1
src/modules/paper-export/views/paperTemplateBuildMixins.js

@@ -3,6 +3,7 @@ import { getModel as getRichTextModel } from "../elements/rich-text/model";
 import { maxNum, randomCode, deepCopy, calcSum } from "@/plugins/utils";
 import { getModel as getPageModel } from "../elements/page/model";
 import { getElementId } from "../../card/plugins/utils";
+import { SELECTIVE_RULE_TYPE } from "@/constants/constants";
 
 /**
 - 根据试卷构建文本元素,序号和内容分开。同时确定分组信息。
@@ -21,6 +22,7 @@ export default {
       structRelateElement: [],
       TEXT_INDENT_SIZE: 28,
       pages: [],
+      SELECTIVE_RULE_TYPE,
     };
   },
   methods: {
@@ -524,7 +526,11 @@ export default {
       let blocks = [
         {
           type: "text",
-          value: `${data.name}(共${data.unitCount}小题,满分${data.score}分)`,
+          value: data.selective
+            ? `${data.name}(选做题,${data.unitCount}选${
+                data.selectiveCount
+              },${SELECTIVE_RULE_TYPE[data.selectiveRule]})`
+            : `${data.name}(共${data.unitCount}小题,满分${data.score}分)`,
         },
       ];
       if (this.configModalForm.showDetailNo) {

+ 2 - 4
src/modules/paper/components/BuildPaperAuto.vue

@@ -49,13 +49,13 @@
               <span>{{ detail.sourceDetailName }}</span>
             </p>
             <p v-if="detail.selective">
-              <span>选题:</span>
+              <span>选题:</span>
               <span
                 :class="{
                   'color-danger': detail.questionCount < detail.selectiveCount,
                 }"
                 >{{ detail.questionCount }}选{{ detail.selectiveCount }},{{
-                  SELECTIVE_RULE_TYPE[detail.selectiveRule]
+                  detail.selectiveRule | selectiveRuleTypeFilter
                 }}</span
               >
             </p>
@@ -97,7 +97,6 @@ import ModifyDetailStruct from "./ModifyDetailStruct.vue";
 import QuestionGroupStruct from "./QuestionGroupStruct.vue";
 import { isAnEmptyRichText } from "@/utils/utils";
 import { deepCopy } from "@/plugins/utils";
-import { SELECTIVE_RULE_TYPE } from "@/constants/constants";
 import { omit } from "lodash";
 
 export default {
@@ -123,7 +122,6 @@ export default {
       details: [],
       curDetail: {},
       activeNames: [],
-      SELECTIVE_RULE_TYPE,
     };
   },
   mounted() {

+ 2 - 4
src/modules/paper/components/BuildPaperManual.vue

@@ -47,14 +47,14 @@
         <div v-if="detail.selective" class="detail-info">
           <div>
             <p>
-              <span>选题:</span>
+              <span>选题:</span>
               <span
                 :class="{
                   'color-danger':
                     detail.questions.length < detail.selectiveCount,
                 }"
                 >{{ detail.questions.length }}选{{ detail.selectiveCount }},{{
-                  SELECTIVE_RULE_TYPE[detail.selectiveRule]
+                  detail.selectiveRule | selectiveRuleTypeFilter
                 }}</span
               >
             </p>
@@ -128,7 +128,6 @@ import QuestionEditDialog from "../../question/components/QuestionEditDialog.vue
 import { BASE_QUESTION_TYPES } from "@/constants/constants";
 import { randomCode } from "@/plugins/utils";
 import { isAnEmptyRichText } from "@/utils/utils";
-import { SELECTIVE_RULE_TYPE } from "@/constants/constants";
 import { omit } from "lodash";
 
 // import details from "../datas/details.json";
@@ -150,7 +149,6 @@ export default {
   },
   data() {
     return {
-      SELECTIVE_RULE_TYPE,
       details: [],
       // details,
       curDetail: {},

+ 6 - 0
src/modules/paper/components/ModifyDetailStruct.vue

@@ -48,6 +48,8 @@
             step-strictly
           ></el-input-number>
         </el-form-item>
+      </template>
+      <template v-if="showSelective">
         <el-form-item label="是否选做题">
           <el-radio-group
             v-model="modalForm.selective"
@@ -127,6 +129,10 @@ export default {
       type: Boolean,
       default: false,
     },
+    showSelective: {
+      type: Boolean,
+      default: false,
+    },
   },
   data() {
     return {

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

@@ -181,13 +181,20 @@
               <h3>
                 <span>{{ paperDetail.cnNum }}</span> <span>.</span>
                 <span>{{ paperDetail.name }}</span>
-                <span>
+                <span v-if="!paperDetail.selective">
                   ({{
                     !paperDetail.title ? "本大题" : paperDetail.title + ","
                   }}共{{ paperDetail.unitCount }}小题,满分{{
                     paperDetail.score
                   }}分)
                 </span>
+                <span v-else>
+                  ({{
+                    !paperDetail.title ? "本大题" : paperDetail.title + ","
+                  }}选做题,{{ paperDetail.unitCount }}选{{
+                    paperDetail.selectiveCount
+                  }},{{ paperDetail.selectiveRule | selectiveRuleTypeFilter }})
+                </span>
               </h3>
             </div>
             <rich-text
@@ -534,6 +541,7 @@
       ref="ModifyDetailStruct"
       :detail="curDetail"
       only-name
+      show-selective
       @modified="detailModified"
     ></modify-detail-struct>
     <!-- 基础构成 -->
@@ -866,12 +874,13 @@ export default {
       if (!res) return;
       this.$message.success("修改成功!");
 
-      const paperDetail = this.paper.paperDetails.find(
-        (item) => item.id === detail.id
-      );
-      if (!paperDetail) return;
-      paperDetail.name = detail.detailName;
-      paperDetail.description = detail.description;
+      // const paperDetail = this.paper.paperDetails.find(
+      //   (item) => item.id === detail.id
+      // );
+      // if (!paperDetail) return;
+      // paperDetail.name = detail.detailName;
+      // paperDetail.description = detail.description;
+      this.initPaper();
     },
     // 移动大题
     async toMovePaperDetail(detail, vector) {