|
@@ -12,7 +12,7 @@
|
|
|
<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>
|
|
|
<span v-if="!user_info.IsWords">已被禁言</span>
|
|
|
|
|
|
<div class="disSpeakBtn" @click.stop="chatShow = !chatShow" :class="{ dis: !chatShow }"></div>
|
|
@@ -24,8 +24,8 @@
|
|
|
|
|
|
<div v-if="user_list.length < 5" class="invitation" @click="openDialog('dialogShare', shareLink)"></div>
|
|
|
<div v-if="role == 'leader'" class="members" @click="openMember"></div>
|
|
|
- <div v-if="!disableMic" @click="handleMuteAduio" :class="{ mic_off: audioMuted }" class="mic_on"></div>
|
|
|
- <div v-if="disableMic" class="mic_no"></div>
|
|
|
+ <div v-if="!disableMic" @click="handleMuteAduio" :class="{ mic_off: audioMuted, disabled: !audioDeviceId }" class="mic_on"></div>
|
|
|
+ <div v-if="disableMic" class="mic_no" :class="{ disabled: !audioDeviceId }"></div>
|
|
|
<div v-if="role == 'leader'" @click="handleMuteVideo" :class="[videoMuted ? 'video_no' : 'video_on', videoDeviceId ? '' : 'disabled']"></div>
|
|
|
<div class="exit" @click="openDialog('dialogIndex')"></div>
|
|
|
</div>
|
|
@@ -33,7 +33,7 @@
|
|
|
<div class="layer" v-if="showInput" @click="closeInput">
|
|
|
<div class="inputBox" @click.stop>
|
|
|
<div class="msgBox">
|
|
|
- <input id="input_msg" type="text" maxlength="200" v-model.trim="text" :placeholder="`說點什麽~`" />
|
|
|
+ <input id="input_msg" type="text" maxlength="200" v-model.trim="text" :placeholder="`說點什麼~`" />
|
|
|
<span class="iconsend_icon" :class="{ disable: text == '' }" @click.stop="sendText">發送</span>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -76,7 +76,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, idx)"></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>
|
|
@@ -103,6 +103,19 @@ const emit = defineEmits(["openDialog"]);
|
|
|
|
|
|
const store = useStore();
|
|
|
|
|
|
+let jumpNewScene = (sceneFirstView) => {
|
|
|
+ let url = window.location.href;
|
|
|
+
|
|
|
+ if (!browser.hasURLParam("pose")) {
|
|
|
+ url += `&${sceneFirstView.sceneview}`;
|
|
|
+ } else {
|
|
|
+ url = browser.replaceQueryString(url, "pose", sceneFirstView.sceneview.replace("pose=", ""));
|
|
|
+ }
|
|
|
+
|
|
|
+ url = browser.replaceQueryString(url, "m", sceneFirstView.num);
|
|
|
+ return url;
|
|
|
+};
|
|
|
+
|
|
|
let chatAutoScroll = () => {
|
|
|
let el = document.getElementById("chat");
|
|
|
let client_h = document.getElementById("chat").clientHeight;
|
|
@@ -124,7 +137,7 @@ store.commit("rtc/setSocket", createSocket());
|
|
|
let getUrl = (href, queryArr) => {
|
|
|
queryArr.forEach((item) => {
|
|
|
if (!browser.hasURLParam(item.key)) {
|
|
|
- let ttt = href.split('index.html?')
|
|
|
+ let ttt = href.split("index.html?");
|
|
|
href = `${ttt[0]}index.html?${item.key}=${item.val}&${ttt[1]}`;
|
|
|
console.log(href);
|
|
|
} else {
|
|
@@ -135,6 +148,7 @@ let getUrl = (href, queryArr) => {
|
|
|
return href;
|
|
|
};
|
|
|
const videoDeviceId = computed(() => store.getters["rtc/videoDeviceId"]);
|
|
|
+const audioDeviceId = computed(() => store.getters["rtc/audioDeviceId"]);
|
|
|
|
|
|
const connectStatus = ref(0);
|
|
|
const isBrushes = ref(false);
|
|
@@ -207,7 +221,7 @@ const setUserMuted = (res) => {
|
|
|
if (res.userId) {
|
|
|
if (res.userId == user_info.value.UserId) {
|
|
|
user_info.value.IsMuted = res.muted;
|
|
|
- Dialog.toast({ content: !user_info.value.IsMuted ? `主持人設置了开麦` : `主持人设置了静音` });
|
|
|
+ Dialog.toast({ content: !user_info.value.IsMuted ? `主持人設置了開麥` : `主持人設置了靜音` });
|
|
|
disableMic.value = res.muted;
|
|
|
audioMuted.value = res.muted;
|
|
|
}
|
|
@@ -237,7 +251,7 @@ const onAllMuted = (res) => {
|
|
|
user_info.value.IsMuted = res.muted;
|
|
|
item.IsMuted = res.muted;
|
|
|
if (role.value == "customer") {
|
|
|
- Dialog.toast({ content: !user_info.value.IsMuted ? `主持人設置了开麦` : `主持人设置了静音` });
|
|
|
+ Dialog.toast({ content: !user_info.value.IsMuted ? `主持人設置了開麥` : `主持人設置了靜音` });
|
|
|
disableMic.value = res.muted;
|
|
|
audioMuted.value = res.muted;
|
|
|
}
|
|
@@ -259,6 +273,7 @@ const setUserJoin = async (res) => {
|
|
|
if (res.user.Role == "leader") {
|
|
|
name = "主持人";
|
|
|
Dialog.toast({ content: `主持人進入房間` });
|
|
|
+ socket.value.emit("action", { type: "user-init" });
|
|
|
}
|
|
|
let data = {
|
|
|
role: res.user.Role,
|
|
@@ -395,7 +410,7 @@ const onMemberLeave = async (res) => {
|
|
|
mode: mode.value,
|
|
|
Nickname: name,
|
|
|
UserId: res.user.UserId,
|
|
|
- text: "离开房間",
|
|
|
+ text: "離開房間",
|
|
|
};
|
|
|
chatList.value.push(data);
|
|
|
await nextTick();
|
|
@@ -423,17 +438,30 @@ const startFollow = (app) => {
|
|
|
store.commit("rtc/setUserId", browser.getURLParam("vruserId") || `user_${role.value}${Math.floor(Math.random() * 100000000)}`);
|
|
|
store.commit("rtc/setRoomId", browser.getURLParam("roomId") || `room_${Math.floor(Math.random() * 100000000)}`);
|
|
|
|
|
|
- socket.value.on("connect", () => {
|
|
|
+ socket.value.on("connect", (e) => {
|
|
|
socket.value.emit("join", {
|
|
|
userId: userId.value,
|
|
|
roomId: roomId.value,
|
|
|
role: role.value || "leader",
|
|
|
- nickname: browser.getURLParam("name") || common.uuid(12),
|
|
|
+ nickname: browser.getURLParam("name"),
|
|
|
});
|
|
|
});
|
|
|
|
|
|
// 加入房間成功
|
|
|
socket.value.on("join", (data) => {
|
|
|
+ let meblist = data.members.reduce(function (tempArr, item) {
|
|
|
+ if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
|
|
|
+ tempArr.push(item);
|
|
|
+ }
|
|
|
+ return tempArr;
|
|
|
+ }, []);
|
|
|
+
|
|
|
+ if (meblist.length > 5 && role.value == "customer") {
|
|
|
+ Dialog.toast({ content: `房間已滿員` });
|
|
|
+ emit("closeSocket");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
connectStatus.value = 1;
|
|
|
if (role.value == "customer") {
|
|
|
socket.value.emit("action", { type: "user-init" });
|
|
@@ -445,12 +473,7 @@ const startFollow = (app) => {
|
|
|
isJoined.value = true;
|
|
|
|
|
|
user_info.value = data.user;
|
|
|
- user_list.value = data.members.reduce(function (tempArr, item) {
|
|
|
- if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
|
|
|
- tempArr.push(item);
|
|
|
- }
|
|
|
- return tempArr;
|
|
|
- }, []);
|
|
|
+ user_list.value = meblist;
|
|
|
|
|
|
//更新分享鏈接
|
|
|
shareLink.value = getUrl(window.location.href, [
|
|
@@ -497,7 +520,7 @@ const startFollow = (app) => {
|
|
|
},
|
|
|
]);
|
|
|
}
|
|
|
- console.log('创建房间后更新url',tmp);
|
|
|
+ console.log("創建房間後更新url", tmp);
|
|
|
history.replaceState(null, null, tmp);
|
|
|
});
|
|
|
|
|
@@ -534,10 +557,13 @@ const startFollow = (app) => {
|
|
|
onMemberLeave(data);
|
|
|
} else if (data.type == "leader-dismiss") {
|
|
|
emit("closeSocket");
|
|
|
- Dialog.toast({ content: `主持人已解散房间` });
|
|
|
+ Dialog.toast({ content: `主持人已解散房間` });
|
|
|
} else if (data.type == "tagclick") {
|
|
|
if (role.value == "customer") {
|
|
|
let item = tags.value.find((item) => item.sid == data.data.sid);
|
|
|
+
|
|
|
+ console.log(item,'itemitemitemitemitemitem');
|
|
|
+
|
|
|
if (item.type == "commodity") {
|
|
|
store.commit("tag/setTagClickType", {
|
|
|
type: "goodlist",
|
|
@@ -549,6 +575,10 @@ const startFollow = (app) => {
|
|
|
data: item,
|
|
|
});
|
|
|
}
|
|
|
+ else if (item.type == "link_scene") {
|
|
|
+ let sceneFirstView = item.hotContent.sceneFirstView;
|
|
|
+ window.location.href = jumpNewScene(sceneFirstView);
|
|
|
+ }
|
|
|
// document.querySelector(`[data-tag-id="${data.data.sid}"]`).click();
|
|
|
// console.log(data.data.sid);
|
|
|
}
|