xiatian пре 2 година
родитељ
комит
11f2af5c5c

+ 0 - 4
src/modules/questions/views/ExportTemplate.vue

@@ -33,8 +33,6 @@
           <el-select v-model="formSearch.type" :clearable="true">
             <el-option label="试卷导出" value="PAPER_EXPORT"> </el-option>
             <el-option label="答案导出" value="ANSWER_EXPORT"> </el-option>
-            <el-option label="离线试卷" value="OUTLINE_PAPER_EXPORT">
-            </el-option>
             <el-option label="试卷预览" value="PAPER_VIEW"> </el-option>
             <el-option label="综合卷预览" value="SYNTHESIZE_PAPER_VIEW">
             </el-option>
@@ -173,8 +171,6 @@
           <el-select v-model="fileForm.type" :clearable="true" class="input">
             <el-option label="试卷导出" value="PAPER_EXPORT"> </el-option>
             <el-option label="答案导出" value="ANSWER_EXPORT"> </el-option>
-            <el-option label="离线试卷" value="OUTLINE_PAPER_EXPORT">
-            </el-option>
             <el-option label="试卷预览" value="PAPER_VIEW"> </el-option>
             <el-option label="综合卷预览" value="SYNTHESIZE_PAPER_VIEW">
             </el-option>

+ 65 - 5
src/modules/questions/views/GenPaper.vue

@@ -251,7 +251,10 @@
           {{ exportModel.courseCode }}
         </el-form-item>
         <el-form-item label="导出内容">
-          <el-radio-group v-model="exportModel.exportContent">
+          <el-radio-group
+            v-model="exportModel.exportContent"
+            @change="getTemplates('')"
+          >
             <el-radio label="PAPER">试卷</el-radio>
             <el-radio label="ANSWER">答案</el-radio>
             <el-radio label="THEMIS_PACKAGE">数据包</el-radio>
@@ -267,6 +270,25 @@
             <el-radio label="MODE5">整卷连续</el-radio>
           </el-radio-group>
         </el-form-item>
+        <el-form-item v-if="showSeqMode()" label="模板">
+          <el-select
+            v-model="exportModel.templateId"
+            filterable
+            :remote-method="getTemplates"
+            remote
+            clearable
+            placeholder="请选择"
+            @clear="getTemplates('')"
+          >
+            <el-option
+              v-for="item in templateList"
+              :key="item.id"
+              :label="item.fileName"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
       <div slot="footer">
         <el-button type="primary" @click="exportPaperInfo">开始导出</el-button>
@@ -352,6 +374,7 @@ import { mapState } from "vuex";
 export default {
   data() {
     return {
+      templateList: [],
       publicityDis: false,
       difficultyDegreeDis: false,
       quesLoading: false,
@@ -402,6 +425,7 @@ export default {
         id: "",
         courseCode: "",
         courseName: "",
+        templateId: "",
         exportContent: "",
         seqMode: "MODE1",
       },
@@ -458,6 +482,27 @@ export default {
     this.initVue();
   },
   methods: {
+    getTemplates(name) {
+      this.exportModel.templateId = "";
+      var url = QUESTION_API + "/exportTemplate/page/1/20";
+      let type;
+      if (this.exportModel.exportContent == "PAPER") {
+        type = "PAPER_EXPORT";
+      } else if (this.exportModel.exportContent == "ANSWER") {
+        type = "ANSWER_EXPORT";
+      } else {
+        return;
+      }
+      let params = {
+        rootOrgId: this.user.rootOrgId,
+        fileName: name,
+        enable: true,
+        type: type,
+      };
+      this.$httpWithMsg.get(url, { params: params }).then((response) => {
+        this.templateList = response.data.content;
+      });
+    },
     recoveryPaper(row) {
       this.$confirm("确认回收试卷吗?", "提示", {
         type: "warning",
@@ -723,13 +768,13 @@ export default {
     },
     //打开导出弹框
     openExportDialog(row) {
-      this.isShow = true;
       this.isShow = true;
       this.exportDialog = true;
       this.exportModel.id = row.id;
       this.exportModel.courseCode = row.course.code;
       this.exportModel.courseName = row.course.name;
       this.exportModel.exportContent = "";
+      this.exportModel.templateId = "";
       /* 分布式印刷数据包设置 */
       this.isShowPrintExamPackage = true;
       this.isShowPrintExamPackagePassword = false;
@@ -740,8 +785,8 @@ export default {
       if (this.selectedPaperIds.length != 0) {
         this.exportDialog = true;
         this.isShow = false;
-        this.isShow = false;
         this.exportModel.exportContent = "";
+        this.exportModel.templateId = "";
       } else {
         this.$notify({
           message: "请勾选导出的数据",
@@ -765,6 +810,17 @@ export default {
         });
         return false;
       }
+      let element = this.exportModel.exportContent;
+      if (
+        (element == "PAPER" || element == "ANSWER") &&
+        !this.exportModel.templateId
+      ) {
+        this.$notify({
+          message: "请选择模板",
+          type: "error",
+        });
+        return false;
+      }
       if (this.printExamPackagePassword.length > 0) {
         var reg = /^[0-9A-Za-z]{6,12}$/;
         if (!reg.test(this.printExamPackagePassword)) {
@@ -792,7 +848,9 @@ export default {
           "&$token=" +
           token +
           "&seqMode=" +
-          this.exportModel.seqMode;
+          this.exportModel.seqMode +
+          "&templateId=" +
+          this.exportModel.templateId;
         this.exportDialog = false;
       } else {
         var paperIds = this.paperIds;
@@ -810,7 +868,9 @@ export default {
           "&$token=" +
           token +
           "&seqMode=" +
-          this.exportModel.seqMode;
+          this.exportModel.seqMode +
+          "&templateId=" +
+          this.exportModel.templateId;
         this.exportDialog = false;
       }
     },

+ 73 - 13
src/modules/questions/views/SynthesisPaperStorage.vue

@@ -207,11 +207,13 @@
           {{ exportModel.courseCode }}
         </el-form-item>
         <el-form-item label="导出内容">
-          <el-checkbox-group v-model="exportModel.exportContentList">
-            <el-checkbox label="PAPER">试卷</el-checkbox>
-            <el-checkbox label="ANSWER">答案</el-checkbox>
-            <!-- <el-checkbox label="THEMIS_PACKAGE">数据包</el-checkbox> -->
-          </el-checkbox-group>
+          <el-radio-group
+            v-model="exportModel.exportContent"
+            @change="getTemplates('')"
+          >
+            <el-radio label="PAPER">试卷</el-radio>
+            <el-radio label="ANSWER">答案</el-radio>
+          </el-radio-group>
         </el-form-item>
         <el-form-item v-if="showSeqMode" label="小题序号">
           <el-radio-group v-model="exportModel.seqMode" class="input">
@@ -221,6 +223,25 @@
             <el-radio label="MODE5">整卷连续</el-radio>
           </el-radio-group>
         </el-form-item>
+        <el-form-item v-if="showSeqMode" label="模板">
+          <el-select
+            v-model="exportModel.templateId"
+            filterable
+            :remote-method="getTemplates"
+            remote
+            clearable
+            placeholder="请选择"
+            @clear="getTemplates('')"
+          >
+            <el-option
+              v-for="item in templateList"
+              :key="item.id"
+              :label="item.fileName"
+              :value="item.id"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
       <div slot="footer">
         <el-button type="primary" @click="exportPaperInfo">开始导出</el-button>
@@ -243,6 +264,7 @@ import { QUESTION_API } from "@/constants/constants";
 export default {
   data() {
     return {
+      templateList: [],
       courseLoading: false,
       formSearch: {
         courseId: "",
@@ -263,7 +285,8 @@ export default {
         id: "",
         courseCode: "",
         courseName: "",
-        exportContentList: [],
+        templateId: "",
+        exportContent: "",
         seqMode: "MODE1",
       },
     };
@@ -288,8 +311,8 @@ export default {
     },
     showSeqMode() {
       return (
-        this.exportModel.exportContentList.includes("PAPER") ||
-        this.exportModel.exportContentList.includes("ANSWER")
+        this.exportModel.exportContent == "PAPER" ||
+        this.exportModel.exportContent == "ANSWER"
       );
     },
     ...mapState({ user: (state) => state.user }),
@@ -298,6 +321,27 @@ export default {
     this.initData();
   },
   methods: {
+    getTemplates(name) {
+      this.exportModel.templateId = "";
+      var url = QUESTION_API + "/exportTemplate/page/1/20";
+      let type;
+      if (this.exportModel.exportContent == "PAPER") {
+        type = "SYNTHESIZE_PAPER_EXPORT";
+      } else if (this.exportModel.exportContent == "ANSWER") {
+        type = "SYNTHESIZE_ANSWER_EXPORT";
+      } else {
+        return;
+      }
+      let params = {
+        rootOrgId: this.user.rootOrgId,
+        fileName: name,
+        enable: true,
+        type: type,
+      };
+      this.$httpWithMsg.get(url, { params: params }).then((response) => {
+        this.templateList = response.data.content;
+      });
+    },
     async getCourses(query) {
       this.courseLoading = true;
       query = query && query.trim();
@@ -376,7 +420,8 @@ export default {
       this.exportModel.id = row.id;
       this.exportModel.courseCode = row.courseCode;
       this.exportModel.courseName = row.courseName;
-      this.exportModel.exportContentList = [];
+      this.exportModel.exportContent = "";
+      this.exportModel.templateId = "";
 
       this.exportDialog = true;
     },
@@ -430,31 +475,46 @@ export default {
         id: "",
         courseCode: "",
         courseName: "",
-        exportContentList: [],
+        exportContent: "",
         seqMode: "MODE1",
       };
       this.exportDialog = true;
     },
     //导出试卷,答案,机考数据包
     async exportPaperInfo() {
-      if (!this.exportModel.exportContentList.length) {
+      if (
+        !this.exportModel.exportContent ||
+        this.exportModel.exportContent == ""
+      ) {
         this.$notify({
           message: "请选择导出内容",
           type: "error",
         });
         return false;
       }
+      let element = this.exportModel.exportContent;
+      if (
+        (element == "PAPER" || element == "ANSWER") &&
+        !this.exportModel.templateId
+      ) {
+        this.$notify({
+          message: "请选择模板",
+          type: "error",
+        });
+        return false;
+      }
 
       let synthesizePaperIds =
         this.selectedPaperIds.join() || this.exportModel.id;
-      const exportContentList = this.exportModel.exportContentList.join();
+      const exportContent = this.exportModel.exportContent;
       this.exportDialog = false;
 
       const res = await downloadByApi(() => {
         return synthesizePaperDownloadApi({
-          exportContentList,
+          exportContent,
           synthesizePaperIds,
           seqMode: this.exportModel.seqMode,
+          templateId: this.exportModel.templateId,
         });
       }).catch((e) => {
         this.$message.error(e || "下载失败,请重新尝试!");