|
@@ -19,8 +19,8 @@
|
|
|
<div class="danmu-box">
|
|
|
<p>{{lessonInfo.play_info.cur_play_user_count}}人正在观看 {{lessonInfo.play_info.barrage_count}}条弹幕</p>
|
|
|
<svg-icon icon-class="danmu" :class="[isDanmu?'active':'','icon-danmu']" @click="handleChangeIsDanmu"></svg-icon>
|
|
|
- <el-input v-model="danmuValue" placeholder="输入弹幕"></el-input>
|
|
|
- <a @click="sendMsg">发送弹幕</a>
|
|
|
+ <el-input v-model="danmuValue" :readonly="!isDanmu" placeholder="输入弹幕" @blur="danmuValue=danmuValue.trim()"></el-input>
|
|
|
+ <a @click="sendMsg" :class="[isDanmu?'active':'not-active',]">发送弹幕</a>
|
|
|
</div>
|
|
|
<div class="mian-left-center">
|
|
|
<div class="mian-left-center-left">
|
|
@@ -109,6 +109,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
play_total_count: null,
|
|
|
+ timer: null
|
|
|
}
|
|
|
},
|
|
|
//计算属性 类似于data概念
|
|
@@ -130,6 +131,7 @@ export default {
|
|
|
if (this.danmuValue) {
|
|
|
// 发送弹幕消息
|
|
|
this.commontSet(this.danmuValue)
|
|
|
+ this.addBarrage(this.player._currentTime,this.danmuValue)
|
|
|
this.danmuValue = null
|
|
|
}
|
|
|
},
|
|
@@ -139,7 +141,7 @@ export default {
|
|
|
id: 'chat' + this.danmuID++, //弹幕id,需唯一
|
|
|
txt: value, // 弹幕文字内容
|
|
|
style: { // 弹幕自定义样式
|
|
|
- color: 'red',
|
|
|
+ color: '#f6f6f6',
|
|
|
fontSize: '20px',
|
|
|
borderRadius: '50px',
|
|
|
padding: '5px 11px',
|
|
@@ -147,6 +149,18 @@ export default {
|
|
|
},
|
|
|
})
|
|
|
},
|
|
|
+ // 发送弹幕接口
|
|
|
+ addBarrage(time,text){
|
|
|
+ let MethodName = "/CourseServer/Client/ReadingManager/AddBarrage_LBCourseCSItemVideo";
|
|
|
+ let data = {
|
|
|
+ cs_item_id: this.lessonCatalog[this.lessonIndex].id,
|
|
|
+ time_point: time,
|
|
|
+ text: text
|
|
|
+ }
|
|
|
+ getLogin(MethodName, data)
|
|
|
+ .then(() => {
|
|
|
+ })
|
|
|
+ },
|
|
|
// 开启/关闭弹幕
|
|
|
handleChangeIsDanmu(){
|
|
|
let _this = this
|
|
@@ -154,8 +168,10 @@ export default {
|
|
|
if(_this.isDanmu){
|
|
|
_this.player.danmu.start()
|
|
|
_this.commontSet('弹幕大军即将来袭~')
|
|
|
+ this.getBarrageList()
|
|
|
}else{
|
|
|
_this.player.danmu.stop()
|
|
|
+ clearInterval(this.timer);
|
|
|
}
|
|
|
},
|
|
|
// 切换infotabs
|
|
@@ -246,37 +262,8 @@ export default {
|
|
|
plugins: [Danmu],
|
|
|
danmu: {
|
|
|
panel: false, // 弹幕面板
|
|
|
- comments: [
|
|
|
- {
|
|
|
- duration: 15000, // 弹幕持续显示时间,毫秒(最低为5000毫秒)
|
|
|
- id: 1, //弹幕id,需唯一
|
|
|
- prior: false, // 弹幕优先显示,默认false
|
|
|
- color: false, // 彩色弹幕,默认false
|
|
|
- txt: 'item.text', // 弹幕文字内容
|
|
|
- style: { // 弹幕自定义样式
|
|
|
- color: 'red',
|
|
|
- fontSize: '20px',
|
|
|
- borderRadius: '50px',
|
|
|
- padding: '5px 11px',
|
|
|
- backgroundColor: 'rgba(255, 255, 255, 0.1)',
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- duration: 15000, // 弹幕持续显示时间,毫秒(最低为5000毫秒)
|
|
|
- id: 2, //弹幕id,需唯一
|
|
|
- prior: false, // 弹幕优先显示,默认false
|
|
|
- color: true, // 彩色弹幕,默认false
|
|
|
- txt: '222222222', // 弹幕文字内容
|
|
|
- style: { // 弹幕自定义样式
|
|
|
- color: 'red',
|
|
|
- fontSize: '20px',
|
|
|
- borderRadius: '50px',
|
|
|
- padding: '5px 11px',
|
|
|
- backgroundColor: 'rgba(255, 255, 255, 0.1)',
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- closeDefaultBtn: true, //开启此项后不使用默认提供的弹幕开关,默认使用西瓜播放器提供的开关
|
|
|
+ comments: [],
|
|
|
+ closeDefaultBtn: true, //开启此项后不使用默认提供的弹幕开关,默认使用西瓜播放器提供的开关
|
|
|
},
|
|
|
});
|
|
|
this.player.once('play',()=>{
|
|
@@ -285,6 +272,10 @@ export default {
|
|
|
this.player.on('replay',()=>{
|
|
|
this.addPlayRecord()
|
|
|
})
|
|
|
+ this.player.on('ended',()=>{
|
|
|
+ clearInterval(this.timer);
|
|
|
+ })
|
|
|
+ this.getBarrageList()
|
|
|
}
|
|
|
})
|
|
|
.catch(() => {
|
|
@@ -301,7 +292,37 @@ export default {
|
|
|
.then(() => {
|
|
|
|
|
|
})
|
|
|
- }
|
|
|
+ },
|
|
|
+ // 获取弹幕列表
|
|
|
+ getBarrageList(){
|
|
|
+ this.timer = setInterval(() => {
|
|
|
+ if(!this.player.paused){
|
|
|
+ this.getBarrage()
|
|
|
+ }
|
|
|
+ }, 5000);
|
|
|
+ },
|
|
|
+ // 获取弹幕列表
|
|
|
+ getBarrage(){
|
|
|
+ let MethodName = "/CourseServer/Client/ReadingManager/GetBarrageList_LBCourseCSItemVideo";
|
|
|
+ let currentTime = this.player._currentTime
|
|
|
+ let data = {
|
|
|
+ cs_item_id: this.lessonCatalog[this.lessonIndex].id,
|
|
|
+ begin_time_point: currentTime,
|
|
|
+ end_time_point: currentTime+5,
|
|
|
+ top_n: 100
|
|
|
+ }
|
|
|
+ getLogin(MethodName, data)
|
|
|
+ .then((res) => {
|
|
|
+ if(res.status===1){
|
|
|
+ let time = 5000/res.barrage_list.length
|
|
|
+ res.barrage_list.forEach((item,index)=>{
|
|
|
+ setTimeout(() => {
|
|
|
+ this.commontSet(item)
|
|
|
+ }, currentTime+time*index);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
},
|
|
|
//生命周期 - 创建完成(可以访问当前this实例)
|
|
|
created() {
|
|
@@ -487,7 +508,10 @@ export default {
|
|
|
border: 1px solid #165DFF;
|
|
|
background: #165DFF;
|
|
|
border-radius: 0px 2px 2px 0px;
|
|
|
-
|
|
|
+ &.not-active{
|
|
|
+ cursor: not-allowed;
|
|
|
+ opacity: 0.5;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
.mian-left-center{
|