Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
eduline
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
冷斌
eduline
Commits
12292406
Commit
12292406
authored
Jun 04, 2020
by
冷斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug
parent
005724fa
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
240 additions
and
719 deletions
+240
-719
apps/exams/Tpl/default/Index/examsroom_w3g.html
+240
-719
No files found.
apps/exams/Tpl/default/Index/examsroom_w3g.html
View file @
12292406
<include
file=
"__THEME__/public_header_w3g"
/>
<style
type=
"text/css"
>
/*比较多用到的*/
.box
{
display
:
flex
;
display
:
-webkit-flex
;
align-items
:
center
;
}
.boxCn
{
display
:
flex
!important
;
display
:
-webkit-flex
;
align-items
:
center
;
justify-content
:
center
!important
;
}
.flex1
{
flex
:
1
;
}
/*遮罩层*/
.mask
{
position
:
fixed
!important
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
background
:
rgba
(
0
,
0
,
0
,
0.5
);
transition
:
all
.3s
ease-in-out
;
z-index
:
8
;
}
.popUp
{
background-color
:
#FFFFFF
;
z-index
:
10
;
width
:
16.875rem
;
border-radius
:
0.5rem
;
overflow
:
hidden
;
position
:
fixed
;
top
:
50%
;
left
:
50%
;
-webkit-transform
:
translate
(
-50%
,
-50%
);
-moz-transform
:
translate
(
-50%
,
-50%
);
transform
:
translate
(
-50%
,
-50%
);
}
.popUp_title
{
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
font-size
:
1.125rem
;
height
:
1.5625rem
;
line-height
:
1.5625rem
;
margin-top
:
0.9375rem
;
padding
:
0
1rem
;
box-sizing
:
border-box
;
text-align
:
center
;
}
.popUp_content
{
padding
:
1rem
1rem
;
box-sizing
:
border-box
;
text-align
:
center
;
font-size
:
0.875rem
;
color
:
#333333
;
}
.popUp_btns
{
border-top
:
1px
solid
#eeeeee
;
}
.popUp_btn
{
flex
:
1
;
text-align
:
center
;
line-height
:
3.125rem
;
height
:
3.125rem
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
font-size
:
1rem
;
box-sizing
:
border-box
;
background-color
:
#FFFFFF
;
}
.popUp_btn0
{
color
:
#999999
;
border-right
:
1px
solid
#eeeeee
;
}
.popUp_btn1
{
color
:
#65C000
;
}
/*jixu*/
.stopBox
{
width
:
100%
;
position
:
fixed
;
top
:
50%
;
left
:
50%
;
z-index
:
10
;
-webkit-transform
:
translate
(
-50%
,
-50%
);
-moz-transform
:
translate
(
-50%
,
-50%
);
transform
:
translate
(
-50%
,
-50%
);
}
.stopBtn
{
width
:
10rem
;
height
:
3rem
;
line-height
:
3rem
;
display
:
block
;
margin
:
2rem
auto
;
color
:
#FFFFFF
;
font-size
:
1rem
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
box-sizing
:
border-box
;
text-align
:
center
;
border-radius
:
1.5rem
;
}
.stopBtn_on
{
background-color
:
#A3E460
;
}
.stopBtn_out
{
border
:
1px
solid
rgba
(
204
,
204
,
204
,
1
);
}
body
{
background-color
:
#fff
;
}
.testPaperTop
{
height
:
2.25rem
;
padding
:
0
0.75rem
;
box-sizing
:
border-box
;
border-bottom
:
1px
solid
#F5F5F5
;
width
:
100%
;
position
:
fixed
;
top
:
0
;
left
:
0
;
z-index
:
1
;
background-color
:
#FFFFFF
;
}
.testPaperTop_time
{
font-size
:
0.75rem
}
.testPaperTop_da
{
font-size
:
0.75rem
;
color
:
#999999
;
}
.testPaperTop_pau
{
margin-left
:
1.875rem
;
width
:
0.75rem
;
height
:
0.75rem
;
}
.testPaperBotm
{
padding
:
0.75rem
0.75rem
0.75rem
;
box-sizing
:
border-box
;
margin-top
:
2.25rem
;
}
.testPaperNum
{
margin-right
:
0.75rem
;
color
:
#999999
;
font-size
:
0.75rem
;
}
.testPaperLei
{
font-size
:
0.75rem
;
color
:
#333333
;
}
.testPaperColl
{
width
:
1rem
;
height
:
1rem
;
}
.testPaperInfo
{
margin-top
:
0.5rem
;
font-size
:
1rem
;
line-height
:
1.875rem
;
color
:
#333333
;
}
.testPaperAnswer
{
margin-top
:
1rem
;
align-items
:
flex-start
;
}
.testPaperAnswer_num
{
display
:
inline-block
;
width
:
2.25rem
;
height
:
2.25rem
;
border-radius
:
100%
;
border
:
1px
solid
rgba
(
163
,
228
,
96
,
1
);
text-align
:
center
;
line-height
:
2.25rem
;
color
:
#65C000
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
font-size
:
0.875rem
;
margin-right
:
0.75rem
;
}
.testPaperAnswer_numAt
{
background-color
:
#A3E460
;
color
:
#FFFFFF
;
}
.testPaperAnswer_desc
{
line-height
:
1.25rem
;
margin
:
0
;
}
.testPaperBtns
{
justify-content
:
space-between
;
padding
:
3rem
0.75rem
1rem
;
box-sizing
:
border-box
;
width
:
100%
;
}
.testPaperBtn
{
width
:
10rem
;
height
:
3rem
;
line-height
:
3rem
;
text-align
:
center
;
border
:
1px
solid
rgba
(
163
,
228
,
96
,
1
);
border-radius
:
1.5rem
;
box-sizing
:
border-box
;
font-size
:
1rem
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#65C000
;
}
.testPaperBtn1
{
color
:
#FFFFFF
;
background
:
rgba
(
163
,
228
,
96
,
1
);
}
.testPaperJiedaPage
{
padding
:
0
0.75rem
;
box-sizing
:
border-box
;
}
.testPaperJiedaBox
{
padding
:
1rem
0
;
}
.testPaperJiedaBtn
{
color
:
#65C000
;
font-size
:
0.875rem
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
}
.testPaperJiedaBtn_icon
{
margin-left
:
0.5rem
;
width
:
0.75rem
;
height
:
0.75rem
;
}
.testPaperAnswers
{
padding
:
0.5rem
0
0.25rem
;
}
.testPaperAnswer
{
padding
:
0.5rem
0
;
color
:
#333333
;
font-size
:
1rem
;
margin
:
0
;
}
.testPaperAnswer_n
{
color
:
#65C000
;
}
.testPaperAnswer_e
{
color
:
red
;
}
.testPaperAnswer_infoBox
{
padding
:
0.1875rem
0.75rem
0.75rem
;
box-sizing
:
border-box
;
border-top
:
1px
solid
#f5f5f5
;
}
.testPaperAnswer_infoTitle
{
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#333333
;
font-size
:
1rem
;
padding
:
0.75rem
0
0.75rem
0.75rem
;
box-sizing
:
border-box
;
position
:
relative
;
margin
:
0
;
}
.testPaperAnswer_infoTitle
::before
{
content
:
""
;
position
:
absolute
;
left
:
0
;
top
:
50%
;
width
:
4px
;
height
:
4px
;
border-radius
:
100%
;
background-color
:
#A3E460
;
margin-top
:
-2px
;
}
.testPaperAnswer_info
{
color
:
#333333
;
font-size
:
1rem
;
line-height
:
1.875rem
;
}
</style>
<div
id=
"app"
>
<div
v-show=
"!review"
class=
"testPaperTop box"
>
<p
class=
"testPaperTop_time flex1"
>
{{countDown}}
</p>
<span
class=
"testPaperTop_da"
>
答题卡
</span>
<img
@
click=
"onCounting"
class=
"testPaperTop_pau"
:src=
"counting ? '__THEME__/img/pau.png' : '__THEME__/img/right_arrow.png'"
>
</div>
<div
class=
"testPaperBotm"
>
<div
class=
"box"
>
<span
class=
"testPaperNum"
>
{{current}}/{{totalQuestion}}
</span>
<p
class=
"testPaperLei flex1"
>
({{currentQuestionTypeName}})
</p>
<img
v-if=
"currentQuestion.is_collect == 0"
@
click=
"onCollect(1)"
class=
"testPaperColl"
src=
"__THEME__/img/share_unstar.png"
>
<img
v-if=
"currentQuestion.is_collect == 1"
@
click=
"onCollect(0)"
class=
"testPaperColl"
src=
"__THEME__/img/share_star.png"
>
<include
file=
"__THEME__/public_header_w3g"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"__APP__/css/public.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"__APP__/icon/iconfont.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"__APP__/css/public_header_footer_media.css"
>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"__APP__/css/exam_2.0.css"
>
<div
class=
"cover"
></div>
<div
class=
"min-height-wrap"
>
<div
class=
"exam-header"
>
<div
class=
"back-date"
>
<i
class=
"icon icon-fanhui1"
style=
"display: none;"
></i>
<small>
<php>
if($paper['reply_time']){
</php>
<span
id=
"time_hh"
>
-
</span>
:
<span
id=
"time_mm"
>
-
</span>
:
<span
id=
"time_ss"
>
-
</span>
<php>
}else{
</php>
<span>
不限时
</span>
<php>
}
</php>
</small>
</div>
<template
v-if=
"showChoiceQuestion"
>
<div
v-html=
"currentQuestion.content"
class=
"testPaperInfo"
></div>
<ul>
<li
v-for=
"(opt, index) in currentOptions"
:key=
"index"
class=
"testPaperAnswer box"
>
<span
@
click=
"onChoose(opt)"
class=
"testPaperAnswer_num"
:class=
"opt.selected ? 'testPaperAnswer_numAt' : ''"
>
{{opt.key}}
</span>
<div
v-html=
"opt.value"
class=
"testPaperAnswer_desc flex1"
style=
"margin-top: 0.625rem;"
></div>
</li>
</ul>
</template>
</div>
<div
v-if=
"current == 1"
class=
"testPaperBtns boxCn"
>
<p
@
click=
"onNextQuestion"
class=
"testPaperBtn testPaperBtn1"
style=
"width: 15rem;"
>
下一题
</p>
</div>
<div
v-if=
"current > 1"
class=
"testPaperBtns box"
>
<p
@
click=
"onPreviousQuestion"
class=
"testPaperBtn"
>
上一题
</p>
<p
@
click=
"onNextQuestion"
class=
"testPaperBtn testPaperBtn1"
>
{{nextButton}}
</p>
</div>
<!-- 解析 -->
<div
v-if=
"review"
class=
"testPaperJiedaPage"
>
<div
class=
"box testPaperJiedaBox"
>
<span
@
click=
"expand = !expand"
class=
"testPaperJiedaBtn box"
>
{{expand ? '收起解析' : '查看解析'}}
<img
class=
"testPaperJiedaBtn_icon"
src=
"__THEME__/img/openBtn.png"
></span>
</div>
<ul
v-if=
"expand"
class=
"testPaperAnswers"
>
<li
class=
"testPaperAnswer"
>
正确答案:
<span
v-for=
"(answer, index) in currentRightOptions"
:key=
"index"
class=
"testPaperAnswer_n"
>
{{answer}}
</span></li>
<li
class=
"testPaperAnswer"
>
我的答案:
<span
v-for=
"(answer, index) in currentMyOptions"
:key=
"index"
:class=
"answer.right ? 'testPaperAnswer_n' : 'testPaperAnswer_e'"
>
{{answer.key}}
</span></li>
</ul>
<div
v-if=
"expand"
class=
"testPaperAnswer_infoBox"
>
<p
class=
"testPaperAnswer_infoTitle"
>
解析
</p>
<div
v-html=
"currentAnalyze"
class=
"testPaperAnswer_info"
>
</div>
<div
class=
"view-stop"
>
<neq
name=
"Think.get.joinType"
value=
"2"
><i
class=
"icon icon-zanting"
></i></neq>
<a
href=
"javascript:;"
id=
"show-answer-card"
><i
class=
"icon icon-datiqia"
></i></a>
</div>
<neq
name=
"Think.get.joinType"
value=
"2"
>
<ul
class=
"the-stop"
>
<li>
继续
</li>
<if
condition=
"$paper['assembly_type'] neq 1"
><li
id=
"progressExams"
>
下次再做
</li></if>
</ul>
</neq>
</div>
<!-- 交卷 -->
<div
class=
"mask"
v-if=
"showFinish"
>
<div
class=
"popUp"
>
<p
class=
"popUp_title"
>
提示
</p>
<div
class=
"popUp_content"
>
是否交卷并退出考试?
</div>
<div
class=
"popUp_btns box"
>
<span
@
click=
"onCancel"
class=
"popUp_btn popUp_btn0 flex1"
>
取消
</span>
<span
@
click=
"onSure"
class=
"popUp_btn popUp_btn1 flex1"
>
确定
</span>
</div>
<div
class=
"answer-card"
>
<php>
$question_num = 1;
</php>
<volist
name=
"paper_options.options_type"
id=
"options_type"
>
<php>
if(!$paper_options['options_questions_data'][$options_type['question_type']]){
break;
}
</php>
<dl>
<dt><h6>
{$options_type.type_info.question_type_title}
</h6></dt>
<dd>
<volist
name=
"paper_options['options_questions_data'][$options_type['question_type']]"
id=
"question"
>
<a
id=
"card{$question_num}"
<
php
>
if(isset($tempData['content'][$question['exams_question_id']])){ echo "class='on go_question'";}
</php>
href="javascript:;" data-question_num="{$question_num}" class="go_question">{$question_num}
</a>
<php>
$question_num++;
</php>
</volist>
</dd>
</dl>
</volist>
<div
class=
"btns-complete"
>
<a
href=
"javascript:void(0)"
style=
"color:#fff;"
class=
"assignment"
>
交卷
</a>
</div>
</div>
<!-- 暂停 -->
<div
class=
"mask"
v-if=
"showPause"
>
<div
class=
"stopBox"
>
<span
@
click=
"onContinue"
class=
"stopBtn stopBtn_on"
>
继续
</span>
<span
@
click=
"onQuit"
class=
"stopBtn stopBtn_out"
>
退出
</span>
<input
type=
"hidden"
name=
"reply_time"
value=
"{$paper.reply_time|default='0'}"
/>
<form
name=
"answers"
method=
"POST"
action=
"{:U('exams/Index/doHaddleExams')}"
>
<input
type=
"hidden"
name=
"anser_time"
id=
"anser_time"
value=
"{$tempData.anser_time|default='0'}"
>
<input
type=
"hidden"
name=
"exams_mode"
value=
"{$Think.get.joinType|default=1}"
>
<input
type=
"hidden"
name=
"paper_id"
value=
"{$paper.exams_paper_id}"
>
<input
type=
"hidden"
name=
"ch_id"
value=
"{$_GET['s_id']}"
>
<input
type=
"hidden"
name=
"view_url"
value=
"{$_GET['view']}"
>
<input
type=
"hidden"
name=
"is_timeout"
value=
"0"
>
<php>
if($tempData){
</php>
<input
type=
"hidden"
name=
"exams_users_id"
value=
"{$tempData.exams_users_id}"
>
<php>
}
</php>
<input
type=
"hidden"
name=
"paper_options_id"
value=
"{$paper_options.exams_paper_options_id}"
>
<div
class=
"static-exam"
>
<php>
$question_num = 1;
</php>
<volist
name=
"paper_options.options_type"
id=
"options_type"
>
<switch
name=
"options_type.question_type_key"
>
<case
value=
"radio|judge|multiselect"
>
<!-- 单选题 -->
<volist
name=
"paper_options['options_questions_data'][$options_type['question_type']]"
id=
"question"
>
<dl
id=
"ex{$question_num}"
data-type=
"{$options_type.question_type_key}"
data-question_num=
"{$question_num}"
>
<dt>
<h5><small>
{$question_num}
</small>
/{$paper_options.questions_count}
<strong>
{$options_type.type_info.question_type_title}
</strong></h5>
<h3>
{$question.content}
</h3>
</dt>
<dd>
<php>
if($tempData){
$content = isset($tempData['content'][$question['exams_question_id']]) ? $tempData['content'][$question['exams_question_id']] : [];
}else{
$content = [];
}
</php>
<volist
name=
"question.answer_options"
id=
"answer"
>
<div
class=
"answer_box"
>
<p
class=
"answer_p<php>if(in_array($key,$content)){</php> on<php>}</php>"
data-answer=
"{$key}"
><em>
{$key}
</em>
{$answer}
</p>
</div>
</volist>
<div
class=
"user_answer_hidden"
>
<input
type=
"hidden"
name=
"user_answer[{$question.exams_question_id}]"
value=
"{:implode(',',$content)}"
>
</div>
</dd>
<a
href=
"javascript:;"
data-question_num=
"{$question_num}"
class=
"next next_question"
>
下一题
</a>
<div
class=
"operation"
>
<div
class=
"operation-tit"
>
<eq
name=
"isPractice"
value=
"1"
><strong><small>
查看解析
</small><i
class=
"icon icon-arrowDown"
></i></strong></eq>
<php>
if($question['is_collect'] == 1){
</php>
<b
data-question_id=
"{$question.exams_question_id}"
data-action=
"0"
>
<i
class=
"icon icon-shoucang2"
style=
"color:#F7B659;"
></i><small>
已收藏
</small>
</b>
<php>
}else{
</php>
<b
data-question_id=
"{$question.exams_question_id}"
data-action=
"1"
>
<i
class=
"icon icon-area1"
></i><span>
考点:{$question.exams_point_title}
</span>
<i
class=
"icon icon-shoucang2"
></i><small>
收藏习题
</small>
</b>
<php>
}
</php>
</div>
<eq
name=
"isPractice"
value=
"1"
>
<!--答案解析-->
<div
class=
"analysis"
>
<div
class=
"analysis-pic"
>
<h6>
正确答案
</h6><abbr><volist
name=
"question.answer_true_option"
id=
"answer_true"
>
{$answer_true}
</volist></abbr>
</div>
<div
class=
"analysis-txt"
>
<h6>
解析
</h6>
<p>
{$question.analyze}
</p>
</div>
</div>
</eq>
</div>
</dl>
<php>
$question_num++;
</php>
</volist>
</case>
<case
value=
"completion"
>
<!-- 填空题 -->
<volist
name=
"paper_options['options_questions_data'][$options_type['question_type']]"
id=
"question"
>
<dl
id=
"ex{$question_num}"
data-type=
"{$options_type.question_type_key}"
data-question_num=
"{$question_num}"
>
<dt>
<h5><small>
{$question_num}
</small>
/{$paper_options.questions_count}
<strong>
{$options_type.type_info.question_type_title}
</strong></h5>
<h3>
{$question.content}
</h3>
</dt>
<dd>
<php>
if($tempData){
$content = isset($tempData['content'][$question['exams_question_id']]) ? $tempData['content'][$question['exams_question_id']] : [];
}else{
$content = [];
}
</php>
<volist
name=
"question.answer_true_option"
id=
"answer"
>
<label>
{$i}、
<input
type=
"text"
class=
"anserItem"
<
php
>
if($content){
</php>
value="{$content[$i-1]}"
<php>
}
</php>
name="user_answer[{$question.exams_question_id}][]">
</label>
</volist>
</dd>
<a
href=
"javascript:;"
data-question_num=
"{$question_num}"
class=
"next next_question"
>
下一题
</a>
<div
class=
"operation"
>
<div
class=
"operation-tit"
>
<eq
name=
"isPractice"
value=
"1"
><strong><small>
查看解析
</small><i
class=
"icon icon-arrowDown"
></i></strong></eq>
<php>
if($question['is_collect'] == 1){
</php>
<b
data-question_id=
"{$question.exams_question_id}"
data-action=
"0"
><i
class=
"icon icon-shoucang2"
style=
"color:#F7B659;"
></i><small>
已收藏
</small></b>
<php>
}else{
</php>
<b
data-question_id=
"{$question.exams_question_id}"
data-action=
"1"
>
<i
class=
"icon icon-area1"
></i><span>
考点:{$question.exams_point_title}
</span>
<i
class=
"icon icon-shoucang2"
></i><small>
收藏习题
</small>
</b>
<php>
}
</php>
</div>
<eq
name=
"isPractice"
value=
"1"
>
<!--答案解析-->
<div
class=
"analysis"
>
<div
class=
"analysis-pic"
>
<h5>
正确答案
</h5>
<ul>
<volist
name=
"question.answer_true_option"
id=
"answer_true"
>
<li>
{$i}、{$answer_true}
</li>
</volist>
</ul>
</div>
<div
class=
"analysis-txt"
>
<h6>
解析
</h6>
<p>
{$question.analyze}
</p>
</div>
</div>
</eq>
</div>
</dl>
<php>
$question_num++;
</php>
</volist>
</case>
<case
value=
"essays"
>
<!-- 简述题-->
<volist
name=
"paper_options['options_questions_data'][$options_type['question_type']]"
id=
"question"
>
<dl
id=
"ex{$question_num}"
data-type=
"{$options_type.question_type_key}"
data-question_num=
"{$question_num}"
>
<dt>
<h5><small>
{$question_num}
</small>
/{$paper_options.questions_count}
<strong>
{$options_type.type_info.question_type_title}
</strong></h5>
<h3>
{$question.content}
</h3>
</dt>
<dd>
<php>
if($tempData){
$content = isset($tempData['content'][$question['exams_question_id']]) ? $tempData['content'][$question['exams_question_id']] : [];
}else{
$content = [];
}
</php>
<textarea
class=
"anserItem"
name=
"user_answer[{$question.exams_question_id}]"
>
{$content[0]|default=''}
</textarea>
</dd>
<a
href=
"javascript:;"
data-question_num=
"{$question_num}"
class=
"next next_question"
>
下一题
</a>
<div
class=
"operation"
>
<div
class=
"operation-tit"
>
<eq
name=
"isPractice"
value=
"1"
><strong><small>
查看解析
</small><i
class=
"icon icon-arrowDown"
></i></strong></eq>
<php>
if($question['is_collect'] == 1){
</php>
<b
data-question_id=
"{$question.exams_question_id}"
data-action=
"0"
><i
class=
"icon icon-shoucang2"
style=
"color:#F7B659;"
></i><small>
已收藏
</small></b>
<php>
}else{
</php>
<b
data-question_id=
"{$question.exams_question_id}"
data-action=
"1"
>
<i
class=
"icon icon-area1"
></i><span>
考点:{$question.exams_point_title}
</span>
<i
class=
"icon icon-shoucang2"
></i><small>
收藏习题
</small>
</b>
<php>
}
</php>
</div>
<eq
name=
"isPractice"
value=
"1"
>
<!--答案解析-->
<div
class=
"analysis"
>
<div
class=
"analysis-txt"
>
<h6>
解析
</h6>
<p>
{$question.analyze}
</p>
</div>
</div>
</eq>
</div>
</dl>
<php>
$question_num++;
</php>
</volist>
</case>
</switch>
</volist>
</div>
</div>
</form>
</div>
<
include
file=
"__THEME__/public_footer_w3g"
/
>
<include
file=
"__THEME__/public_footer_w3g"
/>
<
script
src=
"__APP__/js/public_header_footer_media.js"
></script
>
<script
src=
"__APP__/js/public_exam_3g.js"
></script>
<script
type=
"text/javascript"
>
new
Vue
({
el
:
"#app"
,
data
:
function
()
{
return
{
info
:
{},
temp
:
{},
current
:
1
,
paperOptions
:
{},
counting
:
true
,
review
:
false
,
countDown
:
"00:00:00"
,
timeConsumed
:
0
,
expand
:
false
,
showPause
:
false
,
showFinish
:
false
,
//选项
currentOptions
:
[],
finished
:
[]
if
(
"{$_GET['examsresult']}"
){
var
re
=
"{:jiemi($_GET['examsresult'])}"
,
ve
=
"{:jiemi($_GET['view'])}"
;
layer
.
open
({
content
:
'课时考试'
,
btn
:
[
'查看结果'
,
'返回课程'
],
yes
:
function
(){
window
.
location
.
href
=
re
;
},
no
:
function
(){
window
.
location
.
href
=
ve
;
}
},
computed
:
{
//computed
nextButton
:
function
()
{
if
(
this
.
review
)
{
return
this
.
current
==
this
.
totalQuestion
?
'返回'
:
'下一题'
}
else
{
return
this
.
current
==
this
.
totalQuestion
?
'交卷'
:
'下一题'
}
},
});
totalQuestion
:
function
()
{
let
count
=
0
let
data
=
this
.
paperOptions
.
options_questions_data
this
.
paperOptions
.
options_type
.
forEach
(
r
=>
{
count
+=
data
[
r
.
question_type
].
length
})
return
count
},
currentTypeIndex
:
function
()
{
let
count
=
0
let
data
=
this
.
paperOptions
.
options_questions_data
let
current
=
this
.
current
for
(
let
i
=
0
;
i
<
this
.
paperOptions
.
options_type
.
length
;
i
++
)
{
let
r
=
this
.
paperOptions
.
options_type
[
i
]
let
next
=
count
+
data
[
r
.
question_type
].
length
if
(
current
>
count
&&
current
<=
next
)
{
return
i
}
else
{
count
=
next
}
}
},
currentQuestions
:
function
()
{
let
optionType
=
this
.
currentQuestionType
let
questionType
=
optionType
.
question_type
let
questionData
=
this
.
paperOptions
.
options_questions_data
let
questions
=
questionData
[
questionType
]
return
questions
},
currentQuestionType
:
function
()
{
return
this
.
paperOptions
.
options_type
[
this
.
currentTypeIndex
]
},
currentQuestionTypeName
:
function
()
{
return
this
.
currentQuestionType
.
type_info
.
question_type_title
},
currentQuestionTypeKey
:
function
()
{
return
this
.
currentQuestionType
.
question_type_key
},
currentQuestion
:
function
()
{
let
count
=
0
let
data
=
this
.
paperOptions
.
options_questions_data
let
current
=
this
.
current
for
(
let
i
=
0
;
i
<
this
.
paperOptions
.
options_type
.
length
;
i
++
)
{
let
r
=
this
.
paperOptions
.
options_type
[
i
]
let
next
=
count
+
data
[
r
.
question_type
].
length
if
(
current
>
count
&&
current
<=
next
)
{
return
data
[
r
.
question_type
][
current
-
count
-
1
]
}
else
{
count
=
next
}
}
},
//选择题答案
currentRightOptions
:
function
()
{
return
this
.
currentQuestion
.
answer_true_option
},
//我的答案
currentMyOptions
:
function
()
{
let
cur
=
this
.
currentRightOptions
return
this
.
currentOptions
.
filter
(
r
=>
{
return
r
.
selected
}).
map
(
r
=>
{
return
{
right
:
cur
.
hx_indexOf
(
k
=>
{
return
k
==
r
.
key
})
!=
-
1
,
key
:
r
.
key
}
})
},
//解析
currentAnalyze
:
function
()
{
return
this
.
currentQuestion
.
analyze
},
//Helper
showChoiceQuestion
:
function
()
{
let
key
=
this
.
currentQuestionTypeKey
return
key
==
'radio'
||
key
==
'multiselect'
||
key
==
'judge'
}
},
created
:
function
()
{
this
.
info
=
{:
json_encode
(
$paper
)};
this
.
temp
=
{:
json_encode
(
$tempData
)};
this
.
paperOptions
=
{:
json_encode
(
$paper_options
)};
this
.
review
=
"{$review}"
this
.
initAnswerMode
()
this
.
doCountDown
()
if
(
this
.
review
)
{
this
.
countDown
=
""
this
.
expand
=
true
}
console
.
log
(
"Review = "
+
this
.
review
)
console
.
log
(
this
.
info
)
console
.
log
(
this
.
temp
)
console
.
log
(
this
.
paperOptions
)
},
watch
:
{
current
:
function
(
o
,
n
)
{
this
.
initAnswerMode
()
}
},
methods
:
{
initAnswerMode
:
function
()
{
let
q
=
this
.
currentQuestionTypeKey
switch
(
q
)
{
case
"radio"
:
this
.
currentOptions
=
[]
let
Q
=
this
.
currentQuestion
let
old
=
this
.
finished
.
hx_firstOf
(
r
=>
{
return
r
.
qId
==
Q
.
exams_question_id
})
for
(
let
k
in
Q
.
answer_options
)
{
let
value
=
Q
.
answer_options
[
k
]
let
select
=
old
?
old
.
option
==
k
:
false
this
.
currentOptions
.
push
({
key
:
k
,
value
:
value
,
selected
:
select
})
}
break
}
},
recordData
:
function
()
{
return
{
paperId
:
this
.
info
.
exams_paper_id
,
timeConsumed
:
this
.
timeConsumed
,
questionIndex
:
this
.
current
,
finished
:
this
.
finished
}
},
doCountDown
:
function
()
{
if
(
!
this
.
counting
||
this
.
review
)
{
return
}
if
(
this
.
info
.
reply_time
)
{
let
time
=
this
.
info
.
reply_time
*
60
-
this
.
timeConsumed
if
(
time
<=
0
)
{
this
.
showFinish
=
true
}
else
{
let
hours
=
Math
.
floor
(
time
/
3600
)
let
minutes
=
Math
.
floor
((
time
%
3600
)
/
60
)
let
seconds
=
Math
.
round
(
time
%
60
)
this
.
countDown
=
(
hours
<
10
?
'0'
+
hours
:
hours
)
+
":"
+
(
minutes
<
10
?
'0'
+
minutes
:
minutes
)
+
":"
+
(
seconds
<
10
?
'0'
+
seconds
:
seconds
)
setTimeout
(
this
.
doCountDown
,
1000
)
this
.
timeConsumed
+=
1
}
}
else
{
this
.
countDown
=
"不限时"
}
},
onCollect
:
function
(
collect
)
{
let
that
=
this
$
.
post
(
U
(
'exams/Index/collect'
),
{
action
:
collect
,
source_id
:
that
.
currentQuestion
.
exams_question_id
},
function
(
res
)
{
let
r
=
JSON
.
parse
(
res
)
if
(
r
.
status
==
1
)
{
that
.
currentQuestion
.
is_collect
=
collect
}
})
},
onChoose
:
function
(
opt
)
{
if
(
this
.
currentQuestionTypeKey
==
'radio'
)
{
this
.
currentOptions
.
forEach
(
r
=>
{
r
.
selected
=
opt
.
key
==
r
.
key
})
}
},
onCounting
:
function
()
{
if
(
this
.
counting
)
{
this
.
counting
=
false
this
.
showPause
=
true
}
else
{
this
.
counting
=
true
this
.
doCountDown
()
}
},
onContinue
:
function
()
{
this
.
showPause
=
false
this
.
onCounting
()
},
onQuit
:
function
()
{
this
.
showPause
=
false
this
.
saveProgress
()
},
onCancel
:
function
()
{
this
.
showFinish
=
false
window
.
history
.
back
()
},
onSure
:
function
()
{
this
.
showFinish
=
false
this
.
submitPaper
()
},
onNextQuestion
:
function
()
{
if
(
this
.
current
<
this
.
totalQuestion
)
{
this
.
cacheQuestion
()
if
(
!
this
.
review
)
{
this
.
expand
=
false
}
this
.
current
+=
1
}
else
{
if
(
!
this
.
review
)
{
this
.
showFinish
=
true
}
else
{
window
.
history
.
back
()
}
}
},
onPreviousQuestion
:
function
()
{
if
(
this
.
current
>
1
)
{
this
.
current
-=
1
}
},
cacheQuestion
:
function
()
{
if
(
this
.
review
)
{
return
}
let
q
=
this
.
currentQuestion
let
mode
=
this
.
finished
.
hx_firstOf
(
r
=>
{
return
r
.
qId
==
q
.
exams_question_id
})
if
(
mode
)
{
switch
(
this
.
currentQuestionTypeKey
)
{
case
"radio"
:
let
my
=
this
.
currentMyOptions
if
(
my
.
length
>
0
)
{
mode
.
option
=
my
[
0
].
key
}
break
}
}
else
{
switch
(
this
.
currentQuestionTypeKey
)
{
case
"radio"
:
let
my
=
this
.
currentMyOptions
if
(
my
.
length
>
0
)
{
this
.
finished
.
push
({
qId
:
q
.
exams_question_id
,
option
:
my
[
0
].
key
,
key
:
"radio"
})
}
break
}
}
},
//Request
//Collect Params
collectParam
:
function
()
{
let
that
=
this
let
time
=
that
.
info
.
reply_time
*
60
-
that
.
timeConsumed
let
param
=
{
anser_time
:
that
.
timeConsumed
,
exams_mode
:
1
,
paper_id
:
that
.
info
.
exams_paper_id
,
ch_id
:
"{$_GET['s_id']}"
,
view_url
:
"{$_GET['view']}"
,
is_timeout
:
time
<=
0
?
1
:
0
,
paper_options_id
:
that
.
paperOptions
.
exams_paper_options_id
,
}
that
.
finished
.
forEach
(
r
=>
{
let
key
=
'user_answer['
+
r
.
qId
+
']'
switch
(
r
.
key
)
{
case
"radio"
:
param
[
key
]
=
r
.
option
break
}
})
return
param
},
saveProgress
:
function
()
{
let
that
=
this
that
.
cacheQuestion
()
let
param
=
this
.
collectParam
()
$
.
post
(
U
(
'exams/Index/doProgressExams'
),
param
,
function
(
res
)
{
if
(
typeof
(
res
)
!=
'object'
)
{
try
{
let
res
=
JSON
.
parse
(
res
)
}
catch
(
e
)
{
ui
.
error
(
"处理异常,请重新尝试"
)
}
}
if
(
res
.
status
==
1
)
{
ui
.
success
(
res
.
data
.
info
)
window
.
location
.
href
=
res
.
data
.
jumpurl
}
else
{
ui
.
error
(
res
.
message
)
}
})
},
submitPaper
:
function
()
{
let
that
=
this
that
.
cacheQuestion
()
let
param
=
this
.
collectParam
()
$
.
post
(
U
(
'exams/Index/doHaddleExams'
),
param
,
function
(
r
)
{
let
res
=
JSON
.
parse
(
r
)
if
(
res
.
status
==
1
)
{
ui
.
success
(
res
.
data
.
info
)
window
.
location
.
href
=
res
.
data
.
jumpurl
}
else
{
ui
.
error
(
res
.
message
)
}
})
}
}
})
}
</script>
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