|
@@ -1,5 +1,6 @@
|
|
|
import { defineComponent } from "vue";
|
|
|
import styles from './index.module.less'
|
|
|
+import { ElButton } from'element-plus'
|
|
|
import event, { LIVE_EVENT_MESSAGE } from '/src/components/live-broadcast/event';
|
|
|
import { state } from '/src/state'
|
|
|
import dayjs from 'dayjs';
|
|
@@ -9,40 +10,70 @@ import runtime, * as RuntimeUtils from '/src/components/live-broadcast/runtime'
|
|
|
export default defineComponent({
|
|
|
data() {
|
|
|
return {
|
|
|
- joinList: [] as any[], // 连麦学生列表
|
|
|
+ joinList: {} as {[key: string]: any}, // 连麦学生列表
|
|
|
loadingJoin: false, // 连麦列表状态
|
|
|
}
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ count() {
|
|
|
+ let count = 0
|
|
|
+ for (const key in this.joinList) {
|
|
|
+ if (Object.prototype.hasOwnProperty.call(this.joinList, key)) {
|
|
|
+ const item = this.joinList[key];
|
|
|
+ if (item.type === 3) {
|
|
|
+ count += 1
|
|
|
+ }
|
|
|
+ if (count > 3) {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return count
|
|
|
+ },
|
|
|
+ },
|
|
|
mounted() {
|
|
|
event.on(LIVE_EVENT_MESSAGE['RC:Chatroom:SeatApply'], this.onSeatApply);
|
|
|
+ event.on(LIVE_EVENT_MESSAGE['RM:RTC:SwitchRole'], this.onSwitchRole);
|
|
|
},
|
|
|
methods: {
|
|
|
onSeatApply(evt: any) {
|
|
|
- console.log(evt)
|
|
|
if (evt.type === 3) {
|
|
|
- this.joinList.push({
|
|
|
+ this.joinList[evt.audienceId] = {
|
|
|
name: evt.audienceName,
|
|
|
id: evt.audienceId,
|
|
|
type: evt.type,
|
|
|
- })
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
- agree() {
|
|
|
- RuntimeUtils.sendMessage({
|
|
|
- audienceId: '1094335',
|
|
|
- audienceName: '小伙伴',
|
|
|
+ agree(item: any) {
|
|
|
+ if (this.count > 3) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const data = {
|
|
|
+ ...item,
|
|
|
+ audienceName: item.name,
|
|
|
+ audienceId: item.id,
|
|
|
teacherId: state.user?.id,
|
|
|
teacherName: state.user?.realName,
|
|
|
type: 1,
|
|
|
- }, 'SeatResponse')
|
|
|
+ }
|
|
|
+ this.joinList[item.id] = data
|
|
|
+ RuntimeUtils.sendMessage(data, 'SeatResponse')
|
|
|
},
|
|
|
- refuse() {},
|
|
|
+ refuse() {
|
|
|
+
|
|
|
+ },
|
|
|
+ onSwitchRole(evt: any) {
|
|
|
+ if (this.joinList[evt.userId] && evt.role === 2) {
|
|
|
+ delete this.joinList[evt.userId]
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
render() {
|
|
|
- console.log(this.joinList.length)
|
|
|
+ const list = Object.values(this.joinList)
|
|
|
return (
|
|
|
<div style={{ minHeight: '100%', position: 'relative' }}>
|
|
|
- {this.joinList.length > 0 ? this.joinList.map((item : any) => (
|
|
|
+ {list.length > 0 ? list.map((item : any) => (
|
|
|
<div class={styles.itemContent}>
|
|
|
<img src="/src/assets/home/placehorder-icon.png" alt="" />
|
|
|
<div class={styles.itemInfo}>
|
|
@@ -54,14 +85,14 @@ export default defineComponent({
|
|
|
<div class={styles.join}>
|
|
|
申请连麦
|
|
|
</div>
|
|
|
- <div class={styles.btn} onClick={this.agree}>上麦</div>
|
|
|
+ <ElButton size="small" disabled={this.count > 3} class={styles.btn} onClick={() => this.agree(item)}>上麦</ElButton>
|
|
|
</div>
|
|
|
) : (
|
|
|
<div class={styles.joinText}>
|
|
|
<div class={styles.join}>
|
|
|
正在连麦
|
|
|
</div>
|
|
|
- <div class={styles.btn} onClick={this.refuse}>下麦</div>
|
|
|
+ <ElButton size="small" class={styles.btn} onClick={this.refuse}>下麦</ElButton>
|
|
|
</div>
|
|
|
)}
|
|
|
</div>
|