|
|
|
@ -1,16 +1,88 @@
|
|
|
|
|
import moment from 'moment'; |
|
|
|
|
import { useEffect, useState } from 'react'; |
|
|
|
|
import { useDispatch, useSelector } from 'react-redux'; |
|
|
|
|
import { useDispatch, useSelector, shallowEqual } from 'react-redux'; |
|
|
|
|
import { Link } from 'react-router-dom'; |
|
|
|
|
import { AnalysisHistoryGrid } from '../../../components/analysis/history/AnalysisHistoryGrid'; |
|
|
|
|
import { AnalysisHistorySearch } from '../../../components/analysis/history/AnalysisHistorySearch'; |
|
|
|
|
import { CustomMainLayout } from '../../../components/layout/CustomMainLayout'; |
|
|
|
|
import * as Actions from '../../../modules/analysis/history/actions/analysisHistoryAction'; |
|
|
|
|
import FlightPlanGroupGrid from '../../../components/basis/flight/plan/FlightPlanGroupGrid'; |
|
|
|
|
import { JOIN_LIST } from '../../../modules/basis/group/actions/basisGroupAction'; |
|
|
|
|
import { Col, Row, Button } from 'reactstrap'; |
|
|
|
|
import * as FlightAction from '../../../modules/basis/flight/actions/basisFlightAction'; |
|
|
|
|
import FlightPlanAprvSearch from '../../../components/basis/flight/aprv/FlightPlanAprvSearch'; |
|
|
|
|
import FlightPlanAprvGrid from '../../../components/basis/flight/aprv/FlightPlanAprvGrid'; |
|
|
|
|
import {useHistory} from 'react-router-dom'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export const AnalysisHistoryContainer = props => { |
|
|
|
|
const { data, count, searchParams } = useSelector( |
|
|
|
|
state => state.analysisHistoryState |
|
|
|
|
); |
|
|
|
|
const initSearchData = { |
|
|
|
|
schFltStDt: moment().set({ 'date': 1, 'h': 0, 'm': 0, 's': 0 }).format('YYYY-MM-DD HH:mm:ss'), |
|
|
|
|
schFltEndDt: moment().set({ 'h': 23, 'm': 59, 's': 59 }).format('YYYY-MM-DD HH:mm:ss'), |
|
|
|
|
aprvlYn: 'N', |
|
|
|
|
groupId: '', |
|
|
|
|
cstmrSno: 0, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const history = useHistory(); |
|
|
|
|
const [searchData, setSearchData] = useState(initSearchData); |
|
|
|
|
const [selPlanSnoList, setSelPlanSnoList] = useState([]); |
|
|
|
|
const {list: aprvList, aprvProc, selectGroup} = useSelector(state => state.flightState); |
|
|
|
|
const { joinList, joinListCount } = useSelector(state => state.groupState); |
|
|
|
|
const { user } = useSelector(state => state.authState, shallowEqual); |
|
|
|
|
|
|
|
|
|
const handleGroupSelect = ({ groupId, groupNm, groupAuthCd }) => { |
|
|
|
|
// 권한 상관 없이 모두 조회 가능
|
|
|
|
|
const param = searchData; |
|
|
|
|
param.cstmrSno = user.cstmrSno; |
|
|
|
|
param.groupId = groupId; |
|
|
|
|
|
|
|
|
|
dispatch(FlightAction.FLIGHT_PLAN_GROUP_SELECT({ cstmrSno: user.cstmrSno, groupId: groupId, groupNm: groupNm })); |
|
|
|
|
|
|
|
|
|
// groupId sessionStorage에 보관 (1 브라우저 1 tab에만 유효)
|
|
|
|
|
sessionStorage.setItem('groupId', groupId); |
|
|
|
|
sessionStorage.setItem('cstmrSno', user.cstmrSno); |
|
|
|
|
|
|
|
|
|
setSearchData(prevState => { |
|
|
|
|
return { |
|
|
|
|
...prevState, |
|
|
|
|
cstmrSno: user.cstmrSno, |
|
|
|
|
groupId: groupId |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
dispatch(FlightAction.FLIGHT_PLAN_LIST.request(param)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const handlerGroupCancel = () => { |
|
|
|
|
dispatch(FlightAction.FLIGHT_PLAN_GROUP_SELECT({ cstmrSno: 0, groupId: '', groupNm: '' })); |
|
|
|
|
} |
|
|
|
|
const handleSearch = (data) => { |
|
|
|
|
dispatch(FlightAction.FLIGHT_APRV_LIST.request(data)); |
|
|
|
|
} |
|
|
|
|
const handleChangeSelected = ({ selectedRows }) => { |
|
|
|
|
setSelPlanSnoList(selectedRows.map(item => item.planSno)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 최초 비행계획서 목록 조회
|
|
|
|
|
useEffect(() => { |
|
|
|
|
handleSearch(searchData); |
|
|
|
|
}, []) |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
if (user?.cstmrSno) { |
|
|
|
|
dispatch( |
|
|
|
|
JOIN_LIST.request({ |
|
|
|
|
cstmrSno: user?.cstmrSno |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
}, [user]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
|
|
|
|
@ -169,9 +241,22 @@ export const AnalysisHistoryContainer = props => {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
|
|
|
|
|
<CustomMainLayout title={titleName}> |
|
|
|
|
<Row> |
|
|
|
|
<Col sm='4'> |
|
|
|
|
<FlightPlanGroupGrid |
|
|
|
|
data={joinList} |
|
|
|
|
count={joinListCount} |
|
|
|
|
selectGroup={selectGroup} |
|
|
|
|
handleGroupSelect={handleGroupSelect} |
|
|
|
|
handlerGroupCancel={handlerGroupCancel} |
|
|
|
|
/> |
|
|
|
|
</Col> |
|
|
|
|
<Col sm='8'> |
|
|
|
|
{selectGroup.cstmrSno !== 0 ? ( |
|
|
|
|
<> |
|
|
|
|
<AnalysisHistorySearch |
|
|
|
|
handlerInput={handlerInput} |
|
|
|
|
handlerSearch={handlerSearch} |
|
|
|
@ -179,6 +264,18 @@ export const AnalysisHistoryContainer = props => {
|
|
|
|
|
onKeyPress={onKeyPress} |
|
|
|
|
setParams={setParams} |
|
|
|
|
/> |
|
|
|
|
</> |
|
|
|
|
|
|
|
|
|
) : ( |
|
|
|
|
<div className='no-dataTable'> |
|
|
|
|
나의 그룹 목록에서 상세보기를 클릭하세요. |
|
|
|
|
</div> |
|
|
|
|
)} |
|
|
|
|
|
|
|
|
|
</Col> |
|
|
|
|
<Col sm='12'> |
|
|
|
|
{selectGroup.cstmrSno !== 0 ? ( |
|
|
|
|
<> |
|
|
|
|
<AnalysisHistoryGrid |
|
|
|
|
data={data} |
|
|
|
|
title={titleName} |
|
|
|
@ -187,6 +284,16 @@ export const AnalysisHistoryContainer = props => {
|
|
|
|
|
count={count} |
|
|
|
|
pagination={true} |
|
|
|
|
/> |
|
|
|
|
</> |
|
|
|
|
|
|
|
|
|
) : ( |
|
|
|
|
<div className='no-dataTable'> |
|
|
|
|
나의 그룹 목록에서 상세보기를 클릭하세요. |
|
|
|
|
</div> |
|
|
|
|
)} |
|
|
|
|
|
|
|
|
|
</Col> |
|
|
|
|
</Row> |
|
|
|
|
</CustomMainLayout> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|