From bdca19c2dfc4813395c1ac67713adb687f64d653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=83=81=ED=98=84?= Date: Thu, 7 Dec 2023 11:25:48 +0900 Subject: [PATCH] =?UTF-8?q?LAANC=20=EC=A3=BC=EC=84=9D=20=EC=84=A4=EB=AA=85?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 28 +++------------------- src/components/laanc/list/LaancDetail.js | 5 ++-- src/components/laanc/list/LaancGrid.js | 4 ++++ src/components/laanc/list/LaancSearch.js | 3 +++ src/components/laanc/step/LaacnStep3.js | 15 ++++++------ src/components/laanc/step/LaancStep1.js | 2 ++ src/components/laanc/step/LaancStep2.js | 5 +++- src/containers/laanc/LaancContainer.js | 4 +++- src/containers/laanc/LaancPlanContainer.js | 3 +++ 9 files changed, 33 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3932cd61..8afcb53f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6324,9 +6324,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001242", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001242.tgz", - "integrity": "sha512-KvNuZ/duufelMB3w2xtf9gEWCSxJwUgoxOx5b6ScLXC4kPc9xsczUVCPrQU26j5kOsHM4pSUL54tAZt5THQKug==" + "version": "1.0.30001566", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", + "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==" }, "capture-exit": { "version": "2.0.0", @@ -8487,14 +8487,6 @@ } } }, - "dom7": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz", - "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==", - "requires": { - "ssr-window": "^3.0.0-alpha.1" - } - }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -24397,11 +24389,6 @@ "tweetnacl": "~0.14.0" } }, - "ssr-window": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", - "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" - }, "ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -24943,15 +24930,6 @@ "resolved": "https://registry.npmjs.org/sweetalert2-react-content/-/sweetalert2-react-content-3.0.1.tgz", "integrity": "sha512-VBybIRTIzY2bTkUddcp2wMJ3mp3gfGGX6+BfW2dDrEv6bXM2WtzJpFkM2imFpcPhpkOIf2/J8gLxEu0jBZq0DQ==" }, - "swiper": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-6.0.4.tgz", - "integrity": "sha512-D+DBxgg81+uocgsvhmdzrpr4GHzhAt2yImArqzunrC80y7+/yCEAq/EJw1VASD+CBFNacF4F8FEIqJMLyDFM0g==", - "requires": { - "dom7": "^3.0.0-alpha.7", - "ssr-window": "^3.0.0-alpha.4" - } - }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", diff --git a/src/components/laanc/list/LaancDetail.js b/src/components/laanc/list/LaancDetail.js index c933e7d9..904de477 100644 --- a/src/components/laanc/list/LaancDetail.js +++ b/src/components/laanc/list/LaancDetail.js @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Row, @@ -7,7 +7,6 @@ import { ModalHeader, ModalBody, ModalFooter, - Alert, FormGroup, Label, Input @@ -33,6 +32,8 @@ export default function LaancDetail({ data, handlerLaancClose }) { }; const { user } = useSelector(state => state.authState); const { termsList } = useSelector(state => state.accountState); + + // Laanc 약관 동의 useEffect(() => { dispatch( TermsActions.termsList.request({ diff --git a/src/components/laanc/list/LaancGrid.js b/src/components/laanc/list/LaancGrid.js index 0f3bfd93..5adcf7ed 100644 --- a/src/components/laanc/list/LaancGrid.js +++ b/src/components/laanc/list/LaancGrid.js @@ -26,10 +26,12 @@ export default function LaancGrid() { ); const { loading } = useSelector(state => state.loadingReducer); + // Laanc 승인 신청 목록 조회 useEffect(() => { return () => dispatch(LaancAction.LAANC_APPROVAL_DETAIL_INIT()); }, []); + // Laanc 승인 신청 목록 비행 구역 조회 useEffect(() => { if (laancDetail) { dispatch(FLIGHT_PLAN_AREA_BUFFER_LIST.request(laancDetail?.areaList)); @@ -43,6 +45,7 @@ export default function LaancGrid() { dispatch(LaancAction.LAANC_DETAIL.request(planSno)); }; + // Laanc 승인 신청 목록 닫기 const handlerLaancClose = () => { dispatch(drawTypeChangeAction('')); dispatch(AREA_DETAIL_INIT()); @@ -167,6 +170,7 @@ export default function LaancGrid() { } ]; + // PDF 다운로드 const handlerPdfDownload = pdf => { if (pdf) { let alink = document.createElement('a'); diff --git a/src/components/laanc/list/LaancSearch.js b/src/components/laanc/list/LaancSearch.js index 80a4e3ca..d61a03d6 100644 --- a/src/components/laanc/list/LaancSearch.js +++ b/src/components/laanc/list/LaancSearch.js @@ -14,10 +14,12 @@ function LaancSearch() { createEndDate: moment().subtract(-7, 'day').format('YYYY-MM-DD') }); + // Laanc 승인 신청 목록 조회 useEffect(() => { dispatch(LaancAction.LAANC_APRV_LIST.request({ ...date })); }, []); + // 날짜 변경 헨들러 const handlerChangeDate = selectedDates => { if (selectedDates.length === 2) { const createStDate = moment(selectedDates[0]).format('YYYY-MM-DD'); @@ -26,6 +28,7 @@ function LaancSearch() { } }; + // 검색 헨들러 const handlerClick = () => { dispatch(LaancAction.LAANC_APRV_LIST.request({ ...date })); }; diff --git a/src/components/laanc/step/LaacnStep3.js b/src/components/laanc/step/LaacnStep3.js index a08aee6a..aaeab817 100644 --- a/src/components/laanc/step/LaacnStep3.js +++ b/src/components/laanc/step/LaacnStep3.js @@ -40,12 +40,14 @@ export default function LaacnStep3({ 11: '25kg초과' } }; - const [centeredModal2, setCenteredModal2] = useState(false); + + const [confirmModal, setConfirmModal] = useState(false); const [formModal, setFormModal] = useState(false); const [numPages, setNumPages] = useState(null); // total const { user } = useSelector(state => state.authState); const { laancPdf } = useSelector(state => state.laancState); + // PDF 다운로드 const handlerPdfDownload = e => { if (laancPdf.pdfUrl) { let alink = document.createElement('a'); @@ -55,6 +57,7 @@ export default function LaacnStep3({ } }; + // PDF 페이지 로드 const onDocumentLoadSuccess = ({ numPages: nextNumPages }) => { setNumPages(nextNumPages); }; @@ -238,17 +241,16 @@ export default function LaacnStep3({ - {/* outline onClick={() => setCenteredModal2(!centeredModal2)} */} - setCenteredModal2(!centeredModal2)} + isOpen={confirmModal} + toggle={() => setConfirmModal(!confirmModal)} className='modal-dialog-centered' style={{ maxWidth: '650px', margin: '0 auto' }} > - setCenteredModal2(!centeredModal2)}> + setConfirmModal(!confirmModal)}> 비행 승인 완료 @@ -261,7 +263,6 @@ export default function LaacnStep3({ ))} - {/* */} diff --git a/src/components/laanc/step/LaancStep1.js b/src/components/laanc/step/LaancStep1.js index 73d23540..9dddaf6c 100644 --- a/src/components/laanc/step/LaancStep1.js +++ b/src/components/laanc/step/LaancStep1.js @@ -75,6 +75,7 @@ export default function LaancStep1({ if (!currentParm) setCenteredModal(mapParam != 'true' ? false : true); }, [location]); + // 일물 일출 데이터 호출 useEffect(() => { if (areaCoordList) { if (areaCoordList[0].coordList[0].lat !== 0) { @@ -263,6 +264,7 @@ export default function LaancStep1({ schFltEndDtRef.current.flatpickr.close(); }; + // 승인 유형, 비행 시작 일자, 비행 종료 일자 아이콘 팝오버 핸들러 const toggle = type => { switch (type) { case 'commercial': diff --git a/src/components/laanc/step/LaancStep2.js b/src/components/laanc/step/LaancStep2.js index 14f68de2..e6880e54 100644 --- a/src/components/laanc/step/LaancStep2.js +++ b/src/components/laanc/step/LaancStep2.js @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import '@styles/react/libs/flatpickr/flatpickr.scss'; -import { AlertCircle, CheckCircle } from 'react-feather'; +import { CheckCircle } from 'react-feather'; import FlightArea from '../map/FlightArea'; import { Row, @@ -48,6 +48,7 @@ export default function LaancStep2({ const { laancPdf } = useSelector(state => state.laancState); const dispatch = useDispatch(); + // 약관 동의 데이터 useEffect(() => { dispatch( TermsActions.termsList.request({ @@ -58,12 +59,14 @@ export default function LaancStep2({ ); }, []); + // 비행 승인 요청 useEffect(() => { if (flightData && Object.keys(flightData).length > 0) { dispatch(LaancAction.LAANC_FLIGHT_CREATE.request(flightData)); } }, [flightData]); + // 비행 승인 요청 성공 useEffect(() => { if (laancPdf && flightData && Object.keys(flightData).length > 0) { handlerStep(3); diff --git a/src/containers/laanc/LaancContainer.js b/src/containers/laanc/LaancContainer.js index 3655d5e1..afa2f65d 100644 --- a/src/containers/laanc/LaancContainer.js +++ b/src/containers/laanc/LaancContainer.js @@ -21,14 +21,16 @@ export default function LaancContainer() { const queryParams = new URLSearchParams(location.search); const mapParam = queryParams.get('map'); + // URL 쿼리 파라미터 중 'map' 값을 가져옵니다. useEffect(() => { - // URL 쿼리 파라미터 중 'map' 값을 가져옵니다. + // Redux Store 초기화 dispatch(drawTypeChangeAction('')); dispatch(LaancAction.LAANC_APPROVAL_INIT()); dispatch(AreaAction.AREA_DETAIL_INIT()); setDisabledAnimation(mapParam != 'true' ? false : true); }, [location]); + // LAANC 신청하기 버튼 클릭 헨들러 const handleApply = () => { dispatch(drawTypeChangeAction('')); dispatch(LaancAction.LAANC_APPROVAL_INIT()); diff --git a/src/containers/laanc/LaancPlanContainer.js b/src/containers/laanc/LaancPlanContainer.js index 958d2cd7..18dbbd94 100644 --- a/src/containers/laanc/LaancPlanContainer.js +++ b/src/containers/laanc/LaancPlanContainer.js @@ -44,6 +44,7 @@ export default function LaancPlanContainer({ url: '' }); + // 로그인 회원 정보 세팅 useEffect(() => { if (user) { setDetailData({ @@ -435,6 +436,7 @@ export default function LaancPlanContainer({ } }; + // 비행 구역 적용 버튼 핸들러 const handlerBufferApply = async () => { if (areaCoordList) { if (areaCoordList[0].coordList.length > 0) { @@ -485,6 +487,7 @@ export default function LaancPlanContainer({ } }; + // Laanc 승인 요청 취소 버튼 헨들러 const handlerLaancClose = () => { setStep(1); setDisabledAnimation(!disabledAnimation);