From ca4f648a701b30c73d53d17a2b462245a95a1b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?junh=5Feee=28=EC=9D=B4=EC=A4=80=ED=9D=AC=29?= Date: Fri, 7 Oct 2022 11:15:06 +0900 Subject: [PATCH] =?UTF-8?q?[=EA=B6=8C=ED=95=9C=EC=A0=95=EB=A6=AC]=20-=20?= =?UTF-8?q?=EA=B8=B0=EC=B2=B4=20=EB=AA=A9=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/basis/dron/BasisDronGrid.js | 24 +-- .../basis/dron/BasisDronContainer.js | 152 +++++++++++++----- 2 files changed, 115 insertions(+), 61 deletions(-) diff --git a/src/components/basis/dron/BasisDronGrid.js b/src/components/basis/dron/BasisDronGrid.js index a18bbc5..671efc2 100644 --- a/src/components/basis/dron/BasisDronGrid.js +++ b/src/components/basis/dron/BasisDronGrid.js @@ -1,27 +1,8 @@ import { GridDatabase } from '../../crud/grid/GridDatatable'; -import { - Row, - Col, - Table, - Badge, - UncontrolledDropdown, - DropdownMenu, - DropdownItem, - DropdownToggle, - Card, - CardHeader, - CardBody, - CardTitle, - CardSubtitle, - ButtonGroup, - Button, - Input, - CustomInput, - FormGroup -} from 'reactstrap'; -import { ExcelExportButton } from '../../crud/excel/ExcelExportButton'; +import { Card, Button } from 'reactstrap'; export const BasisDronGrid = props => { + // console.log(props.isMyGroup); return ( <>
@@ -34,6 +15,7 @@ export const BasisDronGrid = props => { color='primary' size='sm' onClick={props.handlerGroupCreate} + {...(props?.isMyGroup ? {} : { disabled: true })} > 기체등록 diff --git a/src/containers/basis/dron/BasisDronContainer.js b/src/containers/basis/dron/BasisDronContainer.js index 3344bf9..707105b 100644 --- a/src/containers/basis/dron/BasisDronContainer.js +++ b/src/containers/basis/dron/BasisDronContainer.js @@ -2,11 +2,18 @@ import moment from 'moment'; import { useEffect, useState } from 'react'; import { shallowEqual, useDispatch, useSelector } from 'react-redux'; import { useHistory, Link } from 'react-router-dom'; -import { Button, Col, Row } from 'reactstrap'; +import { + Button, + Col, + Row, + Modal, + ModalHeader, + ModalBody, + ModalFooter +} from 'reactstrap'; import { BasisDronGrid } from '../../../components/basis/dron/BasisDronGrid'; import { BasisGroupDronGrid } from '../../../components/basis/dron/BasisGroupDronGrid'; import { CustomMainLayout } from '../../../components/layout/CustomMainLayout'; -// import { InfoModal } from '../../../components/modal/InfoModal'; import * as Actions from '../../../modules/basis/dron/actions/basisDronAction'; import * as GroupActions from '../../../modules/basis/group/actions/basisGroupAction'; import { GET_ARCTFT_TYPE_CD } from '../../../utility/CondeUtil'; @@ -30,43 +37,44 @@ export const BasisDronContainer = props => { desc: '' }); + const [isMyGroup, setIsMyGroup] = useState(); + const columns = [ { - name: '생성일시', - selector: row => row?.createDt, + name: '그룹명', + selector: row => row.groupNm, + minWidth: '102px', sortable: true, cell: row => { - return row?.createDt ? row.createDt : '-'; + return row?.groupNm; + // return selectData; } }, { - name: '가입일시', - selector: row => row?.joinDt, + name: '그룹 코드', + selector: row => row.groupId, + minWidth: '102px', sortable: true, cell: row => { - return row?.joinDt ? row.joinDt : '-'; + return row?.groupId; } }, { - name: '그룹명', - selector: row => row.groupNm, - minWidth: '102px', + name: '생성일시', + selector: row => row?.createDt, sortable: true, cell: row => { - return row?.groupNm; - // return selectData; + return row?.createDt ? row.createDt : '-'; } }, { - name: '그룹 코드', - selector: row => row.groupId, - minWidth: '102px', + name: '가입일시', + selector: row => row?.joinDt, sortable: true, cell: row => { - return row?.groupId; + return row?.joinDt ? row.joinDt : '-'; } }, - { name: '', // selector: 'cntrlStDate', @@ -144,11 +152,63 @@ export const BasisDronContainer = props => { // minWidth: '102px', sortable: true, cell: row => { - return 상세보기; + const [isHover, setIsHover] = useState(false); + const enter = () => { + setIsHover(true); + }; + const leave = () => { + setIsHover(false); + }; + + let mine = false; + if (user.authId === 'SUPER') { + mine = true; + } else if (user.authId === 'ADMIN' || user.authId === 'USER') { + if (row.createUserId === user.userId) { + mine = true; + } + } + + return ( + <> + {mine ? ( + <> + 상세보기 + + ) : ( + <> + {/* + 상세보기 + */} + - + + )} + + ); } } ]; + const handlerNotMine = () => { + setModal({ + isOpen: true, + title: '조회 불가', + desc: '사용자가 등록한 기체가 아닙니다.', + color: 'danger' + }); + return; + }; + useEffect(() => { handlerCancel(); // if (selectData) { @@ -193,26 +253,15 @@ export const BasisDronContainer = props => { }); dispatch(Actions.LIST.request({ groupId: groupId })); - // if ( - // // groupAuthCd === 'CREATER' || - // groupAuthCd === 'MASTER' || user.authId ==='SUPER' || - // // (aprvlYn === 'Y' && groupAuthCd === 'ADMIN') - // (aprvlYn === 'Y' && groupAuthCd === 'LEADER') - // ) { - // dispatch(Actions.SELECT({ groupId: groupId, groupNm: groupNm })); - // setParams({ - // ...params, - // groupId: groupId, - // groupNm: groupNm - // }); - // dispatch(Actions.LIST.request({ groupId: groupId })); - // } else { - // setModal({ - // isOpen: true, - // title: '권한 확인', - // desc: '기체정보 확인을 위해서는 운영자 권한이 필요합니다. 운영자에게 권한을 부여받고 다시 시도해 주세요.' - // }); - // } + let my = false; + if (user.authId === 'SUPER') { + my = true; + } else if (user.authId === 'ADMIN' || user.authId === 'USER') { + if (groupAuthCd) { + my = true; + } + } + setIsMyGroup(my); }; const handlerGroupCreate = () => { @@ -279,12 +328,35 @@ export const BasisDronContainer = props => { pagination={true} paginationPerPage={10} paginationRowsPerPageOptions={[10, 20, 30, 40]} + isMyGroup={isMyGroup} /> )}
- {/* */} +
+ setModal({ ...modal, isOpen: !modal.isOpen })} + modalClassName={'modal-' + `${modal.color}`} + className='modal-dialog-centered' + > + setModal({ ...modal, isOpen: !modal.isOpen })} + > + {modal.title} + + {modal.desc} + + {' '} + + +
); };