Browse Source

충돌 병합

pull/2/head
박상현 10 months ago
parent
commit
783336d0c3
  1. 28
      package-lock.json
  2. 7
      src/containers/laanc/LaancContainer.js
  3. 307
      src/containers/laanc/LaancPlanContainer.js

28
package-lock.json generated

@ -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",

7
src/containers/laanc/LaancContainer.js

@ -17,13 +17,11 @@ export default function LaancContainer() {
const [currentParm, setCurrentParm] = useState(false);
//LAANC 신청하기 모달
const [disabledAnimation, setDisabledAnimation] = useState(false);
<<<<<<< HEAD
// laanc 신청시 자동 검색
const [isSearch, setIsSearch] = useState(false);
=======
// 마운트 시 지도 표출 여부
const location = useLocation();
>>>>>>> 1ed9d9e3865eef0d42bac8f02dddb2a221ff8d58
const queryParams = new URLSearchParams(location.search);
const mapParam = queryParams.get('map');
@ -36,7 +34,6 @@ export default function LaancContainer() {
setDisabledAnimation(mapParam != 'true' ? false : true);
}, [location]);
<<<<<<< HEAD
// Laanc 신청 이후 자동 검색
useEffect(() => {
if (disabledAnimation) {
@ -44,8 +41,6 @@ export default function LaancContainer() {
} else setIsSearch(true);
}, [disabledAnimation]);
=======
>>>>>>> 1ed9d9e3865eef0d42bac8f02dddb2a221ff8d58
// LAANC 신청하기 버튼 클릭 헨들러
const handleApply = () => {
dispatch(drawTypeChangeAction(''));

307
src/containers/laanc/LaancPlanContainer.js

@ -17,12 +17,8 @@ export default function LaancPlanContainer({
}) {
const dispatch = useDispatch();
// 비행 구역 정보
const { areaCoordList } = useSelector(state => state.flightState);
// 로그인 정보
const { user } = useSelector(state => state.authState);
// 관제권안 정보,고도 정보
const { laancArea, laancElev } = useSelector(state => state.laancState);
// laanc step
const [step, setStep] = useState(1);
// laanc 초기값
@ -63,309 +59,6 @@ export default function LaancPlanContainer({
setStep(step);
};
// 날씨 핸들러
const handlerWeather = () => {
setFormModal(!formModal);
};
// 비행계획서 작성 핸들러
const handleChange = ({ name, value, type, index, pIndex }) => {
const arrName = `${type}List`;
switch (type) {
case 'coord':
setDetailData(prevState => {
return {
...prevState,
areaList: [
{
...prevState.areaList[0],
coordList: value
}
]
};
});
break;
case 'area':
if (name === 'fltMethod' && value != '직접입력') {
setDetailData(prevState => {
const arr = [...prevState[arrName]];
const updateData = {
...prevState[arrName][0],
[name]: value,
fltMothoeRm: ''
};
arr[0] = updateData;
return {
...prevState,
[arrName]: arr
};
});
} else if (
detailData.areaList[0].areaType === 'LINE' ||
name === 'bufferZone'
) {
setDetailData(prevState => {
const arr = [...prevState[arrName]];
const prevBufferZone = prevState[arrName][0].bufferZone;
const updateData = {
...prevState[arrName][0],
[name]: value,
concatBufferZone: prevBufferZone
};
arr[0] = updateData;
return {
...prevState,
[arrName]: arr
};
});
} else {
setDetailData(prevState => {
const arr = [...prevState[arrName]];
const updateData = {
...prevState[arrName][0],
[name]: value
};
arr[0] = updateData;
return {
...prevState,
[arrName]: arr
};
});
}
break;
case 'pilot':
case 'arcrft':
{
setDetailData(prevState => {
const arr = [...prevState[arrName]];
const updateData = {
...prevState[arrName][0],
[name]: value
};
arr[0] = updateData;
return {
...prevState,
[arrName]: arr
};
});
}
break;
case 'plan':
default:
setDetailData(prevState => ({
...prevState,
[name]: value
}));
break;
}
};
// 스텝 1 다음 버튼 이벤트
const handlerNext = () => {
// 시작일자
const schFltStDt = moment(detailData.schFltStDt, 'YYYY-MM-DD HH:mm:ss');
// 종료일자
const schFltEndDt = moment(detailData.schFltEndDt, 'YYYY-MM-DD HH:mm:ss');
const currentDate = moment(); // 현재 날짜와 시간을 가져옵니다.
const validateAircraftWeightCode =
!detailData.arcrftList[0].arcrftTypeCd &&
(detailData.commercial === 'COMMERCIAL' ||
detailData.arcrftList[0].arcrftWghtCd == '9' ||
detailData.arcrftList[0].arcrftWghtCd == '10' ||
detailData.arcrftList[0].arcrftWghtCd == '11');
const validateidntfNumCode =
!detailData.arcrftList[0].idntfNum &&
(detailData.commercial === 'COMMERCIAL' ||
detailData.arcrftList[0].arcrftWghtCd == '9' ||
detailData.arcrftList[0].arcrftWghtCd == '10' ||
detailData.arcrftList[0].arcrftWghtCd == '11');
if (!detailData.fltType) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행 종류(상업/비상업)를 선택해주세요.'
});
return false;
} else if (
!schFltStDt.isAfter(currentDate) ||
!schFltEndDt.isAfter(currentDate)
) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행 일자가 이미 지난 일자입니다.'
});
return false;
} else if (schFltStDt.isAfter(schFltEndDt)) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행일자를 확인해주세요.'
});
return false;
} else if (schFltStDt.format('A h:mm') === 'PM 11:00') {
setIsErrorModal({
isOpen: true,
title: '특별 비행',
desc: (
<>
야간 비행은 특별 비행에 해당됩니다.
<br />
특별 비행의 경우 드론원스톱을 통해서 신청해주시기 바랍니다.
</>
)
});
return false;
} else if (schFltStDt.format('A h:mm') === 'PM 5:00') {
setIsErrorModal({
isOpen: true,
title: '비행구역 및 비행일자 중복',
desc: (
<>
설정하신 비행구역 비행시간에 이미 승인완료된 신청건이 있습니다.
<br /> 다시 설정 부탁드립니다.
</>
)
});
return false;
} else if (!detailData.fltPurpose) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행목적을 선택해 주세요.'
});
return false;
} else if (
!detailData.areaList[0].fltElev ||
detailData.areaList[0].fltElev === 0
) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '고도를 입력해 주세요.'
});
return false;
} else if (!detailData.areaList[0].bufferZone) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '반경을 입력해 주세요.'
});
return false;
} else if (
detailData.areaList[0].concatBufferZone !=
detailData.areaList[0].bufferZone &&
detailData.areaList[0].areaType === 'LINE'
) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: <>적용 버튼을 누르지 않고 값을 변경 없습니다.</>
});
// handleChange({
// type: 'area',
// name: 'bufferZone',
// value: detailData.areaList[0].concatBufferZone
// });
} else if (!detailData.areaList[0].fltMethod) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행방식를 입력해 주세요.'
});
return false;
} else if (
detailData.areaList[0].fltMethod === '00' &&
!detailData.areaList[0].fltMothoeRm
) {
// 비행 방식 직접 입력칸 활성화 후 작성 시 조건문
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행방식을 입력해 주세요.'
});
return false;
} else if (validateAircraftWeightCode) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '기체 종류를 입력해 주세요.'
});
return false;
} else if (validateidntfNumCode) {
setIsErrorModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '기체 신고 번호를 입력해 주세요.'
});
return false;
} else {
handlerLaanc();
}
};
// 비행 구역 적용 버튼 핸들러
const handlerBufferApply = async () => {
if (areaCoordList) {
if (areaCoordList[0].coordList.length > 0) {
// dispatch(LaancAction.LAANC_ALTITUDE.request(detailData.areaList));
dispatch(LaancAction.LAANC_VALID_AREA.request(detailData.areaList));
const array = [];
const copy = { ...areaCoordList[0] };
copy.bufferZone = detailData.areaList[0].bufferZone;
array.push(copy);
dispatch(FLIGHT_PLAN_AREA_BUFFER_LIST.request(array));
try {
const elev = await axios.post(
`api/bas/laanc/valid/elev`,
detailData.areaList
);
if (elev.data[0] === 0) {
// dispatch(AREA_DETAIL_INIT());
// dispatch(AreaAction.AREA_DETAIL_INIT());
// dispatch(drawTypeChangeAction(''));
// dispatch(LaancAction.LAANC_APPROVAL_INIT());
setIsErrorModal({
title: '비행 불가 지역',
desc: (
<>
설정하신 비행구역 허용고도가 0m인 구역이 있습니다.
<br />
버퍼존을 다시 확인해주시기 바랍니다.
</>
),
isOpen: true
});
}
dispatch(LaancAction.LAANC_ALTITUDE.success(elev.data));
} catch (error) {
{
setIsErrorModal({
isOpen: true,
title: '오류',
desc: '처리중 오류가 발생하였습니다'
});
}
}
}
}
};
// Laanc 승인 요청 취소 버튼 헨들러
const handlerLaancClose = () => {
setStep(1);

Loading…
Cancel
Save