Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
educationStu
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
向伟
educationStu
Commits
6a337486
Commit
6a337486
authored
Sep 16, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
6f41651b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
392 additions
and
533 deletions
+392
-533
ListenTopic.vue
src/components/subject/ListenTopic.vue
+1
-1
SortingProblem.vue
src/components/subject/SortingProblem.vue
+3
-3
answer.vue
src/components/subject/answer.vue
+0
-14
examPaper.vue
src/pages/exam/examPaper.vue
+388
-515
No files found.
src/components/subject/ListenTopic.vue
View file @
6a337486
...
...
@@ -55,7 +55,7 @@
<view
class=
"flex flex_start_center item3"
v-if=
"item2.QuestionKey === 'multiple'"
>
<
template
v-if=
"isOperate"
>
<view
class=
"chooseNum"
:class=
"
{ myAnswer: item3.IsAnswer }"
@click="multipleChange(item3)">
{{
item3
.
Name
}}
@click="multipleChange(item
2,item
3)">
{{
item3
.
Name
}}
</view>
<view
class=
"chooseName"
@
click=
"multipleChange(item2, item3)"
v-html=
"item3.Content"
></view>
...
...
src/components/subject/SortingProblem.vue
View file @
6a337486
<
template
>
<!-- 计算题 -->
<view>
<view
class=
"item"
style=
"padding: 0 20px"
>
<view
class=
"name"
>
<view
class=
"item"
>
<view
class=
"name"
style=
"padding: 0 20px"
>
<view>
{{
changeNumToHan
(
sortIndex
)
}}
、
{{
data
.
GroupName
}}
<text
style=
"color: #999999"
...
...
@@ -26,7 +26,7 @@
>
<swiper-item
v-if=
"sortIndex != 1"
></swiper-item>
<swiper-item
v-for=
"(item1, index1) in data.DetailsList"
:key=
"index1"
>
<view
class=
"item1"
>
<view
class=
"item1"
style=
"padding: 0 20px"
>
<view
class=
"flex"
>
<view>
{{
index1
+
1
}}
、
</view>
<view
class=
"num"
v-html=
"item1.Title"
></view>
(
{{
item1
.
Score
}}
)
...
...
src/components/subject/answer.vue
View file @
6a337486
...
...
@@ -97,22 +97,13 @@ export default {
ExamStuId
:
Number
,
SubmitTimes
:
Number
,
StartTime
:
String
,
isExamOver
:
Boolean
},
setup
(
props
,
ctx
)
{
let
Gid
=
uni
.
getStorageSync
(
"userInfo"
).
Id
;
let
data
=
reactive
({
msg
:
{
GuestId
:
Gid
,
PaperId
:
5
,
PublishId
:
1
},
questionList
:
props
.
paperData
.
Paper
.
GroupList
,
isExamOver
:
props
.
isExamOver
});
watch
(()
=>
props
.
isExamOver
,
(
newVal
,
oldVal
)
=>
{
console
.
log
(
oldVal
,
'oldValoldVal'
);
console
.
log
(
newVal
,
'newVal'
);
if
(
newVal
){
methods
.
savePaper
();
}
});
let
methods
=
{
changeNumToHan
,
chooseTopic
(
index
,
index1
,
index2
)
{
...
...
@@ -148,8 +139,6 @@ export default {
obj
.
Exam_Student_Id
=
props
.
ExamStuId
;
let
time1
=
props
.
StartTime
;
let
time2
=
methods
.
getNowTime
();
console
.
log
(
time1
,
'time1'
);
console
.
log
(
time2
,
'time2'
);
var
d1
=
new
Date
(
time1
);
var
d2
=
new
Date
(
time2
);
let
TimeDis
=
parseInt
(
d2
-
d1
)
/
1000
/
60
;
...
...
@@ -160,11 +149,8 @@ export default {
});
return
}
console
.
log
(
'自动交卷了'
);
return
;
let
res
=
await
submitPaper
(
obj
);
if
(
res
)
{
console
.
log
(
119
,
res
);
if
(
res
.
Code
==
1
)
{
uni
.
showToast
({
title
:
res
.
Message
,
...
...
src/pages/exam/examPaper.vue
View file @
6a337486
<
template
>
<view
:style=
"
{ 'padding-top': `${statusBarHeight}px` }">
<view
style=
"height: 100rpx"
></view>
<van-nav-bar
fixed
>
<template
#
left
>
<van-icon
name=
"cross"
size=
"32rpx"
@
click=
"back"
/>
</
template
>
<
template
#
title
>
<view
class=
"flex"
style=
"justify-content: center"
@
click=
"start"
>
<van-image
width=
"30rpx"
height=
"30rpx"
fit=
"cover"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/clock.png"
style=
"margin-right: 10rpx"
/>
<van-count-down
:time=
"time"
:auto-start=
"autoTimeStart"
class=
"flex flex_center_center"
ref=
"countdown"
@
finish=
"examFinish"
/>
</view>
</
template
>
</van-nav-bar>
<view
class=
"exam-con"
v-if=
"!isShowAnswer"
>
<i
class=
"iconfont icon-caidanzu answerSheet"
style=
"
<view
:style=
"
{ 'padding-top': `${statusBarHeight}px` }">
<view
style=
"height: 100rpx"
></view>
<van-nav-bar
fixed
>
<template
#
left
>
<van-icon
name=
"cross"
size=
"32rpx"
@
click=
"back"
/>
</
template
>
<
template
#
title
>
<view
class=
"flex"
style=
"justify-content: center"
@
click=
"start"
>
<van-image
width=
"30rpx"
height=
"30rpx"
fit=
"cover"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/clock.png"
style=
"margin-right: 10rpx"
/>
<van-count-down
:time=
"time"
:auto-start=
"autoTimeStart"
class=
"flex flex_center_center"
ref=
"countdown"
@
finish=
"examFinish"
/>
</view>
</
template
>
</van-nav-bar>
<view
class=
"exam-con"
v-if=
"!isShowAnswer"
>
<i
class=
"iconfont icon-caidanzu answerSheet"
style=
"
position: absolute;
right: 30rpx;
z-index: 999;
margin-top: 26rpx;
"
:style=
"{ top: `calc(${statusBarHeight}px + 105rpx)` }"
@
click=
"showAnswerSheet"
></i>
<view
v-for=
"(item, index) in peaperDetail.Paper.GroupList"
:key=
"index"
>
<!-- 数字单选题 -->
<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=
"
"
:style=
"{ top: `calc(${statusBarHeight}px + 105rpx)` }"
@
click=
"showAnswerSheet"
></i>
<view
v-for=
"(item, index) in peaperDetail.Paper.GroupList"
:key=
"index"
>
<!-- 数字单选题 -->
<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
"
/>
<!-- 多选题 -->
<MultipleChoice
: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 === 'multiple' && index === changeIndex"
/>
<!-- 单选题 -->
<SingleChoice
: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 === '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"
/>
"
/>
<!-- 多选题 -->
<MultipleChoice
: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 === 'multiple' && index === changeIndex"
/>
<!-- 单选题 -->
<SingleChoice
: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 === '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"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
v-if=
"
<!-- 阅读理解 -->
<readingCompre
: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 === 'reading-comprehensio' &&
index === changeIndex
"
/>
<!-- 判断题 -->
<Judge
: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 === '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=
"
"
/>
<!-- 判断题 -->
<Judge
: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 === '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
"
/>
<!-- 名词解释 -->
<nounExplanation
: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=
"
"
/>
<!-- 名词解释 -->
<nounExplanation
: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 === 'noun-explanation' && index === changeIndex
"
/>
<!-- 论述题 -->
<easyQuestion
: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=
"
"
/>
<!-- 论述题 -->
<easyQuestion
: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 === 'essay-question' && index === changeIndex
"
/>
<!-- 计算题 -->
<Calculation
: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 === '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=
"
"
/>
<!-- 计算题 -->
<Calculation
: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 === '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
"
/>
<!-- 口语题 -->
<Spoken
: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 === 'spoken' && index === changeIndex"
/>
<!-- 其他 -->
<Other
: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 === '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=
"
"
/>
<!-- 口语题 -->
<Spoken
: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 === 'spoken' && index === changeIndex"
/>
<!-- 其他 -->
<Other
: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 === '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
"
/>
<!-- 公用选择题 -->
<SharingChoose
: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=
"
"
/>
<!-- 公用选择题 -->
<SharingChoose
: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 === 'sharing-choose' && index === changeIndex
"
/>
<!-- 排序题 -->
<SortingProblem
: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=
"
"
/>
<!-- 排序题 -->
<SortingProblem
: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 === 'sorting-problem' && index === changeIndex
"
/>
<!-- 连线题待完善 -->
<Connect
:startIndex=
"item.startIndex"
:paperData=
"item"
:isLast=
"isLast"
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
v-if=
"item.QuestionTypeKey === 'matching' && index === changeIndex"
/>
</view>
</view>
<view
class=
"answer-con"
v-if=
"isShowAnswer"
>
<answer
:paperData=
"peaperDetail"
:ExamStuId=
"Exam_Student_Id"
:StartTime=
"StartTime"
:SubmitTimes=
"SubmitTimes"
:isExamOver=
"isExamOver"
@
hideAnswer=
"hideAnswerSheet"
@
chooseTopic=
"jumpTopic"
ref=
"answer"
/>
</view>
<van-toast
id=
"van-toast"
/>
</view>
"
/>
<!-- 连线题待完善 -->
<Connect
:startIndex=
"item.startIndex"
:paperData=
"item"
:isLast=
"isLast"
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
v-if=
"item.QuestionTypeKey === 'matching' && index === changeIndex"
/>
</view>
</view>
<view
class=
"answer-con"
v-if=
"isShowAnswer"
>
<answer
:paperData=
"peaperDetail"
:ExamStuId=
"Exam_Student_Id"
:StartTime=
"StartTime"
:SubmitTimes=
"SubmitTimes"
@
hideAnswer=
"hideAnswerSheet"
@
chooseTopic=
"jumpTopic"
ref=
"answer"
/>
</view>
<van-toast
id=
"van-toast"
/>
</view>
</template>
<
script
>
import
{
ref
,
reactive
,
toRefs
,
toRef
,
getCurrentInstance
,
watch
,
computed
,
onMounted
,
}
from
"vue"
;
import
{
getPaperDetail
}
from
"../../api/exam"
;
import
{
changeNumToHan
}
from
"../../utils/index"
;
import
{
ref
,
reactive
,
toRefs
,
toRef
,
getCurrentInstance
,
watch
,
computed
,
onMounted
,
}
from
"vue"
;
import
{
getPaperDetail
}
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"
;
//答题卡
export
default
{
components
:
{
SingleChoiceNumber
,
SingleChoice
,
MultipleChoice
,
ListenTopic
,
FillInTheBlanks
,
readingCompre
,
Judge
,
ShortAnswer
,
nounExplanation
,
easyQuestion
,
Calculation
,
Spoken
,
Other
,
Cloze
,
Dataquestion
,
SortingProblem
,
EntryProblem
,
SharingChoose
,
Connect
,
answer
,
},
setup
(
props
,
context
)
{
let
{
refs
}
=
getCurrentInstance
();
console
.
log
(
refs
);
let
data
=
reactive
({
time
:
999
,
statusBarHeight
:
0
,
msg
:
{
GuestId
:
0
,
PaperId
:
0
,
PublishId
:
0
},
peaperDetail
:
{},
changeIndex
:
0
,
//大题序号
isLast
:
false
,
//用于判断是否从后往前翻
isShowAnswer
:
false
,
//是否显示答题卡
Exam_Student_Id
:
0
,
autoTimeStart
:
false
,
isOperate
:
false
,
//考试状态 判断是考试还是查看答案
isAutoTime
:
false
,
ExamStatus
:
-
2
,
StartTime
:
''
,
//页面加载后的时间
SubmitTimes
:
0
,
//后台设置几分钟后可提交
isExamOver
:
false
});
let
methods
=
{
changeNumToHan
,
jumpPage
()
{
uni
.
navigateTo
({
url
:
"/pages/exam/examPaper"
,
});
},
start
()
{
refs
.
countdown
.
start
();
},
back
()
{
uni
.
navigateBack
();
},
async
getPaperDetail
()
{
let
res
=
await
getPaperDetail
(
data
.
msg
);
if
(
res
)
{
if
(
res
.
Code
==
1
)
{
data
.
peaperDetail
=
res
.
Data
;
//-1-缺考, 0-未开始,1-已开始,2-已考试,3-已阅卷
this
.
ExamStatus
=
res
.
Data
.
ExamStatusTemp
;
this
.
SubmitTimes
=
res
.
Data
.
Publish
.
SubmitTimes
;
//判断是答卷
if
(
res
.
Data
.
ExamStatusTemp
==
1
){
this
.
isOperate
=
true
;
data
.
autoTimeStart
=
true
;
// data.time = res.Data.Publish.ExamTimes * 60 * 1000;
data
.
time
=
5000
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"
;
//答题卡
export
default
{
components
:
{
SingleChoiceNumber
,
SingleChoice
,
MultipleChoice
,
ListenTopic
,
FillInTheBlanks
,
readingCompre
,
Judge
,
ShortAnswer
,
nounExplanation
,
easyQuestion
,
Calculation
,
Spoken
,
Other
,
Cloze
,
Dataquestion
,
SortingProblem
,
EntryProblem
,
SharingChoose
,
Connect
,
answer
,
},
setup
(
props
,
context
)
{
let
{
refs
}
=
getCurrentInstance
();
console
.
log
(
refs
);
let
data
=
reactive
({
time
:
999
,
statusBarHeight
:
0
,
msg
:
{
GuestId
:
0
,
PaperId
:
0
,
PublishId
:
0
},
peaperDetail
:
{},
changeIndex
:
0
,
//大题序号
isLast
:
false
,
//用于判断是否从后往前翻
isShowAnswer
:
false
,
//是否显示答题卡
Exam_Student_Id
:
0
,
autoTimeStart
:
false
,
isOperate
:
false
,
//考试状态 判断是考试还是查看答案
isAutoTime
:
false
,
ExamStatus
:
-
2
,
StartTime
:
''
,
//页面加载后的时间
SubmitTimes
:
0
,
//后台设置几分钟后可提交
});
let
methods
=
{
changeNumToHan
,
jumpPage
()
{
uni
.
navigateTo
({
url
:
"/pages/exam/examPaper"
,
});
},
start
()
{
refs
.
countdown
.
start
();
},
back
()
{
uni
.
navigateBack
();
},
async
getPaperDetail
()
{
let
res
=
await
getPaperDetail
(
data
.
msg
);
if
(
res
)
{
if
(
res
.
Code
==
1
)
{
data
.
peaperDetail
=
res
.
Data
;
//-1-缺考, 0-未开始,1-已开始,2-已考试,3-已阅卷
this
.
ExamStatus
=
res
.
Data
.
ExamStatusTemp
;
this
.
SubmitTimes
=
res
.
Data
.
Publish
.
SubmitTimes
;
//判断是答卷
if
(
res
.
Data
.
ExamStatusTemp
==
1
)
{
this
.
isOperate
=
true
;
data
.
autoTimeStart
=
true
;
data
.
time
=
res
.
Data
.
Publish
.
ExamTimes
*
60
*
1000
;
}
}
}
},
//往后翻
getAfterTopic
()
{
this
.
changeIndex
++
;
this
.
isLast
=
false
;
},
//往前翻
getBeforeTopic
()
{
this
.
changeIndex
--
;
this
.
isLast
=
true
;
},
//显示答题卡
showAnswerSheet
()
{
data
.
isShowAnswer
=
true
;
},
//隐藏答题卡
hideAnswerSheet
()
{
data
.
isShowAnswer
=
false
;
},
//获取答案改变后的数据
getAnswerChange
(
val
,
index
)
{
data
.
peaperDetail
.
Paper
.
GroupList
[
index
]
=
val
;
},
//跳转到指定题目
jumpTopic
(
val
)
{
this
.
changeIndex
=
val
.
index
;
data
.
peaperDetail
.
Paper
.
GroupList
[
val
.
index
].
startIndex
=
val
.
index1
+
1
;
data
.
isShowAnswer
=
false
;
data
.
isLast
=
false
;
},
//倒计时完成考试结束
examFinish
()
{
uni
.
showToast
({
title
:
'考试时间已到,系统将自动保存'
,
icon
:
"none"
,
});
methods
.
savePaper
();
},
getNowTime
()
{
let
dateTime
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
()
dateTime
=
yy
+
'-'
+
mm
+
'-'
+
dd
+
' '
+
hh
+
':'
+
mf
+
':'
+
ss
;
return
dateTime
},
//交卷
async
savePaper
()
{
let
obj
=
JSON
.
parse
(
JSON
.
stringify
(
data
.
peaperDetail
.
Paper
));
delete
obj
.
Group_Id
;
obj
.
Exam_Student_Id
=
parseInt
(
data
.
Exam_Student_Id
);
let
time1
=
data
.
StartTime
;
let
time2
=
methods
.
getNowTime
();
var
d1
=
new
Date
(
time1
);
var
d2
=
new
Date
(
time2
);
let
TimeDis
=
parseInt
(
d2
-
d1
)
/
1000
/
60
;
if
(
TimeDis
<
data
.
SubmitTimes
)
{
uni
.
showToast
({
title
:
`开场不足
${
data
.
SubmitTimes
}
分钟禁止交卷哦~`
,
icon
:
"none"
,
});
return
}
let
res
=
await
submitPaper
(
obj
);
if
(
res
)
{
if
(
res
.
Code
==
1
)
{
uni
.
showToast
({
title
:
res
.
Message
,
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
;
}
}
}
},
//往后翻
getAfterTopic
()
{
this
.
changeIndex
++
;
this
.
isLast
=
false
;
},
//往前翻
getBeforeTopic
()
{
this
.
changeIndex
--
;
this
.
isLast
=
true
;
},
//显示答题卡
showAnswerSheet
()
{
data
.
isShowAnswer
=
true
;
},
//隐藏答题卡
hideAnswerSheet
()
{
data
.
isShowAnswer
=
false
;
},
//获取答案改变后的数据
getAnswerChange
(
val
,
index
)
{
data
.
peaperDetail
.
Paper
.
GroupList
[
index
]
=
val
;
},
//跳转到指定题目
jumpTopic
(
val
)
{
this
.
changeIndex
=
val
.
index
;
data
.
peaperDetail
.
Paper
.
GroupList
[
val
.
index
].
startIndex
=
val
.
index1
+
1
;
data
.
isShowAnswer
=
false
;
data
.
isLast
=
false
;
},
//倒计时完成考试结束
examFinish
()
{
uni
.
showToast
({
title
:
'考试时间已到,系统将自动保存'
,
icon
:
"none"
,
});
data
.
isShowAnswer
=
true
;
data
.
isExamOver
=
true
;
},
};
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
();
},
};
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
>
<
style
scoped
>
.exam-con
{
box-sizing
:
border-box
;
}
.answerSheet
{
font-size
:
30
rpx
;
margin-left
:
20
rpx
;
color
:
#000
;
}
.exam-con
{
box-sizing
:
border-box
;
}
.answerSheet
{
font-size
:
30
rpx
;
margin-left
:
20
rpx
;
color
:
#000
;
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment