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
6e3075f9
Commit
6e3075f9
authored
Sep 16, 2021
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
0e1a402f
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
468 additions
and
360 deletions
+468
-360
Calculation.vue
src/components/subject/Calculation.vue
+7
-3
Cloze.vue
src/components/subject/Cloze.vue
+8
-4
Dataquestion.vue
src/components/subject/Dataquestion.vue
+7
-3
EntryProblem.vue
src/components/subject/EntryProblem.vue
+7
-3
FillInTheBlanks.vue
src/components/subject/FillInTheBlanks.vue
+7
-2
ListenTopic.vue
src/components/subject/ListenTopic.vue
+9
-5
MultipleChoice.vue
src/components/subject/MultipleChoice.vue
+3
-2
Other.vue
src/components/subject/Other.vue
+9
-5
SharingChoose.vue
src/components/subject/SharingChoose.vue
+7
-3
SingleChoice.vue
src/components/subject/SingleChoice.vue
+263
-293
SingleChoiceNumber.vue
src/components/subject/SingleChoiceNumber.vue
+4
-2
SortingProblem.vue
src/components/subject/SortingProblem.vue
+7
-3
Spoken.vue
src/components/subject/Spoken.vue
+9
-5
answer.vue
src/components/subject/answer.vue
+34
-0
easyQuestion.vue
src/components/subject/easyQuestion.vue
+7
-3
judge.vue
src/components/subject/judge.vue
+7
-2
nounExplanation.vue
src/components/subject/nounExplanation.vue
+7
-3
readingCompre.vue
src/components/subject/readingCompre.vue
+10
-5
shortAnswer.vue
src/components/subject/shortAnswer.vue
+7
-3
examPaper.vue
src/pages/exam/examPaper.vue
+49
-11
No files found.
src/components/subject/Calculation.vue
View file @
6e3075f9
...
...
@@ -52,7 +52,7 @@
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
style=
"margin-top: 30rpx"
>
<view>
...
...
@@ -102,6 +102,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
proxy
}
=
getCurrentInstance
();
...
...
@@ -117,6 +118,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -144,11 +146,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/Cloze.vue
View file @
6e3075f9
...
...
@@ -40,7 +40,7 @@
v-html="item3.Content">
</view>
</
template
>
</view>
<
template
v-if=
"!isOperate"
>
<
template
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view
class=
"AnswerContent"
style=
"margin-bottom:20px;"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
...
...
@@ -70,7 +70,7 @@
</template>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate&&item1.AnswerParse"
style=
"margin-top:20px;"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate&&item1.AnswerParse
&&(ExamStatus==2||ExamStatus==3)
"
style=
"margin-top:20px;"
>
<view
style=
"margin-top: 20rpx; word-wrap: break-word"
>
<text
style=
"color: #8c8a94"
>
解析:
</text>
<text
style=
"color: #000"
>
{{ item1.AnswerParse }}
</text>
...
...
@@ -106,6 +106,7 @@
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
...
...
@@ -120,6 +121,7 @@
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -147,11 +149,13 @@
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/Dataquestion.vue
View file @
6e3075f9
...
...
@@ -53,7 +53,7 @@
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
您的答案:
<
template
v-if=
"item1.AnswerList && item1.AnswerList.length > 0"
>
...
...
@@ -110,6 +110,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -125,6 +126,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -152,11 +154,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/EntryProblem.vue
View file @
6e3075f9
...
...
@@ -53,7 +53,7 @@
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
您的答案:
<
template
v-if=
"item1.AnswerList && item1.AnswerList.length > 0"
>
...
...
@@ -110,6 +110,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -125,6 +126,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -157,11 +159,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/FillInTheBlanks.vue
View file @
6e3075f9
...
...
@@ -47,7 +47,7 @@
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
您的答案:
<
template
v-if=
"item1.AnswerList && item1.AnswerList.length > 0"
>
...
...
@@ -104,6 +104,7 @@ export default {
sortTotal
:
Number
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -118,6 +119,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -143,11 +145,14 @@ export default {
onchange
(
e
)
{
context
.
emit
(
"answerChange"
,
data
.
data
);
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/ListenTopic.vue
View file @
6e3075f9
...
...
@@ -92,7 +92,7 @@
</
template
>
</view>
</view>
<
template
v-if=
"!isOperate"
>
<
template
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view
class=
"AnswerContent"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
...
...
@@ -125,7 +125,7 @@
</view>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate&&item1.AnswerParse"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate&&item1.AnswerParse
&&(ExamStatus==2||ExamStatus==3)
"
>
<view
style=
"word-wrap: break-word"
>
<text
style=
"color: #8c8a94"
>
解析:
</text>
<view
...
...
@@ -166,7 +166,8 @@
sortTotal
:
Number
,
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
s
=
getCurrentInstance
();
...
...
@@ -184,7 +185,8 @@
audioTime
:
999
,
isPlay
:
true
,
statusBarHeight
:
0
,
isOperate
:
props
.
isOperate
isOperate
:
props
.
isOperate
,
ExamStatus
:
props
.
ExamStatus
});
data
.
data
.
DetailsList
.
map
((
item
)
=>
{
let
arr
=
item
.
Title
.
split
(
" "
);
//按空格分段
...
...
@@ -298,8 +300,10 @@
});
data
.
isPlay
=
true
;
console
.
log
(
369
,
data
.
audioTime
);
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
this
.
$emit
(
"getAfterTopic"
);
}
...
...
src/components/subject/MultipleChoice.vue
View file @
6e3075f9
...
...
@@ -64,7 +64,7 @@
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{ item1.Answer }}
</text
...
...
@@ -130,6 +130,7 @@ export default {
sortTotal
:
Number
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
data
=
reactive
({
...
...
@@ -141,6 +142,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -174,7 +176,6 @@ export default {
item1
.
IsRes
=
item1
.
QuestionContentObj
.
some
((
e
)
=>
{
return
e
.
IsAnswer
;
});
console
.
log
(
item1
,
"item1"
);
context
.
emit
(
"answerChange"
,
data
.
data
);
},
onchange
(
e
)
{
...
...
src/components/subject/Other.vue
View file @
6e3075f9
...
...
@@ -32,7 +32,7 @@
<view
class=
"viewAnswerContent"
style=
"margin-top:20px;"
v-html=
"item1.Answer"
></view>
</
template
>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{ item1.Answer }}
</text>
,
...
...
@@ -88,7 +88,8 @@
sortTotal
:
Number
,
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
...
...
@@ -102,7 +103,8 @@
current
:
1
,
//默认从第几个开始-用于从快捷菜单点入
ExamIndex
:
1
,
//第几题
statusBarHeight
:
0
,
isOperate
:
props
.
isOperate
isOperate
:
props
.
isOperate
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -130,11 +132,13 @@
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/SharingChoose.vue
View file @
6e3075f9
...
...
@@ -49,7 +49,7 @@
</
template
>
</template>
<
template
v-else
>
<view
class=
"AnswerContent"
>
<view
class=
"AnswerContent"
v-if=
"ExamStatus==2||ExamStatus==3"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{
item1
.
Answer
}}
</text>
,
...
...
@@ -108,6 +108,7 @@
isLast
:
Boolean
,
isOperate
:
Boolean
,
startIndex
:
Number
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
...
...
@@ -130,6 +131,7 @@
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -157,11 +159,13 @@
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/SingleChoice.vue
View file @
6e3075f9
<
template
>
<!-- 单选题 -->
<view>
<view
class=
"item"
style=
"padding: 0 20px"
>
<view
class=
"name"
>
<view
class=
"grow"
>
{{
changeNumToHan
(
sortIndex
)
}}
、
{{
data
.
GroupName
}}
<text
style=
"color: #999999"
>
(共
{{
data
.
DetailsList
.
length
}}
道,
{{
data
.
GScore
}}
分)
</text
>
</view>
<view
class=
"ExamIndex_Box"
>
<text
class=
"Single_Before"
>
{{
ExamIndex
}}
</text
>
/
<text
class=
"Exam_Total"
>
{{
data
.
DetailsList
.
length
}}
</text>
</view>
</view>
<swiper
class=
"swiper-box"
:style=
"
{
<!-- 单选题 -->
<view>
<view
class=
"item"
style=
"padding: 0 20px"
>
<view
class=
"name"
>
<view
class=
"grow"
>
{{
changeNumToHan
(
sortIndex
)
}}
、
{{
data
.
GroupName
}}
<text
style=
"color: #999999"
>
(共
{{
data
.
DetailsList
.
length
}}
道,
{{
data
.
GScore
}}
分)
</text>
</view>
<view
class=
"ExamIndex_Box"
>
<text
class=
"Single_Before"
>
{{
ExamIndex
}}
</text>
/
<text
class=
"Exam_Total"
>
{{
data
.
DetailsList
.
length
}}
</text>
</view>
</view>
<swiper
class=
"swiper-box"
:style=
"
{
height: `calc(100vh - 300rpx - ${statusBarHeight}px)`,
}"
:autoplay="autoplay"
:current="current"
@change="onchange"
:skip-hidden-item-layout="true"
:disable-programmatic-animation="true"
>
<swiper-item
v-if=
"sortIndex != 1"
></swiper-item>
<swiper-item
v-for=
"(item1, index1) in data.DetailsList"
:key=
"index1"
>
<view
class=
"item1"
>
<view
class=
"flex flex_start_center"
>
<view
class=
"num"
v-html=
"item1.Title"
></view>
</view>
<view
v-for=
"(item2, index2) in item1.QuestionContentObj"
:key=
"index2"
class=
"flex item2 flex_start_center"
>
<template
v-if=
"isOperate"
>
<view
class=
"chooseNum"
:class=
"
{ myAnswer: item2.IsAnswer }"
@click="change(item1, item2)"
>
{{
item2
.
ShowName
}}
</view>
<view
class=
"chooseName"
@
click=
"change(item1, item2)"
v-html=
"item2.Content"
></view>
</
template
>
<
template
v-else
>
<view
class=
"chooseNum"
:class=
"
{ isTrueAnswer: item2.IsAnswer }"
>
{{
item2
.
Name
}}
</view>
<view
class=
"chooseName"
:class=
"
{ isTrueAnswer: item2.IsAnswer }"
v-html="item2.Content"
>
</view>
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{ item1.Answer }}
</text
>
,
<text
>
您的答案是:
<
template
v-if=
"item1.StundetAnswer != ''"
>
<text
v-if=
"item1.Answer == item1.StundetAnswer"
class=
"isTrueAnswer"
>
{{
item1
.
StundetAnswer
}}
,回答正确
</text>
<text
v-else
class=
"isNotAnswer"
>
{{
item1
.
StundetAnswer
}}
,回答错误
</text
>
</
template
>
<
template
v-else
>
<text>
未作答
</text>
</
template
>
</text>
</view>
<view
style=
"margin-top: 20rpx; word-wrap: break-word"
v-if=
"item1.AnswerParse"
>
<text
style=
"color: #8c8a94"
>
解析:
</text>
<text
style=
"color: #000"
>
{{ item1.AnswerParse }}
</text>
</view>
</view>
</swiper-item>
<swiper-item
v-if=
"sortIndex != sortTotal"
>
<!-- 最后一页 -->
</swiper-item>
</swiper>
</view>
<van-toast
id=
"van-toast"
/>
</view>
}" :autoplay="autoplay" :current="current" @change="onchange" :skip-hidden-item-layout="true"
:disable-programmatic-animation="true">
<swiper-item
v-if=
"sortIndex != 1"
></swiper-item>
<swiper-item
v-for=
"(item1, index1) in data.DetailsList"
:key=
"index1"
>
<view
class=
"item1"
>
<view
class=
"flex flex_start_center"
>
<view
class=
"num"
v-html=
"item1.Title"
></view>
(
{{
item1
.
Score
}}
)
</view>
<view
v-for=
"(item2, index2) in item1.QuestionContentObj"
:key=
"index2"
class=
"flex item2 flex_start_center"
>
<template
v-if=
"isOperate"
>
<view
class=
"chooseNum"
:class=
"
{ myAnswer: item2.IsAnswer }"
@click="change(item1, item2)">
{{
item2
.
ShowName
}}
</view>
<view
class=
"chooseName"
@
click=
"change(item1, item2)"
v-html=
"item2.Content"
></view>
</
template
>
<
template
v-else
>
<view
class=
"chooseNum"
:class=
"
{ isTrueAnswer: item2.IsAnswer }">
{{
item2
.
Name
}}
</view>
<view
class=
"chooseName"
:class=
"
{ isTrueAnswer: item2.IsAnswer }"
v-html="item2.Content">
</view>
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate&&(ExamStatus==2||ExamStatus==3)"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{ item1.Answer }}
</text>
,
<text>
您的答案是:
<
template
v-if=
"item1.StundetAnswer != ''"
>
<text
v-if=
"item1.Answer == item1.StundetAnswer"
class=
"isTrueAnswer"
>
{{
item1
.
StundetAnswer
}}
,回答正确
</text>
<text
v-else
class=
"isNotAnswer"
>
{{
item1
.
StundetAnswer
}}
,回答错误
</text>
</
template
>
<
template
v-else
>
<text>
未作答
</text>
</
template
>
</text>
</view>
<view
style=
"margin-top: 20rpx; word-wrap: break-word"
class=
"flex"
v-if=
"item1.AnswerParse"
>
<text
style=
"color: #8c8a94;flex-shrink: 0;"
>
解析:
</text>
<view
style=
"color: #000"
v-html=
"item1.AnswerParse"
></view>
</view>
</view>
</swiper-item>
<swiper-item
v-if=
"sortIndex != sortTotal"
>
<!-- 最后一页 -->
</swiper-item>
</swiper>
</view>
<van-toast
id=
"van-toast"
/>
</view>
</template>
<
script
>
import
{
ref
,
reactive
,
toRefs
,
toRef
,
getCurrentInstance
,
watch
,
computed
,
onMounted
,
}
from
"vue"
;
import
{
changeNumToHan
}
from
"../../utils/index"
;
export
default
{
props
:
{
paperData
:
Object
,
sort
:
Number
,
sortTotal
:
Number
,
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
let
data
=
reactive
({
autoplay
:
false
,
sortIndex
:
props
.
sort
+
1
,
//大题序号
sortTotal
:
props
.
sortTotal
,
//总共多少道大题
data
:
props
.
paperData
,
current
:
1
,
//默认从第几个开始-用于从快捷菜单点入
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
data
.
current
=
0
;
//从答题卡进入
if
(
props
.
startIndex
)
{
data
.
current
=
props
.
startIndex
-
1
;
data
.
ExamIndex
=
props
.
startIndex
;
}
}
else
{
if
(
props
.
startIndex
)
{
data
.
current
=
props
.
startIndex
;
data
.
ExamIndex
=
props
.
startIndex
;
}
}
import
{
ref
,
reactive
,
toRefs
,
toRef
,
getCurrentInstance
,
watch
,
computed
,
onMounted
,
}
from
"vue"
;
import
{
changeNumToHan
}
from
"../../utils/index"
;
export
default
{
props
:
{
paperData
:
Object
,
sort
:
Number
,
sortTotal
:
Number
,
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
let
data
=
reactive
({
autoplay
:
false
,
sortIndex
:
props
.
sort
+
1
,
//大题序号
sortTotal
:
props
.
sortTotal
,
//总共多少道大题
data
:
props
.
paperData
,
current
:
1
,
//默认从第几个开始-用于从快捷菜单点入
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
data
.
current
=
0
;
//从答题卡进入
if
(
props
.
startIndex
)
{
data
.
current
=
props
.
startIndex
-
1
;
data
.
ExamIndex
=
props
.
startIndex
;
}
}
else
{
if
(
props
.
startIndex
)
{
data
.
current
=
props
.
startIndex
;
data
.
ExamIndex
=
props
.
startIndex
;
}
}
let
methods
=
{
changeNumToHan
,
jumpPage
()
{
uni
.
navigateTo
({
url
:
"/pages/exam/examPaper"
,
});
},
back
()
{
uni
.
navigateBack
();
},
//选题
change
(
item1
,
item2
)
{
context
.
emit
(
"answerChange"
,
data
.
data
);
item1
.
QuestionContentObj
.
map
((
e
)
=>
{
if
(
e
.
Name
==
item2
.
Name
)
{
e
.
IsAnswer
=
true
;
}
else
{
e
.
IsAnswer
=
false
;
}
if
(
e
.
IsAnswer
)
{
//标记已回答
item1
.
IsRes
=
true
;
}
});
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
let
methods
=
{
changeNumToHan
,
jumpPage
()
{
uni
.
navigateTo
({
url
:
"/pages/exam/examPaper"
,
});
},
back
()
{
uni
.
navigateBack
();
},
//选题
change
(
item1
,
item2
)
{
context
.
emit
(
"answerChange"
,
data
.
data
);
item1
.
QuestionContentObj
.
map
((
e
)
=>
{
if
(
e
.
Name
==
item2
.
Name
)
{
e
.
IsAnswer
=
true
;
}
else
{
e
.
IsAnswer
=
false
;
}
if
(
e
.
IsAnswer
)
{
//标记已回答
item1
.
IsRes
=
true
;
}
});
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
jumpAnswerSheet
()
{
uni
.
navigateTo
({
url
:
"/pages/exam/answerSheet"
,
});
},
};
onMounted
(()
=>
{
if
(
props
.
isLast
)
{
if
(
data
.
sortIndex
===
1
)
{
data
.
current
=
props
.
paperData
.
DetailsList
.
length
-
1
;
}
else
{
data
.
current
=
props
.
paperData
.
DetailsList
.
length
;
}
}
data
.
statusBarHeight
=
uni
.
getSystemInfoSync
().
statusBarHeight
;
});
let
that
=
methods
;
return
{
...
toRefs
(
data
),
...
methods
,
};
},
};
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
jumpAnswerSheet
()
{
uni
.
navigateTo
({
url
:
"/pages/exam/answerSheet"
,
});
},
};
onMounted
(()
=>
{
if
(
props
.
isLast
)
{
if
(
data
.
sortIndex
===
1
)
{
data
.
current
=
props
.
paperData
.
DetailsList
.
length
-
1
;
}
else
{
data
.
current
=
props
.
paperData
.
DetailsList
.
length
;
}
}
data
.
statusBarHeight
=
uni
.
getSystemInfoSync
().
statusBarHeight
;
});
let
that
=
methods
;
return
{
...
toRefs
(
data
),
...
methods
,
};
},
};
</
script
>
<
style
scoped
>
.name
{
height
:
90
rpx
;
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
800
;
color
:
#111111
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.name
{
height
:
90
rpx
;
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
800
;
color
:
#111111
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.isTrueAnswer
{
color
:
green
!important
;
}
.isTrueAnswer
{
color
:
green
!important
;
}
.isNotAnswer
{
color
:
red
!important
;
}
.isNotAnswer
{
color
:
red
!important
;
}
.AnswerContent
{
font-size
:
28
rpx
;
padding
:
25
rpx
;
background-color
:
#f4f4f4
;
border-radius
:
5px
;
}
.AnswerContent
{
font-size
:
28
rpx
;
padding
:
25
rpx
;
background-color
:
#f4f4f4
;
border-radius
:
5px
;
}
.Single_Before
{
font-size
:
28
rpx
;
font-weight
:
bold
;
color
:
#da7878
;
}
.Single_Before
{
font-size
:
28
rpx
;
font-weight
:
bold
;
color
:
#da7878
;
}
.ExamIndex_Box
{
margin-right
:
20px
;
}
.ExamIndex_Box
{
margin-right
:
20px
;
}
.Exam_Total
{
font-size
:
25
rpx
;
color
:
gray
;
}
.Exam_Total
{
font-size
:
25
rpx
;
color
:
gray
;
}
.answerSheet
{
font-size
:
30
rpx
;
margin-left
:
20
rpx
;
color
:
#000
;
}
.answerSheet
{
font-size
:
30
rpx
;
margin-left
:
20
rpx
;
color
:
#000
;
}
.swiper-box
{
box-sizing
:
border-box
;
}
.swiper-box
{
box-sizing
:
border-box
;
}
.num
{
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#111111
;
}
.num
{
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#111111
;
}
.item
{
/* margin-bottom: 40rpx; */
position
:
relative
;
}
.item
{
/* margin-bottom: 40rpx; */
position
:
relative
;
}
.item1
{
/* margin: 25rpx 0; */
align-items
:
center
;
}
.item1
{
/* margin: 25rpx 0; */
align-items
:
center
;
}
.item2
{
padding-left
:
25
rpx
;
margin
:
30
rpx
0
;
}
.item2
{
padding-left
:
25
rpx
;
margin
:
30
rpx
0
;
}
.myAnswer
{
background-color
:
#00acf9
!important
;
color
:
#ffffff
!important
;
}
.myAnswer
{
background-color
:
#00acf9
!important
;
color
:
#ffffff
!important
;
}
.chooseNum
{
width
:
40
rpx
;
height
:
40
rpx
;
text-align
:
center
;
line-height
:
40
rpx
;
border-radius
:
50%
;
border
:
1px
solid
#e2e2e2
;
margin-right
:
30
rpx
;
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#111111
;
}
.chooseNum
{
width
:
40
rpx
;
height
:
40
rpx
;
text-align
:
center
;
line-height
:
40
rpx
;
border-radius
:
50%
;
border
:
1px
solid
#e2e2e2
;
margin-right
:
30
rpx
;
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
bold
;
color
:
#111111
;
}
.chooseName
{
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
}
.chooseName
{
font-size
:
28
rpx
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
color
:
#111111
;
}
</
style
>
src/components/subject/SingleChoiceNumber.vue
View file @
6e3075f9
...
...
@@ -29,7 +29,7 @@
<swiper-item
v-for=
"(item1, index1) in data.DetailsList"
:key=
"index1"
>
<view
class=
"item1"
>
<view
class=
"flex flex_start_center"
>
<view
class=
"num"
v-html=
"item1.Title"
></view>
<view
class=
"num"
v-html=
"item1.Title"
></view>
(
{{
item1
.
Score
}}
)
</view>
<view
...
...
@@ -65,7 +65,7 @@
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{ item1.Answer }}
</text
...
...
@@ -126,6 +126,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -138,6 +139,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
src/components/subject/SortingProblem.vue
View file @
6e3075f9
...
...
@@ -80,7 +80,7 @@
</
template
>
</template>
<
template
v-else
>
<view
class=
"AnswerContent"
>
<view
class=
"AnswerContent"
v-if=
"ExamStatus==2||ExamStatus==3"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{
item1
.
Answer
}}
</text
...
...
@@ -146,6 +146,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -165,6 +166,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -197,11 +199,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/Spoken.vue
View file @
6e3075f9
...
...
@@ -48,7 +48,7 @@
<view
class=
"viewAnswerContent"
style=
"margin-top:15px;"
v-html=
"item1.Answer"
></view>
</
template
>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
您的答案:
<view
class=
"viewAnswerContent"
style=
"margin-top: 10px"
>
...
...
@@ -95,7 +95,8 @@ export default {
sortTotal
:
Number
,
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -107,7 +108,8 @@ export default {
current
:
1
,
//默认从第几个开始-用于从快捷菜单点入
ExamIndex
:
1
,
//第几题
statusBarHeight
:
0
,
isOperate
:
props
.
isOperate
isOperate
:
props
.
isOperate
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -135,11 +137,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/answer.vue
View file @
6e3075f9
...
...
@@ -95,6 +95,8 @@ export default {
props
:
{
paperData
:
Object
,
ExamStuId
:
Number
,
SubmitTimes
:
Number
,
StartTime
:
String
},
setup
(
props
,
ctx
)
{
let
Gid
=
uni
.
getStorageSync
(
"userInfo"
).
Id
;
...
...
@@ -115,11 +117,43 @@ export default {
back
()
{
ctx
.
emit
(
"hideAnswer"
);
},
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
},
getCeshi
(){
console
.
log
(
'测试来了'
);
},
//交卷
async
savePaper
()
{
let
obj
=
JSON
.
parse
(
JSON
.
stringify
(
props
.
paperData
.
Paper
));
delete
obj
.
Group_Id
;
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
;
if
(
TimeDis
<
props
.
SubmitTimes
){
uni
.
showToast
({
title
:
`开场不足
${
props
.
SubmitTimes
}
分钟禁止交卷哦~`
,
icon
:
"none"
,
});
return
}
let
res
=
await
submitPaper
(
obj
);
if
(
res
)
{
console
.
log
(
119
,
res
);
...
...
src/components/subject/easyQuestion.vue
View file @
6e3075f9
...
...
@@ -52,7 +52,7 @@
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
style=
"margin-top: 30rpx"
>
<view>
...
...
@@ -102,6 +102,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -117,6 +118,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -144,11 +146,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/judge.vue
View file @
6e3075f9
...
...
@@ -37,7 +37,7 @@
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
>
<view
class=
"AnswerContent"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{item1.Answer}}
</text>
,
...
...
@@ -94,6 +94,7 @@
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
...
...
@@ -108,6 +109,7 @@
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -147,10 +149,13 @@
onchange
(
e
)
{
context
.
emit
(
"answerChange"
,
data
.
data
);
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
}
...
...
src/components/subject/nounExplanation.vue
View file @
6e3075f9
...
...
@@ -50,7 +50,7 @@
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
style=
"margin-top: 30rpx"
>
<view>
...
...
@@ -100,6 +100,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -115,6 +116,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -142,11 +144,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/readingCompre.vue
View file @
6e3075f9
...
...
@@ -33,7 +33,7 @@
<view
style=
"white-space: nowrap"
>
{{
index2
+
1
}}
、(
{{
item2
.
QuestionName
.
slice
(
0
,
2
)
}}
)
</view>
<view
v-html=
"item2.SubTitle"
class=
"grow"
></view>
<view
v-html=
"item2.SubTitle"
></view>
(
{{
item2
.
SubScore
}}
)
</view>
<view
v-for=
"(item3, index3) in item2.SubAnwser"
:key=
"index3"
>
<!-- 单选 、判断-->
...
...
@@ -114,12 +114,12 @@
<view
v-html=
"item3.Content"
class=
"chooseName"
></view>
</view>
</view>
<view
class=
"AnswerContent"
>
<view
class=
"AnswerContent"
v-if=
"ExamStatus==2||ExamStatus==3"
>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{
item1
.
QuestionAnswerList
[
index2
].
SubAnswer
}}
</text>
,
<text>
您的答案:
<template
v-if=
"item
2.StundetAnswer != ''
"
>
<template
v-if=
"item
1.AnswerList && item1.AnswerList.length>0
"
>
<text
v-if=
"item1.QuestionAnswerList[index2].SubAnswer == item1.AnswerList[index2].SubAnswer"
class=
"isTrueAnswer"
>
{{
item1
.
AnswerList
[
index2
].
SubAnswer
}}
</text>
...
...
@@ -138,7 +138,7 @@
</view>
</view>
<view
style=
"word-wrap: break-word; margin: 0 30rpx 30rpx 30rpx"
class=
"AnswerContent"
v-if=
"item1.AnswerParse"
>
class=
"AnswerContent"
v-if=
"item1.AnswerParse
&&(ExamStatus==2||ExamStatus==3)
"
>
<text
style=
"color: #8c8a94"
>
解析:
</text>
<text
style=
"color: #000"
>
{{ item1.AnswerParse }}
</text>
</view>
...
...
@@ -176,6 +176,7 @@
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
...
...
@@ -194,6 +195,7 @@
timeOutEvent
:
false
,
statusBarHeight
:
0
,
isOperate
:
props
.
isOperate
,
ExamStatus
:
props
.
ExamStatus
});
//判断是否是第一大题
if
(
data
.
sortIndex
===
1
)
{
...
...
@@ -246,10 +248,13 @@
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/components/subject/shortAnswer.vue
View file @
6e3075f9
...
...
@@ -49,7 +49,7 @@
</view>
<view
class=
"AnswerContent"
v-if=
"!isOperate"
v-if=
"!isOperate
&&(ExamStatus==2||ExamStatus==3)
"
style=
"margin-top: 30rpx"
>
<view>
...
...
@@ -99,6 +99,7 @@ export default {
isLast
:
Boolean
,
startIndex
:
Number
,
isOperate
:
Boolean
,
ExamStatus
:
Number
},
setup
(
props
,
context
)
{
let
{
ctx
}
=
getCurrentInstance
();
...
...
@@ -115,6 +116,7 @@ export default {
ExamIndex
:
1
,
//第几题
isOperate
:
props
.
isOperate
,
statusBarHeight
:
0
,
ExamStatus
:
props
.
ExamStatus
});
if
(
props
.
startIndex
)
{
data
.
current
=
props
.
startIndex
;
...
...
@@ -136,11 +138,13 @@ export default {
},
onchange
(
e
)
{
data
.
ExamIndex
=
e
.
detail
.
current
;
if
(
data
.
sortIndex
==
1
)
{
data
.
ExamIndex
=
e
.
detail
.
current
+
1
;
}
if
(
data
.
ExamIndex
===
data
.
data
.
DetailsList
.
length
+
1
)
{
console
.
log
(
"进入"
);
this
.
$emit
(
"getAfterTopic"
);
}
if
(
e
.
detail
.
current
==
0
)
{
if
(
e
.
detail
.
current
==
0
&&
data
.
sortIndex
!=
1
)
{
this
.
$emit
(
"getBeforeTopic"
);
}
},
...
...
src/pages/exam/examPaper.vue
View file @
6e3075f9
...
...
@@ -48,6 +48,7 @@
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isLast=
"isLast"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
v-if=
"
item.QuestionTypeKey === 'single-number' && index === changeIndex
"
...
...
@@ -60,6 +61,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getBeforeTopic=
"getBeforeTopic()"
@
getAfterTopic=
"getAfterTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -73,6 +75,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getBeforeTopic=
"getBeforeTopic()"
@
getAfterTopic=
"getAfterTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -86,6 +89,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getBeforeTopic=
"getBeforeTopic()"
@
getAfterTopic=
"getAfterTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -99,6 +103,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getBeforeTopic=
"getBeforeTopic()"
@
getAfterTopic=
"getAfterTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -113,6 +118,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -129,6 +135,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -142,6 +149,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -157,6 +165,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -172,6 +181,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -187,6 +197,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -200,6 +211,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -215,6 +227,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -228,6 +241,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -241,6 +255,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -254,6 +269,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -269,6 +285,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -284,6 +301,7 @@
:sort=
"index"
:sortTotal=
"peaperDetail.Paper.GroupList.length"
:isOperate=
"isOperate"
:ExamStatus=
"ExamStatus"
@
getAfterTopic=
"getAfterTopic()"
@
getBeforeTopic=
"getBeforeTopic()"
@
answerChange=
"getAnswerChange($event, index)"
...
...
@@ -309,6 +327,8 @@
<Answer
:paperData=
"peaperDetail"
:ExamStuId=
"Exam_Student_Id"
:StartTime=
"StartTime"
:SubmitTimes=
"SubmitTimes"
@
hideAnswer=
"hideAnswerSheet"
@
chooseTopic=
"jumpTopic"
ref=
"answer"
...
...
@@ -388,8 +408,11 @@ export default {
isShowAnswer
:
false
,
//是否显示答题卡
Exam_Student_Id
:
0
,
autoTimeStart
:
false
,
isOperate
:
true
,
//考试状态 判断是考试还是查看答案
isAutoTime
:
true
isOperate
:
false
,
//考试状态 判断是考试还是查看答案
isAutoTime
:
false
,
ExamStatus
:
-
2
,
StartTime
:
''
,
//页面加载后的时间
SubmitTimes
:
0
//后台设置几分钟后可提交
});
let
methods
=
{
changeNumToHan
,
...
...
@@ -409,10 +432,15 @@ export default {
if
(
res
)
{
if
(
res
.
Code
==
1
)
{
data
.
peaperDetail
=
res
.
Data
;
//判断是查看答题结果就不倒计时
if
(
this
.
isAutoTime
){
data
.
autoTimeStart
=
true
;
data
.
time
=
res
.
Data
.
Publish
.
ExamTimes
*
60
*
1000
;
//-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
=
60000
}
}
}
...
...
@@ -449,12 +477,24 @@ export default {
},
//考试结束
examFinish
()
{
if
(
data
.
peaperDetail
.
Publish
.
IsAutoSubmit
===
1
)
{
}
console
.
log
(
'进入'
);
this
.
$refs
.
answer
.
getCeshi
();
},
};
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
),
...
...
@@ -474,10 +514,8 @@ export default {
if
(
options
.
Exam_Student_Id
)
{
this
.
Exam_Student_Id
=
options
.
Exam_Student_Id
;
}
if
(
options
.
ExamStatus
&&
(
options
.
ExamStatus
==
1
||
options
.
ExamStatus
==
2
))
{
this
.
isOperate
=
false
;
if
(
options
.
ExamStatus
&&
(
options
.
ExamStatus
==
1
||
options
.
ExamStatus
==
3
))
{
this
.
msg
.
isShowAnswer
=
true
;
this
.
isAutoTime
=
false
;
}
this
.
getPaperDetail
();
},
...
...
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