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.

index.js 36 KiB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. /*
  2. * 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn)
  3. * Copyright (c) 2013-2018 上海力软信息技术有限公司
  4. * 创建人:力软-前端开发组
  5. * 日 期:2017.03.16
  6. * 描 述:经典风格皮肤
  7. */
  8. var bootstrap = function ($, learun) {
  9. "use strict";
  10. // 菜单操作
  11. var meuns = {
  12. init: function () {
  13. this.load();
  14. this.bind();
  15. },
  16. load: function () {
  17. var modulesTree = learun.clientdata.get(['modulesTree']);
  18. // 第一级菜单
  19. var parentId = '0';
  20. var modules = modulesTree[parentId] || [];
  21. var $firstmenus = $('<ul class="lr-first-menu-list"></ul>');
  22. for (var i = 0, l = modules.length; i < l; i++) {
  23. var item = modules[i];
  24. if (item.F_IsMenu == 1) {
  25. var $firstMenuItem = $('<li></li>');
  26. if (!!item.F_Description) {
  27. $firstMenuItem.attr('title', item.F_Description);
  28. }
  29. var menuItemHtml = '<a id="' + item.F_ModuleId + '" href="javascript:void(0);" class="lr-menu-item">';
  30. menuItemHtml += '<i class="' + item.F_Icon + ' lr-menu-item-icon"></i>';
  31. menuItemHtml += '<span class="lr-menu-item-text">' + item.F_FullName + '</span>';
  32. menuItemHtml += '<span class="lr-menu-item-arrow"></span></a>';
  33. $firstMenuItem.append(menuItemHtml);
  34. // 第二级菜单
  35. var secondModules = modulesTree[item.F_ModuleId] || [];
  36. var $secondMenus = $('<ul class="lr-second-menu-list"></ul>');
  37. var secondMenuHad = false;
  38. for (var j = 0, sl = secondModules.length; j < sl; j++) {
  39. var secondItem = secondModules[j];
  40. if (secondItem.F_IsMenu == 1) {
  41. secondMenuHad = true;
  42. var $secondMenuItem = $('<li></li>');
  43. if (!!secondItem.F_Description) {
  44. $secondMenuItem.attr('title', secondItem.F_Description);
  45. }
  46. var secondItemHtml = '<a id="' + secondItem.F_ModuleId + '" href="javascript:void(0);" class="lr-menu-item" >';
  47. secondItemHtml += '<i class="' + secondItem.F_Icon + ' lr-menu-item-icon"></i>';
  48. secondItemHtml += '<span class="lr-menu-item-text">' + secondItem.F_FullName + '</span>';
  49. secondItemHtml += '</a>';
  50. $secondMenuItem.append(secondItemHtml);
  51. // 第三级菜单
  52. var threeModules = modulesTree[secondItem.F_ModuleId] || [];
  53. var $threeMenus = $('<ul class="lr-three-menu-list"></ul>');
  54. var threeMenuHad = false;
  55. for (var m = 0, tl = threeModules.length; m < tl; m++) {
  56. var threeItem = threeModules[m];
  57. if (threeItem.F_IsMenu == 1) {
  58. threeMenuHad = true;
  59. var $threeMenuItem = $('<li></li>');
  60. $threeMenuItem.attr('title', threeItem.F_FullName);
  61. var threeItemHtml = '<a id="' + threeItem.F_ModuleId + '" href="javascript:void(0);" class="lr-menu-item" >';
  62. threeItemHtml += '<i class="' + threeItem.F_Icon + ' lr-menu-item-icon"></i>';
  63. threeItemHtml += '<span class="lr-menu-item-text">' + threeItem.F_FullName + '</span>';
  64. threeItemHtml += '</a>';
  65. $threeMenuItem.append(threeItemHtml);
  66. $threeMenus.append($threeMenuItem);
  67. // 第四级菜单
  68. var fourModules = modulesTree[threeItem.F_ModuleId] || [];
  69. var $fourMenus = $('<ul class="lr-four-menu-list"></ul>');
  70. var fourMenuHad = false;
  71. for (var fi = 0, fl = fourModules.length; fi < fl; fi++) {
  72. var fourItem = fourModules[fi];
  73. if (fourItem.F_IsMenu == 1) {
  74. fourMenuHad = true;
  75. var $fourMenuItem = $('<li></li>');
  76. $fourMenus.attr('title', fourItem.F_FullName);
  77. var fourItemHtml = '<a id="' + fourItem.F_ModuleId + '" href="javascript:void(0);" class="lr-menu-item" >';
  78. fourItemHtml += '<i class="' + fourItem.F_Icon + ' lr-menu-item-icon"></i>';
  79. fourItemHtml += '<span class="lr-menu-item-text">' + fourItem.F_FullName + '</span>';
  80. fourItemHtml += '</a>';
  81. $fourMenuItem.append(fourItemHtml);
  82. $fourMenus.append($fourMenuItem);
  83. }
  84. }
  85. if (fourMenuHad) {
  86. $threeMenuItem.addClass('lr-meun-had');
  87. $threeMenuItem.append($fourMenus);
  88. }
  89. }
  90. }
  91. if (threeMenuHad) {
  92. $secondMenuItem.addClass('lr-meun-had');
  93. $secondMenuItem.append($threeMenus);
  94. }
  95. $secondMenus.append($secondMenuItem);
  96. }
  97. }
  98. if (secondMenuHad) {
  99. $firstMenuItem.append($secondMenus);
  100. }
  101. $firstmenus.append($firstMenuItem);
  102. }
  103. }
  104. $('#lr_frame_menu').html($firstmenus);
  105. // 语言包翻译
  106. $('.lr-menu-item-text').each(function () {
  107. var $this = $(this);
  108. var text = $this.text();
  109. learun.language.get(text, function (text) {
  110. $this.text(text);
  111. $this.parent().parent().attr('title', text);
  112. });
  113. });
  114. },
  115. bind: function () {
  116. $("#lr_frame_menu").lrscroll();
  117. $("#lr_frame_menu .lr-first-menu-list > li").hover(function (e) {// 一级菜单选中的时候判断二级菜单的位置
  118. //$('#lr_frame_menu').width(4000);
  119. var $secondMenu = $(this).find('.lr-second-menu-list');
  120. var length = $secondMenu.find('li').length;
  121. if (length > 0) {
  122. $secondMenu.css('top', '0px');
  123. var secondMenuTop = $(this).offset().top + $secondMenu.height() + 23;
  124. var bodyHeight = $(window).height();
  125. if (secondMenuTop > bodyHeight) {
  126. $secondMenu.css('top', '-' + (secondMenuTop - bodyHeight) + 'px');
  127. }
  128. }
  129. }, function (e) {
  130. $('#lr_frame_menu').width(80);
  131. });
  132. $("#lr_frame_menu .lr-second-menu-list > li.lr-meun-had").hover(function (e) {// 二级菜单选中的时候判断三级菜单的位置
  133. var $ul = $(this).find('.lr-three-menu-list');
  134. $ul.css('top', '-9px');
  135. var ulTop = $(this).offset().top + $ul.height() + 23;
  136. var bodyHeight = $(window).height();
  137. if (ulTop > bodyHeight) {
  138. $ul.css('top', '-' + (ulTop - bodyHeight) + 'px');
  139. }
  140. });
  141. $("#lr_frame_menu .lr-three-menu-list > li.lr-meun-had").hover(function (e) {// 二级菜单选中的时候判断三级菜单的位置
  142. var $ul = $(this).find('.lr-four-menu-list');
  143. $ul.css('top', '-9px');
  144. var ulTop = $(this).offset().top + $ul.height() + 23;
  145. var bodyHeight = $(window).height();
  146. if (ulTop > bodyHeight) {
  147. $ul.css('top', '-' + (ulTop - bodyHeight) + 'px');
  148. }
  149. });
  150. // 添加点击事件
  151. $('#lr_frame_menu .lr-menu-item').on('click', function () {
  152. var $obj = $(this);
  153. var id = $obj.attr('id');
  154. var _module = learun.clientdata.get(['modulesMap', id]);
  155. switch (_module.F_Target) {
  156. case 'iframe':// 窗口
  157. if (learun.validator.isNotNull(_module.F_UrlAddress).code) {
  158. learun.frameTab.open(_module);
  159. }
  160. else {
  161. }
  162. break;
  163. }
  164. });
  165. //使用引导页
  166. var guide = learun.clientdata.get(['modulesMap', "44e91494-942d-482d-949e-ae8af5333956"]);
  167. if (guide) {
  168. //learun.frameTab.open(guide);
  169. learun.frameTab.open({ F_ModuleId: guide.F_ModuleId, F_Icon: guide.F_Icon, F_FullName: guide.F_FullName, F_UrlAddress: guide.F_UrlAddress }, true);
  170. }
  171. }
  172. };
  173. meuns.init();
  174. var companyMap = {};
  175. var departmentMap = {};
  176. var userMap = {};
  177. var sysUserMap = {};
  178. var imUserId = '';
  179. var getHeadImg = function (user) {
  180. var url = top.$.rootUrl;
  181. switch (user.img) {
  182. case '0':
  183. url += '/Content/images/head/on-girl.jpg';
  184. break;
  185. case '1':
  186. url += '/Content/images/head/on-boy.jpg';
  187. break;
  188. default:
  189. url += '/LR_OrganizationModule/User/GetImg?userId=' + user.id;
  190. break;
  191. }
  192. return url;
  193. };
  194. // 发送聊天信息
  195. var sendMsg = function (msg, time) {
  196. var loginInfo = learun.clientdata.get(['userinfo']);
  197. learun.clientdata.getAsync('user', {
  198. key: loginInfo.userId,
  199. callback: function (data, op) {
  200. data.id = op.key;
  201. var _html = '\
  202. <div class="im-me">\
  203. <div class="headimg"><img src="'+ getHeadImg(data) + '"></div>\
  204. <div class="arrow"></div>\
  205. <span class="content">'+ msg + '</span>\
  206. </div>';
  207. if (time && time != '') {
  208. $('.lr-im-msgcontent .lr-scroll-box').append('<div class="im-time">' + time + '</div>');
  209. }
  210. $('.lr-im-msgcontent .lr-scroll-box').append(_html);
  211. $('.lr-im-msgcontent').lrscrollSet('moveBottom');
  212. }
  213. });
  214. };
  215. // 接收聊天消息
  216. var revMsg = function (userId, msg, time) {
  217. learun.clientdata.getAsync('user', {
  218. key: userId,
  219. callback: function (data, op) {
  220. data.id = op.key;
  221. var _html = '\
  222. <div class="im-other">\
  223. <div class="headimg"><img src="'+ getHeadImg(data) + '"></div>\
  224. <div class="arrow"></div>\
  225. <span class="content">'+ msg + '</span>\
  226. </div>';
  227. if (time && time != '') {
  228. $('.lr-im-msgcontent .lr-scroll-box').append('<div class="im-time">' + time + '</div>');
  229. }
  230. $('.lr-im-msgcontent .lr-scroll-box').append(_html);
  231. $('.lr-im-msgcontent').lrscrollSet('moveBottom');
  232. }
  233. });
  234. };
  235. // 即时通讯
  236. var im = {
  237. init: function () {
  238. this.bind();
  239. this.load();
  240. },
  241. load: function () {
  242. // 获取系统注册的
  243. // 获取下公司列表
  244. learun.clientdata.getAllAsync('company', {
  245. callback: function (data) {
  246. $.each(data, function (_id, _item) {
  247. companyMap[_item.parentId] = companyMap[_item.parentId] || [];
  248. _item.id = _id;
  249. companyMap[_item.parentId].push(_item);
  250. });
  251. var $list = $('#lr_im_content_userlist .lr-scroll-box');
  252. $.each(companyMap["0"], function (_index, _item) {
  253. var _html = '\
  254. <div class="lr-im-company-item">\
  255. <div class="lr-im-item-name lr-im-company" data-value="'+ _item.id + '" data-deep="0" >\
  256. <i class="fa fa-angle-right"></i>'+ _item.name + '\
  257. </div>\
  258. </div>';
  259. $list.append(_html);
  260. });
  261. // 获取部门列表
  262. learun.clientdata.getAllAsync('department', {
  263. callback: function (data) {
  264. $.each(data, function (_id, _item) {
  265. _item.id = _id;
  266. if (_item.parentId == "0") {
  267. departmentMap[_item.companyId] = departmentMap[_item.companyId] || [];
  268. departmentMap[_item.companyId].push(_item);
  269. }
  270. else {
  271. departmentMap[_item.parentId] = departmentMap[_item.parentId] || [];
  272. departmentMap[_item.parentId].push(_item);
  273. }
  274. });
  275. // 获取人员数据
  276. learun.clientdata.getAllAsync('user', {
  277. callback: function (data) {
  278. $.each(data, function (_id, _item) {
  279. _item.id = _id;
  280. if (_item.departmentId) {
  281. userMap[_item.departmentId] = userMap[_item.departmentId] || [];
  282. userMap[_item.departmentId].push(_item);
  283. }
  284. else if (_item.companyId) {
  285. userMap[_item.companyId] = userMap[_item.companyId] || [];
  286. userMap[_item.companyId].push(_item);
  287. }
  288. });
  289. // 获取最近联系人列表
  290. learun.im.getContacts(function (data, sysUserList) {
  291. $.each(sysUserList, function (_index, _item) {
  292. sysUserMap[_item.F_Code] = _item;
  293. });
  294. var $userList = $('#lr_immsg_userlist .lr-scroll-box');
  295. $.each(data, function (_index, _item) {
  296. var html = ' <div class="userlist-item ' + (_item.F_IsRead == '1' ? 'imHasMsg' : '') + '" data-value="' + _item.F_OtherUserId + '" >';
  297. if (sysUserMap[_item.F_OtherUserId]) {
  298. html += '<div class="photo"><i class="' + sysUserMap[_item.F_OtherUserId].F_Icon + '" ></i>';
  299. }
  300. else {
  301. html += '<div class="photo"><img src="' + top.$.rootUrl + '/Content/images/head/on-boy.jpg" >';
  302. }
  303. html += '<div class="point"></div></div>';
  304. html += '</div>';
  305. $userList.append(html);
  306. if (sysUserMap[_item.F_OtherUserId]) {
  307. var _$item = $userList.find('[data-value="' + _item.F_OtherUserId + '"]');
  308. _$item.attr('title', sysUserMap[_item.F_OtherUserId].F_Name);
  309. if (_index == 0) {
  310. _$item.trigger('click');
  311. }
  312. _$item = null;
  313. }
  314. else {
  315. learun.clientdata.getAsync('user', {
  316. key: _item.F_OtherUserId,
  317. index: _index,
  318. callback: function (data, op) {
  319. var $item = $userList.find('[data-value="' + op.key + '"]');
  320. $item.attr('title', data.name);
  321. data.id = op.key;
  322. $item.find('img').attr('src', getHeadImg(data));
  323. if (op.index == 0) {
  324. $item.trigger('click');
  325. }
  326. $item = null;
  327. }
  328. });
  329. }
  330. });
  331. });
  332. }
  333. });
  334. }
  335. });
  336. }
  337. });
  338. },
  339. bind: function () {
  340. // 最近消息 与 联系人之间的切换
  341. $('.lr-im-title .title-item').on('click', function () {
  342. var $this = $(this);
  343. if (!$this.hasClass('active')) {
  344. $('.lr-im-body>.active').removeClass('active');
  345. $('.lr-im-title>.active').removeClass('active');
  346. $this.addClass('active');
  347. var v = $this.attr('data-value');
  348. $('#' + v).addClass('active');
  349. }
  350. });
  351. // 打开关闭聊天窗
  352. $('.lr-im-bell').on('click', function () {
  353. var $this = $(this);
  354. if ($this.hasClass('open')) {
  355. $this.removeClass('open');
  356. $('.lr-im-body').removeClass('open');
  357. }
  358. else {
  359. $this.addClass('open');
  360. $('.lr-im-bell .point').hide();
  361. $('.lr-im-body').addClass('open');
  362. }
  363. });
  364. // 联系人
  365. $('#lr_im_content_userlist').lrscroll();
  366. $('#lr_immsg_userlist').lrscroll();
  367. $('.lr-im-msgcontent').lrscroll();
  368. // 联系人列表点击
  369. $('#lr_im_content_userlist .lr-scroll-box').on('click', function (e) {
  370. e = e || window.event;
  371. var et = e.target || e.srcElement;
  372. var $et = $(et);
  373. if (et.tagName == 'IMG' || et.tagName == 'I') {
  374. $et = $et.parent();
  375. }
  376. if ($et.hasClass('lr-im-company')) {// 点击公司项
  377. // 判断是否是打开的状态
  378. if ($et.hasClass('open')) {
  379. $et.removeClass('open');
  380. $et.parent().find('.lr-im-user-list').remove();
  381. } else {
  382. var id = $et.attr('data-value');
  383. var deep = parseInt($et.attr('data-deep'));
  384. var $list = $('<div class="lr-im-user-list" ></div>');
  385. $list.css({ 'padding-left': '10px' });
  386. var flag = false;
  387. // 加载员工
  388. var loginInfo = learun.clientdata.get(['userinfo']);
  389. $.each(userMap[id] || [], function (_index, _item) {
  390. if (_item.id != loginInfo.userId) {
  391. var _html = '\
  392. <div class="lr-im-company-item">\
  393. <div class="lr-im-item-name lr-im-user" data-value="'+ _item.id + '" >\
  394. <img src="'+ getHeadImg(_item) + '" >' + _item.name + '\
  395. </div>\
  396. </div>';
  397. $list.append(_html);
  398. flag = true;
  399. }
  400. });
  401. // 加载部门
  402. $.each(departmentMap[id] || [], function (_index, _item) {
  403. var _html = '\
  404. <div class="lr-im-company-item">\
  405. <div class="lr-im-item-name lr-im-department" data-value="'+ _item.id + '" data-deep="' + (deep + 1) + '" >\
  406. <i class="fa fa-angle-right"></i>'+ _item.name + '\
  407. </div>\
  408. </div>';
  409. $list.append(_html);
  410. flag = true;
  411. });
  412. // 加载下属公司
  413. $.each(companyMap[id] || [], function (_index, _item) {
  414. var _html = '\
  415. <div class="lr-im-company-item">\
  416. <div class="lr-im-item-name lr-im-company" data-value="'+ _item.id + '" data-deep="' + (deep + 1) + '" >\
  417. <i class="fa fa-angle-right"></i>'+ _item.name + '\
  418. </div>\
  419. </div>';
  420. $list.append(_html);
  421. flag = true;
  422. });
  423. if (flag) {
  424. $et.parent().append($list);
  425. }
  426. $et.addClass('open');
  427. }
  428. return false;
  429. }
  430. else if ($et.hasClass('lr-im-department')) {
  431. // 判断是否是打开的状态
  432. if ($et.hasClass('open')) {
  433. $et.removeClass('open');
  434. $et.parent().find('.lr-im-user-list').remove();
  435. } else {
  436. var id = $et.attr('data-value');
  437. var deep = parseInt($et.attr('data-deep'));
  438. var $list = $('<div class="lr-im-user-list" ></div>');
  439. $list.css({ 'padding-left': '10px' });
  440. var flag = false;
  441. // 加载员工
  442. var loginInfo = learun.clientdata.get(['userinfo']);
  443. $.each(userMap[id] || [], function (_index, _item) {
  444. if (_item.id != loginInfo.userId) {
  445. var _html = '\
  446. <div class="lr-im-company-item">\
  447. <div class="lr-im-item-name lr-im-user" data-value="'+ _item.id + '" >\
  448. <img src="'+ getHeadImg(_item) + '" >' + _item.name + '\
  449. </div>\
  450. </div>';
  451. $list.append(_html);
  452. flag = true;
  453. }
  454. });
  455. // 加载部门
  456. $.each(departmentMap[id] || [], function (_index, _item) {
  457. var _html = '\
  458. <div class="lr-im-company-item">\
  459. <div class="lr-im-item-name lr-im-department" data-value="'+ _item.id + '" data-deep="' + (deep + 1) + '" >\
  460. <i class="fa fa-angle-right"></i>'+ _item.name + '\
  461. </div>\
  462. </div>';
  463. $list.append(_html);
  464. flag = true;
  465. });
  466. if (flag) {
  467. $et.parent().append($list);
  468. }
  469. $et.addClass('open');
  470. }
  471. }
  472. else if ($et.hasClass('lr-im-user')) {
  473. // 如果是用户列表
  474. // 1.打开聊天窗口
  475. // 2.添加一条最近联系人数据(如果没有添加的话)
  476. // 3.获取最近的20条聊天数据或者最近的聊天信息
  477. var id = $et.attr('data-value');
  478. var $userList = $('#lr_immsg_userlist .lr-scroll-box');
  479. var $userItem = $userList.find('[data-value="' + id + '"]');
  480. // 更新下最近的联系人列表数据
  481. $('.lr-im-title .title-item').eq(0).trigger('click');
  482. $('#lr_im_msglist .lr-im-right').removeClass('lr-im-nouser');
  483. imUserId = id;
  484. if ($userItem.length > 0) {
  485. $userList.prepend($userItem);
  486. $userItem.trigger('click');
  487. }
  488. else {
  489. $userList.find('.active').removeClass('active');
  490. var imgurl = $et.find('img').attr('src');
  491. var _html = '\
  492. <div class="userlist-item" data-value="'+ id + '" >\
  493. <div class="photo"><img src="'+ imgurl + '" >\
  494. <div class="point"></div></div>\
  495. </div>';
  496. $userList.prepend(_html);
  497. // 获取人员数据
  498. learun.clientdata.getAsync('user', {
  499. key: id,
  500. callback: function (data, op) {
  501. $userList.find('[data-value="' + op.key + '"]').attr('title', data.name).addClass('active');
  502. $('#lr_im_msglist .lr-im-right .lr-im-touser').text(data.name);
  503. }
  504. });
  505. learun.im.addContacts(id);
  506. $('.lr-im-msgcontent .lr-scroll-box').html('');
  507. }
  508. $('#lr_im_input').val('');
  509. $('#lr_im_input').select();
  510. }
  511. });
  512. // 最近联系人列表点击
  513. $('#lr_immsg_userlist .lr-scroll-box').on('click', function (e) {
  514. e = e || window.event;
  515. var et = e.target || e.srcElement;
  516. var $et = $(et);
  517. if (!$et.hasClass('userlist-item')) {
  518. $et = $et.parents('.userlist-item');
  519. }
  520. if ($et.length > 0) {
  521. if (!$et.hasClass('active')) {
  522. var name = $et.attr('title');
  523. imUserId = $et.attr('data-value');
  524. $('#lr_immsg_userlist .lr-scroll-box .active').removeClass('active');
  525. $et.addClass('active');
  526. $('#lr_im_msglist .lr-im-right .lr-im-touser').text(name);
  527. $('#lr_im_msglist .lr-im-right').removeClass('lr-im-nouser');
  528. $('#lr_im_input').val('');
  529. $('#lr_im_input').select();
  530. $('.lr-im-msgcontent .lr-scroll-box').html('');
  531. // 获取聊天信息
  532. learun.im.getMsgList(imUserId, function (data) {
  533. var len = data.length;
  534. if (len > 0) {
  535. for (var i = len - 1; i >= 0; i--) {
  536. var _item = data[i];
  537. learun.clientdata.getAsync('user', {
  538. key: _item.userId,
  539. msg: _item.content,
  540. time: _item.time,
  541. callback: function (data, op) {
  542. data.id = op.key;
  543. var loginInfo = learun.clientdata.get(['userinfo']);
  544. var _html = '\
  545. <div class="'+ (loginInfo.userId == op.key ? 'im-me' : 'im-other') + '">\
  546. <div class="headimg"><img src="'+ getHeadImg(data) + '"></div>\
  547. <div class="arrow"></div>\
  548. <span class="content">'+ op.msg + '</span>\
  549. </div>';
  550. $('.lr-im-msgcontent .lr-scroll-box').prepend(_html);
  551. $('.lr-im-msgcontent .lr-scroll-box').prepend('<div class="im-time">' + op.time + '</div>');
  552. }
  553. });
  554. }
  555. $('.lr-im-msgcontent').lrscrollSet('moveBottom');
  556. }
  557. }, $et.hasClass('imHasMsg'));
  558. $et.removeClass('imHasMsg');
  559. learun.im.updateContacts(imUserId);
  560. }
  561. }
  562. });
  563. // 联系人搜索
  564. $('.lr-im-search input').on("keypress", function (e) {
  565. e = e || window.event;
  566. if (e.keyCode == "13") {
  567. var $this = $(this);
  568. var keyword = $this.val();
  569. var $list = $('#lr_im_content_userlist .lr-scroll-box');
  570. $list.html("");
  571. if (keyword) {
  572. learun.clientdata.getAllAsync('user', {
  573. callback: function (data) {
  574. var loginInfo = learun.clientdata.get(['userinfo']);
  575. $.each(data, function (_index, _item) {
  576. if (_index != loginInfo.userId) {
  577. if (_item.name.indexOf(keyword) != -1) {
  578. _item.id = _index;
  579. var _html = '\
  580. <div class="lr-im-company-item">\
  581. <div class="lr-im-item-name lr-im-user" data-value="'+ _item.id + '" >\
  582. <img src="'+ getHeadImg(_item) + '" >' + _item.name + '\
  583. </div>\
  584. </div>';
  585. $list.append(_html);
  586. }
  587. }
  588. });
  589. }
  590. });
  591. }
  592. else {
  593. $.each(companyMap["0"], function (_index, _item) {
  594. var _html = '\
  595. <div class="lr-im-company-item">\
  596. <div class="lr-im-item-name lr-im-company" data-value="'+ _item.id + '" data-deep="0" >\
  597. <i class="fa fa-angle-right"></i>'+ _item.name + '\
  598. </div>\
  599. </div>';
  600. $list.append(_html);
  601. });
  602. }
  603. }
  604. });
  605. // 发送消息
  606. $('#lr_im_input').on("keypress", function (e) {
  607. e = e || window.event;
  608. if (e.keyCode == "13") {
  609. var text = $(this).val();
  610. $(this).val('');
  611. if (text.replace(/(^\s*)|(\s*$)/g, "") != '') {
  612. var time = learun.im.sendMsg(imUserId, text);
  613. sendMsg(text, time);
  614. }
  615. return false;
  616. }
  617. });
  618. // 注册消息接收
  619. learun.im.registerRevMsg(function (userId, msg, dateTime) {
  620. // 判断当前账号是否打开聊天窗口
  621. if (userId == imUserId) {
  622. revMsg(userId, msg, dateTime);
  623. learun.im.updateContacts(userId);
  624. }
  625. else {
  626. var $userList = $('#lr_immsg_userlist .lr-scroll-box');
  627. var $userItem = $userList.find('[data-value="' + userId + '"]');
  628. $('#lr_im_msglist .lr-im-right').removeClass('lr-im-nouser');
  629. if ($userItem.length > 0) {
  630. $userList.prepend($userItem);
  631. if (!$userItem.hasClass('imHasMsg')) {
  632. $userItem.addClass('imHasMsg');
  633. }
  634. }
  635. else {
  636. var html = '<div class="userlist-item imHasMsg" data-value="' + userId + '" >';
  637. if (sysUserMap[userId]) {
  638. html += '<div class="photo"><i class="' + sysUserMap[userId].F_Icon + '" ></i>';
  639. }
  640. else {
  641. html += '<div class="photo"><img src="' + top.$.rootUrl + '/Content/images/head/on-boy.jpg" >';
  642. }
  643. html += '<div class="point"></div></div>';
  644. html += '</div>';
  645. $userList.prepend(html);
  646. if (sysUserMap[userId]) {
  647. var _$item = $userList.find('[data-value="' + userId + '"]');
  648. _$item.attr('title', sysUserMap[userId].F_Name);
  649. _$item = null;
  650. }
  651. else {
  652. learun.clientdata.getAsync('user', {
  653. key: userId,
  654. callback: function (data, op) {
  655. var $item = $userList.find('[data-value="' + op.key + '"]');
  656. $item.attr('title', data.name);
  657. data.id = op.key;
  658. $item.find('img').attr('src', getHeadImg(data));
  659. $item = null;
  660. }
  661. });
  662. }
  663. var _$userItem = $userList.find('.userlist-item');
  664. if (_$userItem.length == 1) {
  665. _$userItem.trigger('click');
  666. }
  667. }
  668. $('#lr_im_input').val('');
  669. $('#lr_im_input').select();
  670. }
  671. if (!$('.lr-im-bell').hasClass('open')) {
  672. $('.lr-im-bell .point').show();
  673. }
  674. });
  675. // 查看聊天记录
  676. $('#lr_im_look_msg_btn').on('click', function () {
  677. learun.layerForm({
  678. id: 'LookMsgIndex',
  679. title: '查看聊天记录-' + $('#lr_im_msglist .lr-im-right .lr-im-touser').text(),
  680. url: top.$.rootUrl + '/LR_IM/IMMsg/Index?userId=' + imUserId,
  681. width: 800,
  682. height: 500,
  683. maxmin: true,
  684. btn: null
  685. });
  686. });
  687. }
  688. };
  689. im.init();
  690. };