|
|
|
@ -8,7 +8,8 @@ import { initFlightBas } from '../../modules/laanc/models/laancModels';
|
|
|
|
|
import { Modal } from 'reactstrap'; |
|
|
|
|
import { |
|
|
|
|
AREA_DETAIL_INIT, |
|
|
|
|
FLIGHT_PLAN_AREA_BUFFER_LIST |
|
|
|
|
FLIGHT_PLAN_AREA_BUFFER_LIST, |
|
|
|
|
FLIGHT_PLAN_AREA_INAIRAREA |
|
|
|
|
} from '../../modules/basis/flight/actions/basisFlightAction'; |
|
|
|
|
import { useDispatch, useSelector } from 'react-redux'; |
|
|
|
|
import { drawTypeChangeAction } from '../../modules/control/map/actions/controlMapActions'; |
|
|
|
@ -23,7 +24,11 @@ export default function LaancPlanContainer({
|
|
|
|
|
|
|
|
|
|
const { areaCoordList } = useSelector(state => state.flightState); |
|
|
|
|
const { user } = useSelector(state => state.authState); |
|
|
|
|
const { laancApply } = useSelector(state => state.laancState); |
|
|
|
|
const { laancApply, laancArea, laancElev } = useSelector( |
|
|
|
|
state => state.laancState |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const [isBuffer, setIsBuffer] = useState(false); |
|
|
|
|
|
|
|
|
|
const [step, setStep] = useState(1); |
|
|
|
|
const [detailData, setDetailData] = useState(initFlightBas.initDetail); |
|
|
|
@ -37,11 +42,13 @@ export default function LaancPlanContainer({
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
setDetailData({ |
|
|
|
|
...detailData, |
|
|
|
|
cstmrSno: user.cstmrSno, |
|
|
|
|
memberName: user.memberName |
|
|
|
|
}); |
|
|
|
|
if (user) { |
|
|
|
|
setDetailData({ |
|
|
|
|
...detailData, |
|
|
|
|
cstmrSno: user.cstmrSno, |
|
|
|
|
memberName: user.memberName |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
return () => { |
|
|
|
|
dispatch(drawTypeChangeAction('')); |
|
|
|
|
}; |
|
|
|
@ -55,27 +62,10 @@ export default function LaancPlanContainer({
|
|
|
|
|
}, [finalDetailData]); |
|
|
|
|
|
|
|
|
|
// laanc 승인 api 200 시 step 이동
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (laancApply) { |
|
|
|
|
const { valid, evaluatedTargetArea, flight } = laancApply; |
|
|
|
|
// 사전결과 미승인 대상
|
|
|
|
|
if (!valid && !evaluatedTargetArea && flight) { |
|
|
|
|
setIsErrorModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '검토 결과 사전안내', |
|
|
|
|
desc: ( |
|
|
|
|
<> |
|
|
|
|
검토 결과 미 승인 대상입니다. |
|
|
|
|
<p> |
|
|
|
|
제줄하신 비행계획서는 별도의 승인이 필요없습니다. |
|
|
|
|
<br /> |
|
|
|
|
조종자 준수사항에 유의하여 비행하시기 바랍니다. |
|
|
|
|
</p> |
|
|
|
|
</> |
|
|
|
|
) |
|
|
|
|
}); |
|
|
|
|
return; |
|
|
|
|
} else if (!valid) { |
|
|
|
|
const handlerLaanc = () => { |
|
|
|
|
// 사전결과 미승인 대상
|
|
|
|
|
if (laancArea && laancElev) { |
|
|
|
|
if (detailData.arcrftList[0].idntfNum === 'PA0002') { |
|
|
|
|
setIsErrorModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '검토 결과 사전안내', |
|
|
|
@ -83,48 +73,69 @@ export default function LaancPlanContainer({
|
|
|
|
|
<> |
|
|
|
|
유효성 검사에 실패하여 미 승인 대상입니다. |
|
|
|
|
<p> |
|
|
|
|
제출하신 비행계획서의 고도는 120m이하에서만 비행이 가능합니다. |
|
|
|
|
기체가 보험에 가입되어 있지 않거나 유효기간이 만료되었습니다. |
|
|
|
|
<br /> |
|
|
|
|
고도 설정을 다시 확인해주시기 바랍니다. |
|
|
|
|
기체 번호를 다시 확인해주시기 바랍니다. |
|
|
|
|
</p> |
|
|
|
|
</> |
|
|
|
|
) |
|
|
|
|
}); |
|
|
|
|
return; |
|
|
|
|
} else if (detailData.arcrftList[0].idntfNum === 'PA0002') { |
|
|
|
|
} else if ( |
|
|
|
|
!laancArea.duplicated && |
|
|
|
|
detailData.fltType != 'COMMERCIAL' && |
|
|
|
|
detailData.arcrftList[0].arcrftWghtCd != '11' |
|
|
|
|
) { |
|
|
|
|
setIsErrorModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '검토 결과 사전안내', |
|
|
|
|
desc: ( |
|
|
|
|
<> |
|
|
|
|
유효성 검사에 실패하여 미 승인 대상입니다. |
|
|
|
|
검토 결과 미 승인 대상입니다. |
|
|
|
|
<p> |
|
|
|
|
기체가 보험에 가입되어 있지 않거나 유효기간이 만료되었습니다. |
|
|
|
|
제줄하신 비행계획서는 별도의 승인이 필요없습니다. |
|
|
|
|
<br /> |
|
|
|
|
기체 번호를 다시 확인해주시기 바랍니다. |
|
|
|
|
조종자 준수사항에 유의하여 비행하시기 바랍니다. |
|
|
|
|
</p> |
|
|
|
|
</> |
|
|
|
|
) |
|
|
|
|
}); |
|
|
|
|
return; |
|
|
|
|
} else if ( |
|
|
|
|
parseInt(detailData.areaList[0].fltElev) <= laancElev && |
|
|
|
|
parseInt(detailData.areaList[0].fltElev) < 150 |
|
|
|
|
) { |
|
|
|
|
setStep(2); |
|
|
|
|
} |
|
|
|
|
if (!valid && evaluatedTargetArea && !flight) { |
|
|
|
|
setIsErrorModal({ |
|
|
|
|
isOpen: true, |
|
|
|
|
title: '검토 결과 사전안내', |
|
|
|
|
desc: ( |
|
|
|
|
<> |
|
|
|
|
유효성 검사에 실패하여 미 승인 대상입니다. |
|
|
|
|
<p>자세한 사항은 비행승인 검토결과를 확인해주시기 바랍니다.</p> |
|
|
|
|
</> |
|
|
|
|
) |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
setStep(2); |
|
|
|
|
// if (!valid && evaluatedTargetArea && !flight) {
|
|
|
|
|
// setIsErrorModal({
|
|
|
|
|
// isOpen: true,
|
|
|
|
|
// title: '검토 결과 사전안내',
|
|
|
|
|
// desc: (
|
|
|
|
|
// <>
|
|
|
|
|
// 유효성 검사에 실패하여 미 승인 대상입니다.
|
|
|
|
|
// <p>자세한 사항은 비행승인 검토결과를 확인해주시기 바랍니다.</p>
|
|
|
|
|
// </>
|
|
|
|
|
// )
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// 버퍼 변경될 때 관제권 포함유무 체크
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (isBuffer) { |
|
|
|
|
dispatch(FLIGHT_PLAN_AREA_INAIRAREA.request(areaCoordList)); |
|
|
|
|
setIsBuffer(false); |
|
|
|
|
} |
|
|
|
|
}, [laancApply]); |
|
|
|
|
}, [areaCoordList]); |
|
|
|
|
|
|
|
|
|
// useEffect(() => {
|
|
|
|
|
// console.log(inAirArea, '----inairarea');
|
|
|
|
|
// }, [inAirArea]);
|
|
|
|
|
|
|
|
|
|
// step 핸들러
|
|
|
|
|
const handlerStep = step => { |
|
|
|
@ -352,6 +363,7 @@ export default function LaancPlanContainer({
|
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} else { |
|
|
|
|
handlerLaanc(); |
|
|
|
|
// 비행 방식 직접 입력칸 활성화 후 작성 시 조건문
|
|
|
|
|
if (detailData.areaList[0].selffltMethod) { |
|
|
|
|
setFinalDetailData({ |
|
|
|
@ -364,7 +376,7 @@ export default function LaancPlanContainer({
|
|
|
|
|
] |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
dispatch(LaancAction.LAANC_FLIGHT_Approval.request(detailData)); |
|
|
|
|
// dispatch(LaancAction.LAANC_FLIGHT_Approval.request(detailData));
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
@ -378,6 +390,7 @@ export default function LaancPlanContainer({
|
|
|
|
|
array.push(copy); |
|
|
|
|
|
|
|
|
|
dispatch(FLIGHT_PLAN_AREA_BUFFER_LIST.request(array)); |
|
|
|
|
setIsBuffer(true); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
setIsErrorModal({ |
|
|
|
|