sanguu(박상현) 2 years ago
parent
commit
56c8d0dc1e
  1. 16
      src/components/analysis/history/AnalysisHistorySearch.js
  2. 3
      src/components/analysis/simulation/AnalysisSimulationDetail.js
  3. 4
      src/components/analysis/simulation/AnalysisSimulatorSlider.js
  4. 24
      src/components/basis/dron/BasisDronGrid.js
  5. 43
      src/components/basis/flight/plan/FlightPlanGrid.js
  6. 2
      src/components/basis/flight/plan/FlightPlanGroupGrid.js
  7. 327
      src/components/basis/flight/plan/FlightPlanSearch.js
  8. 13
      src/components/basis/flight/schedule/FlightScheduleGrid.js
  9. 3
      src/containers/analysis/history/AnalysisHistoryContainer.js
  10. 13
      src/containers/analysis/simulator/AnalysisSimulationContainer.js
  11. 152
      src/containers/basis/dron/BasisDronContainer.js
  12. 33
      src/containers/basis/flight/plan/FlightPlanContainer.js
  13. 33
      src/containers/basis/group/BasisGroupUsersContainer.js

16
src/components/analysis/history/AnalysisHistorySearch.js

@ -13,10 +13,8 @@ import {
} from 'reactstrap';
export const AnalysisHistorySearch = props => {
useEffect(() => {
if (props.isClick != -1) {
props.setParams({
...props.params,
stDate: moment().subtract(props.dateType, 'day').format('YYYY-MM-DD'),
@ -24,16 +22,14 @@ export const AnalysisHistorySearch = props => {
groupId: props.searchData.groupId
});
}
}, [props.dateType, props.isClick]);
return (
// <div className='pal-card-box'>
<div>
<Row>
<Col>
<div className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div className='mt-2 cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div>
<h4>검색조건</h4>
</div>
@ -61,7 +57,7 @@ export const AnalysisHistorySearch = props => {
<Col className='list-input' xl='4' md='6' sm='12'>
<div className='d-flex align-items-center calendar-flat'>
<Flatpickr
placeholder="날짜를 선택해주세요"
placeholder='날짜를 선택해주세요'
id='searchDate'
value={[
props.params.stDate,
@ -103,7 +99,9 @@ export const AnalysisHistorySearch = props => {
</Button>
<Button
outline
className={props.isClick == 15 ? 'active' : ''}
className={
props.isClick == 15 ? 'active' : ''
}
size='sm'
onClick={e => props.handlerClickDate(15)}
>
@ -111,7 +109,9 @@ export const AnalysisHistorySearch = props => {
</Button>
<Button
outline
className={props.isClick == 30 ? 'active' : ''}
className={
props.isClick == 30 ? 'active' : ''
}
size='sm'
onClick={e => props.handlerClickDate(30)}
>

3
src/components/analysis/simulation/AnalysisSimulationDetail.js

@ -210,7 +210,8 @@ export const AnalysisSimulationDetail = props => {
</div> */}
{props.stcsList?.map(item => {
return (
<div key={item.timeCd}
<div
key={item.timeCd}
className={
props.timeCd === item.timeCd
? 'simulation-date-num date-num-focus'

4
src/components/analysis/simulation/AnalysisSimulatorSlider.js

@ -39,12 +39,12 @@ const AnalysisSimulatorSlider = ({
direction
};
useEffect(() => {
}, [playCount]);
useEffect(() => {}, [playCount]);
return (
<div className='simulation-slider'>
{/* <h5 className='my-2'>Default / Primary Color Slider</h5> */}
{/* <Nouislider className='mt-md-1 mt-3 mb-4' {...colorOptions} behaviour={'tap'}/> */}
<Nouislider
className='mt-md-1 mt-3 mb-1'
{...colorOptions}

24
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 (
<>
<div className='mt-2 cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
@ -34,6 +15,7 @@ export const BasisDronGrid = props => {
color='primary'
size='sm'
onClick={props.handlerGroupCreate}
{...(props?.isMyGroup ? {} : { disabled: true })}
>
기체등록
</Button.Ripple>

43
src/components/basis/flight/plan/FlightPlanGrid.js

@ -5,7 +5,15 @@ import { Redirect } from 'react-router-dom';
import { Link, useHistory } from 'react-router-dom';
import { useSelector } from 'react-redux';
const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage, paginationRowsPerPageOptions }) => {
const FlightPlanGrid = ({
movePage,
planListData,
pagination,
paginationPerPage,
paginationRowsPerPageOptions,
isMyGroup,
user
}) => {
const { loading } = useSelector(state => state.loadingReducer);
const columns = [
{ id: 'planSno', name: '번호', cell: (row, i) => <div>{i + 1}</div> },
@ -36,10 +44,28 @@ const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage,
id: 'moveDetail',
name: '상세보기',
cell: row => {
let mine = false;
if (user.authId === 'SUPER') {
mine = true;
} else if (user.authId === 'ADMIN' || user.authId === 'USER') {
if (row.createUserId === user.userId) {
mine = true;
}
}
console.log(row.createUserId, user.userId);
return (
<Link to={`/basis/flight/plan/detail/${row.planSno}`} size='sm'>
상세보기
</Link>
<>
{mine ? (
<>
<Link to={`/basis/flight/plan/detail/${row.planSno}`} size='sm'>
상세보기
</Link>
</>
) : (
<>-</>
)}
</>
);
}
}
@ -57,7 +83,12 @@ const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage,
</span>
</div>
<div className='d-flex align-items-center'>
<Button.Ripple color='primary' size='sm' onClick={movePage}>
<Button.Ripple
color='primary'
size='sm'
onClick={movePage}
{...(isMyGroup ? {} : { disabled: true })}
>
{/* 계획서 생성 */}
비행계획서 신청
</Button.Ripple>
@ -82,7 +113,7 @@ const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage,
pagination={pagination}
paginationPerPage={paginationPerPage}
paginationRowsPerPageOptions={paginationRowsPerPageOptions}
// pagination={props.pagination}
// pagination={props.pagination}
/>
{/* 검색된 데이터가 없습니다. */}
</div>

2
src/components/basis/flight/plan/FlightPlanGroupGrid.js

@ -9,7 +9,7 @@ const FlightPlanGroupGrid = ({
handlerGroupCancel,
handleGroupSelect,
paginationRowsPerPageOptions,
pagination,
pagination
}) => {
const columns = [
{

327
src/components/basis/flight/plan/FlightPlanSearch.js

@ -1,172 +1,171 @@
import React, {useState} from 'react';
import {Button, Card, CardBody, Col, CustomInput, Row} from 'reactstrap';
import {Search} from 'react-feather';
import React, { useState } from 'react';
import { Button, Card, CardBody, Col, CustomInput, Row } from 'reactstrap';
import { Search } from 'react-feather';
import Flatpickr from 'react-flatpickr';
import moment from 'moment';
const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) => {
const {schFltStDt, schFltEndDt, aprvlYn} = searchData;
const initCheckState = {
'all': aprvlYn == 'A',
'yes': (aprvlYn == 'Y' || aprvlYn == 'A'),
'no': (aprvlYn == 'N' || aprvlYn == 'A'),
}
const [checkState, setCheckState] = useState(initCheckState);
const handleClickSearch = (e) => {
handleSearch(searchData);
}
const handleChangeInput = (dates, value, config) => {
if (dates.length === 2) {
const schFltStDt = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss');
const schFltEndDt = moment(dates[1]).set({'h': 23, 'm': 59, 's': 59}).format('YYYY-MM-DD HH:mm:ss');
handleChangeSearchData({schFltStDt, schFltEndDt})
}
const FlightPlanSearch = ({
searchData,
handleChangeSearchData,
handleSearch
}) => {
const { schFltStDt, schFltEndDt, aprvlYn } = searchData;
const initCheckState = {
all: aprvlYn == 'A',
yes: aprvlYn == 'Y' || aprvlYn == 'A',
no: aprvlYn == 'N' || aprvlYn == 'A'
};
const [checkState, setCheckState] = useState(initCheckState);
const handleClickSearch = e => {
handleSearch(searchData);
};
const handleChangeInput = (dates, value, config) => {
if (dates.length === 2) {
const schFltStDt = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss');
const schFltEndDt = moment(dates[1])
.set({ h: 23, m: 59, s: 59 })
.format('YYYY-MM-DD HH:mm:ss');
handleChangeSearchData({ schFltStDt, schFltEndDt });
}
const handleChangeCheckbox = (e) => {
const {name, value, checked} = e.target;
let val;
switch (value) {
case 'A':
val = checked ? 'A' : '';
handleChangeSearchData({[name]: val})
setCheckState({
'all': checked,
'yes': checked,
'no': checked
})
break;
case 'Y':
if (checked && checkState.no) val = 'A'
else if (checked && !checkState.no) val = 'Y'
else if (!checked && checkState.no) val = 'N'
else if (!checked && !checkState.no) val = ''
handleChangeSearchData({[name]: val})
setCheckState(prevState => ({
'all': prevState.no && checked,
'yes': checked,
'no': prevState.no
}))
break;
case 'N':
if (checked && checkState.yes) val = 'A'
else if (checked && !checkState.yes) val = 'N'
else if (!checked && checkState.yes) val = 'Y'
else if (!checked && !checkState.yes) val = ''
handleChangeSearchData({[name]: val})
setCheckState(prevState => ({
'all': prevState.yes && checked,
'yes': prevState.yes,
'no': checked
}))
break;
default:
break;
}
};
const handleChangeCheckbox = e => {
const { name, value, checked } = e.target;
let val;
switch (value) {
case 'A':
val = checked ? 'A' : '';
handleChangeSearchData({ [name]: val });
setCheckState({
all: checked,
yes: checked,
no: checked
});
break;
case 'Y':
if (checked && checkState.no) val = 'A';
else if (checked && !checkState.no) val = 'Y';
else if (!checked && checkState.no) val = 'N';
else if (!checked && !checkState.no) val = '';
handleChangeSearchData({ [name]: val });
setCheckState(prevState => ({
all: prevState.no && checked,
yes: checked,
no: prevState.no
}));
break;
case 'N':
if (checked && checkState.yes) val = 'A';
else if (checked && !checkState.yes) val = 'N';
else if (!checked && checkState.yes) val = 'Y';
else if (!checked && !checkState.yes) val = '';
handleChangeSearchData({ [name]: val });
setCheckState(prevState => ({
all: prevState.yes && checked,
yes: prevState.yes,
no: checked
}));
break;
default:
break;
}
return (
<div>
<Row>
<Col>
<div
className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div>
<h4>검색조건</h4>
</div>
<div className='d-flex align-items-center'>
<Button.Ripple
color='primary'
size='sm'
onClick={handleClickSearch}
>
<Search size={16}/>
검색
</Button.Ripple>
</div>
</div>
<Card>
<div className='search-cont'>
<dl>
<dt>
<div className='search-box'>
<div className='search-list-ti'>신청일</div>
<div className='search-list'>
<div className='search-list-cont'>
<Row>
<Col className='list-input' xl='4' md='6' sm='12'>
<div className='d-flex align-items-center calendar-flat'>
<Flatpickr
id='searchDate'
value={[
schFltStDt,
schFltEndDt
]}
options={{
mode: 'range',
// defaultDate: [
// props.params.stDate,
// props.params.endDate
// ]
}}
onChange={handleChangeInput}
className='form-control flat-picker bg-transparent border-0 shadow-none'
/>
</div>
</Col>
</Row>
</div>
</div>
</div>
</dt>
<dt>
<div className='search-box'>
<div className='search-list-ti'>승인여부</div>
<div className='search-list'>
<div className='search-list-cont'>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox'
label='전체'
name="aprvlYn"
value="A"
// checked={true}
checked={checkState.all}
onChange={handleChangeCheckbox}
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox2'
label='승인'
name="aprvlYn"
value="Y"
checked={checkState.yes}
onChange={handleChangeCheckbox}
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox3'
label='미승인'
name="aprvlYn"
value="N"
checked={checkState.no}
onChange={handleChangeCheckbox}
/>
</div>
</div>
</div>
</dt>
</dl>
};
return (
<div>
<Row>
<Col>
<div className='mt-2 cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div>
<h4>검색조건</h4>
</div>
<div className='d-flex align-items-center'>
<Button.Ripple
color='primary'
size='sm'
onClick={handleClickSearch}
>
<Search size={16} />
검색
</Button.Ripple>
</div>
</div>
<Card>
<div className='search-cont'>
<dl>
<dt>
<div className='search-box'>
<div className='search-list-ti'>신청일</div>
<div className='search-list'>
<div className='search-list-cont'>
<Row>
<Col className='list-input' xl='4' md='6' sm='12'>
<div className='d-flex align-items-center calendar-flat'>
<Flatpickr
id='searchDate'
value={[schFltStDt, schFltEndDt]}
options={{
mode: 'range'
// defaultDate: [
// props.params.stDate,
// props.params.endDate
// ]
}}
onChange={handleChangeInput}
className='form-control flat-picker bg-transparent border-0 shadow-none'
/>
</div>
</Card>
</Col>
</Row>
</div>
)
}
</Col>
</Row>
</div>
</div>
</div>
</dt>
<dt>
<div className='search-box'>
<div className='search-list-ti'>승인여부</div>
<div className='search-list'>
<div className='search-list-cont'>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox'
label='전체'
name='aprvlYn'
value='A'
// checked={true}
checked={checkState.all}
onChange={handleChangeCheckbox}
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox2'
label='승인'
name='aprvlYn'
value='Y'
checked={checkState.yes}
onChange={handleChangeCheckbox}
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox3'
label='미승인'
name='aprvlYn'
value='N'
checked={checkState.no}
onChange={handleChangeCheckbox}
/>
</div>
</div>
</div>
</dt>
</dl>
</div>
</Card>
</Col>
</Row>
</div>
);
};
export default FlightPlanSearch;

13
src/components/basis/flight/schedule/FlightScheduleGrid.js

@ -95,7 +95,10 @@ function FlightScheduleGrid() {
const endDate = moment(row.schFltEndDt);
const startDate = moment(row.schFltStDt);
const hours = moment.duration(endDate.diff(startDate)).asHours();
const hours = Math.floor(
moment.duration(endDate.diff(startDate)).asHours()
);
const minute =
moment.duration(endDate.diff(startDate)).asMinutes() % 60;
@ -129,9 +132,11 @@ function FlightScheduleGrid() {
when: row => {
if (row.statusCd !== 'S') {
// 현재시간
const currTime = timeRef.current.lastChild.data
.replace(/\:/g, '')
.substring(0, 4);
const currTime =
timeRef?.current?.lastChild?.data
.replace(/\:/g, '')
.substring(0, 4) || '';
// 현재날짜
const currDay = Number(moment().format('YYYYMMDD'));

3
src/containers/analysis/history/AnalysisHistoryContainer.js

@ -297,7 +297,7 @@ export const AnalysisHistoryContainer = props => {
return (
<CustomMainLayout title={titleName}>
{/* <div className='pal-card-box'> */}
<div className='mt-2 pal-card-box'>
<div className='pal-card-box'>
<Row>
{/* <Col sm='4'>
<FlightPlanGroupGrid
@ -310,7 +310,6 @@ export const AnalysisHistoryContainer = props => {
</Col> */}
{/* <Col sm='4'> */}
<Col sm='12' lg='12'>
{user ? (
<>
<FlightPlanGroupGrid

13
src/containers/analysis/simulator/AnalysisSimulationContainer.js

@ -10,6 +10,9 @@ import { NMapMarker } from '../../../components/map/nhn/NMapMarker';
import { NMapPolyline } from '../../../components/map/nhn/NMapPolyline';
import * as Actions from '../../../modules/analysis/simulation/actions/analysisSimulatorAction';
import * as Action from '../../../modules/account/login/actions/authAction';
let playCount = 0;
export const AnalysisSimulationContainer = props => {
const { list, count, detail, searchParams, log, stcsList, stcsCount } =
useSelector(state => state.analysisSimulatorState);
@ -34,8 +37,6 @@ export const AnalysisSimulationContainer = props => {
const [searchText, setSearchText] = useState('');
let playCount = 0;
const [sliderVal, setSliderVal] = useState({
maxVal: 0,
minVal: 0
@ -59,7 +60,6 @@ export const AnalysisSimulationContainer = props => {
}
playCount++;
if (playCount == log.length) {
playCount = 0;
clearInterval(timer);
@ -76,7 +76,7 @@ export const AnalysisSimulationContainer = props => {
setInfo({ ...log[playCount], playCount: playCount });
setIsPlay(false);
}
}, [stcsList])
}, [stcsList]);
useEffect(() => {
if (oepnReportList) {
@ -100,6 +100,11 @@ export const AnalysisSimulationContainer = props => {
}, [sliderCount]);
useEffect(() => {
playCount = 0;
if (log) {
setInfo({ ...log[playCount], playCount: 0 });
}
// let arrDate = log?.map(date => {
// const dateval = date.srvrRcvDt;
// if (dateval) {

152
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 <Link to={`/basis/dron/detail/${row.arcrftSno}`}>상세보기</Link>;
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 ? (
<>
<Link to={`/basis/dron/detail/${row.arcrftSno}`}>상세보기</Link>
</>
) : (
<>
{/* <span
disabled={true}
style={{
textDecoration: 'underline',
cursor: isHover ? 'pointer' : '',
color: isHover ? '#7367f0' : ''
}}
onMouseEnter={enter}
onMouseLeave={leave}
onClick={handlerNotMine}
>
상세보기
</span> */}
-
</>
)}
</>
);
}
}
];
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}
/>
)}
</Col>
</Row>
</div>
{/* <InfoModal modal={modal} setModal={setModal} /> */}
<div className='vertically-centered-modal'>
<Modal
isOpen={modal.isOpen}
toggle={() => setModal({ ...modal, isOpen: !modal.isOpen })}
modalClassName={'modal-' + `${modal.color}`}
className='modal-dialog-centered'
>
<ModalHeader
toggle={() => setModal({ ...modal, isOpen: !modal.isOpen })}
>
{modal.title}
</ModalHeader>
<ModalBody>{modal.desc}</ModalBody>
<ModalFooter>
<Button
color={modal.color}
onClick={() => setModal({ ...modal, isOpen: !modal.isOpen })}
>
확인
</Button>{' '}
</ModalFooter>
</Modal>
</div>
</CustomMainLayout>
);
};

33
src/containers/basis/flight/plan/FlightPlanContainer.js

@ -39,9 +39,10 @@ const FlightPlanContainer = () => {
state => state.groupState
);
const { user } = useSelector(state => state.authState, shallowEqual);
const [params, setParams] = useState({});
const [isMyGroup, setIsMyGroup] = useState();
const moveFlightPlanDetailPage = () => {
if (planDetailData) {
dispatch(FlightAction.FLIGHT_PLAN_DETAIL_INIT());
@ -91,6 +92,16 @@ const FlightPlanContainer = () => {
});
dispatch(FlightAction.FLIGHT_PLAN_LIST.request(param));
let my = false;
if (user.authId === 'SUPER') {
my = true;
} else if (user.authId === 'ADMIN' || user.authId === 'USER') {
if (groupAuthCd) {
my = true;
}
}
setIsMyGroup(my);
};
const handlerGroupCancel = () => {
@ -123,19 +134,8 @@ const FlightPlanContainer = () => {
return (
<CustomMainLayout title={'비행계획서 신청'}>
{/* <div className='pal-card-box'> */}
<div className='mt-2 pal-card-box'>
<div className='pal-card-box'>
<Row>
{/* <Col sm='4'>
<FlightPlanGroupGrid
data={joinList}
count={joinListCount}
selectGroup={selectGroup}
handleGroupSelect={handleGroupSelect}
handlerGroupCancel={handlerGroupCancel}
/>
</Col> */}
{/* <Col sm='4'> */}
<Col sm='12' lg='12'>
{user ? (
<>
@ -156,9 +156,7 @@ const FlightPlanContainer = () => {
) : (
<></>
)}
</Col>
{/* <Col sm='8'> */}
<Col sm='12' lg='12'>
{selectGroup.cstmrSno !== 0 ? (
<>
@ -173,12 +171,11 @@ const FlightPlanContainer = () => {
pagination={true}
paginationPerPage={10}
paginationRowsPerPageOptions={[10, 20, 30, 40]}
// handlerPageChange={handlerPageChange}
// columns={columns}
isMyGroup={isMyGroup}
user={user}
/>
</>
) : (
// <div className='no-dataTable'>
<div className='mt-2 no-dataTable'>
그룹 목록에서 상세보기를 클릭하세요.
</div>

33
src/containers/basis/group/BasisGroupUsersContainer.js

@ -313,30 +313,17 @@ export const BasisGroupUsersContainer = props => {
}, [user]);
const handlerDetail = (groupId, groupNm, groupAuthCd, aprvlYn) => {
if (
user.authId === 'SUPER' ||
user.authId === 'ADMIN' ||
groupAuthCd === 'MASTER' ||
(aprvlYn === 'Y' && groupAuthCd === 'LEADER')
) {
dispatch(Actions.SELECT({ groupId: groupId, groupNm, groupNm }));
const param = params;
param.groupId = groupId;
param.memberNm = '';
//권한 상관없이 조회 가능
dispatch(Actions.SELECT({ groupId: groupId, groupNm, groupNm }));
const param = params;
param.groupId = groupId;
param.memberNm = '';
dispatch(
Actions.USER_LIST.request({
searchParams: param
})
);
} else {
setInfoModal({
isOpen: true,
title: '권한 확인',
desc: '사용자관리 확인을 위해서는 운영자 권한이 필요합니다. 운영자에게 권한을 부여받고 다시 시도해 주세요.'
});
return;
}
dispatch(
Actions.USER_LIST.request({
searchParams: param
})
);
};
const handlerCancel = () => {

Loading…
Cancel
Save