|
@@ -33,7 +33,10 @@
|
|
|
</el-button>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="考试开始时间:">
|
|
|
- <p class="form-item-content">{{ modalForm.beginTime }}</p>
|
|
|
+ <p class="form-item-content" v-if="modalForm.beginTime">
|
|
|
+ {{ modalForm.beginTime }}
|
|
|
+ </p>
|
|
|
+ <p class="color-info" v-else>请上传考务文件</p>
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="printTime" label="打印时间:">
|
|
|
<el-date-picker
|
|
@@ -44,12 +47,44 @@
|
|
|
>
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item prop="printContent" label="打印内容:">
|
|
|
+ <el-checkbox
|
|
|
+ v-model="printContentCheckAll"
|
|
|
+ @change="handleCheckAllChange"
|
|
|
+ >全选</el-checkbox
|
|
|
+ >
|
|
|
+ <el-checkbox-group
|
|
|
+ v-model="modalForm.printContent"
|
|
|
+ @change="handleCheckedChange"
|
|
|
+ >
|
|
|
+ <el-checkbox
|
|
|
+ v-for="(val, key) in PRINT_CONTENT_TYPE"
|
|
|
+ :label="key"
|
|
|
+ :key="key"
|
|
|
+ >{{ val }}</el-checkbox
|
|
|
+ >
|
|
|
+ </el-checkbox-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item
|
|
|
+ prop="review"
|
|
|
+ label="试卷内容是否复核:"
|
|
|
+ v-if="printContentIncludeExamPaper"
|
|
|
+ >
|
|
|
+ <el-radio-group v-model="modalForm.review">
|
|
|
+ <el-radio
|
|
|
+ v-for="(val, key) in BOOLEAN_TYPE"
|
|
|
+ :key="key"
|
|
|
+ :label="key * 1"
|
|
|
+ >{{ val }}</el-radio
|
|
|
+ >
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item prop="backup" label="备用方式:">
|
|
|
<el-radio-group v-model="modalForm.backup">
|
|
|
<el-radio
|
|
|
v-for="(val, key) in RESERVE_TYPE"
|
|
|
:key="key"
|
|
|
- :label="key"
|
|
|
+ :label="key * 1"
|
|
|
>{{ val }}</el-radio
|
|
|
>
|
|
|
</el-radio-group>
|
|
@@ -131,7 +166,11 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { RESERVE_TYPE } from "@/constants/enumerate";
|
|
|
+import {
|
|
|
+ RESERVE_TYPE,
|
|
|
+ BOOLEAN_TYPE,
|
|
|
+ PRINT_CONTENT_TYPE
|
|
|
+} from "@/constants/enumerate";
|
|
|
import { uploadExam, examDetail } from "../api";
|
|
|
import BusinessData from "../components/BusinessData";
|
|
|
import UploadFileView from "../components/UploadFileView";
|
|
@@ -154,6 +193,18 @@ export default {
|
|
|
callback();
|
|
|
}
|
|
|
};
|
|
|
+ const printContentValidator = (rule, value, callback) => {
|
|
|
+ if (!value.length) {
|
|
|
+ callback(new Error("请选择打印内容"));
|
|
|
+ } else if (
|
|
|
+ !value.includes("examPaper") &&
|
|
|
+ !value.includes("answerSheet")
|
|
|
+ ) {
|
|
|
+ callback(new Error("试卷和答题卡必须选择一个"));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
return {
|
|
|
examId: this.$route.params.examId,
|
|
@@ -161,7 +212,9 @@ export default {
|
|
|
examName: "",
|
|
|
beginTime: "",
|
|
|
printTime: "",
|
|
|
- backup: "0",
|
|
|
+ printContent: [],
|
|
|
+ backup: 0,
|
|
|
+ review: 0,
|
|
|
backupCard: "",
|
|
|
examCodeTemp: "",
|
|
|
attachmentId: ""
|
|
@@ -195,6 +248,13 @@ export default {
|
|
|
trigger: "change"
|
|
|
}
|
|
|
],
|
|
|
+ review: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "请选择是否复核",
|
|
|
+ trigger: "change"
|
|
|
+ }
|
|
|
+ ],
|
|
|
backupCard: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -202,6 +262,12 @@ export default {
|
|
|
trigger: "change"
|
|
|
}
|
|
|
],
|
|
|
+ printContent: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ validator: printContentValidator
|
|
|
+ }
|
|
|
+ ],
|
|
|
teacher: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -210,6 +276,10 @@ export default {
|
|
|
]
|
|
|
},
|
|
|
RESERVE_TYPE,
|
|
|
+ BOOLEAN_TYPE,
|
|
|
+ PRINT_CONTENT_TYPE,
|
|
|
+ printContentAll: Object.keys(PRINT_CONTENT_TYPE),
|
|
|
+ printContentCheckAll: false,
|
|
|
courses: [],
|
|
|
isSubmit: false,
|
|
|
downloadUrl: this.GLOBAL.domain + "/temps/考务导入模版.xlsx",
|
|
@@ -223,6 +293,9 @@ export default {
|
|
|
computed: {
|
|
|
isEdit() {
|
|
|
return !!this.examId;
|
|
|
+ },
|
|
|
+ printContentIncludeExamPaper() {
|
|
|
+ return this.modalForm.printContent.includes("examPaper");
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
@@ -235,8 +308,11 @@ export default {
|
|
|
async getExamDetail() {
|
|
|
const data = await examDetail(this.examId);
|
|
|
this.modalForm = Object.assign({}, this.modalForm, data.tcPExam);
|
|
|
- this.modalForm.backup += "";
|
|
|
+ this.modalForm.printContent = this.printContentAll.filter(
|
|
|
+ key => data.tcPExam[key]
|
|
|
+ );
|
|
|
this.courses = data.userCourses;
|
|
|
+ this.handleCheckedChange();
|
|
|
this.$refs.UploadFileView.setAttachmentName(
|
|
|
`${data.tcPAttachment.name}${data.tcPAttachment.type}`
|
|
|
);
|
|
@@ -253,14 +329,29 @@ export default {
|
|
|
checkTeacherSelected() {
|
|
|
return !this.courses.some(course => !course.teacherId);
|
|
|
},
|
|
|
+ handleCheckAllChange(val) {
|
|
|
+ this.modalForm.printContent = val ? this.printContentAll : [];
|
|
|
+ },
|
|
|
+ handleCheckedChange() {
|
|
|
+ this.printContentCheckAll =
|
|
|
+ this.modalForm.printContent.length === this.printContentAll.length;
|
|
|
+ },
|
|
|
async save() {
|
|
|
- const valid = await this.$refs["ModalForm"].validate().catch(() => {});
|
|
|
- if (!valid) return;
|
|
|
+ // const valid = await this.$refs["ModalForm"].validate().catch(() => {});
|
|
|
+ // if (!valid) return;
|
|
|
|
|
|
if (this.isSubmit) return;
|
|
|
this.isSubmit = true;
|
|
|
+ let tcPExam = {
|
|
|
+ ...this.modalForm
|
|
|
+ };
|
|
|
+ delete tcPExam.printContent;
|
|
|
+ this.printContentAll.map(key => {
|
|
|
+ tcPExam[key] = this.modalForm.printContent.includes(key) ? 1 : 0;
|
|
|
+ });
|
|
|
+
|
|
|
const datas = {
|
|
|
- tcPExam: this.modalForm,
|
|
|
+ tcPExam,
|
|
|
tcPExamCourseUsers: this.courses.map(course => {
|
|
|
return {
|
|
|
courseName: course.courseName,
|
|
@@ -296,7 +387,7 @@ export default {
|
|
|
this.$refs["ModalForm"].validateField("examCodeTemp");
|
|
|
|
|
|
this.courses = data.userCourses.map(item => {
|
|
|
- item.teacherId = "";
|
|
|
+ item.teacherId = item.users.length === 1 ? item.users[0].id + "" : "";
|
|
|
return item;
|
|
|
});
|
|
|
}
|