diff --git a/src/components/basis/group/BasisGroupUsersSearch.js b/src/components/basis/group/BasisGroupUsersSearch.js index 81756dc1..40c36400 100644 --- a/src/components/basis/group/BasisGroupUsersSearch.js +++ b/src/components/basis/group/BasisGroupUsersSearch.js @@ -49,7 +49,7 @@ export const BasisGroupUsersSearch = props => {
-
+ {/*
그룹명
@@ -74,7 +74,7 @@ export const BasisGroupUsersSearch = props => {
- + */}
사용자 명
diff --git a/src/containers/basis/flight/plan/FlightPlanContainer.js b/src/containers/basis/flight/plan/FlightPlanContainer.js index 33c0fe11..12a8f482 100644 --- a/src/containers/basis/flight/plan/FlightPlanContainer.js +++ b/src/containers/basis/flight/plan/FlightPlanContainer.js @@ -60,8 +60,6 @@ const FlightPlanContainer = () => { })); }; - - const handleGroupSelect = ({ groupId, groupNm, groupAuthCd }) => { // 권한 상관 없이 모두 조회 가능 const param = searchData; diff --git a/src/containers/basis/group/BasisGroupUsersContainer.js b/src/containers/basis/group/BasisGroupUsersContainer.js index ff151a21..4156fc24 100644 --- a/src/containers/basis/group/BasisGroupUsersContainer.js +++ b/src/containers/basis/group/BasisGroupUsersContainer.js @@ -1,27 +1,35 @@ import { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useHistory } from 'react-router-dom'; -import { Button } from 'reactstrap'; +import { Button, Row, Col } from 'reactstrap'; +import { BasisGroupGrid } from '../../../components/basis/group/BasisGroupGrid'; import { BasisGroupUsersGrid } from '../../../components/basis/group/BasisGroupUsersGrid'; 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 { userList, userCount, joinList, joinListCount } = useSelector( - state => state.groupState - ); - - const { user } = useSelector(state => state.authState); - const dispatch = useDispatch(); const history = useHistory(); + const { + joinList, + joinListCount, + selectGroup, + groupList, + groupListCount, + userList, + userListCount + } = useSelector(state => state.groupState); + const { user } = useSelector(state => state.authState); const [params, setParams] = useState({ - cstmrSno: user?.cstmrSno + cstmrSno: user?.cstmrSno, + groupId: '', + groupAuthCd: '', + aprvlYn: '' }); - const titleName = '사용자 관리'; const [saveData, setSaveData] = useState({ @@ -36,7 +44,76 @@ export const BasisGroupUsersContainer = props => { desc: '' }); + const [infoModal, setInfoModal] = useState({ + isOpen: false, + title: '', + desc: '' + }); + const columns = [ + { + name: '그룹명', + selector: 'groupNm', + minWidth: '102px', + sortable: true, + cell: row => { + return row?.groupNm; + // return selectData; + } + }, + { + name: '그룹 코드', + selector: 'groupId', + minWidth: '102px', + sortable: true, + cell: row => { + return row?.groupId; + } + }, + { + name: '', + sortable: true, + cell: row => { + // return selectData?.groupId === row?.groupId ? ( + // handlerCancel()} + // > + // 선택취소 + // + // ) : ( + // + // handlerDetail( + // row?.groupId, + // row?.groupNm, + // row?.groupAuthCd, + // row?.aprvlYn + // ) + // } + // > + // 상세보기 + // + // ); + return ( + + handlerDetail(row?.groupId, row?.groupAuthCd, row?.aprvlYn) + } + > + 상세보기 + + ); + } + } + ]; + + const userColumns = [ { name: '그룹명', selector: 'groupNm', @@ -68,7 +145,7 @@ export const BasisGroupUsersContainer = props => { { name: '사용자 ID', selector: 'userId', - minWidth: '150px', + minWidth: '120px', sortable: true, cell: row => { return row?.userId; @@ -78,7 +155,7 @@ export const BasisGroupUsersContainer = props => { { name: '권한명', selector: 'groupAuthCd', - minWidth: '102px', + minWidth: '105px', sortable: true, cell: row => { return row?.groupAuthCd; @@ -87,7 +164,7 @@ export const BasisGroupUsersContainer = props => { { name: '가입 일시', selector: 'joinDt', - minWidth: '200px', + minWidth: '150px', sortable: true, cell: row => { return row?.joinDt; @@ -166,38 +243,57 @@ export const BasisGroupUsersContainer = props => { } ]; + // useEffect(() => { + // handlerSearch(); + // }, []); + + const handlerSearch = () => { + if (params.cstmrSno && user?.cstmrSno) { + dispatch( + Actions.USER_LIST.request({ + searchParams: params, + cstmrSno: user?.cstmrSno + }) + ); + } + }; + useEffect(() => { if (user?.cstmrSno) { dispatch(Actions.JOIN_LIST.request({ cstmrSno: user?.cstmrSno })); - // setParams({ - // ...params, - // cstmrSno: user?.cstmrSno - // }); - - // dispatch( - // Actions.USER_LIST.request({ - // searchParams: { cstmrSno: user?.cstmrSno } - // }) - // ); + setParams({ + ...params, + cstmrSno: user?.cstmrSno + }); } }, [user]); - // useEffect(() => { - - // }, [params]); - - useEffect(() => { - handlerSearch(); - }, []); + const handlerDetail = (groupId, groupAuthCd, aprvlYn) => { + if ( + groupAuthCd === 'MASTER' || + user.authId === 'SUPER' || + user.authId === 'ADMIN' || + (aprvlYn === 'Y' && groupAuthCd === 'LEADER') + ) { + const param = params; + param.groupId = groupId; + param.groupAuthCd = groupAuthCd; + param.aprvlYn = aprvlYn; - const handlerSearch = () => { - if (params.cstmrSno && user?.cstmrSno) { dispatch( Actions.USER_LIST.request({ - searchParams: params, - cstmrSno: user?.cstmrSno + searchParams: param }) ); + + console.log('볼 수 있음'); + } else { + console.log('볼 수 없다'); + setInfoModal({ + isOpen: true, + title: '권한 확인', + desc: '사용자관리 확인을 위해서는 운영자 권한이 필요합니다. 운영자에게 권한을 부여받고 다시 시도해 주세요.' + }); } }; @@ -274,7 +370,7 @@ export const BasisGroupUsersContainer = props => { return ( - { + /> */} +
+ + + + + + {!userList ? ( +
+ 그룹 목록에서 상세보기를 클릭하세요. +
+ ) : ( + <> + + {/* */} + + )} + + + + +
+
{ handlerConfirm={handlerAuthSave} color='primary' /> + {/* */}
); }; diff --git a/src/modules/basis/group/actions/basisGroupAction.ts b/src/modules/basis/group/actions/basisGroupAction.ts index 2d6b72af..12582659 100644 --- a/src/modules/basis/group/actions/basisGroupAction.ts +++ b/src/modules/basis/group/actions/basisGroupAction.ts @@ -9,7 +9,8 @@ import { UserGroupData, UserGroupState, GroupState, - MainGroupData + MainGroupData, + SelectGroupData } from '../models/basisGroupModel'; //# 나의 그룹 목록 조회 @@ -101,6 +102,9 @@ const GROUP_MAIN_LIST_REQUEST = 'basis/group/GROUP_MAIN_LIST_REQUEST'; const GROUP_MAIN_LIST_SUCCESS = 'basis/group/GROUP_MAIN_LIST_SUCCESS'; const GROUP_MAIN_LIST_FAILURE = 'basis/group/GROUP_MAIN_LIST_FAILURE'; +//# 그룹 선택 +const ROUP_SELECT = 'basis/group/select'; + export const MY_LIST = createAsyncAction( MY_LIST_REQUEST, MY_LIST_SUCCESS, @@ -207,6 +211,8 @@ export const USER_DELEGATE = createAsyncAction( USER_DELEGATE_FAILURE )(); +export const USER_GROUP_SELECT = createAction(ROUP_SELECT)(); + const actions = { MY_LIST, JOIN_LIST, @@ -225,7 +231,8 @@ const actions = { USER_UPDATE, USER_DELEGATE, GROUP_MYLIST, - GROUP_MAIN_LIST + GROUP_MAIN_LIST, + USER_GROUP_SELECT }; export type GroupAction = ActionType; diff --git a/src/modules/basis/group/models/basisGroupModel.ts b/src/modules/basis/group/models/basisGroupModel.ts index 2c417f62..308ee0c1 100644 --- a/src/modules/basis/group/models/basisGroupModel.ts +++ b/src/modules/basis/group/models/basisGroupModel.ts @@ -18,6 +18,13 @@ export interface GroupState { newGroupId: String | ''; searchParams: string | ''; error: ErrorModel | undefined; + selectGroup: SelectGroupData | undefined; +} + +export interface SelectGroupData { + cstmrSno: number; + groupId: string; + groupNm: string; } export interface GroupSearchData { @@ -111,5 +118,10 @@ export const initGroup = { groupId: '', newGroupId: '', searchParams: '', - error: undefined + error: undefined, + selectGroup: { + cstmrSno: 0, + groupId: '', + groupNm: '' + } }; diff --git a/src/modules/basis/group/reducers/basisGroupReducer.ts b/src/modules/basis/group/reducers/basisGroupReducer.ts index 8dfdbcb6..03df5255 100644 --- a/src/modules/basis/group/reducers/basisGroupReducer.ts +++ b/src/modules/basis/group/reducers/basisGroupReducer.ts @@ -96,4 +96,11 @@ export const groupReducer = createReducer( draft.userList = data; draft.userCount = count; }) + ) + //그룹 선택 + .handleAction(Actions.USER_GROUP_SELECT, (state, action) => + produce(state, draft => { + const data = action.payload; + draft.selectGroup = data; + }) );