Files
sgxt_web/src/views/consultation/components/js/useConfernceControlEvent.js
2025-12-11 18:12:51 +08:00

461 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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]}`,
});
});
};