Browse Source

운항과 요구사항 반역 진행중

master
김장현 1 month ago
parent
commit
a7ab01b636
  1. 70
      src/components/flight/NewFlightApprovalsReport.js
  2. 5
      src/components/flight/OperationApprovalsTable.js
  3. 3
      src/configs/constants.ts
  4. 94
      src/containers/flight/OperationApprovalsContainer.js
  5. 100
      src/containers/flight/popup/OperationApprovalsPopupContainer.js

70
src/components/flight/NewFlightApprovalsReport.js

@ -106,21 +106,65 @@ export default function NewFlightApprovalsReport(props) {
<div className='list-input'>
<div className='layer-content'>
<FormGroup>
<Label for='reviewedType'>검토결과</Label>
<Label for='approvalCd'>LAANC 검토결과</Label>
<CustomInput
type='select'
bsSize='sm'
id='reviewedType'
id='approvalCd'
placeholder='확인결과를 입력해주세요.'
onChange={props.handlerApprovalCd}
onKeyPress={handleKeyDown}
>
{props.approvalCd.map(item => (
<option key={item.name} value={item.value}>
{item.name}
</option>
))}
</CustomInput>
</FormGroup>
</div>
</div>
</div>
</div>
<div className='layer-content'>
<div className='layer-ti'>
<h4>확인 결과</h4>
</div>
<div className='input-n'>
<div className='list-input'>
<div className='layer-content'>
<FormGroup>
<Label for='searchDate'>안전운항과</Label>
<CustomInput
type='select'
bsSize='sm'
id='reviewedType'
value={props.reviewedType}
onChange={e => props.setReviewedType(e.target.value)}
onKeyPress={handleKeyDown}
>
{Object.values(FlightCategory.Operation).map(item => (
<option key={item} value={item}>
{item}
</option>
))}
</CustomInput>
</FormGroup>
</div>
</div>
<div className='list-input'>
<div className='layer-content'>
<FormGroup>
<Label for='searchDate'>관제통신과</Label>
<CustomInput
type='select'
bsSize='sm'
id='reviewedType'
value={props.reviewedType}
onChange={e => props.setReviewedType(e.target.value)}
onKeyPress={handleKeyDown}
>
{Object.values(
props.pageName === 'control'
? FlightCategory.Control
: FlightCategory.Operation
).map(item => (
{Object.values(FlightCategory.Control).map(item => (
<option key={item} value={item}>
{item}
</option>
@ -129,6 +173,18 @@ export default function NewFlightApprovalsReport(props) {
</FormGroup>
</div>
</div>
<div className='list-input'>
<div className='layer-content'>
<FormGroup>
<Label for='searchDate'>전송 상태</Label>
<CustomInput type='select' bsSize='sm'>
<option>전체</option>
<option>전송</option>
<option>미전송</option>
</CustomInput>
</FormGroup>
</div>
</div>
</div>
</div>
<div className='layer-content'>

5
src/components/flight/OperationApprovalsTable.js

@ -1368,6 +1368,9 @@ export default function OperationApprovalsTable(props) {
<Button color='primary' size='sm' onClick={() => handleCheckbox('A')}>
요청
</Button>
<Button color='info' size='sm' onClick={() => handleCheckbox('A')}>
드론 원스톱 전송
</Button>
</div>
</div>
<div className='search-case-list'>
@ -1379,6 +1382,8 @@ export default function OperationApprovalsTable(props) {
조건부 승인 {approvalCdValue.C}
</li>
<li className='non-target'>비대상 {approvalCdValue.U}</li>
<li className='non-target'>전송 0</li>
<li className='non-target'> 전송 0</li>
</ul>
</div>
</div>

3
src/configs/constants.ts

@ -246,8 +246,9 @@ export const FlightCategory = {
Operation: {
: '전체',
: '검토완료',
: '검토대기',
: '검토요청',
: '검토재요청',
: '검토대기',
: '검토불필요',
: '검토요청취소'
}

94
src/containers/flight/OperationApprovalsContainer.js

@ -64,6 +64,14 @@ export default function OperationApprovalsContainer({ mode }) {
// 검토 상태값
const [reviewedType, setReviewedType] = useState('전체');
// laanc 검토 상태값
const [approvalCd, setApprovalCd] = useState([
{ name: '전체', value: '', select: false },
{ name: '승인', value: 'S', select: false },
{ name: '미 승인', value: 'F', select: false },
{ name: '비 대상', value: 'U', select: false },
{ name: '조건부 승인', value: 'C', select: false }
]);
// 지역
const [filterArea, setFilterArea] = useState({
@ -268,16 +276,6 @@ export default function OperationApprovalsContainer({ mode }) {
const checkSearch = text => {
switch (text) {
case '승인':
return 'S';
case '미승인':
return 'F';
case '비대상':
return 'U';
case '조건부승인':
return 'C';
case '조건부 승인':
return 'C';
case '검토완료':
return 'R';
case '검토재요청':
@ -296,36 +294,6 @@ export default function OperationApprovalsContainer({ mode }) {
setStartDate(searchDate.startDate);
setEndDate(searchDate.endDate);
if (
search != '' &&
(search === '승인' ||
search === '미승인' ||
search === '비대상' ||
search === '조건부승인' ||
search === '조건부 승인')
) {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
searchEndDt: searchDate.endDate,
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address,
approvalCd: checkSearch(search)
})
);
} else if (reviewedType !== '전체') {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
searchEndDt: searchDate.endDate,
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address,
reviewedType: checkSearch(reviewedType)
})
);
} else if (search != '') {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
@ -333,20 +301,16 @@ export default function OperationApprovalsContainer({ mode }) {
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address,
applyNo: search
...(search !== '' ? { applyNo: search } : {}),
...(reviewedType !== '전체'
? { reviewedType: checkSearch(reviewedType) }
: {}),
...(approvalCd.filter(i => i.select).length > 0
? { approvalCd: approvalCd.filter(i => i.select)[0].value }
: {})
})
);
} else {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
searchEndDt: searchDate.endDate,
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address
})
);
}
// );
setFilter(search);
};
@ -734,6 +698,30 @@ export default function OperationApprovalsContainer({ mode }) {
}
};
const handlerApprovalCd = ({ target: { value } }) => {
setApprovalCd(
approvalCd.map(i => {
if (!value) {
return {
...i,
select: false
};
} else {
if (i.value === value) {
return {
...i,
select: true
};
}
return {
...i,
select: false
};
}
})
);
};
const handlerLogout = async () => {
const { payload } = await dispatch(setLogout());
@ -982,6 +970,8 @@ export default function OperationApprovalsContainer({ mode }) {
setFilterArea={setFilterArea}
setReviewedType={setReviewedType}
reviewedType={reviewedType}
approvalCd={approvalCd}
handlerApprovalCd={handlerApprovalCd}
pageName='operation'
/>
<OperationApprovalsTable

100
src/containers/flight/popup/OperationApprovalsPopupContainer.js

@ -24,6 +24,13 @@ function OperationApprovalsPopupContainer() {
// 검토 상태값
const [reviewedType, setReviewedType] = useState('전체');
const [approvalCd, setApprovalCd] = useState([
{ name: '전체', value: '', select: false },
{ name: '승인', value: 'S', select: false },
{ name: '미 승인', value: 'F', select: false },
{ name: '비 대상', value: 'U', select: false },
{ name: '조건부 승인', value: 'C', select: false }
]);
const dispatch = useDispatch();
@ -100,24 +107,18 @@ function OperationApprovalsPopupContainer() {
const checkSearch = text => {
switch (text) {
case '승인':
return 'S';
case '미승인':
return 'F';
case '비대상':
return 'U';
case '조건부승인':
return 'C';
case '조건부 승인':
return 'C';
case '검토완료':
return 'R';
case '재검토':
return 'A';
case '검토대기':
return 'W';
case '검토불필요':
return 'U';
case '검토요청':
return 'Q';
case '검토재요청':
return 'A';
case '검토요청취소':
return 'C';
}
};
@ -125,36 +126,6 @@ function OperationApprovalsPopupContainer() {
setStartDate(searchDate.startDate);
setEndDate(searchDate.endDate);
setFilter(search);
if (
search != '' &&
(search === '승인' ||
search === '미승인' ||
search === '비대상' ||
search === '조건부승인' ||
search === '조건부 승인')
) {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
searchEndDt: searchDate.endDate,
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address,
approvalCd: checkSearch(search)
})
);
} else if (reviewedType !== '전체') {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
searchEndDt: searchDate.endDate,
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address,
reviewedType: checkSearch(reviewedType)
})
);
} else if (search != '') {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
@ -162,20 +133,15 @@ function OperationApprovalsPopupContainer() {
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address,
applyNo: search
})
);
} else {
dispatch(
getLaancAprvList({
searchStDt: searchDate.startDate,
searchEndDt: searchDate.endDate,
ctprvn: filterArea.ctprvn === '전체' ? '' : filterArea.ctprvn,
sig: filterArea.sig === '전체' ? '' : filterArea.sig,
address: filterArea.address
...(search !== '' ? { applyNo: search } : {}),
...(reviewedType !== '전체'
? { reviewedType: checkSearch(reviewedType) }
: {}),
...(approvalCd.filter(i => i.select).length > 0
? { approvalCd: approvalCd.filter(i => i.select)[0].value }
: {})
})
);
}
localStorage.setItem(
'popupState',
JSON.stringify({
@ -210,6 +176,30 @@ function OperationApprovalsPopupContainer() {
handlerOpnerPostMessage('detail', { area });
};
const handlerApprovalCd = ({ target: { value } }) => {
setApprovalCd(
approvalCd.map(i => {
if (!value) {
return {
...i,
select: false
};
} else {
if (i.value === value) {
return {
...i,
select: true
};
}
return {
...i,
select: false
};
}
})
);
};
return (
<div className='right-menu active'>
<div
@ -225,6 +215,8 @@ function OperationApprovalsPopupContainer() {
setFilterArea={setFilterArea}
reviewedType={reviewedType}
setReviewedType={setReviewedType}
approvalCd={approvalCd}
handlerApprovalCd={handlerApprovalCd}
pageName='operation'
/>
<OperationApprovalsTable

Loading…
Cancel
Save