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.
 
 
 
 
 
 

164 lines
7.1 KiB

  1. (function () {
  2. var companyMap = {};
  3. var departmentMap = {};
  4. var departmentData = {};
  5. var page = {
  6. isScroll: true,
  7. loadDepartment: function (map, id, $list) {
  8. $.each(map[id] || [], function (_index, _item) {
  9. departmentData[_item.id] = _item;
  10. var _$html = $('\
  11. <div class="lr-list-item" >\
  12. <a class="lr-nav-left department" data-value="'+ _item.id + '" >【部门】 ' + _item.name + '</a>\
  13. </div>');
  14. $list.append(_$html);
  15. if (map[_item.id] && map[_item.id].length > 0) {
  16. _$html.find('a').addClass('bottom');
  17. var _$list = $('<div class="lr-user-list" ></div>');
  18. $list.css({ 'padding-left': '10px' });
  19. page.loadCompany(map, _item.id, _$list);
  20. _$html.append(_$list);
  21. }
  22. });
  23. },
  24. init: function ($page, param) {
  25. // 部门列表数据初始化
  26. learun.clientdata.getAll('department', {
  27. callback: function (data) {
  28. departmentData = data;
  29. var $list = $page.find('#lr_select_department_list');
  30. $.each(data, function (_id, _item) {
  31. _item.id = _id;
  32. if (_item.parentId === "0") {
  33. departmentMap[_item.companyId] = departmentMap[_item.companyId] || [];
  34. departmentMap[_item.companyId].push(_item);
  35. }
  36. else {
  37. departmentMap[_item.parentId] = departmentMap[_item.parentId] || [];
  38. departmentMap[_item.parentId].push(_item);
  39. }
  40. });
  41. if (param.op.departmentId) {
  42. departmentData = {};
  43. page.loadDepartment(departmentMap, param.op.departmentId, $list);
  44. $list = null;
  45. }
  46. else if (param.op.companyId) {
  47. departmentData = {};
  48. page.loadDepartment(departmentMap, param.op.companyId, $list);
  49. $list = null;
  50. }
  51. else {
  52. learun.clientdata.getAll('company', {
  53. callback: function (data) {
  54. $.each(data, function (_id, _item) {
  55. companyMap[_item.parentId] = companyMap[_item.parentId] || [];
  56. _item.id = _id;
  57. companyMap[_item.parentId].push(_item);
  58. });
  59. $.each(companyMap["0"], function (_index, _item) {
  60. var _html = '\
  61. <div class="lr-list-item" >\
  62. <a class="lr-nav-left company" data-value="'+ _item.id + '" >' + _item.name + '</a>\
  63. </div>';
  64. $list.append(_html);
  65. });
  66. $list = null;
  67. }
  68. });
  69. }
  70. }
  71. });
  72. // 注册点击事件
  73. $page.find('#lr_select_department_list').on('tap', function (e) {
  74. e = e || window.event;
  75. var et = e.target || e.srcElement;
  76. var $et = $(et);
  77. if (et.tagName === 'IMG' || et.tagName === 'SPAN') {
  78. $et = $et.parent();
  79. }
  80. if ($et.hasClass('company')) {
  81. if ($et.hasClass('bottom')) {
  82. $et.removeClass('bottom');
  83. $et.parent().find('.lr-user-list').remove();
  84. }
  85. else {
  86. var id = $et.attr('data-value');
  87. var $list = $('<div class="lr-user-list" ></div>');
  88. $list.css({ 'padding-left': '10px' });
  89. // 加载部门
  90. page.loadDepartment(departmentMap, id, $list);
  91. // 加载公司
  92. $.each(companyMap[id] || [], function (_index, _item) {
  93. var _html = '\
  94. <div class="lr-list-item" >\
  95. <a class="lr-nav-left company" data-value="'+ _item.id + '" >' + _item.name + '</a>\
  96. </div>';
  97. $list.append(_html);
  98. });
  99. if (companyMap[id] || departmentMap[id]) {
  100. $et.parent().append($list);
  101. }
  102. $et.addClass('bottom');
  103. }
  104. return false;
  105. }
  106. else if ($et.hasClass('department')) {
  107. param.callback(departmentData[$et.attr('data-value')], param.op, param.$this);
  108. learun.nav.closeCurrent();
  109. return false;
  110. }
  111. });
  112. // 搜索事件
  113. $page.find('input').on('input propertychange', function () {
  114. var keyword = $(this).val();
  115. var $list = $('#lr_select_department_list');
  116. if (keyword) {
  117. $list.html("");
  118. $.each(departmentData, function (_index, _item) {
  119. if (_item.name.indexOf(keyword) !== -1) {
  120. var _html = '\
  121. <div class="lr-list-item" >\
  122. <a class="lr-nav-left department" data-value="'+ _item.id + '" >【部门】' + _item.name + '</a>\
  123. </div>';
  124. $list.append(_html);
  125. }
  126. });
  127. }
  128. else {
  129. $list.html("");
  130. if (param.op.departmentId) {
  131. page.loadDepartment(departmentMap, param.op.departmentId, $list);
  132. }
  133. else if (param.op.companyId) {
  134. page.loadDepartment(departmentMap, param.op.companyId, $list);
  135. }
  136. else {
  137. $.each(companyMap["0"], function (_index, _item) {
  138. var _html = '\
  139. <div class="lr-list-item" >\
  140. <a class="lr-nav-left company" data-value="'+ _item.id + '" >' + _item.name + '</a>\
  141. </div>';
  142. $list.append(_html);
  143. });
  144. }
  145. }
  146. });
  147. },
  148. destroy: function (pageinfo) {
  149. companyMap = {};
  150. departmentMap = {};
  151. departmentData = null;
  152. }
  153. };
  154. return page;
  155. })();