Browse Source

비행계획서 신청 - 검색 폼

pull/2/head
junh_eee 2 years ago
parent
commit
366efdec27
  1. 24
      package-lock.json
  2. 25
      public/index.html
  3. 182
      src/components/basis/flight/plan/FlightPlanAreaForm.js
  4. 716
      src/components/basis/flight/plan/FlightPlanForm.js
  5. 76
      src/components/basis/flight/plan/FlightPlanGrid.js
  6. 174
      src/components/basis/flight/plan/FlightPlanSearch.js
  7. 24
      src/containers/basis/flight/plan/FlightPlanContainer.js

24
package-lock.json generated

@ -11260,6 +11260,11 @@
"verror": "1.10.0" "verror": "1.10.0"
} }
}, },
"jsts": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/jsts/-/jsts-2.9.0.tgz",
"integrity": "sha512-QU9aQ+qZOSkMcX+ZZQevW0nswoKGAVoFfDycmAQeeHNYMnB4PoopiCXMKE2t93mEZeM82ikUA+eGdJjfJN5AkA=="
},
"jsx-ast-utils": { "jsx-ast-utils": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz",
@ -11865,6 +11870,11 @@
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
}, },
"mgrs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz",
"integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA=="
},
"microevent.ts": { "microevent.ts": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz",
@ -18883,6 +18893,15 @@
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
}, },
"proj4": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/proj4/-/proj4-2.8.0.tgz",
"integrity": "sha512-baC+YcD4xsSqJ+CpCZljj2gcQDhlKb+J+Zjv/2KSBwWNjk4M0pafgQsE+mWurd84tflMIsP+7j7mtIpFDHzQfQ==",
"requires": {
"mgrs": "1.0.0",
"wkt-parser": "^1.3.1"
}
},
"promise": { "promise": {
"version": "7.3.1", "version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@ -25216,6 +25235,11 @@
"resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz", "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz",
"integrity": "sha1-pwIEUwhNjNLv5wup02liY94XEKU=" "integrity": "sha1-pwIEUwhNjNLv5wup02liY94XEKU="
}, },
"wkt-parser": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.3.2.tgz",
"integrity": "sha512-A26BOOo7sHAagyxG7iuRhnKMO7Q3mEOiOT4oGUmohtN/Li5wameeU4S6f8vWw6NADTVKljBs8bzA8JPQgSEMVQ=="
},
"wmf": { "wmf": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",

25
public/index.html

@ -17,6 +17,31 @@
type="text/javascript" type="text/javascript"
src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=5md90yszqj&submodules=geocoder,drawing" src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=5md90yszqj&submodules=geocoder,drawing"
></script> ></script>
<script
type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jsts/2.0.3/jsts.min.js"
></script>
<!-- <script type="text/javascript" src="http://maps.google.com/maps/api/js?key=AIzaSyDKCsI8cbzgi4es3xCUIhElUm6NRM73QuI" ></script> -->
<!-- <script
type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDKCsI8cbzgi4es3xCUIhElUm6NRM73QuI&callback=initMap"
></script> -->
<!-- <script
type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDKCsI8cbzgi4es3xCUIhElUm6NRM73QuI&callback=initMap"
></script> -->
<!--
<script
type="text/javascript"
src="http://maps.googleapis.com/maps/api/js"
></script> -->
<!-- <link href="resources/openlayers/ol.css"rel="stylesheet">
<script src="resources/openlayers/ol.js"></script>
<script src="resources/js/proj4.js"></script> -->
<!-- <!--
Notice the use of %PUBLIC_URL% in the tags above. Notice the use of %PUBLIC_URL% in the tags above.

182
src/components/basis/flight/plan/FlightPlanAreaForm.js

@ -17,98 +17,98 @@ import {
const FlightPlanAreaForm = (props) => { const FlightPlanAreaForm = (props) => {
return ( return (
<Card> <Card>
<CardBody> <CardBody>
<div className='search-cont search-info pd-0'> <div className='search-cont search-info pd-0'>
<div className='cont-ti mb-1 d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'> <div className='cont-ti mb-1 d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div> <div>
<h4>상세 정보</h4> <h4>상세 정보</h4>
</div> </div>
<div className='final'> <div className='final'>
{/* {props.type === 'update' ? ( {/* {props.type === 'update' ? (
<span>최종 수정일자 : {props.updateDt}</span> <span>최종 수정일자 : {props.updateDt}</span>
) : null} */} ) : null} */}
</div> </div>
</div> </div>
<dl>
<dt>
<div className='search-info-box'>
<Row>
<Col className='list-input' lg={6} md={6} sm={12}>
<FormGroup>
<Label for='test'>
<span className='necessary'></span>(m)
</Label>
<Input
type='text'
id='radius'
name='radius'
size='sm'
placeholder=''
innerRef={props.data}
/>
</FormGroup>
</Col>
</Row>
</div>
<div className='search-info-box'>
<Row>
<Col className='list-input' lg={6} md={6} sm={12}>
<FormGroup className='m_ft'>
<div className='m_ft_box'>
<Label for='test'>
<span className='necessary'></span>(m/ft)
</Label>
<Input
type='text'
id='altitude_m'
name='altitude_m'
size='sm'
placeholder='m'
innerRef={props.data}
/>
</div>
<div className='m_ft_box'>
<Input
type='text'
id='altitude'
name='altitude'
size='sm'
placeholder='ft'
innerRef={props.data}
/>
</div>
</FormGroup>
</Col>
</Row>
</div>
<dl> <Button.Ripple
<dt> className='mr-1'
<div className='search-info-box'> color='primary'
<Row> size='sm'
<Col className='list-input' lg={6} md={6} sm={12}> onClick={
<FormGroup> props.submit
<Label for='test'> }
<span className='necessary'></span>(m) >
</Label> 확인
<Input </Button.Ripple>
type='text' <Button.Ripple
id='radius' className='mr-1'
name='radius' color='danger'
size='sm' size='sm'
placeholder='' onClick={() =>
innerRef={props.data} props.setModal({ ...props.modal, isOpen: !props.modal.isOpen })
/> }
</FormGroup> >
</Col> 취소
</Row> </Button.Ripple>
</div> </dt>
<div className='search-info-box'> </dl>
<Row> </div>
<Col className='list-input' lg={6} md={6} sm={12}> </CardBody>
<FormGroup className='m_ft'> </Card>
<div className='m_ft_box'>
<Label for='test'>
<span className='necessary'></span>(m/ft)
</Label>
<Input
type='text'
id='altitude_m'
name='altitude_m'
size='sm'
placeholder='m'
innerRef={props.data}
/>
</div>
<div className='m_ft_box'>
<Input
type='text'
id='altitude'
name='altitude'
size='sm'
placeholder='ft'
innerRef={props.data}
/>
</div>
</FormGroup>
</Col>
</Row>
</div>
<Button.Ripple
className='mr-1'
color='primary'
size='sm'
onClick={
props.submit
}
>
확인
</Button.Ripple>
<Button.Ripple
className='mr-1'
color='danger'
size='sm'
onClick={() =>
props.setModal({ ...props.modal, isOpen: !props.modal.isOpen })
}
>
취소
</Button.Ripple>
</dt>
</dl>
</div>
</CardBody>
</Card>
) )
} }

716
src/components/basis/flight/plan/FlightPlanForm.js

@ -14,373 +14,373 @@ import '@styles/react/libs/flatpickr/flatpickr.scss';
const FlightPlanForm = (props) => { const FlightPlanForm = (props) => {
return ( return (
<Row> <Row>
<Col sm='12'> <Col sm='12'>
<Card>
<CardBody className='pt-2 card-body-tab-cont'>
<Row>
<Col>
<Card> <Card>
<CardBody className='pt-2 card-body-tab-cont'> <CardBody className='pal-card-body'>
<Row> <div className='search-cont search-info pd-0'>
<Col> <div className='cont-ti mb-1 d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<Card> <div>
<CardBody className='pal-card-body'> <h4> 상세정보</h4>
<div className='search-cont search-info pd-0'> </div>
<div className='cont-ti mb-1 d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'> <div className='final'>
<div> {/* {props.type === 'update' ? (
<h4> 상세정보</h4> <span>최종 수정일자 : {props.updateDt}</span>
</div> ) : null} */}
<div className='final'> </div>
{/* {props.type === 'update' ? ( </div>
<span>최종 수정일자 : {props.updateDt}</span>
) : null} */}
</div>
</div>
<dl> <dl>
<dt> <dt>
<div className='search-info-ti d-flex justify-content-between'> <div className='search-info-ti d-flex justify-content-between'>
<h4 className='ti'>신청인 정보</h4> <h4 className='ti'>신청인 정보</h4>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'><span className='necessary'>*</span></Label> <Label for='test'><span className='necessary'>*</span></Label>
<Input <Input
type='text' type='text'
id='applicantNm' id='applicantNm'
name='applicantNm' name='applicantNm'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
placeholder='' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'><span className='necessary'>*</span></Label> <Label for='test'><span className='necessary'>*</span></Label>
<Input <Input
type='text' type='text'
id='applicantBirthDt' id='applicantBirthDt'
name='applicantBirthDt' name='applicantBirthDt'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
placeholder='' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
</Row> </Row>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'><span className='necessary'>*</span> </Label> <Label for='test'><span className='necessary'>*</span> </Label>
<Input <Input
type='text' type='text'
id='applicantPhone' id='applicantPhone'
name='applicantPhone' name='applicantPhone'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
placeholder='' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'><span className='necessary'></span> </Label> <Label for='test'><span className='necessary'></span> </Label>
<Input <Input
type='text' type='text'
id='applicantPhone' id='applicantPhone'
name='applicantPhone' name='applicantPhone'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
placeholder='' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
</Row> </Row>
</div> </div>
{/* <div className='search-info-box'> {/* <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'><span className='necessary'>*</span></Label> <Label for='test'><span className='necessary'>*</span></Label>
<Input <Input
type='text' type='text'
id='applicantAddress' id='applicantAddress'
name='applicantAddress' name='applicantAddress'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
placeholder='' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'><span className='necessary'>*</span> </Label> <Label for='test'><span className='necessary'>*</span> </Label>
<Input <Input
type='text' type='text'
id='applicantAddress' id='applicantAddress'
name='applicantAddress' name='applicantAddress'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
placeholder='' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
</Row> </Row>
</div> */} </div> */}
</dt> </dt>
<dt> <dt>
<div className='search-info-ti d-flex justify-content-between'> <div className='search-info-ti d-flex justify-content-between'>
<h4 className='ti'>비행 계획 정보</h4> <h4 className='ti'>비행 계획 정보</h4>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span> <span className='necessary'>*</span>
</Label> </Label>
<Flatpickr size='sm' className='form-control calendar-flat' /> <Flatpickr size='sm' className='form-control calendar-flat' />
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span> <span className='necessary'>*</span>
</Label> </Label>
<Flatpickr size='sm' className='form-control calendar-flat' /> <Flatpickr size='sm' className='form-control calendar-flat' />
</FormGroup> </FormGroup>
</Col> </Col>
</Row> </Row>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span> <span className='necessary'>*</span>
</Label> </Label>
<Input <Input
type='select' type='select'
name='arcrftTypeCd' name='arcrftTypeCd'
id='arcrftTypeCd' id='arcrftTypeCd'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
// className={classnames({ // className={classnames({
// 'is-invalid': props.errors.arcrftTypeCd // 'is-invalid': props.errors.arcrftTypeCd
// })} // })}
> >
<option value=''>= 선택 =</option> <option value=''>= 선택 =</option>
{/* CDNOT 코드연동 필요 */} {/* CDNOT 코드연동 필요 */}
{/* {ARCTFT_TYPE_CD.map(item => { {/* {ARCTFT_TYPE_CD.map(item => {
return ( return (
<option <option
value={item.code} value={item.code}
selected={ selected={
props.data.arcrftTypeCd === item.code props.data.arcrftTypeCd === item.code
? true ? true
: false : false
} }
> >
{item.codeNm} {item.codeNm}
</option> </option>
); );
})} */} })} */}
</Input> </Input>
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span> <span className='necessary'>*</span>
</Label> </Label>
<Input <Input
type='select' type='select'
name='arcrftTypeCd' name='arcrftTypeCd'
id='arcrftTypeCd' id='arcrftTypeCd'
size='sm' size='sm'
// innerRef={props.data} // innerRef={props.data}
// className={classnames({ // className={classnames({
// 'is-invalid': props.errors.arcrftTypeCd // 'is-invalid': props.errors.arcrftTypeCd
// })} // })}
> >
<option value=''>= 선택 =</option> <option value=''>= 선택 =</option>
{/* CDNOT 코드연동 필요 */} {/* CDNOT 코드연동 필요 */}
{/* {ARCTFT_TYPE_CD.map(item => { {/* {ARCTFT_TYPE_CD.map(item => {
return ( return (
<option <option
value={item.code} value={item.code}
selected={ selected={
props.data.arcrftTypeCd === item.code props.data.arcrftTypeCd === item.code
? true ? true
: false : false
} }
> >
{item.codeNm} {item.codeNm}
</option> </option>
); );
})} */} })} */}
</Input> </Input>
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'></span> <span className='necessary'></span>
</Label> </Label>
<Input <Input
type='text' type='text'
id='arcrftModelNm' id='arcrftModelNm'
name='arcrftModelNm' name='arcrftModelNm'
// innerRef={props.data} // innerRef={props.data}
size='sm' size='sm'
placeholder='' placeholder=''
// className={classnames({ // className={classnames({
// 'is-invalid': props.errors.arcrftModelNm // 'is-invalid': props.errors.arcrftModelNm
// })} // })}
/> />
{/* {props.errors && props.errors.arcrftModelNm && ( {/* {props.errors && props.errors.arcrftModelNm && (
<FormFeedback> <FormFeedback>
{props.errors.arcrftModelNm.message} {props.errors.arcrftModelNm.message}
</FormFeedback> </FormFeedback>
)} */} )} */}
</FormGroup> </FormGroup>
</Col> </Col>
</Row> </Row>
</div> </div>
</dt> </dt>
<dt> <dt>
<div className='search-info-ti d-flex justify-content-between'> <div className='search-info-ti d-flex justify-content-between'>
<h4 className='ti'>비행 구역 정보</h4> <h4 className='ti'>비행 구역 정보</h4>
<Button.Ripple <Button.Ripple
color="primary" color="primary"
onClick={props.openModal} onClick={props.openModal}
> >
비행 구역 설정 비행 구역 설정
</Button.Ripple> </Button.Ripple>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span> <span className='necessary'>*</span>
</Label> </Label>
<Input <Input
type='text' type='text'
id='ownerNm' id='ownerNm'
name='ownerNm' name='ownerNm'
size='sm' size='sm'
placeholder='' placeholder=''
readOnly readOnly
/> />
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span> <span className='necessary'>*</span>
</Label> </Label>
<Input <Input
type='text' type='text'
id='ownerNm' id='ownerNm'
name='ownerNm' name='ownerNm'
size='sm' size='sm'
placeholder='' placeholder=''
readOnly readOnly
/> />
</FormGroup> </FormGroup>
</Col> </Col>
</Row> </Row>
</div> </div>
<div className='search-info-box'> <div className='search-info-box'>
<Row> <Row>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup> <FormGroup>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span>(m) <span className='necessary'>*</span>(m)
</Label> </Label>
<Input <Input
type='text' type='text'
id='ownerNm' id='ownerNm'
name='ownerNm' name='ownerNm'
size='sm' size='sm'
placeholder='' placeholder=''
readOnly readOnly
/> />
</FormGroup> </FormGroup>
</Col> </Col>
<Col className='list-input' lg={4} md={6} sm={12}> <Col className='list-input' lg={4} md={6} sm={12}>
<FormGroup className='m_ft'> <FormGroup className='m_ft'>
<div className='m_ft_box'> <div className='m_ft_box'>
<Label for='test'> <Label for='test'>
<span className='necessary'>*</span>(m/ft) <span className='necessary'>*</span>(m/ft)
</Label> </Label>
<Input <Input
type='text' type='text'
id='ownerNm' id='ownerNm'
name='ownerNm' name='ownerNm'
size='sm' size='sm'
placeholder='m' placeholder='m'
readOnly readOnly
/> />
</div> </div>
<div className='m_ft_box'> <div className='m_ft_box'>
<Input <Input
type='text' type='text'
id='ownerNm' id='ownerNm'
name='ownerNm' name='ownerNm'
size='sm' size='sm'
placeholder='ft' placeholder='ft'
readOnly readOnly
/> />
</div> </div>
</FormGroup> </FormGroup>
</Col>
</Row>
</div>
</dt>
<div className='d-flex align-items-center'> </Col>
<Button.Ripple </Row>
className='mr-1' </div>
color='primary' </dt>
size='sm'
// onClick={
// pageType === 'create'
// ? handleSubmit(handlerCreate)
// : handleSubmit(handlerUpdate)
// }
>
저장
</Button.Ripple>
<Button.Ripple
color='danger'
size='sm'
// onClick={handlerDelete}
>
삭제
</Button.Ripple>
</div>
</dl> <div className='d-flex align-items-center'>
</div> <Button.Ripple
</CardBody> className='mr-1'
</Card> color='primary'
size='sm'
</Col> // onClick={
</Row> // pageType === 'create'
</CardBody> // ? handleSubmit(handlerCreate)
// : handleSubmit(handlerUpdate)
// }
>
저장
</Button.Ripple>
<Button.Ripple
color='danger'
size='sm'
// onClick={handlerDelete}
>
삭제
</Button.Ripple>
</div>
</dl>
</div>
</CardBody>
</Card> </Card>
</Col>
</Row> </Col>
</Row>
</CardBody>
</Card>
</Col>
</Row>
) )
} }

76
src/components/basis/flight/plan/FlightPlanGrid.js

@ -19,44 +19,48 @@ import {
CustomInput, CustomInput,
FormGroup FormGroup
} from 'reactstrap'; } from 'reactstrap';
import { GridDatabase } from '../../../crud/grid/GridDatatable';
const FlightPlanGrid = (props) => { const FlightPlanGrid = (props) => {
return ( return (
<div className='pal-card-box'> <div className='pal-card-box'>
<Row> <Row>
<Col> <Col>
<div className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'> <div className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div> <div>
<h4>{"비행 계획"} 목록</h4> {/* <h4>{"비행 계획"} 목록</h4> */}
<span className='search-case'>검색결과 0</span> <h4>{"비행계획서 신청"} 목록</h4>
</div> <span className='search-case'>검색결과 0</span>
<div className='d-flex align-items-center'> </div>
<Button.Ripple <div className='d-flex align-items-center'>
color='primary' <Button.Ripple
size='sm' color='primary'
onClick={props.moveFlightPlan} size='sm'
> onClick={props.moveFlightPlan}
계획서 생성 >
</Button.Ripple> {/* 계획서 생성 */}
</div> 비행계획서 신청
</div> </Button.Ripple>
<div className='invoice-list-wrapper'> </div>
<Card> </div>
<div className='invoice-list-dataTable'> <div className='invoice-list-wrapper'>
{/* <GridDatabase <Card>
title={'비행이력'} <div className='invoice-list-dataTable'>
// data={props.data} <GridDatabase
// count={props.count} title={'비행이력'}
// columns={props.columns} // data={props.data}
// pagination={props.pagination} count={0}
/> */} // columns={props.columns}
</div> // pagination={props.pagination}
</Card> />
</div> {/* 검색된 데이터가 없습니다. */}
</Col> </div>
</Row> </Card>
</div> </div>
) </Col>
</Row>
</div>
)
} }
export default FlightPlanGrid; export default FlightPlanGrid;

174
src/components/basis/flight/plan/FlightPlanSearch.js

@ -0,0 +1,174 @@
import React, { useEffect, useState } from 'react';
import {
Row,
Col,
Table,
Badge,
UncontrolledDropdown,
DropdownMenu,
DropdownItem,
DropdownToggle,
Card,
CardHeader,
CardBody,
CardTitle,
CardSubtitle,
ButtonGroup,
Button,
Input,
CustomInput,
FormGroup
} from 'reactstrap';
import { Calendar, Search } from 'react-feather';
import Flatpickr from 'react-flatpickr';
const FlightPlanSearch = (props) => {
const [isCheck, setIsCheck] = useState({
all: true,
yes: false,
no: false
});
useEffect(() => {
let aprvYn = '';
if (!isCheck.all) {
if (isCheck.yes) {
aprvYn = 'Y';
} else if (isCheck.no) {
aprvYn = 'N';
} else {
aprvYn = '-';
}
}
// props.setParams({
// ...props.params,
// aprvYn: aprvYn
// });
}, [isCheck]);
return (
<div className='pal-card-box'>
<Row>
<Col>
<div className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div>
<h4>검색조건</h4>
</div>
<div className='d-flex align-items-center'>
<Button.Ripple
color='primary'
size='sm'
onClick={e => props.handlerSearch()}
>
<Search size={16} />
검색
</Button.Ripple>
</div>
</div>
<Card>
<CardBody className='pal-card-body'>
<div className='search-cont'>
<dl>
<dt>
<div className='search-box'>
<div className='search-list-ti'>신청일</div>
<div className='search-list'>
<div className='search-list-cont'>
<Row>
<Col className='list-input' xl='4' md='6' sm='12'>
<div className='d-flex align-items-center calendar-flat'>
<Flatpickr
id='searchDate'
value={[
props.params.stDate,
props.params.endDate
]}
options={{
mode: 'range',
defaultDate: [
props.params.stDate,
props.params.endDate
]
}}
onChange={val =>
props.handlerInput('searchDate', val)
}
onKeyPress={props.onKeyPress}
className='form-control flat-picker bg-transparent border-0 shadow-none'
/>
</div>
</Col>
</Row>
</div>
</div>
</div>
</dt>
<dt>
<div className='search-box'>
<div className='search-list-ti'>승인여부</div>
<div className='search-list'>
{/* <div className="search-list-cont">
<Input size='sm'/>
</div> */}
<div className='search-list-cont'>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox'
label='전체'
checked={isCheck.all}
onClick={() =>
setIsCheckBox({
all: !isCheck.all,
yes: !isCheck.all,
no: !isCheck.all
})
}
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox2'
label='승인'
checked={isCheck.yes || isCheck.all}
onClick={() =>
setIsCheckBox({
all: false,
yes: !isCheck.yes
})
}
/>
<CustomInput
inline
type='checkbox'
id='exampleCustomCheckbox3'
label='미승인'
checked={isCheck.no || isCheck.all}
onClick={() =>
setIsCheckBox({
all: false,
no: !isCheck.no
})
}
/>
</div>
</div>
</div>
</dt>
</dl>
</div>
</CardBody>
</Card>
</Col>
</Row>
</div>
)
}
export default FlightPlanSearch;

24
src/containers/basis/flight/plan/FlightPlanContainer.js

@ -1,7 +1,9 @@
import React, { } from 'react'; import React, { useState } from 'react';
import moment from 'moment';
import { Link, useHistory } from 'react-router-dom'; import { Link, useHistory } from 'react-router-dom';
import FlightPlanGrid from '../../../../components/basis/flight/plan/FlightPlanGrid'; import FlightPlanGrid from '../../../../components/basis/flight/plan/FlightPlanGrid';
import { CustomMainLayout } from '../../../../components/layout/CustomMainLayout'; import { CustomMainLayout } from '../../../../components/layout/CustomMainLayout';
import FlightPlanSearch from '../../../../components/basis/flight/plan/FlightPlanSearch';
const FlightPlanContainer = () => { const FlightPlanContainer = () => {
@ -11,12 +13,24 @@ const FlightPlanContainer = () => {
history.push('/basis/flight/plan/create'); history.push('/basis/flight/plan/create');
}; };
const [times, setTimes] = useState({
stDate: moment().subtract(1, 'day').format('YYYY-MM-DD'),
endDate: moment().subtract(-1, 'day').format('YYYY-MM-DD'),
search1: ''
})
// console.log(history, 'history')
return ( return (
<CustomMainLayout title={"비행 계획 관리"}> // <CustomMainLayout title={"비행 계획 관리"}>
<FlightPlanGrid <CustomMainLayout title={"비행계획서 신청"}>
moveFlightPlan={moveFlightPlan} <FlightPlanSearch
/> params={times}
/>
<FlightPlanGrid
moveFlightPlan={moveFlightPlan}
/>
</CustomMainLayout> </CustomMainLayout>
) )
} }

Loading…
Cancel
Save