|
@@ -1,59 +1,47 @@
|
|
|
<template>
|
|
|
- <teleport to=".local" v-if="(isRTCJoined || isPublished) && isLeader">
|
|
|
- <div class="micBox">
|
|
|
+ <div
|
|
|
+ :id="cameraBoxId"
|
|
|
+ class="camera_box"
|
|
|
+ v-show="isLeader && isPublished && isPanoramaMode && !muteVideoLeader"
|
|
|
+ >
|
|
|
+ <span class="micBox">
|
|
|
<i class="speak_mic" v-if="!roomLeader?.IsMuted"></i>
|
|
|
<i class="speak_mic_off" v-else></i>
|
|
|
- </div>
|
|
|
- </teleport>
|
|
|
- <teleport to=".remote" v-if="!isLeader && remoteStreams.length > 0">
|
|
|
- <div class="micBox">
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ :id="cameraRemoveBoxId"
|
|
|
+ class="camera_box"
|
|
|
+ v-show="!isLeader && isPublished && roomLeader && isPanoramaMode && !muteVideoLeader"
|
|
|
+ >
|
|
|
+ <span class="micBox">
|
|
|
<i class="speak_mic" v-if="!roomLeader?.IsMuted"></i>
|
|
|
<i class="speak_mic_off" v-else></i>
|
|
|
- </div>
|
|
|
- </teleport>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
|
- // import { ref } from 'vue';
|
|
|
-
|
|
|
import { computed, onMounted } from 'vue';
|
|
|
- // import { useRtcSdk } from '/@/hooks/useTRTC';
|
|
|
- // import { useSocket } from '/@/hooks/userSocket';
|
|
|
-
|
|
|
- // import { useRtcSdk } from '/@/hooks/useTRTC';
|
|
|
+ import { useAppStore } from '/@/store/modules/app';
|
|
|
+ import { useRtcSdk } from '/@/hooks/useTRTC';
|
|
|
import { useRtcStore } from '/@/store/modules/rtc';
|
|
|
|
|
|
const rtcStore = useRtcStore();
|
|
|
+ const appStore = useAppStore();
|
|
|
// const destination = computed(() => (rtcStore.isLeader ? '.local' : '.remote'));
|
|
|
const isPublished = computed(() => rtcStore.isPublished);
|
|
|
- const isRTCJoined = computed(() => rtcStore.isRTCJoined);
|
|
|
+ // const isRTCJoined = computed(() => rtcStore.isRTCJoined);
|
|
|
const isLeader = computed(() => rtcStore.isLeader);
|
|
|
- const remoteStreams = computed(() => rtcStore.remoteStreams);
|
|
|
+ // const remoteStreams = computed(() => rtcStore.remoteStreams);
|
|
|
const roomLeader = computed(() => rtcStore.getRoomLeader());
|
|
|
- // const { muteVideoLeader } = useRtcSdk();
|
|
|
- // const hasVideo = computed(() => rtcStore.videoDeviceId.length > 0);
|
|
|
+ const cameraBoxId = computed(() => 'camera_box_' + rtcStore.userId);
|
|
|
+ const cameraRemoveBoxId = computed(() => 'camera_remote_box_' + rtcStore.userId);
|
|
|
+ const isPanoramaMode = computed(() => appStore.mode === 'panorama');
|
|
|
+ const { muteVideoLeader } = useRtcSdk();
|
|
|
onMounted(() => {});
|
|
|
</script>
|
|
|
<style lang="scss">
|
|
|
- #PageRtcLive {
|
|
|
- &.leader + div.local {
|
|
|
- + div.remote {
|
|
|
- display: none;
|
|
|
- }
|
|
|
- }
|
|
|
- &.customer + div.local {
|
|
|
- display: none;
|
|
|
- }
|
|
|
- }
|
|
|
- #PageRtcLive {
|
|
|
- &.hideCam + div.local {
|
|
|
- display: none;
|
|
|
- + div.remote {
|
|
|
- display: none;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .local,
|
|
|
- .remote {
|
|
|
+ .camera_box {
|
|
|
width: 1.94rem;
|
|
|
height: 1.94rem;
|
|
|
position: fixed;
|
|
@@ -63,7 +51,19 @@
|
|
|
z-index: 10000;
|
|
|
border-radius: 50%;
|
|
|
video {
|
|
|
- background: transparent;
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ video:last-child {
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+ > div {
|
|
|
+ background-color: transparent !important;
|
|
|
+ position: absolute !important;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ z-index: 10;
|
|
|
}
|
|
|
.micBox {
|
|
|
width: 100%;
|
|
@@ -71,7 +71,8 @@
|
|
|
background: rgba(0, 0, 0, 0.3);
|
|
|
position: absolute;
|
|
|
left: 0;
|
|
|
- bottom: 0;
|
|
|
+ bottom: 0 !important;
|
|
|
+ top: unset;
|
|
|
z-index: 100;
|
|
|
display: flex;
|
|
|
align-items: center;
|