selectSectionStaff.js 6.3 KB

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