|
@@ -58,20 +58,34 @@
|
|
|
</template>
|
|
|
</div>
|
|
|
<div v-show="isDraw" id="draw-parent">
|
|
|
+ <!-- 画笔设置 -->
|
|
|
<div v-show="isDrawSetting" class="draw-setting">
|
|
|
- <span class="brush-shape">
|
|
|
+ <span class="brush-shape" @click="drawChange('type', 2)">
|
|
|
<svg-icon icon-class="brush-shape" />
|
|
|
</span>
|
|
|
+ <!-- 画笔颜色 -->
|
|
|
<span
|
|
|
v-for="item in drawColorList"
|
|
|
:key="item"
|
|
|
- :class="['draw-color', item === '#FF4747' ? 'current' : '']"
|
|
|
+ :class="['draw-color', item === curColor ? 'current' : '']"
|
|
|
:style="{ 'background-color': item }"
|
|
|
- ></span>
|
|
|
- <span v-for="item in drawThicknessList" :key="item" class="draw-thickness">
|
|
|
+ @click="drawChange('color', item)"
|
|
|
+ />
|
|
|
+ <span
|
|
|
+ v-for="item in drawThicknessList"
|
|
|
+ :key="item"
|
|
|
+ class="draw-thickness"
|
|
|
+ @click="drawChange('thickNess', item)"
|
|
|
+ >
|
|
|
<span :style="{ width: item * 2 + 'px', height: item * 2 + 'px' }"></span>
|
|
|
</span>
|
|
|
- <span class="brush-clear">
|
|
|
+ <span class="eraser" @click="drawChange('type', 9)">
|
|
|
+ <svg-icon icon-class="back" />
|
|
|
+ </span>
|
|
|
+ <span class="eraser" @click="drawChange('type', 10)">
|
|
|
+ <svg-icon icon-class="eraser" />
|
|
|
+ </span>
|
|
|
+ <span class="brush-clear" @click="drawChange('type', 0)">
|
|
|
<svg-icon icon-class="clear" />
|
|
|
</span>
|
|
|
</div>
|
|
@@ -135,7 +149,12 @@
|
|
|
<div>
|
|
|
{{ roomInfo.teacher_name }}
|
|
|
</div>
|
|
|
- <div>
|
|
|
+ <div class="live-wrapper-right">
|
|
|
+ <svg-icon
|
|
|
+ :icon-class="hasVideo ? 'camera-on' : 'camera-off'"
|
|
|
+ @click="playOrPauseVideo"
|
|
|
+ />
|
|
|
+ <svg-icon :icon-class="hasAudio ? 'mike-on' : 'mike-off'" @click="playOrPauseAudio" />
|
|
|
<span :style="{ color: netStatusColor }">{{ netStatus }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -278,6 +297,7 @@ export default {
|
|
|
msg: '',
|
|
|
chatList: [],
|
|
|
isDrawSetting: false,
|
|
|
+ curColor: '#343434',
|
|
|
drawColorList: ['#FF4747', '#343434', '#628EFF', '#FFCA0E'],
|
|
|
drawThicknessList: ['1', '3', '5'],
|
|
|
// 直播间学员列表
|
|
@@ -296,7 +316,10 @@ export default {
|
|
|
device: {
|
|
|
video: [],
|
|
|
audio: []
|
|
|
- }
|
|
|
+ },
|
|
|
+ // 本地视频流画面、声音
|
|
|
+ hasVideo: false,
|
|
|
+ hasAudio: false
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
@@ -569,6 +592,68 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
|
|
|
+ // 本地流视频开启、关闭
|
|
|
+ playOrPauseVideo() {
|
|
|
+ if (this.device.video.length === 0) {
|
|
|
+ return this.$message.warning('无视频设备');
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.hasVideo) {
|
|
|
+ common.pauseVideo({
|
|
|
+ streamName: 'main',
|
|
|
+ success: () => {
|
|
|
+ this.$message.success('关闭本地流视频画面成功');
|
|
|
+ this.hasVideo = false;
|
|
|
+ },
|
|
|
+ fail: str => {
|
|
|
+ this.$message.warning(str);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ common.playVideo({
|
|
|
+ streamName: 'main',
|
|
|
+ success: () => {
|
|
|
+ this.$message.success('开启本地流视频画面成功');
|
|
|
+ this.hasVideo = true;
|
|
|
+ },
|
|
|
+ fail: str => {
|
|
|
+ this.$message.warning(str);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 本地流音频开启、关闭
|
|
|
+ playOrPauseAudio() {
|
|
|
+ if (this.device.audio.length === 0) {
|
|
|
+ return this.$message.warning('无音频设备');
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.hasAudio) {
|
|
|
+ common.pauseAudio({
|
|
|
+ streamName: 'main',
|
|
|
+ success: () => {
|
|
|
+ this.$message.success('关闭本地流声音成功');
|
|
|
+ this.hasAudio = false;
|
|
|
+ },
|
|
|
+ fail: str => {
|
|
|
+ this.$message.warning(str);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ common.playAudio({
|
|
|
+ streamName: 'main',
|
|
|
+ success: () => {
|
|
|
+ this.$message.success('开启本地流声音成功');
|
|
|
+ this.hasAudio = true;
|
|
|
+ },
|
|
|
+ fail: str => {
|
|
|
+ this.$message.warning(str);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
// 发消息
|
|
|
sendMsg() {
|
|
|
common.sendMsg(this.msg);
|
|
@@ -590,6 +675,7 @@ export default {
|
|
|
// 画笔变更
|
|
|
drawChange(action, value) {
|
|
|
common.drawChange(action, value);
|
|
|
+ this.isDrawSetting = false;
|
|
|
},
|
|
|
|
|
|
// 设置音视频设备
|
|
@@ -609,14 +695,14 @@ export default {
|
|
|
common.closeVideoTeacher({
|
|
|
streamName: 'main',
|
|
|
success: () => {
|
|
|
- common.createLocalStream();
|
|
|
+ common.createLocalStream(this);
|
|
|
},
|
|
|
fail: str => {
|
|
|
console.log(str);
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
- common.createLocalStream();
|
|
|
+ common.createLocalStream(this);
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -841,7 +927,6 @@ $live-bc: #3d3938;
|
|
|
padding: 6px;
|
|
|
border-radius: 40px;
|
|
|
height: 40px;
|
|
|
- width: 275px;
|
|
|
line-height: 28px;
|
|
|
|
|
|
& > span {
|
|
@@ -902,6 +987,12 @@ $live-bc: #3d3938;
|
|
|
cursor: pointer;
|
|
|
margin-right: 0;
|
|
|
}
|
|
|
+
|
|
|
+ & > .eraser {
|
|
|
+ @extend .brush-clear;
|
|
|
+
|
|
|
+ margin-right: 12px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1019,9 +1110,14 @@ $live-bc: #3d3938;
|
|
|
flex: 6;
|
|
|
}
|
|
|
|
|
|
- > div:last-child {
|
|
|
+ &-right {
|
|
|
flex: 4;
|
|
|
text-align: right;
|
|
|
+
|
|
|
+ .svg-icon {
|
|
|
+ cursor: pointer;
|
|
|
+ margin-right: 18px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|