selectSectionStaff.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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. isItem: true,
  18. searchVal: '',
  19. isAll: true,
  20. },
  21. props: {
  22. onClose: (data) => console.log(data),
  23. onConfirm: (data) => console.log(data),
  24. selectUser: [],
  25. isAllSelect: true,//是否多选
  26. },
  27. didMount() {
  28. that = this;
  29. this.setData({
  30. selectUserId: this.props.selectUser,
  31. isAll: this.props.isAllSelect
  32. })
  33. this.getData(0);
  34. this.getBmData();
  35. },
  36. didUpdate() { },
  37. didUnmount() { },
  38. methods: {
  39. onConfirm() {
  40. this.props.onConfirm(this.data.selectUserId);
  41. this.onClose();
  42. },
  43. //搜索
  44. bindKeyInput(e) {
  45. var userList = this.data.userList;
  46. var items = userList.filter((item) => {
  47. return item.name.indexOf(e.detail.value) >= 0
  48. });
  49. this.setData({
  50. searchVal: items,
  51. isItem: e.detail.value ? false : true
  52. })
  53. },
  54. changeSection(e) {
  55. var item = e.target.dataset.item;
  56. var terr = this.data.terr;
  57. terr.push(item);
  58. if (item._child.length > 0) {
  59. that.setData({
  60. rule_tree: item._child,
  61. terr: terr,
  62. isAllChecked: false
  63. })
  64. } else {
  65. that.setData({
  66. rule_tree: [],
  67. terr: terr,
  68. isAllChecked: false
  69. })
  70. }
  71. this.getData(item.id);
  72. },
  73. //点击导航栏
  74. activeItem(e) {
  75. var item = e.target.dataset.item;
  76. var index = e.target.dataset.index;
  77. var terr = this.data.terr;
  78. if ((index + 1) == terr.length) { return false };
  79. this.setData({ rule_tree: [] });
  80. if (index == 0) {
  81. this.setData({
  82. terr: [{ name: '全部', id: 0 }],
  83. rule_tree: this.data.all_rule_list,
  84. isAllChecked: false
  85. })
  86. } else {
  87. var arr = terr.slice(0, index + 1);
  88. this.setData({
  89. rule_tree: item._child,
  90. terr: arr,
  91. isAllChecked: false
  92. })
  93. }
  94. this.getData(item.id);
  95. },
  96. // 点击下一级
  97. openDown(e) {
  98. this.setData({ rule_tree: [] });
  99. var item = e.target.dataset.item;
  100. var terr = this.data.terr;
  101. terr.push(item);
  102. if (item._child.length > 0) {
  103. that.setData({
  104. rule_tree: item._child,
  105. terr: terr,
  106. isAllChecked: false
  107. })
  108. }
  109. this.getData(item.id);
  110. },
  111. getArrDifference(arr1, arr2) {
  112. var obj = {};
  113. arr1.concat(arr2).forEach(function (v, i, arr) {
  114. obj[v.id] = v;
  115. });
  116. return obj;
  117. },
  118. //全选择
  119. ruleActiveAll(e) {
  120. var userList = this.data.userList;
  121. var selectUserId = this.data.selectUserId;
  122. if (e.detail.value) {
  123. userList.map(item => {
  124. item.checked = true;
  125. })
  126. if (selectUserId.length > 0) {
  127. var obj = this.getArrDifference(selectUserId, userList);
  128. this.setData({
  129. selectUserId: Object.values(obj),
  130. userList: userList,
  131. isAllChecked: true
  132. })
  133. } else {
  134. this.setData({
  135. selectUserId: userList,
  136. userList: userList,
  137. isAllChecked: true
  138. })
  139. }
  140. } else {
  141. userList.map(item => {
  142. item.checked = false;
  143. })
  144. this.setData({
  145. userList: userList,
  146. selectUserId: [],
  147. isAllChecked: false
  148. })
  149. }
  150. },
  151. //单选择
  152. radioChange: function (e) {
  153. var item = e.target.dataset.item;
  154. var selectUserId = this.data.selectUserId;
  155. var isExist = false;
  156. if (e.detail.value) {
  157. if (!this.data.isAll) {//当设置单选择时
  158. if (selectUserId.length > 0) {
  159. app.globalData.showToast("只能选择一名人员");
  160. return;
  161. }
  162. }
  163. selectUserId.forEach((element, index, _this) => {
  164. if (element.id == item.id) {
  165. isExist = true;
  166. }
  167. });
  168. if (!isExist) {
  169. selectUserId.push(item);
  170. }
  171. } else {
  172. selectUserId.forEach((element, index, _this) => {
  173. if (element.id == item.id) {
  174. _this.splice(index, 1);
  175. }
  176. });
  177. }
  178. this.setData({
  179. selectUserId: selectUserId
  180. })
  181. },
  182. //关闭
  183. onClose(e) {
  184. this.props.onClose();
  185. },
  186. //获取人员列表
  187. getData(dept_id) {
  188. app.$get("api/employee/list", { dept_id: dept_id }).then((res) => {
  189. var list = res.data.data.list;
  190. var selectUserId = this.data.selectUserId;
  191. list.map((item) => {
  192. item.checked = false;
  193. if (selectUserId.length > 0) {
  194. selectUserId.forEach(item2 => {
  195. if (item.id == item2.id) {
  196. item.checked = true;
  197. }
  198. })
  199. }
  200. })
  201. this.setData({
  202. userList: list,
  203. all_user_list: list
  204. })
  205. })
  206. },
  207. //获取部门列表
  208. getBmData(dept_id) {
  209. app.$get("api/department/tree", {}).then((res) => {
  210. var list = res.data.data.list;
  211. this.setData({
  212. rule_tree: list,
  213. all_rule_list: list
  214. })
  215. })
  216. },
  217. },
  218. });