461 lines
13 KiB
JavaScript
461 lines
13 KiB
JavaScript
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]}`,
|
||
});
|
||
});
|
||
};
|