Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
76e6d010
提交
76e6d010
authored
4月 28, 2021
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
移除无用代码和文件
上级
adbc24de
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
2 行增加
和
583 行删除
+2
-583
index.vue
src/modules/viewer/index.vue
+0
-4
credit.vue
src/pages/grade/credit.vue
+0
-9
CourseListItem.vue
src/pages/learn/components/CourseListItem.vue
+0
-148
course_assessment_cn.vue
src/pages/learn/components/course_assessment_cn.vue
+0
-79
course_assessment_en.vue
src/pages/learn/components/course_assessment_en.vue
+0
-77
course.vue
src/pages/learn/course.vue
+1
-1
CourseChapter.vue
src/pages/learn/course/components/CourseChapter.vue
+0
-1
CourseLatestLive.vue
src/pages/learn/course/components/CourseLatestLive.vue
+1
-1
list.vue
src/pages/learn/course/list.vue
+0
-263
courseDetail.vue
src/pages/learn/courseDetail.vue
+0
-0
没有找到文件。
src/modules/viewer/index.vue
浏览文件 @
76e6d010
...
...
@@ -104,13 +104,9 @@ export default {
// 章节列表
chapters
()
{
const
chapters
=
this
.
detail
.
chapters
||
[]
// if (!chapters.length) {
// return []
// }
const
customeChapter
=
{
name
:
this
.
$t
(
'viewerMain.workData'
),
children
:
[
// { name: this.$t('viewerMain.courseWork'), id: 'course_work', type: 99 },
{
name
:
this
.
$t
(
'viewerMain.courseData'
),
id
:
'course_info'
,
type
:
100
},
{
name
:
this
.
$t
(
'viewerMain.teachingEvaluation'
),
id
:
'teach_evaluation'
,
type
:
102
}
]
...
...
src/pages/grade/credit.vue
浏览文件 @
76e6d010
...
...
@@ -128,15 +128,6 @@ export default {
},
beforeMount
()
{
this
.
getDetail
()
},
mounted
()
{
// this.VueEvent.$off('command-tablelist-x').$on('command-tablelist-x', data => {
// if (data.command.command === 're-start') {
// const _data = data.tableData[data.index - 1]
// window.localStorage.setItem('rebuild', JSON.stringify(_data))
// this.$router.push({ path: '/app/grade/rebuild' })
// }
// })
}
}
</
script
>
...
...
src/pages/learn/components/CourseListItem.vue
deleted
100644 → 0
浏览文件 @
adbc24de
<
template
>
<li
class=
"course-list-item"
>
<div
class=
"course-list-item-pic"
@
click=
"handleClick"
>
<img
:src=
"data.src"
v-if=
"data.src"
/>
<div
class=
"no-img"
v-else
><i
class=
"el-icon-self-13"
></i></div>
</div>
<div
class=
"course-list-item-main"
>
<div
class=
"title"
@
click=
"handleClick"
>
{{
data
.
title
}}
</div>
<div
class=
"tags"
>
<template
v-for=
"(item1, index) in data.arrTab"
>
<span
v-bind:key=
"index"
>
{{
item1
}}
</span>
</
template
>
</div>
<div
class=
"time"
>
{{ data.status }}
<em>
{{ data.time }}
</em>
</div>
<div
class=
"progress"
>
{{ $t('pages.learn.course.progress') }}
<el-progress
:percentage=
"data.progress"
color=
"#b49441"
></el-progress>
</div>
</div>
<div
class=
"course-list-item-aside"
>
<p>
{{ data.myStatus }}
</p>
<el-button
type=
"primary"
size=
"small"
round
@
click=
"handleClick"
>
{{ $t('pages.learn.course.showCourse') }}
</el-button>
</div>
</li>
</template>
<
script
>
export
default
{
name
:
'CourseListItem'
,
props
:
{
data
:
{
type
:
Object
,
required
:
true
},
showProgress
:
{
type
:
Boolean
,
default
:
true
}
},
data
()
{
return
{}
},
methods
:
{
handleClick
()
{
this
.
$router
.
push
({
path
:
`/app/learn/course-detail/
${
this
.
data
.
sid
}
/
${
this
.
data
.
id
}
`
})
}
}
}
</
script
>
<
style
lang=
"scss"
>
.course-list-item
{
display
:
flex
;
padding
:
0
.2rem
0
;
list-style
:
none
;
}
.course-list-item
+
.course-list-item
{
border-top
:
1px
solid
#dcdcdc
;
}
.course-list-item-pic
{
position
:
relative
;
width
:
1
.8rem
;
height
:
1rem
;
cursor
:
pointer
;
.no-img
{
width
:
100%
;
height
:
1rem
;
text-align
:
center
;
line-height
:
1
.1rem
;
border
:
1px
solid
#e2e2e2
;
i
{
font-size
:
0
.4rem
;
color
:
#e2e2e2
;
}
}
img
{
display
:
block
;
width
:
100%
;
height
:
100%
;
object-fit
:
cover
;
}
}
.course-list-item-main
{
flex
:
1
;
position
:
relative
;
padding-left
:
0
.2rem
;
.title
{
width
:
80%
;
line-height
:
1
.5
;
font-weight
:
700
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
cursor
:
pointer
;
}
.tags
{
margin
:
0
.05rem
0
;
font-size
:
0
.14rem
;
span
{
padding
:
0
0
.1rem
;
margin
:
0
;
border-right
:
1px
solid
#313131
;
&
:first-child
{
padding-left
:
0
;
}
&
:last-child
{
border
:
none
;
}
}
}
.time
{
font-size
:
0
.12rem
;
em
{
font-style
:
normal
;
color
:
#898989
;
}
}
.progress
{
margin-top
:
0
.05rem
;
font-size
:
14px
;
.el-progress
{
width
:
50%
;
display
:
inline-block
;
vertical-align
:
text-bottom
;
}
}
}
.course-list-item-aside
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-between
;
p
{
padding
:
0
0
.1rem
;
font-size
:
0
.14rem
;
text-align
:
right
;
}
}
</
style
>
src/pages/learn/components/course_assessment_cn.vue
deleted
100644 → 0
浏览文件 @
adbc24de
<
template
>
<div
class=
"detail"
>
<div
class=
"detail-rich"
>
<div
class=
"h1"
>
一、最终成绩计算
</div>
<div
class=
"p"
>
<template
v-for=
"(item, index) in checkList"
>
<span
:key=
"index"
>
{{
index
?
'+'
:
''
}}{{
item
.
name
}}
得分*
{{
item
.
percent
}}
%
</span>
</
template
>
= 该门课程总得分,满分100分,低于{{ data.course_check_pass_score }}分为不及格,需重修此门课程。
</div>
<v-chart
class=
"chart"
:option=
"option"
:autoresize=
"true"
/>
</div>
<div
class=
"detail-rich"
>
<div
class=
"h1"
>
二、具体细则
</div>
<
template
v-for=
"(item, index) in checkList"
>
<div
:key=
"index"
>
<div
class=
"h2"
>
{{
`${item.name
}
总分${item.score
}
分(占科目总成绩的${item.percent
}
%)`
}}
<
/div
>
<
template
v
-
if
=
"item.key === 'video'"
>
<
div
class
=
"p"
>
课程视频观看完成度:以后台数据统计为准,全部看完视频满分
100
分。
<
/div
>
<
div
class
=
"em"
>
注:视频观看考核的是实际播放时长,不是进度条的显示状态,进度条满格并不一定表示观看完这个视频。以下方每日学习时长为准。
<
/div
>
<
/template
>
<
template
v
-
if
=
"item.key === 'week_report'"
>
<
div
class
=
"p"
>
报告作业总分
{{
item
.
score
}}
分,报告得分以老师批改的分数为准。
<
/div
>
<
div
class
=
"p"
>
课程反馈建设性问题老师可酌情加分,每周的课程提问加分以老师批改的分数为准。
<
/div
>
<
/template
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'week_test'"
>
本课程所有测试的平均正确率
*
{{
item
.
score
}}
分
*
占总成绩
{{
item
.
percent
}}
%=
此项得分
<
/div
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'essay'"
>
结业大作业满分为
{{
item
.
score
}}
分,以老师批改的分数为准。
<
/div
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'attendance'"
>
互动课出勤满分
{{
item
.
score
}}
分,以老师每次导出的参会记录进行打分。
<
/div
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'question'"
>
课程提问满分
{{
item
.
score
}}
分,
老师根据提问情况酌情给分。
<
/div
>
<
/div
>
<
/template
>
<
/div
>
<
/div
>
<
/template
>
<
script
>
import
{
use
}
from
'echarts/core'
import
{
CanvasRenderer
}
from
'echarts/renderers'
import
{
PieChart
}
from
'echarts/charts'
import
{
TitleComponent
,
TooltipComponent
,
LegendComponent
}
from
'echarts/components'
import
VChart
from
'vue-echarts'
use
([
CanvasRenderer
,
PieChart
,
TitleComponent
,
TooltipComponent
,
LegendComponent
])
export
default
{
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
{
}
}
}
,
components
:
{
VChart
}
,
data
()
{
return
{
}
}
,
computed
:
{
checkList
()
{
return
this
.
data
.
course_check
.
filter
(
item
=>
parseInt
(
item
.
percent
))
}
,
option
()
{
const
data
=
this
.
checkList
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
value
:
item
.
percent
}
}
)
return
{
tooltip
:
{
trigger
:
'item'
,
formatter
:
'{a
}
<br/>{b
}
占比{c
}
%'
}
,
series
:
[{
name
:
'课程考核'
,
type
:
'pie'
,
data
}
]
}
}
}
}
<
/script
>
<
style
scoped
>
.
chart
{
height
:
300
px
;
}
<
/style
>
src/pages/learn/components/course_assessment_en.vue
deleted
100644 → 0
浏览文件 @
adbc24de
<
template
>
<div
class=
"detail"
>
<div
class=
"detail-rich"
>
<div
class=
"h1"
>
一、最终成绩计算
</div>
<div
class=
"p"
>
美方课程最终成绩请参考每学期初教务邮箱老师发到大家邮箱中的课程考核大纲进行计算。
</div>
<v-chart
class=
"chart"
:option=
"option"
:autoresize=
"true"
/>
</div>
<div
class=
"detail-rich"
>
<div
class=
"h1"
>
二、具体细则
</div>
<template
v-for=
"(item, index) in checkList"
>
<div
:key=
"index"
>
<div
class=
"h2"
>
{{
`${item.name
}
总分${item.score
}
分(占科目总成绩的${item.percent
}
%)`
}}
<
/div
>
<
template
v
-
if
=
"item.key === 'video'"
>
<
div
class
=
"p"
>
课程视频观看完成度:以后台数据统计为准,全部看完视频满分
100
分。(实际视频观看分数以课程考核大纲为准)
<
/div
>
<
div
class
=
"em"
>
注:视频观看考核的是实际播放时长,不是进度条的显示状态,进度条满格并不一定表示观看完这个视频。以下方每日学习时长为准。
<
/div
>
<
/template
>
<
template
v
-
if
=
"item.key === 'week_report'"
>
<
div
class
=
"p"
>
报告作业总分
{{
item
.
score
}}
分,报告得分以老师批改的分数为准。
<
/div
>
<
div
class
=
"p"
>
课程反馈建设性问题老师可酌情加分,每周的课程提问加分以老师批改的分数为准。
<
/div
>
<
/template
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'week_test'"
>
本课程所有测试的平均正确率
*
{{
item
.
score
}}
分
*
占总成绩
{{
item
.
percent
}}
%=
此项得分。
(实际章节测试占比以课程考核大纲为准)。
<
/div
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'essay'"
>
结业大作业满分为
{{
item
.
score
}}
分,以老师批改的分数为准。
<
/div
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'attendance'"
>
互动课出勤满分
{{
item
.
score
}}
分,以老师每次导出的参会记录进行打分。
<
/div
>
<
div
class
=
"p"
v
-
if
=
"item.key === 'question'"
>
课程提问满分
{{
item
.
score
}}
分,
老师根据提问情况酌情给分。
<
/div
>
<
/div
>
<
/template
>
<
/div
>
<
/div
>
<
/template
>
<
script
>
import
{
use
}
from
'echarts/core'
import
{
CanvasRenderer
}
from
'echarts/renderers'
import
{
PieChart
}
from
'echarts/charts'
import
{
TitleComponent
,
TooltipComponent
,
LegendComponent
}
from
'echarts/components'
import
VChart
from
'vue-echarts'
use
([
CanvasRenderer
,
PieChart
,
TitleComponent
,
TooltipComponent
,
LegendComponent
])
export
default
{
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
{
}
}
}
,
components
:
{
VChart
}
,
data
()
{
return
{
}
}
,
computed
:
{
checkList
()
{
return
this
.
data
.
course_check
.
filter
(
item
=>
parseInt
(
item
.
percent
))
}
,
option
()
{
const
data
=
this
.
checkList
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
value
:
item
.
percent
}
}
)
return
{
tooltip
:
{
trigger
:
'item'
,
formatter
:
'{a
}
<br/>{b
}
占比{c
}
%'
}
,
series
:
[{
name
:
'课程考核'
,
type
:
'pie'
,
data
}
]
}
}
}
}
<
/script
>
<
style
scoped
>
.
chart
{
height
:
300
px
;
}
<
/style
>
src/pages/learn/course.vue
浏览文件 @
76e6d010
...
...
@@ -56,7 +56,7 @@
<
script
>
import
cAction
from
'@action'
import
CourseLatestLive
from
'./course/components/CourseLatestLive.vue'
import
CourseListItem
from
'./components/CourseListItem'
import
CourseListItem
from
'./co
urse/co
mponents/CourseListItem'
export
default
{
components
:
{
CourseLatestLive
,
CourseListItem
},
data
()
{
...
...
src/pages/learn/course/components/CourseChapter.vue
浏览文件 @
76e6d010
...
...
@@ -47,7 +47,6 @@ export default {
chapters
()
{
const
chapters
=
this
.
course
.
chapters
||
[]
const
customeChapter
=
[
// { name: this.$t('viewerMain.courseWork'), id: 'course_work', type: 99 },
{
name
:
this
.
$t
(
'viewerMain.courseData'
),
id
:
'course_info'
,
type
:
100
},
{
name
:
this
.
$t
(
'viewerMain.teachingEvaluation'
),
id
:
'teach_evaluation'
,
type
:
102
}
]
...
...
src/pages/learn/course/components/CourseLatestLive.vue
浏览文件 @
76e6d010
...
...
@@ -70,9 +70,9 @@ export default {
margin
:
0
.3rem
;
background-color
:
#fff
;
.txt
{
padding
:
5px
100px
5px
0
;
font-size
:
16px
;
font-weight
:
bold
;
padding-right
:
100px
;
}
.in-btn
{
position
:
absolute
;
...
...
src/pages/learn/course/list.vue
deleted
100644 → 0
浏览文件 @
adbc24de
<
template
>
<div>
<!-- 最新直播 -->
<course-latest-live
/>
<div
class=
"con-title"
>
{{
$t
(
'pages.learn.course.title'
)
}}
</div>
<!-- 筛选 -->
<div
class=
"con-box"
>
<template
v-for=
"(item, index) in find"
>
<ul
v-bind:key=
"index"
class=
"tabs-list"
>
<template
v-if=
"find[index].arrItem.length"
>
<li
class=
"tabs-hd"
>
{{
item
.
name
}}
</li>
<template
v-for=
"(item1, index1) in item.arrItem"
>
<li
v-bind:key=
"index1"
>
<div
:class=
"['tab', item.selectIndex == index1 ? 'on' : '']"
@
click=
"selFindSelect"
:data-index=
"index1"
:data-i=
"index"
:data-key=
"item.key"
:data-val=
"item1.val"
>
{{
item1
.
name
}}
</div>
</li>
</
template
>
</template>
</ul>
</template>
</div>
<!-- 排序 -->
<div
class=
"switch-box"
>
<el-button
type=
"info"
size=
"medium"
plain
@
click=
"studyEarlyUpdate"
>
{{ $t('pages.learn.course.lastLearn') }}
<i
:class=
"['el-icon-caret-' + (filter.studyEarly == 'down' ? 'bottom' : 'top'), 'icon']"
></i>
</el-button>
<el-button
type=
"info"
size=
"medium"
plain
@
click=
"selectTimeUpdate"
>
{{ $t('pages.learn.course.updateTime') }}
<i
:class=
"['el-icon-caret-' + (filter.selectTime == 'down' ? 'bottom' : 'top'), 'icon']"
></i>
</el-button>
<!--
<el-button class="rbtn" type="primary" size="medium" icon="el-icon-self-cc-book icon" @click="goCourseAll">
{{ $t('pages.learn.course.changeCourse') }}
</el-button>
-->
</div>
<!-- 课程列表 -->
<div
class=
"con-box"
v-loading=
"loading"
>
<ul
class=
"course-list"
v-if=
"homeList.length"
>
<course-list-item
v-for=
"(item, index) in homeList"
:data=
"item"
:key=
"index"
></course-list-item>
</ul>
<div
class=
"no-data"
v-else
>
{{ $t('pages.learn.course.noCourseStr') }}
</div>
</div>
</div>
</template>
<
script
>
import
cAction
from
'@action'
import
CourseLatestLive
from
'./course/components/CourseLatestLive.vue'
import
CourseListItem
from
'./components/CourseListItem'
export
default
{
components
:
{
CourseLatestLive
,
CourseListItem
},
data
()
{
return
{
filter
:
{
studyEarly
:
'down'
,
selectTime
:
'down'
},
find
:
[
{
name
:
this
.
$t
(
'pages.learn.course.semeter'
),
isShow
:
false
,
selectIndex
:
0
,
key
:
'semester_id'
,
arrItem
:
[]
// 从后台请求
},
{
name
:
this
.
$t
(
'pages.learn.course.courseType'
),
isShow
:
false
,
selectIndex
:
0
,
key
:
'course_type'
,
arrItem
:
[
{
val
:
'-1'
,
name
:
this
.
$t
(
'pages.learn.course.allLearn'
)
},
{
val
:
'1'
,
name
:
this
.
$t
(
'pages.learn.course.mustLearn'
)
},
{
val
:
'2'
,
name
:
this
.
$t
(
'pages.learn.course.changeLearn'
)
},
{
val
:
'3'
,
name
:
this
.
$t
(
'pages.learn.course.repeatLearn'
)
}
]
}
],
homeList
:
[],
// 从后台请求
param
:
{},
loading
:
false
}
},
mounted
()
{
cAction
.
Course
.
getLearnFind
()
.
then
(
data
=>
{
this
.
find
[
0
].
arrItem
=
data
this
.
getAjaxList
(
true
,
this
.
$t
(
'pages.learn.course.goCourseAllStr'
))
})
.
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
})
.
finally
(()
=>
{})
},
methods
:
{
goCourseAll
()
{
this
.
$router
.
push
({
path
:
'/app/learn/course-all'
})
},
getAjaxList
(
bool
,
str
)
{
this
.
loading
=
true
cAction
.
Course
.
getCourseList
(
bool
,
this
.
param
)
.
then
(
json
=>
{
this
.
homeList
=
json
})
.
finally
(()
=>
{
this
.
loading
=
false
})
},
/**
* 分类选择 - 选中某一项
*/
selFindSelect
(
e
)
{
const
_data
=
e
.
currentTarget
.
dataset
const
index
=
_data
.
index
const
json
=
this
.
find
const
i
=
_data
.
i
json
[
i
].
selectIndex
=
index
json
[
i
].
isShow
=
false
if
(
_data
.
val
===
'-1'
)
{
delete
this
.
param
[
_data
.
key
]
}
else
{
this
.
param
[
_data
.
key
]
=
_data
.
val
}
/* 调用接口 */
this
.
getAjaxList
(
true
,
this
.
$t
(
'pages.learn.course.noFitCourseStr'
))
},
/**
* 筛选 - 最近学习顺序
*/
studyEarlyUpdate
()
{
const
na
=
this
.
filter
.
studyEarly
===
'up'
?
'down'
:
'up'
this
.
filter
.
studyEarly
=
na
if
(
na
===
'down'
)
{
this
.
param
.
order_type
=
'learn_time'
}
else
if
(
na
===
'up'
)
{
this
.
param
.
order_type
=
'-learn_time'
}
this
.
getAjaxList
(
true
,
this
.
$t
(
'pages.learn.course.goCourseAllStr'
))
},
/**
* 筛选 - 选修时间顺序
*/
selectTimeUpdate
()
{
const
na
=
this
.
filter
.
selectTime
===
'up'
?
'down'
:
'up'
this
.
filter
.
selectTime
=
na
if
(
na
===
'down'
)
{
this
.
param
.
order_type
=
'join_time'
}
else
if
(
na
===
'up'
)
{
this
.
param
.
order_type
=
'-join_time'
}
this
.
getAjaxList
(
true
,
this
.
$t
(
'pages.learn.course.goCourseAllStr'
))
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
/* 列表 筛选 */
ul
.tabs-list
{
float
:
left
;
width
:
100%
;
margin
:
0
0
0
.15rem
0
;
padding
:
0
;
font-size
:
0
.16rem
;
line-height
:
1
.5
;
border-top
:
1px
solid
#e8e8e8
;
&
:last-child
{
margin-bottom
:
0
;
}
.tabs-hd
{
display
:
inline-block
;
color
:
#fff
;
padding
:
5px
0
9px
;
margin-top
:
-5px
;
width
:
94px
;
text-align
:
center
;
background
:
url('~@/assets/images/type.png')
no-repeat
0
0
;
}
li
{
float
:
left
;
list-style
:
none
;
padding
:
0
.1rem
0
;
margin-right
:
0
.2rem
;
.tab
{
padding
:
0
0
.1rem
;
cursor
:
pointer
;
&
.on
{
background
:
#b49441
;
color
:
#ffffff
;
}
&
:focus
,
&
:hover
{
color
:
#b49441
;
background
:
#eeeeee
;
}
}
}
}
/* 筛选按钮 */
.switch-box
{
margin
:
0
0
.3rem
;
.icon
{
margin-left
:
0
.1rem
;
}
.rbtn
{
float
:
right
;
}
}
/* 课程列表 */
ul
.course-list
{
margin
:
0
;
padding
:
0
;
font-size
:
0
.18rem
;
color
:
#313131
;
}
.no-data
{
text-align
:
center
;
line-height
:
2rem
;
}
@media
(
max-width
:
767px
)
{
.switch-box
{
margin
:
0
;
}
}
</
style
>
src/pages/learn/courseDetail.vue
deleted
100644 → 0
浏览文件 @
adbc24de
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论