selectSectionStaff.js 6.0 KB

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