|
|
|
@ -6,33 +6,45 @@ import { BasisGroupUsersGrid } from '../../../components/basis/group/BasisGroupU
|
|
|
|
|
import { BasisGroupUsersSearch } from '../../../components/basis/group/BasisGroupUsersSearch'; |
|
|
|
|
import { CustomMainLayout } from '../../../components/layout/CustomMainLayout'; |
|
|
|
|
import { ConfirmModal } from '../../../components/modal/ConfirmModal'; |
|
|
|
|
import { InfoModal } from '../../../components/modal/InfoModal'; |
|
|
|
|
import * as Actions from '../../../modules/basis/group/actions/basisGroupAction'; |
|
|
|
|
|
|
|
|
|
export const BasisGroupUsersContainer = props => { |
|
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
const titleName = '사용자 관리'; |
|
|
|
|
|
|
|
|
|
const { |
|
|
|
|
joinList, |
|
|
|
|
joinListCount, |
|
|
|
|
groupList, |
|
|
|
|
groupListCount, |
|
|
|
|
// selectData,
|
|
|
|
|
userSelect, |
|
|
|
|
userCount, |
|
|
|
|
userList, |
|
|
|
|
count, |
|
|
|
|
total |
|
|
|
|
joinList, // 가입그룹목록
|
|
|
|
|
joinListCount, // 가입그룹목록 수
|
|
|
|
|
groupList, // 전체그룹목록
|
|
|
|
|
groupListCount, // 전체그룹목록 수
|
|
|
|
|
userSelect, // 유저가 상세보기 선택한 그룹
|
|
|
|
|
userList, // 선택한 그룹의 사용자목록
|
|
|
|
|
total, // 선택한 그룹의 사용자목록 수
|
|
|
|
|
count |
|
|
|
|
} = useSelector(state => state.groupState); |
|
|
|
|
|
|
|
|
|
// 유저 정보
|
|
|
|
|
const { user } = useSelector(state => state.authState); |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 검색 조건 초기값 |
|
|
|
|
* cstmrSno: 유저고유번호 |
|
|
|
|
* groupId: 그룹 아이디 |
|
|
|
|
* groupAuthCd: 유저의 그룹 권한 코드 |
|
|
|
|
* aprvlYn: 그룹 가입 유무 |
|
|
|
|
*/ |
|
|
|
|
const [params, setParams] = useState({ |
|
|
|
|
cstmrSno: user?.cstmrSno, |
|
|
|
|
groupId: '', |
|
|
|
|
groupAuthCd: '', |
|
|
|
|
aprvlYn: '' |
|
|
|
|
}); |
|
|
|
|
const titleName = '사용자 관리'; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 권한 변경/위임 초기값 |
|
|
|
|
* cstmrGroupSno: 유저와 그룹이 매핑된 번호 |
|
|
|
|
* groupAuthCd: 유저의 그룹 권한 코드 |
|
|
|
|
*/ |
|
|
|
|
const [saveData, setSaveData] = useState({ |
|
|
|
|
cstmrGroupSno: '', |
|
|
|
|
groupAuthCd: '' |
|
|
|
@ -45,12 +57,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
desc: '' |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const [infoModal, setInfoModal] = useState({ |
|
|
|
|
isOpen: false, |
|
|
|
|
title: '', |
|
|
|
|
desc: '' |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 그룹목록 컬럼명
|
|
|
|
|
const columns = [ |
|
|
|
|
{ |
|
|
|
|
name: '그룹명', |
|
|
|
@ -106,9 +113,9 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
onClick={() => |
|
|
|
|
handlerDetail( |
|
|
|
|
row?.groupId, |
|
|
|
|
row?.groupNm, |
|
|
|
|
row?.groupAuthCd, |
|
|
|
|
row?.aprvlYn |
|
|
|
|
row?.groupNm |
|
|
|
|
// row?.groupAuthCd,
|
|
|
|
|
// row?.aprvlYn
|
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
> |
|
|
|
@ -119,6 +126,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
} |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
// 사용자목록 컬럼명
|
|
|
|
|
const userColumns = [ |
|
|
|
|
{ |
|
|
|
|
name: '그룹명', |
|
|
|
@ -191,16 +199,17 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
let leader = false; |
|
|
|
|
let normal = false; |
|
|
|
|
|
|
|
|
|
let my = ''; |
|
|
|
|
let myGroupAuthCd = ''; |
|
|
|
|
if (groupList) { |
|
|
|
|
let my = groupList?.find(prev => { |
|
|
|
|
my = groupList?.find(prev => { |
|
|
|
|
if (prev.groupId === row?.groupId) { |
|
|
|
|
return prev; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
myGroupAuthCd = my.myGroupAuthCd; |
|
|
|
|
} else if (joinList) { |
|
|
|
|
let my = joinList?.find(prev => { |
|
|
|
|
my = joinList?.find(prev => { |
|
|
|
|
if (prev.groupId === row?.groupId) { |
|
|
|
|
return prev; |
|
|
|
|
} |
|
|
|
@ -208,8 +217,6 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
myGroupAuthCd = my.groupAuthCd; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// console.log(row, my);
|
|
|
|
|
|
|
|
|
|
if (user.authId === 'SUPER') { |
|
|
|
|
if (row?.groupAuthCd === 'MASTER') { |
|
|
|
|
master = true; |
|
|
|
@ -291,22 +298,7 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
} |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
// useEffect(() => {
|
|
|
|
|
// // handlerSearch();
|
|
|
|
|
// handlerCancel();
|
|
|
|
|
// }, []);
|
|
|
|
|
|
|
|
|
|
const handlerSearch = () => { |
|
|
|
|
if (params.cstmrSno && user?.cstmrSno) { |
|
|
|
|
dispatch( |
|
|
|
|
Actions.USER_LIST.request({ |
|
|
|
|
searchParams: params, |
|
|
|
|
cstmrSno: user?.cstmrSno |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 권한에 따른 그룹목록 요청
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (user?.cstmrSno) { |
|
|
|
|
setParams({ |
|
|
|
@ -324,17 +316,30 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
// dispatch(Actions.JOIN_LIST.request({ cstmrSno: user?.cstmrSno }));
|
|
|
|
|
// setParams({
|
|
|
|
|
// ...params,
|
|
|
|
|
// cstmrSno: user?.cstmrSno
|
|
|
|
|
// });
|
|
|
|
|
} |
|
|
|
|
}, [user]); |
|
|
|
|
|
|
|
|
|
const handlerDetail = (groupId, groupNm, groupAuthCd, aprvlYn) => { |
|
|
|
|
/** |
|
|
|
|
* 상세보기 선택시 사용자 목록 요청 |
|
|
|
|
*/ |
|
|
|
|
const handlerSearch = () => { |
|
|
|
|
if (params.cstmrSno && user?.cstmrSno) { |
|
|
|
|
dispatch( |
|
|
|
|
Actions.USER_LIST.request({ |
|
|
|
|
searchParams: params, |
|
|
|
|
cstmrSno: user?.cstmrSno |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 상세보기 선택 시 사용자목록 요청 |
|
|
|
|
* @param {string} groupId 선택한 그룹의 ID |
|
|
|
|
* @param {string} groupNm 선택한 그룹명 |
|
|
|
|
*/ |
|
|
|
|
const handlerDetail = (groupId, groupNm) => { |
|
|
|
|
//권한 상관없이 조회 가능
|
|
|
|
|
// dispatch(Actions.SELECT({ groupId: groupId, groupNm, groupNm }));
|
|
|
|
|
dispatch(Actions.GROUP_USER_SELECT({ groupId: groupId, groupNm, groupNm })); |
|
|
|
|
const param = params; |
|
|
|
|
param.groupId = groupId; |
|
|
|
@ -348,6 +353,9 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 상세보기 선택취소 |
|
|
|
|
*/ |
|
|
|
|
const handlerCancel = () => { |
|
|
|
|
// dispatch(Actions.SELECT());
|
|
|
|
|
dispatch(Actions.GROUP_USER_SELECT()); |
|
|
|
@ -358,40 +366,15 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerLeader = cstmrGroupSno => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 확인', |
|
|
|
|
desc: '해당 사용자를 운영자 권한으로 변경 하시겠습니까?' |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
setSaveData({ |
|
|
|
|
cstmrGroupSno: cstmrGroupSno, |
|
|
|
|
joinYn: 'Y', |
|
|
|
|
groupAuthCd: 'LEADER' |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const onKeyPress = e => { |
|
|
|
|
if (e.key == 'Enter') { |
|
|
|
|
handlerSearch(); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerNormal = cstmrGroupSno => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 확인', |
|
|
|
|
desc: '해당 사용자를 사용자 권한으로 변경 하시겠습니까?' |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
setSaveData({ |
|
|
|
|
cstmrGroupSno: cstmrGroupSno, |
|
|
|
|
joinYn: 'Y', |
|
|
|
|
groupAuthCd: 'NORMAL' |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* LEVEL1 권한 위임 모달 표출 |
|
|
|
|
* 권한 위임 초기값 설정 |
|
|
|
|
*/ |
|
|
|
|
/** |
|
|
|
|
* |
|
|
|
|
* @param {number} row 권한 위임할 대상의 cstmrGroupSno |
|
|
|
|
* @param {number} my 유저의 cstmrGroupSno |
|
|
|
|
*/ |
|
|
|
|
const handlerMaster = (row, my) => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
@ -433,6 +416,47 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* LEVEL2 권한 변경 모달 표출 |
|
|
|
|
* 권한 변경 초기값 설정 |
|
|
|
|
* @param {number} cstmrGroupSno 유저와 그룹이 매핑된 번호 |
|
|
|
|
*/ |
|
|
|
|
const handlerLeader = cstmrGroupSno => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 확인', |
|
|
|
|
desc: '해당 사용자를 운영자 권한으로 변경 하시겠습니까?' |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
setSaveData({ |
|
|
|
|
cstmrGroupSno: cstmrGroupSno, |
|
|
|
|
joinYn: 'Y', |
|
|
|
|
groupAuthCd: 'LEADER' |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* LEVEL3 권한 변경 모달 표출 |
|
|
|
|
* 권한 변경 초기값 설정 |
|
|
|
|
* @param {number} cstmrGroupSno 유저와 그룹이 매핑된 번호 |
|
|
|
|
*/ |
|
|
|
|
const handlerNormal = cstmrGroupSno => { |
|
|
|
|
setModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '권한 확인', |
|
|
|
|
desc: '해당 사용자를 사용자 권한으로 변경 하시겠습니까?' |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
setSaveData({ |
|
|
|
|
cstmrGroupSno: cstmrGroupSno, |
|
|
|
|
joinYn: 'Y', |
|
|
|
|
groupAuthCd: 'NORMAL' |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 권한 변경 요청 |
|
|
|
|
*/ |
|
|
|
|
const handlerAuthSave = async () => { |
|
|
|
|
if (saveData.length === 2) { |
|
|
|
|
dispatch(Actions.USER_DELEGATE.request(saveData)); |
|
|
|
@ -441,6 +465,18 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 엔터키 이벤트 |
|
|
|
|
*/ |
|
|
|
|
const onKeyPress = e => { |
|
|
|
|
if (e.key == 'Enter') { |
|
|
|
|
handlerSearch(); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 검색조건 변경 핸들러 |
|
|
|
|
*/ |
|
|
|
|
const handlerInput = e => { |
|
|
|
|
const { name, value } = e.target; |
|
|
|
|
setParams({ |
|
|
|
@ -449,6 +485,10 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 사용자목록 페이지 이동 시 새 목록 요청 |
|
|
|
|
* @param {*} page 요청하는 페이지 |
|
|
|
|
*/ |
|
|
|
|
const handlerPageChange = page => { |
|
|
|
|
const param = params; |
|
|
|
|
param.page = page; |
|
|
|
@ -492,13 +532,6 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
onKeyPress={onKeyPress} |
|
|
|
|
setParams={setParams} |
|
|
|
|
/> |
|
|
|
|
{/* <BasisGroupUsersGrid |
|
|
|
|
data={userList} |
|
|
|
|
title={'사용자'} |
|
|
|
|
columns={userColumns} |
|
|
|
|
count={userCount} |
|
|
|
|
pagination={false} |
|
|
|
|
/> */} |
|
|
|
|
</> |
|
|
|
|
) : ( |
|
|
|
|
<div className='mt-2 no-dataTable'> |
|
|
|
@ -534,7 +567,6 @@ export const BasisGroupUsersContainer = props => {
|
|
|
|
|
handlerConfirm={handlerAuthSave} |
|
|
|
|
color='primary' |
|
|
|
|
/> |
|
|
|
|
<InfoModal modal={infoModal} setModal={setInfoModal} /> |
|
|
|
|
</CustomMainLayout> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|