selectSectionStaff.js 6.2 KB

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