|
@@ -4,7 +4,7 @@
|
|
:visible.sync="modalIsShow"
|
|
:visible.sync="modalIsShow"
|
|
:title="title"
|
|
:title="title"
|
|
top="10px"
|
|
top="10px"
|
|
- width="500px"
|
|
|
|
|
|
+ width="540px"
|
|
:close-on-click-modal="false"
|
|
:close-on-click-modal="false"
|
|
:close-on-press-escape="false"
|
|
:close-on-press-escape="false"
|
|
append-to-body
|
|
append-to-body
|
|
@@ -16,7 +16,7 @@
|
|
:model="modalForm"
|
|
:model="modalForm"
|
|
:rules="rules"
|
|
:rules="rules"
|
|
:key="modalForm.id"
|
|
:key="modalForm.id"
|
|
- label-width="80px"
|
|
|
|
|
|
+ label-width="120px"
|
|
>
|
|
>
|
|
<el-form-item prop="semesterId" label="学期:">
|
|
<el-form-item prop="semesterId" label="学期:">
|
|
<semester-select
|
|
<semester-select
|
|
@@ -54,21 +54,21 @@
|
|
clearable
|
|
clearable
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="学院:">
|
|
|
|
|
|
+ <el-form-item prop="college" label="学院:">
|
|
<el-input
|
|
<el-input
|
|
v-model.trim="modalForm.college"
|
|
v-model.trim="modalForm.college"
|
|
placeholder="学院"
|
|
placeholder="学院"
|
|
clearable
|
|
clearable
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="专业:">
|
|
|
|
|
|
+ <el-form-item prop="major" label="专业:">
|
|
<el-input
|
|
<el-input
|
|
v-model.trim="modalForm.major"
|
|
v-model.trim="modalForm.major"
|
|
placeholder="专业"
|
|
placeholder="专业"
|
|
clearable
|
|
clearable
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="教学班:">
|
|
|
|
|
|
+ <el-form-item prop="teachClazz" label="教学班:">
|
|
<el-input
|
|
<el-input
|
|
v-model.trim="modalForm.teachClazz"
|
|
v-model.trim="modalForm.teachClazz"
|
|
placeholder="教学班"
|
|
placeholder="教学班"
|
|
@@ -82,6 +82,59 @@
|
|
clearable
|
|
clearable
|
|
></el-input>
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
+ <el-form-item prop="teacherCode" label="任课老师工号:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="modalForm.teacherCode"
|
|
|
|
+ placeholder="任课老师工号"
|
|
|
|
+ clearable
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item prop="paperNumber" label="试卷编号:">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="modalForm.paperNumber"
|
|
|
|
+ placeholder="任课老师"
|
|
|
|
+ clearable
|
|
|
|
+ @change="updateRules"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item prop="examStartTime" label="考试时间:">
|
|
|
|
+ <el-date-picker
|
|
|
|
+ v-model="createDate"
|
|
|
|
+ type="date"
|
|
|
|
+ value-format="timestamp"
|
|
|
|
+ placeholder="考试日期"
|
|
|
|
+ style="width: 150px; margin-bottom: 5px"
|
|
|
|
+ :editable="false"
|
|
|
|
+ @change="timeChange"
|
|
|
|
+ >
|
|
|
|
+ </el-date-picker>
|
|
|
|
+ <el-time-picker
|
|
|
|
+ is-range
|
|
|
|
+ v-model="createTime"
|
|
|
|
+ range-separator="至"
|
|
|
|
+ start-placeholder="考试开始时间"
|
|
|
|
+ end-placeholder="考试结束时间"
|
|
|
|
+ placeholder="选择时间范围"
|
|
|
|
+ value-format="timestamp"
|
|
|
|
+ :editable="false"
|
|
|
|
+ @change="timeChange"
|
|
|
|
+ >
|
|
|
|
+ </el-time-picker>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item prop="examPlace" label="考点(校区):">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="modalForm.examPlace"
|
|
|
|
+ placeholder="考点(校区)"
|
|
|
|
+ clearable
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item prop="examRoom" label="考场(考试教室):">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model.trim="modalForm.examRoom"
|
|
|
|
+ placeholder="考场(考试教室)"
|
|
|
|
+ clearable
|
|
|
|
+ ></el-input>
|
|
|
|
+ </el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div slot="footer">
|
|
<div slot="footer">
|
|
<el-button type="primary" :disabled="isSubmit" @click="submit"
|
|
<el-button type="primary" :disabled="isSubmit" @click="submit"
|
|
@@ -94,6 +147,7 @@
|
|
|
|
|
|
<script>
|
|
<script>
|
|
import { updateExamStudent } from "../api";
|
|
import { updateExamStudent } from "../api";
|
|
|
|
+import { getTimeDatestamp } from "@/plugins/utils";
|
|
|
|
|
|
const initModalForm = {
|
|
const initModalForm = {
|
|
id: null,
|
|
id: null,
|
|
@@ -107,6 +161,7 @@ const initModalForm = {
|
|
teachClazz: "",
|
|
teachClazz: "",
|
|
teacherCode: "",
|
|
teacherCode: "",
|
|
teacherName: "",
|
|
teacherName: "",
|
|
|
|
+ paperNumber: "",
|
|
examEndTime: "",
|
|
examEndTime: "",
|
|
examStartTime: "",
|
|
examStartTime: "",
|
|
examPlace: "",
|
|
examPlace: "",
|
|
@@ -136,7 +191,37 @@ export default {
|
|
modalIsShow: false,
|
|
modalIsShow: false,
|
|
isSubmit: false,
|
|
isSubmit: false,
|
|
modalForm: { ...initModalForm },
|
|
modalForm: { ...initModalForm },
|
|
- rules: {
|
|
|
|
|
|
+ rules: {},
|
|
|
|
+ // date-picker
|
|
|
|
+ curCreateTime: [],
|
|
|
|
+ createDate: "",
|
|
|
|
+ createTime: [],
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+ mounted() {
|
|
|
|
+ this.updateRules();
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ initData(val) {
|
|
|
|
+ if (val.id) {
|
|
|
|
+ this.modalForm = this.$objAssign(initModalForm, val);
|
|
|
|
+ const { examStartTime, examEndTime } = val;
|
|
|
|
+ if (examStartTime && examEndTime) {
|
|
|
|
+ this.createTime = [examStartTime, examEndTime];
|
|
|
|
+ this.createDate = getTimeDatestamp(examStartTime);
|
|
|
|
+ this.modalForm.examStartTime = this.createTime[0];
|
|
|
|
+ this.modalForm.examEndTime = this.createTime[1];
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.modalForm = { ...initModalForm };
|
|
|
|
+ this.initExamTime();
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ visibleChange() {
|
|
|
|
+ this.initData(this.instance);
|
|
|
|
+ },
|
|
|
|
+ updateRules() {
|
|
|
|
+ this.rules = {
|
|
semesterId: [
|
|
semesterId: [
|
|
{
|
|
{
|
|
required: true,
|
|
required: true,
|
|
@@ -177,61 +262,121 @@ export default {
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- pattern: /^[a-zA-Z0-9]{1,50}$/,
|
|
|
|
- message: "学号只能由数字、字母组成",
|
|
|
|
|
|
+ pattern: /^[a-zA-Z0-9-_]{1,30}$/,
|
|
|
|
+ message: "学号只能由数字、字母、短横线和下划线组成",
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- message: "学号不能超过50个字",
|
|
|
|
- max: 50,
|
|
|
|
|
|
+ message: "学号不能超过30个字",
|
|
|
|
+ max: 30,
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
college: [
|
|
college: [
|
|
{
|
|
{
|
|
- required: false,
|
|
|
|
- message: "学院不能超过50个字",
|
|
|
|
- max: 50,
|
|
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入学院",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "学院不能超过30个字",
|
|
|
|
+ max: 30,
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
major: [
|
|
major: [
|
|
{
|
|
{
|
|
- required: false,
|
|
|
|
- message: "专业不能超过50个字",
|
|
|
|
- max: 50,
|
|
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入专业",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "专业不能超过30个字",
|
|
|
|
+ max: 30,
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
teachClazz: [
|
|
teachClazz: [
|
|
{
|
|
{
|
|
- required: false,
|
|
|
|
- message: "教学班不能超过50个字",
|
|
|
|
- max: 50,
|
|
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入教学班",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "教学班不能超过30个字",
|
|
|
|
+ max: 30,
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
teacherName: [
|
|
teacherName: [
|
|
|
|
+ {
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入任课老师名称",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "任课老师名称不能超过30个字",
|
|
|
|
+ max: 30,
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ teacherCode: [
|
|
|
|
+ {
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入任课老师工号",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "任课老师工号不能超过30个字",
|
|
|
|
+ max: 30,
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ paperNumber: [
|
|
|
|
+ {
|
|
|
|
+ message: "只能由数字、字母、短横线和下划线组成",
|
|
|
|
+ pattern: /^[a-zA-Z0-9_].+$/,
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
{
|
|
{
|
|
required: false,
|
|
required: false,
|
|
- message: "任课老师不能超过50个字",
|
|
|
|
- max: 50,
|
|
|
|
|
|
+ message: "试卷编码不能超过30个字",
|
|
|
|
+ max: 30,
|
|
trigger: "change",
|
|
trigger: "change",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
- },
|
|
|
|
- };
|
|
|
|
- },
|
|
|
|
- methods: {
|
|
|
|
- initData(val) {
|
|
|
|
- if (val.id) {
|
|
|
|
- this.modalForm = this.$objAssign(initModalForm, val);
|
|
|
|
- } else {
|
|
|
|
- this.modalForm = { ...initModalForm };
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- visibleChange() {
|
|
|
|
- this.initData(this.instance);
|
|
|
|
|
|
+ examStartTime: [
|
|
|
|
+ {
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入考试时间",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ examPlace: [
|
|
|
|
+ {
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入考点(校区)",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "考点(校区)不能超过30个字",
|
|
|
|
+ max: 30,
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ examRoom: [
|
|
|
|
+ {
|
|
|
|
+ required: !!this.modalForm.paperNumber,
|
|
|
|
+ message: "请输入考场(考试教室)",
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ message: "考场(考试教室)不能超过30个字",
|
|
|
|
+ max: 30,
|
|
|
|
+ trigger: "change",
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ };
|
|
},
|
|
},
|
|
cancel() {
|
|
cancel() {
|
|
this.modalIsShow = false;
|
|
this.modalIsShow = false;
|
|
@@ -242,6 +387,25 @@ export default {
|
|
updateClazz() {
|
|
updateClazz() {
|
|
this.modalForm.clazzId = "";
|
|
this.modalForm.clazzId = "";
|
|
},
|
|
},
|
|
|
|
+ initExamTime() {
|
|
|
|
+ const curDate = getTimeDatestamp(Date.now());
|
|
|
|
+ const hour = 60 * 60 * 1000;
|
|
|
|
+ this.curCreateTime = [curDate + 8 * hour, curDate + 10 * hour];
|
|
|
|
+ this.createTime = [...this.curCreateTime];
|
|
|
|
+ },
|
|
|
|
+ timeChange() {
|
|
|
|
+ if (!this.createDate || !this.createTime) {
|
|
|
|
+ this.modalForm.examStartTime = null;
|
|
|
|
+ this.modalForm.examEndTime = null;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const curDate = getTimeDatestamp(this.createDate);
|
|
|
|
+ const timeDate = getTimeDatestamp(this.createTime[0]);
|
|
|
|
+
|
|
|
|
+ this.modalForm.examStartTime = curDate + this.createTime[0] - timeDate;
|
|
|
|
+ this.modalForm.examEndTime = curDate + this.createTime[1] - timeDate;
|
|
|
|
+ },
|
|
async submit() {
|
|
async submit() {
|
|
const valid = await this.$refs.modalFormComp.validate().catch(() => {});
|
|
const valid = await this.$refs.modalFormComp.validate().catch(() => {});
|
|
if (!valid) return;
|
|
if (!valid) return;
|