selectSectionStaff_tow.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  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.islead) {//只显示管理者
  165. list.map((item) => {
  166. item.checked = false;
  167. var isManager=false;
  168. item.role_list.forEach(roleItem=>{
  169. if (roleItem.name == 'admin' || roleItem.name == 'creator' || roleItem.name == 'point_manager' || roleItem.name == 'dept_manager') {
  170. isManager=true;
  171. }
  172. })
  173. if (isManager) {
  174. arr.push(item);
  175. if (selectUserId.length > 0) {
  176. selectUserId.forEach(item2 => {
  177. if (item.id == item2.id) {
  178. item.checked = true;
  179. ids.push(item);
  180. }
  181. })
  182. }
  183. }
  184. })
  185. } else {
  186. list.map((item) => {
  187. item.checked = false;
  188. if (selectUserId.length > 0) {
  189. selectUserId.forEach(item2 => {
  190. if (item.id == item2.id) {
  191. item.checked = true;
  192. ids.push(item);
  193. }
  194. })
  195. }
  196. })
  197. that.data.userData.map((item) => {
  198. list.map((item2) => {
  199. if (item.id == item2.id) {
  200. arr.push(item2);
  201. }
  202. })
  203. })
  204. }
  205. this.setData({
  206. userList: arr,
  207. all_user_list: arr,
  208. selectUserId: ids.length > 0 ? ids : this.data.selectUserId
  209. })
  210. })
  211. },
  212. //获取部门列表
  213. getBmData() {
  214. app.$get("api/department/tree", {}).then((res) => {
  215. var list = res.data.data.list;
  216. this.setData({
  217. rule_tree: list,
  218. all_rule_list: list
  219. })
  220. })
  221. },
  222. },
  223. });