Browse Source

laanc 상세보기 화면 변경

pull/2/head
박상현 11 months ago
parent
commit
77c34b9278
  1. 269
      src/components/laanc/LaancDetail.js
  2. 10
      src/components/laanc/LaancGrid.js
  3. 17
      src/components/laanc/LaancStep2.js

269
src/components/laanc/LaancDetail.js

@ -0,0 +1,269 @@
import React, { useEffect, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import {
Row,
Col,
Button,
ModalHeader,
ModalBody,
ModalFooter,
Alert,
FormGroup,
Label,
Input
} from 'reactstrap';
import FlightArea from './FlightArea';
import * as TermsActions from '../../modules/account/register/actions/accountAction';
export default function LaancDetail({ data, handlerLaancClose }) {
const dispatch = useDispatch();
const obj = {
fltType: {
COMMERCIAL: '사업',
NON_COMMERCIAL: '비사업'
},
arcrftWdth: {
7: '최대이륙중량 250g 이하',
8: '250g초과 ~ 2kg 이하',
9: '2kg초과~7kg이하',
10: '7kg초과~25kg이하',
11: '25kg초과'
}
};
const { user } = useSelector(state => state.authState);
const { termsList } = useSelector(state => state.accountState);
useEffect(() => {
dispatch(
TermsActions.termsList.request({
langDivCd: 'KOR',
siteCd: 'SANDBOX',
termsCtgryCd: 'AGREE_LAANC'
})
);
}, []);
// 소수점 6자리에서 반올림 하는 함수
const truncateToSixDecimalPlaces = number => {
const decimalPlaces = 6;
const multiplier = Math.pow(10, decimalPlaces);
return Math.round(number * multiplier) / multiplier;
};
return (
<>
<ModalHeader>LAANC 승인 요청</ModalHeader>
<ModalBody>
<div className='mb-1'>
<div className='ti'>비행 구역</div>
<div className='laanc-map-sm'>
<div className='vertically-centered-modal'>
<FlightArea page={2} />
</div>
</div>
</div>
<div>
<div className='ti'>비행 승인 상세정보</div>
<Row>
<Col className='list-input' md='6' sm='12'>
<FormGroup>
<div className='ti'>조종자 정보</div>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
id='memberName'
name='memberName'
size='sm'
placeholder=''
value={user.memberName}
disabled
/>
</FormGroup>
</Col>
<Col className='list-input' md='6' sm='12'>
<FormGroup>
<div className='ti'>비행 유형</div>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
name='fltType'
value={obj.fltType[data.fltType]}
size='sm'
id='fltType'
disabled
/>
</FormGroup>
</Col>
<Col className='list-input' md='12'>
<div className='ti'>비행 계획 정보</div>
<Row>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
id='schFltStDt'
name='schFltStDt'
bsSize='sm'
value={data.schFltStDt.slice(0, 16)}
placeholder=''
disabled
/>
</FormGroup>
</Col>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
id='schFltEndDt'
name='schFltEndDt'
bsSize='sm'
value={data.schFltEndDt.slice(0, 16)}
placeholder=''
disabled
/>
</FormGroup>
</Col>
</Row>
</Col>
<Col className='list-input' md='12'>
<div className='ti'>기체 정보</div>
<Row>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
id='arcrftWghtCd'
name='arcrftWghtCd'
size='sm'
value={data.arcrftWght}
placeholder=''
disabled
/>
</FormGroup>
</Col>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
id='idntfNum'
name='idntfNum'
size='sm'
value={
data.arcrftList[0].idntfNum
? data.arcrftList[0].idntfNum
: '-'
}
placeholder=''
disabled
/>
</FormGroup>
</Col>
</Row>
</Col>
<Col className='list-input' md='12'>
<div className='ti'>비행 구역 정보</div>
<Row>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'>*</span>/
</Label>
{data.areaList[0].coordList.map((coord, index) => {
return index % 2 === 0 ? (
<Input
key={index}
type='text'
id='test'
size='sm'
value={`${truncateToSixDecimalPlaces(
`${coord.lat}`
)} / ${truncateToSixDecimalPlaces(`${coord.lon}`)}`}
placeholder=''
disabled
/>
) : null;
})}
</FormGroup>
</Col>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'></span>
</Label>
{data.areaList[0].coordList.map((coord, index) => {
return index % 2 != 0 ? (
<Input
type='text'
id='test'
size='sm'
key={index}
value={`${truncateToSixDecimalPlaces(
`${coord.lat}`
)} / ${truncateToSixDecimalPlaces(`${coord.lon}`)}`}
placeholder=''
disabled
/>
) : null;
})}
</FormGroup>
</Col>
</Row>
</Col>
</Row>
<Row>
<Col className='list-input' md='6'>
<FormGroup>
<Label for='test'>
<span className='necessary'>*</span>
</Label>
<Input
type='text'
id='fltElev'
name='fltElev'
// defaultValue={data.email || ''}
value={data.areaList[0].fltElev + 'm'}
size='sm'
disabled
placeholder='100m'
/>
</FormGroup>
</Col>
<Col className='list-input' md='12'>
{termsList ? (
<>
<div className='ti'>{termsList[0]?.termsTitleNm}</div>
<div
className='terms-box'
dangerouslySetInnerHTML={{ __html: termsList[0]?.termsCn }}
></div>
</>
) : null}
</Col>
</Row>
</div>
</ModalBody>
<ModalFooter style={{ justifyContent: 'right' }}>
<Button outline onClick={() => handlerLaancClose()}>
확인
</Button>
</ModalFooter>
</>
);
}

10
src/components/laanc/LaancGrid.js

@ -13,6 +13,7 @@ import {
} from '../../modules/basis/flight/actions/basisFlightAction'; } from '../../modules/basis/flight/actions/basisFlightAction';
import { drawTypeChangeAction } from '../../modules/control/map/actions/controlMapActions'; import { drawTypeChangeAction } from '../../modules/control/map/actions/controlMapActions';
import { HOST } from '../../configs/constants'; import { HOST } from '../../configs/constants';
import LaancDetail from './LaancDetail';
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`; pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
export default function LaancGrid() { export default function LaancGrid() {
@ -21,7 +22,6 @@ export default function LaancGrid() {
const [isAnimation, setIsAnimation] = useState(false); const [isAnimation, setIsAnimation] = useState(false);
const { laancSearchData } = useSelector(state => state.laancState); const { laancSearchData } = useSelector(state => state.laancState);
const { areaCoordList } = useSelector(state => state.flightState);
const { loading } = useSelector(state => state.loadingReducer); const { loading } = useSelector(state => state.loadingReducer);
const { laancDetail } = useSelector(state => state.laancState); const { laancDetail } = useSelector(state => state.laancState);
@ -33,10 +33,6 @@ export default function LaancGrid() {
} }
}, [laancDetail]); }, [laancDetail]);
useEffect(() => {
if (areaCoordList && laancDetail) {
}
}, [areaCoordList]);
//상세보기 //상세보기
const handleDetail = planSno => { const handleDetail = planSno => {
dispatch(LaancAction.LAANC_DETAIL.request(planSno)); dispatch(LaancAction.LAANC_DETAIL.request(planSno));
@ -47,6 +43,7 @@ export default function LaancGrid() {
dispatch(AREA_DETAIL_INIT()); dispatch(AREA_DETAIL_INIT());
setIsAnimation(false); setIsAnimation(false);
}; };
const columns = [ const columns = [
{ {
name: '비행계획서 일련 번호', name: '비행계획서 일련 번호',
@ -229,9 +226,8 @@ export default function LaancGrid() {
fade={false} fade={false}
backdrop={false} backdrop={false}
> >
<LaancStep2 <LaancDetail
data={laancDetail} data={laancDetail}
type={'detail'}
disabledAnimation={isAnimation} disabledAnimation={isAnimation}
setDisabledAnimation={setIsAnimation} setDisabledAnimation={setIsAnimation}
handlerLaancClose={handlerLaancClose} handlerLaancClose={handlerLaancClose}

17
src/components/laanc/LaancStep2.js

@ -24,8 +24,7 @@ export default function LaancStep2({
handlerStep, handlerStep,
centeredModal, centeredModal,
setCenteredModal, setCenteredModal,
handlerLaancClose, handlerLaancClose
type
}) { }) {
const obj = { const obj = {
fltType: { fltType: {
@ -101,7 +100,6 @@ export default function LaancStep2({
if (flight) { if (flight) {
return ( return (
<> <>
{' '}
<AlertCircle size={15} /> <AlertCircle size={15} />
<span className='ms-1'>검토 결과 승인 대상입니다.</span> <span className='ms-1'>검토 결과 승인 대상입니다.</span>
<span className='cancel-txt'> <span className='cancel-txt'>
@ -145,7 +143,7 @@ export default function LaancStep2({
취소 취소
</Button> </Button>
</ModalHeader> </ModalHeader>
<ModalBody style={{ paddingBottom: type === 'detail' ? '30px' : '90px' }}> <ModalBody>
<div> <div>
<div className='ti'>유효성 검사 정보</div> <div className='ti'>유효성 검사 정보</div>
<Row> <Row>
@ -355,11 +353,7 @@ export default function LaancStep2({
id='arcrftWghtCd' id='arcrftWghtCd'
name='arcrftWghtCd' name='arcrftWghtCd'
size='sm' size='sm'
value={ value={obj.arcrftWdth[data.arcrftList[0].arcrftWghtCd]}
type === 'detail'
? data.arcrftWght
: obj.arcrftWdth[data.arcrftList[0].arcrftWghtCd]
}
placeholder='' placeholder=''
disabled disabled
/> />
@ -431,8 +425,7 @@ export default function LaancStep2({
className='terms-check' className='terms-check'
id='exampleCustomCheckbox' id='exampleCustomCheckbox'
label='조종자 준수사항 미 준수 시 처벌에 동의합니다.' label='조종자 준수사항 미 준수 시 처벌에 동의합니다.'
checked={type === 'detail' ? true : isterms} checked={isterms}
disabled={type === 'detail' ? true : false}
onChange={() => setIsterms(!isterms)} onChange={() => setIsterms(!isterms)}
/> />
) : null} ) : null}
@ -442,7 +435,6 @@ export default function LaancStep2({
</Row> </Row>
</div> </div>
</ModalBody> </ModalBody>
{type === 'detail' ? null : (
<ModalFooter> <ModalFooter>
<Button outline color='danger' onClick={() => handlerStep(1)}> <Button outline color='danger' onClick={() => handlerStep(1)}>
이전 이전
@ -466,7 +458,6 @@ export default function LaancStep2({
다음 다음
</Button> </Button>
</ModalFooter> </ModalFooter>
)}
</> </>
); );
} }

Loading…
Cancel
Save