|
@@ -1,93 +1,108 @@
|
|
|
<template>
|
|
|
- <el-dialog
|
|
|
- custom-class="side-dialog"
|
|
|
- :visible.sync="modalIsShow"
|
|
|
- title="试题导入"
|
|
|
- width="700px"
|
|
|
- :modal="false"
|
|
|
- :close-on-click-modal="false"
|
|
|
- :close-on-press-escape="false"
|
|
|
- append-to-body
|
|
|
- destroy-on-close
|
|
|
- @open="visibleChange"
|
|
|
- >
|
|
|
- <el-form
|
|
|
- ref="modalFormComp"
|
|
|
- :model="modalForm"
|
|
|
- :rules="rules"
|
|
|
- label-width="120px"
|
|
|
+ <div>
|
|
|
+ <el-dialog
|
|
|
+ custom-class="side-dialog"
|
|
|
+ :visible.sync="modalIsShow"
|
|
|
+ title="试题导入"
|
|
|
+ width="700px"
|
|
|
+ :modal="false"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :close-on-press-escape="false"
|
|
|
+ append-to-body
|
|
|
+ destroy-on-close
|
|
|
+ @open="visibleChange"
|
|
|
>
|
|
|
- <el-form-item label="导入类型">
|
|
|
- <el-radio-group v-model="importType" @change="importTypeChange">
|
|
|
- <el-radio
|
|
|
- v-for="item in importTypeList"
|
|
|
- :key="item.name"
|
|
|
- :label="item.name"
|
|
|
- >{{ item.name }}</el-radio
|
|
|
- >
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="importType !== 'zip'"
|
|
|
- prop="courseId"
|
|
|
- label="课程名称"
|
|
|
- >
|
|
|
- <course-select v-model="modalForm.courseId" @change="courseChange">
|
|
|
- </course-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-if="importType !== 'excel'" 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.useOriginalPaper && importType === 'word'"
|
|
|
- prop="name"
|
|
|
- label="试卷名称"
|
|
|
+ <el-form
|
|
|
+ ref="modalFormComp"
|
|
|
+ :model="modalForm"
|
|
|
+ :rules="rules"
|
|
|
+ label-width="120px"
|
|
|
>
|
|
|
- <el-input
|
|
|
- v-model="modalForm.name"
|
|
|
- placeholder="请输入试卷名称"
|
|
|
- clearable
|
|
|
+ <el-form-item label="导入类型">
|
|
|
+ <el-radio-group v-model="importType" @change="importTypeChange">
|
|
|
+ <el-radio
|
|
|
+ v-for="item in importTypeList"
|
|
|
+ :key="item.name"
|
|
|
+ :label="item.name"
|
|
|
+ >{{ item.name }}</el-radio
|
|
|
+ >
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ v-if="importType !== 'zip'"
|
|
|
+ prop="courseId"
|
|
|
+ label="课程名称"
|
|
|
>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item v-if="modalForm.useOriginalPaper" label="总分校验">
|
|
|
- <el-radio-group v-model="modalForm.checkTotalScore">
|
|
|
- <el-radio :label="true">开启</el-radio>
|
|
|
- <el-radio :label="false">关闭</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="modalForm.checkTotalScore && modalForm.useOriginalPaper"
|
|
|
- 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="importFileTypes"
|
|
|
- :template-url="templateUrl"
|
|
|
- only-fetch-file
|
|
|
- @file-change="fileChange"
|
|
|
- @confirm="confirm"
|
|
|
- ></import-file>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
+ <course-select v-model="modalForm.courseId" @change="courseChange">
|
|
|
+ </course-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="importType !== 'excel'" 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.useOriginalPaper && importType === 'word'"
|
|
|
+ prop="name"
|
|
|
+ label="试卷名称"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="modalForm.name"
|
|
|
+ placeholder="请输入试卷名称"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="modalForm.useOriginalPaper" label="总分校验">
|
|
|
+ <el-radio-group v-model="modalForm.checkTotalScore">
|
|
|
+ <el-radio :label="true">开启</el-radio>
|
|
|
+ <el-radio :label="false">关闭</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ v-if="modalForm.checkTotalScore && modalForm.useOriginalPaper"
|
|
|
+ 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="importFileTypes"
|
|
|
+ :template-url="templateUrl"
|
|
|
+ only-fetch-file
|
|
|
+ @file-change="fileChange"
|
|
|
+ @confirm="confirm"
|
|
|
+ ></import-file>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <div slot="footer"></div>
|
|
|
+ </el-dialog>
|
|
|
|
|
|
- <div slot="footer"></div>
|
|
|
- </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ :visible.sync="errorMsgModalIsShow"
|
|
|
+ title="错误信息"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :close-on-press-escape="false"
|
|
|
+ append-to-body
|
|
|
+ @closed="excelErrorMsgs = []"
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <p v-for="(cont, index) in excelErrorMsgs" :key="index">{{ cont }}</p>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
@@ -169,6 +184,8 @@ export default {
|
|
|
},
|
|
|
fileData: {},
|
|
|
templateUrl: "",
|
|
|
+ errorMsgModalIsShow: false,
|
|
|
+ excelErrorMsgs: [],
|
|
|
loading: false,
|
|
|
};
|
|
|
},
|
|
@@ -260,7 +277,12 @@ export default {
|
|
|
|
|
|
const res = await uploadApi(formData, {
|
|
|
md5: this.fileData.md5,
|
|
|
- }).catch(() => {});
|
|
|
+ }).catch((error) => {
|
|
|
+ if (error.response?.data.desc) {
|
|
|
+ this.errorMsgModalIsShow = true;
|
|
|
+ this.excelErrorMsgs = error.response.data.desc.split("\n");
|
|
|
+ }
|
|
|
+ });
|
|
|
this.loading = false;
|
|
|
this.$refs.ImportFile.setLoading(false);
|
|
|
|