ganbudanan.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. // 脚本文件
  2. $(document).ready(function() {
  3. var currentLevel = 0; // 当前层级
  4. var breadcrumbs = []; // 面包屑数组
  5. var breadcrumbIds = []; // 面包屑数组
  6. function loadOrganizations(parentId) {
  7. var param = {"orgId": parentId, "checkType":"1","isOfficer":1};
  8. mbos.eas.invokeScript({
  9. name: "commonOSFservice",
  10. param: ['GetAdminInfoService', JSON.stringify(param)],
  11. success: function (res) {
  12. if (res && res.length > 0) {
  13. renderOrganizations(res);
  14. }else{
  15. //调用加载员工的方法
  16. loadEmployees(parentId);
  17. }
  18. },
  19. error: function (data) {
  20. if (typeof (data) == "string") {
  21. mbos.msgBox.showError("", data);
  22. } else {
  23. mbos.msgBox.showError({ ...data, msg: "" });
  24. }
  25. }
  26. })
  27. }
  28. function renderOrganizations(organizations) {
  29. $("#sub-organization-label").text("下级部门");
  30. $('#organization-tree').empty();
  31. organizations.forEach(function(org) {
  32. var $orgContainer = $('<span>');
  33. var $orgName = $('<span>').text(org.name).addClass('org-name');
  34. var $orgCount = $('<span>').text(' (共'+org.totalCount+'人)').addClass('org-count');
  35. $orgContainer.append($orgName).append($orgCount);
  36. var $li = $('<li>').append($orgContainer).addClass('organization-item')
  37. $li.click(function() {
  38. if ($(this).hasClass('selected')) {
  39. loadEmployees(org.id); // 加载员工信息
  40. } else {
  41. loadOrganizations(org.id); // 加载下一级组织
  42. updateBreadcrumbs(org.name, org.id);
  43. }
  44. });
  45. // 只有当org.count不为0时才创建$countContainer
  46. if (org.count > 0) {
  47. // 创建一个容器
  48. var $countContainer = $('<span>');
  49. // 创建 org.count 的元素并设置为浅蓝色
  50. var $count = $('<span>').text('本层级人数: '+org.count+'人')
  51. .css('color', '#007bff'); // 浅蓝色
  52. // var $separator = $('<span>').text(' >')
  53. // .css('color', '#007bff'); // 浅蓝色
  54. // 将两个元素添加到容器中
  55. // $countContainer.append($count).append($separator);
  56. $countContainer.append($count) ;
  57. $countContainer.click(function(e) {
  58. e.stopPropagation(); // 阻止事件冒泡
  59. loadEmployees(org.id); // 查询当前组织下的所有员工
  60. });
  61. // 将计数添加到列表项中
  62. $li.append($countContainer);
  63. }
  64. if (currentLevel > 0 && !org.hasChildren) {
  65. $li.addClass('selected');
  66. }
  67. $('#organization-tree').append($li);
  68. });
  69. }
  70. function updateBreadcrumbs(name, orgId) {
  71. breadcrumbs.push(name);
  72. breadcrumbIds.push(orgId);
  73. renderBreadcrumbs();
  74. }
  75. function renderBreadcrumbs() {
  76. $('#breadcrumb-container').empty();
  77. breadcrumbs.forEach(function(crumb, index) {
  78. var $span = $('<span>').addClass('breadcrumb-item')
  79. .text(crumb)
  80. .click(function() {
  81. breadcrumbs = breadcrumbs.slice(0, index + 1);
  82. breadcrumbIds = breadcrumbIds.slice(0, index + 1);
  83. loadOrganizations(breadcrumbIds[breadcrumbIds.length - 1]);
  84. // 隐藏当前面包屑后面的分隔符和面包屑
  85. $('#breadcrumb-container').find('.breadcrumb-item').slice(index + 1).remove();
  86. $('#breadcrumb-container').find('.breadcrumb-separator').slice(index).remove();
  87. });
  88. // 添加“ > ”作为分隔符
  89. if (index > 0) {
  90. $('#breadcrumb-container').append($('<span>').addClass('breadcrumb-separator').text(' > '));
  91. }
  92. $('#breadcrumb-container').append($span);
  93. });
  94. }
  95. function loadEmployees(orgId,perName) {
  96. var param = {"orgId": orgId, "perName": perName,"checkType":"1",isOfficer:1};
  97. mbos.eas.invokeScript({
  98. name: "commonOSFservice",
  99. param: ['getPersonFromOrgService', JSON.stringify(param)],
  100. success: function (res) {
  101. if (res) {
  102. renderEmployees(res);
  103. } else {
  104. mbos.msgBox.showError("无组织数据", data);
  105. }
  106. },
  107. error: function (data) {
  108. if (typeof (data) == "string") {
  109. mbos.msgBox.showError("", data);
  110. } else {
  111. mbos.msgBox.showError({ ...data, msg: "" });
  112. }
  113. }
  114. })
  115. }
  116. function renderEmployees(employees) {
  117. $("#sub-organization-label").text("部门成员");
  118. $('#organization-tree').empty();
  119. employees.forEach(function(emp) {
  120. // 创建一个外部容器来包裹员工信息
  121. var $li = $('<li>').addClass('organization-item').attr('empId', emp.fid)
  122. .click(function() {
  123. var that = this;
  124. var empId = $(that).attr('empId');
  125. // console.log(empId);
  126. //测试环境
  127. // var eidVal = 'ding5208b4333b1d308b4ac5d6980864d335';
  128. //正式环境
  129. var eidVal = 'ding68ce57ecf9d937b324f2f5cc6abecb85';
  130. // 跳转到员工信息详情页面
  131. window.location.href = 'https://mbos.kdeascloud.com/mbos/page/loadPage?appid='+eidVal
  132. +'&path=archive9000&name=archive9000.navui&isOfficer=1&personId=' + encodeURIComponent(empId);
  133. });
  134. // 创建员工信息的容器
  135. var $infoDiv = $('<div>').addClass('info-div');
  136. // 增加员工编码
  137. var $numberSpan = $('<span>').text(emp.number).addClass('number-span');
  138. // 创建一个用于员工姓名和职位的容器
  139. var $detailsDiv = $('<div>').addClass('details-div');
  140. // 增加员工姓名
  141. var $nameSpan = $('<span>').text(emp.name).addClass('name-span');
  142. // 增加bumen信息
  143. var $posSpan = $('<span>').text(emp.depname+' ('+emp.posname+')').addClass('pos-span');
  144. // 将员工姓名和职位信息添加到详细信息容器中
  145. $detailsDiv.append($nameSpan).append($posSpan);
  146. // 将员工编码和详细信息容器添加到信息容器中
  147. $infoDiv.append($numberSpan).append($detailsDiv);
  148. // 将整个信息容器添加到列表项中
  149. $li.append($infoDiv);
  150. // 将列表项添加到组织树中
  151. $('#organization-tree').append($li);
  152. });
  153. }
  154. // 初始化加载一级组织
  155. loadOrganizations('1');
  156. updateBreadcrumbs("组织架构","1");
  157. // 搜索框事件绑定
  158. $('#search-button').on('click', function() {
  159. var searchText = $('#search-box').val().toLowerCase();
  160. loadEmployees('',searchText);
  161. });
  162. });