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 (
<>
管理员设置
平台管理员由项企统一认证平台授权,拥有对本系统所有功能进行设置和管理。
{
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);