Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
a4845b95
提交
a4845b95
authored
11月 12, 2021
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: 课程讨论支持分页
上级
59d0a5cd
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
149 行增加
和
42 行删除
+149
-42
discuss.vue
src/modules/discuss/src/discuss.vue
+149
-42
没有找到文件。
src/modules/discuss/src/discuss.vue
浏览文件 @
a4845b95
<
template
>
<
template
>
<div>
<div>
<template
v-for=
'(item, index) in discussList'
>
<template
v-for=
"(item, index) in discussList"
>
<div
v-bind:key=
'index'
class=
'item-list'
@
click=
'goDiscussDetail'
:data-id=
'item.id'
:data-sid=
'item.semester_id'
:data-cid=
'item.relate_id'
:data-index=
'index'
>
<div
<div
class=
'user'
>
v-bind:key=
"index"
class=
"item-list"
@
click=
"goDiscussDetail"
:data-id=
"item.id"
:data-sid=
"item.semester_id"
:data-cid=
"item.relate_id"
:data-index=
"index"
>
<div
class=
"user"
>
<template
v-if=
"item.questioner.avatar"
>
<template
v-if=
"item.questioner.avatar"
>
<img
class=
'img'
:src=
'item.questioner.avatar'
/>
<img
class=
"img"
:src=
"item.questioner.avatar"
/>
</
template
>
</
template
>
<
template
v-else
>
<
template
v-else
>
<img
class=
'img'
src=
'../assets/images/person-default.jpg'
/>
<img
class=
"img"
src=
"../assets/images/person-default.jpg"
/>
</
template
>
</
template
>
<div
class=
'right'
>
<div
class=
"right"
>
<div
class=
'name'
>
{{item.questioner.nickname
}}
</div>
<div
class=
"name"
>
{{ item.questioner.nickname
}}
</div>
<div
class=
'time'
>
{{item.created_time
}}
</div>
<div
class=
"time"
>
{{ item.created_time
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
'title'
>
{{item.title
}}
</div>
<div
class=
"title"
>
{{ item.title
}}
</div>
<div
:class=
'["text"]'
v-html=
"item.contents"
></div>
<div
:class=
"['text']"
v-html=
"item.contents"
></div>
<!-- <div :class='["text"]' v-html="item.contents"></div><div class='["ellipsis no", (item.isShow ? "on" : "")]'>....</div> -->
<!-- <div :class='["text"]' v-html="item.contents"></div><div class='["ellipsis no", (item.isShow ? "on" : "")]'>....</div> -->
<div
class=
'result'
>
{{item.answer_count}} {{ $t('DiscussModule.DiscussList.answers') }}
<div
style=
'display: inline-block; width: 20px;'
></div>
{{item.tag_total_count}} {{ $t('DiscussModule.DiscussList.votes') }}
</div>
<div
class=
"result"
>
{{ item.answer_count }} {{ $t('DiscussModule.DiscussList.answers') }}
<div
style=
"display: inline-block; width: 20px;"
></div>
{{ item.tag_total_count }} {{ $t('DiscussModule.DiscussList.votes') }}
</div>
<!-- <div class='course-name'>{{item.courseName}}</div> -->
<!-- <div class='course-name'>{{item.courseName}}</div> -->
</div>
</div>
</template>
</template>
<
template
v-if=
'!discussList.length'
>
<div
style=
"text-align:center;padding:40px;"
v-if=
"!noMore"
>
<div
class=
'no-data'
>
{{
$t
(
'DiscussModule.DiscussList.noData'
)
}}
</div>
<el-button
:loading=
"loading"
@
click=
"load"
>
{{ loading ? '加载中' : '加载更多' }}
</el-button>
</div>
<
template
v-if=
"!discussList.length"
>
<div
class=
"no-data"
>
{{
$t
(
'DiscussModule.DiscussList.noData'
)
}}
</div>
</
template
>
</
template
>
</div>
</div>
</template>
</template>
...
@@ -45,38 +60,55 @@ import * as api from '../api/index'
...
@@ -45,38 +60,55 @@ import * as api from '../api/index'
export
default
{
export
default
{
name
:
'Discuss'
,
name
:
'Discuss'
,
components
:
{
},
data
()
{
return
{
discussList
:
[
]
}
},
props
:
{
props
:
{
params
:
{
params
:
{
type
:
Object
,
type
:
Object
,
required
:
false
,
required
:
false
,
default
()
{
default
()
{
return
{}
return
{}
}
}
}
}
},
},
mounted
()
{
data
()
{
return
{
loading
:
false
,
noMore
:
false
,
discussList
:
[]
}
},
computed
:
{
disabled
()
{
return
this
.
loading
||
this
.
noMore
}
},
mounted
()
{
this
.
loadAjax
()
this
.
loadAjax
()
},
},
methods
:
{
methods
:
{
loadAjax
()
{
load
()
{
// const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
this
.
params
.
dataJson
.
offset
+=
this
.
params
.
dataJson
.
limit
this
.
loadAjax
()
},
loadAjax
()
{
this
.
loading
=
true
api
[
this
.
params
.
request
](
this
.
params
)
api
[
this
.
params
.
request
](
this
.
params
)
.
then
(
json
=>
{
.
then
(
json
=>
{
this
.
discussList
=
json
if
(
json
.
length
<
this
.
params
.
dataJson
.
limit
)
{
this
.
noMore
=
true
}
this
.
discussList
=
this
.
discussList
.
concat
(
json
)
})
.
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
})
.
finally
(()
=>
{
this
.
loading
=
false
})
})
.
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
/* loading.close() */
})
},
},
/**
/**
* 跳转到对应 问题详情页
* 跳转到对应 问题详情页
*/
*/
goDiscussDetail
(
e
)
{
goDiscussDetail
(
e
)
{
const
qid
=
e
.
currentTarget
.
dataset
.
id
const
qid
=
e
.
currentTarget
.
dataset
.
id
const
sid
=
e
.
currentTarget
.
dataset
.
sid
const
sid
=
e
.
currentTarget
.
dataset
.
sid
const
cid
=
e
.
currentTarget
.
dataset
.
cid
const
cid
=
e
.
currentTarget
.
dataset
.
cid
...
@@ -85,7 +117,7 @@ export default {
...
@@ -85,7 +117,7 @@ export default {
},
},
watch
:
{
watch
:
{
params
:
{
params
:
{
handler
()
{
handler
()
{
this
.
loadAjax
()
this
.
loadAjax
()
},
},
deep
:
true
deep
:
true
...
@@ -95,18 +127,93 @@ export default {
...
@@ -95,18 +127,93 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.item-list
:first-child
{
margin-top
:
0
.42rem
;
}
.item-list
:first-child
{
.item-list
{
border-radius
:
5px
;
position
:
relative
;
padding
:
0
.3rem
0
.26rem
;
margin-bottom
:
0
.3rem
;
background
:
#fff
;
box-shadow
:
0
0
10px
rgba
(
204
,
204
,
204
,
0
.4
);
cursor
:
pointer
;
}
margin-top
:
0
.42rem
;
.item-list
.user
{
position
:
relative
;
overflow
:
hidden
;
}
}
.item-list
.user
.img
{
float
:
left
;
width
:
0
.6rem
;
height
:
0
.6rem
;
background
:
#e5e5e5
;
border-radius
:
50%
;
}
.item-list
{
.item-list
.user
.right
{
position
:
absolute
;
left
:
0
.72rem
;
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
}
border-radius
:
5px
;
.item-list
.user
.right
.name
{
font-size
:
0
.18rem
;
color
:
#313131
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
word-break
:break-all
;
}
position
:
relative
;
.item-list
.user
.right
.time
{
margin-top
:
0
.05rem
;
font-size
:
0
.16rem
;
color
:
#a0a0a0
;
}
padding
:
0
.3rem
0
.26rem
;
.item-list
.title
{
margin
:
0
.15rem
0
;
font-size
:
0
.22rem
;
color
:
#313131
;
font-weight
:
700
;
line-height
:
1
.5
;
text-align
:
justify
;
}
margin-bottom
:
0
.3rem
;
.item-list
.text
{
font-size
:
0
.18rem
;
color
:
#535353
;
line-height
:
1
.5
;
text-align
:
justify
;
/* display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; text-overflow: ellipsis; overflow: hidden; */
word-break
:break-all
;
overflow
:
hidden
;
}
background
:
#fff
;
.item-list
.ellipsis
{
display
:
none
;
position
:
absolute
;
right
:
0
.24rem
;
bottom
:
0
.68rem
;
padding
:
0
0
.15rem
0
0
.05rem
;
color
:
#535353
;
background
:
#fff
;
font-size
:
0
.18rem
;
}
box-shadow
:
0
0
10px
rgba
(
204
,
204
,
204
,
0
.4
);
.item-list
.ellipsis.on
{
display
:
block
;
}
cursor
:
pointer
;
.item-list
.result
{
margin-top
:
0
.15rem
;
font-size
:
0
.16rem
;
color
:
#313131
;
}
}
.item-list
.course-name
{
position
:
absolute
;
right
:
0
.32rem
;
bottom
:
0
.28rem
;
font-size
:
0
.16rem
;
color
:
#b49441
;
}
.item-list
.user
{
.no-data
{
font-size
:
0
.24rem
;
color
:
#112c42
;
line-height
:
1rem
;
text-align
:
center
;
}
position
:
relative
;
overflow
:
hidden
;
}
.item-list
.user
.img
{
float
:
left
;
width
:
0
.6rem
;
height
:
0
.6rem
;
background
:
#e5e5e5
;
border-radius
:
50%
;
}
.item-list
.user
.right
{
position
:
absolute
;
left
:
0
.72rem
;
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
}
.item-list
.user
.right
.name
{
font-size
:
0
.18rem
;
color
:
#313131
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
word-break
:
break-all
;
}
.item-list
.user
.right
.time
{
margin-top
:
0
.05rem
;
font-size
:
0
.16rem
;
color
:
#a0a0a0
;
}
.item-list
.title
{
margin
:
0
.15rem
0
;
font-size
:
0
.22rem
;
color
:
#313131
;
font-weight
:
700
;
line-height
:
1
.5
;
text-align
:
justify
;
}
.item-list
.text
{
font-size
:
0
.18rem
;
color
:
#535353
;
line-height
:
1
.5
;
text-align
:
justify
;
/* display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; text-overflow: ellipsis; overflow: hidden; */
word-break
:
break-all
;
overflow
:
hidden
;
}
.item-list
.ellipsis
{
display
:
none
;
position
:
absolute
;
right
:
0
.24rem
;
bottom
:
0
.68rem
;
padding
:
0
0
.15rem
0
0
.05rem
;
color
:
#535353
;
background
:
#fff
;
font-size
:
0
.18rem
;
}
.item-list
.ellipsis.on
{
display
:
block
;
}
.item-list
.result
{
margin-top
:
0
.15rem
;
font-size
:
0
.16rem
;
color
:
#313131
;
}
.item-list
.course-name
{
position
:
absolute
;
right
:
0
.32rem
;
bottom
:
0
.28rem
;
font-size
:
0
.16rem
;
color
:
#b49441
;
}
.no-data
{
font-size
:
0
.24rem
;
color
:
#112c42
;
line-height
:
1rem
;
text-align
:
center
;
}
</
style
>
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论