|
@@ -1,84 +1,84 @@
|
|
|
-import { defineComponent } from 'vue'
|
|
|
-import { ElButton, ElMessage, ElMessageBox } from 'element-plus'
|
|
|
-import runtime, * as RuntimeUtils from './runtime'
|
|
|
-import { state } from '/src/state'
|
|
|
-import request from '/src/helpers/request'
|
|
|
-import styles from './header.module.less'
|
|
|
-import { removeToken } from '/src/utils/auth'
|
|
|
-
|
|
|
-export default defineComponent({
|
|
|
- name: 'LiveBroadcastHeader',
|
|
|
- methods: {
|
|
|
- async startLive() {
|
|
|
- try {
|
|
|
- await ElMessageBox.confirm('开启后学生将看到视频画面', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning',
|
|
|
- })
|
|
|
- await RuntimeUtils.startLive()
|
|
|
- ElMessage.success('开启成功')
|
|
|
- } catch (error) {
|
|
|
- console.log(error)
|
|
|
- }
|
|
|
- },
|
|
|
- async closeLive() {
|
|
|
- try {
|
|
|
- await ElMessageBox.confirm('关闭后将切断视频,学生不可观看', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning',
|
|
|
- })
|
|
|
- // await request.post('/api-im/user/statusImUser', {
|
|
|
- // data: {
|
|
|
- // os: 'PC',
|
|
|
- // status: '3',
|
|
|
- // userId: state.user?.speakerId
|
|
|
- // }
|
|
|
- // })
|
|
|
- await RuntimeUtils.closeLive()
|
|
|
- ElMessage.success('关闭成功')
|
|
|
- } catch (error) {
|
|
|
- }
|
|
|
- },
|
|
|
- async closeRoom() {
|
|
|
- try {
|
|
|
- await ElMessageBox.confirm('结束后将无法进入直播间', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning',
|
|
|
- })
|
|
|
- // 异步获取用户信息
|
|
|
- const id = state.user?.id
|
|
|
- await request.get('/api-web/imLiveBroadcastRoom/roomDestroy/' + id, {})
|
|
|
- RuntimeUtils.closeDevice('camera')
|
|
|
- RuntimeUtils.closeDevice('microphone')
|
|
|
- state.user = null
|
|
|
- removeToken();
|
|
|
- ElMessage.success('结束');
|
|
|
- (this as any).$router.push({
|
|
|
- path: '/login',
|
|
|
- query: {
|
|
|
- ...this.$route.query
|
|
|
- }
|
|
|
- });
|
|
|
- } catch (error) {}
|
|
|
- }
|
|
|
- },
|
|
|
- render() {
|
|
|
- return (
|
|
|
- <div class={styles.header} >
|
|
|
- <h3 class={styles.title}>直播内容:{ state.user?.liveRemark }</h3>
|
|
|
- <div>
|
|
|
- {runtime.videoStatus === 'liveing' ? (
|
|
|
- <ElButton type="danger" color="#EA4132" onClick={this.closeLive}>关闭视频</ElButton>
|
|
|
- ) : (
|
|
|
- <ElButton type="primary" color="#01A79E" onClick={this.startLive}>开启视频</ElButton>
|
|
|
- )}
|
|
|
-
|
|
|
- <ElButton type="primary" color="#EA4132" onClick={this.closeRoom}>结束直播</ElButton>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )
|
|
|
- }
|
|
|
-})
|
|
|
+import { defineComponent } from 'vue'
|
|
|
+import { ElButton, ElMessage, ElMessageBox } from 'element-plus'
|
|
|
+import runtime, * as RuntimeUtils from './runtime'
|
|
|
+import { state } from '/src/state'
|
|
|
+import request from '/src/helpers/request'
|
|
|
+import styles from './header.module.less'
|
|
|
+import { removeToken } from '/src/utils/auth'
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'LiveBroadcastHeader',
|
|
|
+ methods: {
|
|
|
+ async startLive() {
|
|
|
+ try {
|
|
|
+ await ElMessageBox.confirm('开启后学生将看到视频画面', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ await RuntimeUtils.startLive()
|
|
|
+ ElMessage.success('开启成功')
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async closeLive() {
|
|
|
+ try {
|
|
|
+ await ElMessageBox.confirm('关闭后将切断视频,学生不可观看', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ // await request.post('/api-im/user/statusImUser', {
|
|
|
+ // data: {
|
|
|
+ // os: 'PC',
|
|
|
+ // status: '3',
|
|
|
+ // userId: state.user?.speakerId
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ await RuntimeUtils.closeLive()
|
|
|
+ ElMessage.success('关闭成功')
|
|
|
+ } catch (error) {
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async closeRoom() {
|
|
|
+ try {
|
|
|
+ await ElMessageBox.confirm('结束后将无法进入直播间', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning',
|
|
|
+ })
|
|
|
+ // 异步获取用户信息
|
|
|
+ const id = state.user?.id
|
|
|
+ await request.get('/api-web/imLiveBroadcastRoom/roomDestroy/' + id, {})
|
|
|
+ RuntimeUtils.closeDevice('camera')
|
|
|
+ RuntimeUtils.closeDevice('microphone')
|
|
|
+ state.user = null
|
|
|
+ removeToken();
|
|
|
+ ElMessage.success('结束');
|
|
|
+ (this as any).$router.push({
|
|
|
+ path: '/login',
|
|
|
+ query: {
|
|
|
+ ...this.$route.query
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (error) {}
|
|
|
+ }
|
|
|
+ },
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <div class={styles.header} >
|
|
|
+ <h3 class={styles.title}>直播内容:{ state.user?.liveRemark }</h3>
|
|
|
+ <div>
|
|
|
+ {runtime.videoStatus === 'liveing' ? (
|
|
|
+ <ElButton type="danger" color="#01A79E" onClick={this.closeLive}>暂停直播</ElButton>
|
|
|
+ ) : (
|
|
|
+ <ElButton type="primary" color="#01A79E" onClick={this.startLive}>开启直播</ElButton>
|
|
|
+ )}
|
|
|
+
|
|
|
+ <ElButton type="primary" color="#EA4132" onClick={this.closeRoom}>结束直播</ElButton>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+})
|