부과예고 validation 저장, 계산하기 통합

dev
박성영 3 months ago
parent 5d68532315
commit 166b25d665

@ -187,7 +187,7 @@
<th class="op-cell b-right-0 b-bottom-0"></th>
<th class="b-right-0 b-bottom-0">경과년수<br/>별잔가율</th>
<th class="op-cell b-right-0 b-bottom-0"></th>
<th class="b-right-0 b-bottom-0">기초공율</th>
<th class="b-right-0 b-bottom-0">기초공율</th>
<th class="op-cell b-right-0 b-bottom-0"></th>
<th class="b-right-0 b-bottom-0">건축물<br/>과세시가</th>
<th class="b-bottom-0">시가표준액<br/>(1,000원미만절삭)</th>
@ -213,7 +213,7 @@
<c:forEach var="code" items="${bscsCstrnSeCdList}">
<option value="${code.cdId}">${code.cdNm}</option>
</c:forEach>
</select><!-- 기초공율 -->
</select><!-- 기초공율 -->
</td>
<td rowspan="2" class="op-cell b-right-0">=</td>
<td rowspan="2" class="b-right-0 b-bottom-0"><input type="text" class="input numericMask" id="taxableMarketPrice" readonly/><!-- 건축물과세시가 --></td>
@ -1168,47 +1168,166 @@
},
/**
* 폼 유효성 검증
* 중요로직: 필수 입력 필드 및 데이터 유효성을 검증하여 저장 가능 여부를 판단합니다.
* @returns {boolean} 유효성 검증 결과
* 공통 필드 유효성 검증 함수
* 중요로직: 필드별 검증 규칙을 통합 관리하여 중복 코드를 제거합니다.
* @param {string} validationType - 검증 타입 ('save' 또는 'calculation')
* @returns {Object} 검증 결과 객체 { isValid: boolean, message: string, focusElement: string }
*/
validateForm: function() {
// 필수 필드 검증
if (!$('#actInfoId').val()) {
alert('행위정보를 선택해주세요.');
return false;
validateCommon: function(validationType) {
// 1. 행위정보 선택 검증 (저장 시에만)
if (validationType === 'save' && !$('#actInfoId').val()) {
return {
isValid: false,
message: '행위정보를 선택해주세요.',
focusElement: null
};
}
if (!$('#bscsCstrnSeCd').val()) {
$('#bscsCstrnSeCd').focus();
alert('기초공사구분을 선택해주세요.');
return false;
// 2. 기초공사구분 검증 (저장 시에만)
if (validationType === 'save' && !$('#bscsCstrnSeCd').val()) {
return {
isValid: false,
message: '기초공사율을 선택해주세요.',
focusElement: '#bscsCstrnSeCd'
};
}
// 산정률2 유효성 검증
if (!$('#cmpttnRt2Cd').val()) {
alert('산정률2를 선택해주세요.');
$('#cmpttnRt2Cd').focus();
return false;
// 3. 건물기준시가액 검증 (계산 시에만)
if (validationType === 'calculation') {
var bldgNewPrcCrtrAmt = $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0';
if (!bldgNewPrcCrtrAmt || parseFloat(bldgNewPrcCrtrAmt) <= 0) {
return {
isValid: false,
message: '건물기준시가액을 입력해주세요.',
focusElement: '#bldgNewPrcCrtrAmt'
};
}
}
var vltnArea = parseFloat($('#vltnArea').inputmask('unmaskedvalue')) || 0;
if (vltnArea <= 0) {
alert('위반면적을 입력해주세요.');
$('#vltnArea').focus();
return false;
// 4. 구조지수 검증 (계산 시에만)
if (validationType === 'calculation') {
var strctIdx = $('#strctIdx').inputmask('unmaskedvalue') || '0';
if (!strctIdx || parseFloat(strctIdx) <= 0) {
return {
isValid: false,
message: '구조지수를 입력해주세요.',
focusElement: '#strctIdx'
};
}
}
// 5. 용도지수 검증 (계산 시에만)
if (validationType === 'calculation') {
var usgIdx = $('#usgIdx').inputmask('unmaskedvalue') || '0';
if (!usgIdx || parseFloat(usgIdx) <= 0) {
return {
isValid: false,
message: '용도지수를 입력해주세요.',
focusElement: '#usgIdx'
};
}
}
// 6. 위치지수 검증 (계산 시에만)
if (validationType === 'calculation') {
var pstnIdx = $('#pstnIdx').inputmask('unmaskedvalue') || '0';
if (!pstnIdx || parseFloat(pstnIdx) <= 0) {
return {
isValid: false,
message: '위치지수를 입력해주세요.',
focusElement: '#pstnIdx'
};
}
}
// 7. 경과년수별잔가율 검증 (계산 시에만)
if (validationType === 'calculation') {
var elpsYrRdvlrt = $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0';
if (!elpsYrRdvlrt || parseFloat(elpsYrRdvlrt) <= 0) {
return {
isValid: false,
message: '경과년수별잔가율을 입력해주세요.',
focusElement: '#elpsYrRdvlrt'
};
}
}
// 8. 기초공사율 검증 (계산 시에만)
if (validationType === 'calculation') {
var bscsCstrnRt = $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0';
if (!bscsCstrnRt || parseFloat(bscsCstrnRt) <= 0) {
return {
isValid: false,
message: '기초공사율을 선택해주세요.',
focusElement: '#bscsCstrnSeCd'
};
}
}
// 9. 위반면적 검증 (공통)
var vltnArea = $('#vltnArea').inputmask('unmaskedvalue') || '0';
if (!vltnArea || parseFloat(vltnArea) <= 0) {
return {
isValid: false,
message: '위반면적을 입력해주세요.',
focusElement: '#vltnArea'
};
}
// 10. 산정률 검증 (공통 - 계산 시 또는 저장 시 체크)
var cmpttnRtRate = $('#cmpttnRtRate').val();
if (!cmpttnRtRate || parseFloat(cmpttnRtRate) <= 0) {
return {
isValid: false,
message: '산정률을 선택해주세요.',
focusElement: '#cmpttnRtCd'
};
}
// 11. 산정률2 검증 (공통)
var cmpttnRt2Rate = $('#cmpttnRt2Rate').val();
if (!cmpttnRt2Rate || parseFloat(cmpttnRt2Rate) <= 0) {
return {
isValid: false,
message: '산정률2를 선택해주세요.',
focusElement: '#cmpttnRt2Cd'
};
}
// 12. 계산 완료 여부 검증 (저장 시에만)
if (validationType === 'save') {
var taxableMarketPrice = $("#taxableMarketPrice").val(); // 건축물과세시가
var standardMarketPrice = $("#standardMarketPrice").val(); // 시가표준액
var standardMarketPrice_bottom = $("#standardMarketPrice_bottom").val(); // 시가표준액(하단)
var cmpttnAmt = $("#cmpttnAmt").val(); // 산정액
var levyWholAmt = $("#levyWholAmt").val(); // 부과총액
if (!(taxableMarketPrice && standardMarketPrice && standardMarketPrice_bottom && cmpttnAmt && levyWholAmt)) {
return {
isValid: false,
message: '[계산하기] 버튼을 클릭 하여 계산을 완료하시기 바랍니다.',
focusElement: null
};
}
}
var taxableMarketPrice = $("#taxableMarketPrice").val();
var standardMarketPrice = $("#standardMarketPrice").val();
var standardMarketPrice_bottom = $("#standardMarketPrice_bottom").val();
var cmpttnAmt = $("#cmpttnAmt").val();
var levyWholAmt = $("#levyWholAmt").val();
if( !(taxableMarketPrice && standardMarketPrice && standardMarketPrice_bottom && cmpttnAmt && levyWholAmt) ){
alert('[계산하기] 버튼을 클릭 하여 계산을 완료하시기 바랍니다.');
return { isValid: true }; // 모든 검증 통과
},
/**
* 폼 유효성 검증 (저장용)
* 중요로직: 저장 시 필요한 모든 필드를 검증합니다.
* @returns {boolean} 유효성 검증 결과
*/
validateForm: function() {
var result = this.validateCommon('save'); // 공통 검증 함수 호출
if (!result.isValid) {
alert(result.message); // 오류 메시지 표시
if (result.focusElement) {
$(result.focusElement).focus(); // 문제 필드로 포커스 이동
}
return false;
}
return true;
},
@ -1425,96 +1544,12 @@
},
/**
* 통합 계산 필수값 검증 함수
* 중요로직: 건축물과세시가 계산부터 부과총액까지 전체 계산에 필요한 모든 필수값을 검증합니다.
* 통합 계산 필수값 검증 함수 (계산용)
* 중요로직: 계산 시 필요한 모든 필드를 검증합니다.
* @returns {Object} 검증 결과 객체 { isValid: boolean, message: string, focusElement: string }
*/
validateCalculationInputs: function() {
// 1. 건축물과세시가 계산에 필요한 값들 검증
var bldgNewPrcCrtrAmt = $('#bldgNewPrcCrtrAmt').inputmask('unmaskedvalue') || '0'; // 건물기준시가액
if (!bldgNewPrcCrtrAmt || parseFloat(bldgNewPrcCrtrAmt) <= 0) {
return {
isValid: false,
message: '건물기준시가액을 입력해주세요.',
focusElement: '#bldgNewPrcCrtrAmt'
};
}
var strctIdx = $('#strctIdx').inputmask('unmaskedvalue') || '0'; // 구조지수
if (!strctIdx || parseFloat(strctIdx) <= 0) {
return {
isValid: false,
message: '구조지수를 입력해주세요.',
focusElement: '#strctIdx'
};
}
var usgIdx = $('#usgIdx').inputmask('unmaskedvalue') || '0'; // 용도지수
if (!usgIdx || parseFloat(usgIdx) <= 0) {
return {
isValid: false,
message: '용도지수를 입력해주세요.',
focusElement: '#usgIdx'
};
}
var pstnIdx = $('#pstnIdx').inputmask('unmaskedvalue') || '0'; // 위치지수
if (!pstnIdx || parseFloat(pstnIdx) <= 0) {
return {
isValid: false,
message: '위치지수를 입력해주세요.',
focusElement: '#pstnIdx'
};
}
var elpsYrRdvlrt = $('#elpsYrRdvlrt').inputmask('unmaskedvalue') || '0'; // 경과년수별잔가율
if (!elpsYrRdvlrt || parseFloat(elpsYrRdvlrt) <= 0) {
return {
isValid: false,
message: '경과년수별잔가율을 입력해주세요.',
focusElement: '#elpsYrRdvlrt'
};
}
var bscsCstrnRt = $('#bscsCstrnRt').inputmask('unmaskedvalue') || '0'; // 기초공사율
if (!bscsCstrnRt || parseFloat(bscsCstrnRt) <= 0) {
return {
isValid: false,
message: '기초공사율을 선택해주세요.',
focusElement: '#bscsCstrnSeCd'
};
}
// 2. 위반면적 검증
var vltnArea = $('#vltnArea').inputmask('unmaskedvalue') || '0'; // 위반면적
if (!vltnArea || parseFloat(vltnArea) <= 0) {
return {
isValid: false,
message: '위반면적을 입력해주세요.',
focusElement: '#vltnArea'
};
}
// 3. 산정률 검증
var cmpttnRtRate = $('#cmpttnRtRate').val(); // 산정률 비율값
if (!cmpttnRtRate || parseFloat(cmpttnRtRate) <= 0) {
return {
isValid: false,
message: '산정률을 선택해주세요.',
focusElement: '#cmpttnRtCd'
};
}
// 4. 산정률2 검증
var cmpttnRt2Rate = $('#cmpttnRt2Rate').val(); // 산정률2 비율값
if (!cmpttnRt2Rate || parseFloat(cmpttnRt2Rate) <= 0) {
return {
isValid: false,
message: '산정률2를 선택해주세요.',
focusElement: '#cmpttnRt2Cd'
};
}
return { isValid: true }; // 모든 검증 통과
return this.validateCommon('calculation'); // 공통 검증 함수 호출
},
/**

Loading…
Cancel
Save