|
|
@@ -4,10 +4,10 @@
|
|
|
<div class="page-container-top-max-big-box">
|
|
|
<p class="top-1-p">补考安排</p>
|
|
|
<p class="top-2-p" @click="backPage()">返回</p>
|
|
|
- <p class="top-4-p" @click="submitButton()">保存</p>
|
|
|
+ <p class="top-4-p" @click="submitButton()" v-if="makeupStarted == 0">保存</p>
|
|
|
</div>
|
|
|
<div class="content-box">
|
|
|
- <div class="max-add-form-box">
|
|
|
+ <div class="max-add-form-box" v-if="makeupStarted == 0">
|
|
|
<el-form class="add-form-box" :model="newData" ref="form" label-width="140px" :rules="rules">
|
|
|
<div class="form-flex-box">
|
|
|
<el-form-item label="复用原试卷" prop="reuseOriginalPaper">
|
|
|
@@ -53,6 +53,25 @@
|
|
|
>
|
|
|
</el-input-number>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="考试时长" prop="answerDuration">
|
|
|
+ <div class="stepper-row">
|
|
|
+ <div class="number-stepper">
|
|
|
+ <div class="number-stepper">
|
|
|
+ <el-input-number
|
|
|
+ class="form-input-number"
|
|
|
+ style="width:160px"
|
|
|
+ :min="0"
|
|
|
+ :max="9999"
|
|
|
+ :step="1" :precision="0" step-strictly
|
|
|
+ v-model="newData.answerDuration"
|
|
|
+ >
|
|
|
+ </el-input-number>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span class="unit-text">分钟</span>
|
|
|
+ <span class="tip-text" style="margin-left:12px;">限制答卷最大时长</span>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
@@ -170,9 +189,10 @@
|
|
|
import examDetails from '@/views/safetyEducationExaminationNew/components/examDetails.vue'
|
|
|
import selectTestPaper from './selectTestPaper.vue'
|
|
|
import {
|
|
|
- systemUserGetAcademicYear,
|
|
|
+ systemUserGetAcademicYear,examElExamMakeupResults,
|
|
|
examElExamMakeupAdd,examElExamMakeupCandidates,
|
|
|
- examElDisciplineTypeList, systemDeptCurrentDept
|
|
|
+ examElDisciplineTypeList, systemDeptCurrentDept,
|
|
|
+ examElExamDetail
|
|
|
} from '@/api/safetyEducationExaminationNew/index'
|
|
|
|
|
|
export default {
|
|
|
@@ -185,6 +205,13 @@
|
|
|
propsData: {}
|
|
|
},
|
|
|
data() {
|
|
|
+ const validateData = (rule, value, callback) => {
|
|
|
+ if (value == 0) {
|
|
|
+ callback(new Error('总分数不能为0'))
|
|
|
+ } else {
|
|
|
+ callback()
|
|
|
+ }
|
|
|
+ }
|
|
|
return {
|
|
|
//日期选择范围限制
|
|
|
pickerOptions: {
|
|
|
@@ -196,6 +223,7 @@
|
|
|
parentExamId:null,
|
|
|
reuseOriginalPaper: 1,
|
|
|
attemptLimit: 1,
|
|
|
+ answerDuration: 0,
|
|
|
paperId: null,
|
|
|
paperName: '',
|
|
|
examTimeRange: [],
|
|
|
@@ -209,6 +237,10 @@
|
|
|
{ required: true, message: "请选择可补考次数", trigger: "blur" },
|
|
|
{ required: true, message: "请选择可补考次数", validator: this.spaceJudgment, trigger: "blur" }
|
|
|
],
|
|
|
+ answerDuration: [
|
|
|
+ { required: true, message: '请选择考试时长', trigger: 'change' },
|
|
|
+ { validator: validateData, trigger: 'blur' }
|
|
|
+ ],
|
|
|
examTimeRange: [
|
|
|
{ required: true, message: "请选择补考时间", trigger: "blur" },
|
|
|
{ required: true, message: "请选择补考时间", validator: this.spaceJudgment, trigger: "blur" }
|
|
|
@@ -234,20 +266,39 @@
|
|
|
//弹窗相关
|
|
|
drawerTitle: '',
|
|
|
drawerType: '',
|
|
|
- drawer: false
|
|
|
+ drawer: false,
|
|
|
+ //补考是否已开始 0未开始 1开始
|
|
|
+ makeupStarted:null,
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
|
|
|
},
|
|
|
mounted() {
|
|
|
+ this.$set(this,'makeupStarted',this.propsData.makeupStarted);
|
|
|
+ if(this.propsData.makeupExamId&&this.propsData.makeupStarted==0){
|
|
|
+ this.examElExamDetail();
|
|
|
+ }
|
|
|
this.$set(this.newData,'parentExamId',this.propsData.id);
|
|
|
- this.getList()
|
|
|
this.examElDisciplineTypeList()
|
|
|
this.systemDeptCurrentDept()
|
|
|
this.systemUserGetAcademicYear()
|
|
|
+ this.getList()
|
|
|
},
|
|
|
methods: {
|
|
|
+ //补考详情
|
|
|
+ examElExamDetail(){
|
|
|
+ examElExamDetail({id:this.propsData.id}).then(response => {
|
|
|
+ this.$set(this,'newData',{
|
|
|
+ reuseOriginalPaper:response.data.reuseOriginalPaper,
|
|
|
+ paperName:response.data.paperName,
|
|
|
+ paperId:response.data.paperId,
|
|
|
+ examTimeRange:[response.data.startTime.replace("T", "0"),response.data.endTime.replace("T", "0")],
|
|
|
+ attemptLimit:response.data.attemptLimit,
|
|
|
+ answerDuration:response.data.answerDuration,
|
|
|
+ });
|
|
|
+ })
|
|
|
+ },
|
|
|
//导出
|
|
|
exportButton(){
|
|
|
let self = this;
|
|
|
@@ -300,6 +351,7 @@
|
|
|
reuseOriginalPaper:this.newData.reuseOriginalPaper,
|
|
|
paperId:this.newData.reuseOriginalPaper?this.newData.paperId:'',
|
|
|
attemptLimit:this.newData.attemptLimit,
|
|
|
+ answerDuration:this.newData.answerDuration,
|
|
|
startTime:this.newData.examTimeRange[0].replace(" ", "T"),
|
|
|
endTime:this.newData.examTimeRange[1].replace(" ", "T"),
|
|
|
}
|
|
|
@@ -334,10 +386,17 @@
|
|
|
getList() {
|
|
|
let obj = JSON.parse(JSON.stringify(this.queryParams))
|
|
|
obj.examId = this.newData.parentExamId
|
|
|
- examElExamMakeupCandidates(obj).then(response => {
|
|
|
- this.$set(this, 'dataList', response.data.records)
|
|
|
- this.$set(this, 'total', response.data.total)
|
|
|
- })
|
|
|
+ if(this.makeupStarted == 0){
|
|
|
+ examElExamMakeupCandidates(obj).then(response => {
|
|
|
+ this.$set(this, 'dataList', response.data.records)
|
|
|
+ this.$set(this, 'total', response.data.total)
|
|
|
+ })
|
|
|
+ }else if (this.makeupStarted == 1){
|
|
|
+ examElExamMakeupResults(obj).then(response => {
|
|
|
+ this.$set(this, 'dataList', response.data.records)
|
|
|
+ this.$set(this, 'total', response.data.total)
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
//查询全部专业类别
|
|
|
examElDisciplineTypeList() {
|
|
|
@@ -387,6 +446,51 @@
|
|
|
|
|
|
.form-flex-box {
|
|
|
display: flex;
|
|
|
+
|
|
|
+ .stepper-row {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .number-stepper {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ border-radius: 4px;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ .stepper-btn {
|
|
|
+ width: 32px;
|
|
|
+ height: 32px;
|
|
|
+ background: #f5f7fa;
|
|
|
+ border: none;
|
|
|
+ cursor: pointer;
|
|
|
+ font-size: 16px;
|
|
|
+ color: #333;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ background: #e6f0fe;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .stepper-val {
|
|
|
+ min-width: 44px;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 14px;
|
|
|
+ padding: 0 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .unit-text {
|
|
|
+ margin-left: 8px;
|
|
|
+ color: #333;
|
|
|
+ white-space: nowrap;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tip-text {
|
|
|
+ color: #999;
|
|
|
+ font-size: 13px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.checkButton-p {
|