//创建群菜单点击事件 function createGroupMenuClick() { //重置表单 $('#cg_form')[0].reset(); var sessList = document.getElementsByClassName("sesslist-group")[0]; var num = 1; if (sessList && sessList.childNodes) { num = sessList.childNodes.length + 1; } $("#cg_name").val('群' + num); $('#create_group_dialog').modal('show'); } //搜索群(按ID)菜单单击事件 function searchGroupMenuClick() { $("#sg_form")[0].reset(); initSearchGroupTable([]); $('#search_group_table').bootstrapTable('load', []); $('#search_group_dialog').modal('show'); } //搜索群(按名称)菜单单击事件 function searchGroupByNameMenuClick() { $("#sgbn_form")[0].reset(); initSearchGroupByNameTable([]); $('#search_group_by_name_table').bootstrapTable('load', []); $('#search_group_by_name_dialog').modal('show'); } //定义搜索群(按ID)结果表格每行的操作按钮 function sgOperateFormatter(value, row, index) { return [ '', '', '' ].join(''); } //搜索群(按ID)结果表格按钮事件 window.sgOperateEvents = { 'click .plus': function(e, value, row, index) { $("#ajg_group_id").val(row.GId); $("#ajg_group_type").val(row.Type); $("#ajg_group_name").val(row.Name); if (row.Type == 'ChatRoom') { //聊天室直接申请加入 applyJoinGroup(); } else { $("#ajg_apply_msg").val('你好,我想加入贵群~'); $('#apply_join_group_dialog').modal('show'); } } }; //初始化搜索群(按ID)结果表格 function initSearchGroupTable(data) { $('#search_group_table').bootstrapTable({ method: 'get', cache: false, height: 500, striped: true, pagination: true, pageSize: pageSize, pageNumber: 1, pageList: [10, 20, 50, 100], search: true, showColumns: true, clickToSelect: true, columns: [{ field: "GroupId", title: "ID", align: "center", valign: "middle", sortable: "true" }, { field: "TypeZh", title: "类型", align: "center", valign: "middle", sortable: "true" }, { field: "Type", title: "类型(英文)", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "Name", title: "名称", align: "center", valign: "middle", sortable: "true" }, { field: "Owner_Account", title: "群主", align: "center", valign: "middle", sortable: "true" }, { field: "CreateTime", title: "创建时间", align: "center", valign: "middle", sortable: "true" }, { field: "MemberNum", title: "群成员数", align: "center", valign: "middle", sortable: "true" }, { field: "sgOperate", title: "操作", align: "center", valign: "middle", formatter: "sgOperateFormatter", events: "sgOperateEvents" }], data: data, formatNoMatches: function() { return '无符合条件的记录'; } }); } //定义搜索群(按名称)结果表格每行的操作按钮 function sgbnOperateFormatter(value, row, index) { return [ '', '', '' ].join(''); } //搜索群(按名称)结果表格按钮事件 window.sgbnOperateEvents = { 'click .plus': function(e, value, row, index) { $("#ajg_group_id").val(row.GId); $("#ajg_group_type").val(row.Type); $("#ajg_group_name").val(row.Name); if (row.Type == 'ChatRoom') { //聊天室直接申请加入 applyJoinGroup(); } else { $("#ajg_apply_msg").val('你好,我想加入贵群~'); $('#apply_join_group_dialog').modal('show'); } } }; //初始化搜索群(按名称)结果表格 function initSearchGroupByNameTable(data) { $('#search_group_by_name_table').bootstrapTable({ method: 'get', cache: false, height: 500, striped: true, pagination: true, pageSize: pageSize, pageNumber: 1, pageList: [10, 20, 50, 100], search: true, showColumns: true, clickToSelect: true, columns: [{ field: "GroupId", title: "ID", align: "center", valign: "middle", sortable: "true" }, { field: "TypeZh", title: "类型", align: "center", valign: "middle", sortable: "true" }, { field: "Type", title: "类型(英文)", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "Name", title: "名称", align: "center", valign: "middle", sortable: "true" }, { field: "FaceUrl", title: "群头像", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "Owner_Account", title: "群主", align: "center", valign: "middle", sortable: "true" }, { field: "CreateTime", title: "创建时间", align: "center", valign: "middle", sortable: "true" }, { field: "MemberNum", title: "群成员数", align: "center", valign: "middle", sortable: "true" }, { field: "sgbnOperate", title: "操作", align: "center", valign: "middle", formatter: "sgbnOperateFormatter", events: "sgbnOperateEvents" }], data: data, formatNoMatches: function() { return '无符合条件的记录'; } }); } //定义我的群组表格每行的操作按钮 function gmgOperateFormatter(value, row, index) { return [ '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' ].join(''); } //我的群组表格每行的操作按钮点击事件 window.gmgOperateEvents = { 'click .plus': function(e, value, row, index) { // if (row.TypeEn != 'Private') { // alert('公开群或聊天室不支持直接拉人操作'); // return; // } $('#gmfg_group_id').val(row.GId); getMyFriendGroup(); }, 'click .user': function(e, value, row, index) { $('#ggm_group_id').val(row.GId); $('#ggm_my_role').val(row.Role); $('#ggm_group_type').val(row.TypeEn); getGroupMemberInfo(row.GId); }, 'click .bell': function(e, value, row, index) { $('#mgmf_sel_row_index').val(index); $('#mgmf_group_id').val(row.GId); //设置群消息提示类型 //var msg_flag = webim.Tool.groupRoleCh2En(row.Role); var msg_flag = row.MsgFlagEn; //$("input[type=radio][name='mgmf_msg_flag_radio'][value=" + msg_flag + "]").attr("checked", 'checked');//此方法存在问题,当修改单选按钮值,并且关闭对话框,再打开对话时,无法选中真正的值 var mgmf_msg_flag_radio = document.mgmf_form.mgmf_msg_flag_radio; for (var i = 0; i < mgmf_msg_flag_radio.length; i++) { if (mgmf_msg_flag_radio[i].value == msg_flag) { mgmf_msg_flag_radio[i].checked = true; break; } } $('#modify_group_msg_flag_dialog').modal('show'); }, 'click .logout': function(e, value, row, index) { if (row.Role == '群主' && row.TypeEn != 'Private') { alert('您是群主,不能从公开群或聊天室退出'); return; } if (confirm("确定退出该群吗?")) { quitGroup(row.GId); } }, 'click .pencil': function(e, value, row, index) { //成员可以修改私有群的基本资料 if (row.Role == '成员' && row.Type != 'Private') { alert('你不是群主或管理员,无法进行此操作'); return; } $('#mg_sel_row_index').val(index); $('#mg_group_id').val(row.GId); $('#mg_faceurl').val(row.FaceUrl); $('#mg_name').val(webim.Tool.formatHtml2Text(row.Name)); $('#mg_introduction').val(webim.Tool.formatHtml2Text(row.Introduction)); $('#mg_notification').val(webim.Tool.formatHtml2Text(row.Notification)); $('#modify_group_dialog').modal('show'); var shut_up_all = document.mg_form.mgm_up_all_radio; for (var i = 0; i < shut_up_all.length; i++) { if (shut_up_all[i].value == row.ShutUpAllMember) { shut_up_all[i].checked = true; break; } } // $('#shut_up_all_member').val(row.ShutUpAllMember); }, 'click .share': function(e, value, row, index) { if (row.Role != '群主') { alert('你不是群主,无法进行此操作'); } else { if (row.TypeEn == 'AVChatRoom') { alert('直播聊天室不能进行转让'); return; } $("#cgo_form")[0].reset(); //清空原来表单的值 $('#cgo_sel_row_index').val(index); $('#cgo_group_id').val(row.GId); $('#change_group_owner_dialog').modal('show'); } }, 'click .trash': function(e, value, row, index) { if (row.Role != '群主') { alert('你不是群主,无法进行此操作'); } else { if (row.TypeEn == 'Private') { alert('您是群主,不能解散私有群'); return; } if (confirm("确定解散该群组吗?")) { destroyGroup(row.GId); } } }, 'click .envelope': function(e, value, row, index) { $('#sgm_to_groupid').val(row.GId); $('#sgm_to_group_name').val(row.Name); $('#send_group_msg_dialog').modal('show'); } }; //初始化我的群组表格 function initGetMyGroupTable(data) { $('#get_my_group_table').bootstrapTable({ method: 'get', cache: false, height: 500, striped: true, pagination: true, pageSize: pageSize, pageNumber: 1, pageList: [10, 20, 50, 100], search: true, showColumns: true, clickToSelect: true, columns: [{ field: "GroupId", title: "ID", align: "center", valign: "middle", sortable: "true" }, { field: "Type", title: "类型", align: "center", valign: "middle", sortable: "true" }, { field: "TypeEn", title: "类型(英文)", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "FaceUrl", title: "群头像", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "Name", title: "名称", align: "center", valign: "middle", sortable: "true" }, { field: "RoleEn", title: "角色(英文)", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "Role", title: "角色", align: "center", valign: "middle", sortable: "true" }, { field: "MsgFlagEn", title: "消息提示类型(英文)", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "MsgFlag", title: "消息提示类型", align: "center", valign: "middle", sortable: "true" }, { field: "JoinTime", title: "加入时间", align: "center", valign: "middle", sortable: "true" }, { field: "MemberNum", title: "成员数", align: "center", valign: "middle", sortable: "true" }, { field: "Notification", title: "公告", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "Introduction", title: "简介", align: "center", valign: "middle", sortable: "true", visible: false }, { field: "ShutUpAllMember", title: "全局禁言", align: "center", valign: "middle", sortable: "true" }, { field: "gmgOperate", title: "操作", align: "center", valign: "middle", formatter: "gmgOperateFormatter", events: "gmgOperateEvents" }], data: data, formatNoMatches: function() { return '无符合条件的记录'; } }); } //定义邀请好友加群表格每行的操作按钮 function gmfgOperateFormatter(value, row, index) { return [ '', '', '' ].join(''); } //邀请好友加群表格每行按钮单击事件 window.gmfgOperateEvents = { 'click .plus': function(e, value, row, index) { $('#agm_group_id').val($('#gmfg_group_id').val()); $('#agm_account').val(row.Info_Account); $('#add_group_member_dialog').modal('show'); } }; //初始化邀请好友加群表格 function initGetMyFriendGroupTable(data) { $('#get_my_friend_group_table').bootstrapTable({ method: 'get', cache: false, height: 500, striped: true, pagination: true, pageSize: pageSize, pageNumber: 1, pageList: [10, 20, 50, 100], search: true, showColumns: true, clickToSelect: true, columns: [{ field: "Info_Account", title: "账号", align: "center", valign: "middle", sortable: "true" }, { field: "Nick", title: "昵称", align: "center", valign: "middle", sortable: "true" }, { field: "gmfgOperate", title: "操作", align: "center", valign: "middle", formatter: "gmfgOperateFormatter", events: "gmfgOperateEvents" }], data: data, formatNoMatches: function() { return '无符合条件的记录'; } }); } //读取群组公开资料-高级接口(可用于搜索群,按ID) var getGroupPublicInfo = function() { if ($("#sg_group_id").val().length == 0) { alert('请输入群组ID'); return; } if (webim.Tool.trimStr($("#sg_group_id").val()).length == 0) { alert('您输入的群组ID全是空格,请重新输入'); return; } var options = { 'GroupIdList': [ $("#sg_group_id").val() ], 'GroupBasePublicInfoFilter': [ 'Type', 'Name', 'Introduction', 'Notification', 'FaceUrl', 'CreateTime', 'Owner_Account', 'LastInfoTime', 'LastMsgTime', 'NextMsgSeq', 'MemberNum', 'MaxMemberNum', 'ApplyJoinOption' ] }; webim.getGroupPublicInfo( options, function(resp) { var data = []; if (resp.GroupInfo && resp.GroupInfo.length > 0) { for (var i in resp.GroupInfo) { if (resp.GroupInfo[i].ErrorCode > 0) { alert(resp.GroupInfo[i].ErrorInfo); return; } var group_id = resp.GroupInfo[i].GroupId; var name = webim.Tool.formatText2Html(resp.GroupInfo[i].Name); var type_zh = webim.Tool.groupTypeEn2Ch(resp.GroupInfo[i].Type); var type = resp.GroupInfo[i].Type; var owner_account = resp.GroupInfo[i].Owner_Account; var create_time = webim.Tool.formatTimeStamp(resp.GroupInfo[i].CreateTime); var member_num = resp.GroupInfo[i].MemberNum; var notification = webim.Tool.formatText2Html(resp.GroupInfo[i].Notification); var introduction = webim.Tool.formatText2Html(resp.GroupInfo[i].Introduction); data.push({ 'GId': group_id, 'GroupId': webim.Tool.formatText2Html(group_id), 'Name': name, 'TypeZh': type_zh, 'Type': type, 'Owner_Account': owner_account, 'MemberNum': member_num, 'Notification': notification, 'Introduction': introduction, 'CreateTime': create_time }); } } $('#search_group_table').bootstrapTable('load', data); }, function(err) { alert(err.ErrorInfo); } ); }; //搜索群(按名称) var searchGroupByName = function() { if ($("#sgbn_group_name").val().length == 0) { alert('请输入群名称'); return; } if (webim.Tool.trimStr($("#sgbn_group_name").val()).length == 0) { alert('您输入的群名称都是空格,请重新输入'); return; } var options = { 'Content': $("#sgbn_group_name").val(), //群名称 "PageNum": 0, //0表示从第1页开始拉取 "GroupPerPage": 20, //每页拉取20条 'ResponseFilter': { "GroupBasePublicInfoFilter": [ //基础信息过滤器,可以通过它设置需要拉取的公开的基础信息 'Type', //群组类型 'Name', //群名称 "FaceUrl", //群头像 "Introduction", //群简介 'CreateTime', //群创建时间 'Owner_Account', //群创建者 'MemberNum', //成员个数 'MaxMemberNum', //群成员最大个数 'ApplyJoinOption' //申请加群选项 ] } }; webim.searchGroupByName( options, function(resp) { var data = []; if (resp.GroupInfo && resp.GroupInfo.length > 0) { for (var i in resp.GroupInfo) { if (resp.GroupInfo[i].ErrorCode > 0) { alert(resp.GroupInfo[i].ErrorInfo); return; } var group_id = resp.GroupInfo[i].GroupId; var name = webim.Tool.formatText2Html(resp.GroupInfo[i].Name); var type_zh = webim.Tool.groupTypeEn2Ch(resp.GroupInfo[i].Type); var type = resp.GroupInfo[i].Type; var owner_account = resp.GroupInfo[i].Owner_Account; var create_time = webim.Tool.formatTimeStamp(resp.GroupInfo[i].CreateTime); var member_num = resp.GroupInfo[i].MemberNum; var faceUrl = resp.GroupInfo[i].FaceUrl; var introduction = webim.Tool.formatText2Html(resp.GroupInfo[i].Introduction); //var maxMemberNum = resp.GroupInfo[i].MaxMemberNum; //var applyJoinOption = resp.GroupInfo[i].ApplyJoinOption; data.push({ 'GId': group_id, 'GroupId': webim.Tool.formatText2Html(group_id), 'Name': name, 'TypeZh': type_zh, 'Type': type, 'Owner_Account': owner_account, 'MemberNum': member_num, 'FaceUrl': faceUrl, 'Introduction': introduction, 'CreateTime': create_time }); } } $('#search_group_by_name_table').bootstrapTable('load', data); }, function(err) { alert(err.ErrorInfo); } ); }; //创建群组 var createGroup = function() { var sel_friends = $('#select_friends').val(); var member_list = []; var members = sel_friends.split(";"); //字符分割 for (var i = 0; i < members.length; i++) { if (members[i] && members[i].length > 0) { member_list.push(members[i]); } } var faceurl = $("#cg_faceurl").val(); var cg_id = $("#cg_id").val().trim(); if (cg_id && !/^[A-Za-z0-9_]+$/gi.test(cg_id)) { alert('群组ID只能是数字、字母或下划线'); return } if ($("#cg_name").val().length == 0) { alert('请输入群组名称'); return; } if ($("#cg_name").val().length == 0) { alert('请输入群组名称'); return; } if (webim.Tool.trimStr($("#cg_name").val()).length == 0) { alert('您输入的群组名称全是空格,请重新输入'); return; } if (webim.Tool.getStrBytes($("#cg_name").val()) > 30) { alert('您输入的群组名称超出限制(最长10个汉字)'); return; } if (webim.Tool.getStrBytes($("#cg_notification").val()) > 150) { alert('您输入的群组公告超出限制(最长50个汉字)'); return; } if (webim.Tool.getStrBytes($("#cg_introduction").val()) > 120) { alert('您输入的群组简介超出限制(最长40个汉字)'); return; } var groupType = $('input[name="cg_type_radio"]:checked').val(); var options = { 'GroupId': cg_id, 'Owner_Account': loginInfo.identifier, 'Type': groupType, //Private/Public/ChatRoom/AVChatRoom 'Name': $("#cg_name").val(), 'Notification': $("#cg_notification").val(), 'Introduction': $('#cg_introduction').val(), 'MemberList': member_list }; if (faceurl) { options.FaceUrl = faceurl; } if (groupType != 'Private') { //非私有群才支持ApplyJoinOption属性 options.ApplyJoinOption = $('input[name="cg_ajp_type_radio"]:checked').val(); } webim.createGroup( options, function(resp) { $('#create_group_dialog').modal('hide'); alert('创建群成功'); //读取我的群组列表 //getJoinedGroupListHigh(getGroupsCallbackOK); }, function(err) { alert(err.ErrorInfo); } ); }; //修改群资料 var modifyGroup = function() { var faceurl = $("#mg_faceurl").val(); if ($("#mg_name").val().length == 0) { alert('请输入群组名称'); return; } if (webim.Tool.trimStr($("#mg_name").val()).length == 0) { alert('您输入的群组名称全是空格,请重新输入'); return; } if (webim.Tool.getStrBytes($("#fsm_name").val()) > 30) { alert('您输入的群组名称超出限制(最长10个汉字)'); return; } if (webim.Tool.getStrBytes($("#fsm_notification").val()) > 150) { alert('您输入的群组公告超出限制(最长50个汉字)'); return; } if (webim.Tool.getStrBytes($("#fsm_introduction").val()) > 120) { alert('您输入的群组简介超出限制(最长40个汉字)'); return; } var up_all = $('input[name="mgm_up_all_radio"]:checked').val(); var options = { 'GroupId': $('#mg_group_id').val(), 'Name': $('#mg_name').val(), 'Notification': $('#mg_notification').val(), 'Introduction': $('#mg_introduction').val(), 'ShutUpAllMember': up_all }; if (faceurl) { options.FaceUrl = faceurl; } webim.modifyGroupBaseInfo( options, function(resp) { //在表格中修改对应的行 $('#get_my_group_table').bootstrapTable('updateRow', { index: $('#mg_sel_row_index').val(), row: { Type: $('input[name="mg_type_radio"]:checked').val(), Name: webim.Tool.formatText2Html($('#mg_name').val()), Introduction: webim.Tool.formatText2Html($('#mg_introduction').val()), Notification: webim.Tool.formatText2Html($('#mg_notification').val()) } }); $('#modify_group_dialog').modal('hide'); alert('修改群资料成功'); }, function(err) { alert(err.ErrorInfo); } ); }; //转让群组 var changeGroupOwner = function() { var newOwer = $("#cgo_new_owner").val(); if (newOwer.length == 0) { alert('请输入新的群主账号'); return; } if (webim.Tool.trimStr(newOwer).length == 0) { alert('您输入的新群主账号全是空格,请重新输入'); return; } if (newOwer == loginInfo.identifier) { alert('不能给自己转让群组'); return; } var options = { 'GroupId': $('#cgo_group_id').val(), 'NewOwner_Account': newOwer }; webim.changeGroupOwner( options, function(resp) { //在表格中修改对应的行 $('#get_my_group_table').bootstrapTable('updateRow', { index: $('#cgo_sel_row_index').val(), row: { RoleEn: "Member", Role: "成员" } }); $('#change_group_owner_dialog').modal('hide'); alert('转让群组成功'); }, function(err) { alert(err.ErrorInfo); } ); }; //申请加群 var applyJoinGroup = function() { if (webim.Tool.getStrBytes($("#ajg_apply_msg").val()) > 300) { alert('您输入的附言超出限制(最长100个汉字)'); return; } var options = { 'GroupId': $("#ajg_group_id").val(), 'ApplyMsg': $("#ajg_apply_msg").val(), 'UserDefinedField': '' }; webim.applyJoinGroup( options, function(resp) { $('#apply_join_group_dialog').modal('hide'); var joinedStatus = resp.JoinedStatus; //JoinedSuccess--成功加入,WaitAdminApproval--等待管理员审核 if (joinedStatus == "JoinedSuccess") { //刷新我的群组列表 //getJoinedGroupListHigh(getGroupsCallbackOK); alert('成功加入该群'); } else { alert('申请成功,请等待群主审核'); } }, function(err) { alert(err.ErrorInfo); } ); }; //获取我的群组 var getMyGroup = function() { initGetMyGroupTable([]); var options = { 'Member_Account': loginInfo.identifier, 'Limit': totalCount, 'Offset': 0, //'GroupType':'', 'GroupBaseInfoFilter': [ 'Type', 'Name', 'Introduction', 'Notification', 'FaceUrl', 'CreateTime', 'Owner_Account', 'LastInfoTime', 'LastMsgTime', 'NextMsgSeq', 'MemberNum', 'MaxMemberNum', 'ApplyJoinOption', 'ShutUpAllMember' ], 'SelfInfoFilter': [ 'Role', 'JoinTime', 'MsgFlag', 'UnreadMsgNum' ] }; webim.getJoinedGroupListHigh( options, function(resp) { if (!resp.GroupIdList || resp.GroupIdList.length == 0) { alert('你目前还没有加入任何群组'); return; } var data = []; for (var i = 0; i < resp.GroupIdList.length; i++) { var group_id = resp.GroupIdList[i].GroupId; var name = webim.Tool.formatText2Html(resp.GroupIdList[i].Name); var faceUrl = resp.GroupIdList[i].FaceUrl; var type_en = resp.GroupIdList[i].Type; var type = webim.Tool.groupTypeEn2Ch(resp.GroupIdList[i].Type); var role_en = resp.GroupIdList[i].SelfInfo.Role; var role = webim.Tool.groupRoleEn2Ch(resp.GroupIdList[i].SelfInfo.Role); var msg_flag = webim.Tool.groupMsgFlagEn2Ch(resp.GroupIdList[i].SelfInfo.MsgFlag); var msg_flag_en = resp.GroupIdList[i].SelfInfo.MsgFlag; var join_time = webim.Tool.formatTimeStamp(resp.GroupIdList[i].SelfInfo.JoinTime); var member_num = resp.GroupIdList[i].MemberNum; var notification = webim.Tool.formatText2Html(resp.GroupIdList[i].Notification); var introduction = webim.Tool.formatText2Html(resp.GroupIdList[i].Introduction); var ShutUpAllMember = resp.GroupIdList[i].ShutUpAllMember; //== 'On' ? resp.GroupIdList[i].ShutUpAllMember = '开启' : resp.GroupIdList[i].ShutUpAllMember = '关闭'; data.push({ 'GId': group_id, 'GroupId': webim.Tool.formatText2Html(group_id), 'Name': name, 'FaceUrl': faceUrl, 'TypeEn': type_en, 'Type': type, 'RoleEn': role_en, 'Role': role, 'MsgFlagEn': msg_flag_en, 'MsgFlag': msg_flag, 'MemberNum': member_num, 'Notification': notification, 'Introduction': introduction, 'JoinTime': join_time, 'ShutUpAllMember': ShutUpAllMember }); } //打开我的群组列表对话框 $('#get_my_group_table').bootstrapTable('load', data); $('#get_my_group_dialog').modal('show'); }, function(err) { alert(err.ErrorInfo); } ); }; //退群 var quitGroup = function(group_id) { var options = null; if (group_id) { options = { 'GroupId': group_id }; } if (options == null) { alert('退群时,群组ID非法'); return; } webim.quitGroup( options, function(resp) { //在表格中删除对应的行 $('#get_my_group_table').bootstrapTable('remove', { field: 'GroupId', values: [group_id] }); //刷新我的群组列表 //getJoinedGroupListHigh(getGroupsCallbackOK); deleteSessDiv(webim.SESSION_TYPE.GROUP, group_id); //在最近的联系人列表删除可能存在的群会话 }, function(err) { alert(err.ErrorInfo); } ); }; //读取群组基本资料-高级接口 var getGroupInfo = function(group_id, cbOK, cbErr) { var options = { 'GroupIdList': [ group_id ], 'GroupBaseInfoFilter': [ 'Type', 'Name', 'Introduction', 'Notification', 'FaceUrl', 'CreateTime', 'Owner_Account', 'LastInfoTime', 'LastMsgTime', 'NextMsgSeq', 'MemberNum', 'MaxMemberNum', 'ApplyJoinOption', 'ShutUpAllMember' ], 'MemberInfoFilter': [ 'Account', 'Role', 'JoinTime', 'LastSendMsgTime', 'ShutUpUntil' ] }; webim.getGroupInfo( options, function(resp) { if (resp.GroupInfo[0].ShutUpAllMember == 'On') { alert('该群组已开启全局禁言'); } if (cbOK) { cbOK(resp); } }, function(err) { alert(err.ErrorInfo); } ); }; //解散群组 var destroyGroup = function(group_id) { var options = null; if (group_id) { options = { 'GroupId': group_id }; } if (options == null) { alert('解散群时,群组ID非法'); return; } webim.destroyGroup( options, function(resp) { //在表格中删除对应的行 $('#get_my_group_table').bootstrapTable('remove', { field: 'GroupId', values: [group_id] }); //读取我的群组列表 //getJoinedGroupListHigh(getGroupsCallbackOK); deleteSessDiv(webim.SESSION_TYPE.GROUP, group_id); //在最近的联系人列表删除可能存在的群会话 }, function(err) { alert(err.ErrorInfo); } ); }; //获取我的好友,然后邀请加群 var getMyFriendGroup = function() { initGetMyFriendGroupTable([]); var options = { 'From_Account': loginInfo.identifier, 'TimeStamp': 0, 'StartIndex': 0, 'GetCount': totalCount, 'LastStandardSequence': 0, "TagList": [ "Tag_Profile_IM_Nick", "Tag_SNS_IM_Remark" ] }; webim.getAllFriend( options, function(resp) { if (resp.FriendNum > 0) { var table_friends_data = []; var friends = resp.InfoItem; if (!friends || friends.length == 0) { alert('你目前还没有好友,无法邀请好友加入该群'); return; } var count = friends.length; for (var i = 0; i < count; i++) { var friend_name = friends[i].Info_Account; if (friends[i].SnsProfileItem && friends[i].SnsProfileItem[0] && friends[i].SnsProfileItem[0].Tag) { friend_name = friends[i].SnsProfileItem[0].Value; } table_friends_data.push({ 'Info_Account': webim.Tool.formatText2Html(friends[i].Info_Account), 'Nick': webim.Tool.formatText2Html(friend_name) }); } //打开我的好友列表对话框 $('#get_my_friend_group_table').bootstrapTable('load', table_friends_data); $('#get_my_friend_group_dialog').modal('show'); } else { alert('你目前还没有好友,无法邀请好友加入该群'); } }, function(err) { alert(err.ErrorInfo); } ); }; //选择我的好友 var selectMyFriendGroup = function() { initSelectMyFriendGroupTable([]); var options = { 'From_Account': loginInfo.identifier, 'TimeStamp': 0, 'StartIndex': 0, 'GetCount': totalCount, 'LastStandardSequence': 0, "TagList": [ "Tag_Profile_IM_Nick", "Tag_SNS_IM_Remark" ] }; webim.getAllFriend( options, function(resp) { if (resp.FriendNum > 0) { var table_friends_data = []; var friends = resp.InfoItem; if (!friends || friends.length == 0) { alert('你目前还没有好友,无法建群'); return; } var count = friends.length; for (var i = 0; i < count; i++) { var friend_name = friends[i].Info_Account; if (friends[i].SnsProfileItem && friends[i].SnsProfileItem[0] && friends[i].SnsProfileItem[0].Tag) { friend_name = friends[i].SnsProfileItem[0].Value; } table_friends_data.push({ 'Info_Account': webim.Tool.formatText2Html(friends[i].Info_Account), 'Nick': webim.Tool.formatText2Html(friend_name) }); } //打开选择我的好友列表对话框 $('#select_my_friend_group_table').bootstrapTable('load', table_friends_data); $('#select_my_friend_group_dialog').modal('show'); } else { alert('你目前还没有好友,无法建群'); } }, function(err) { alert(err.ErrorInfo); } ); }; //定义(创建群之前)选择好友表格每行按钮 function smfgOperateFormatter(value, row, index) { return [ '', '', '', '', '', '', ].join(''); } //(创建群之前)选择好友表格每行按钮单击事件 window.smfgOperateEvents = { 'click .plus': function(e, value, row, index) { var sel_friends = $('#select_friends').val(); var account = row.Info_Account; //先判断是否已选择 if (sel_friends && sel_friends != '') { var pos = sel_friends.indexOf(";" + account + ";"); if (pos >= 0) { alert('已选择该好友,请选择其他好友'); return; } } else { sel_friends = ';'; } sel_friends += row.Info_Account + ";"; $('#select_friends').val(sel_friends); alert('选择成功'); }, 'click .minus': function(e, value, row, index) { var sel_friends = $('#select_friends').val(); var account = row.Info_Account; //先判断是否已选择 if (!sel_friends || sel_friends == '') { alert('还未选择好友,不能进行此操作'); return; } else { var pos = sel_friends.indexOf(";" + account + ";"); var strlen = (account + ";").length; if (pos >= 0) { var begin = sel_friends.substr(0, pos); var end = sel_friends.substr(pos + strlen); var new_sel_friends = begin + end; } else { alert('未选择该好友,不能进行此操作'); return; } } if (new_sel_friends == ';') { new_sel_friends = ''; } $('#select_friends').val(new_sel_friends); alert('取消成功'); } }; //初始化(创建群之前)选择好友表格 function initSelectMyFriendGroupTable(data) { $('#select_my_friend_group_table').bootstrapTable({ method: 'get', cache: false, height: 500, striped: true, pagination: true, pageSize: pageSize, pageNumber: 1, pageList: [10, 20, 50, 100], search: true, showColumns: true, clickToSelect: true, columns: [{ field: "Info_Account", title: "账号", align: "center", valign: "middle", sortable: "true" }, { field: "Nick", title: "昵称", align: "center", valign: "middle", sortable: "true" }, { field: "smfgOperate", title: "操作", align: "center", valign: "middle", formatter: "smfgOperateFormatter", events: "smfgOperateEvents" }], data: data, formatNoMatches: function() { return '无符合条件的记录'; } }); } //从我的群组列表中发群消息 function sendGroupMsg() { toAccount = $("#sgm_to_groupid").val(); toName = $("#sgm_to_group_name").val(); msgtosend = $("#sgm_content").val(); var msgLen = webim.Tool.getStrBytes(msgtosend); var maxLen, errInfo; maxLen = webim.MSG_MAX_LENGTH.GROUP; errInfo = "消息长度超出限制(最多" + Math.round(maxLen / 3) + "汉字)"; if (msgtosend.length < 1) { alert("发送的消息不能为空!"); return; } if (msgLen > maxLen) { alert(errInfo); return; } var sess = webim.MsgStore.sessByTypeId(webim.SESSION_TYPE.GROUP, toAccount); if (!sess) { sess = new webim.Session(webim.SESSION_TYPE.GROUP, toAccount, toName, groupHeadUrl, Math.round(new Date().getTime() / 1000)); } var isSend = true; //是否为自己发送 var seq = -1; //消息序列,-1表示sdk自动生成,用于去重 var random = Math.round(Math.random() * 4294967296); //消息随机数,用于去重 var msgTime = Math.round(new Date().getTime() / 1000); //消息时间戳 var subType; //消息子类型 subType = webim.GROUP_MSG_SUB_TYPE.COMMON; var msg = new webim.Msg(sess, isSend, seq, random, msgTime, loginInfo.identifier, subType, loginInfo.identifierNick); var text_obj; text_obj = new webim.Msg.Elem.Text(msgtosend); msg.addText(text_obj); webim.sendMsg(msg, function(resp) { if (!selToID) { //没有聊天会话 selType = webim.SESSION_TYPE.GROUP; selToID = toAccount; selSess = sess; addSess(selType, toAccount, toName, groupHeadUrl, 0, 'sesslist'); setSelSessStyleOn(toAccount); //群聊时,长轮询接口会返回自己发的消息 //addMsg(msg); } else { //有聊天会话 if (selToID == toAccount) { //聊天对象不变 //不做任何操作 } else { //聊天对象发生改变 var tempSessDiv = document.getElementById("sessDiv_" + toAccount); if (!tempSessDiv) { //不存在这个会话 addSess(webim.SESSION_TYPE.GROUP, toAccount, toName, groupHeadUrl, 0, 'sesslist'); //增加一个会话 } onSelSess(webim.SESSION_TYPE.GROUP, toAccount); //再进行切换 } } webim.Tool.setCookie("tmpmsg_" + toAccount, '', 0); $("#sgm_content").val(''); $('#send_group_msg_dialog').modal('hide'); $('#get_my_group_dialog').modal('hide'); }, function(err) { alert(err.ErrorInfo); $("#sgm_content").val(''); }); } //将我的群组资料(群名称和群头像)保存在infoMap var initInfoMapByMyGroups = function(cbOK) { var options = { 'Member_Account': loginInfo.identifier, 'Limit': totalCount, 'Offset': 0, 'GroupBaseInfoFilter': [ 'Name', 'FaceUrl' ] }; webim.getJoinedGroupListHigh( options, function(resp) { if (resp.GroupIdList && resp.GroupIdList.length) { for (var i = 0; i < resp.GroupIdList.length; i++) { var group_name = resp.GroupIdList[i].Name; var group_image = resp.GroupIdList[i].FaceUrl; var key = webim.SESSION_TYPE.GROUP + "_" + resp.GroupIdList[i].GroupId; infoMap[key] = { 'name': group_name, 'image': group_image } } } if (cbOK) { cbOK(); } }, function(err) { alert(err.ErrorInfo); } ); };