|  | @@ -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;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 |