|
@@ -87,11 +87,11 @@
|
|
|
<!-- <div class="outBtn iconfont iconremove"></div> -->
|
|
|
<!-- <div v-if="audioDevices.length>0" class="micBtn iconfont" @click="changeMedia('audio',hideMic)" :class="user_info.muted ?'iconmic_off':'iconmic_on'"></div>
|
|
|
<div v-else class="micBtn iconfont iconmic_off"></div> -->
|
|
|
- <div class="micBtn mute_all_mic" :class="{ open_all_mic: !all_mute_mic }" ></div>
|
|
|
+ <div class="micBtn mute_all_mic" :class="{ open_all_mic: !all_mute_mic }"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <div v-show="user_info.UserId != i.UserId && i.Role != 'leader'" class="memberItem" v-for="i in user_list" :key="i.UserId">
|
|
|
+ <div v-show="user_info.UserId != i.UserId && i.Role != 'leader'" class="memberItem" v-for="(i,idx) in user_list" :key="i.UserId">
|
|
|
<div class="userMsg">
|
|
|
<div class="avatar">
|
|
|
<img :src="require('@/assets/images/rtcLive/avatar_small@2x.png')" alt="" />
|
|
@@ -101,7 +101,7 @@
|
|
|
<div class="button" v-if="user_info.Role == 'leader'">
|
|
|
<div class="micBtn" :class="i.IsWords ? 'ban_speak_on' : 'ban_speak_off'" @click="userCanSpeak(i)"></div>
|
|
|
|
|
|
- <div class="outBtn icon_remove" @click="userGetOut(i.UserId)"></div>
|
|
|
+ <div class="outBtn icon_remove" @click="userGetOut(i,idx)"></div>
|
|
|
<div class="micBtn" :class="i.IsMuted ? 'mute_one_mic_off' : 'mute_one_mic_on'" @click="onMemberMuted(i)"></div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -135,7 +135,8 @@ let chatAutoScroll = () => {
|
|
|
};
|
|
|
|
|
|
let createSocket = (config) => {
|
|
|
- var socket = io(process.env.VUE_SOCKET_URL, {
|
|
|
+ console.log(process.env.VUE_APP_SOCKET_URL, "process.env.VUE_APP_SOCKET_URL");
|
|
|
+ var socket = io(process.env.VUE_APP_SOCKET_URL, {
|
|
|
path: "/ws-sync",
|
|
|
transports: ["websocket"],
|
|
|
});
|
|
@@ -193,6 +194,17 @@ const all_mute_mic = ref(true);
|
|
|
|
|
|
const chat$ = ref(null);
|
|
|
|
|
|
+const userGetOut = (item,i) => {
|
|
|
+ socket.value &&
|
|
|
+ socket.value.emit("action", {
|
|
|
+ type: "getout",
|
|
|
+ data: {
|
|
|
+ id:item.UserId
|
|
|
+ },
|
|
|
+ });
|
|
|
+ delete user_list.value[i]
|
|
|
+};
|
|
|
+
|
|
|
const setUserWords = (res) => {
|
|
|
if (user_info.value.Role == "leader") {
|
|
|
user_list.value = res.members.reduce(function (tempArr, item) {
|
|
@@ -350,8 +362,8 @@ const openDialog = (str, link) => {
|
|
|
};
|
|
|
|
|
|
const onMemberMuted = (item) => {
|
|
|
- item.IsMuted = !item.IsMuted;
|
|
|
- socket.value.emit("action", { type: "users-muted", muted: item.IsMuted, userId: item.UserId });
|
|
|
+ item.IsMuted = !item.IsMuted;
|
|
|
+ socket.value.emit("action", { type: "users-muted", muted: item.IsMuted, userId: item.UserId });
|
|
|
};
|
|
|
|
|
|
const userCanSpeak = (item) => {
|
|
@@ -359,6 +371,13 @@ const userCanSpeak = (item) => {
|
|
|
socket.value.emit("action", { type: "users-words", words: item.IsWords, userId: item.UserId });
|
|
|
};
|
|
|
|
|
|
+const onGetOuT = (data) => {
|
|
|
+ if (data.id == user_info.UserId) {
|
|
|
+ emit("closeSocket");
|
|
|
+ Dialog.toast({ content: `你已被移除` });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const startFollow = (app) => {
|
|
|
app.Connect.follow.start({ follow: role.value == "customer" });
|
|
|
if (role.value == "customer") {
|
|
@@ -441,6 +460,8 @@ const startFollow = (app) => {
|
|
|
Dialog.toast({ content: `房间未找到`, type: "error" });
|
|
|
} else if (data.type == "danmumsg") {
|
|
|
setReceiveMsg(data.data);
|
|
|
+ } else if (data.type == "getout") {
|
|
|
+ onGetOuT(data);
|
|
|
} else if (data.type == "user-init") {
|
|
|
app.Connect.follow.sync();
|
|
|
} else if (data.type == "user-paint") {
|