|
@@ -24,17 +24,17 @@
|
|
|
<!-- </div> -->
|
|
|
<!-- <input type="text" autocomplete="off"> -->
|
|
|
<div class="contorlBar" v-if="!showInput">
|
|
|
- <div v-if="connectStatus == 1" :class="{ disabled: user_info.isWords }" class="saySomething" @click="onFocus">
|
|
|
+ <div v-if="connectStatus == 1" :class="{ disabled: !user_info.IsWords }" class="saySomething" @click="onFocus">
|
|
|
<!-- <i class="speakIcon"
|
|
|
- :class="{'dis':!user_info.isWords}"></i> -->
|
|
|
- <span v-if="!user_info.isWords"> 说点什么 </span>
|
|
|
- <span v-if="user_info.isWords">已被禁言</span>
|
|
|
+ :class="{'dis':!user_info.IsWords}"></i> -->
|
|
|
+ <span v-if="user_info.IsWords"> 说点什么 </span>
|
|
|
+ <span v-if="!user_info.IsWords">已被禁言</span>
|
|
|
|
|
|
<div class="disSpeakBtn" @click.stop="chatShow = !chatShow" :class="{ dis: !chatShow }"></div>
|
|
|
</div>
|
|
|
<div style="text-align: right; width: 100%" v-if="connectStatus == 0">连接中...</div>
|
|
|
<div v-if="connectStatus == 1" class="contorl_btn">
|
|
|
- <div v-if="isBrushes" @click="onDrawUndo" class="brushesBack" :class="{ disable: !canUndo }"></div>
|
|
|
+ <div v-if="isBrushes && user_info.Role == 'leader'" @click="onDrawUndo" class="brushesBack" :class="{ disabled: !canUndo }"></div>
|
|
|
<div v-if="user_info.Role == 'leader'" @click="onDraw(!isBrushes)" :class="{ brushesed: isBrushes }" class="brushes"></div>
|
|
|
|
|
|
<div
|
|
@@ -87,7 +87,7 @@
|
|
|
<!-- <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 }" @click="onMemberMuted(all_mute_mic)"></div>
|
|
|
+ <div class="micBtn mute_all_mic" :class="{ open_all_mic: !all_mute_mic }" ></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
@@ -99,10 +99,10 @@
|
|
|
<div class="name">{{ i.Nickname }}</div>
|
|
|
</div>
|
|
|
<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="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="micBtn" :class="i.isMuted ? 'mute_one_mic_off' : 'mute_one_mic_on'" @click="onMemberMuted(!i.isMuted, i.UserId)"></div>
|
|
|
+ <div class="micBtn" :class="i.IsMuted ? 'mute_one_mic_off' : 'mute_one_mic_on'" @click="onMemberMuted(i)"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -135,7 +135,7 @@ let chatAutoScroll = () => {
|
|
|
};
|
|
|
|
|
|
let createSocket = (config) => {
|
|
|
- var socket = io("https://vr-admin.cdfmembers.com/", {
|
|
|
+ var socket = io(process.env.VUE_SOCKET_URL, {
|
|
|
path: "/ws-sync",
|
|
|
transports: ["websocket"],
|
|
|
});
|
|
@@ -193,6 +193,35 @@ const all_mute_mic = ref(true);
|
|
|
|
|
|
const chat$ = ref(null);
|
|
|
|
|
|
+const setUserWords = (res) => {
|
|
|
+ if (user_info.value.Role == "leader") {
|
|
|
+ user_list.value = res.members.reduce(function (tempArr, item) {
|
|
|
+ if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
|
|
|
+ tempArr.push(item);
|
|
|
+ }
|
|
|
+ return tempArr;
|
|
|
+ }, []);
|
|
|
+ }
|
|
|
+ if (res.userId == user_info.value.UserId) {
|
|
|
+ user_info.value.IsWords = res.words;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const setUserMuted = (res) => {
|
|
|
+ if (user_info.value.Role == "leader") {
|
|
|
+ user_list.value = res.members.reduce(function (tempArr, item) {
|
|
|
+ if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
|
|
|
+ tempArr.push(item);
|
|
|
+ }
|
|
|
+ return tempArr;
|
|
|
+ }, []);
|
|
|
+ }
|
|
|
+ if (res.userId == user_info.value.UserId) {
|
|
|
+ user_info.value.IsMuted = res.muted;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+//用戶加入
|
|
|
const setUserJoin = async (res) => {
|
|
|
console.log("有人进来了", res);
|
|
|
// self.user_info = res.user;
|
|
@@ -223,7 +252,11 @@ const setUserJoin = async (res) => {
|
|
|
};
|
|
|
|
|
|
const onDrawUndo = async () => {
|
|
|
- await getApp().Connect.paint.undo();
|
|
|
+ let app = await getApp();
|
|
|
+ app.Connect.paint.undo();
|
|
|
+ canUndo.value = app.Connect.paint.records.length > 0;
|
|
|
+
|
|
|
+ console.log(app.Connect.paint.records, "app.Connect.paint.records");
|
|
|
};
|
|
|
|
|
|
// 画笔开启
|
|
@@ -316,16 +349,14 @@ const openDialog = (str, link) => {
|
|
|
emit("openDialog", str, link);
|
|
|
};
|
|
|
|
|
|
-const onMemberMuted = (muted, userId) => {
|
|
|
- if (user_list.value.length > 1) {
|
|
|
- Dialog.toast({ content: `操作成功`, type: "success" });
|
|
|
- socket.value && socket.value.send("Muted", muted, userId);
|
|
|
- }
|
|
|
+const onMemberMuted = (item) => {
|
|
|
+ item.IsMuted = !item.IsMuted;
|
|
|
+ socket.value.emit("action", { type: "users-muted", muted: item.IsMuted, userId: item.UserId });
|
|
|
};
|
|
|
|
|
|
const userCanSpeak = (item) => {
|
|
|
- item.isWords = !item.isWords;
|
|
|
- socket.value && socket.value.invoke("Words", isWords, userId);
|
|
|
+ item.IsWords = !item.IsWords;
|
|
|
+ socket.value.emit("action", { type: "users-words", words: item.IsWords, userId: item.UserId });
|
|
|
};
|
|
|
|
|
|
const startFollow = (app) => {
|
|
@@ -414,14 +445,27 @@ const startFollow = (app) => {
|
|
|
app.Connect.follow.sync();
|
|
|
} else if (data.type == "user-paint") {
|
|
|
onDraw(data.open);
|
|
|
+ if (role.value == "customer") {
|
|
|
+ if (data.open) {
|
|
|
+ Dialog.toast({ content: `主持人开启画笔` });
|
|
|
+ } else {
|
|
|
+ Dialog.toast({ content: `主持人关闭画笔` });
|
|
|
+ }
|
|
|
+ }
|
|
|
} else if (data.type == "user-join") {
|
|
|
setUserJoin(data);
|
|
|
+ } else if (data.type == "users-muted") {
|
|
|
+ setUserMuted(data);
|
|
|
+ //閉麥
|
|
|
+ } else if (data.type == "users-words") {
|
|
|
+ setUserWords(data);
|
|
|
+ //禁言
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 同屏带看
|
|
|
socket.value.on("sync", (data) => {
|
|
|
- app.Connect.sync.receive(data);
|
|
|
+ app.Connect.follow.receive(data);
|
|
|
});
|
|
|
|
|
|
// 画笔
|
|
@@ -432,9 +476,6 @@ const startFollow = (app) => {
|
|
|
|
|
|
onMounted(() => {
|
|
|
useApp().then((app) => {
|
|
|
- paint.value = app.Connect.paint;
|
|
|
- console.log(paint.value, "paint");
|
|
|
-
|
|
|
startFollow(app);
|
|
|
app.Connect.follow.on("data", (data) => {
|
|
|
if (isJoined.value) {
|
|
@@ -443,6 +484,7 @@ onMounted(() => {
|
|
|
});
|
|
|
|
|
|
app.Connect.paint.on("data", (data) => {
|
|
|
+ canUndo.value = app.Connect.paint.records.length > 0;
|
|
|
socket.value.emit("paint", data);
|
|
|
});
|
|
|
});
|