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
7dc091c5
Commit
7dc091c5
authored
May 20, 2020
by
陈超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
A
parent
94a40d9e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
200 additions
and
213 deletions
+200
-213
apps/exams/Tpl/default/Index/examsroom_w3g.html
+200
-213
No files found.
apps/exams/Tpl/default/Index/examsroom_w3g.html
View file @
7dc091c5
<include
file=
"__THEME__/public_header_w3g"
/>
<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"
>
<style
type=
"text/css"
>
<style
type=
"text/css"
>
/*比较多用到的*/
/*比较多用到的*/
.box
{
.box
{
...
@@ -328,235 +323,227 @@
...
@@ -328,235 +323,227 @@
line-height
:
1.875rem
;
line-height
:
1.875rem
;
}
}
</style>
</style>
<div
id=
"app"
>
<div
class=
"cover"
></div>
<div
class=
"min-height-wrap"
>
<div
class=
"exam-header"
>
<div
class=
"testPaperTop box"
>
<div
class=
"testPaperTop box"
>
<p
class=
"testPaperTop_time flex1"
><span
id=
"time_hh"
>
-
</span>
:
<span
id=
"time_mm"
>
-
</span>
:
<span
id=
"time_ss"
>
-
</span></p>
<p
class=
"testPaperTop_time flex1"
>
00:09:54
</p>
<span
class=
"testPaperTop_da"
>
答题卡
</span>
<span
class=
"testPaperTop_da"
>
答题卡
</span>
<img
class=
"testPaperTop_pau"
src=
"__THEME__/img/pau.png"
>
<img
class=
"testPaperTop_pau"
src=
"__THEME__/img/pau.png"
>
</div>
</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"
>
</div>
</div>
<div
class=
"answer-card"
style=
"margin-top: 0.75rem;"
>
<template
v-if=
"showChoiceQuestion"
>
<php>
$question_num = 1;
</php>
<div
v-html=
"currentQuestion.content"
class=
"testPaperInfo"
></div>
<volist
name=
"paper_options.options_type"
id=
"options_type"
>
<ul>
<php>
<li
v-for=
"(opt, index) in currentOptions"
:key=
"index"
class=
"testPaperAnswer box"
>
if(!$paper_options['options_questions_data'][$options_type['question_type']]){
<span
@
click=
"onChoose(opt)"
class=
"testPaperAnswer_num"
:class=
"opt.selected ? 'testPaperAnswer_numAt' : ''"
>
{{opt.key}}
</span>
break;
<div
v-html=
"opt.value"
class=
"testPaperAnswer_desc flex1"
style=
"margin-top: 0.625rem;"
></div>
}
</li>
</php>
</ul>
<dl>
</template>
<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>
<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>
<div
v-if=
"current == 1"
class=
"testPaperBtns boxCn"
>
<p
@
click=
"onNextQuestion"
class=
"testPaperBtn testPaperBtn1"
style=
"width: 15rem;"
>
下一题
</p>
</div>
</div>
</eq>
<div
v-if=
"current > 1"
class=
"testPaperBtns box"
>
<p
@
click=
"onPreviousQuestion"
class=
"testPaperBtn"
>
上一题
</p>
<p
@
click=
"onNextQuestion"
class=
"testPaperBtn testPaperBtn1"
>
下一题 / 交卷
</p>
</div>
</div>
</dl>
<!-- 解析 -->
<php>
$question_num++;
</php>
<div
class=
"testPaperJiedaPage"
>
</volist>
<div
class=
"box testPaperJiedaBox"
>
</case>
<span
@
click=
"expand = !expand"
class=
"testPaperJiedaBtn box"
>
{{expand ? '收起解析' : '查看解析'}}
<img
class=
"testPaperJiedaBtn_icon"
src=
"__THEME__/img/openBtn.png"
></span>
<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>
</div>
<eq
name=
"isPractice"
value=
"1"
>
<ul
v-if=
"expand"
class=
"testPaperAnswers"
>
<!--答案解析-->
<li
class=
"testPaperAnswer"
>
正确答案:
<span
v-for=
"(answer, index) in currentRightOptions"
:key=
"index"
class=
"testPaperAnswer_n"
>
{{answer}}
</span></li>
<div
class=
"analysis"
>
<li
class=
"testPaperAnswer"
>
我的答案:
<span
v-for=
"(answer, index) in currentMyOptions"
:key=
"index"
:class=
"answer.right ? 'testPaperAnswer_n' : 'testPaperAnswer_e'"
>
{{answer.key}}
</span></li>
<div
class=
"analysis-pic"
>
<h5>
正确答案
</h5>
<ul>
<volist
name=
"question.answer_true_option"
id=
"answer_true"
>
<li>
{$i}、{$answer_true}
</li>
</volist>
</ul>
</ul>
<div
v-if=
"expand"
class=
"testPaperAnswer_infoBox"
>
</div>
<p
class=
"testPaperAnswer_infoTitle"
>
解析
</p>
<div
class=
"analysis-txt"
>
<div
v-html=
"currentAnalyze"
class=
"testPaperAnswer_info"
>
<h6>
解析
</h6>
<p>
{$question.analyze}
</p>
</div>
</div>
</div>
</div>
</eq>
</div>
</div>
</dl>
<!-- 交卷 -->
<php>
$question_num++;
</php>
<div
class=
"mask"
style=
"display: none;"
>
</volist>
<div
class=
"popUp"
>
</case>
<p
class=
"popUp_title"
>
提示
</p>
<case
value=
"essays"
>
<div
class=
"popUp_content"
>
是否交卷并退出考试?
</div>
<!-- 简述题-->
<div
class=
"popUp_btns box"
>
<volist
name=
"paper_options['options_questions_data'][$options_type['question_type']]"
id=
"question"
>
<span
class=
"popUp_btn popUp_btn0 flex1"
>
取消
</span>
<dl
id=
"ex{$question_num}"
data-type=
"{$options_type.question_type_key}"
data-question_num=
"{$question_num}"
>
<span
class=
"popUp_btn popUp_btn1 flex1"
>
确定
</span>
<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>
</div>
<eq
name=
"isPractice"
value=
"1"
>
<!--答案解析-->
<div
class=
"analysis"
>
<div
class=
"analysis-txt"
>
<h6>
解析
</h6>
<p>
{$question.analyze}
</p>
</div>
</div>
</div>
</div>
</eq>
<!-- 暂停 -->
<div
class=
"mask"
style=
"display: none;"
>
<div
class=
"stopBox"
>
<span
class=
"stopBtn stopBtn_on"
>
继续
</span>
<span
class=
"stopBtn stopBtn_out"
>
退出
</span>
</div>
</div>
</dl>
<php>
$question_num++;
</php>
</volist>
</case>
</switch>
</volist>
</div>
</div>
</form>
</div>
</div>
<include
file=
"__THEME__/public_footer_w3g"
/>
<
script
src=
"__APP__/js/public_header_footer_media.js"
></script>
<
include
file=
"__THEME__/public_footer_w3g"
/>
<script
src=
"__APP__/js/public_exam_3g.js"
></script>
<script
type=
"text/javascript"
>
<script
type=
"text/javascript"
>
if
(
"{$_GET['examsresult']}"
){
new
Vue
({
var
re
=
"{:jiemi($_GET['examsresult'])}"
,
el
:
"#app"
,
ve
=
"{:jiemi($_GET['view'])}"
;
data
:
function
()
{
layer
.
open
({
return
{
content
:
'课时考试'
,
info
:
{},
btn
:
[
'查看结果'
,
'返回课程'
],
temp
:
{},
yes
:
function
(){
current
:
1
,
window
.
location
.
href
=
re
;
paperOptions
:
{},
countDown
:
"00:00:00"
,
expand
:
false
,
//选项
currentOptions
:
[]
}
},
},
no
:
function
(){
computed
:
{
window
.
location
.
href
=
ve
;
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
=>
{
console
.
log
(
r
)
console
.
log
(
cur
.
hx_indexOf
(
k
=>
{
return
k
==
r
.
key
}))
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
)};
for
(
let
k
in
this
.
currentQuestion
.
answer_options
)
{
let
value
=
this
.
currentQuestion
.
answer_options
[
k
]
this
.
currentOptions
.
push
({
key
:
k
,
value
:
value
,
selected
:
false
})
}
console
.
log
(
this
.
info
)
console
.
log
(
this
.
temp
)
console
.
log
(
this
.
paperOptions
)
},
methods
:
{
countDown
:
function
()
{
let
time
=
1
let
hours
=
Math
.
floor
(
time
/
3600
)
let
minutes
=
Math
.
floor
((
time
%
3600
)
/
60
)
let
seconds
=
Math
.
round
(
time
%
60
)
},
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
})
}
},
onNextQuestion
:
function
()
{
if
(
this
.
current
<
this
.
totalQuestion
)
{
this
.
current
+=
1
}
else
{
ui
.
confirm
(
"已经是最后一题了,是否交卷?"
,
{
// 是否返回第一题
yes
:
function
()
{
}
})
}
},
onPreviousQuestion
:
function
()
{
if
(
this
.
current
>
1
)
{
this
.
current
-=
1
}
}
}
}
})
</script>
</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