selectSectionStaff_tow.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. var app = getApp()
  2. var that;
  3. Component({
  4. mixins: [],
  5. data: {
  6. userList: [],//人员集合
  7. all_user_list: [],//人员集合
  8. isShow: false,
  9. showId: 0,//显示的部门ID下员工
  10. terr: [
  11. { name: '全部', id: 0 }
  12. ],
  13. all_rule_list: [],
  14. rule_tree: [],
  15. selectUserId: [],
  16. isAllChecked: false,
  17. userData: [],//初次显示的数据源
  18. keyVal: ''
  19. },
  20. props: {
  21. onClose: (data) => console.log(data),
  22. onConfirm: (data) => console.log(data),
  23. selectUser: [],//默认选择
  24. isAllSelect: true,//是否多选
  25. isLeadership: false,//是否选择领导
  26. superior_list: [],//上级交叉领导集合
  27. islead: false,//是否只显示领导
  28. },
  29. didMount() {
  30. that = this;
  31. this.setData({ selectUserId: this.props.selectUser[0] ? this.props.selectUser : [] })
  32. var superior_list = this.props.superior_list;//将传进来的上级集合,转成集合里变成对象(原先是数组)【】
  33. var userData = app.globalData.userData.employee_detail;
  34. this.setData({
  35. userData: this.props.isLeadership ? userData.manage_scope : superior_list.length > 0 ? superior_list : userData.superior_list,
  36. terr: [{ name: '全部', id: 0 }]
  37. })
  38. this.getBmData();
  39. this.getData(0);
  40. },
  41. methods: {
  42. onReset() {
  43. this.setData({
  44. isVal: false,
  45. keyVal: ''
  46. })
  47. },
  48. onConfirm() {
  49. this.props.onConfirm(this.data.selectUserId);
  50. this.onClose();
  51. },
  52. //搜索
  53. bindKeyInput(e) {
  54. this.setData({
  55. keyVal: e.detail.value,
  56. isVal: e.detail.value ? true : false
  57. })
  58. },
  59. changeSection(e) {
  60. var item = e.target.dataset.item;
  61. var terr = this.data.terr;
  62. terr.push(item);
  63. if (item._child.length > 0) {
  64. that.setData({
  65. rule_tree: item._child,
  66. terr: terr,
  67. isAllChecked: false
  68. })
  69. } else {
  70. that.setData({
  71. rule_tree: [],
  72. terr: terr,
  73. isAllChecked: false
  74. })
  75. }
  76. this.getData(item.id);
  77. },
  78. //点击导航栏
  79. activeItem(e) {
  80. var item = e.target.dataset.item;
  81. var index = e.target.dataset.index;
  82. var terr = this.data.terr;
  83. if ((index + 1) == terr.length) { return false };
  84. this.setData({ rule_tree: [], userList: [], all_user_list: [] });
  85. if (index == 0) {
  86. this.setData({
  87. terr: [{ name: '全部', id: 0 }],
  88. rule_tree: this.data.all_rule_list,
  89. isAllChecked: false
  90. })
  91. } else {
  92. var arr = terr.slice(0, index + 1);
  93. this.setData({
  94. rule_tree: item._child,
  95. terr: arr,
  96. isAllChecked: false
  97. })
  98. }
  99. this.getData(item.id);
  100. },
  101. // 点击下一级
  102. openDown(e) {
  103. this.setData({ rule_tree: [] });
  104. var item = e.target.dataset.item;
  105. var terr = this.data.terr;
  106. terr.push(item);
  107. if (item._child.length > 0) {
  108. that.setData({
  109. rule_tree: item._child,
  110. terr: terr,
  111. isAllChecked: false
  112. })
  113. }
  114. this.getData(item.id);
  115. },
  116. getArrDifference(arr1, arr2) {
  117. var obj = {};
  118. arr1.concat(arr2).forEach(function (v, i, arr) {
  119. obj[v.id] = v;
  120. });
  121. return obj;
  122. },
  123. //单选择
  124. bindtap1(e) {
  125. this.setData({ selectUserId: [] });
  126. var index = e.target.dataset.index;
  127. var checked = `userList[${index}].checked`;
  128. var elm = this.data.userList[index].checked;
  129. var userList = this.data.userList;
  130. userList.map((item, item_index) => {
  131. if (item.checked) {
  132. var item_checked = `userList[${item_index}].checked`;
  133. this.setData({
  134. [item_checked]: false
  135. })
  136. }
  137. })
  138. var arr = [];
  139. arr.push(e.target.dataset.item);
  140. if (!elm) {
  141. this.setData({
  142. [checked]: !elm,
  143. selectUserId: arr
  144. })
  145. } else {
  146. this.setData({
  147. [checked]: !elm,
  148. selectUserId: []
  149. })
  150. }
  151. },
  152. //关闭
  153. onClose(e) {
  154. this.props.onClose();
  155. },
  156. //获取人员列表
  157. getData(dept_id) {
  158. this.setData({ userList: [], all_user_list: [] })
  159. app.$get("api/employee/list", { dept_id: dept_id }).then((res) => {
  160. var list = res.data.data.list;
  161. var selectUserId = this.data.selectUserId;
  162. var arr = [];
  163. var ids = [];
  164. if (that.props.lead) {//只显示管理者
  165. list.map((item) => {
  166. item.checked = false;
  167. if (item.name == 'admin' || item.name == 'creator' || item.name == 'point_manager'||item.name=='dept_manager') {
  168. }
  169. if (selectUserId.length > 0) {
  170. selectUserId.forEach(item2 => {
  171. if (item.id == item2.id) {
  172. item.checked = true;
  173. ids.push(item);
  174. }
  175. })
  176. }
  177. })
  178. } else {
  179. list.map((item) => {
  180. item.checked = false;
  181. if (selectUserId.length > 0) {
  182. selectUserId.forEach(item2 => {
  183. if (item.id == item2.id) {
  184. item.checked = true;
  185. ids.push(item);
  186. }
  187. })
  188. }
  189. })
  190. that.data.userData.map((item) => {
  191. list.map((item2) => {
  192. if (item.id == item2.id) {
  193. arr.push(item2);
  194. }
  195. })
  196. })
  197. }
  198. this.setData({
  199. userList: arr,
  200. all_user_list: arr,
  201. selectUserId: ids.length > 0 ? ids : this.data.selectUserId
  202. })
  203. })
  204. },
  205. //获取部门列表
  206. getBmData() {
  207. app.$get("api/department/tree", {}).then((res) => {
  208. var list = res.data.data.list;
  209. this.setData({
  210. rule_tree: list,
  211. all_rule_list: list
  212. })
  213. })
  214. },
  215. },
  216. });