You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
694 lines
23 KiB
694 lines
23 KiB
|
4 years ago
|
(function ($, learun) {
|
||
|
|
"use strict";
|
||
|
|
var connection;
|
||
|
|
var isConnection = -1;// -1 没开始连接,1连接成功,0 失败
|
||
|
|
var loadingMsg2 = {};
|
||
|
|
|
||
|
|
var msgList = {};
|
||
|
|
var imChat;
|
||
|
|
|
||
|
|
var loadingMsg = {};
|
||
|
|
|
||
|
|
var imUserId = ''; // 当前聊天的人
|
||
|
|
var sysUserMap = {}; // 系统注册发送消息人
|
||
|
|
|
||
|
|
var _im = {
|
||
|
|
init: function () {
|
||
|
|
_im.registerServer();
|
||
|
|
_im.connect();
|
||
|
|
}
|
||
|
|
// 连接服务端
|
||
|
|
, connect: function () {
|
||
|
|
var loginInfo = learun.clientdata.get(['userinfo']);
|
||
|
|
|
||
|
|
connection = new signalR.HubConnectionBuilder().withUrl(imconfig.url + "/ChatsHub").build();
|
||
|
|
console.log(loginInfo, imconfig, connection)
|
||
|
|
|
||
|
|
connection.on('revMsg', function (userId, msg, dateTime, isSystem) {
|
||
|
|
if (!loadingMsg2[userId]) {
|
||
|
|
var point = { userId: userId, content: msg, time: dateTime, isSystem: isSystem || 0 };
|
||
|
|
addMsgList(userId, point);
|
||
|
|
learun.im.revMsg && learun.im.revMsg(userId, msg, dateTime, isSystem || 0);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
connection.onclose(function (e) {
|
||
|
|
_im.disconnected();
|
||
|
|
console.log('Connection closed!', e);
|
||
|
|
});
|
||
|
|
|
||
|
|
Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
|
||
|
|
connection.start().then(function () {
|
||
|
|
_im.afterSuccess();
|
||
|
|
var loginInfo = learun.clientdata.get(['userinfo']);
|
||
|
|
connection.invoke("SendInfo", loginInfo.F_UserId);
|
||
|
|
}).catch(function (err) {
|
||
|
|
_im.disconnected();
|
||
|
|
return console.error(err.toString());
|
||
|
|
});
|
||
|
|
}
|
||
|
|
// 连接成功后执行方法
|
||
|
|
, afterSuccess: function () {
|
||
|
|
isConnection = 1;
|
||
|
|
$('.lr-im-bell').show();
|
||
|
|
}
|
||
|
|
// 断开连接后执行
|
||
|
|
, disconnected: function () {
|
||
|
|
isConnection = 0;
|
||
|
|
}
|
||
|
|
// 注册服务端方法
|
||
|
|
, registerServer: function () {
|
||
|
|
// 发送信息
|
||
|
|
_im.sendMsg = function (userId, msg) {
|
||
|
|
if (isConnection == 1) {
|
||
|
|
var loginInfo = learun.clientdata.get(['userinfo']);
|
||
|
|
connection.invoke("SendMsg", loginInfo.F_UserId, userId, msg, 0)
|
||
|
|
//imChat.server.sendMsg(userId, msg, 0);
|
||
|
|
}
|
||
|
|
else if (isConnection == -1) {
|
||
|
|
setTimeout(function () {
|
||
|
|
_im.sendMsg(userId, msg);
|
||
|
|
}, 100);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
function addMsgList(userId, item) {
|
||
|
|
msgList[userId] = msgList[userId] || [];
|
||
|
|
if (loadingMsg[userId]) {
|
||
|
|
setTimeout(function () {
|
||
|
|
addMsgList(userId, item);
|
||
|
|
}, 100);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
msgList[userId].push(item);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
var getTime = function (time) {
|
||
|
|
var d = new Date();
|
||
|
|
var c = d.DateDiff('d', time);
|
||
|
|
if (c <= 1) {
|
||
|
|
return learun.formatDate(time, 'hh:mm:ss');
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return learun.formatDate(time, 'yyyy/MM/dd');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// 发送聊天信息
|
||
|
|
var sendMsg = function (msg, time) {
|
||
|
|
var loginInfo = learun.clientdata.get(['userinfo']);
|
||
|
|
learun.clientdata.getAsync('user', {
|
||
|
|
key: loginInfo.userId,
|
||
|
|
callback: function (data, op) {
|
||
|
|
data.id = op.key;
|
||
|
|
var _html = '\
|
||
|
|
<div class="me im-time">'+ (time || '') + '</div>\
|
||
|
|
<div class="im-me">\
|
||
|
|
<div class="headimg"><img src="' + top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=userhead_' + data.F_Account + '"></div>\
|
||
|
|
<div class="arrow"></div>\
|
||
|
|
<span class="content">'+ msg + '</span>\
|
||
|
|
</div>';
|
||
|
|
|
||
|
|
$('.lr-im-msgcontent .lr-scroll-box').append(_html);
|
||
|
|
$('.lr-im-msgcontent').lrscrollSet('moveBottom');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
// 接收聊天消息
|
||
|
|
var revMsg = function (userId, msg, time) {
|
||
|
|
learun.clientdata.getAsync('user', {
|
||
|
|
key: userId,
|
||
|
|
callback: function (data, op) {
|
||
|
|
data.id = op.key;
|
||
|
|
var _html = '\
|
||
|
|
<div class="im-time">'+ (time || '') + '</div>\
|
||
|
|
<div class="im-other">\
|
||
|
|
<div class="headimg"><img src="' + top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=userhead_' + data.F_Account + '"></div>\
|
||
|
|
<div class="arrow"></div>\
|
||
|
|
<span class="content">'+ msg + '</span>\
|
||
|
|
</div>';
|
||
|
|
|
||
|
|
$('.lr-im-msgcontent .lr-scroll-box').append(_html);
|
||
|
|
$('.lr-im-msgcontent').lrscrollSet('moveBottom');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
// 获取联系人
|
||
|
|
var loadUserList = function (pid, type, deep, $list, companyId) {
|
||
|
|
if (type == 'company') {// 公司
|
||
|
|
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/Company/GetListByPId', { pid: pid }, function (data) {
|
||
|
|
if (data) {
|
||
|
|
$.each(data || [], function (index, item) {
|
||
|
|
var _html = '\
|
||
|
|
<div class="lr-im-company-item">\
|
||
|
|
<div class="lr-im-item-name lr-im-company" data-value="'+ item.F_CompanyId + '" data-deep="' + deep + '" >\
|
||
|
|
<i class="fa fa-angle-right"></i>'+ item.F_FullName + '\
|
||
|
|
<img class="lr-im-loading-img" src="'+ top.$.rootUrl + '/img/learuntree/loading.gif">\
|
||
|
|
</div>\
|
||
|
|
</div>';
|
||
|
|
$list.append(_html);
|
||
|
|
})
|
||
|
|
|
||
|
|
console.log(data)
|
||
|
|
}
|
||
|
|
$list.addClass('loadcompany')
|
||
|
|
})
|
||
|
|
}
|
||
|
|
else if (type == 'department') {// 部门
|
||
|
|
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/Department/GetListByPid', { companyId: companyId, pid: pid }, function (data) {
|
||
|
|
if (data) {
|
||
|
|
$.each(data || [], function (index, item) {
|
||
|
|
var _html = '\
|
||
|
|
<div class="lr-im-company-item">\
|
||
|
|
<div class="lr-im-item-name lr-im-department" data-cid="'+ companyId + '" data-value="' + item.F_DepartmentId + '" data-deep="' + deep + '" >\
|
||
|
|
<i class="fa fa-angle-right"></i>'+ item.F_FullName + '\
|
||
|
|
<img class="lr-im-loading-img" src="'+ top.$.rootUrl + '/img/learuntree/loading.gif">\
|
||
|
|
</div>\
|
||
|
|
</div>';
|
||
|
|
$list.append(_html);
|
||
|
|
})
|
||
|
|
}
|
||
|
|
$list.addClass('loaddepartment')
|
||
|
|
})
|
||
|
|
}
|
||
|
|
else {// 用户
|
||
|
|
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/User/GetList', { companyId: companyId, departmentId: pid }, function (data) {
|
||
|
|
if (data) {
|
||
|
|
$.each(data || [], function (index, item) {
|
||
|
|
var _html = '\
|
||
|
|
<div class="lr-im-company-item">\
|
||
|
|
<div class="lr-im-item-name lr-im-user" data-value="'+ item.F_UserId + '" >\
|
||
|
|
<img src="' + top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=userhead_' + item.F_Account + '" >' + item.F_RealName + '\
|
||
|
|
</div>\
|
||
|
|
</div>';
|
||
|
|
$list.append(_html);
|
||
|
|
})
|
||
|
|
}
|
||
|
|
$list.addClass('loaduser')
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function isLoadUserList(isOk, callback) {
|
||
|
|
if (isOk()) {
|
||
|
|
callback()
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
setTimeout(function () { isLoadUserList(isOk, callback) }, 100)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
learun.im = {
|
||
|
|
init: function () {
|
||
|
|
if (!imconfig.isOpen) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
learun.im.bind();
|
||
|
|
learun.im.load();
|
||
|
|
},
|
||
|
|
addContacts: function (userId) {// 添加联系人
|
||
|
|
learun.httpAsync('Post', top.$.rootUrl + '/LR_IM/IMMsg/AddContact', { otherUserId: userId }, function (data) { });
|
||
|
|
},
|
||
|
|
removeContacts: function (userId) {// 移除联系人
|
||
|
|
learun.httpAsync('Post', top.$.rootUrl + '/LR_IM/IMMsg/RemoveContact', { otherUserId: userId }, function (data) { });
|
||
|
|
},
|
||
|
|
getContacts: function (callback) {// 获取最近的联系人列表
|
||
|
|
learun.httpAsync('GET', top.$.rootUrl + '/LR_IM/IMMsg/GetContactsList', {}, function (res) {
|
||
|
|
if (res) {
|
||
|
|
_im.init();
|
||
|
|
callback(res.data || [], res.sysUserList || []);
|
||
|
|
}
|
||
|
|
})
|
||
|
|
},
|
||
|
|
updateContacts: function (userId) {
|
||
|
|
learun.httpAsync('Post', top.$.rootUrl + '/LR_IM/IMMsg/UpdateContactState', { otherUserId: userId }, function (data) {
|
||
|
|
});
|
||
|
|
},
|
||
|
|
sendMsg: function (userId, msg) {// 发送消息
|
||
|
|
var time = "";
|
||
|
|
var loginInfo = learun.clientdata.get(['userinfo']);
|
||
|
|
var point = { userId: loginInfo.userId, content: msg, time: learun.getDate('yyyy-MM-dd hh:mm:ss'), isSystem: 0 };
|
||
|
|
addMsgList(userId, point);
|
||
|
|
learun.httpAsync('Post', top.$.rootUrl + '/LR_IM/IMMsg/SendMsg', { userId: userId, content: msg }, function (data) {
|
||
|
|
_im.sendMsg(userId, msg);// 发送给即时通讯服务
|
||
|
|
});
|
||
|
|
if (msgList[userId].length > 1) {
|
||
|
|
if (learun.parseDate(point.time).DateDiff('s', msgList[userId][msgList[userId].length - 2].time) > 60) {
|
||
|
|
time = point.time;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
time = point.time;
|
||
|
|
}
|
||
|
|
return time;
|
||
|
|
},
|
||
|
|
getMsgList: function (userId, callback, isGetMsgList) {
|
||
|
|
msgList[userId] = msgList[userId] || [];
|
||
|
|
loadingMsg[userId] = true;
|
||
|
|
if (msgList[userId].length == 0 && isGetMsgList) {// 如果没有信息,获取最近10条的聊天记录
|
||
|
|
loadingMsg2[userId] = true;
|
||
|
|
learun.httpAsync('GET', top.$.rootUrl + '/LR_IM/IMMsg/GetMsgList', { userId: userId }, function (data) {
|
||
|
|
msgList[userId] = msgList[userId] || [];
|
||
|
|
data = data || [];
|
||
|
|
var len = data;
|
||
|
|
if (len > 0) {
|
||
|
|
for (var i = len - 1; i >= 0; i--) {
|
||
|
|
var item = data[i];
|
||
|
|
var point = { userId: _item.F_SendUserId, content: _item.F_Content, time: _item.F_CreateDate, isSystem: _item.F_IsSystem || 0 };
|
||
|
|
msgList[userId].push(point);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
callback(msgList[userId]);
|
||
|
|
loadingMsg[userId] = false;
|
||
|
|
loadingMsg2[userId] = false;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
callback(msgList[userId]);
|
||
|
|
loadingMsg[userId] = false;
|
||
|
|
}
|
||
|
|
},
|
||
|
|
registerRevMsg: function (callback) {// 获取消息记录
|
||
|
|
learun.im.revMsg = callback;
|
||
|
|
},
|
||
|
|
|
||
|
|
load: function () {
|
||
|
|
// 获取最近联系人列表
|
||
|
|
learun.im.getContacts(function (data, sysUserList) {
|
||
|
|
$.each(sysUserList, function (_index, _item) {
|
||
|
|
sysUserMap[_item.F_Code] = _item;
|
||
|
|
});
|
||
|
|
|
||
|
|
var $userList = $('#lr_immsg_userlist .lr-scroll-box');
|
||
|
|
$.each(data, function (_index, _item) {
|
||
|
|
var html = '<div class="msg-item' + (_item.F_IsRead == '1' ? ' imHasMsg' : '') + '" data-value="' + _item.F_OtherUserId + '" >';
|
||
|
|
html += '<div class="photo">';
|
||
|
|
|
||
|
|
if (sysUserMap[_item.F_OtherUserId]) {
|
||
|
|
html += '<i class="' + sysUserMap[_item.F_OtherUserId].F_Icon + '" ></i>';
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
html += '<img src="' + top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=1">';
|
||
|
|
}
|
||
|
|
|
||
|
|
html += '<div class="point"></div>';
|
||
|
|
html += '</div>';
|
||
|
|
html += '<div class="name"></div>';
|
||
|
|
html += '<div class="msg">' + (_item.F_Content || '') + '</div>';
|
||
|
|
html += '<div class="date">' + getTime(_item.F_Time) + '</div>';
|
||
|
|
html += '</div>';
|
||
|
|
|
||
|
|
$userList.append(html);
|
||
|
|
if (sysUserMap[_item.F_OtherUserId]) {
|
||
|
|
var _$item = $userList.find('[data-value="' + _item.F_OtherUserId + '"]');
|
||
|
|
_$item.find('.name').text(sysUserMap[_item.F_OtherUserId].F_Name);
|
||
|
|
_$item.addClass('sys')
|
||
|
|
_$item = null;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
learun.clientdata.getAsync('user', {
|
||
|
|
key: _item.F_OtherUserId,
|
||
|
|
callback: function (data, op) {
|
||
|
|
console.log(data)
|
||
|
|
|
||
|
|
var $item = $userList.find('[data-value="' + op.key + '"]');
|
||
|
|
$item.find('.name').text(data.F_RealName);
|
||
|
|
$item.find('img').attr('src', top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=userhead_' + data.F_Account);
|
||
|
|
$item = null;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
})
|
||
|
|
var $list = $('#lr_im_content_userlist .lr-scroll-box');
|
||
|
|
loadUserList('0', 'company', 0, $list)
|
||
|
|
},
|
||
|
|
bind: function () {
|
||
|
|
$('#lr_immsg_userlist').lrscroll();
|
||
|
|
$('#lr_im_content_userlist').lrscroll();
|
||
|
|
$('#lr_im_content_userlist2').lrscroll();
|
||
|
|
$('.lr-im-msgcontent').lrscroll();
|
||
|
|
|
||
|
|
$('.lr-im-bell').on('click', function () {
|
||
|
|
var $this = $(this);
|
||
|
|
if ($this.hasClass('open')) {
|
||
|
|
$this.removeClass('open');
|
||
|
|
$('.lr-im-body').removeClass('open');
|
||
|
|
$('.lr-im-black-overlay').hide();
|
||
|
|
imUserId = '';
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
$this.addClass('open');
|
||
|
|
$('.lr-im-bell .point').hide();
|
||
|
|
$('.lr-im-body').addClass('open');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
// 最近消息 与 联系人之间的切换
|
||
|
|
$('.lr-im-title .title-item').on('click', function () {
|
||
|
|
var $this = $(this);
|
||
|
|
if (!$this.hasClass('active')) {
|
||
|
|
$('.lr-im-body>.active').removeClass('active');
|
||
|
|
$('.lr-im-title>.active').removeClass('active');
|
||
|
|
$this.addClass('active');
|
||
|
|
var v = $this.attr('data-value');
|
||
|
|
$('#' + v).addClass('active');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 联系人
|
||
|
|
$('#lr_im_content_userlist .lr-scroll-box').on('click', function (e) {
|
||
|
|
e = e || window.event;
|
||
|
|
var et = e.target || e.srcElement;
|
||
|
|
var $et = $(et);
|
||
|
|
|
||
|
|
if (et.tagName == 'IMG' || et.tagName == 'I') {
|
||
|
|
$et = $et.parent();
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($et.hasClass('lr-im-company')) {// 点击公司项
|
||
|
|
// 判断是否加载子项
|
||
|
|
if ($et.hasClass('lr-im-loading')) {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if ($et.hasClass('lr-im-loaded')) {
|
||
|
|
if ($et.parent().hasClass('open')) {
|
||
|
|
$et.parent().removeClass('open');
|
||
|
|
} else {
|
||
|
|
$et.parent().addClass('open')
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
$et.addClass('lr-im-loading')
|
||
|
|
var id = $et.attr('data-value');
|
||
|
|
var deep = parseInt($et.attr('data-deep'));
|
||
|
|
var $list = $('<div class="lr-im-user-list" ></div>');
|
||
|
|
$list.css({ 'padding-left': '10px' });
|
||
|
|
var flag = false;
|
||
|
|
|
||
|
|
loadUserList('0', 'department', deep + 1, $list, id)
|
||
|
|
loadUserList(id, 'company', deep + 1, $list)
|
||
|
|
|
||
|
|
isLoadUserList(function () {
|
||
|
|
if ($list.hasClass('loadcompany') && $list.hasClass('loaddepartment')) {
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
}, function () {
|
||
|
|
$et.removeClass('lr-im-loading')
|
||
|
|
$et.addClass('lr-im-loaded')
|
||
|
|
$et.parent().append($list)
|
||
|
|
$et.parent().addClass('open')
|
||
|
|
})
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if ($et.hasClass('lr-im-department')) {
|
||
|
|
if ($et.hasClass('lr-im-loading')) {
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if ($et.hasClass('lr-im-loaded')) {
|
||
|
|
if ($et.parent().hasClass('open')) {
|
||
|
|
$et.parent().removeClass('open');
|
||
|
|
} else {
|
||
|
|
$et.parent().addClass('open')
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
$et.addClass('lr-im-loading')
|
||
|
|
var id = $et.attr('data-value');
|
||
|
|
var cid = $et.attr('data-cid');
|
||
|
|
var deep = parseInt($et.attr('data-deep'));
|
||
|
|
var $list = $('<div class="lr-im-user-list" ></div>');
|
||
|
|
$list.css({ 'padding-left': '10px' });
|
||
|
|
var flag = false;
|
||
|
|
|
||
|
|
loadUserList(id, 'user', deep + 1, $list, cid)
|
||
|
|
loadUserList(id, 'department', deep + 1, $list, cid)
|
||
|
|
|
||
|
|
isLoadUserList(function () {
|
||
|
|
if ($list.hasClass('loaddepartment') && $list.hasClass('loaduser')) {
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
}, function () {
|
||
|
|
$et.removeClass('lr-im-loading')
|
||
|
|
$et.addClass('lr-im-loaded')
|
||
|
|
$et.parent().append($list)
|
||
|
|
$et.parent().addClass('open')
|
||
|
|
})
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
else if ($et.hasClass('lr-im-user')) {
|
||
|
|
// 如果是用户列表
|
||
|
|
// 1.打开聊天窗口
|
||
|
|
// 2.添加一条最近联系人数据(如果没有添加的话)
|
||
|
|
// 3.获取最近的20条聊天数据或者最近的聊天信息
|
||
|
|
|
||
|
|
var id = $et.attr('data-value');
|
||
|
|
var $userList = $('#lr_immsg_userlist .lr-scroll-box');
|
||
|
|
var $userItem = $userList.find('[data-value="' + id + '"]');
|
||
|
|
|
||
|
|
// 更新下最近的联系人列表数据
|
||
|
|
$('.lr-im-title .title-item').eq(0).trigger('click');
|
||
|
|
|
||
|
|
imUserId = id;
|
||
|
|
if ($userItem.length > 0) {
|
||
|
|
$userList.prepend($userItem);
|
||
|
|
$userItem.trigger('click');
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
var imgurl = $et.find('img').attr('src');
|
||
|
|
var _html = '\
|
||
|
|
<div class="msg-item" data-value="' + id + '" >\
|
||
|
|
<div class="photo">\
|
||
|
|
<img src="'+ imgurl + '">\
|
||
|
|
<div class="point"></div>\
|
||
|
|
</div>\
|
||
|
|
<div class="name"></div>\
|
||
|
|
<div class="msg"></div>\
|
||
|
|
<div class="date"></div>\
|
||
|
|
</div>';
|
||
|
|
$userList.prepend(_html);
|
||
|
|
$userItem = $userList.find('[data-value="' + id + '"]');
|
||
|
|
// 获取人员数据
|
||
|
|
learun.clientdata.getAsync('user', {
|
||
|
|
key: id,
|
||
|
|
callback: function (data, op) {
|
||
|
|
$userList.find('[data-value="' + op.key + '"] .name').text(data.F_RealName);
|
||
|
|
$userItem.trigger('click');
|
||
|
|
}
|
||
|
|
});
|
||
|
|
learun.im.addContacts(id);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
// 最近联系人列表点击
|
||
|
|
$('#lr_immsg_userlist .lr-scroll-box').on('click', function (e) {
|
||
|
|
e = e || window.event;
|
||
|
|
var et = e.target || e.srcElement;
|
||
|
|
var $et = $(et);
|
||
|
|
|
||
|
|
if (!$et.hasClass('msg-item')) {
|
||
|
|
$et = $et.parents('.msg-item');
|
||
|
|
}
|
||
|
|
if ($et.length > 0) {
|
||
|
|
if (!$et.hasClass('active')) {
|
||
|
|
var name = $et.find('.name').text();
|
||
|
|
imUserId = $et.attr('data-value');
|
||
|
|
|
||
|
|
if ($et.hasClass('sys')) {
|
||
|
|
learun.layerForm({
|
||
|
|
id: 'LookMsgIndex',
|
||
|
|
title: '查看消息-' + name,
|
||
|
|
url: top.$.rootUrl + '/LR_IM/IMMsg/Index?userId=' + imUserId + '&name=' + name,
|
||
|
|
width: 800,
|
||
|
|
height: 500,
|
||
|
|
maxmin: true,
|
||
|
|
btn: null
|
||
|
|
});
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
$('#lr_immsg_userlist .lr-scroll-box .active').removeClass('active');
|
||
|
|
$et.addClass('active');
|
||
|
|
$('.lr-im-black-overlay').show();
|
||
|
|
var $imdialog = $('.lr-im-dialog');
|
||
|
|
$imdialog.find('.im-title').text("与" + name + "对话中");
|
||
|
|
|
||
|
|
$('#lr_im_input').val('');
|
||
|
|
$('#lr_im_input').select();
|
||
|
|
|
||
|
|
$('.lr-im-msgcontent .lr-scroll-box').html('');
|
||
|
|
// 获取聊天信息
|
||
|
|
learun.im.getMsgList(imUserId, function (data) {
|
||
|
|
var len = data.length;
|
||
|
|
if (len > 0) {
|
||
|
|
for (var i = len - 1; i >= 0; i--) {
|
||
|
|
var _item = data[i];
|
||
|
|
learun.clientdata.getAsync('user', {
|
||
|
|
key: _item.userId,
|
||
|
|
msg: _item.content,
|
||
|
|
time: _item.time,
|
||
|
|
callback: function (data, op) {
|
||
|
|
var loginInfo = learun.clientdata.get(['userinfo']);
|
||
|
|
var _html = '\
|
||
|
|
<div class="im-time '+ (loginInfo.userId == op.key ? 'me' : '') + ' ">' + op.time + '</div>\
|
||
|
|
<div class="'+ (loginInfo.userId == op.key ? 'im-me' : 'im-other') + '">\
|
||
|
|
<div class="headimg"><img src="'+ top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=userhead_' + data.F_Account + '"></div>\
|
||
|
|
<div class="arrow"></div>\
|
||
|
|
<span class="content">'+ op.msg + '</span>\
|
||
|
|
</div>';
|
||
|
|
$('.lr-im-msgcontent .lr-scroll-box').prepend(_html);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
$('.lr-im-msgcontent').lrscrollSet('moveBottom');
|
||
|
|
}
|
||
|
|
}, $et.hasClass('imHasMsg'));
|
||
|
|
$et.removeClass('imHasMsg');
|
||
|
|
learun.im.updateContacts(imUserId);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 联系人搜索
|
||
|
|
$('.lr-im-search input').on("keypress", function (e) {
|
||
|
|
e = e || window.event;
|
||
|
|
if (e.keyCode == "13") {
|
||
|
|
var $this = $(this);
|
||
|
|
var keyword = $this.val();
|
||
|
|
|
||
|
|
if (keyword) {
|
||
|
|
$('#lr_im_content_userlist').hide()
|
||
|
|
$('#lr_im_content_userlist2').show()
|
||
|
|
var $list = $('#lr_im_content_userlist2 .lr-scroll-box');
|
||
|
|
|
||
|
|
//GetAllList
|
||
|
|
learun.httpAsync('GET', top.$.rootUrl + '/LR_OrganizationModule/User/GetAllList', { keyword: keyword }, function (data) {
|
||
|
|
$list.html('')
|
||
|
|
if (data) {
|
||
|
|
$.each(data || [], function (index, item) {
|
||
|
|
var _html = '\
|
||
|
|
<div class="lr-im-company-item">\
|
||
|
|
<div class="lr-im-item-name lr-im-user" data-value="'+ item.F_UserId + '" >\
|
||
|
|
<img src="' + top.$.rootUrl + '/LR_OrganizationModule/User/HeadImg?account=userhead_' + item.F_Account + '" >' + item.F_RealName + '\
|
||
|
|
</div>\
|
||
|
|
</div>';
|
||
|
|
$list.append(_html);
|
||
|
|
})
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
$('#lr_im_content_userlist2').hide()
|
||
|
|
$('#lr_im_content_userlist').show()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
// 发送消息
|
||
|
|
$('#lr_im_input').on("keypress", function (e) {
|
||
|
|
e = e || window.event;
|
||
|
|
if (e.keyCode == "13") {
|
||
|
|
var text = $(this).val();
|
||
|
|
$(this).val('');
|
||
|
|
if (text.replace(/(^\s*)|(\s*$)/g, "") != '') {
|
||
|
|
var time = learun.im.sendMsg(imUserId, text);
|
||
|
|
sendMsg(text, time);
|
||
|
|
var $userItem = $('#lr_immsg_userlist .lr-scroll-box [data-value="' + imUserId + '"]');
|
||
|
|
$userItem.find('.msg').text(text);
|
||
|
|
$userItem.find('.date').text(getTime(learun.getDate('yyyy-MM-dd hh:mm:ss')));
|
||
|
|
$userItem = null;
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
// 注册消息接收
|
||
|
|
learun.im.registerRevMsg(function (userId, msg, dateTime) {
|
||
|
|
var $userList = $('#lr_immsg_userlist .lr-scroll-box');
|
||
|
|
var $userItem = $userList.find('[data-value="' + userId + '"]');
|
||
|
|
// 判断当前账号是否打开聊天窗口
|
||
|
|
if (userId == imUserId) {
|
||
|
|
revMsg(userId, msg, dateTime);
|
||
|
|
learun.im.updateContacts(userId);
|
||
|
|
$userItem.find('.msg').text(msg);
|
||
|
|
$userItem.find('.date').text(getTime(dateTime));
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if ($userItem.length > 0) {
|
||
|
|
$userList.prepend($userItem);
|
||
|
|
if (!$userItem.hasClass('imHasMsg')) {
|
||
|
|
$userItem.addClass('imHasMsg');
|
||
|
|
}
|
||
|
|
$userItem.find('.msg').text(msg);
|
||
|
|
$userItem.find('.date').text(getTime(dateTime));
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
var html = '<div class="msg-item" data-value="' + userId + '" >';
|
||
|
|
html += '<div class="photo">';
|
||
|
|
|
||
|
|
if (sysUserMap[userId]) {
|
||
|
|
html += '<i class="' + sysUserMap[userId].F_Icon + '" ></i>';
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
html += '<img src="' + top.$.rootUrl + '/Content/images/head/on-boy.jpg" >';
|
||
|
|
}
|
||
|
|
|
||
|
|
html += '<div class="point"></div>';
|
||
|
|
html += '</div>';
|
||
|
|
html += '<div class="name"></div>';
|
||
|
|
html += '<div class="msg">' + msg + '</div>';
|
||
|
|
html += '<div class="date">' + getTime(dateTime) + '</div>';
|
||
|
|
html += '</div>';
|
||
|
|
$userList.prepend(html);
|
||
|
|
|
||
|
|
if (sysUserMap[userId]) {
|
||
|
|
var _$item = $userList.find('[data-value="' + userId + '"]');
|
||
|
|
_$item.find('.name').text(sysUserMap[userId].F_Name);
|
||
|
|
_$item = null;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
learun.clientdata.getAsync('user', {
|
||
|
|
key: userId,
|
||
|
|
callback: function (data, op) {
|
||
|
|
var $item = $userList.find('[data-value="' + op.key + '"]');
|
||
|
|
$item.find('.name').text(data.name);
|
||
|
|
data.id = op.key;
|
||
|
|
$item.find('img').attr('src', getHeadImg(data));
|
||
|
|
$item = null;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (!$('.lr-im-bell').hasClass('open')) {
|
||
|
|
$('.lr-im-bell .point').show();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
// 查看聊天记录
|
||
|
|
$('#lr_im_look_msg_btn').on('click', function () {
|
||
|
|
learun.layerForm({
|
||
|
|
id: 'LookMsgIndex',
|
||
|
|
title: '查看聊天记录-' + $('#lr_im_msglist .lr-im-right .lr-im-touser').text(),
|
||
|
|
url: top.$.rootUrl + '/LR_IM/IMMsg/Index?userId=' + imUserId,
|
||
|
|
width: 800,
|
||
|
|
height: 500,
|
||
|
|
maxmin: true,
|
||
|
|
btn: null
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
$('.im-close').on('click', function () {
|
||
|
|
$('#lr_immsg_userlist .lr-scroll-box [data-value="' + imUserId + '"]').removeClass('active');
|
||
|
|
$('.lr-im-black-overlay').hide();
|
||
|
|
imUserId = '';
|
||
|
|
});
|
||
|
|
}
|
||
|
|
};
|
||
|
|
})(jQuery, top.learun);
|