Browse Source

laanc 유효성 검사 기능 추가

pull/2/head
sanguu516(박상현) 1 year ago
parent
commit
f9d7455385
  1. 212
      src/views/laanc/FlightPlan.js

212
src/views/laanc/FlightPlan.js

@ -6,6 +6,7 @@ import { VscRadioTower } from 'react-icons/vsc';
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
import Flatpickr from 'react-flatpickr'; import Flatpickr from 'react-flatpickr';
import '@styles/react/libs/flatpickr/flatpickr.scss'; import '@styles/react/libs/flatpickr/flatpickr.scss';
import { ErrorModal } from '../../components/modal/ErrorModal';
import moment from 'moment'; import moment from 'moment';
import { import {
Button, Button,
@ -34,13 +35,151 @@ import {
import { useHistory } from 'react-router-dom'; import { useHistory } from 'react-router-dom';
const FlightPlan = props => { const FlightPlan = props => {
const [detailData, setDetailData] = useState(initFlightBas.initDetail); const [detailData, setDetailData] = useState(initFlightBas.initDetail);
const [modal2, setModal2] = useState({
isOpen: false,
title: '',
desc: ''
});
const history = useHistory(); const history = useHistory();
const handleChange = ({ name, value, type, index, pIndex }) => { const handleChange = ({ name, value, type, index, pIndex }) => {
// 입력 값에서 숫자 이외의 문자를 제거
console.log('>>', name);
const arrName = `${type}List`;
switch (type) {
case 'area':
case 'pilot':
case 'arcrft':
if (name === 'fltElev' || name === 'bufferZone') {
const newValue = value.replace(/[^0-9]/g, '');
setDetailData(prevState => {
const arr = [...prevState[arrName]];
const updateData = {
...prevState[arrName][0],
[name]: newValue
};
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 'plan':
default:
setDetailData(prevState => ({ setDetailData(prevState => ({
...prevState, ...prevState,
[name]: value [name]: value
})); }));
break;
}
};
console.log('>>>', detailData);
const handlerNext = () => {
const reg_email =
/^([0-9a-zA-Z_\.-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}$/;
const check_num = /[0-9]/;
const check_kor =
/^[가-힣a-zA-Z0-9][^!@#$%^&*()+\=\[\]{};':"\\|,.<>\/?\s]*$/;
if (!detailData.pilotList[0].memberName) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '이름을 입력해 주세요.'
});
return false;
} else if (!check_num.test(detailData.pilotList[0].hpno)) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '연락처를 확인해 주세요.'
});
return false;
return false;
} else if (!reg_email.test(detailData.pilotList[0].email)) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '이메일을 확인해 주세요.'
});
return false;
} else if (!detailData.fltPurpose) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행목적을 선택해 주세요.'
});
return false;
} else if (!detailData.areaList[0].fltElev) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '고도를 입력해 주세요.'
});
return false;
} else if (!detailData.areaList[0].bufferZone) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '반경을 입력해 주세요.'
});
return false;
} else if (!detailData.areaList[0].fltMethod) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '비행방식를 입력해 주세요.'
});
return false;
} else if (!detailData.arcrftList[0].groupNm) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '기체 신고 번호를 입력해 주세요.'
});
return false;
} else if (!detailData.arcrftList[0].arcrftTypeCd) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '기체 종류를 입력해 주세요.'
});
return false;
} else if (!detailData.arcrftList[0].ownerNm) {
setModal2({
isOpen: true,
title: '필수값 입력 오류',
desc: '소유자명(법인명)를 입력해 주세요.'
});
return false;
} else handleClick(2);
}; };
const handleClick = value => { const handleClick = value => {
@ -124,11 +263,11 @@ const FlightPlan = props => {
id='memberName' id='memberName'
name='memberName' name='memberName'
// defaultValue={data.memberName} // defaultValue={data.memberName}
// value={data.memberName || ''} value={detailData.pilotList[0].memberName || ''}
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'pilot',
name, name,
value value
}); });
@ -155,7 +294,7 @@ const FlightPlan = props => {
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'pilot',
name, name,
value value
}); });
@ -169,12 +308,12 @@ const FlightPlan = props => {
id='hpno' id='hpno'
name='hpno' name='hpno'
// defaultValue={data.hpno} // defaultValue={data.hpno}
// value={data.hpno || ''} value={detailData.pilotList[0].hpno || ''}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'pilot',
name, name,
value value
}); });
@ -194,12 +333,12 @@ const FlightPlan = props => {
id='email' id='email'
name='email' name='email'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} value={detailData.pilotList[0].email}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'pilot',
name, name,
value value
}); });
@ -228,8 +367,8 @@ const FlightPlan = props => {
id='schFltStDt' id='schFltStDt'
name='schFltStDt' name='schFltStDt'
data-enable-time data-enable-time
// defaultValue={data.schFltStDt} defaultValue={detailData.schFltStDt}
// value={data.schFltStDt} value={detailData.schFltStDt}
onChange={date => { onChange={date => {
const value = const value =
moment(date[0]).format('YYYY-MM-DD HH:mm:ss') || moment(date[0]).format('YYYY-MM-DD HH:mm:ss') ||
@ -255,8 +394,8 @@ const FlightPlan = props => {
id='schFltEndDt' id='schFltEndDt'
name='schFltEndDt' name='schFltEndDt'
data-enable-time data-enable-time
// defaultValue={data.schFltEndDt} defaultValue={detailData.schFltEndDt}
// value={data.schFltEndDt} value={detailData.schFltEndDt}
onChange={date => { onChange={date => {
const value = const value =
moment(date[0]).format('YYYY-MM-DD HH:mm:ss') || moment(date[0]).format('YYYY-MM-DD HH:mm:ss') ||
@ -280,7 +419,7 @@ const FlightPlan = props => {
type='select' type='select'
id='fltPurpose' id='fltPurpose'
name='fltPurpose' name='fltPurpose'
// value={data.fltPurpose} value={detailData.fltPurpose}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
@ -325,15 +464,15 @@ const FlightPlan = props => {
</Label> </Label>
<Input <Input
type='text' type='text'
id='email' id='fltElev'
name='email' name='fltElev'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} value={detailData.areaList[0].fltElev}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'area',
name, name,
value value
}); });
@ -350,15 +489,15 @@ const FlightPlan = props => {
</Label> </Label>
<Input <Input
type='text' type='text'
id='email' id='bufferZone'
name='email' name='bufferZone'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} value={detailData.areaList[0].bufferZone}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'area',
name, name,
value value
}); });
@ -375,15 +514,15 @@ const FlightPlan = props => {
</Label> </Label>
<Input <Input
type='text' type='text'
id='email' id='fltMethod'
name='email' name='fltMethod'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} value={detailData.areaList[0].fltMethod}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'area',
name, name,
value value
}); });
@ -407,21 +546,21 @@ const FlightPlan = props => {
</Label> </Label>
<Input <Input
type='text' type='text'
id='email' id='groupNm'
name='email' name='groupNm'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} // value={data.email}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'arcrft',
name, name,
value value
}); });
}} }}
// innerRef={props.data} // innerRef={props.data}
placeholder='100m' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
@ -432,15 +571,15 @@ const FlightPlan = props => {
</Label> </Label>
<Input <Input
type='text' type='text'
id='email' id='arcrftTypeCd'
name='email' name='arcrftTypeCd'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} // value={data.email}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'arcrft',
name, name,
value value
}); });
@ -457,21 +596,21 @@ const FlightPlan = props => {
</Label> </Label>
<Input <Input
type='text' type='text'
id='email' id='ownerNm'
name='email' name='ownerNm'
// defaultValue={data.email || ''} // defaultValue={data.email || ''}
// value={data.email} // value={data.email}
bsSize='sm' bsSize='sm'
onChange={e => { onChange={e => {
const { name, value } = e.target; const { name, value } = e.target;
handleChange({ handleChange({
type: 'plan', type: 'arcrft',
name, name,
value value
}); });
}} }}
// innerRef={props.data} // innerRef={props.data}
placeholder='100m' placeholder=''
/> />
</FormGroup> </FormGroup>
</Col> </Col>
@ -496,7 +635,7 @@ const FlightPlan = props => {
className='mr-1' className='mr-1'
color='primary' color='primary'
bsSize='sm' bsSize='sm'
onClick={() => handleClick(2)} onClick={() => handlerNext()}
> >
다음 다음
</Button.Ripple> </Button.Ripple>
@ -506,6 +645,7 @@ const FlightPlan = props => {
</Row> </Row>
</Col> </Col>
</Row> </Row>
<ErrorModal modal={modal2} setModal={setModal2} />
</div> </div>
); );
}; };

Loading…
Cancel
Save