diff --git a/src/containers/basis/group/BasisGroupUsersContainer.js b/src/containers/basis/group/BasisGroupUsersContainer.js index f7b92638..8507ea0e 100644 --- a/src/containers/basis/group/BasisGroupUsersContainer.js +++ b/src/containers/basis/group/BasisGroupUsersContainer.js @@ -13,12 +13,6 @@ export const BasisGroupUsersContainer = props => { state => state.groupState ); - useEffect(() => { - if (user?.cstmrSno) { - dispatch(Actions.JOIN_LIST.request({ cstmrSno: user?.cstmrSno })); - } - }, [user]); - const { user } = useSelector(state => state.authState); const dispatch = useDispatch(); @@ -46,7 +40,7 @@ export const BasisGroupUsersContainer = props => { { name: '그룹명', selector: 'groupNm', - minWidth: '102px', + minWidth: '150px', sortable: true, cell: row => { return row?.groupNm; @@ -74,7 +68,7 @@ export const BasisGroupUsersContainer = props => { { name: '사용자 ID', selector: 'userId', - minWidth: '102px', + minWidth: '150px', sortable: true, cell: row => { return row?.userId; @@ -93,7 +87,7 @@ export const BasisGroupUsersContainer = props => { { name: '가입 일시', selector: 'joinDt', - minWidth: '102px', + minWidth: '200px', sortable: true, cell: row => { return row?.joinDt; @@ -102,7 +96,7 @@ export const BasisGroupUsersContainer = props => { { name: '권한 변경', // selector: 'cntrlStDate', - // minWidth: '102px', + minWidth: '130px', sortable: false, cell: row => { const my = joinList?.find((prev, idx) => { @@ -138,6 +132,7 @@ export const BasisGroupUsersContainer = props => { onClick={() => handlerAdminConfirm(row?.cstmrGroupSno)} > 운영자로 변경 + {/* ADMIN */} ); } @@ -163,15 +158,46 @@ export const BasisGroupUsersContainer = props => { // // ); } + }, + { + name: '위임 하기', + // minWidth: '102px', + sortable: false, + cell: row => { + const my = joinList?.find((prev, idx) => { + if (prev.groupId === row?.groupId) { + return prev; + } + }); + // console.log('내 권한 : ', my?.groupAuthCd); + // console.log('이 사람의 권한 : ', row?.groupAuthCd); + + if (row?.groupAuthCd === 'ADMIN') { + if (my?.groupAuthCd === 'CREATER') { + return ( + + handlerCreaterConfirm(row?.cstmrGroupSno, my?.cstmrGroupSno) + } + > + 위임하기 + + ); + } + } + } } ]; useEffect(() => { if (user?.cstmrSno) { - setParams({ - ...params, - cstmrSno: user?.cstmrSno - }); + dispatch(Actions.JOIN_LIST.request({ cstmrSno: user?.cstmrSno })); + // setParams({ + // ...params, + // cstmrSno: user?.cstmrSno + // }); // dispatch( // Actions.USER_LIST.request({ @@ -181,9 +207,9 @@ export const BasisGroupUsersContainer = props => { } }, [user]); - useEffect(() => { - // console.log('changeParam >>>', params); - }, [params]); + // useEffect(() => { + // console.log('changeParam >>>', params); + // }, [params]); useEffect(() => { handlerSearch(); @@ -232,8 +258,33 @@ export const BasisGroupUsersContainer = props => { }); }; + const handlerCreaterConfirm = (row, my) => { + setModal({ + isOpen: true, + title: '권한 위임', + desc: '해당 사용자에게 그룹장을 위임 하시겠습니까?' + }); + + setSaveData([ + { + cstmrGroupSno: row, + joinYn: 'Y', + groupAuthCd: 'CREATER' + }, + { + cstmrGroupSno: my, + joinYn: 'Y', + groupAuthCd: 'USER' + } + ]); + }; + const handlerAuthSave = async () => { - dispatch(Actions.USER_UPDATE.request(saveData)); + if (saveData.length === 2) { + dispatch(Actions.USER_DELEGATE.request(saveData)); + } else { + dispatch(Actions.USER_UPDATE.request(saveData)); + } }; const handlerInput = e => { diff --git a/src/modules/basis/group/actions/basisGroupAction.ts b/src/modules/basis/group/actions/basisGroupAction.ts index 36e804e0..5f4a56d1 100644 --- a/src/modules/basis/group/actions/basisGroupAction.ts +++ b/src/modules/basis/group/actions/basisGroupAction.ts @@ -7,6 +7,7 @@ import { JoinGroupData, AprvGroupData, UserGroupData, + UserGroupState, GroupState } from '../models/basisGroupModel'; @@ -60,7 +61,6 @@ const GROUP_MYLIST_REQUEST = 'basis/group/GROUP_MYLIST_REQUEST'; const GROUP_MYLIST_SUCCESS = 'basis/group/GROUP_MYLIST_SUCCESS'; const GROUP_MYLIST_FAILURE = 'basis/group/GROUP_MYLIST_FAILURE'; - //# 그룹 가입처리 const GROUP_JOIN_REQUEST = 'basis/group/GROUP_JOIN_REQUEST'; const GROUP_JOIN_SUCCESS = 'basis/group/GROUP_JOIN_SUCCESS'; @@ -91,6 +91,11 @@ const USER_UPDATE_REQUEST = 'basis/group/USER_UPDATE_REQUEST'; const USER_UPDATE_SUCCESS = 'basis/group/USER_UPDATE_SUCCESS'; const USER_UPDATE_FAILURE = 'basis/group/USER_UPDATE_FAILURE'; +//# 그룹장 권한 위임 +const USER_DELEGATE_REQUEST = 'basis/group/USER_DELEGATE_REQUEST'; +const USER_DELEGATE_SUCCESS = 'basis/group/USER_DELEGATE_SUCCESS'; +const USER_DELEGATE_FAILURE = 'basis/group/USER_DELEGATE_FAILURE'; + export const MY_LIST = createAsyncAction( MY_LIST_REQUEST, MY_LIST_SUCCESS, @@ -107,7 +112,7 @@ export const GROUP_MYLIST = createAsyncAction( GROUP_MYLIST_REQUEST, GROUP_MYLIST_SUCCESS, GROUP_MYLIST_FAILURE - )(); +)(); export const GROUP_DETAIL = createAsyncAction( GROUP_DETAIL_REQUEST, @@ -149,7 +154,6 @@ export const GROUP_JOINLIST = createAsyncAction( GROUP_JOINLIST_FAILURE )(); - export const GROUP_JOIN = createAsyncAction( GROUP_JOIN_REQUEST, GROUP_JOIN_SUCCESS, @@ -186,6 +190,12 @@ export const USER_UPDATE = createAsyncAction( USER_UPDATE_FAILURE )(); +export const USER_DELEGATE = createAsyncAction( + USER_DELEGATE_REQUEST, + USER_DELEGATE_SUCCESS, + USER_DELEGATE_FAILURE +)(); + const actions = { MY_LIST, JOIN_LIST, @@ -202,6 +212,7 @@ const actions = { APPROVAL_UPDATE, USER_LIST, USER_UPDATE, + USER_DELEGATE, GROUP_MYLIST }; diff --git a/src/modules/basis/group/apis/basisGroupApi.ts b/src/modules/basis/group/apis/basisGroupApi.ts index 58c7efad..1a3885fe 100644 --- a/src/modules/basis/group/apis/basisGroupApi.ts +++ b/src/modules/basis/group/apis/basisGroupApi.ts @@ -5,7 +5,8 @@ import { AprvGroupData, GroupData, JoinGroupData, - UserGroupData + UserGroupData, + UserGroupState } from '../models/basisGroupModel'; // import { ReponseControlGpHistory } from '../models/controlGpModel'; @@ -28,13 +29,11 @@ export const groupAPI = { return await axios.get(`api/bas/group/detail/${id}`); }, createGroup: async (data: GroupData) => { - const res = await axios.post('api/bas/group/create', data); return res; }, updateGroup: async (data: GroupData) => { - const res = await axios.put('api/bas/group/update', data); return res; @@ -60,13 +59,11 @@ export const groupAPI = { return await axios.get(`api/bas/group/join/list${queryString}`); }, createJoinGroup: async (data: JoinGroupData) => { - const res = await axios.post('api/bas/group/join/create', data); return res; }, updateJoinGroup: async (data: JoinGroupData) => { - const res = await axios.put('api/bas/group/join/update', data); return res; @@ -79,7 +76,6 @@ export const groupAPI = { return await axios.get(`api/bas/group/aprv/list${queryString}`); }, updateAprvGroup: async (data: AprvGroupData) => { - const res = await axios.put('api/bas/group/aprv/update', data); return res; @@ -92,9 +88,13 @@ export const groupAPI = { return await axios.get(`api/bas/group/user/list${queryString}`); }, updateUser: async (data: UserGroupData) => { - const res = await axios.put('api/bas/group/user/update', data); + return res; + }, + delegateUser: async (data: UserGroupState) => { + const res = await axios.put('api/bas/group/user/delegate', data); + return res; } }; diff --git a/src/modules/basis/group/models/basisGroupModel.ts b/src/modules/basis/group/models/basisGroupModel.ts index c11b4925..f031f7fd 100644 --- a/src/modules/basis/group/models/basisGroupModel.ts +++ b/src/modules/basis/group/models/basisGroupModel.ts @@ -61,6 +61,9 @@ export interface AprvGroupData { aprvlUserId: String; } +export interface UserGroupState { + userGroupData: UserGroupData[] | undefined; +} export interface UserGroupData { cstmrGroupSno: number; groupId: string; diff --git a/src/modules/basis/group/sagas/basisGroupSaga.ts b/src/modules/basis/group/sagas/basisGroupSaga.ts index 132031de..d945ee1e 100644 --- a/src/modules/basis/group/sagas/basisGroupSaga.ts +++ b/src/modules/basis/group/sagas/basisGroupSaga.ts @@ -163,13 +163,13 @@ function* createGroupSaga( yield put( MessageActions.IS_ERROR({ errorCode: ERROR_MESSAGE.code, - errorMessage: data.errorMessage + ' (그룹명)', + errorMessage: data.errorMessage + ' (그룹명)', isHistoryBack: false, isRefresh: false }) ); - } else{ - throw Error; + } else { + throw Error; } } } catch (error) { @@ -461,6 +461,40 @@ function* updateUserSaga( } } +function* delegateUserSaga( + action: ActionType +) { + try { + const saveData = action.payload; + const res = yield call(Apis.groupAPI.delegateUser, saveData); + + const { data } = res; + + if (data.result) { + yield put( + MessageActions.IS_MESSAGE({ + messageCode: SAVE_MESSAGE.code, + message: SAVE_MESSAGE.message, + isHistoryBack: false, + isRefresh: true + }) + ); + } else { + throw Error; + } + } catch (error) { + yield put( + MessageActions.IS_ERROR({ + errorCode: ERROR_MESSAGE.code, + errorMessage: ERROR_MESSAGE.message, + isHistoryBack: false, + isRefresh: false + }) + ); + // yield put(Actions.GROUP_UPDATE.failure(error)); + } +} + export function* basGroupSaga() { yield takeEvery(Actions.MY_LIST.request, listMyGroupSaga); yield takeEvery(Actions.JOIN_LIST.request, listMyJoinSaga); @@ -478,4 +512,5 @@ export function* basGroupSaga() { yield takeEvery(Actions.GROUP_JOIN_UPDATE.request, updateJoinGroupSaga); yield takeEvery(Actions.APPROVAL_UPDATE.request, updateAprvSaga); yield takeEvery(Actions.USER_UPDATE.request, updateUserSaga); + yield takeEvery(Actions.USER_DELEGATE.request, delegateUserSaga); }