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.
 
 
 
 
 
 

910 lines
42 KiB

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