Przeglądaj źródła

客观题标答导入

zhangjie 1 rok temu
rodzic
commit
07c356f653

+ 1 - 5
card/elements/fill-question/EditFillQuestion.vue

@@ -65,11 +65,7 @@
           :disabled="modalForm.isBoolean"
         ></el-input-number>
       </el-form-item>
-      <el-form-item
-        v-if="topicType === 'boolean'"
-        label="选项排列方向:"
-        required
-      >
+      <el-form-item v-if="modalForm.isBoolean" label="选项排列方向:" required>
         <el-radio-group v-model="modalForm.optionDirection" size="small">
           <el-radio-button
             v-for="(val, key) in DIRECTION_TYPE"

+ 5 - 0
src/modules/mark/api.js

@@ -70,6 +70,11 @@ export const markObjectiveQuestionList = (datas) => {
 export const markObjectiveQuestionSave = (datas) => {
   return $post("/api/admin/mark/question/objective/save", datas);
 };
+export const markObjectiveQuestionExport = (datas) => {
+  return $postParam("/api/admin/mark/question/objective/export", datas, {
+    responseType: "blob",
+  });
+};
 // subjective question answer
 export const markSubjectiveQuestionList = (datas) => {
   return $postParam("/api/admin/mark/question/subjective/get", datas);

+ 56 - 4
src/modules/mark/components/markParam/MarkParamObjectiveAnswer.vue

@@ -10,10 +10,16 @@
     </div>
 
     <div class="part-box part-box-pad">
-      <p class="tips-info mb-1">
-        <i class="el-icon-warning"></i> 客观题标答只能输入大写字母ABCDE...
-        ,判断题正确请输入A,错误输入B
-      </p>
+      <div class="box-justify mb-1">
+        <p class="tips-info">
+          <i class="el-icon-warning"></i> 客观题标答只能输入大写字母ABCDE...
+          ,判断题正确请输入A,错误输入B
+        </p>
+
+        <div>
+          <el-button type="primary" @click="toImport">导入标答</el-button>
+        </div>
+      </div>
       <el-table
         ref="TableList"
         :data="tableData"
@@ -151,6 +157,22 @@
       >
       <el-button @click="cancel">取消</el-button>
     </div>
+
+    <!-- ImportFile -->
+    <import-file
+      ref="ImportFile"
+      title="导入客观题标答"
+      :upload-url="uploadUrl"
+      :format="['xls', 'xlsx']"
+      :upload-data="{
+        examId: basicInfo.examId,
+        paperNumber: basicInfo.paperNumber,
+      }"
+      :download-handle="downloadHandle"
+      :download-filename="dfilename"
+      :auto-upload="false"
+      @upload-success="initData"
+    ></import-file>
   </div>
 </template>
 
@@ -159,12 +181,17 @@ import { QUESTION_SCORE_TYPE } from "@/constants/enumerate";
 import {
   markObjectiveQuestionList,
   markObjectiveQuestionSave,
+  markObjectiveQuestionExport,
 } from "../../api";
+import ImportFile from "@/components/ImportFile.vue";
+import { downloadByApi } from "@/plugins/download";
+
 import { mapState } from "vuex";
 import { omit } from "lodash";
 
 export default {
   name: "mark-param-objective-answer",
+  components: { ImportFile },
   data() {
     return {
       loading: false,
@@ -175,6 +202,10 @@ export default {
         NONE: "全对给分",
         ALL: "任选给分",
       },
+      // import
+      uploadUrl: "/api/admin/mark/question/objective/import",
+      dfilename: "客观题标答导入模板.xlsx",
+      downloading: false,
     };
   },
   computed: {
@@ -343,6 +374,27 @@ export default {
     cancel() {
       this.$emit("cancel");
     },
+    // toImport
+    async downloadHandle() {
+      if (this.downloading) return;
+      this.downloading = true;
+
+      const res = await downloadByApi(() => {
+        return markObjectiveQuestionExport({
+          examId: this.basicInfo.examId,
+          paperNumber: this.basicInfo.paperNumber,
+        });
+      }).catch((e) => {
+        this.$message.error(e || "下载失败,请重新尝试!");
+      });
+      this.downloading = false;
+
+      if (!res) return;
+      this.$message.success("下载成功!");
+    },
+    toImport() {
+      this.$refs.ImportFile.open();
+    },
   },
 };
 </script>