Przeglądaj źródła

"导入任务已成功启动" 提示

Michael Wang 4 lat temu
rodzic
commit
92facaa82b

+ 27 - 0
src/api/examwork-task.js

@@ -7,6 +7,33 @@ export function searchTasks({ type = "", pageNumber = 1, pageSize = 10 }) {
   return httpApp.post("/api/admin/task/query?" + object2QueryString(data));
 }
 
+export function importPaper({
+  examId,
+  processPaper,
+  processAnswer,
+  encryptMode = "auto",
+  objectiveShuffle = "",
+  optionShuffle = "",
+  audioPlayCount = "",
+  fileName,
+  file,
+  md5,
+}) {
+  const form = new FormData();
+  form.append("examId", examId);
+  form.append("processPaper", processPaper);
+  form.append("processAnswer", processAnswer);
+  form.append("encryptMode", encryptMode);
+  form.append("objectiveShuffle", objectiveShuffle);
+  form.append("optionShuffle", optionShuffle);
+  form.append("audioPlayCount", audioPlayCount);
+  form.append("fileName", fileName);
+  form.append("file", file);
+  return httpApp.post("/api/admin/exam/paper/import", form, {
+    headers: { "Content-Type": "multipart/form-data", md5 },
+  });
+}
+
 export function importExamStudent({ examId, fileName, file, md5 }) {
   const form = new FormData();
   form.append("examId", examId);

+ 16 - 11
src/features/examwork/CourseManagement/CourseManagement.vue

@@ -17,7 +17,7 @@
         />
       </el-form-item>
       <el-button @click="searchForm">查询</el-button>
-      <el-button>导入</el-button>
+      <el-button @click="importPaper">导入</el-button>
     </el-form>
 
     <el-table :data="tableData" stripe style="width: 100%;">
@@ -74,24 +74,23 @@
       />
     </div>
 
-    <!-- <ActivityManagementDialog
+    <PaperImportDialog
       ref="theDialog"
-      :examId="examId"
-      :activity="selectedActivity"
+      :examId="form.examId"
       @reload="searchForm"
-    /> -->
+    />
   </div>
 </template>
 
 <script>
 import { searchCourses } from "@/api/examwork-course";
-// import ActivityManagementDialog from "./ActivityManagementDialog";
+import PaperImportDialog from "./PaperImportDialog";
 
 export default {
   name: "CourseManagement",
-  // components: {
-  //   ActivityManagementDialog,
-  // },
+  components: {
+    PaperImportDialog,
+  },
   computed: {},
   data() {
     return {
@@ -139,8 +138,14 @@ export default {
       this.currentPage = 1;
       this.searchForm();
     },
-    add() {
-      this.selectedActivity = {};
+    async importPaper() {
+      try {
+        const valid = await this.$refs.form.validate();
+        if (!valid) return;
+      } catch (error) {
+        console.log(error);
+        return;
+      }
       this.$refs.theDialog.openDialog();
     },
     edit(activity) {

+ 124 - 0
src/features/examwork/CourseManagement/PaperImportDialog.vue

@@ -0,0 +1,124 @@
+<template>
+  <el-dialog
+    ref="dialog"
+    title="导入试卷"
+    width="550px"
+    :visible.sync="visible"
+    @close="closeDialog"
+  >
+    <el-form
+      :model="form"
+      ref="form"
+      :rules="rules"
+      label-position="right"
+      label-width="120px"
+    >
+      <el-row>
+        <el-form-item label="选择文件">
+          <input @change="selectFile" type="file" /> *系统支持数据包
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item label="试卷包解析内容">
+          <el-checkbox v-model="form.processPaper">试卷</el-checkbox>
+          <el-checkbox v-model="form.processAnswer">答案</el-checkbox>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item label="音频播放次数">
+          <el-input-number v-model.trim="form.audioPlayCount"></el-input-number>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item label="客观题小题乱序" prop="objectiveShuffle">
+          <el-radio-group class="pull_right_sm" v-model="form.objectiveShuffle">
+            <el-radio :label="true">启用</el-radio>
+            <el-radio :label="false">禁用</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item label="客观题选项乱序" prop="optionShuffle">
+          <el-radio-group class="pull_right_sm" v-model="form.optionShuffle">
+            <el-radio :label="true">启用</el-radio>
+            <el-radio :label="false">禁用</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-row>
+      <el-row class="d-flex justify-content-center">
+        <el-button type="primary" @click="submitForm">保 存</el-button>
+        <el-button @click="closeDialog">取 消</el-button>
+      </el-row>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script>
+import MD5 from "js-md5";
+import { importPaper } from "@/api/examwork-task";
+
+export default {
+  name: "PaperImportDialog",
+  props: {
+    examId: String,
+  },
+  data() {
+    return {
+      visible: false,
+      form: {},
+      rules: {},
+    };
+  },
+  watch: {
+    examId: {
+      immediate: true,
+      handler() {
+        this.form = {
+          processPaper: false,
+          processAnswer: false,
+          objectiveShuffle: false,
+          optionShuffle: false,
+          audioPlayCount: 0,
+          file: "",
+          fileName: "",
+        };
+      },
+    },
+  },
+  methods: {
+    openDialog() {
+      this.visible = true;
+    },
+    closeDialog() {
+      this.visible = false;
+    },
+    selectFile(e) {
+      this.form.file = e.target.files[0];
+      this.form.fileName = this.form.file?.name;
+    },
+    async submitForm() {
+      async function blobToArray(blob) {
+        return new Promise((resolve) => {
+          var reader = new FileReader();
+          reader.addEventListener("loadend", function () {
+            // reader.result contains the contents of blob as a typed array
+            resolve(reader.result);
+          });
+          reader.readAsArrayBuffer(blob);
+        });
+      }
+      const ab = await blobToArray(this.form.file);
+      const md5 = MD5(ab);
+
+      let data = this.form;
+
+      await importPaper({ ...data, examId: this.examId, md5 });
+      this.$emit("reload");
+      this.$notify({ title: "导入任务已成功启动", type: "success" });
+      this.closeDialog();
+    },
+  },
+};
+</script>
+
+<style></style>

+ 1 - 0
src/features/examwork/ExamStudentImport/ExamStudentImportDialog.vue

@@ -83,6 +83,7 @@ export default {
         md5,
       });
       this.$emit("reload");
+      this.$notify({ title: "导入任务已成功启动", type: "success" });
       this.closeDialog();
     },
   },

+ 1 - 0
src/features/examwork/InvigilateManagement/InvigilateImportDialog.vue

@@ -73,6 +73,7 @@ export default {
         md5,
       });
       this.$emit("reload");
+      this.$notify({ title: "导入任务已成功启动", type: "success" });
       this.closeDialog();
     },
   },

+ 1 - 1
src/features/examwork/InvigilateManagement/InvigilateManagement.vue

@@ -122,7 +122,7 @@ export default {
     },
     exportInvigilate() {
       exportInvigilate();
-      this.$notify({ title: "导出调用成功" });
+      this.$notify({ title: "导入任务已成功启动", type: "success" });
     },
   },
 };