Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
41be0d08
提交
41be0d08
authored
10月 23, 2020
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
课程考试支持多次考试
上级
a979c5a3
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
171 行增加
和
125 行删除
+171
-125
CourseAction.js
src/action/CourseAction.js
+17
-2
courseExam.vue
src/modules/viewer/components/work/courseExam.vue
+134
-89
examItem.vue
src/modules/viewer/components/work/examItem.vue
+17
-25
index.vue
src/modules/viewer/components/work/index.vue
+1
-8
index.vue
src/modules/viewer/index.vue
+1
-0
courseDetail.vue
src/pages/learn/courseDetail.vue
+1
-1
没有找到文件。
src/action/CourseAction.js
浏览文件 @
41be0d08
...
@@ -211,15 +211,30 @@ export default class CourseAction extends BaseACTION {
...
@@ -211,15 +211,30 @@ export default class CourseAction extends BaseACTION {
type
:
102
type
:
102
})
})
if
(
cur
.
course_examination
)
{
if
(
cur
.
course_examination
)
{
let
courseExamChildren
=
[]
if
(
data
.
exist_examination
.
length
>
1
)
{
courseExamChildren
=
data
.
exist_examination
.
map
((
item
,
index
)
=>
{
const
map
=
[
'一'
,
'二'
,
'三'
]
return
{
name
:
`第
${
map
[
index
]}
次考试`
,
id
:
'course_exam'
,
offset
:
index
,
sid
:
sid
,
cid
:
cid
,
examId
:
cur
.
course_examination
,
type
:
101
}
})
}
json
.
tabs1ChapterList
.
course
.
push
({
json
.
tabs1ChapterList
.
course
.
push
({
title
:
'课程考试'
,
title
:
'课程考试'
,
isUp
:
true
,
isUp
:
true
,
chapters
:
[]
,
chapters
:
courseExamChildren
,
id
:
'course_exam'
,
id
:
'course_exam'
,
sid
:
sid
,
sid
:
sid
,
cid
:
cid
,
cid
:
cid
,
examId
:
cur
.
course_examination
,
examId
:
cur
.
course_examination
,
type
:
10
2
type
:
10
1
})
})
}
}
/* 课程考核 考核标准文案读取 */
/* 课程考核 考核标准文案读取 */
...
...
src/modules/viewer/components/work/courseExam.vue
浏览文件 @
41be0d08
<
template
>
<
template
>
<container
:title=
"detail.title"
v-loading=
"loading"
>
<container
:title=
"exam.title"
v-loading=
"!loaded"
>
<template
v-slot:header-aside
v-if=
"isExamComplete"
>
分数:
{{
exam
.
score
.
total
}}
分
</
template
>
<template
v-slot:header-aside
>
<template
v-if=
"isCompleted"
>
分数:
{{
exam
.
score
.
total
}}
分
</
template
>
<
template
v-else
>
考试时间:
{{
status
.
start_time
}}
~
{{
status
.
terminate_time
}}
</
template
>
</template>
<div
class=
"exam"
>
<div
class=
"exam"
>
<
template
v-if=
"status.examination_status === '00'"
>
<
template
v-if=
"status.examination_status === '00'"
>
<div
class=
"no-exam"
>
暂无考试
</div>
<div
class=
"no-exam"
>
暂无考试
</div>
</
template
>
</
template
>
<
template
v-else-if=
"isSubmited && !is
ExamComplete
"
>
<
template
v-else-if=
"isSubmited && !is
Completed && !isMultipleExams
"
>
<div
class=
"no-exam"
>
试卷批改中,请耐心等待
</div>
<div
class=
"no-exam"
>
试卷批改中,请耐心等待
</div>
</
template
>
</
template
>
<
template
v-else
>
<
template
v-else
>
<!-- 考试期间,未开始考试 -->
<div
class=
"exam-welcome"
v-if=
"!isStartExam"
>
<div>
考试时间:
{{
status
.
start_time
}}
~
{{
status
.
terminate_time
}}
</div>
<el-button
type=
"primary"
:disabled=
"!isExamTime"
@
click=
"onStartExam"
>
{{
startExamButtonText
}}
</el-button>
</div>
<!-- 考试试题 -->
<!-- 考试试题 -->
<div
class=
"exam-form"
v-if=
"
isStartExam
"
>
<div
class=
"exam-form"
v-if=
"
loaded
"
>
<el-form
:disabled=
"
isSubmited
"
>
<el-form
:disabled=
"
!canEditable
"
>
<template
v-for=
"items in questions"
>
<template
v-for=
"items in questions"
>
<exam-item
<exam-item
v-for=
"(item, index) in items"
v-for=
"(item, index) in items"
...
@@ -28,16 +22,27 @@
...
@@ -28,16 +22,27 @@
:type=
"item.type"
:type=
"item.type"
:data=
"item"
:data=
"item"
:value=
"item.formModel"
:value=
"item.formModel"
:disabled=
"isSubmited"
:disabled=
"!canEditable"
:showResult=
"isCompleted"
:key=
"item.id"
:key=
"item.id"
></exam-item>
></exam-item>
</
template
>
</
template
>
</el-form>
<div
class=
"exam-buttons"
>
<div
class=
"exam-buttons"
>
<!-- 允许多次提交 -->
<
template
v-if=
"isMultipleExams"
>
<el-button
type=
"primary"
@
click=
"handlePrev"
v-if=
"hasPrev"
>
上一套试卷
</el-button>
<el-button
type=
"primary"
@
click=
"handleNext"
v-if=
"hasNext"
>
下一套试卷
</el-button>
<el-button
type=
"primary"
@
click=
"handleNewExam"
v-if=
"hasResubmit"
>
再考一次
</el-button>
</
template
>
<
template
v-if=
"!(isSubmited && isMultipleExams)"
>
<el-tooltip
effect=
"dark"
content=
"提交之后就不能修改了哦"
placement=
"right"
>
<el-tooltip
effect=
"dark"
content=
"提交之后就不能修改了哦"
placement=
"right"
>
<el-button
type=
"primary"
:loading=
"submitLoading"
@
click=
"onSubmit"
>
{{submitText}}
</el-button>
<el-button
type=
"primary"
:disabled=
"!canEditable"
:loading=
"submitLoading"
@
click=
"onSubmit"
>
{{
submitText
}}
</el-button>
</el-tooltip>
</el-tooltip>
</
template
>
</div>
</div>
</el-form>
</div>
</div>
</template>
</template>
</div>
</div>
...
@@ -75,16 +80,26 @@ export default {
...
@@ -75,16 +80,26 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
load
ing
:
false
,
load
ed
:
false
,
detail
:
{},
detail
:
{},
status
:
{},
status
:
{},
questions
:
[],
questions
:
[],
messageInstance
:
null
,
messageInstance
:
null
,
exam
:
{},
exam
:
{},
isStartExam
:
false
,
// 是否开始考试
autoSubmitTimer
:
null
,
// 自动提交定时器
autoSubmitTimer
:
null
,
// 自动提交定时器
checkStatusTimer
:
null
,
// 考试状态定时器
checkStatusTimer
:
null
,
// 考试状态定时器
submitLoading
:
false
submitLoading
:
false
,
isMultipleExams
:
false
,
// 是否可以多次考试
maxExams
:
3
,
// 最多考试几次
examCount
:
this
.
data
.
exist_examination
.
length
||
0
// 试卷数量
}
},
watch
:
{
offset
:
{
immediate
:
true
,
handler
()
{
this
.
init
()
}
}
}
},
},
computed
:
{
computed
:
{
...
@@ -105,46 +120,95 @@ export default {
...
@@ -105,46 +120,95 @@ export default {
// 大于开始时间,小于结束时间
// 大于开始时间,小于结束时间
return
this
.
status
.
examination_status
===
'20'
return
this
.
status
.
examination_status
===
'20'
},
},
//
考试按钮
//
是否提交
startExamButtonText
()
{
isSubmited
()
{
return
this
.
status
.
examination_status
===
'90'
?
'考试结束'
:
'开始考试'
return
this
.
exam
.
type
===
1
||
this
.
exam
.
type
===
2
},
},
// 考试完成
// 考试完成
is
ExamComplete
()
{
is
Completed
()
{
// 考试完成,批改完成并且公布成绩
// 考试完成,批改完成并且公布成绩
return
this
.
exam
.
is_published
===
1
&&
this
.
exam
.
type
===
2
return
this
.
exam
.
is_published
===
1
&&
this
.
exam
.
type
===
2
},
},
//
是否提交
//
可以编辑
isSubmited
()
{
canEditable
()
{
return
this
.
exam
.
type
===
1
||
this
.
exam
.
type
===
2
return
!
this
.
isSubmited
&&
this
.
isExamTime
},
},
// 提交按钮文本
// 提交按钮文本
submitText
()
{
submitText
()
{
return
this
.
isSubmited
?
'已提交'
:
'提交'
return
this
.
isSubmited
?
'已提交'
:
'提交'
},
// 试卷页码
offset
()
{
const
{
query
}
=
this
.
$route
return
parseInt
(
query
.
offset
)
||
0
},
// 是否显示上一套试题
hasPrev
()
{
return
!!
this
.
offset
},
// 是否显示下一套试题
hasNext
()
{
return
this
.
offset
<
this
.
examCount
-
1
},
// 是否显示再考一次
hasResubmit
()
{
if
(
this
.
examList
.
length
>=
this
.
maxExams
)
{
return
false
}
// 判断状态是否还有未提交的试题
for
(
const
exam
of
this
.
examList
)
{
if
(
!
[
'1'
,
'2'
].
includes
(
exam
.
status
))
{
return
false
}
}
return
true
// return this.isSubmited && this.isExamTime && this.examCount
<
this
.
maxExams
},
// 已存在的试题列表
examList
()
{
return
this
.
data
.
exist_examination
}
}
},
},
methods
:
{
methods
:
{
// 开始考试
// 初始化
onStartExam
()
{
init
()
{
this
.
isStartExam
=
true
this
.
clearTimer
()
// 自动提交答题
// 自动获取考试状态
this
.
autoSubmit
()
this
.
autoCheckExamStatus
()
// 获取试题
this
.
getExam
()
},
// 获取考试状态
getExamStatus
()
{
api
.
getCourseExamStatus
(
this
.
sid
,
this
.
cid
,
this
.
pid
).
then
(
response
=>
{
this
.
status
=
response
if
(
this
.
isSubmited
||
response
.
examination_status
===
'90'
)
{
this
.
checkStatusTimer
&&
clearInterval
(
this
.
checkStatusTimer
)
}
})
},
// 自动获取考试状态
autoCheckExamStatus
()
{
// 获取试题状态
this
.
getExamStatus
()
this
.
checkStatusTimer
&&
clearInterval
(
this
.
checkStatusTimer
)
this
.
checkStatusTimer
=
setInterval
(
this
.
getExamStatus
,
5000
)
},
},
// 获取试题
// 获取试题
get
Detail
(
callback
)
{
get
Exam
(
)
{
this
.
load
ing
=
tru
e
this
.
load
ed
=
fals
e
api
api
.
getCourseExam
(
this
.
sid
,
this
.
cid
)
.
getCourseExam
Result
(
this
.
sid
,
this
.
cid
,
this
.
pid
,
{
offset
:
this
.
offset
}
)
.
then
(
response
=>
{
.
then
(
response
=>
{
this
.
detail
=
Array
.
isArray
(
response
)
?
null
:
response
this
.
exam
=
response
// 设置问题列表数据
this
.
questions
=
this
.
genQuestions
(
response
.
sheet
)
this
.
questions
=
this
.
detail
// 自动提交
?
this
.
genQuestions
(
this
.
detail
.
examination
)
this
.
canEditable
&&
this
.
autoSubmit
(
)
:
[]
// 更新菜单
callback
&&
callback
(
)
this
.
isMultipleExams
&&
this
.
$emit
(
'update'
)
})
})
.
finally
(()
=>
{
.
finally
(()
=>
{
this
.
load
ing
=
fals
e
this
.
load
ed
=
tru
e
})
})
},
},
// 组装问题数据
// 组装问题数据
...
@@ -176,9 +240,7 @@ export default {
...
@@ -176,9 +240,7 @@ export default {
type
:
3
,
type
:
3
,
formModel
:
{
formModel
:
{
id
:
item
.
id
,
id
:
item
.
id
,
user_answer
:
item
.
user_answer
user_answer
:
item
.
user_answer
?
Base64
.
decode
(
item
.
user_answer
.
replace
(
/ /gi
,
'+'
))
:
''
,
?
Base64
.
decode
(
item
.
user_answer
.
replace
(
/ /gi
,
'+'
))
:
''
,
attachments
:
item
.
attachments
||
[]
attachments
:
item
.
attachments
||
[]
}
}
}
}
...
@@ -187,39 +249,7 @@ export default {
...
@@ -187,39 +249,7 @@ export default {
return
[...
radioList
,
...
checkboxList
,
...
shortAnswerList
]
return
[...
radioList
,
...
checkboxList
,
...
shortAnswerList
]
})
})
},
},
// 获取考试状态
getExamStatus
()
{
api
.
getCourseExamStatus
(
this
.
sid
,
this
.
cid
,
this
.
pid
).
then
(
response
=>
{
this
.
status
=
response
if
(
this
.
isSubmited
||
response
.
examination_status
===
'90'
)
{
this
.
checkStatusTimer
&&
clearInterval
(
this
.
checkStatusTimer
)
}
})
},
// 自动获取考试状态
autoCheckExamStatus
()
{
// 获取试题状态
this
.
getExamStatus
()
this
.
checkStatusTimer
&&
clearInterval
(
this
.
checkStatusTimer
)
this
.
checkStatusTimer
=
setInterval
(()
=>
{
this
.
getExamStatus
()
},
3000
)
},
// 获取考试结果
getExamResult
()
{
api
.
getCourseExamResult
(
this
.
sid
,
this
.
cid
,
this
.
pid
).
then
(
response
=>
{
// 设置问题列表数据
if
(
response
.
code
!==
8001
)
{
this
.
isStartExam
=
true
this
.
exam
=
response
this
.
questions
=
this
.
genQuestions
(
response
.
sheet
)
// 自动提交
if
(
this
.
isStartExam
&&
!
this
.
isSubmited
&&
!
this
.
isExamComplete
)
{
this
.
autoSubmit
()
}
}
})
},
// 提交校验
// 提交校验
checkSubmit
()
{
checkSubmit
()
{
for
(
let
i
=
0
;
i
<
this
.
questions
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
this
.
questions
.
length
;
i
++
)
{
...
@@ -289,6 +319,7 @@ export default {
...
@@ -289,6 +319,7 @@ export default {
// 请求提交接口
// 请求提交接口
handleSubmitRequest
(
params
)
{
handleSubmitRequest
(
params
)
{
this
.
submitLoading
=
true
this
.
submitLoading
=
true
params
.
offset
=
this
.
offset
api
api
.
submitCourseExam
(
this
.
sid
,
this
.
cid
,
this
.
pid
,
params
)
.
submitCourseExam
(
this
.
sid
,
this
.
cid
,
this
.
pid
,
params
)
.
then
(
response
=>
{
.
then
(
response
=>
{
...
@@ -299,7 +330,7 @@ export default {
...
@@ -299,7 +330,7 @@ export default {
if
(
response
.
code
===
200
)
{
if
(
response
.
code
===
200
)
{
this
.
$message
.
success
(
'考试答卷提交成功'
)
this
.
$message
.
success
(
'考试答卷提交成功'
)
this
.
autoSubmitTimer
&&
clearInterval
(
this
.
autoSubmitTimer
)
this
.
autoSubmitTimer
&&
clearInterval
(
this
.
autoSubmitTimer
)
this
.
getExam
Result
()
this
.
getExam
()
}
else
{
}
else
{
this
.
$message
.
error
(
response
.
data
.
error
)
this
.
$message
.
error
(
response
.
data
.
error
)
}
}
...
@@ -310,20 +341,34 @@ export default {
...
@@ -310,20 +341,34 @@ export default {
.
finally
(()
=>
{
.
finally
(()
=>
{
this
.
submitLoading
=
false
this
.
submitLoading
=
false
})
})
},
// 上一套试卷
handlePrev
()
{
const
offset
=
this
.
offset
-
1
this
.
$router
.
push
({
query
:
{
offset
}
})
},
handleNext
()
{
const
offset
=
this
.
offset
+
1
this
.
$router
.
push
({
query
:
{
offset
}
})
},
handleNewExam
()
{
this
.
$router
.
push
({
query
:
{
offset
:
this
.
examCount
}
})
this
.
examCount
++
},
// 清除定时器
clearTimer
()
{
this
.
autoSubmitTimer
&&
clearInterval
(
this
.
autoSubmitTimer
)
this
.
checkStatusTimer
&&
clearInterval
(
this
.
checkStatusTimer
)
}
}
},
},
beforeMount
()
{
beforeMount
()
{
// 获取试题
// // 自动获取考试状态
this
.
getDetail
(()
=>
{
// this.autoCheckExamStatus()
// 获取考试结果
// // 获取试题
this
.
getExamResult
()
// this.getExam()
// 自动获取考试状态
this
.
autoCheckExamStatus
()
})
},
},
destroyed
()
{
destroyed
()
{
this
.
autoSubmitTimer
&&
clearInterval
(
this
.
autoSubmitTimer
)
this
.
clearTimer
()
this
.
checkStatusTimer
&&
clearInterval
(
this
.
checkStatusTimer
)
}
}
}
}
</
script
>
</
script
>
...
@@ -333,7 +378,7 @@ export default {
...
@@ -333,7 +378,7 @@ export default {
padding
:
40px
0
;
padding
:
40px
0
;
text-align
:
center
;
text-align
:
center
;
.el-button
{
.el-button
{
width
:
24
0px
;
min-width
:
16
0px
;
margin
:
40px
auto
;
margin
:
40px
auto
;
}
}
}
}
...
...
src/modules/viewer/components/work/examItem.vue
浏览文件 @
41be0d08
<
template
>
<
template
>
<div
class=
"q-item"
>
<div
class=
"q-item"
>
<div
class=
"q-item-hd"
>
<div
class=
"q-item-hd"
>
<div
class=
"q-item-num"
>
{{
index
+
1
}}
.
</div>
<div
class=
"q-item-num"
>
{{
index
+
1
}}
.
</div>
<div
class=
"q-item-title"
v-html=
"data.content"
></div>
<div
class=
"q-item-title"
v-html=
"data.content"
></div>
<div
class=
"q-item-aside"
>
<div
class=
"q-item-aside"
>
<template
v-if=
"typeText"
>
(
{{
typeText
}}
)
</
template
>
<template
v-if=
"typeText"
>
(
{{
typeText
}}
)
</
template
>
<
template
v-if=
"data.hasOwnProperty('score')"
>
(
{{
data
.
score
}}
分)
</
template
>
<
template
v-if=
"data.hasOwnProperty('score')"
>
(
{{
data
.
score
}}
分)
</
template
>
</div>
</div>
</div>
</div>
<div
class=
"q-item-bd"
>
<div
class=
"q-item-bd"
>
<!-- 单选 -->
<!-- 单选 -->
<el-radio-group
v-model=
"currentValue.user_answer"
v-if=
"type === 1"
>
<el-radio-group
v-model=
"currentValue.user_answer"
v-if=
"type === 1"
>
<div
class=
"q-option-item"
v-for=
"item in currentOptions"
:key=
"item.id"
>
<div
class=
"q-option-item"
v-for=
"item in currentOptions"
:key=
"item.id"
>
<el-radio
:class=
"genClass(item)"
:label=
"item.id"
>
{{
item.abc_option
}}
</el-radio>
<el-radio
:class=
"genClass(item)"
:label=
"item.id"
>
{{
item.abc_option
}}
</el-radio>
</div>
</div>
</el-radio-group>
</el-radio-group>
<!-- 多选 -->
<!-- 多选 -->
<el-checkbox-group
v-model=
"currentValue.user_answer"
v-if=
"type === 2"
>
<el-checkbox-group
v-model=
"currentValue.user_answer"
v-if=
"type === 2"
>
<div
class=
"q-option-item"
v-for=
"item in currentOptions"
:key=
"item.id"
>
<div
class=
"q-option-item"
v-for=
"item in currentOptions"
:key=
"item.id"
>
<el-checkbox
:class=
"genClass(item)"
:label=
"item.id"
>
{{
item.abc_option
}}
</el-checkbox>
<el-checkbox
:class=
"genClass(item)"
:label=
"item.id"
>
{{
item.abc_option
}}
</el-checkbox>
</div>
</div>
</el-checkbox-group>
</el-checkbox-group>
<!-- 简答题 -->
<!-- 简答题 -->
...
@@ -27,39 +27,34 @@
...
@@ -27,39 +27,34 @@
<v-upload
:disabled=
"disabled"
v-model=
"currentValue.attachments"
>
请上传对应的文件附件:
</v-upload>
<v-upload
:disabled=
"disabled"
v-model=
"currentValue.attachments"
>
请上传对应的文件附件:
</v-upload>
</
template
>
</
template
>
</div>
</div>
<div
class=
"q-item-ft"
v-if=
"disabled"
>
<div
class=
"q-item-ft"
v-if=
"disabled
&& showResult
"
>
<
template
v-if=
"type === 3"
>
<
template
v-if=
"type === 3"
>
<p
v-if=
"data.check_comment"
>
<p
v-if=
"data.check_comment"
>
<span>
评语:
</span>
<span>
评语:
</span>
<span>
{{
data
.
check_comment
}}
</span>
<span>
{{
data
.
check_comment
}}
</span>
</p>
</p>
</
template
>
</
template
>
<
template
v-else
>
<
template
v-else
>
<div
class=
"result"
>
<div
class=
"result"
>
<p>
<p>
<span>
学生答案:
</span>
<span>
学生答案:
</span>
<span
:class=
"isCorrect ? 'is-success' : 'is-error'"
>
{{
submitAnswerText
}}
</span>
<span
:class=
"isCorrect ? 'is-success' : 'is-error'"
>
{{
submitAnswerText
}}
</span>
</p>
</p>
<p>
<p>
<span>
正确答案:
</span>
<span>
正确答案:
</span>
<span>
{{
correctAnswerText
}}
</span>
<span>
{{
correctAnswerText
}}
</span>
</p>
</p>
</div>
</div>
</
template
>
</
template
>
<p
v-if=
"data.hasOwnProperty('get_score')"
>
<p
v-if=
"data.hasOwnProperty('get_score')"
>
<span>
评分:
</span>
<span>
评分:
</span>
<span>
{{
data.get_score
}}分
</span>
<span>
{{
data.get_score
}}分
</span>
</p>
</p>
<div
class=
"analyze"
v-if=
"data.analysis"
>
<div
class=
"analyze"
v-if=
"data.analysis"
>
<span>
解析:
</span>
<span>
解析:
</span>
<div
class=
"analyze-main"
>
<div
class=
"analyze-main"
>
<span
style=
"color:blue;cursor:pointer;"
@
click=
"showAnalyze = !showAnalyze"
>
查看解析
</span>
<span
style=
"color: blue; cursor: pointer"
@
click=
"showAnalyze = !showAnalyze"
>
查看解析
</span>
<div
<div
v-html=
"data.analysis"
v-if=
"data.analysis"
v-show=
"showAnalyze"
class=
"analyze-content"
></div>
v-html=
"data.analysis"
v-if=
"data.analysis"
v-show=
"showAnalyze"
class=
"analyze-content"
></div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -94,7 +89,8 @@ export default {
...
@@ -94,7 +89,8 @@ export default {
}
}
},
},
// 是否禁用,提交过的是禁用状态
// 是否禁用,提交过的是禁用状态
disabled
:
{
type
:
Boolean
,
default
:
false
}
disabled
:
{
type
:
Boolean
,
default
:
false
},
showResult
:
{
type
:
Boolean
,
default
:
true
}
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -135,16 +131,12 @@ export default {
...
@@ -135,16 +131,12 @@ export default {
item
.
abc_option
=
`
${
this
.
A_Z
[
index
]}
.
${
item
.
option
}
`
item
.
abc_option
=
`
${
this
.
A_Z
[
index
]}
.
${
item
.
option
}
`
// 提交时的选中状态
// 提交时的选中状态
const
value
=
this
.
value
.
user_answer
||
''
const
value
=
this
.
value
.
user_answer
||
''
item
.
selected
=
Array
.
isArray
(
value
)
item
.
selected
=
Array
.
isArray
(
value
)
?
value
.
includes
(
item
.
id
)
:
value
===
item
.
id
?
value
.
includes
(
item
.
id
)
:
value
===
item
.
id
// 处理正确的选中状态
// 处理正确的选中状态
const
hasChecked
=
Object
.
prototype
.
hasOwnProperty
.
call
(
item
,
'checked'
)
const
hasChecked
=
Object
.
prototype
.
hasOwnProperty
.
call
(
item
,
'checked'
)
const
rightAnswer
=
this
.
data
.
right_answer
||
''
const
rightAnswer
=
this
.
data
.
right_answer
||
''
if
(
!
hasChecked
&&
rightAnswer
)
{
if
(
!
hasChecked
&&
rightAnswer
)
{
item
.
checked
=
Array
.
isArray
(
rightAnswer
)
item
.
checked
=
Array
.
isArray
(
rightAnswer
)
?
rightAnswer
.
includes
(
item
.
id
)
:
rightAnswer
===
item
.
id
?
rightAnswer
.
includes
(
item
.
id
)
:
rightAnswer
===
item
.
id
}
}
return
item
return
item
})
})
...
@@ -179,7 +171,7 @@ export default {
...
@@ -179,7 +171,7 @@ export default {
methods
:
{
methods
:
{
// 生成class
// 生成class
genClass
(
item
)
{
genClass
(
item
)
{
if
(
!
this
.
disabled
)
{
if
(
!
this
.
disabled
||
!
this
.
showResult
)
{
return
null
return
null
}
}
return
{
return
{
...
...
src/modules/viewer/components/work/index.vue
浏览文件 @
41be0d08
<
template
>
<
template
>
<component
<component
:is=
"currentCompoent"
:chapter=
"chapter"
:data=
"data"
v-bind=
"$attrs"
v-on=
"$listeners"
v-if=
"chapter"
/>
:is=
"currentCompoent"
:chapter=
"chapter"
:data=
"data"
v-bind=
"$attrs"
v-on=
"$listeners"
v-if=
"chapter"
/>
</
template
>
</
template
>
<
script
>
<
script
>
...
...
src/modules/viewer/index.vue
浏览文件 @
41be0d08
...
@@ -35,6 +35,7 @@
...
@@ -35,6 +35,7 @@
:key=
"pid"
:key=
"pid"
@
pptupdate=
"handlePPTupdate"
@
pptupdate=
"handlePPTupdate"
@
change-ppt=
"handleChangePPT(...arguments, false)"
@
change-ppt=
"handleChangePPT(...arguments, false)"
@
update=
"getCourse"
/>
/>
</div>
</div>
</div>
</div>
...
...
src/pages/learn/courseDetail.vue
浏览文件 @
41be0d08
...
@@ -542,7 +542,7 @@ export default {
...
@@ -542,7 +542,7 @@ export default {
window
.
open
(
data
.
live
.
record_url
||
data
.
live
.
join_url
)
window
.
open
(
data
.
live
.
record_url
||
data
.
live
.
join_url
)
return
return
}
}
this
.
$router
.
push
({
name
:
'viewerCourseChapter'
,
params
:
{
sid
,
cid
,
id
:
data
.
id
}
})
this
.
$router
.
push
({
name
:
'viewerCourseChapter'
,
params
:
{
sid
,
cid
,
id
:
data
.
id
}
,
query
:
{
offset
:
data
.
offset
}
})
},
},
/**
/**
* 开始学习或继续学习 - 跳转到对应音视频播放页
* 开始学习或继续学习 - 跳转到对应音视频播放页
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论