import React, { useEffect, useState, useRef } from 'react'; import { connect } from 'react-redux'; import { Col, Row, Button, Tree, ButtonGroup, RadioGroup, Radio, Checkbox, CheckboxGroup, Popconfirm, Toast } from '@douyinfe/semi-ui'; import EmployeeAuthModal from './employeeAuthModal' import EmployeeAuthUserModal from './employeeAuthUserModal' import '../style.less' const EmployeeAuth = (props) => { const form = useRef(); const { dispatch, actions, roleList, userRoleList, resourceList } = props const [dataRange, setDataRange] = useState(1); const [checkedList, setCheckedList] = useState([]); const [roleId, setRoleId] = useState(); const [two, setTwo] = useState({}); const [visible, setVisible] = useState(false); const [eidtRole, setEidtRole] = useState(null); const [eidtTit, setEidtTit] = useState(null); const [visibleUser, setVisibleUser] = useState(false); const getRoleList = () => { dispatch(actions.humanAffairs.getRoleList()) dispatch(actions.humanAffairs.getUserRoleList()) } useEffect(() => { getRoleList() dispatch(actions.humanAffairs.getResource()) }, []) let hrUser = JSON.parse(sessionStorage.getItem('hrUser')) const button = ( ); const style = { display: 'flex', justifyContent: 'space-between', alignItems: 'center' }; let roleAndUser = [] roleList && roleList.rows.forEach(e => { let children = [] userRoleList && userRoleList.rows.forEach(i => { if (e.id == i.roleId) { let user = hrUser.userListArr.find(s => s.id == i.userId) children.push(user) } }) roleAndUser.push({ id: e.id, name: e.name, children: children }) }) let roleLists = [] if (roleAndUser.length) { roleAndUser.forEach(e => { let children = [] if (e.children) { e.children.forEach(i => { children.push({ label: (
{i.name} {/* */}
), value: i.id, key: i.id + new Date(), name: i.name }) }) } roleLists.push({ label: (
{ roleListBtn(e.id) }}> {e.name} { deletRole(e.id) }} >
), value: e.id, key: e.id, children: children, name: e.name }) }) } const dataRangeChange = (e) => { setDataRange(e.target.value); }; const treeList = [] if (resourceList && resourceList.rows) { resourceList.rows.forEach((item) => { item.child = resourceList.rows.filter((sec) => { return sec.parentId === item.id }) if (item.parentId === null) { treeList.push(item) } }) } const onChangeOne = (value, recod) => { let twos = two let selList = [] recod.child.forEach(e => { if (value.target.checked) { twos[e.id] = true } else { twos[e.id] = false } if (e.child.length) { e.child.forEach(i => { selList.push(i.id) }) } }) if (value.target.checked) { twos[value.target.value] = true setTwo(twos) setCheckedList([...checkedList, ...selList]) } else { twos[value.target.value] = false setCheckedList(getDiffer(checkedList, selList)); setTwo(twos) } } const onCheckAllChange = (value, recod) => { let selList = [] recod.child.forEach(i => { if (i.id == value.target.value) { if (i.child.length) { i.child.forEach(s => { selList.push(s.id) }) } } }) let twos = two if (value.target.checked) { setCheckedList([...checkedList, ...selList]) twos[value.target.value] = true twos[recod.id] = true setTwo(two) } else { setCheckedList(getDiffer(checkedList, selList)); twos[value.target.value] = false setTwo(two) } }; const checkItem = (e, recod) => { let check = [e.target.value] let twos = two let twosid if (e.target.checked) { setCheckedList([...checkedList, ...check]) resourceList.rows.forEach(e => { if (e.id == check[0]) { twosid = e.parentId } }) twos[twosid] = true twos[recod.id] = true setTwo(twos) } else { setCheckedList(getDiffer(checkedList, check)); } } const getDiffer = (arr1, arr2) => { let arr = arr1.filter(e => { return !arr2.includes(e) }) return arr } const handleCancel = () => { setVisible(false); }; const showModal = (eidtRole, tit) => { setEidtRole(eidtRole) setEidtTit(tit) setVisible(true); }; const deletRole = (id) => { let data = { id } dispatch(actions.humanAffairs.delRole(data)).then(e => { if (e.success) { getRoleList() } }) } const showUserMolad = () => { setVisibleUser(true); } const handleCancelUser = () => { setVisibleUser(false); }; const roleListBtn = (id) => { setRoleId(id) dispatch(actions.humanAffairs.getRoleResource({ id })).then(res => { if (res.success) { let two = {} let checkList = [] if (res.payload.data && res.payload.data.rows.length) { checkList = res.payload.data.rows.map(e => { two[e.resId] = true return e.resId }) setCheckedList(checkList) setTwo(two) } else { setCheckedList([]) setTwo(two) } } }) } const handlOk = () => { let resourceId = []; for (let item in two) { if (two[item]) { resourceId.push(parseInt(item)); } } resourceId = [...checkedList, ...resourceId] if (roleId == undefined || resourceId.length == 0) { Toast.error('请选择角色和权限!') } else { dispatch(actions.humanAffairs.addRoleResource({ roleId, resourceId })) } } return ( <>
权限中心
/
员工权限
员工权限
EMPLOYEE AUTHORITY

管理员设置

平台管理员由项企统一认证平台授权,拥有对本系统所有功能进行设置和管理。
{ hrUser && hrUser.adminHr && hrUser.adminHr.map(e => { return (
人力资源部

{e.name}

角色说明:拥有全平台的权限

) }) }

角色授权

数据范围:

本部门 全公司

权限范围:

全部权限
{treeList.map(e => { return
{ onChangeOne(value, e) }} style={{ borderBottom: '1px solid #f2f2f2', padding: '10px 10px' }} checked={two[e.id]} key={e.id} value={e.id}>{e.name} {e.child.map(i => { return
{ onCheckAllChange(value, e) }}>{i.name} { i.child.map(s => ( { checkItem(value, e) }} key={s.id} value={s.id} >{s.name})) }
})}
})}
{ visible ? : '' } { visibleUser ? : '' } ) } function mapStateToProps(state) { const { auth, global, roleList, userRoleList, resourceList } = state; return { user: auth.user, actions: global.actions, roleList: roleList.data, userRoleList: userRoleList.data, resourceList: resourceList.data }; } export default connect(mapStateToProps)(EmployeeAuth);