selectSectionStaff.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  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. isAll: true,
  18. userData: [],
  19. isCreator: false,
  20. creatorName: '',
  21. keyVal:'',
  22. },
  23. props: {
  24. onClose: (data) => console.log(data),
  25. onConfirm: (data) => console.log(data),
  26. selectUser: [],
  27. isAllSelect: true,//是否多选
  28. isLeadership: false,//数据源是否是自己的管理范围
  29. isBoss: false,//是否去除系统管理员
  30. isUser: false,//是否去除自己
  31. isFill:true,//是否必选
  32. },
  33. didMount() {
  34. that = this;
  35. this.setData({ isCreator: app.globalData.isCreator, creatorName: app.globalData.corpMessage.creators })
  36. // app.login(app.globalData.corpId, function (is) {
  37. // if (is) {
  38. that.setData({
  39. selectUserId: that.props.selectUser[0] ? that.props.selectUser : [],
  40. isAll: that.props.isAllSelect,
  41. userData:app.globalData.userData.employee_detail.manage_scope,
  42. terr: [{ name: '全部', id: 0 }]
  43. })
  44. // }
  45. that.getData(0);
  46. that.getBmData();
  47. // })
  48. },
  49. didUpdate() {},
  50. didUnmount() {
  51. },
  52. methods: {
  53. onReset() {
  54. this.setData({
  55. isVal: false,
  56. keyVal:''
  57. })
  58. },
  59. onConfirm() {
  60. if (this.props.isFill&&this.data.selectUserId.length == 0) {
  61. app.globalData.showToast("请选择一名员工")
  62. return
  63. }
  64. this.props.onConfirm(this.data.selectUserId);
  65. this.onClose();
  66. },
  67. //搜索
  68. bindKeyInput(e) {
  69. this.setData({
  70. keyVal:e.detail.value,
  71. isVal: e.detail.value ? true : false
  72. })
  73. },
  74. changeSection(e) {
  75. var item = e.target.dataset.item;
  76. var terr = this.data.terr;
  77. terr.push(item);
  78. if (item._child.length > 0) {
  79. that.setData({
  80. rule_tree: item._child,
  81. terr: terr,
  82. isAllChecked: false
  83. })
  84. } else {
  85. that.setData({
  86. rule_tree: [],
  87. terr: terr,
  88. isAllChecked: false
  89. })
  90. }
  91. this.getData(item.id);
  92. },
  93. //点击导航栏
  94. activeItem(e) {
  95. var item = e.target.dataset.item;
  96. var index = e.target.dataset.index;
  97. var terr = this.data.terr;
  98. if ((index + 1) == terr.length) { return false };
  99. this.setData({ rule_tree: [] });
  100. if (index == 0) {
  101. this.setData({
  102. terr: [{ name: '全部', id: 0 }],
  103. rule_tree: this.data.all_rule_list,
  104. isAllChecked: false
  105. })
  106. } else {
  107. var arr = terr.slice(0, index + 1);
  108. this.setData({
  109. rule_tree: item._child,
  110. terr: arr,
  111. isAllChecked: false
  112. })
  113. }
  114. this.getData(item.id);
  115. },
  116. // 点击下一级
  117. openDown(e) {
  118. this.setData({ rule_tree: [] });
  119. var item = e.target.dataset.item;
  120. var terr = this.data.terr;
  121. terr.push(item);
  122. if (item._child.length > 0) {
  123. that.setData({
  124. rule_tree: item._child,
  125. terr: terr,
  126. isAllChecked: false
  127. })
  128. }
  129. this.getData(item.id);
  130. },
  131. getArrDifference(arr1, arr2) {
  132. var obj = {};
  133. arr1.concat(arr2).forEach(function (v, i, arr) {
  134. obj[v.id] = v;
  135. });
  136. return obj;
  137. },
  138. //全选择
  139. ruleActiveAll(e) {
  140. var userList = this.data.userList;
  141. var selectUserId = this.data.selectUserId;
  142. if (e.detail.value) {
  143. userList.map(item => {
  144. item.checked = true;
  145. })
  146. if (selectUserId.length > 0) {
  147. var obj = this.getArrDifference(selectUserId, userList);
  148. this.setData({
  149. selectUserId: Object.values(obj),
  150. userList: userList,
  151. isAllChecked: true
  152. })
  153. } else {
  154. this.setData({
  155. selectUserId: userList,
  156. userList: userList,
  157. isAllChecked: true
  158. })
  159. }
  160. } else {
  161. userList.map(item => {
  162. item.checked = false;
  163. })
  164. this.setData({
  165. userList: userList,
  166. selectUserId: [],
  167. isAllChecked: false
  168. })
  169. }
  170. },
  171. //选择
  172. radioChange: function (e) {
  173. var selectUserId = this.data.selectUserId;
  174. var isExist = false;
  175. var userList = this.data.userList;
  176. if (!this.data.isAll) {//单选择
  177. let item = e.target.dataset.item;
  178. let index = e.target.dataset.index;
  179. let checked = `userList[${index}].checked`;//获取当前控制选中的字段
  180. let elm = this.data.userList[index].checked;//当前的状态
  181. //将所有的选中状态改成未中
  182. var userList = this.data.userList;
  183. userList.map((item, item_index) => {
  184. if (item.checked) {
  185. var item_checked = `userList[${item_index}].checked`;
  186. this.setData({
  187. [item_checked]: false
  188. })
  189. }
  190. })
  191. if(!elm){
  192. selectUserId.forEach((element, _this) => {
  193. if (element.id == item.id) {
  194. isExist = true;
  195. }
  196. });
  197. if (!isExist) {
  198. selectUserId=[];
  199. selectUserId.push(item);
  200. }
  201. }else{//取消选中
  202. selectUserId=[];
  203. }
  204. this.setData({
  205. [checked]: !elm,
  206. })
  207. } else {//多选择
  208. let item = e.target.dataset.item;
  209. let index = e.target.dataset.index;
  210. let checked = `userList[${index}].checked`;//获取当前控制选中的字段
  211. let elm = this.data.userList[index].checked;//当前的状态
  212. this.setData({
  213. [checked]: !elm,
  214. })
  215. if (e.detail.value) {//当有值时选中
  216. selectUserId.forEach((element, _this) => {
  217. if (element.id == item.id) {
  218. isExist = true;
  219. }
  220. });
  221. if (!isExist) {
  222. selectUserId.push(item);
  223. }
  224. } else {//取消选中
  225. selectUserId.forEach((element, index, _this) => {
  226. if (element.id == item.id) {
  227. _this.splice(index, 1);
  228. }
  229. });
  230. }
  231. }
  232. this.setData({
  233. selectUserId: selectUserId
  234. })
  235. },
  236. //关闭
  237. onClose(e) {
  238. this.props.onClose();
  239. },
  240. //获取人员列表
  241. getData(dept_id) {
  242. this.setData({
  243. userList: [],
  244. all_user_list: []
  245. })
  246. app.$get("api/employee/list", { dept_id: dept_id }).then((res) => {
  247. var list = res.data.data.list || [];
  248. var selectUserId = this.data.selectUserId;
  249. var arr = [];
  250. var userList = [];
  251. list.forEach(item => {
  252. if(this.props.isBoss&&item.is_creator == 1){
  253. return null
  254. }else if(this.props.isUser&&item.id == app.globalData.userData.id){
  255. return null
  256. }else{
  257. userList.push(item)
  258. }
  259. });
  260. userList.map((item) => { //设置列表的选中状态
  261. item.checked = false;
  262. if (selectUserId.length > 0) {
  263. selectUserId.forEach(item2 => {
  264. if (item.id == item2.id) {
  265. item.checked = true;
  266. }
  267. })
  268. }
  269. })
  270. that.data.userData.map((item) => {//列表数据是否是自己的管理范围
  271. userList.map((item2) => {
  272. if (item.id == item2.id) {
  273. arr.push(item2);
  274. }
  275. })
  276. })
  277. this.setData({
  278. userList: that.props.isLeadership ? arr : userList,
  279. all_user_list: that.props.isLeadership ? arr : userList,
  280. })
  281. })
  282. },
  283. //获取部门列表
  284. getBmData() {
  285. app.$get("api/department/tree", {}).then((res) => {
  286. var list = res.data.data.list;
  287. this.setData({
  288. rule_tree: list,
  289. all_rule_list: list
  290. })
  291. })
  292. },
  293. },
  294. });