|
@@ -35,6 +35,7 @@
|
|
|
class="saySomething"
|
|
|
@click="onFocus"
|
|
|
>
|
|
|
+
|
|
|
<!-- <i class="speakIcon"
|
|
|
:class="{'dis':!user_info.IsWords}"></i> -->
|
|
|
<span v-if="user_info.IsWords">说点什么</span>
|
|
@@ -73,13 +74,13 @@
|
|
|
<div
|
|
|
v-if="!disableMic"
|
|
|
@click="handleMuteAduio"
|
|
|
- :class="{ mic_off: audioMuted, disabled: !audioDeviceId }"
|
|
|
+ :class="{ mic_off: audioMuted, disabled: disabledAudio }"
|
|
|
class="mic_on"
|
|
|
></div>
|
|
|
<div
|
|
|
v-if="disableMic"
|
|
|
class="mic_no"
|
|
|
- :class="{ disabled: !audioDeviceId }"
|
|
|
+ :class="{ disabled: disabledAudio }"
|
|
|
></div>
|
|
|
</template>
|
|
|
<!-- <div
|
|
@@ -90,6 +91,15 @@
|
|
|
videoDeviceId ? '' : 'disabled',
|
|
|
]"
|
|
|
></div> -->
|
|
|
+
|
|
|
+
|
|
|
+ <div
|
|
|
+ v-if="user_info.Role == 'leader'"
|
|
|
+ @click="showScenes = !showScenes"
|
|
|
+ style="font-size: 0.65rem"
|
|
|
+ >
|
|
|
+ <Icon type="scene" />
|
|
|
+ </div>
|
|
|
<div class="exit" @click="openDialog('dialogIndex')"></div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -198,6 +208,12 @@
|
|
|
/>
|
|
|
</div>
|
|
|
</teleport>
|
|
|
+
|
|
|
+ <SceneList
|
|
|
+ v-if="showScenes"
|
|
|
+ @close="showScenes = false"
|
|
|
+ @changeScene="changeScene"
|
|
|
+ />
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
@@ -210,7 +226,10 @@ import {
|
|
|
reactive,
|
|
|
computed,
|
|
|
nextTick,
|
|
|
+ watchEffect,
|
|
|
} from "vue";
|
|
|
+import SceneList from '../Controls/Panel/scene-list.vue'
|
|
|
+import { enterRoom, changeScene as changeSceneRaw, currentScene } from '@/store/room'
|
|
|
import { useApp, getApp } from "@/app";
|
|
|
import { useStore } from "vuex";
|
|
|
import { Dialog } from "@/global_components/";
|
|
@@ -222,11 +241,14 @@ import Trtccom from "./Trtccom.vue";
|
|
|
import browser from "@/utils/browser";
|
|
|
import wxShare from "@/utils/wxshare";
|
|
|
import defaultAvatar from "@/assets/images/avatar_default.png";
|
|
|
+import { isMiniApp } from '@/env'
|
|
|
+import { initialMini } from './mini-platform'
|
|
|
+import Icon from '@/components/icon/index.vue'
|
|
|
+
|
|
|
const emit = defineEmits(["openDialog", "closeSocket"]);
|
|
|
|
|
|
const store = useStore();
|
|
|
const leaderAvatar = computed(() => {
|
|
|
- console.log(typeof store.getters["rtc/avatar"]);
|
|
|
return store.getters["rtc/avatar"];
|
|
|
});
|
|
|
|
|
@@ -291,6 +313,16 @@ const tagImageIndex = computed(() => store.getters["tag/tagImageIndex"]);
|
|
|
const videoDeviceId = computed(() => store.getters["rtc/videoDeviceId"]);
|
|
|
const audioDeviceId = computed(() => store.getters["rtc/audioDeviceId"]);
|
|
|
|
|
|
+const disabledAudio = computed(() => {
|
|
|
+ if (isMiniApp) {
|
|
|
+ return false
|
|
|
+ } else {
|
|
|
+ return audioDeviceId.value
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+watchEffect(() => console.error(disabledAudio.value))
|
|
|
+
|
|
|
const connectStatus = ref(0);
|
|
|
const isBrushes = ref(false);
|
|
|
const showInput = ref(false);
|
|
@@ -339,7 +371,11 @@ const tags = computed(() => {
|
|
|
});
|
|
|
|
|
|
const onClickShare = () => {
|
|
|
- openDialog("dialogShare", shareLink.value);
|
|
|
+ if (isMiniApp) {
|
|
|
+ mini.enterShare()
|
|
|
+ } else {
|
|
|
+ openDialog("dialogShare", shareLink.value);
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
const userGetOut = (item, i) => {
|
|
@@ -455,12 +491,15 @@ const setUserJoin = async (res) => {
|
|
|
};
|
|
|
if (role.value == "leader") {
|
|
|
chatList.value.push(data);
|
|
|
+ socket.value.emit('action', { type: 'changeScene', data: currentScene.value })
|
|
|
}
|
|
|
|
|
|
await nextTick();
|
|
|
try {
|
|
|
chatAutoScroll();
|
|
|
} catch (error) {}
|
|
|
+
|
|
|
+
|
|
|
};
|
|
|
const changeFile = (e) => {
|
|
|
let file = e.target.files[0];
|
|
@@ -681,8 +720,9 @@ const startFollow = (app) => {
|
|
|
const leaderInfo = ref({});
|
|
|
// 加入房間成功
|
|
|
socket.value.on("join", (data) => {
|
|
|
- showAvatar.value = true;
|
|
|
-
|
|
|
+ console.log(data)
|
|
|
+ // showAvatar.value = true;
|
|
|
+ enterRoom()
|
|
|
let meblist = data.members.reduce(function (tempArr, item) {
|
|
|
if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
|
|
|
tempArr.push(item);
|
|
@@ -716,8 +756,11 @@ const startFollow = (app) => {
|
|
|
|
|
|
isJoined.value = true;
|
|
|
|
|
|
+
|
|
|
setTimeout(() => {
|
|
|
- isRunRTC.value = true;
|
|
|
+ if (!isMiniApp) {
|
|
|
+ isRunRTC.value = true;
|
|
|
+ }
|
|
|
}, 3000);
|
|
|
|
|
|
user_info.value = data.user;
|
|
@@ -885,6 +928,8 @@ const startFollow = (app) => {
|
|
|
location.replace(url);
|
|
|
}
|
|
|
}
|
|
|
+ } else if (data.type === 'changeScene') {
|
|
|
+ changeSceneRaw(data.data)
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -913,6 +958,7 @@ let onfollowPaint = async (data) => {
|
|
|
socket.value.emit("paint", data);
|
|
|
};
|
|
|
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
let app = await getApp();
|
|
|
startFollow(app);
|
|
@@ -925,6 +971,18 @@ onUnmounted(async () => {
|
|
|
app.Connect.follow.off("data", onfollowData);
|
|
|
app.Connect.follow.off("data", onfollowData);
|
|
|
});
|
|
|
+
|
|
|
+const mini = isMiniApp && initialMini(audioMuted)
|
|
|
+const showScenes = ref(false)
|
|
|
+const changeScene = (scene) => {
|
|
|
+ socket.value.emit("action", {
|
|
|
+ type: "changeScene",
|
|
|
+ data: scene,
|
|
|
+ });
|
|
|
+ setTimeout(() => {
|
|
|
+ changeSceneRaw(scene)
|
|
|
+ }, 500)
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|