Browse Source

값 유효성(기체 페이지)

feature/auth
sanguu 2 years ago
parent
commit
55df2a6b8e
  1. 53
      src/containers/basis/dron/BasisDronDetailContainer.js
  2. 63
      src/containers/basis/dron/BasisIdntfContainer.js

53
src/containers/basis/dron/BasisDronDetailContainer.js

@ -21,12 +21,27 @@ export const BasisDronDetailContainer = props => {
const titleName = ' 기체 관리'; const titleName = ' 기체 관리';
const [pageType, setPageType] = useState('create'); const [pageType, setPageType] = useState('create');
const validationSchema = yup.object().shape({ const validationSchema = yup.object().shape({
arcrftModelNm: yup.string().trim().required('모델명 을 입력해 주세요.'), arcrftModelNm: yup.string().trim().required('모델명 을 입력해 주세요.')
.max(20, '최대 20 자 이하 입력 부탁드립니다.')
.matches(
/^[가-힣a-zA-Z0-9][^!@#$%^&*()+\=\[\]{};':"\\|,.<>\/?\s]*$/,
'지원하지 않는 특수문자입니다.'
),
arcrftTypeCd: yup.string().trim().required('종류 를 선택해 주세요.'), arcrftTypeCd: yup.string().trim().required('종류 를 선택해 주세요.'),
cameraYn: yup.string().trim().required('카메라 탑재여부 를 선택해 주세요.'), cameraYn: yup.string().trim().required('카메라 탑재여부 를 선택해 주세요.'),
insrncYn: yup.string().trim().required('보험가입 여부를 선택해 주세요.'), insrncYn: yup.string().trim().required('보험가입 여부를 선택해 주세요.'),
prdctCmpnNm: yup.string().trim().required('제작사 를 입력해 주세요.'), prdctCmpnNm: yup.string().trim().required('제작사 를 입력해 주세요.')
prdctNum: yup.string().trim().required('제작번호 를 입력해 주세요.'), .max(20, '최대 20 자 이하 입력 부탁드립니다.')
.matches(
/^[가-힣a-zA-Z0-9][^!@#$%^&*()+\=\[\]{};':"\\|,.<>\/?\s]*$/,
'지원하지 않는 특수문자입니다.'
),
prdctNum: yup.string().trim().required('제작번호 를 입력해 주세요.')
.max(20, '최대 20 자 이하 입력 부탁드립니다.')
.matches(
/^[가-힣a-zA-Z0-9][^!@#$%^&*()+\=\[\]{};':"\\|,.<>\/?\s]*$/,
'지원하지 않는 특수문자입니다.'
),
wghtTypeCd: yup.string().trim().required('중량구분 을 선택해 주세요.'), wghtTypeCd: yup.string().trim().required('중량구분 을 선택해 주세요.'),
// ownerNm: yup.string().trim().required('운영자명 을 입력해 주세요.'), // ownerNm: yup.string().trim().required('운영자명 을 입력해 주세요.'),
// hpno: yup.string().trim().required('운영자 연락처 를 입력해 주세요.') // hpno: yup.string().trim().required('운영자 연락처 를 입력해 주세요.')
@ -101,21 +116,21 @@ export const BasisDronDetailContainer = props => {
const handlerImageChange = e => { const handlerImageChange = e => {
const reader = new FileReader(), const reader = new FileReader(),
files = e.target.files; files = e.target.files;
if(!(files[0] == undefined)){ if (!(files[0] == undefined)) {
if(!(files[0].size == 0)){ if (!(files[0].size == 0)) {
const fileSize = files[0].size/1048576; const fileSize = files[0].size / 1048576;
if(fileSize > 10) { if (fileSize > 10) {
setModal({ setModal({
isOpen: true, isOpen: true,
title: '이미지 용량 초과', title: '이미지 용량 초과',
desc: '10MB 이하의 파일만 등록 가능합니다', desc: '10MB 이하의 파일만 등록 가능합니다',
color: 'modal-danger' color: 'modal-danger'
}) })
return; return;
}
}
} }
saveFileAPI(files[0]); }
}
saveFileAPI(files[0]);
}; };
const handlerImageDelete = () => { const handlerImageDelete = () => {
@ -195,13 +210,13 @@ export const BasisDronDetailContainer = props => {
> >
저장 저장
</Button.Ripple> </Button.Ripple>
{pageType != 'create'? {pageType != 'create' ?
( (
<Button.Ripple color='danger' size='sm' onClick={handlerDelete} > <Button.Ripple color='danger' size='sm' onClick={handlerDelete} >
삭제 삭제
</Button.Ripple> </Button.Ripple>
) )
: :
( (
<></> <></>
) )

63
src/containers/basis/dron/BasisIdntfContainer.js

@ -14,8 +14,8 @@ export const BasisIdntfContainer = props => {
id: '', id: '',
idntfNum: '', idntfNum: '',
idntfTypeCd: 'DRON', idntfTypeCd: 'DRON',
ownerNm:'', ownerNm: '',
hpno:'', hpno: '',
isSave: false isSave: false
}); });
//모달 관련 설정 //모달 관련 설정
@ -61,6 +61,38 @@ export const BasisIdntfContainer = props => {
saveArr.forEach(idntf => { saveArr.forEach(idntf => {
const check_num = /[0-9]/;
const check_kor = /^[가-힣a-zA-Z0-9][^!@#$%^&*()+\=\[\]{};':"\\|,.<>\/?\s]*$/;
if (!check_num.test(idntf.hpno)) {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '연락처에 숫자만 입력해주세요.'
});
checking = false;
return false;
}
if (!check_kor.test(idntf.idntfNum)) {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '식별번호에 지원되지 않는 특수문자입니다.'
});
checking = false;
return false;
}
if (!check_kor.test(idntf.ownerNm)) {
setModal({
isOpen: true,
title: '필수값 입력 오류',
desc: '소유자명에 지원되지 않는 특수문자입니다.'
});
checking = false;
return false;
}
if (!idntf.idntfNum && idntf.idntfNum === '') { if (!idntf.idntfNum && idntf.idntfNum === '') {
setModal({ setModal({
isOpen: true, isOpen: true,
@ -70,7 +102,7 @@ export const BasisIdntfContainer = props => {
checking = false; checking = false;
return false; return false;
} }
if(!idntf.ownerNm && idntf.ownerNm === '') { if (!idntf.ownerNm && idntf.ownerNm === '') {
setModal({ setModal({
isOpen: true, isOpen: true,
title: '필수값 입력 오류', title: '필수값 입력 오류',
@ -79,7 +111,7 @@ export const BasisIdntfContainer = props => {
checking = false; checking = false;
return false; return false;
} }
if(!idntf.hpno && idntf.hpno === '') { if (!idntf.hpno && idntf.hpno === '') {
setModal({ setModal({
isOpen: true, isOpen: true,
title: '필수값 입력 오류', title: '필수값 입력 오류',
@ -114,6 +146,7 @@ export const BasisIdntfContainer = props => {
const addData = () => { const addData = () => {
setIdntfDataList([...idntDataList, { ...idntfData, id: Math.random() }]); setIdntfDataList([...idntDataList, { ...idntfData, id: Math.random() }]);
}; };
@ -149,17 +182,17 @@ export const BasisIdntfContainer = props => {
</Row> </Row>
) : ( ) : (
<Row> <Row>
<Col> <Col>
<BasisIdntfForm <BasisIdntfForm
data={idntDataList} data={idntDataList}
count={idntDataList?.length} count={idntDataList?.length}
handlerInput={handlerInput} handlerInput={handlerInput}
addData={addData} addData={addData}
deletaData={deletaData} deletaData={deletaData}
handlerSave={handlerCreate} handlerSave={handlerCreate}
handlerDelete={handlerDelete} handlerDelete={handlerDelete}
/> />
<ErrorModal modal={modal} setModal={setModal} /> <ErrorModal modal={modal} setModal={setModal} />
</Col> </Col>
</Row> </Row>
); );

Loading…
Cancel
Save