diff --git a/src/components/basis/flight/plan/FlightPlanArcrft.js b/src/components/basis/flight/plan/FlightPlanArcrft.js
new file mode 100644
index 0000000..a853dc8
--- /dev/null
+++ b/src/components/basis/flight/plan/FlightPlanArcrft.js
@@ -0,0 +1,137 @@
+import React from 'react';
+import {Button, Card, CardBody, Col, CustomInput, Row, FormGroup, Input, Label} from 'reactstrap';
+import {Search} from 'react-feather';
+import {GridDatabase} from '../../../crud/grid/GridDatatable';
+
+const FlightPlanArcrft = ({ arcrftList, handleSelectArcrft }) => {
+ const columns = [
+ {id: 'groupNm', name: '그룹 명', cell: row => (
{row.groupNm}
)},
+ {id: 'arcrftModelNm', name: '모델 명', cell: row => ({row.arcrftModelNm}
)},
+ {id: 'idntfTypeCd', name: '종류', cell: row => ({row.idntfTypeCd}
)},
+ {id: 'ownerNm', name: '소유자 명', cell: row => ({row.ownerNm}
)},
+ {id: 'idntfNum', name: '식별 코드', cell: row => ({row.idntfNum}
)},
+ {
+ id: 'selectPilot', name: '선택', cell: row => {
+ return {
+ handleSelectArcrft(row.arcrftSno)
+ }
+ }>선택;
+ }
+ }
+ ];
+
+ return (
+ <>
+
+
+
+
+
+
검색조건
+
+
+
+
+ 검색
+
+
+
+
+
+
+
+ -
+
+
그룹 명
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
소유자 명
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
기체 목록
+ 검색결과 총 {!!arcrftList ? arcrftList.length : 0}건
+
+
+
+
+
+
+ {/* 검색된 데이터가 없습니다. */}
+
+
+
+
+
+
+ >
+ )
+
+}
+
+export default FlightPlanArcrft;
\ No newline at end of file
diff --git a/src/components/basis/flight/plan/FlightPlanForm.js b/src/components/basis/flight/plan/FlightPlanForm.js
index c28e818..27f4a0e 100644
--- a/src/components/basis/flight/plan/FlightPlanForm.js
+++ b/src/components/basis/flight/plan/FlightPlanForm.js
@@ -15,6 +15,7 @@ import moment from 'moment';
import {initFlight, initFlightBas} from '../../../../modules/basis/flight/models/basisFlightModel';
import FlightPlanPilotContainer from '../../../../containers/basis/flight/plan/FlightPlanPilotContainer';
import { FlightPlanModal } from './FlightPlanModal';
+import FlightPlanArcrftContainer from '../../../../containers/basis/flight/plan/FlightPlanArcrftContainer';
const FlightPlanForm = ({data, handleModal, handleChange, handleSave, handleDelete, modal}) => {
@@ -353,7 +354,7 @@ const SelectModal = ({handleModal, modal}) => {
isOpen = modal.arcrft;
title = '기체 조회';
type = 'arcrft';
- description = '';
+ description = ;
}
if(modal.area) {
diff --git a/src/components/basis/flight/plan/FlightPlanPilot.js b/src/components/basis/flight/plan/FlightPlanPilot.js
index d35a132..52089f5 100644
--- a/src/components/basis/flight/plan/FlightPlanPilot.js
+++ b/src/components/basis/flight/plan/FlightPlanPilot.js
@@ -78,8 +78,8 @@ const FlightPlanPilot = ({ pilotList, handleSelectPilot }) => {
{
+ const dispatch = useDispatch();
+ const { arcrftList } = useSelector(state => state.flightState);
+
+
+ /* 기체 조회 */
+ const handleSearch = () => {
+ // group id 하드코딩
+ dispatch(Actions.FLIGHT_PLAN_ARCRFT_LIST.request("D1682A"));
+ }
+
+ /* 기체 선택 */
+ const handleSelectArcrft = (arcrftSno) => {
+ handleModal({target: 'arcrft', isOpen: false});
+
+ const arcrft = arcrftList.find(arcrft => {
+ return arcrft.arcrftSno === arcrftSno;
+ });
+ /* 기체 정보 Redux 저장 */
+ dispatch(Actions.ARCRFT_SELECT(arcrft));
+ }
+
+ useEffect(() => {
+ handleSearch();
+ }, [])
+
+
+ return (
+
+ )
+}
+
+export default FlightPlanArcrftContainer;
\ No newline at end of file
diff --git a/src/containers/basis/flight/plan/FlightPlanDetailContainer.js b/src/containers/basis/flight/plan/FlightPlanDetailContainer.js
index adbe413..1cc2743 100644
--- a/src/containers/basis/flight/plan/FlightPlanDetailContainer.js
+++ b/src/containers/basis/flight/plan/FlightPlanDetailContainer.js
@@ -19,7 +19,7 @@ const FlightPlanDetailContainer = () => {
const location = useLocation();
const urlParams = useParams();
const flightState = useSelector(state => state.flightState);
- const {detail, pilotSelect} = flightState;
+ const { detail, pilotSelect, arcrftSelect } = flightState;
const [modal, setModal] = useState(initModal);
const [detailData, setDetailData] = useState(initFlightBas.initDetail);
@@ -42,7 +42,7 @@ const FlightPlanDetailContainer = () => {
pilot.email = pilotSelect.email;
pilot.memberName = pilotSelect.memberName;
pilot.hpno = pilotSelect.hpno;
-
+
setDetailData(prevState => {
return {
...prevState,
@@ -53,6 +53,32 @@ const FlightPlanDetailContainer = () => {
}, [pilotSelect])
+ useEffect(() => {
+ if(arcrftSelect !== undefined) {
+ const arcrft = Object.assign({}, initFlightBas['arcrft']);
+
+ arcrft.arcrftSno = arcrftSelect.arcrftSno;
+ arcrft.groupId = arcrftSelect.groupNm;
+ arcrft.groupNm = arcrftSelect.clncd;
+ arcrft.arcrftModelNm = arcrftSelect.arcrftModelNm;
+ arcrft.idntfTypeCd = arcrftSelect.idntfTypeCd;
+ arcrft.idntfNum = arcrftSelect.idntfNum;
+ arcrft.ownerNm = arcrftSelect.ownerNm;
+
+ setDetailData(prevState => {
+ return {
+ ...prevState,
+ ['arcrftList']: [...prevState['arcrftList'], arcrft]
+ }
+ })
+ }
+ }, [arcrftSelect])
+
+ useEffect(() => {
+ // 조종사, 기체 정보 Redux 초기화
+ dispatch(Actions.PILOT_ARCRFT_SELECT_INIT());
+ })
+
const handleModal = (modal) => {
setModal(prevState => ({
...initModal,
diff --git a/src/modules/basis/flight/actions/basisFlightAction.ts b/src/modules/basis/flight/actions/basisFlightAction.ts
index 953737b..bb51e31 100644
--- a/src/modules/basis/flight/actions/basisFlightAction.ts
+++ b/src/modules/basis/flight/actions/basisFlightAction.ts
@@ -2,10 +2,11 @@ import { AxiosError } from 'axios';
import { createAsyncAction, ActionType, createAction } from 'typesafe-actions';
import {
FlightAreaData,
+ FlightPlanArcrftData,
FlightPlanArcrftDataList,
// FlightPlanArea,
FlightPlanData,
- FlightPlanListRqData, FlightPlanPilotDataList
+ FlightPlanListRqData, FlightPlanPilotDataList, PilotSelectData
} from '../models/basisFlightModel';
@@ -58,9 +59,11 @@ const FLIGHT_PLAN_ARCRFT_LIST_REQUEST = 'basis/flight/plan/arcrft_list/ARCRFT_LI
const FLIGHT_PLAN_ARCRFT_LIST_SUCCESS = 'basis/flight/plan/arcrft_list/ARCRFT_LIST_SUCCESS';
const FLIGHT_PLAN_ARCRFT_LIST_FAILURE = 'basis/flight/plan/arcrft_list/ARCRFT_LIST_FAILURE';
+// 기체 선택
+const FLIGHT_PLAN_ARCRFT_SELECT = 'basis/flight/plan/arcrft_list/ARCRFT_SELECT';
-
-
+// 조종사, 기체 선택 초기화
+const PILOT_ARCRFT_SELECT_INITIAL = 'basis/flight/plan/detail/SELECT_INIT';
export const AREA_LIST = createAsyncAction(
@@ -118,8 +121,8 @@ export const FLIGHT_PLAN_PILOT_LIST = createAsyncAction(
FLIGHT_PLAN_PILOT_LIST_FAILURE
)();
-// 조종사 조회
-export const PILOT_SELECT = createAction(FLIGHT_PLAN_PILOT_SELECT)();
+// 조종사 선택
+export const PILOT_SELECT = createAction(FLIGHT_PLAN_PILOT_SELECT)();
// 기체 목록
export const FLIGHT_PLAN_ARCRFT_LIST = createAsyncAction(
@@ -128,6 +131,12 @@ export const FLIGHT_PLAN_ARCRFT_LIST = createAsyncAction(
FLIGHT_PLAN_ARCRFT_LIST_FAILURE
)();
+// 조종사 선택
+export const ARCRFT_SELECT = createAction(FLIGHT_PLAN_ARCRFT_SELECT)();
+
+// 조종사, 기체 선택 초기화
+export const PILOT_ARCRFT_SELECT_INIT = createAction(PILOT_ARCRFT_SELECT_INITIAL)();
+
const actions = {
AREA_LIST,
@@ -140,7 +149,9 @@ const actions = {
FLIGHT_PLAN_DELETE,
FLIGHT_PLAN_PILOT_LIST,
FLIGHT_PLAN_ARCRFT_LIST,
- PILOT_SELECT
+ PILOT_SELECT,
+ ARCRFT_SELECT,
+ PILOT_ARCRFT_SELECT_INIT
};
export type FlightAction = ActionType;
diff --git a/src/modules/basis/flight/models/basisFlightModel.ts b/src/modules/basis/flight/models/basisFlightModel.ts
index 3339cd4..401562f 100644
--- a/src/modules/basis/flight/models/basisFlightModel.ts
+++ b/src/modules/basis/flight/models/basisFlightModel.ts
@@ -8,6 +8,7 @@ export interface FlightState {
pilotList: FlightPlanPilotDataList | undefined
arcrftList: FlightPlanArcrftDataList | undefined
pilotSelect: PilotSelectData | undefined
+ arcrftSelect: FlightPlanArcrftData | undefined
}
export interface FlightAreaData {
diff --git a/src/modules/basis/flight/reducers/basisFlightReducer.ts b/src/modules/basis/flight/reducers/basisFlightReducer.ts
index 5a138ac..d1bf3f1 100644
--- a/src/modules/basis/flight/reducers/basisFlightReducer.ts
+++ b/src/modules/basis/flight/reducers/basisFlightReducer.ts
@@ -59,3 +59,17 @@ export const flightReducer = createReducer(in
draft.arcrftList = data;
})
)
+ // 기체 선택
+ .handleAction(Actions.ARCRFT_SELECT, (state, action) =>
+ produce(state, draft => {
+ const data = action.payload;
+ draft.arcrftSelect = data;
+ })
+ )
+ // 조종사, 기체 선택 초기화
+ .handleAction(Actions.PILOT_ARCRFT_SELECT_INIT, (state, action) =>
+ produce(state, draft => {
+ draft.arcrftSelect = undefined;
+ draft.pilotSelect = undefined;
+ })
+ )