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

试卷模板新增动态内容支持

zhangjie 2 роки тому
батько
коміт
e5246af39c

+ 8 - 0
src/modules/paper-export/elements/field-text/model.js

@@ -39,6 +39,14 @@ const FIELD_LIST = [
     name: "科目名称",
     field: "courseName",
   },
+  {
+    name: "试卷总分",
+    field: "totalScore",
+  },
+  {
+    name: "学校名称",
+    field: "rootOrgName",
+  },
 ];
 
 export { MODEL, FIELD_LIST, getModel };

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

@@ -96,6 +96,8 @@ export default {
       this.fieldData = {
         paperName: res.data.name,
         courseName: `${res.data.course.name}(${res.data.course.code})`,
+        totalScore: res.data.totalScore,
+        rootOrgName: res.data.rootOrgName,
       };
     },
     async getPaperTempList() {
@@ -115,11 +117,30 @@ export default {
         : { pages: [] };
       this.paperTempJson = paperTempJson;
       this.pages = paperTempJson.pages;
+      this.updaterFieldInfo();
 
       this.$nextTick(() => {
         this.buildData();
       });
     },
+    updaterFieldInfo() {
+      const VALID_ELEMENTS_FOR_EXTERNAL = ["FIELD_TEXT"];
+      this.paperTempJson.pages.forEach((page) => {
+        page.columns.forEach((column) => {
+          column.elements.forEach((elem) => {
+            if (!elem.elements || !elem.elements.length) return;
+
+            elem.elements.forEach((element) => {
+              if (!VALID_ELEMENTS_FOR_EXTERNAL.includes(element.type)) return;
+
+              if (element.type === "FIELD_TEXT") {
+                element.content = this.fieldData[element.field];
+              }
+            });
+          });
+        });
+      });
+    },
     async buildData() {
       this.maxColumnWidth = document.getElementById("column-0-0").offsetWidth;
       this.maxColumnHeight = document.getElementById("column-0-0").offsetHeight;