zhangjie 2 tahun lalu
induk
melakukan
80ec6af0ba

+ 8 - 4
src/modules/paper-export/router/index.js

@@ -14,7 +14,9 @@ export const otherRoutes = [
     path: "/paper-template/edit",
     name: "PaperTemplateEdit",
     component: () =>
-      import(/* webpackChunkName: "card" */ "../views/PaperTemplateEdit.vue"),
+      import(
+        /* webpackChunkName: "paperTemp" */ "../views/PaperTemplateEdit.vue"
+      ),
   },
   {
     // viewType::: view:预览,print:打印,frame:iframe嵌套
@@ -22,13 +24,15 @@ export const otherRoutes = [
     name: "PaperTemplatePreview",
     component: () =>
       import(
-        /* webpackChunkName: "card" */ "../views/PaperTemplatePreview.vue"
+        /* webpackChunkName: "paperTemp" */ "../views/PaperTemplatePreview.vue"
       ),
   },
   {
-    path: "/paper-template/build",
+    path: "/paper-template/build/:paperId/:viewType",
     name: "PaperTemplateBuild",
     component: () =>
-      import(/* webpackChunkName: "card" */ "../views/PaperTemplateBuild.vue"),
+      import(
+        /* webpackChunkName: "paperTemp" */ "../views/PaperTemplateBuild.vue"
+      ),
   },
 ];

+ 34 - 4
src/modules/paper-export/views/PaperTemplateBuild.vue

@@ -18,8 +18,10 @@ import { getModel as getPageModel } from "../elements/page/model";
 import { getElementId, randomCode, deepCopy } from "../../card/plugins/utils";
 import { calcSum, maxNum } from "@/plugins/utils";
 import previewTemp from "../previewTemp";
-import paperJson from "./data/paper.json";
-import paperTempJson from "./data/paper-temp.json";
+import { paperDetailInfoApi } from "../../paper/api";
+import { paperTemplateListApi } from "../api";
+// import paperJson from "./data/paper.json";
+// import paperTempJson from "./data/paper-temp.json";
 
 const numberToUpperCase = function (val) {
   if (val < 1 || val > 26) return;
@@ -49,6 +51,7 @@ export default {
       paperTempJson: [],
       maxColumnWidth: 200,
       maxColumnHeight: 200,
+      paperTempList: [],
     };
   },
   computed: {
@@ -61,10 +64,37 @@ export default {
   },
   methods: {
     async initData() {
-      // todo: get data
-      this.paperJson = paperJson;
+      await this.getPaperJson();
+      await this.getPaperTempList();
+
+      // test--->
+      // this.paperJson = paperJson;
+      // this.paperTempJson = paperTempJson;
+      // this.pages = paperTempJson.pages;
+      // this.$nextTick(() => {
+      //   this.buildData();
+      // });
+    },
+    async getPaperJson() {
+      const res = await paperDetailInfoApi(this.paperId);
+      this.paperJson = res.data;
+    },
+    async getPaperTempList() {
+      const res = await paperTemplateListApi("PAPER_EXPORT");
+      this.paperTempList = res.data;
+      if (!this.paperTempList.length) {
+        this.$message.error("导出模板缺失!");
+        return Promise.reject();
+      }
+      this.paperTempChange(this.paperTempList[0].id);
+    },
+    paperTempChange(paperTemp) {
+      let paperTempJson = paperTemp.content
+        ? JSON.parse(paperTemp.content)
+        : { pages: [] };
       this.paperTempJson = paperTempJson;
       this.pages = paperTempJson.pages;
+
       this.$nextTick(() => {
         this.buildData();
       });

+ 5 - 5
src/modules/question/components/QuestionImportDialog.vue

@@ -19,8 +19,8 @@
     >
       <el-form-item label="导入类型">
         <el-radio-group v-model="modalForm.importType">
-          <el-radio label="word">word</el-radio>
-          <el-radio label="zip">zip</el-radio>
+          <el-radio :label="['docx']">word</el-radio>
+          <el-radio :label="['zip']">zip</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item prop="courseId" label="导入类型">
@@ -44,7 +44,7 @@
         >
         </el-input>
       </el-form-item>
-      <el-form-item label="总分校验">
+      <el-form-item v-if="modalForm.userPaper" label="总分校验">
         <el-radio-group v-model="modalForm.scoreCheck">
           <el-radio :label="true">开启</el-radio>
           <el-radio :label="false">关闭</el-radio>
@@ -53,7 +53,7 @@
       <el-form-item prop="file">
         <import-file
           ref="ImportFile"
-          :format="[modalForm.importType]"
+          :format="modalForm.importType"
           :template-url="templateUrl"
           only-fetch-file
           @file-change="fileChange"
@@ -73,7 +73,7 @@ import { QUESTION_API } from "@/constants/constants";
 import { mapState } from "vuex";
 
 const initModalForm = {
-  importType: "word",
+  importType: ["docx"],
   courseId: "",
   userPaper: false,
   scoreCheck: false,

+ 7 - 9
src/modules/questions/views/GenPaper.vue

@@ -879,16 +879,14 @@ export default {
       sessionStorage.removeItem("gen_paper_currentPage");
     },
     previewPDF2(row) {
-      var key = this.user.key;
-      var token = this.user.token;
       window.open(
-        QUESTION_API +
-          "/paper/pdf/" +
-          row.id +
-          "?$key=" +
-          key +
-          "&$token=" +
-          token
+        this.getRouterPath({
+          name: "PaperTemplateBuild",
+          params: {
+            paperId: row.id,
+            viewType: "view",
+          },
+        })
       );
     },
     initVue() {