Quellcode durchsuchen

feat: 试卷输出模版管理

zhangjie vor 1 Monat
Ursprung
Commit
93e708e94c

+ 47 - 7
src/modules/paper-export/components/AnswerTemplateView.vue

@@ -9,9 +9,16 @@
           <div
             v-for="(row, rindex) in singlePageData"
             :key="rindex"
-            :class="['origin-item', { 'is-detail-title': row.isDetail }]"
+            :class="[
+              'origin-item',
+              row.className || '',
+              { 'is-detail-title': row.isDetail },
+            ]"
           >
-            <template v-if="row.isDetail">
+            <template v-if="row.isTitle">
+              {{ row.title }}
+            </template>
+            <template v-else-if="row.isDetail">
               {{ row.serialNo | numberToChaineseFilter }}、{{ row.name }}
               {{ row.title }}
             </template>
@@ -46,10 +53,17 @@
         <div
           v-for="(row, index) in allList"
           :key="index"
-          :class="['origin-item', { 'is-detail-title': row.isDetail }]"
+          :class="[
+            'origin-item',
+            row.className || '',
+            { 'is-detail-title': row.isDetail },
+          ]"
           :id="row.id"
         >
-          <template v-if="row.isDetail">
+          <template v-if="row.isTitle">
+            {{ row.title }}
+          </template>
+          <template v-else-if="row.isDetail">
             {{ row.serialNo | numberToChaineseFilter }}、{{ row.name }}
             {{ row.title }}
           </template>
@@ -133,6 +147,19 @@ export default {
       const groupableTypes = ["SINGLE_ANSWER_QUESTION", "BOOL_ANSWER_QUESTION"];
       let groupIndex = 0;
 
+      allList.push({
+        id: `answer-title`,
+        isTitle: true,
+        title: this.$store.state.user.rootOrgName,
+        className: "answer-title",
+      });
+      allList.push({
+        id: `answer-sub-title`,
+        isTitle: true,
+        title: `${this.answerData.course.name}(${this.answerData.course.code})  ${this.answerData.name}参考答案及评分标准`,
+        className: "answer-sub-title",
+      });
+
       paperDetails.forEach((detail) => {
         if (!detail.paperDetailUnits?.length) {
           return;
@@ -258,12 +285,25 @@ export default {
 }
 
 .page-box-answer .origin-item {
-  margin-bottom: 5px; /* Adjust spacing for non-grouped items */
+  padding-bottom: 5px; /* Adjust spacing for non-grouped items */
 }
 
 .page-box-answer .is-detail-title {
-  margin-top: 10px;
-  margin-bottom: 5px;
+  padding-top: 10px;
+  padding-bottom: 5px;
   font-weight: bold;
 }
+
+.page-box-answer .answer-title {
+  font-size: 20px;
+  font-weight: bold;
+  padding-bottom: 10px;
+  text-align: center;
+}
+.page-box-answer .answer-sub-title {
+  font-size: 16px;
+  padding-bottom: 20px;
+  text-align: center;
+  white-space: pre;
+}
 </style>

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

@@ -571,11 +571,29 @@ export default {
       });
     },
     parseDetailTitle(data) {
+      const scoreMap = {};
+      data.paperDetailUnits.forEach((item) => {
+        if (!scoreMap[item.score]) scoreMap[item.score] = [];
+        scoreMap[item.score].push(item.number);
+      });
+      // console.log(scoreMap);
+      const scores = Object.keys(scoreMap);
+
+      let scoreStr = `${data.name}(共${data.unitCount}小题,`;
+      if (scores.length === 1) {
+        scoreStr += `每题${scores[0]}分,满分${data.score}分)`;
+      } else {
+        scores.forEach((score) => {
+          scoreStr += `第${scoreMap[score].join("、")}题${score}分,`;
+        });
+        scoreStr += `满分${data.score}分)`;
+      }
+
       let blocks = [
         {
           type: "text",
           value: this.configModalForm.showDetailScoreInfo
-            ? `${data.name}(共${data.unitCount}小题,满分${data.score}分)`
+            ? scoreStr
             : `${data.name}`,
         },
       ];