기업 회원 가입 디자인 반영, 필수항목 처리 변경

This commit is contained in:
현성필
2025-12-05 16:32:34 +09:00
parent 408561a36d
commit fb8bb1f8aa
4 changed files with 38 additions and 38 deletions
@@ -30,11 +30,9 @@ public class PortalOrgRegistrationDTO extends PortalUserRegistrationDTO {
private String orgName;
//대표자 성명
@NotEmpty(message = "{field.required}")
private String ceoName;
//기관사업장소재지
@NotEmpty(message = "{field.required}")
private String orgAddr;
//기관업태
@@ -44,15 +42,12 @@ public class PortalOrgRegistrationDTO extends PortalUserRegistrationDTO {
private String orgIndustryType;
//서비스명
@NotEmpty(message = "{field.required}")
private String serviceName;
//고객센터연락처
@NotEmpty(message = "{field.required}")
private String scPhoneNumber;
//기관전화번호
@NotEmpty(message = "{field.required}")
@PhoneNumber
private String orgPhoneNumber;
@@ -24,17 +24,26 @@ public class UserRegistrationValidationService {
}
private boolean isValidOrgInfo(PortalOrgRegistrationDTO orgDTO) {
return basicValidationService.isValidBusinessNumber(orgDTO.getCompRegNo()) &&
basicValidationService.isValidCorpRegNo(orgDTO.getCorpRegNo()) &&
basicValidationService.isValidPhoneNumber(orgDTO.getOrgPhoneNumber()) &&
basicValidationService.isValidPhoneNumber(orgDTO.getScPhoneNumber());
// 사업자등록번호, 법인등록번호는 필수
if (!basicValidationService.isValidBusinessNumber(orgDTO.getCompRegNo()) ||
!basicValidationService.isValidCorpRegNo(orgDTO.getCorpRegNo())) {
return false;
}
// 회사 전화번호, 고객센터 전화번호는 선택 (입력된 경우에만 형식 검증)
if (basicValidationService.isNotEmpty(orgDTO.getOrgPhoneNumber()) &&
!basicValidationService.isValidPhoneNumber(orgDTO.getOrgPhoneNumber())) {
return false;
}
if (basicValidationService.isNotEmpty(orgDTO.getScPhoneNumber()) &&
!basicValidationService.isValidPhoneNumber(orgDTO.getScPhoneNumber())) {
return false;
}
return true;
}
private boolean isValidRequiredFields(PortalOrgRegistrationDTO orgDTO) {
return basicValidationService.isNotEmpty(orgDTO.getOrgName()) &&
basicValidationService.isNotEmpty(orgDTO.getCeoName()) &&
basicValidationService.isNotEmpty(orgDTO.getOrgAddr()) &&
basicValidationService.isNotEmpty(orgDTO.getServiceName());
// 법인명만 필수, 나머지(대표자 성명, 소재지, 서비스명)는 선택
return basicValidationService.isNotEmpty(orgDTO.getOrgName());
}
private boolean isValidIpWhitelistIfExists(PortalOrgRegistrationDTO orgDTO) {
@@ -60,12 +60,12 @@
<!-- CEO Name -->
<div class="org-form-group">
<label class="org-form-label" for="ceoName">
대표자 성명 <span class="required-badge">필수</span>
대표자 성명
</label>
<div class="org-form-input-wrapper">
<input type="text" class="org-form-input" id="ceoName" th:field="*{ceoName}"
placeholder="대표자 성명을 입력하세요"
th:classappend="${#fields.hasErrors('ceoName')}? 'is-invalid'" required>
th:classappend="${#fields.hasErrors('ceoName')}? 'is-invalid'">
<div th:if="${#fields.hasErrors('ceoName')}" class="org-validation-message error">
<span th:errors="*{ceoName}"></span>
</div>
@@ -75,12 +75,12 @@
<!-- Business Address -->
<div class="org-form-group">
<label class="org-form-label" for="orgAddr">
사업장 소재지 <span class="required-badge">필수</span>
사업장 소재지
</label>
<div class="org-form-input-wrapper">
<input type="text" class="org-form-input" id="orgAddr" th:field="*{orgAddr}"
placeholder="사업장 소재지를 입력하세요"
th:classappend="${#fields.hasErrors('orgAddr')}? 'is-invalid'" required>
th:classappend="${#fields.hasErrors('orgAddr')}? 'is-invalid'">
<div th:if="${#fields.hasErrors('orgAddr')}" class="org-validation-message error">
<span th:errors="*{orgAddr}"></span>
</div>
@@ -90,33 +90,33 @@
<!-- Business Type -->
<div class="org-form-group">
<label class="org-form-label" for="orgSectors">
업태 <span class="required-badge">필수</span>
업태
</label>
<div class="org-form-input-wrapper">
<input type="text" class="org-form-input" id="orgSectors" th:field="*{orgSectors}"
placeholder="업태를 입력하세요" required>
placeholder="업태를 입력하세요">
</div>
</div>
<!-- Industry Type -->
<div class="org-form-group">
<label class="org-form-label" for="orgIndustryType">
업종 <span class="required-badge">필수</span>
업종
</label>
<div class="org-form-input-wrapper">
<input type="text" class="org-form-input" id="orgIndustryType" th:field="*{orgIndustryType}"
placeholder="업종을 입력하세요" required>
placeholder="업종을 입력하세요">
</div>
</div>
<!-- Company Phone Number -->
<div class="org-form-group">
<label class="org-form-label">
회사 전화번호 <span class="required-badge">필수</span>
회사 전화번호
</label>
<div class="org-form-input-wrapper">
<div class="org-compound-input">
<select class="org-form-select" id="orgAreaCode" required>
<select class="org-form-select" id="orgAreaCode">
<option value="">선택</option>
<option value="국번없음">국번없음</option>
<option value="02">02</option>
@@ -159,12 +159,12 @@
<!-- Service Name -->
<div class="org-form-group">
<label class="org-form-label" for="serviceName">
서비스명 <span class="required-badge">필수</span>
서비스명
</label>
<div class="org-form-input-wrapper">
<input type="text" class="org-form-input" id="serviceName" th:field="*{serviceName}"
placeholder="서비스명을 입력하세요"
th:classappend="${#fields.hasErrors('serviceName')}? 'is-invalid'" required>
th:classappend="${#fields.hasErrors('serviceName')}? 'is-invalid'">
<div th:if="${#fields.hasErrors('serviceName')}" class="org-validation-message error">
<span th:errors="*{serviceName}"></span>
</div>
@@ -174,11 +174,11 @@
<!-- Customer Service Phone Number -->
<div class="org-form-group">
<label class="org-form-label">
고객센터 전화번호 <span class="required-badge">필수</span>
고객센터 전화번호
</label>
<div class="org-form-input-wrapper">
<div class="org-compound-input">
<select class="org-form-select" id="scAreaCode" required>
<select class="org-form-select" id="scAreaCode">
<option value="">선택</option>
<option value="국번없음">국번없음</option>
<option value="02">02</option>
@@ -265,8 +265,9 @@
const part1 = document.getElementById(`${prefix}PhoneNumber1`).value.trim();
const part2 = document.getElementById(`${prefix}PhoneNumber2`).value.trim();
// 회사 전화번호 검증
if (!areaCode || areaCode === '' || !part1 || !part2) {
// 전화번호는 선택 입력이므로, 일부만 입력된 경우에만 검증
const hasAnyInput = areaCode || part1 || part2;
if (hasAnyInput && (!areaCode || areaCode === '' || !part1 || !part2)) {
customPopups.showAlert(`${prefix === 'org' ? '회사' : '고객센터'} 전화번호를 모두 입력해주세요.`);
return false;
}
@@ -5,7 +5,7 @@
<body>
<section layout:fragment="title">
<div class="page-title-banner">
<img th:src="@{/img/user_register_title.png}" alt="법인회원가입" class="title-image">
<img th:src="@{/img/img_title_bg.png}" alt="법인회원가입" class="title-image">
<h1>법인회원가입</h1>
</div>
</section>
@@ -117,15 +117,15 @@
const requiredFieldsByScenario = {
new: {
user: ['loginId', 'userName', 'password', 'password2', 'mobileNumber', 'authNumber'],
org: ['compRegNo', 'corpRegNo', 'orgName', 'ceoName', 'orgAddr', 'orgSectors', 'orgIndustryType', 'orgPhoneNumber', 'scPhoneNumber', 'serviceName', 'compRegFile', 'files']
org: ['compRegNo', 'corpRegNo', 'orgName', 'compRegFile', 'files']
},
retain: {
user: ['loginId', 'passwordConfirmIndividual'],
org: ['compRegNo', 'corpRegNo', 'orgName', 'ceoName', 'orgAddr', 'orgSectors', 'orgIndustryType', 'orgPhoneNumber', 'scPhoneNumber', 'serviceName', 'compRegFile', 'files']
org: ['compRegNo', 'corpRegNo', 'orgName', 'compRegFile', 'files']
},
change: {
user: ['loginId', 'passwordConfirmEmailChange', 'newLoginId'],
org: ['compRegNo', 'corpRegNo', 'orgName', 'ceoName', 'orgAddr', 'orgSectors', 'orgIndustryType', 'orgPhoneNumber', 'scPhoneNumber', 'serviceName', 'compRegFile', 'files']
org: ['compRegNo', 'corpRegNo', 'orgName', 'compRegFile', 'files']
}
};
@@ -344,11 +344,6 @@
compRegNo: $('#compRegNo').val().trim() !== '',
corpRegNo: $('#corpRegNo').val().trim() !== '',
orgName: $('#orgName').val().trim() !== '',
ceoName: $('#ceoName').val().trim() !== '',
orgAddr: $('#orgAddr').val().trim() !== '',
orgPhoneNumber: $('#orgPhoneNumber').val().trim() !== '',
scPhoneNumber: $('#scPhoneNumber').val().trim() !== '',
serviceName: $('#serviceName').val().trim() !== '',
compRegFile: $('#compRegFile').val().trim() !== ''
};