Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
L
learn-online-pc
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
learn-online-pc
Commits
1c36672d
提交
1c36672d
authored
5月 06, 2020
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
差异文件
merge...
上级
1455041c
80023d9b
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
382 行增加
和
47 行删除
+382
-47
tableList.vue
client/src/components/comTable/tableList.vue
+3
-2
index.js
client/src/modules/discuss/api/index.js
+34
-32
childAnswer.vue
client/src/modules/discuss/components/childAnswer.vue
+58
-0
index.js
client/src/modules/discuss/index.js
+5
-2
discuss.vue
client/src/modules/discuss/src/discuss.vue
+13
-0
discussDetail.vue
client/src/modules/discuss/src/discussDetail.vue
+246
-1
discussDetail.vue
client/src/pages/learn/discussDetail.vue
+9
-2
list.vue
client/src/pages/mobileLive/list.vue
+14
-8
没有找到文件。
client/src/components/comTable/tableList.vue
浏览文件 @
1c36672d
...
...
@@ -61,6 +61,7 @@
:page-size=
"page.size"
layout=
"total, prev, pager, next, jumper"
:total=
"page.total"
:hide-on-single-page=
"true"
@
current-change=
"handleCurrentChange"
></el-pagination>
</div>
...
...
@@ -154,8 +155,8 @@ export default {
// 分页
if
(
this
.
hasPage
)
{
this
.
dataList
=
response
.
list
this
.
page
.
total
=
parseInt
(
response
.
count
)
this
.
dataList
=
response
.
list
||
[]
this
.
page
.
total
=
parseInt
(
response
.
count
)
||
0
}
})
},
...
...
client/src/modules/discuss/api/index.js
浏览文件 @
1c36672d
...
...
@@ -2,55 +2,57 @@ import BaseAPI from '@/api/base_api'
const
httpRequest
=
new
BaseAPI
(
webConf
)
/**
* 获取课程详情
* @param {string} courseId 课程ID
* @param {string} semesterId 学期ID
* 获取课程讨论列表
*/
export
function
getCourse
(
courseId
,
semesterId
)
{
return
httpRequest
.
get
(
`/v2/education/courses/
${
courseId
}
/
${
semesterId
}
`
)
export
const
getDiscussList
=
(
param
)
=>
{
const
paramPath
=
param
.
path
||
''
return
httpRequest
.
get
(
`/v2/qa/questions
${
paramPath
}
`
,
param
.
dataJson
)
}
/**
* 获取章节资源详情
* @param {string} vid 资源ID
* 获取我的课程讨论列表
*/
export
function
getChapterVideo
(
vid
)
{
return
httpRequest
.
post
(
'/v2/education/video-streaming'
,
{
vid
}
,
{
headers
:
{
'Content-Type'
:
'application/json'
}
}
export
const
getCourseDiscussList
=
(
param
)
=>
{
const
paramPath
=
param
.
path
||
''
return
httpRequest
.
get
(
`/v2/qa/questions/course
${
paramPath
}
`
,
param
.
dataJson
)
}
/**
* 获取章节资源详情
* @param {string} vid 章节的资源ID
* 删除提问
*/
export
function
getChapterVideoAliyun
(
vid
)
{
return
httpRequest
.
post
(
'/v2/education/aliyun-video-streaming'
,
{
vid
},
{
headers
:
{
'Content-Type'
:
'application/json'
}
}
export
const
deleteDiscuss
=
(
qid
)
=>
{
return
httpRequest
.
delete
(
`/v2/qa/questions/
${
qid
}
`
)
}
/**
* 获取
课程讨论列表
* 获取
问题详情
*/
export
const
getDiscussList
=
(
param
)
=>
{
const
paramPath
=
param
.
path
||
''
export
const
getDiscussDetail
=
(
qid
)
=>
{
return
httpRequest
.
get
(
`/v2/qa/questions
${
paramPath
}
`
,
param
.
dataJson
`/v2/qa/questions/
${
qid
}
`
)
}
/**
*
获取我的课程讨论列表
*
删除评论
*/
export
const
getCourseDiscussList
=
(
param
)
=>
{
const
paramPath
=
param
.
path
||
''
return
httpRequest
.
get
(
`/v2/qa/questions/course
${
paramPath
}
`
,
param
.
dataJson
export
const
deleteComment
=
(
cid
)
=>
{
return
httpRequest
.
delete
(
`/v2/qa/comments/
${
cid
}
`
)
}
/**
* 回复评论
*/
export
const
callbackComment
=
(
param
)
=>
{
return
httpRequest
.
post
(
'/v2/qa/comments'
,
param
,
{
headers
:
{
'Content-Type'
:
'application/json'
}
}
)
}
client/src/modules/discuss/components/childAnswer.vue
0 → 100644
浏览文件 @
1c36672d
<
template
>
<div>
<div
class=
'ask'
>
<template
v-for=
'(item, index) in abswerData.comments'
>
<div
v-bind:key=
"index"
class=
'item-list'
:data-id=
'item.id'
>
<div
class=
'user'
>
<div
class=
'name'
>
{{
item
.
user
.
name
}}
</div>
<div
class=
'time'
>
{{
item
.
user
.
time
}}
</div>
<template
v-if=
'item.mine'
><div
class=
'right-txt'
@
click=
'deleteComment'
:data-cid=
'item.cid'
>
{{
$t
(
'pages.learn.discussDetail.delete'
)
}}
</div></
template
>
<div
class=
'right-txt'
@
click=
'callbackComment'
:data-sid=
'abswerData.sid'
:data-qid=
'abswerData.qid'
:data-quesid=
'abswerData.qid'
:data-to=
'item.user.name'
>
{{ $t('pages.learn.discussDetail.reply') }}
</div>
</div>
<div
class=
'text'
>
{{item.text}}
</div>
</div>
</template>
</div>
</div>
</template>
<
script
>
import
*
as
api
from
'../api/index'
export
default
{
data
()
{
return
{
abswerData
:
{}
}
},
props
:
{
dataJson
:
{
type
:
Object
,
require
:
false
}
},
mounted
()
{
},
methods
:
{
deleteComment
(
e
)
{
const
cid
=
e
.
currentTarget
.
dataset
.
cid
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
api
.
deleteComment
(
cid
).
then
(
json
=>
{
this
.
$emit
(
'updateList'
)
this
.
$message
({
type
:
'success'
,
message
:
this
.
$t
(
'pages.learn.discussDetail.deleteSuccess'
)
})
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
},
callbackComment
()
{
}
},
watch
:
{
dataJson
:
function
(
newVal
,
oldVal
)
{
this
.
abswerData
=
newVal
console
.
log
(
this
.
abswerData
,
'=============='
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
client/src/modules/discuss/index.js
浏览文件 @
1c36672d
import
'./index.scss'
import
Discuss
from
'./src/discuss.vue'
import
DiscussDetail
from
'./src/discussDetail.vue'
const
components
=
[
Discuss
Discuss
,
DiscussDetail
]
const
install
=
function
(
Vue
,
opts
=
{})
{
...
...
@@ -26,5 +28,6 @@ if (typeof window !== 'undefined' && window.Vue) {
export
default
{
install
,
Discuss
Discuss
,
DiscussDetail
}
client/src/modules/discuss/src/discuss.vue
浏览文件 @
1c36672d
...
...
@@ -28,6 +28,19 @@
</template>
<
script
>
/**
* 调用:通过组件传值监听watch来请求渲染
*
params: {
path: '/my', 地址参数
request: 'getDiscussList', 请求方法
dataJson: { 参数
limit: 10,
offset: 0
}
}
*/
import
*
as
api
from
'../api/index'
export
default
{
...
...
client/src/modules/discuss/src/discussDetail.vue
浏览文件 @
1c36672d
<
template
>
<div>
<div
class=
'discuss-detail-scroll'
>
<div
class=
'ques'
>
<div
class=
'title'
>
{{
discussQues
.
title
}}
</div>
<div
class=
'text'
v-html=
"discussQues.text"
></div>
<div
class=
'user'
>
<div
class=
'name'
>
{{
user
.
name
}}
</div>
<div
class=
'time'
>
{{
user
.
time
}}
</div>
<template
v-if=
'discussQues.mine'
><div
class=
'right-txt'
@
click=
'deleteDiscuss'
>
{{
$t
(
'pages.learn.discussDetail.delete'
)
}}
</div></
template
>
<div
class=
'right-txt'
@
click=
'callbackComment'
:data-sid=
'discussQues.sid'
:data-qid=
'discussQues.qid'
:data-quesid=
'discussQues.qid'
>
{{ $t('pages.learn.discussDetail.reply') }}
</div>
<div
class=
'right-txt'
@
click=
'openOrcloseDis'
data-key=
'disQus'
>
{{ $t('pages.learn.discussDetail.discuss') }}({{discussQues.comCnt}})
</div>
<!-- <div class='right-txt' @click='btnlike' :data-quesid='discussQues.qid' :data-sid='discussQues.sid' :data-tagid='discussQues.tag_id'>
{{ $t('pages.learn.discussDetail.like') }}({{discussQues.likeCnt}})</div> -->
</div>
<div
v-show=
'disQus.isShowComment'
>
<answer
:dataJson=
"discussQues"
@
updateList=
"getData"
></answer>
</div>
</div>
<div
class=
'result'
>
{{discussQues.askCnt}} {{ $t('pages.learn.discussion.answers') }}
<div
style=
'display: inline-block; width: 0.2rem;'
></div>
{{discussQues.TouCnt}} {{ $t('pages.learn.discussion.votes') }}
</div>
<!-- <template v-for='(item, index) in answersList'>
<div v-bind:key="index" class='ask'>
<div class='user-1'>
<template v-if="item.user.url">
<img class='img-1' :src='item.user.url' />
</template>
<template v-else>
<img class='img-1' src='../assets/images/person-default.jpg' />
</template>
<div class='right-1'>
<div class='name-1'>{{item.user.name}}</div>
<div class='time-1'>{{item.user.time}}</div>
</div>
</div>
<div class='text' v-html="item.text"></div>
<div class='user'>
<template v-if='item.mine'><div class='right-txt' @click='deleteAnswer' :data-aid='item.aid'>{{ $t('pages.learn.discussDetail.delete') }}</div></template>
<div class='right-txt' @click='callbackComment' :data-sid='discussQues.sid' :data-qid='discussQues.qid' :data-ansid='item.aid'>{{ $t('pages.learn.discussDetail.reply') }}</div>
<div class='right-txt' @click='openOrcloseDis' :data-key='answers' :data-index='index'>{{ $t('pages.learn.discussDetail.discuss') }}({{item.comCnt}})</div>
<div class='right-txt' @click='btnlike' :data-sid='discussQues.sid' :data-quesid='discussQues.qid' :data-ansid='item.aid' :data-tagid='item.tag_id'>
点赞({{item.likeCnt}})</div>
</div>
<template v-if='answers[index].isShowComment'>
<template v-for='(item1, index) in item.comments'>
<div v-bind:key='index' class='item-list' :data-id='item1.id'>
<div class='user'>
<div class='name'>{{item1.user.name}}</div>
<div class='time'>{{item1.user.time}}</div>
<template v-if='item1.mine'><div class='right-txt' @click='deleteComment' :data-cid='item1.cid'>{{ $t('pages.learn.discussDetail.delete') }}</div></template>
<div class='right-txt' @click='callbackComment' :data-sid='discussQues.sid' :data-qid='discussQues.qid' :data-ansid='item.aid' :data-to='item.user.name'>{{ $t('pages.learn.discussDetail.reply') }}</div>
</div>
<div class='text' v-html="item1.text"></div>
</div>
</template>
</template>
<template v-if='(!item.comments.length || !answers[index].isShowComment)'><div style='width: 100%; height: 0.2rem;'></div></template>
</div>
</template> -->
<!-- <template v-if='!answersList.length'>
<div class='no-data'>{{ $t('pages.learn.discussDetail.noAnswer') }}</div>
</template>
<div style='width: 750rpx; height: 200rpx;'></div> -->
</div>
<div
class=
'input-publish'
>
<textarea
id=
"editor"
></textarea>
<!-- <div class='ask'> -->
<!-- <image class='img' src='./icons/ask.png' mode='aspectFill'></image> -->
<!-- <input type='text' class="txt" placeholder='{{inputStatus.placeholder}}' focus='{{inputStatus.canFocus}}' bindblur='blurInput' confirm-type='send' bindconfirm='publishContent' value='{{inputStatus.input}}' cursor-spacing='20'/> -->
<!-- </div> -->
<el-button
type=
"primary"
@
click=
"publishContent"
>
{{ $t('pages.learn.discussDetail.send') }}
</el-button><em
class=
"send"
>
({{inputStatus.placeholder}})
</em>
</div>
</div>
</template>
<
script
>
import
answer
from
'../components/childAnswer.vue'
import
*
as
api
from
'../api/index.js'
export
default
{
components
:
{
answer
},
name
:
'DiscussDetail'
,
props
:
{
paramId
:
{
type
:
Object
,
require
:
false
}
// sid: { type: String, require: false },
// cid: { type: String, require: false },
// id: { type: String, require: false } // 章节id
},
data
()
{
return
{
discussQues
:
{},
/* 回复内容状态 */
call
:
{},
/* 存储状态值 的对象, 记录上次用户操作 */
disQus
:
{
isShowComment
:
false
},
inputStatus
:
{
canFocus
:
false
,
placeholder
:
`
${
this
.
$t
(
'pages.learn.discussDetail.answering'
)}
...`
,
input
:
''
}
}
},
created
()
{
this
.
getData
()
},
computed
:
{
user
()
{
return
this
.
discussQues
.
user
||
{}
}
},
methods
:
{
updateList
()
{
this
.
getData
()
},
deleteDiscuss
()
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
''
,
spinner
:
''
,
background
:
'rgba(255, 255, 255, 0.9)'
})
api
.
deleteDiscuss
(
this
.
id
).
then
(
json
=>
{
this
.
$message
({
type
:
'success'
,
message
:
this
.
$t
(
'pages.learn.discussDetail.deleteSuccess'
)
})
/* 返回上一级 菜单 */
setTimeout
(()
=>
{
// wx.navigateBack({ delta: 1 })
this
.
$router
.
go
(
-
1
)
},
1000
)
}).
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}).
finally
(()
=>
{
loading
.
close
()
})
},
getData
()
{
api
.
getDiscussDetail
(
this
.
paramId
.
id
).
then
(
data
=>
{
const
json
=
this
.
setData
(
data
)
this
.
discussQues
=
json
.
ques
this
.
call
.
semester_id
=
this
.
discussQues
.
sid
this
.
disQus
.
isShowComment
=
json
.
ques
.
isShowComment
})
// const loading = this.$loading({ lock: true, text: '', spinner: '', background: 'rgba(255, 255, 255, 0.9)' })
// .then(json => {
// this.discussQues = json.ques
// this.call.semester_id = this.discussQues.sid
// this.disQus.isShowComment = json.ques.isShowComment
// // const answers = []
// // for (let i = 0; i
<
json
.
answer
.
length
;
i
++
)
{
// // answers.push({
// // aid: json.answer[i].aid,
// // isShowComment: json.answer[i].isShowComment
// // })
// // }
// // this.answersList = json.answer
// // this.answers = answers
// }).catch(e => { this.$message.error(e.message) }).finally(() => { loading.close() })
},
callbackComment
(
e
)
{
// /* 如果,输入框中,本身已经存在输入内容,那么再点击其他回复时,不给提示,直接清空 */
this
.
inputStatus
.
input
=
''
// 这里如果想判断,不能使用 inputStatus.input这个 在blur时存储
const
_data
=
e
.
currentTarget
.
dataset
const
qid
=
_data
.
qid
const
quesid
=
_data
.
quesid
const
ansid
=
_data
.
ansid
const
to
=
_data
.
to
const
sid
=
_data
.
sid
const
json
=
{}
if
(
qid
)
{
json
.
questionId
=
qid
}
if
(
to
)
{
json
.
to
=
to
}
if
(
quesid
)
{
json
.
question_id
=
quesid
}
if
(
ansid
)
{
json
.
answer_id
=
ansid
}
if
(
sid
)
{
json
.
semester_id
=
sid
}
this
.
call
=
json
if
(
to
)
{
this
.
inputStatus
.
placeholder
=
this
.
$t
(
'pages.learn.discussDetail.reply'
)
+
to
+
':'
}
else
{
this
.
inputStatus
.
placeholder
=
`
${
this
.
$t
(
'pages.learn.discussDetail.reply'
)}
:`
}
this
.
inputStatus
.
canFocus
=
true
$
(
'#editor'
).
focus
()
},
openOrcloseDis
(
e
)
{
const
key
=
e
.
currentTarget
.
dataset
.
key
if
(
key
===
'disQus'
)
{
this
.
disQus
.
isShowComment
=
!
this
.
disQus
.
isShowComment
}
else
{
const
index
=
e
.
currentTarget
.
dataset
.
index
this
.
answers
[
index
].
isShowComment
=
!
this
.
answers
[
index
].
isShowComment
}
},
setData
(
_data
)
{
const
json
=
{
ques
:
{
qid
:
_data
.
id
,
sid
:
_data
.
semester_id
,
user
:
{
url
:
_data
.
questioner
.
avatar
||
''
,
name
:
_data
.
questioner
.
nickname
,
time
:
_data
.
created_time
},
title
:
_data
.
title
,
text
:
_data
.
contents
,
askCnt
:
_data
.
answer_count
||
0
,
TouCnt
:
_data
.
tag_total_count
||
0
,
likeCnt
:
_data
.
tag_count
||
0
,
comCnt
:
_data
.
comments
.
length
,
mine
:
_data
.
mine
,
isShowComment
:
false
,
has_tag
:
_data
.
has_tag
,
tag_id
:
(
_data
.
tag
&&
_data
.
tag
.
id
)
||
''
,
comments
:
_data
.
comments
.
map
((
_
,
i
)
=>
{
return
{
cid
:
_
.
id
,
user
:
{
url
:
_
.
observer
.
avatar
||
''
,
name
:
_
.
observer
.
nickname
,
time
:
_
.
created_time
},
text
:
_
.
comments
,
mine
:
_
.
mine
}
})
}
}
return
json
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
>
// .discuss-detail-scroll { }
.discuss-detail-scroll
.ques
{
padding
:
0
.3rem
0
.26rem
;
padding-top
:
0
;
margin-bottom
:
0
.2rem
;
background
:
#fff
;
box-shadow
:
0
2px
4px
rgba
(
10
,
4
,
6
,
0
.1
);
overflow
:
hidden
;
}
/* 显示标题、描述、讨论、人等 */
.discuss-detail-scroll
.user
{
margin-top
:
0
.15rem
;
overflow
:
hidden
;
}
.discuss-detail-scroll
.user
.name
{
float
:
left
;
font-size
:
0
.16rem
;
color
:
#313131
;
line-height
:
0
.2rem
;
}
.discuss-detail-scroll
.user
.time
{
float
:
left
;
margin-left
:
0
.4rem
;
font-size
:
0
.14rem
;
color
:
#a0a0a0
;
line-height
:
0
.2rem
;
}
.discuss-detail-scroll
.user
.right-txt
{
float
:
right
;
margin-left
:
0
.2rem
;
font-size
:
0
.14rem
;
color
:
#a27c1b
;
cursor
:
pointer
;
}
.discuss-detail-scroll
.user
.right-txt
.img
{
display
:
inline-block
;
margin-top
:
1px
;
width
:
0
.22rem
;
height
:
0
.2rem
;
}
.discuss-detail-scroll
.title
{
margin
:
0
.15rem
0
;
font-size
:
0
.24rem
;
color
:
#313131
;
line-height
:
1
.5
;
text-align
:
justify
;
}
.discuss-detail-scroll
.text
{
font-size
:
0
.18rem
;
color
:
#535353
;
line-height
:
1
.5
;
text-align
:
justify
;
}
/* 显示回答和投票 */
.discuss-detail-scroll
.result
{
margin-left
:
0
.26rem
;
margin-top
:
0
.15rem
;
font-size
:
0
.14rem
;
color
:
#313131
;
}
.discuss-detail-scroll
.ask
{
position
:
relative
;
margin-top
:
0
.2rem
;
padding
:
0
0
.26rem
;
background
:
#fff
;
overflow
:
hidden
;
}
/* 显示回答 和 讨论 */
.discuss-detail-scroll
.ask
.user-1
{
position
:
relative
;
overflow
:
hidden
;
margin-top
:
0
.25rem
;
margin-bottom
:
0
.15rem
;
}
.discuss-detail-scroll
.ask
.user-1
.img-1
{
float
:
left
;
width
:
0
.6rem
;
height
:
0
.6rem
;
border-radius
:
50%
;
}
.discuss-detail-scroll
.ask
.user-1
.right-1
{
position
:
absolute
;
left
:
0
.72rem
;
top
:
50%
;
-webkit-transform
:
translateY
(
-50%
);
transform
:
translateY
(
-50%
);
}
.discuss-detail-scroll
.ask
.user-1
.right-1
.name-1
{
font-size
:
0
.14rem
;
color
:
#313131
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
word-break
:break-all
;
}
.discuss-detail-scroll
.ask
.user-1
.right-1
.time-1
{
margin-top
:
5px
;
font-size
:
0
.14rem
;
color
:
#a0a0a0
;
}
.discuss-detail-scroll
.item-list
{
position
:
relative
;
padding
:
0
.3rem
0
;
border-bottom
:
1px
solid
#c9c9c9
;
}
.discuss-detail-scroll
.item-list
:last-child
{
border-bottom
:
none
;
}
.discuss-detail-scroll
.item-list
.user
{
margin-top
:
0
;
overflow
:
hidden
;
}
.discuss-detail-scroll
.item-list
.user
.name
{
float
:
left
;
font-size
:
0
.16rem
;
color
:
#313131
;
line-height
:
0
.2rem
;
}
.discuss-detail-scroll
.item-list
.user
.time
{
float
:
left
;
margin-left
:
0
.4rem
;
font-size
:
0
.14rem
;
color
:
#a0a0a0
;
line-height
:
0
.2rem
;
}
.discuss-detail-scroll
.item-list
.user
.right-txt
{
float
:
right
;
margin-left
:
0
.2rem
;
font-size
:
0
.14rem
;
color
:
#a27c1b
;
}
.discuss-detail-scroll
.item-list
.text
{
margin-top
:
0
.15rem
;
font-size
:
0
.16rem
;
color
:
#535353
;
}
.discuss-detail-scroll
.item-list
.text.on
{
color
:
#2263d9
;
}
.discuss-detail-scroll
.no-data
{
padding
:
1rem
0
;
font-size
:
0
.24rem
;
color
:
#c9c9c9
;
text-align
:
center
;
}
.input-publish
{
position
:
fixed
;
z-index
:
2
;
height
:
1
.5rem
;
left
:
200px
;
right
:
15px
;
bottom
:
0
;
padding
:
0
.2rem
;
background
:
#fff
;
box-sizing
:
border-box
;
}
.input-publish
#editor
{
width
:
100%
;
height
:
0
.7rem
;
font-size
:
18px
;
line-height
:
1
.5
;
outline
:
none
;
}
.input-publish
.send
{
font-size
:
14px
;
color
:
#ddd
;
margin-left
:
10px
;
}
.input-publish
.ask
{
position
:
relative
;
margin
:
12px
auto
;
width
:
90%
;
height
:
56px
;
border
:
1px
solid
#dcdcdc
;
box-sizing
:
border-box
;
-webkit-box-sizing
:
border-box
;
}
.input-publish
.ask
.img
{
position
:
absolute
;
left
:
24px
;
top
:
13px
;
width
:
28px
;
height
:
0
.26rem
;
}
.input-publish
.ask
.txt
{
position
:
absolute
;
left
:
63px
;
top
:
0
;
height
:
54px
;
width
:
100%
;
border
:
none
;
line-height
:
2
;
font-size
:
0
.18rem
;
color
:
#313131
;
}
</
style
>
client/src/pages/learn/discussDetail.vue
浏览文件 @
1c36672d
...
...
@@ -2,6 +2,7 @@
<div>
<div
class=
"con-title"
>
{{
$t
(
'pages.learn.discussDetail.title'
)
}}
</div>
<div
class=
"con-box"
>
<!--
<discuss-detail
:paramId=
'paramId'
></discuss-detail>
-->
<div
class=
'discuss-detail-scroll'
>
<div
class=
'ques'
>
<div
class=
'title'
>
{{
discussQues
.
title
}}
</div>
...
...
@@ -13,7 +14,6 @@
<div
class=
'right-txt'
@
click=
'callbackComment'
:data-sid=
'discussQues.sid'
:data-qid=
'discussQues.qid'
:data-quesid=
'discussQues.qid'
>
{{ $t('pages.learn.discussDetail.reply') }}
</div>
<div
class=
'right-txt'
@
click=
'openOrcloseDis'
data-key=
'disQus'
>
{{ $t('pages.learn.discussDetail.discuss') }}({{discussQues.comCnt}})
</div>
<div
class=
'right-txt'
@
click=
'btnlike'
:data-quesid=
'discussQues.qid'
:data-sid=
'discussQues.sid'
:data-tagid=
'discussQues.tag_id'
>
<!-- <image class='img' src='{{discussQues.has_tag ? "./icons/like-on.png" : "./icons/like.png"}}'></image> -->
{{ $t('pages.learn.discussDetail.like') }}({{discussQues.likeCnt}})
</div>
</div>
<
template
v-if=
'disQus.isShowComment'
>
...
...
@@ -53,7 +53,6 @@
<div
class=
'right-txt'
@
click=
'callbackComment'
:data-sid=
'discussQues.sid'
:data-qid=
'discussQues.qid'
:data-ansid=
'item.aid'
>
{{ $t('pages.learn.discussDetail.reply') }}
</div>
<div
class=
'right-txt'
@
click=
'openOrcloseDis'
:data-key=
'answers'
:data-index=
'index'
>
{{ $t('pages.learn.discussDetail.discuss') }}({{item.comCnt}})
</div>
<div
class=
'right-txt'
@
click=
'btnlike'
:data-sid=
'discussQues.sid'
:data-quesid=
'discussQues.qid'
:data-ansid=
'item.aid'
:data-tagid=
'item.tag_id'
>
<!-- <image class='img' src='{{item.has_tag ? "./icons/like-on.png" : "./icons/like.png"}}'></image> -->
点赞({{item.likeCnt}})
</div>
</div>
<
template
v-if=
'answers[index].isShowComment'
>
...
...
@@ -103,6 +102,7 @@ export default {
},
data
()
{
return
{
paramId
:
{},
ckeditor
:
null
,
courseTitle
:
'课程问题'
,
discussQues
:
{
...
...
@@ -142,6 +142,13 @@ export default {
call: {}
}
},
created() {
this.paramId = {
sid: this.$route.params.sid,
cid: this.$route.params.cid,
id: this.$route.params.id
}
},
mounted () {
this.call = { questionId: this.id, semester_id: '', contents: '', question_id: this.id, answer: true }
const loading = this.$loading({ lock: true, text: '', spinner: '', background: '
rgba
(
255
,
255
,
255
,
0.9
)
' })
...
...
client/src/pages/mobileLive/list.vue
浏览文件 @
1c36672d
...
...
@@ -33,7 +33,7 @@
<
div
class
=
"live-item-content__time"
>
{{
subitem
.
start_time
}}
<
/div
>
<
div
class
=
"live-item-content__status"
v
-
if
=
"
subitem.enable_record
"
v
-
if
=
"
!(subitem.live_status === 103 && !subitem.enable_record)
"
>
{{
calcTimeText
(
subitem
.
start_time
,
subitem
.
live_status
)
}}
<
/div
>
<
/div
>
<
/div
>
...
...
@@ -65,7 +65,7 @@ export default {
methods
:
{
/* 退出登录 - 跳转方法 */
logout
()
{
cAction
.
Other
s
.
outLogin
()
cAction
.
Other
.
outLogin
()
.
then
(
str
=>
{
window
.
G
.
UserInfo
=
{
}
this
.
$router
.
push
({
path
:
'/login/index'
}
)
...
...
@@ -96,9 +96,10 @@ export default {
this
.
dataList
=
response
.
data
}
}
)
.
catch
(
e
=>
{
this
.
$message
.
error
(
e
.
message
)
}
)
// 取消报错提醒
// .catch(e =>
{
// this.$message.error(e.message)
//
}
)
.
finally
(()
=>
{
if
(
this
.
loading
)
{
this
.
loading
.
close
()
...
...
@@ -182,6 +183,7 @@ export default {
openCloudLive
(
data
,
message
)
{
// https://doc.bokecc.com/live/Appendix_1.html
const
liveStatus
=
data
.
live_status
data
.
viewer_name
=
data
.
viewer_name
||
this
.
nickName
if
(
liveStatus
===
1
)
{
// 进行中
const
url
=
`https://view.csslcloud.net/api/view/index?roomid=${data.room_id
}
&userid=${data.user_id
}
&autoLogin=true&viewername=${data.viewer_name
}
&viewertoken=${data.viewer_token
}
`
...
...
@@ -258,7 +260,7 @@ export default {
this
.
timer
=
setInterval
(()
=>
{
this
.
getNewLiveMsg
()
this
.
getLiveList
()
}
,
3
000
)
}
,
10
000
)
}
,
beforeDestroy
()
{
this
.
timer
&&
clearInterval
(
this
.
timer
)
...
...
@@ -292,7 +294,11 @@ body {
padding
:
0.2
rem
0.2
rem
0.16
rem
;
}
.
head
.
logo
{
height
:
0.3
rem
;
width
:
0.9
rem
;
/* height: 0.3rem; */
}
.
head
.
logo
:
nth
-
child
(
2
)
{
margin
-
left
:
0.1
rem
;
}
.
head
.
user
{
display
:
flex
;
...
...
@@ -379,7 +385,7 @@ body {
font
-
size
:
0.12
rem
;
color
:
#
333
;
}
.
live
-
item
-
content__
time
{
.
live
-
item
-
content__
status
{
color
:
#
b01c3d
;
}
<
/style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论