|
@@ -262,46 +262,46 @@
|
|
|
:key="index"
|
|
:key="index"
|
|
|
class="item"
|
|
class="item"
|
|
|
>
|
|
>
|
|
|
- <template v-if="item.msgType === DanmuMsgTypeEnum.reward">
|
|
|
|
|
|
|
+ <template v-if="item.data.msg_type === DanmuMsgTypeEnum.reward">
|
|
|
<div class="reward">
|
|
<div class="reward">
|
|
|
- <span>[{{ formatTimeHour(item.send_msg_time) }}]</span>
|
|
|
|
|
|
|
+ <span>[{{ formatTimeHour(item.time) }}]</span>
|
|
|
<span>
|
|
<span>
|
|
|
- {{ item.userInfo?.username }} 打赏了{{ item.msg }}!
|
|
|
|
|
|
|
+ {{ item.user_info?.username }} 打赏了{{ item.data.content }}!
|
|
|
</span>
|
|
</span>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
- <template v-if="item.msgType === DanmuMsgTypeEnum.danmu">
|
|
|
|
|
- <span class="time">[{{ formatTimeHour(item.send_msg_time) }}]</span>
|
|
|
|
|
|
|
+ <template v-if="item.data.msg_type === DanmuMsgTypeEnum.danmu">
|
|
|
|
|
+ <span class="time">[{{ formatTimeHour(item.time) }}]</span>
|
|
|
<span class="name">
|
|
<span class="name">
|
|
|
<span
|
|
<span
|
|
|
v-if="
|
|
v-if="
|
|
|
- item.userInfo && userStore.userInfo?.id === item.userInfo.id
|
|
|
|
|
|
|
+ item.user_info && userStore.userInfo?.id === item.user_info.id
|
|
|
"
|
|
"
|
|
|
>
|
|
>
|
|
|
- <span>{{ item.userInfo.username }}</span>
|
|
|
|
|
|
|
+ <span>{{ item.user_info.username }}</span>
|
|
|
<span>
|
|
<span>
|
|
|
- [{{ item.userInfo.roles?.map((v) => v.role_name).join() }}]
|
|
|
|
|
|
|
+ [{{ item.user_info.roles?.map((v) => v.role_name).join() }}]
|
|
|
</span>
|
|
</span>
|
|
|
</span>
|
|
</span>
|
|
|
<Dropdown
|
|
<Dropdown
|
|
|
trigger="click"
|
|
trigger="click"
|
|
|
positon="left"
|
|
positon="left"
|
|
|
- v-else-if="item.userInfo"
|
|
|
|
|
|
|
+ v-else-if="item.user_info"
|
|
|
>
|
|
>
|
|
|
<template #btn>
|
|
<template #btn>
|
|
|
- <span>{{ item.userInfo.username }}</span>
|
|
|
|
|
|
|
+ <span>{{ item.user_info.username }}</span>
|
|
|
<span>
|
|
<span>
|
|
|
- [{{ item.userInfo.roles?.map((v) => v.role_name).join() }}]
|
|
|
|
|
|
|
+ [{{ item.user_info.roles?.map((v) => v.role_name).join() }}]
|
|
|
</span>
|
|
</span>
|
|
|
</template>
|
|
</template>
|
|
|
<template #list>
|
|
<template #list>
|
|
|
<div class="list">
|
|
<div class="list">
|
|
|
- <div class="item">{{ item.userInfo.username }}</div>
|
|
|
|
|
|
|
+ <div class="item">{{ item.user_info.username }}</div>
|
|
|
<div
|
|
<div
|
|
|
class="item operator"
|
|
class="item operator"
|
|
|
@click="
|
|
@click="
|
|
|
handleDisableSpeakingUser({
|
|
handleDisableSpeakingUser({
|
|
|
- userId: item.userInfo.id,
|
|
|
|
|
|
|
+ userId: item.user_info.id,
|
|
|
socketId: item.socket_id,
|
|
socketId: item.socket_id,
|
|
|
})
|
|
})
|
|
|
"
|
|
"
|
|
@@ -312,7 +312,7 @@
|
|
|
class="item operator"
|
|
class="item operator"
|
|
|
@click="
|
|
@click="
|
|
|
handleRestoreSpeakingUser({
|
|
handleRestoreSpeakingUser({
|
|
|
- userId: item.userInfo.id,
|
|
|
|
|
|
|
+ userId: item.user_info.id,
|
|
|
socketId: item.socket_id,
|
|
socketId: item.socket_id,
|
|
|
})
|
|
})
|
|
|
"
|
|
"
|
|
@@ -336,31 +336,35 @@
|
|
|
<span>:</span>
|
|
<span>:</span>
|
|
|
<span
|
|
<span
|
|
|
class="msg"
|
|
class="msg"
|
|
|
- v-if="item.msgIsFile === WsMessageMsgIsFileEnum.no"
|
|
|
|
|
|
|
+ v-if="item.data.content_type === WsMessageContentTypeEnum.txt"
|
|
|
>
|
|
>
|
|
|
- {{ item.msg }}
|
|
|
|
|
|
|
+ {{ item.data.content }}
|
|
|
</span>
|
|
</span>
|
|
|
<div
|
|
<div
|
|
|
class="msg img"
|
|
class="msg img"
|
|
|
v-else
|
|
v-else
|
|
|
>
|
|
>
|
|
|
<img
|
|
<img
|
|
|
- :src="item.msg"
|
|
|
|
|
|
|
+ :src="item.data.content"
|
|
|
alt=""
|
|
alt=""
|
|
|
@load="handleScrollTop"
|
|
@load="handleScrollTop"
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
- <template v-else-if="item.msgType === DanmuMsgTypeEnum.otherJoin">
|
|
|
|
|
|
|
+ <template
|
|
|
|
|
+ v-else-if="item.data.msg_type === DanmuMsgTypeEnum.otherJoin"
|
|
|
|
|
+ >
|
|
|
<span class="name system">系统通知:</span>
|
|
<span class="name system">系统通知:</span>
|
|
|
<span class="msg">
|
|
<span class="msg">
|
|
|
- {{ item.userInfo?.username || item.socket_id }}进入直播!
|
|
|
|
|
|
|
+ {{ item.user_info?.username || item.socket_id }}进入直播!
|
|
|
</span>
|
|
</span>
|
|
|
</template>
|
|
</template>
|
|
|
- <template v-else-if="item.msgType === DanmuMsgTypeEnum.userLeaved">
|
|
|
|
|
|
|
+ <template
|
|
|
|
|
+ v-else-if="item.data.msg_type === DanmuMsgTypeEnum.userLeaved"
|
|
|
|
|
+ >
|
|
|
<span class="name system">系统通知:</span>
|
|
<span class="name system">系统通知:</span>
|
|
|
<span class="msg">
|
|
<span class="msg">
|
|
|
- {{ item.userInfo?.username || item.socket_id }}离开直播!
|
|
|
|
|
|
|
+ {{ item.user_info?.username || item.socket_id }}离开直播!
|
|
|
</span>
|
|
</span>
|
|
|
</template>
|
|
</template>
|
|
|
</div>
|
|
</div>
|
|
@@ -480,6 +484,7 @@ import {
|
|
|
IGoods,
|
|
IGoods,
|
|
|
LiveLineEnum,
|
|
LiveLineEnum,
|
|
|
LiveRenderEnum,
|
|
LiveRenderEnum,
|
|
|
|
|
+ WsMessageContentTypeEnum,
|
|
|
WsMessageMsgIsFileEnum,
|
|
WsMessageMsgIsFileEnum,
|
|
|
WsMessageMsgIsShowEnum,
|
|
WsMessageMsgIsShowEnum,
|
|
|
WsMessageMsgIsVerifyEnum,
|
|
WsMessageMsgIsVerifyEnum,
|
|
@@ -528,7 +533,8 @@ const {
|
|
|
closeWs,
|
|
closeWs,
|
|
|
closeRtc,
|
|
closeRtc,
|
|
|
keydownDanmu,
|
|
keydownDanmu,
|
|
|
- sendDanmu,
|
|
|
|
|
|
|
+ sendDanmuTxt,
|
|
|
|
|
+ sendDanmuImg,
|
|
|
handlePlay,
|
|
handlePlay,
|
|
|
videoWrapRef,
|
|
videoWrapRef,
|
|
|
danmuMsgType,
|
|
danmuMsgType,
|
|
@@ -681,8 +687,7 @@ function handleSendGetLiveUser(liveRoomId: number) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function handleSendDanmu() {
|
|
function handleSendDanmu() {
|
|
|
- danmuMsgType.value = DanmuMsgTypeEnum.danmu;
|
|
|
|
|
- sendDanmu();
|
|
|
|
|
|
|
+ sendDanmuTxt(danmuStr.value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async function getGiftGroupList() {
|
|
async function getGiftGroupList() {
|
|
@@ -728,17 +733,19 @@ async function handleHistoryMsg() {
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
res.data.rows.forEach((v) => {
|
|
res.data.rows.forEach((v) => {
|
|
|
damuList.value.unshift({
|
|
damuList.value.unshift({
|
|
|
- ...v,
|
|
|
|
|
- live_room_id: v.live_room_id!,
|
|
|
|
|
- msg_id: v.id!,
|
|
|
|
|
|
|
+ request_id: '',
|
|
|
socket_id: '',
|
|
socket_id: '',
|
|
|
- msgType: v.msg_type!,
|
|
|
|
|
- msgIsFile: v.msg_is_file!,
|
|
|
|
|
- userInfo: v.user,
|
|
|
|
|
- msg: v.content!,
|
|
|
|
|
- username: v.username!,
|
|
|
|
|
- send_msg_time: Number(v.send_msg_time),
|
|
|
|
|
- redbag_send_id: v.redbag_send_id,
|
|
|
|
|
|
|
+ time: v.send_msg_time!,
|
|
|
|
|
+ user_agent: v.user_agent!,
|
|
|
|
|
+ user_info: v.user,
|
|
|
|
|
+ data: {
|
|
|
|
|
+ live_room_id: v.live_room_id!,
|
|
|
|
|
+ msg_id: v.id!,
|
|
|
|
|
+ content: v.content!,
|
|
|
|
|
+ content_type: v.content_type!,
|
|
|
|
|
+ msg_type: v.msg_type!,
|
|
|
|
|
+ redbag_send_id: v.redbag_send_id,
|
|
|
|
|
+ },
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
if (
|
|
if (
|
|
@@ -746,12 +753,17 @@ async function handleHistoryMsg() {
|
|
|
appStore.liveRoomInfo?.system_msg !== ''
|
|
appStore.liveRoomInfo?.system_msg !== ''
|
|
|
) {
|
|
) {
|
|
|
damuList.value.push({
|
|
damuList.value.push({
|
|
|
- live_room_id: Number(roomId.value),
|
|
|
|
|
|
|
+ request_id: '',
|
|
|
socket_id: '',
|
|
socket_id: '',
|
|
|
- msgType: DanmuMsgTypeEnum.system,
|
|
|
|
|
- msgIsFile: WsMessageMsgIsFileEnum.no,
|
|
|
|
|
- msg: appStore.liveRoomInfo.system_msg,
|
|
|
|
|
- send_msg_time: Number(+new Date()),
|
|
|
|
|
|
|
+ time: +new Date(),
|
|
|
|
|
+ user_agent: navigator.userAgent,
|
|
|
|
|
+ data: {
|
|
|
|
|
+ live_room_id: Number(roomId.value),
|
|
|
|
|
+ msg_id: -1,
|
|
|
|
|
+ content: appStore.liveRoomInfo.system_msg,
|
|
|
|
|
+ content_type: WsMessageContentTypeEnum.txt,
|
|
|
|
|
+ msg_type: DanmuMsgTypeEnum.system,
|
|
|
|
|
+ },
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -896,9 +908,7 @@ async function uploadChange() {
|
|
|
file: fileList[0],
|
|
file: fileList[0],
|
|
|
});
|
|
});
|
|
|
if (res?.resultUrl) {
|
|
if (res?.resultUrl) {
|
|
|
- danmuMsgType.value = DanmuMsgTypeEnum.danmu;
|
|
|
|
|
- danmuStr.value = res.resultUrl || '错误图片';
|
|
|
|
|
- sendDanmu();
|
|
|
|
|
|
|
+ sendDanmuImg(res.resultUrl || '错误图片');
|
|
|
}
|
|
}
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
console.log(error);
|
|
@@ -925,8 +935,7 @@ async function handlePay(item: IGoods) {
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
window.$message.success('打赏成功!');
|
|
window.$message.success('打赏成功!');
|
|
|
danmuMsgType.value = DanmuMsgTypeEnum.reward;
|
|
danmuMsgType.value = DanmuMsgTypeEnum.reward;
|
|
|
- danmuStr.value = item.name || '';
|
|
|
|
|
- sendDanmu();
|
|
|
|
|
|
|
+ sendDanmuTxt(item.name || '');
|
|
|
}
|
|
}
|
|
|
userStore.updateMyWallet();
|
|
userStore.updateMyWallet();
|
|
|
getGiftGroupList();
|
|
getGiftGroupList();
|
|
@@ -1136,8 +1145,6 @@ function handleScrollTop() {
|
|
|
.bottom {
|
|
.bottom {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
- .desc {
|
|
|
|
|
- }
|
|
|
|
|
.area {
|
|
.area {
|
|
|
margin: 0 10px;
|
|
margin: 0 10px;
|
|
|
color: #9499a0;
|
|
color: #9499a0;
|