Commit 41146181 authored by 罗超's avatar 罗超

1

parent 8aea23e9
...@@ -71,8 +71,8 @@ ...@@ -71,8 +71,8 @@
</view> </view>
</view> </view>
</view> </view>
<view class="submitBox"> <view class="submitBox" v-if="ExamStatus === 1">
<view class="submit" @click="savePaper">立即提交</view> <view class="submit" @click="savePaper">立即提交</view>
</view> </view>
<van-toast id="van-toast" /> <van-toast id="van-toast" />
</view> </view>
...@@ -95,8 +95,9 @@ export default { ...@@ -95,8 +95,9 @@ export default {
props: { props: {
paperData: Object, paperData: Object,
ExamStuId: Number, ExamStuId: Number,
SubmitTimes: Number, SubmitTimes: Number,
StartTime: String, StartTime: String,
ExamStatus: Number,
}, },
setup(props, ctx) { setup(props, ctx) {
let Gid = uni.getStorageSync("userInfo").Id; let Gid = uni.getStorageSync("userInfo").Id;
...@@ -117,38 +118,40 @@ export default { ...@@ -117,38 +118,40 @@ export default {
back() { back() {
ctx.emit("hideAnswer"); ctx.emit("hideAnswer");
}, },
getNowTime(){ getNowTime() {
let dateTime let dateTime;
let yy = new Date().getFullYear() let yy = new Date().getFullYear();
let mm = new Date().getMonth() + 1 let mm = new Date().getMonth() + 1;
let dd = new Date().getDate() let dd = new Date().getDate();
let hh = new Date().getHours() let hh = new Date().getHours();
let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() let mf =
: new Date().getMinutes() < 10
new Date().getMinutes() ? "0" + new Date().getMinutes()
let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getMinutes();
: let ss =
new Date().getSeconds() new Date().getSeconds() < 10
dateTime = yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss; ? "0" + new Date().getSeconds()
return dateTime : new Date().getSeconds();
}, dateTime = yy + "-" + mm + "-" + dd + " " + hh + ":" + mf + ":" + ss;
return dateTime;
},
//交卷 //交卷
async savePaper() { async savePaper() {
let obj = JSON.parse(JSON.stringify(props.paperData.Paper)); let obj = JSON.parse(JSON.stringify(props.paperData.Paper));
delete obj.Group_Id; delete obj.Group_Id;
obj.Exam_Student_Id = props.ExamStuId; obj.Exam_Student_Id = props.ExamStuId;
let time1 = props.StartTime; let time1 = props.StartTime;
let time2 = methods.getNowTime(); let time2 = methods.getNowTime();
var d1 = new Date(time1); var d1 = new Date(time1);
var d2 = new Date(time2); var d2 = new Date(time2);
let TimeDis = parseInt(d2 - d1) / 1000 / 60; let TimeDis = parseInt(d2 - d1) / 1000 / 60;
if(TimeDis<props.SubmitTimes){ if (TimeDis < props.SubmitTimes) {
uni.showToast({ uni.showToast({
title: `开场不足${props.SubmitTimes}分钟禁止交卷哦~`, title: `开场不足${props.SubmitTimes}分钟禁止交卷哦~`,
icon: "none", icon: "none",
}); });
return return;
} }
let res = await submitPaper(obj); let res = await submitPaper(obj);
if (res) { if (res) {
if (res.Code == 1) { if (res.Code == 1) {
......
<template> <template>
<view :style="{ 'padding-top': `${statusBarHeight}px` }"> <view :style="{ 'padding-top': `${statusBarHeight}px` }">
<view style="height: 100rpx"></view> <view style="height: 100rpx"></view>
<van-nav-bar fixed> <van-nav-bar fixed>
<template #left> <template #left>
<van-icon name="cross" size="32rpx" @click="back" /> <van-icon name="cross" size="32rpx" @click="back" />
</template> </template>
<template #title> <template #title>
<view class="flex" style="justify-content: center" @click="start"> <view class="flex" style="justify-content: center" @click="start">
<van-image width="30rpx" height="30rpx" fit="cover" <van-image
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/clock.png" width="30rpx"
style="margin-right: 10rpx" /> height="30rpx"
<van-count-down :time="time" :auto-start="autoTimeStart" class="flex flex_center_center" fit="cover"
ref="countdown" @finish="examFinish" /> src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/clock.png"
</view> style="margin-right: 10rpx"
</template> />
</van-nav-bar> <van-count-down
<view class="exam-con" v-if="!isShowAnswer&&!isShowNotice"> :time="time"
<i class="iconfont icon-caidanzu answerSheet" style=" :auto-start="autoTimeStart"
class="flex flex_center_center"
ref="countdown"
@finish="examFinish"
/>
</view>
</template>
</van-nav-bar>
<view class="exam-con" v-if="!isShowAnswer && !isShowNotice">
<i
class="iconfont icon-caidanzu answerSheet"
style="
position: absolute; position: absolute;
right: 30rpx; right: 30rpx;
z-index: 999; z-index: 999;
margin-top: 26rpx; margin-top: 26rpx;
" :style="{ top: `calc(${statusBarHeight}px + 105rpx)` }" @click="showAnswerSheet"></i> "
<view v-for="(item, index) in peaperDetail.Paper.GroupList" :key="index"> :style="{ top: `calc(${statusBarHeight}px + 105rpx)` }"
<!-- 数字单选题 --> @click="showAnswerSheet"
<SingleChoiceNumber :startIndex="item.startIndex" :paperData="item" @getBeforeTopic="getBeforeTopic()" ></i>
@getAfterTopic="getAfterTopic()" @answerChange="getAnswerChange($event, index)" :sort="index" <view v-for="(item, index) in peaperDetail.Paper.GroupList" :key="index">
:sortTotal="peaperDetail.Paper.GroupList.length" :isLast="isLast" :isOperate="isOperate" <!-- 数字单选题 -->
:ExamStatus="ExamStatus" v-if=" <SingleChoiceNumber
:startIndex="item.startIndex"
:paperData="item"
@getBeforeTopic="getBeforeTopic()"
@getAfterTopic="getAfterTopic()"
@answerChange="getAnswerChange($event, index)"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isLast="isLast"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
v-if="
item.QuestionTypeKey === 'single-number' && index === changeIndex item.QuestionTypeKey === 'single-number' && index === changeIndex
" /> "
<!-- 多选题 --> />
<MultipleChoice :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 多选题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <MultipleChoice
@getBeforeTopic="getBeforeTopic()" @getAfterTopic="getAfterTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" :paperData="item"
v-if="item.QuestionTypeKey === 'multiple' && index === changeIndex" /> :isLast="isLast"
<!-- 单选题 --> :sort="index"
<SingleChoice :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" :sortTotal="peaperDetail.Paper.GroupList.length"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :isOperate="isOperate"
@getBeforeTopic="getBeforeTopic()" @getAfterTopic="getAfterTopic()" :ExamStatus="ExamStatus"
@answerChange="getAnswerChange($event, index)" @getBeforeTopic="getBeforeTopic()"
v-if="item.QuestionTypeKey === 'single' && index === changeIndex" /> @getAfterTopic="getAfterTopic()"
<!-- 听力题 --> @answerChange="getAnswerChange($event, index)"
<ListenTopic :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" v-if="item.QuestionTypeKey === 'multiple' && index === changeIndex"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" />
@getBeforeTopic="getBeforeTopic()" @getAfterTopic="getAfterTopic()" <!-- 单选题 -->
@answerChange="getAnswerChange($event, index)" <SingleChoice
v-if="item.QuestionTypeKey === 'listening' && index === changeIndex" /> :startIndex="item.startIndex"
<!-- 填空题 --> :paperData="item"
<FillInTheBlanks :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" :isLast="isLast"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :sort="index"
@getBeforeTopic="getBeforeTopic()" @getAfterTopic="getAfterTopic()" :sortTotal="peaperDetail.Paper.GroupList.length"
@answerChange="getAnswerChange($event, index)" :isOperate="isOperate"
v-if="item.QuestionTypeKey === 'fill-in' && index === changeIndex" /> :ExamStatus="ExamStatus"
@getBeforeTopic="getBeforeTopic()"
@getAfterTopic="getAfterTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'single' && index === changeIndex"
/>
<!-- 听力题 -->
<ListenTopic
:startIndex="item.startIndex"
:paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getBeforeTopic="getBeforeTopic()"
@getAfterTopic="getAfterTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'listening' && index === changeIndex"
/>
<!-- 填空题 -->
<FillInTheBlanks
:startIndex="item.startIndex"
:paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getBeforeTopic="getBeforeTopic()"
@getAfterTopic="getAfterTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'fill-in' && index === changeIndex"
/>
<!-- 阅读理解 --> <!-- 阅读理解 -->
<readingCompre :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <readingCompre
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :startIndex="item.startIndex"
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :paperData="item"
@answerChange="getAnswerChange($event, index)" v-if=" :isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'reading-comprehensio' && item.QuestionTypeKey === 'reading-comprehensio' &&
index === changeIndex index === changeIndex
" /> "
<!-- 判断题 --> />
<Judge :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 判断题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <Judge
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" :paperData="item"
v-if="item.QuestionTypeKey === 'judge' && index === changeIndex" /> :isLast="isLast"
<!-- 简答题 --> :sort="index"
<shortAnswer :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" :sortTotal="peaperDetail.Paper.GroupList.length"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :isOperate="isOperate"
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :ExamStatus="ExamStatus"
@answerChange="getAnswerChange($event, index)" v-if=" @getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'judge' && index === changeIndex"
/>
<!-- 简答题 -->
<shortAnswer
:startIndex="item.startIndex"
:paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'short-answer' && index === changeIndex item.QuestionTypeKey === 'short-answer' && index === changeIndex
" /> "
<!-- 名词解释 --> />
<nounExplanation :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 名词解释 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <nounExplanation
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" v-if=" :paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'noun-explanation' && index === changeIndex item.QuestionTypeKey === 'noun-explanation' && index === changeIndex
" /> "
<!-- 论述题 --> />
<easyQuestion :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 论述题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <easyQuestion
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" v-if=" :paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'essay-question' && index === changeIndex item.QuestionTypeKey === 'essay-question' && index === changeIndex
" /> "
<!-- 计算题 --> />
<Calculation :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 计算题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <Calculation
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" :paperData="item"
v-if="item.QuestionTypeKey === 'calculation' && index === changeIndex" /> :isLast="isLast"
<!-- 分录题 --> :sort="index"
<EntryProblem :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" :sortTotal="peaperDetail.Paper.GroupList.length"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :isOperate="isOperate"
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :ExamStatus="ExamStatus"
@answerChange="getAnswerChange($event, index)" v-if=" @getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'calculation' && index === changeIndex"
/>
<!-- 分录题 -->
<EntryProblem
:startIndex="item.startIndex"
:paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'entry-problem' && index === changeIndex item.QuestionTypeKey === 'entry-problem' && index === changeIndex
" /> "
<!-- 口语题 --> />
<Spoken :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 口语题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <Spoken
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" :paperData="item"
v-if="item.QuestionTypeKey === 'spoken' && index === changeIndex" /> :isLast="isLast"
<!-- 其他 --> :sort="index"
<Other :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" :sortTotal="peaperDetail.Paper.GroupList.length"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :isOperate="isOperate"
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :ExamStatus="ExamStatus"
@answerChange="getAnswerChange($event, index)" @getAfterTopic="getAfterTopic()"
v-if="item.QuestionTypeKey === 'other' && index === changeIndex" /> @getBeforeTopic="getBeforeTopic()"
<!-- 完型填空 --> @answerChange="getAnswerChange($event, index)"
<Cloze :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" v-if="item.QuestionTypeKey === 'spoken' && index === changeIndex"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" />
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" <!-- 其他 -->
@answerChange="getAnswerChange($event, index)" <Other
v-if="item.QuestionTypeKey === 'cloze' && index === changeIndex" /> :startIndex="item.startIndex"
<!-- 资料题 --> :paperData="item"
<Dataquestion :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" :isLast="isLast"
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" :sort="index"
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :sortTotal="peaperDetail.Paper.GroupList.length"
@answerChange="getAnswerChange($event, index)" v-if=" :isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'other' && index === changeIndex"
/>
<!-- 完型填空 -->
<Cloze
:startIndex="item.startIndex"
:paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="item.QuestionTypeKey === 'cloze' && index === changeIndex"
/>
<!-- 资料题 -->
<Dataquestion
:startIndex="item.startIndex"
:paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'data-question' && index === changeIndex item.QuestionTypeKey === 'data-question' && index === changeIndex
" /> "
<!-- 公用选择题 --> />
<SharingChoose :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 公用选择题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <SharingChoose
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" v-if=" :paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'sharing-choose' && index === changeIndex item.QuestionTypeKey === 'sharing-choose' && index === changeIndex
" /> "
<!-- 排序题 --> />
<SortingProblem :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 排序题 -->
:sortTotal="peaperDetail.Paper.GroupList.length" :isOperate="isOperate" :ExamStatus="ExamStatus" <SortingProblem
@getAfterTopic="getAfterTopic()" @getBeforeTopic="getBeforeTopic()" :startIndex="item.startIndex"
@answerChange="getAnswerChange($event, index)" v-if=" :paperData="item"
:isLast="isLast"
:sort="index"
:sortTotal="peaperDetail.Paper.GroupList.length"
:isOperate="isOperate"
:ExamStatus="ExamStatus"
@getAfterTopic="getAfterTopic()"
@getBeforeTopic="getBeforeTopic()"
@answerChange="getAnswerChange($event, index)"
v-if="
item.QuestionTypeKey === 'sorting-problem' && index === changeIndex item.QuestionTypeKey === 'sorting-problem' && index === changeIndex
" /> "
<!-- 连线题待完善 --> />
<Connect :startIndex="item.startIndex" :paperData="item" :isLast="isLast" :sort="index" <!-- 连线题待完善 -->
:sortTotal="peaperDetail.Paper.GroupList.length" @getAfterTopic="getAfterTopic()" <Connect
@getBeforeTopic="getBeforeTopic()" @answerChange="getAnswerChange($event, index)" :startIndex="item.startIndex"
v-if="item.QuestionTypeKey === 'matching' && index === changeIndex" /> :paperData="item"
</view> :isLast="isLast"
</view> :sort="index"
<view class="answer-con" v-if="isShowAnswer"> :sortTotal="peaperDetail.Paper.GroupList.length"
<answer :paperData="peaperDetail" :ExamStuId="Exam_Student_Id" :StartTime="StartTime" @getAfterTopic="getAfterTopic()"
:SubmitTimes="SubmitTimes" @hideAnswer="hideAnswerSheet" @chooseTopic="jumpTopic" ref="answer" /> @getBeforeTopic="getBeforeTopic()"
</view> @answerChange="getAnswerChange($event, index)"
<view class="answer-con" v-if="isShowNotice"> v-if="item.QuestionTypeKey === 'matching' && index === changeIndex"
<examNotice :paperData="peaperDetail" @hideNotice="hideNotice" /> />
</view> </view>
<van-toast id="van-toast" /> </view>
</view> <view class="answer-con" v-if="isShowAnswer">
<answer
:paperData="peaperDetail"
:ExamStuId="Exam_Student_Id"
:StartTime="StartTime"
:ExamStatus="ExamStatus"
:SubmitTimes="SubmitTimes"
@hideAnswer="hideAnswerSheet"
@chooseTopic="jumpTopic"
ref="answer"
/>
</view>
<view class="answer-con" v-if="isShowNotice">
<examNotice :paperData="peaperDetail" @hideNotice="hideNotice" />
</view>
<van-toast id="van-toast" />
</view>
</template> </template>
<script> <script>
import { import {
ref, ref,
reactive, reactive,
toRefs, toRefs,
toRef, toRef,
getCurrentInstance, getCurrentInstance,
watch, watch,
computed, computed,
onMounted, onMounted,
} from "vue"; } from "vue";
import { import { getPaperDetail } from "../../api/exam";
getPaperDetail import { changeNumToHan } from "../../utils/index";
} from "../../api/exam"; import { submitPaper } from "../../api/exam";
import {
changeNumToHan
} from "../../utils/index";
import {
submitPaper
} from "../../api/exam";
import SingleChoiceNumber from "../../components/subject/SingleChoiceNumber.vue";
import SingleChoice from "../../components/subject/SingleChoice.vue";
import MultipleChoice from "../../components/subject/MultipleChoice.vue";
import ListenTopic from "../../components/subject/ListenTopic.vue";
import FillInTheBlanks from "../../components/subject/FillInTheBlanks";
import readingCompre from "../../components/subject/readingCompre";
import Judge from "../../components/subject/judge.vue";
import ShortAnswer from "../../components/subject/shortAnswer.vue";
import nounExplanation from "../../components/subject/nounExplanation.vue";
import easyQuestion from "../../components/subject/easyQuestion.vue";
import Calculation from "../../components/subject/Calculation.vue";
import EntryProblem from "../../components/subject/EntryProblem.vue";
import Spoken from "../../components/subject/Spoken.vue";
import Other from "../../components/subject/Other.vue";
import Cloze from "../../components/subject/Cloze.vue";
import Dataquestion from "../../components/subject/Dataquestion.vue";
import SortingProblem from "../../components/subject/SortingProblem.vue";
import Connect from "../../components/subject/Connect.vue"; //"连线题"
import SharingChoose from "../../components/subject/SharingChoose.vue";
import answer from "../../components/subject/answer.vue"; //答题卡
import examNotice from "../../components/subject/examNotice.vue"; //考前须知
export default {
components: {
SingleChoiceNumber,
SingleChoice,
MultipleChoice,
ListenTopic,
FillInTheBlanks,
readingCompre,
Judge,
ShortAnswer,
nounExplanation,
easyQuestion,
Calculation,
Spoken,
Other,
Cloze,
Dataquestion,
SortingProblem,
EntryProblem,
SharingChoose,
Connect,
answer,
examNotice,
},
setup(props, context) {
let { refs } = getCurrentInstance();
console.log(refs);
let data = reactive({
time: 999,
statusBarHeight: 0,
msg: {
GuestId: 0,
PaperId: 0,
PublishId: 0,
},
import SingleChoiceNumber from "../../components/subject/SingleChoiceNumber.vue"; peaperDetail: {},
import SingleChoice from "../../components/subject/SingleChoice.vue"; changeIndex: 0, //大题序号
import MultipleChoice from "../../components/subject/MultipleChoice.vue"; isLast: false, //用于判断是否从后往前翻
import ListenTopic from "../../components/subject/ListenTopic.vue"; isShowAnswer: false, //是否显示答题卡
import FillInTheBlanks from "../../components/subject/FillInTheBlanks"; Exam_Student_Id: 0,
import readingCompre from "../../components/subject/readingCompre"; autoTimeStart: false,
import Judge from "../../components/subject/judge.vue"; isOperate: false, //考试状态 判断是考试还是查看答案
import ShortAnswer from "../../components/subject/shortAnswer.vue"; isAutoTime: false,
import nounExplanation from "../../components/subject/nounExplanation.vue"; ExamStatus: -2,
import easyQuestion from "../../components/subject/easyQuestion.vue"; StartTime: "", //页面加载后的时间
import Calculation from "../../components/subject/Calculation.vue"; SubmitTimes: 0, //后台设置几分钟后可提交
import EntryProblem from "../../components/subject/EntryProblem.vue"; isShowNotice: false, //是否显示考前须知
import Spoken from "../../components/subject/Spoken.vue"; });
import Other from "../../components/subject/Other.vue"; let methods = {
import Cloze from "../../components/subject/Cloze.vue"; changeNumToHan,
import Dataquestion from "../../components/subject/Dataquestion.vue"; jumpPage() {
import SortingProblem from "../../components/subject/SortingProblem.vue"; uni.navigateTo({
import Connect from "../../components/subject/Connect.vue"; //"连线题" url: "/pages/exam/examPaper",
import SharingChoose from "../../components/subject/SharingChoose.vue"; });
import answer from "../../components/subject/answer.vue"; //答题卡 },
import examNotice from "../../components/subject/examNotice.vue"; //考前须知 start() {
export default { refs.countdown.start();
components: { },
SingleChoiceNumber, back() {
SingleChoice, uni.navigateBack();
MultipleChoice, },
ListenTopic, async getPaperDetail() {
FillInTheBlanks, let res = await getPaperDetail(data.msg);
readingCompre, if (res) {
Judge, if (res.Code == 1) {
ShortAnswer, data.peaperDetail = res.Data;
nounExplanation, //-1-缺考, 0-未开始,1-已开始,2-已考试,3-已阅卷
easyQuestion, this.ExamStatus = res.Data.ExamStatusTemp;
Calculation, console.log(277, this.ExamStatus);
Spoken, this.SubmitTimes = res.Data.Publish.SubmitTimes;
Other, //判断是答卷
Cloze, if (res.Data.ExamStatusTemp == 1) {
Dataquestion, this.isShowNotice = true;
SortingProblem, this.isOperate = true;
EntryProblem, data.autoTimeStart = true;
SharingChoose, data.time = res.Data.Publish.ExamTimes * 60 * 1000;
Connect, }
answer, }
examNotice }
}, },
setup(props, context) { //往后翻
let { getAfterTopic() {
refs this.changeIndex++;
} = getCurrentInstance(); this.isLast = false;
console.log(refs); },
let data = reactive({ //往前翻
time: 999, getBeforeTopic() {
statusBarHeight: 0, this.changeIndex--;
msg: { this.isLast = true;
GuestId: 0, },
PaperId: 0, //显示答题卡
PublishId: 0 showAnswerSheet() {
}, data.isShowAnswer = true;
},
peaperDetail: {}, //隐藏答题卡
changeIndex: 0, //大题序号 hideAnswerSheet() {
isLast: false, //用于判断是否从后往前翻 data.isShowAnswer = false;
isShowAnswer: false, //是否显示答题卡 },
Exam_Student_Id: 0, //隐藏考前提示
autoTimeStart: false, hideNotice() {
isOperate: false, //考试状态 判断是考试还是查看答案 console.log("进入");
isAutoTime: false, data.isShowNotice = false;
ExamStatus: -2, },
StartTime: '', //页面加载后的时间 //获取答案改变后的数据
SubmitTimes: 0, //后台设置几分钟后可提交 getAnswerChange(val, index) {
isShowNotice: false //是否显示考前须知 data.peaperDetail.Paper.GroupList[index] = val;
}); },
let methods = { //跳转到指定题目
changeNumToHan, jumpTopic(val) {
jumpPage() { this.changeIndex = val.index;
uni.navigateTo({ data.peaperDetail.Paper.GroupList[val.index].startIndex =
url: "/pages/exam/examPaper", val.index1 + 1;
}); data.isShowAnswer = false;
}, data.isLast = false;
start() { },
refs.countdown.start(); //倒计时完成考试结束
}, examFinish() {
back() { uni.showToast({
uni.navigateBack(); title: "考试时间已到,系统将自动保存",
}, icon: "none",
async getPaperDetail() { });
let res = await getPaperDetail(data.msg); methods.savePaper();
if (res) { },
if (res.Code == 1) { getNowTime() {
data.peaperDetail = res.Data; let dateTime;
//-1-缺考, 0-未开始,1-已开始,2-已考试,3-已阅卷 let yy = new Date().getFullYear();
this.ExamStatus = res.Data.ExamStatusTemp; let mm = new Date().getMonth() + 1;
this.SubmitTimes = res.Data.Publish.SubmitTimes; let dd = new Date().getDate();
//判断是答卷 let hh = new Date().getHours();
if (res.Data.ExamStatusTemp == 1) { let mf =
this.isShowNotice = true; new Date().getMinutes() < 10
this.isOperate = true; ? "0" + new Date().getMinutes()
data.autoTimeStart = true; : new Date().getMinutes();
data.time = res.Data.Publish.ExamTimes * 60 * 1000; let ss =
} new Date().getSeconds() < 10
} ? "0" + new Date().getSeconds()
} : new Date().getSeconds();
}, dateTime = yy + "-" + mm + "-" + dd + " " + hh + ":" + mf + ":" + ss;
//往后翻 return dateTime;
getAfterTopic() { },
this.changeIndex++; //交卷
this.isLast = false; async savePaper() {
}, let obj = JSON.parse(JSON.stringify(data.peaperDetail.Paper));
//往前翻 delete obj.Group_Id;
getBeforeTopic() { obj.Exam_Student_Id = parseInt(data.Exam_Student_Id);
this.changeIndex--; let time1 = data.StartTime;
this.isLast = true; let time2 = methods.getNowTime();
}, var d1 = new Date(time1);
//显示答题卡 var d2 = new Date(time2);
showAnswerSheet() { let TimeDis = parseInt(d2 - d1) / 1000 / 60;
data.isShowAnswer = true; if (TimeDis < data.SubmitTimes) {
}, uni.showToast({
//隐藏答题卡 title: `开场不足${data.SubmitTimes}分钟禁止交卷哦~`,
hideAnswerSheet() { icon: "none",
data.isShowAnswer = false; });
}, return;
//隐藏考前提示 }
hideNotice(){ let res = await submitPaper(obj);
console.log('进入'); if (res) {
data.isShowNotice = false; if (res.Code == 1) {
}, uni.showToast({
//获取答案改变后的数据 title: res.Message,
getAnswerChange(val, index) { icon: "none",
data.peaperDetail.Paper.GroupList[index] = val; });
}, setTimeout(() => {
//跳转到指定题目 uni.navigateTo({
jumpTopic(val) { url: "/pages/index/index",
this.changeIndex = val.index; });
data.peaperDetail.Paper.GroupList[val.index].startIndex = }, 1000);
val.index1 + 1; }
data.isShowAnswer = false; }
data.isLast = false; },
}, };
//倒计时完成考试结束 onMounted(() => {
examFinish() { data.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
uni.showToast({ let yy = new Date().getFullYear();
title: '考试时间已到,系统将自动保存', let mm = new Date().getMonth() + 1;
icon: "none", let dd = new Date().getDate();
}); let hh = new Date().getHours();
methods.savePaper(); let mf =
}, new Date().getMinutes() < 10
getNowTime() { ? "0" + new Date().getMinutes()
let dateTime : new Date().getMinutes();
let yy = new Date().getFullYear() let ss =
let mm = new Date().getMonth() + 1 new Date().getSeconds() < 10
let dd = new Date().getDate() ? "0" + new Date().getSeconds()
let hh = new Date().getHours() : new Date().getSeconds();
let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : data.StartTime =
new Date().getMinutes() yy + "-" + mm + "-" + dd + " " + hh + ":" + mf + ":" + ss;
let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : console.log(data.StartTime, "11111111111111");
new Date().getSeconds() });
dateTime = yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss; return {
return dateTime ...toRefs(data),
}, ...methods,
//交卷 };
async savePaper() { },
let obj = JSON.parse(JSON.stringify(data.peaperDetail.Paper)); onLoad(options) {
delete obj.Group_Id; if (options.GuestId) {
obj.Exam_Student_Id = parseInt(data.Exam_Student_Id); this.msg.GuestId = options.GuestId;
let time1 = data.StartTime; }
let time2 = methods.getNowTime(); if (options.PaperId) {
var d1 = new Date(time1); this.msg.PaperId = options.PaperId;
var d2 = new Date(time2); }
let TimeDis = parseInt(d2 - d1) / 1000 / 60; if (options.Id) {
if (TimeDis < data.SubmitTimes) { this.msg.PublishId = options.Id;
uni.showToast({ }
title: `开场不足${data.SubmitTimes}分钟禁止交卷哦~`, if (options.Exam_Student_Id) {
icon: "none", this.Exam_Student_Id = options.Exam_Student_Id;
}); }
return if (
} options.ExamStatus &&
let res = await submitPaper(obj); (options.ExamStatus == 1 || options.ExamStatus == 3)
if (res) { ) {
if (res.Code == 1) { this.msg.isShowAnswer = true;
uni.showToast({ }
title: res.Message, this.getPaperDetail();
icon: "none", },
}); };
setTimeout(() => {
uni.navigateTo({
url: "/pages/index/index",
});
}, 1000);
}
}
},
};
onMounted(() => {
data.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
let yy = new Date().getFullYear()
let mm = new Date().getMonth() + 1
let dd = new Date().getDate()
let hh = new Date().getHours()
let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() :
new Date().getMinutes()
let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() :
new Date().getSeconds()
data.StartTime = yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss;
console.log(data.StartTime, '11111111111111');
});
return {
...toRefs(data),
...methods,
};
},
onLoad(options) {
if (options.GuestId) {
this.msg.GuestId = options.GuestId;
}
if (options.PaperId) {
this.msg.PaperId = options.PaperId;
}
if (options.Id) {
this.msg.PublishId = options.Id;
}
if (options.Exam_Student_Id) {
this.Exam_Student_Id = options.Exam_Student_Id;
}
if (options.ExamStatus && (options.ExamStatus == 1 || options.ExamStatus == 3)) {
this.msg.isShowAnswer = true;
}
this.getPaperDetail();
},
};
</script> </script>
<style scoped> <style scoped>
.exam-con { .exam-con {
box-sizing: border-box; box-sizing: border-box;
} }
.answerSheet { .answerSheet {
font-size: 30rpx; font-size: 30rpx;
margin-left: 20rpx; margin-left: 20rpx;
color: #000; color: #000;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment