Files
sgxt_web/src/views/consultation/components/js/useConfernceControlEvent.js

461 lines
13 KiB
JavaScript
Raw Normal View History

2025-12-11 18:12:51 +08:00
import { ref, onUnmounted } from 'vue';
import { ElNotification } from 'element-plus';
import emitter from "@/utils/eventBus.js";
import useConferenceControlModule from '@/views/consultation/sdk/conferenceControl';
import store from '@/store'
const sdkConfernceControlModule = useConferenceControlModule();
// 通知时长
const duration = 5 * 1000;
const lockCallbackId = ref('');
const activeConfigChangeCallbackId = ref('');
const memberJoinCallbackId = ref('');
const memberLeftCallbackId = ref('');
const updateSubjecCallbackId = ref('');
const updateMemberNickCallbackId = ref('');
const inviteMemberCallbackId = ref('');
const memberCameraCallbackId = ref('');
const memberProhibitionCallbackId = ref('');
const allMemberProhibitionCallbackId = ref('');
const memberMuteCallbackId = ref('');
const memberSpeakCallbackId = ref('');
const voiceStimulationCallbackId = ref('');
const memberSpeakingStateCallbackId = ref('');
const setLayoutTypenCallbackId = ref('');
const setMemberRoleCallbackId = ref('');
const cancelMemberSpeakCallbackId = ref('');
const addMemberCallbackId = ref('');
const deleteMemberCallbackId = ref('');
const screenSharingCallbackId = ref('');
const deviceListChangegCallbackId = ref('');
// 移除事件注册
const unRegisterConferenceControldata = () => {
sdkConfernceControlModule.removeLockListener(lockCallbackId.value);
sdkConfernceControlModule.removeActiveConfigChangeListener(
activeConfigChangeCallbackId.value
);
sdkConfernceControlModule.removeMemberJoinListener(
memberJoinCallbackId.value
);
sdkConfernceControlModule.removeMemberLeftListener(
memberLeftCallbackId.value
);
sdkConfernceControlModule.removeUpdateSubjectListener(
updateSubjecCallbackId.value
);
sdkConfernceControlModule.removeModifyMemberNickListener(
updateMemberNickCallbackId.value
);
sdkConfernceControlModule.removeInviteMemberListener(
inviteMemberCallbackId.value
);
sdkConfernceControlModule.removeMemberCameraListener(
memberCameraCallbackId.value
);
sdkConfernceControlModule.removeMemberProhibitionListener(
memberProhibitionCallbackId.value
);
sdkConfernceControlModule.removeAllMemberProhibitionListener(
allMemberProhibitionCallbackId.value
);
sdkConfernceControlModule.removeMemberMuteListener(
memberMuteCallbackId.value
);
sdkConfernceControlModule.removeAssignMemberSpeakListener(
memberSpeakCallbackId.value
);
sdkConfernceControlModule.removeVoiceStimulationListener(
voiceStimulationCallbackId.value
);
sdkConfernceControlModule.removeMemberSpeakingStateListener(
memberSpeakingStateCallbackId.value
);
sdkConfernceControlModule.removeSetLayoutTypeListener(
setLayoutTypenCallbackId.value
);
sdkConfernceControlModule.removeSetMemberRoleListener(
setMemberRoleCallbackId.value
);
sdkConfernceControlModule.removeCancelMemberSpeakListener(
cancelMemberSpeakCallbackId.value
);
sdkConfernceControlModule.removeAddMemberListener(addMemberCallbackId.value);
sdkConfernceControlModule.removeDeleteMemberListener(
deleteMemberCallbackId.value
);
sdkConfernceControlModule.removeScreenSharingListener(
screenSharingCallbackId.value
);
sdkConfernceControlModule.removeDeviceListChangeListener(
deviceListChangegCallbackId.value
);
};
/* 会控管理相关 */
export default ({ onDeviceListChange }) => {
// 初始化清除回调事件,避免外部重复调用注册方法导致事件重复
unRegisterConferenceControldata();
const globalStore = store.state.useGlobalStore;
// 事件注册方便任意位置调用
emitter.on('unRegisterConferenceControldata', unRegisterConferenceControldata);
// 组件卸载时自动移除
onUnmounted(() => {
unRegisterConferenceControldata();
});
/**
* 当前进行中会议配置信息变化通知
* */
activeConfigChangeCallbackId.value =
sdkConfernceControlModule.addActiveConfigChangeListener((config) => {
store.dispatch("setActiveConfig",config);
});
/**
* 会议室锁定通知
* */
lockCallbackId.value = sdkConfernceControlModule.addLockListener((data) => {
console.log('+++++++++ 会议室锁定通知 ++++++++++', data);
const descMap = {
0: '解锁',
1: '锁定',
};
ElNotification.info({
id: `${Date.now()}`,
title: '会议室锁定通知',
message: `${data.operator.alias}${descMap[data.status]}会议室`,
});
});
/**
* 增加会议成员通知
* */
addMemberCallbackId.value = sdkConfernceControlModule.addAddMemberListener(
(data) => {
console.log('+++++++++ 【会控】增加会议成员通知 ++++++++++', data);
const name = data.members.map((v) => v.alias || v.number).join('; ');
ElNotification.info({
id: `${Date.now()}`,
title: '【会控】增加会议成员通知',
message: `${name}】已成为【会议:${data.meeting.number}】的会议成员!`,
});
}
);
/**
* 删除会议成员通知
* */
deleteMemberCallbackId.value =
sdkConfernceControlModule.addDeleteMemberListener((data) => {
console.log('+++++++++ 【会控】删除会议成员通知 ++++++++++', data);
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '【会控】删除会议成员通知',
message: `${name}】已不属于【会议:${data.meeting.number}】的会议成员!`,
});
});
/**
* 成员入会通知
* */
memberJoinCallbackId.value = sdkConfernceControlModule.addMemberJoinListener(
(data) => {
console.log('+++++++++ 成员入会通知 ++++++++++', data);
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '成员入会通知',
message: `${name}】加入了【会议:${data.meeting.number}】!`,
});
// 自己入会,展示会议面板
if (
data.member.basedata_id === sessionStorage.getItem('user_basedata_id')
) {
// 展示会议面板
globalStore.setShowConfencePanel(true);
}
}
);
/**
* 成员离会通知
* */
memberLeftCallbackId.value = sdkConfernceControlModule.addMemberLeftListener(
(data) => {
console.log('+++++++++ 成员离会通知 ++++++++++', data);
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '成员离会通知',
message: `${name}】离开了【会议:${data.meeting.number}】!`,
});
// 不是自己,不需处理
if (
data.member.basedata_id !== sessionStorage.getItem('user_basedata_id')
) {
return;
}
}
);
/**
* 更新会议主题通知
* */
updateSubjecCallbackId.value =
sdkConfernceControlModule.addUpdateSubjectListener((data) => {
console.log('+++++++++ 更新会议主题通知 ++++++++++', data);
ElNotification.info({
id: `${Date.now()}`,
title: '更新会议主题通知',
message: `${data.operator.alias}】修改了会议主题!`,
});
});
/**
* 设置成员角色通知
* */
setMemberRoleCallbackId.value =
sdkConfernceControlModule.addSetMemberRoleListener((data) => {
console.log('+++++++++ 设置成员角色通知 ++++++++++', data);
const roleDesc = {
0: '成员',
1: '主席',
2: '创建者',
};
ElNotification.info({
id: `${Date.now()}`,
title: '设置成员角色通知',
message: `${data.operator.alias}${data.member.alias} 设置为了【${
roleDesc[data.member_role]
}`,
});
});
/**
* 修改会议成员昵称通知
* */
updateMemberNickCallbackId.value =
sdkConfernceControlModule.addModifyMemberNickListener((data) => {
console.log('+++++++++ 修改会议成员昵称通知 ++++++++++', data);
ElNotification.info({
id: `${Date.now()}`,
title: '修改会议成员昵称通知',
message: `${data.operator.alias}】修改了会议成员昵称为【${data.nickname}】!`,
});
});
/**
* 呼叫未入会成员通知
* */
inviteMemberCallbackId.value =
sdkConfernceControlModule.addInviteMemberListener((data) => {
console.log('+++++++++ 呼叫未入会成员通知 ++++++++++', data);
ElNotification.info({
id: `${Date.now()}`,
title: '呼叫未入会成员通知',
message: `收到会议号【${data.meeting.number}】的入会通知!`,
});
});
/**
* 摄像头开关通知
* */
memberCameraCallbackId.value =
sdkConfernceControlModule.addMemberCameraListener((data) => {
console.log('+++++++++ 摄像头开关通知 ++++++++++', data);
const cameraDesc = {
0: '已关闭',
1: '已开启',
2: '无',
};
ElNotification.info({
id: `${Date.now()}`,
title: '摄像头开关通知',
message: `${data.operator.alias}${cameraDesc[data.status]}${
data.member.alias
} 的摄像头`,
});
});
/**
* 禁言通知
* */
memberProhibitionCallbackId.value =
sdkConfernceControlModule.addMemberProhibitionListener((data) => {
console.log('+++++++++ 禁言通知 ++++++++++', data);
const prohibitioDesc = {
0: '解除禁言',
1: '禁言',
};
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '禁言通知',
message: `${data.operator.alias} 对【${name}${
prohibitioDesc[data.status]
}`,
});
});
/**
* 全部禁言通知
* */
allMemberProhibitionCallbackId.value =
sdkConfernceControlModule.addAllMemberProhibitionListener((data) => {
console.log('+++++++++ 全部禁言通知 ++++++++++', data);
const prohibitioDesc = {
0: '解除全部禁言',
1: '开启全部禁言',
};
ElNotification.info({
id: `${Date.now()}`,
title: '全部禁言通知',
message: `${data.operator.alias} ${prohibitioDesc[data.status]}`,
});
});
/**
* 静音通知
* */
memberMuteCallbackId.value = sdkConfernceControlModule.addMemberMuteListener(
(data) => {
console.log('+++++++++ 静音通知 ++++++++++', data);
const muteDesc = {
0: '取消静音',
1: '静音',
2: '无音频',
};
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '静音通知',
message: `${data.operator.alias} 对【${name}${
muteDesc[data.status]
}`,
});
}
);
/**
* 设备列表变化通知
* */
deviceListChangegCallbackId.value =
sdkConfernceControlModule.addDeviceListChangeListener((data) => {
console.log('+++++++++ 设备列表变化通知 ++++++++++', data);
if (onDeviceListChange) {
onDeviceListChange(data);
}
});
/**
* 指定成员讲话通知
* */
memberSpeakCallbackId.value =
sdkConfernceControlModule.addAssignMemberSpeakListener((data) => {
console.log('+++++++++ 指定成员讲话通知 ++++++++++', data);
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '指定成员讲话通知',
message: `${data.operator.alias} 指定【${name}】讲话!`,
});
});
/**
* 取消指定成员讲话通知
* */
cancelMemberSpeakCallbackId.value =
sdkConfernceControlModule.addCancelMemberSpeakListener((data) => {
console.log('+++++++++ 取消成员讲话通知 ++++++++++', data);
const name = data.member.alias || data.member.number;
ElNotification.info({
id: `${Date.now()}`,
title: '取消成员讲话通知',
message: `${data.operator.alias} 取消【${name}】讲话!`,
});
});
/**
* 成员讲话状态通知
* */
memberSpeakingStateCallbackId.value =
sdkConfernceControlModule.addMemberSpeakingStateListener((data) => {
console.log('+++++++++ 成员讲话状态通知 ++++++++++', data);
});
/**
* 语音激励成员讲话状态通知
* */
voiceStimulationCallbackId.value =
sdkConfernceControlModule.addVoiceStimulationListener((data) => {
console.log('+++++++++ 语音激励成员讲话状态通知 ++++++++++', data);
});
/**
* 修改布局通知
* */
setLayoutTypenCallbackId.value =
sdkConfernceControlModule.addSetLayoutTypeListener((data) => {
console.log('+++++++++ 修改布局通知 ++++++++++', data);
ElNotification.info({
id: `${Date.now()}`,
title: '修改布局通知',
message: `修改布局通知`,
});
});
/**
* 屏幕共享通知
* */
screenSharingCallbackId.value =
sdkConfernceControlModule.addScreenSharingListener((data) => {
console.log('+++++++++ 屏幕共享通知 ++++++++++', data);
const descMap = {
0: '取消共享', //(未共享)
1: '共享屏幕', //(已共享)
};
ElNotification.info({
id: `${Date.now()}`,
title: '屏幕共享通知',
message: `${data.member.alias}${descMap[data.sharing_status]}`,
});
});
};