فهرست منبع

试题批量导入

zhangjie 2 سال پیش
والد
کامیت
d7f624bcc0
2فایلهای تغییر یافته به همراه62 افزوده شده و 19 حذف شده
  1. 1 1
      src/modules/question/api.js
  2. 61 18
      src/modules/question/components/QuestionImportDialog.vue

+ 1 - 1
src/modules/question/api.js

@@ -70,7 +70,7 @@ export function copyQuestionApi(questionIdList, targetClassifyId) {
   );
 }
 export function importQuestionApi(data, headData) {
-  return $httpWithMsg.post(`${QUESTION_API}/question/import`, data, {
+  return $httpWithMsg.post(`${QUESTION_API}/import/paper`, data, {
     headers: headData,
   });
 }

+ 61 - 18
src/modules/question/components/QuestionImportDialog.vue

@@ -18,42 +18,57 @@
       label-width="120px"
     >
       <el-form-item label="导入类型">
-        <el-radio-group v-model="modalForm.importType">
-          <el-radio :label="['docx']">word</el-radio>
-          <el-radio :label="['zip']">zip</el-radio>
+        <el-radio-group v-model="importType">
+          <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="导入类型">
+      <el-form-item
+        v-if="importType === 'docx'"
+        prop="courseId"
+        label="课程名称"
+      >
         <course-select v-model="modalForm.courseId"> </course-select>
       </el-form-item>
-      <el-form-item label="是否使用原卷">
-        <el-radio-group v-model="modalForm.userPaper">
+      <el-form-item v-if="importType === 'docx'" label="是否使用原卷">
+        <el-radio-group v-model="modalForm.useOriginalPaper">
           <el-radio :label="true">是</el-radio>
           <el-radio :label="false">否</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item
-        v-if="modalForm.userPaper"
-        prop="paperName"
+        v-if="modalForm.useOriginalPaper && importType === 'docx'"
+        prop="name"
         label="试卷名称"
       >
         <el-input
-          v-model="modalForm.paperName"
+          v-model="modalForm.name"
           placeholder="请输入试卷名称"
           clearable
         >
         </el-input>
       </el-form-item>
-      <el-form-item v-if="modalForm.userPaper" label="总分校验">
-        <el-radio-group v-model="modalForm.scoreCheck">
+      <el-form-item label="总分校验">
+        <el-radio-group v-model="scoreCheck">
           <el-radio :label="true">开启</el-radio>
           <el-radio :label="false">关闭</el-radio>
         </el-radio-group>
       </el-form-item>
+      <el-form-item v-if="scoreCheck" label="试卷总分" prop="totalScore">
+        <el-input-number
+          v-model="modalForm.totalScore"
+          style="width: 125px"
+          :min="1"
+          :max="1000"
+          :step="1"
+          step-strictly
+          :controls="false"
+        ></el-input-number
+      ></el-form-item>
       <el-form-item prop="file">
         <import-file
           ref="ImportFile"
-          :format="modalForm.importType"
+          :format="[importType]"
           :template-url="templateUrl"
           only-fetch-file
           @file-change="fileChange"
@@ -73,10 +88,10 @@ import { QUESTION_API } from "@/constants/constants";
 import { mapState } from "vuex";
 
 const initModalForm = {
-  importType: ["docx"],
-  courseId: "",
-  userPaper: false,
-  scoreCheck: false,
+  courseId: null,
+  name: "",
+  useOriginalPaper: false,
+  totalScore: undefined,
 };
 
 export default {
@@ -85,6 +100,8 @@ export default {
   data() {
     return {
       modalIsShow: false,
+      scoreCheck: false,
+      importType: "docx",
       modalForm: {
         ...initModalForm,
       },
@@ -96,13 +113,20 @@ export default {
             trigger: "change",
           },
         ],
-        paperName: [
+        name: [
           {
             required: true,
             message: "请输入试卷名称",
             trigger: "change",
           },
         ],
+        totalScore: [
+          {
+            required: true,
+            message: "请输入试卷总分",
+            trigger: "change",
+          },
+        ],
         file: [
           {
             validate: (rule, value, callback) => {
@@ -123,8 +147,27 @@ export default {
   computed: {
     ...mapState({ user: (state) => state.user }),
   },
+  watch: {
+    "modalForm.useOriginalPaper": {
+      handler(val) {
+        if (!val) {
+          this.modalForm.name = "";
+        }
+      },
+    },
+    scoreCheck(val) {
+      if (!val) {
+        this.modalForm.totalScore = undefined;
+      }
+    },
+    importType(val) {
+      if (val === "zip") {
+        this.modalForm.courseId = null;
+      }
+    },
+  },
   mounted() {
-    this.templateUrl = `${QUESTION_API}/import/paper?$key=${this.user.key}&$token=${this.user.token}`;
+    this.templateUrl = `${QUESTION_API}/import/paper/template?$key=${this.user.key}&$token=${this.user.token}`;
   },
   methods: {
     visibleChange() {