|
|
|
@ -12,16 +12,8 @@ import * as Actions from '../../../modules/basis/group/actions/basisGroupAction'
|
|
|
|
|
|
|
|
|
|
export const BasisGroupUsersContainer = props => { |
|
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
const history = useHistory(); |
|
|
|
|
const { |
|
|
|
|
joinList, |
|
|
|
|
joinListCount, |
|
|
|
|
selectGroup, |
|
|
|
|
groupList, |
|
|
|
|
groupListCount, |
|
|
|
|
userList, |
|
|
|
|
userListCount |
|
|
|
|
} = useSelector(state => state.groupState); |
|
|
|
|
const { joinList, joinListCount, selectData, userList, userCount } = |
|
|
|
|
useSelector(state => state.groupState); |
|
|
|
|
const { user } = useSelector(state => state.authState); |
|
|
|
|
|
|
|
|
|
const [params, setParams] = useState({ |
|
|
|
@ -74,36 +66,25 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
name: '', |
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
// return selectData?.groupId === row?.groupId ? (
|
|
|
|
|
// <Button.Ripple
|
|
|
|
|
// color='danger'
|
|
|
|
|
// className='badge badge-danger'
|
|
|
|
|
// onClick={() => handlerCancel()}
|
|
|
|
|
// >
|
|
|
|
|
// 선택취소
|
|
|
|
|
// </Button.Ripple>
|
|
|
|
|
// ) : (
|
|
|
|
|
// <Button.Ripple
|
|
|
|
|
// color='primary'
|
|
|
|
|
// className='badge badge-primary'
|
|
|
|
|
// onClick={() =>
|
|
|
|
|
// handlerDetail(
|
|
|
|
|
// row?.groupId,
|
|
|
|
|
// row?.groupNm,
|
|
|
|
|
// row?.groupAuthCd,
|
|
|
|
|
// row?.aprvlYn
|
|
|
|
|
// )
|
|
|
|
|
// }
|
|
|
|
|
// >
|
|
|
|
|
// 상세보기
|
|
|
|
|
// </Button.Ripple>
|
|
|
|
|
// );
|
|
|
|
|
return ( |
|
|
|
|
return selectData?.groupId === row?.groupId ? ( |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='danger' |
|
|
|
|
className='badge badge-danger' |
|
|
|
|
onClick={() => handlerCancel()} |
|
|
|
|
> |
|
|
|
|
선택취소 |
|
|
|
|
</Button.Ripple> |
|
|
|
|
) : ( |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='primary' |
|
|
|
|
className='badge badge-primary' |
|
|
|
|
onClick={() => |
|
|
|
|
handlerDetail(row?.groupId, row?.groupAuthCd, row?.aprvlYn) |
|
|
|
|
handlerDetail( |
|
|
|
|
row?.groupId, |
|
|
|
|
row?.groupNm, |
|
|
|
|
row?.groupAuthCd, |
|
|
|
|
row?.aprvlYn |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
> |
|
|
|
|
상세보기 |
|
|
|
@ -117,7 +98,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '그룹명', |
|
|
|
|
selector: 'groupNm', |
|
|
|
|
minWidth: '150px', |
|
|
|
|
// minWidth: '102px',
|
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
return row?.groupNm; |
|
|
|
@ -127,7 +108,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '그룹 코드', |
|
|
|
|
selector: 'groupId', |
|
|
|
|
minWidth: '102px', |
|
|
|
|
// minWidth: '102px',
|
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
return row?.groupId; |
|
|
|
@ -136,7 +117,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '사용자 명', |
|
|
|
|
selector: 'memberName', |
|
|
|
|
minWidth: '102px', |
|
|
|
|
// minWidth: '102px',
|
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
return row?.memberName; |
|
|
|
@ -145,7 +126,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '사용자 ID', |
|
|
|
|
selector: 'userId', |
|
|
|
|
minWidth: '120px', |
|
|
|
|
// minWidth: '102px',
|
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
return row?.userId; |
|
|
|
@ -155,7 +136,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '권한명', |
|
|
|
|
selector: 'groupAuthCd', |
|
|
|
|
minWidth: '105px', |
|
|
|
|
// minWidth: '102px',
|
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
return row?.groupAuthCd; |
|
|
|
@ -164,7 +145,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '가입 일시', |
|
|
|
|
selector: 'joinDt', |
|
|
|
|
minWidth: '150px', |
|
|
|
|
// minWidth: '150px',
|
|
|
|
|
sortable: true, |
|
|
|
|
cell: row => { |
|
|
|
|
return row?.joinDt; |
|
|
|
@ -173,7 +154,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
{ |
|
|
|
|
name: '권한 변경', |
|
|
|
|
// selector: 'cntrlStDate',
|
|
|
|
|
minWidth: '130px', |
|
|
|
|
minWidth: '300px', |
|
|
|
|
sortable: false, |
|
|
|
|
cell: row => { |
|
|
|
|
const my = joinList?.find((prev, idx) => { |
|
|
|
@ -181,71 +162,186 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
return prev; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
let m_disabled = false; |
|
|
|
|
let l_disabled = false; |
|
|
|
|
let n_disabled = false; |
|
|
|
|
|
|
|
|
|
if (row?.groupAuthCd === 'MASTER') { |
|
|
|
|
return <div>수정불가</div>; |
|
|
|
|
} else if (row?.groupAuthCd === 'LEADER') { |
|
|
|
|
if (my?.groupAuthCd === 'MASTER') { |
|
|
|
|
return ( |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='primary' |
|
|
|
|
className='badge badge-primary' |
|
|
|
|
onClick={() => handlerUserConfirm(row?.cstmrGroupSno)} |
|
|
|
|
> |
|
|
|
|
NORMAL |
|
|
|
|
</Button.Ripple> |
|
|
|
|
); |
|
|
|
|
if (user.authId === 'SUPER') { |
|
|
|
|
{ |
|
|
|
|
} |
|
|
|
|
} else if (user.authId === 'ADMIN') { |
|
|
|
|
if (my.groupAuthCd === 'MASTER') { |
|
|
|
|
if (row.groupAuthCd === 'LEADER') { |
|
|
|
|
l_disabled = true; |
|
|
|
|
} else if (row.groupAuthCd === 'NORMAL') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} |
|
|
|
|
} else if (my.groupAuthCd === 'LEADER') { |
|
|
|
|
if (row.groupAuthCd === 'MASTER') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
l_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} else if (row.groupAuthCd === 'LEADER') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
l_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} else if (row.groupAuthCd === 'NORMAL') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
return <div>수정불가</div>; |
|
|
|
|
//내 권한이 마스터도 리더도 아니니까 우리그룹이 아님
|
|
|
|
|
m_disabled = true; |
|
|
|
|
l_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} |
|
|
|
|
} else if (row?.groupAuthCd === 'NORMAL') { |
|
|
|
|
if (my?.groupAuthCd === 'MASTER' || my?.groupAuthCd === 'LEADER') { |
|
|
|
|
return ( |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='danger' |
|
|
|
|
className='badge badge-danger' |
|
|
|
|
onClick={() => handlerAdminConfirm(row?.cstmrGroupSno)} |
|
|
|
|
> |
|
|
|
|
LEADER |
|
|
|
|
</Button.Ripple> |
|
|
|
|
); |
|
|
|
|
} else if (user.authId === 'ROLE_USER') { |
|
|
|
|
if (my.groupAuthCd === 'MASTER') { |
|
|
|
|
if (row.groupAuthCd === 'LEADER') { |
|
|
|
|
l_disabled = true; |
|
|
|
|
} else if (row.groupAuthCd === 'NORMAL') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} |
|
|
|
|
} else if (my.groupAuthCd === 'LEADER') { |
|
|
|
|
if (row.groupAuthCd === 'MASTER') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
l_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} else if (row.groupAuthCd === 'LEADER') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
l_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} else if (row.groupAuthCd === 'NORMAL') { |
|
|
|
|
m_disabled = true; |
|
|
|
|
n_disabled = true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
name: '위임 하기', |
|
|
|
|
// minWidth: '102px',
|
|
|
|
|
sortable: false, |
|
|
|
|
cell: row => { |
|
|
|
|
const my = joinList?.find((prev, idx) => { |
|
|
|
|
if (prev.groupId === row?.groupId) { |
|
|
|
|
return prev; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
if (row?.groupAuthCd === 'LEADER') { |
|
|
|
|
if (my?.groupAuthCd === 'MASTER') { |
|
|
|
|
return ( |
|
|
|
|
const master = ( |
|
|
|
|
<> |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='warning' |
|
|
|
|
className='badge badge-warning' |
|
|
|
|
style={{ marginRight: '0.35rem' }} |
|
|
|
|
onClick={() => |
|
|
|
|
handlerCreaterConfirm(row?.cstmrGroupSno, my?.cstmrGroupSno) |
|
|
|
|
handlerMaster(row?.cstmrGroupSno, my?.cstmrGroupSno) |
|
|
|
|
} |
|
|
|
|
disabled={m_disabled} |
|
|
|
|
> |
|
|
|
|
MASTER |
|
|
|
|
</Button.Ripple> |
|
|
|
|
</> |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const leader = ( |
|
|
|
|
<> |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='danger' |
|
|
|
|
className='badge badge-danger' |
|
|
|
|
style={{ marginRight: '0.35rem' }} |
|
|
|
|
onClick={() => handlerLeader(row?.cstmrGroupSno)} |
|
|
|
|
disabled={l_disabled} |
|
|
|
|
> |
|
|
|
|
LEADER |
|
|
|
|
</Button.Ripple> |
|
|
|
|
</> |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const normal = ( |
|
|
|
|
<> |
|
|
|
|
<Button.Ripple |
|
|
|
|
color='primary' |
|
|
|
|
className='badge badge-primary' |
|
|
|
|
onClick={() => handlerNormal(row?.cstmrGroupSno)} |
|
|
|
|
disabled={n_disabled} |
|
|
|
|
> |
|
|
|
|
NORMAL |
|
|
|
|
</Button.Ripple> |
|
|
|
|
</> |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<> |
|
|
|
|
{master} |
|
|
|
|
{leader} |
|
|
|
|
{normal} |
|
|
|
|
</> |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// const my = joinList?.find((prev, idx) => {
|
|
|
|
|
// if (prev.groupId === row?.groupId) {
|
|
|
|
|
// return prev;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// if (row?.groupAuthCd === 'MASTER') {
|
|
|
|
|
// return <div>수정불가</div>;
|
|
|
|
|
// } else if (row?.groupAuthCd === 'LEADER') {
|
|
|
|
|
// if (my?.groupAuthCd === 'MASTER') {
|
|
|
|
|
// return (
|
|
|
|
|
// <Button.Ripple
|
|
|
|
|
// color='primary'
|
|
|
|
|
// className='badge badge-primary'
|
|
|
|
|
// onClick={() => handlerUserConfirm(row?.cstmrGroupSno)}
|
|
|
|
|
// >
|
|
|
|
|
// NORMAL
|
|
|
|
|
// </Button.Ripple>
|
|
|
|
|
// );
|
|
|
|
|
// } else {
|
|
|
|
|
// return <div>수정불가</div>;
|
|
|
|
|
// }
|
|
|
|
|
// } else if (row?.groupAuthCd === 'NORMAL') {
|
|
|
|
|
// if (my?.groupAuthCd === 'MASTER' || my?.groupAuthCd === 'LEADER') {
|
|
|
|
|
// return (
|
|
|
|
|
// <Button.Ripple
|
|
|
|
|
// color='danger'
|
|
|
|
|
// className='badge badge-danger'
|
|
|
|
|
// onClick={() => handlerAdminConfirm(row?.cstmrGroupSno)}
|
|
|
|
|
// >
|
|
|
|
|
// LEADER
|
|
|
|
|
// </Button.Ripple>
|
|
|
|
|
// );
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// {
|
|
|
|
|
// name: '위임 하기',
|
|
|
|
|
// // minWidth: '102px',
|
|
|
|
|
// sortable: false,
|
|
|
|
|
// cell: row => {
|
|
|
|
|
// const my = joinList?.find((prev, idx) => {
|
|
|
|
|
// if (prev.groupId === row?.groupId) {
|
|
|
|
|
// return prev;
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// if (row?.groupAuthCd === 'LEADER') {
|
|
|
|
|
// if (my?.groupAuthCd === 'MASTER') {
|
|
|
|
|
// return (
|
|
|
|
|
// <Button.Ripple
|
|
|
|
|
// color='warning'
|
|
|
|
|
// className='badge badge-warning'
|
|
|
|
|
// onClick={() =>
|
|
|
|
|
// handlerCreaterConfirm(row?.cstmrGroupSno, my?.cstmrGroupSno)
|
|
|
|
|
// }
|
|
|
|
|
// >
|
|
|
|
|
// MASTER
|
|
|
|
|
// </Button.Ripple>
|
|
|
|
|
// );
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
// useEffect(() => {
|
|
|
|
|
useEffect(() => { |
|
|
|
|
// handlerSearch();
|
|
|
|
|
// }, []);
|
|
|
|
|
handlerCancel(); |
|
|
|
|
}, []); |
|
|
|
|
|
|
|
|
|
const handlerSearch = () => { |
|
|
|
|
if (params.cstmrSno && user?.cstmrSno) { |
|
|
|
@ -268,17 +364,17 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
} |
|
|
|
|
}, [user]); |
|
|
|
|
|
|
|
|
|
const handlerDetail = (groupId, groupAuthCd, aprvlYn) => { |
|
|
|
|
const handlerDetail = (groupId, groupNm, groupAuthCd, aprvlYn) => { |
|
|
|
|
if ( |
|
|
|
|
groupAuthCd === 'MASTER' || |
|
|
|
|
user.authId === 'SUPER' || |
|
|
|
|
user.authId === 'ADMIN' || |
|
|
|
|
(aprvlYn === 'Y' && groupAuthCd === 'LEADER') |
|
|
|
|
) { |
|
|
|
|
dispatch(Actions.SELECT({ groupId: groupId, groupNm, groupNm })); |
|
|
|
|
const param = params; |
|
|
|
|
param.groupId = groupId; |
|
|
|
|
param.groupAuthCd = groupAuthCd; |
|
|
|
|
param.aprvlYn = aprvlYn; |
|
|
|
|
param.memberNm = ''; |
|
|
|
|
|
|
|
|
|
dispatch( |
|
|
|
|
Actions.USER_LIST.request({ |
|
|
|
@ -291,10 +387,20 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
title: '권한 확인', |
|
|
|
|
desc: '사용자관리 확인을 위해서는 운영자 권한이 필요합니다. 운영자에게 권한을 부여받고 다시 시도해 주세요.' |
|
|
|
|
}); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerAdminConfirm = cstmrGroupSno => { |
|
|
|
|
const handlerCancel = () => { |
|
|
|
|
dispatch(Actions.SELECT()); |
|
|
|
|
setParams({ |
|
|
|
|
...params, |
|
|
|
|
groupId: '', |
|
|
|
|
memberNm: '' |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerLeader = cstmrGroupSno => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 확인', |
|
|
|
@ -314,7 +420,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerUserConfirm = cstmrGroupSno => { |
|
|
|
|
const handlerNormal = cstmrGroupSno => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 확인', |
|
|
|
@ -328,7 +434,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerCreaterConfirm = (row, my) => { |
|
|
|
|
const handlerMaster = (row, my) => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 위임', |
|
|
|
@ -393,38 +499,42 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
/> |
|
|
|
|
</Col> |
|
|
|
|
<Col sm='8'> |
|
|
|
|
{!userList ? ( |
|
|
|
|
<div className='no-dataTable'> |
|
|
|
|
그룹 목록에서 상세보기를 클릭하세요. |
|
|
|
|
</div> |
|
|
|
|
) : ( |
|
|
|
|
{selectData ? ( |
|
|
|
|
<> |
|
|
|
|
<BasisGroupUsersSearch |
|
|
|
|
handlerInput={handlerInput} |
|
|
|
|
// handlerSearch={handlerSearch}
|
|
|
|
|
handlerSearch={handlerSearch} |
|
|
|
|
params={params} |
|
|
|
|
onKeyPress={onKeyPress} |
|
|
|
|
setParams={setParams} |
|
|
|
|
/> |
|
|
|
|
{/* <BasisGroupUsersGrid |
|
|
|
|
<BasisGroupUsersGrid |
|
|
|
|
data={userList} |
|
|
|
|
title={'그룹'} |
|
|
|
|
title={'사용자'} |
|
|
|
|
columns={userColumns} |
|
|
|
|
count={userListCount} |
|
|
|
|
count={userCount} |
|
|
|
|
pagination={false} |
|
|
|
|
/> */} |
|
|
|
|
/> |
|
|
|
|
</> |
|
|
|
|
) : ( |
|
|
|
|
<div className='no-dataTable'> |
|
|
|
|
그룹 목록에서 상세보기를 클릭하세요. |
|
|
|
|
</div> |
|
|
|
|
)} |
|
|
|
|
</Col> |
|
|
|
|
<Col sm='12'> |
|
|
|
|
{/* <Col sm='12'> |
|
|
|
|
{selectData ? ( |
|
|
|
|
<BasisGroupUsersGrid |
|
|
|
|
data={userList} |
|
|
|
|
title={'그룹'} |
|
|
|
|
title={'사용자'} |
|
|
|
|
columns={userColumns} |
|
|
|
|
count={userListCount} |
|
|
|
|
count={userCount} |
|
|
|
|
pagination={false} |
|
|
|
|
/> |
|
|
|
|
</Col> |
|
|
|
|
) : ( |
|
|
|
|
<div className='no-dataTable'></div> |
|
|
|
|
)} |
|
|
|
|
</Col> */} |
|
|
|
|
</Row> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
@ -434,7 +544,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
handlerConfirm={handlerAuthSave} |
|
|
|
|
color='primary' |
|
|
|
|
/> |
|
|
|
|
{/* <InfoModal model={infoModal} setModal={setInfoModal} /> */} |
|
|
|
|
<InfoModal modal={infoModal} setModal={setInfoModal} /> |
|
|
|
|
</CustomMainLayout> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|