/** * 人员列表 @author Lyq */ import React, { Component } from "react"; import { Input, Icon, Radio, Checkbox } from "antd"; import { // getDepartmentData, systemComDepartGetDepartTree, getDepartPersonList, //公共通过部门获取人员 getPerListByKeyword, //公共关键字获取人员 getHuaweiDepartPersonList, //华为会议 通过部门获取人员 getHuaweiPerListByKeyword, //华为会议 关键字获取人员 getTaskDepartPersonList, //助勤 通过部门获取人员 getTaskPerListByKeyword, //助勤 关键字获取人员 } from '../../../services/api'; import $loading from '../../../utils/loading'; const { Search } = Input; export default class PersonList extends Component { constructor(props, context) { super(props, context); this.state = { navtree: [], //层级数据 personList: [], //当前的人员列表 (单选的情况) listParams: { // 请求人员列表的参数 pageNumber: 1, pageSize: 10 }, keywordList: [], //关键字搜索列表 keywordParams: { pageNumber: 1, pageSize: 10 }, keyword: '', //关键字 departInfo: { // id: [] }//缓存部门id的集合,key是部门id,value是一个数组,对应部门下的人员 }; } componentDidMount() { //---获取部门列表数据 systemComDepartGetDepartTree().then(res => { // 设置导航数据 this.setState({ navtree: res.data }, () => { if (this.props.type == 'checkbox') { this._getCurrentInfo();//多选 } else { this._getDepartUser();//单选 } }); }); } componentWillReceiveProps(nextprops) { } /* *****************ajax****************** */ //--获取当前部门人员(分页) _getDepartUser = (loadMore) => { let { navtree, listParams, personList } = this.state; // 加载更多 if (loadMore) { listParams.pageNumber++; } else { // 刷新列表 listParams.pageNumber = 1; personList = []; } // 获取id const departId = navtree[navtree.length - 1].departId; //获取是否有权限 const isExistsDataAuth = navtree[navtree.length - 1].isExistsDataAuth; const requestParameters = { departId, ...listParams }; // 获取接口 let getFun = getDepartPersonList; if (this.props.fetchType == 'huawei') { getFun = getHuaweiDepartPersonList; } else if (this.props.fetchType == 'task') { getFun = getTaskDepartPersonList; } //判断如果是驻勤模块的,需要判断有没有权限,若没有权限就不请求人员数据,直接返回没有权限 if (this.props.fetchType == 'task' && isExistsDataAuth == '0') { this.setState({ personList: ['noAuth'], //更新数据,没有权限可以查看该部门下的人员信息 listParams, //设置页面参数 totalPage: 0 }); } else { getFun(requestParameters).then(res => { this.setState({ personList: [...personList, ...res.data.data], //更新数据 listParams, //设置页面参数 totalPage: res.data.totalPage }); }); } } // 传入部门id通过接口获取部门下的所有人 _getPersonByDepartId = (departIds = []) => { // 获取接口方法 let getFun = getDepartPersonList; if (this.props.fetchType == 'huawei') { getFun = getHuaweiDepartPersonList; } else if (this.props.fetchType == 'task') { getFun = getTaskDepartPersonList; } // 循环调用接口获取对应部门的数据 const { departInfo } = this.state; departIds.forEach(departId => { if (!departInfo[departId]) { //该部门数据没有被缓存 // 获取对应部门的人员数据 getFun({ departId, pageNumber: 1, pageSize: 1000000 }).then(res => { // 储存对应的部门数据 departInfo[departId] = res.data.data; this.setState({ departInfo }); }); } }); } //--获取搜索人员 _getKeywordUser = (loadMore) => { let { keyword, keywordParams, keywordList } = this.state; if (!keyword) return; // 加载更多 if (loadMore) { keywordParams.pageNumber++; } else { // 刷新列表 keywordParams.pageNumber = 1; keywordList = []; } const requestParameters = { keyword, ...keywordParams }; // 获取接口 let getFun = getPerListByKeyword; if (this.props.fetchType == 'huawei') { getFun = getHuaweiPerListByKeyword; } else if (this.props.fetchType == 'task') { getFun = getTaskPerListByKeyword; } getFun(requestParameters).then(res => { this.setState({ keywordList: [...keywordList, ...res.data.data], //更新数据 keywordParams, //设置页面参数 keywordTotalPage: res.data.totalPage }); }); } /* *****************mothods****************** */ // 获取当前部门下的人员和部门信息(多选部分页的情况) _getCurrentInfo = () => { const { navtree } = this.state; // 当前应当展示的部门数据 const currentTree = (navtree[navtree.length - 1] && navtree[navtree.length - 1].childDepart) || []; // 获取当前部门人员和当前子部门的人员 // const departIds = currentTree.map(({ departId }) => departId); const departIds = [] const { departInfo } = this.state; //如果是驻勤模块的,需要先判断是否有权限 for (let r = 0; r < currentTree.length; r++) { switch (this.props.fetchType) { case 'task': if (currentTree[r].isExistsDataAuth == '1') { departIds.push(currentTree[r].departId) } else { departInfo[currentTree[r].departId] = 'noAuth'//更新数据,没有权限可以查看该部门下的人员信息 } break; default: departIds.push(currentTree[r].departId) } } switch (this.props.fetchType) { case 'task': if (navtree[navtree.length - 1].isExistsDataAuth == '1') { departIds.push(navtree[navtree.length - 1].departId); } else { departInfo[navtree[navtree.length - 1].departId] = 'noAuth'//更新数据,没有权限可以查看该部门下的人员信息 } break; default: departIds.push(navtree[navtree.length - 1].departId); } this.setState({ departInfo }) this._getPersonByDepartId(departIds); } // 部门被选中的值(多选) _getDepartValues = () => { const { navtree, departInfo } = this.state; const { value } = this.props; // 当前应当展示的部门数据 const currentTree = (navtree[navtree.length - 1] && navtree[navtree.length - 1].childDepart) || []; let selectedDeparts = []; currentTree.forEach(cItem => { let result = true; if (departInfo[cItem.departId]) { result = true; if (departInfo[cItem.departId].length > 0) { for (let i = 0; i < departInfo[cItem.departId].length; i++) { if (!value.some(item => item.perId == departInfo[cItem.departId][i].perId)) { result = false; break; } } } else { result = false; } } else { result = false; } result && selectedDeparts.push(cItem.departId); }); return selectedDeparts; } /* *****************render****************** */ // 面包屑 _renderNavBar = () => { const { navtree } = this.state; return (
您没有查看该部门的权限