--- client/resources/css/style.css
+++ client/resources/css/style.css
... | ... | @@ -303,6 +303,9 @@ |
303 | 303 |
border: 1px solid var(--gray); |
304 | 304 |
color: var(--gray-dark); |
305 | 305 |
min-height: 267px; |
306 |
+ display: flex; |
|
307 |
+ flex-direction: column; |
|
308 |
+ justify-content: center; |
|
306 | 309 |
} |
307 | 310 |
|
308 | 311 |
.user-item img { |
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
... | ... | @@ -127,11 +127,11 @@ |
127 | 127 |
mounted() { |
128 | 128 |
window.addEventListener('scroll', this.handleScroll); |
129 | 129 |
addLicense("AM5C11202011971121"); |
130 |
- // document.addEventListener('keydown', this.handleKeydown); |
|
130 |
+ document.addEventListener('keydown', this.handleKeydown); |
|
131 | 131 |
}, |
132 | 132 |
beforeDestroy() { |
133 | 133 |
window.removeEventListener('scroll', this.handleScroll); |
134 |
- // document.removeEventListener('keydown', this.handleKeydown); |
|
134 |
+ document.removeEventListener('keydown', this.handleKeydown); |
|
135 | 135 |
}, |
136 | 136 |
}; |
137 | 137 |
|
--- client/views/pages/user/join/Join.vue
+++ client/views/pages/user/join/Join.vue
... | ... | @@ -15,15 +15,19 @@ |
15 | 15 |
<div class="step-zone"> |
16 | 16 |
<p><span>{{ PageNumber }}단계 </span>/ 4단계</p> |
17 | 17 |
</div> |
18 |
- <button class="small-btn darkg-border-btn" title="회원가입 매뉴얼 다운로드" style="border-radius: 3rem;" |
|
18 |
+ <button class="small-btn darkg-border-btn" title="회원가입 매뉴얼 다운로드" |
|
19 |
+ style="border-radius: 3rem;" |
|
19 | 20 |
@click="$downloadFileByIdNoAuthCheck('FILE_0000000001', 'CMMN_FILE_0000000001', 'AI 디지털교과서 통합지원센터 회원가입 사용자매뉴얼.pdf', 'BBS_0000000032')">회원가입 |
20 | 21 |
매뉴얼</button> |
21 | 22 |
</div> |
22 | 23 |
</div> |
23 | 24 |
</div> |
24 | 25 |
<Terms @TermsSuccess="pageStatusWithAgree" v-show="PageNumber === 1" /> |
25 |
- <div class="border pd60" v-show="PageNumber === 2"> |
|
26 |
- <div class="authentication"> |
|
26 |
+ <div v-show="PageNumber === 2"> |
|
27 |
+ <div class="page-title mb40"> |
|
28 |
+ <h2 class="page-sub-title" aria-live="polite">본인인증</h2> |
|
29 |
+ </div> |
|
30 |
+ <div class="authentication border pd60"> |
|
27 | 31 |
<div class="authentication-info mb30 text-ct"> |
28 | 32 |
<p class="detail-bold mb5">본인인증 안내</p> |
29 | 33 |
<p class="detail-text">본인명의로 등록된 휴대폰번호만 인증이 가능합니다.<br /> |
... | ... | @@ -31,7 +35,7 @@ |
31 | 35 |
</div> |
32 | 36 |
|
33 | 37 |
<div class="flex justify-center"> |
34 |
- <NiceM :service="'devs'" @revData="requestEvent" /> |
|
38 |
+ <NiceM :service="'prov'" @revData="requestEvent" /> |
|
35 | 39 |
<!-- prov = 실제 호출 devf = 실패시 테스트, devs = 성공테스트 --> |
36 | 40 |
</div> |
37 | 41 |
</div> |
... | ... | @@ -39,7 +43,7 @@ |
39 | 43 |
|
40 | 44 |
<div class="join-zone" v-show="PageNumber === 3"> |
41 | 45 |
<div class="page-title mb40"> |
42 |
- <h2 class="page-sub-title">회원정보 입력</h2> |
|
46 |
+ <h2 class="page-sub-title" aria-live="polite">회원정보 입력</h2> |
|
43 | 47 |
</div> |
44 | 48 |
<div class="user-type mb60"> |
45 | 49 |
<p class="type-content text-ct mb24"><strong class="middle-title">AI 디지털교과서 |
... | ... | @@ -49,7 +53,7 @@ |
49 | 53 |
<ul class="user-tab flex justify-center" role="tablist" aria-label="user type tabs"> |
50 | 54 |
<div v-for="(user, idx) in userType" :key="idx" |
51 | 55 |
:class="['gd-6', idx === 0 ? 'pl0' : 'pr0', userTypedisable && userActive !== idx ? 'user-disabled' : '']"> |
52 |
- <li role="tab" :aria-selected="userActive === idx" :aria-controls="user.panel" |
|
56 |
+ <li role="tab" :aria-selected="userActive === idx" :aria-controls="user.panel" |
|
53 | 57 |
:id="user.id" |
54 | 58 |
:class="{ 'user-item pd30 cursor': true, 'user-selected': userActive === idx }"> |
55 | 59 |
<router-link to="#" |
... | ... | @@ -60,12 +64,13 @@ |
60 | 64 |
<img v-else-if="userActive === idx && user.label === '기업회원'" |
61 | 65 |
src="../../../../resources/img/company_a.png" alt="기업회원 활성화 아이콘 " |
62 | 66 |
class="mb12"> |
63 |
- <img v-else-if="user.label === '일반회원'" src="../../../../resources/img/user_b.png" |
|
64 |
- alt="일반회원 비활성화 아이콘" class="mb12"> |
|
67 |
+ <img v-else-if="user.label === '일반회원'" |
|
68 |
+ src="../../../../resources/img/user_b.png" alt="일반회원 비활성화 아이콘" class="mb12"> |
|
65 | 69 |
<img v-else src="../../../../resources/img/company_b.png" alt="기업회원 비활성화 아이콘" |
66 | 70 |
class="mb12"> |
67 | 71 |
<h3 class="text-ct mb15">{{ user.label }}</h3> |
68 |
- <p v-show="user.label === '기업회원'" class="small-text text-ct">가입하고자 하는 기업의 등록 여부를 확인 후 |
|
72 |
+ <p v-show="user.label === '기업회원'" class="small-text text-ct">가입하고자 하는 기업의 등록 여부를 |
|
73 |
+ 확인 후 |
|
69 | 74 |
다음 단계를 |
70 | 75 |
진행합니다.<br /> |
71 | 76 |
기업이 조회되지 않는 경우 기업의 최초 등록이 필요합니다.<br /> |
... | ... | @@ -81,7 +86,7 @@ |
81 | 86 |
</div> |
82 | 87 |
<div class="user-content"> |
83 | 88 |
<!-- 기업회원 --> |
84 |
- <div class="border pd60" role="tabpanel" |
|
89 |
+ <div class="border pd60" role="tabpanel" |
|
85 | 90 |
v-show="(userActive === 0 && innerStep < 1 && userTypedisable) || (userActive === 1 && innerStep < 0)"> |
86 | 91 |
<div class="compnay-search" v-show="userActive === 0 && innerStep === 0"> |
87 | 92 |
<div class="middle-title mb16"> |
... | ... | @@ -104,7 +109,7 @@ |
104 | 109 |
v-else autocomplete='off'> |
105 | 110 |
</div> |
106 | 111 |
<div class="gd-2 pl0 pr0"> |
107 |
- <button class="large-btn blue-border-btn ml0" title="검색" |
|
112 |
+ <button class="large-btn blue-border-btn ml0" title="검색" |
|
108 | 113 |
@click="companySelectListSearch()">검색</button> |
109 | 114 |
</div> |
110 | 115 |
</div> |
... | ... | @@ -139,13 +144,13 @@ |
139 | 144 |
<td> |
140 | 145 |
<div class="btn-zone flex align-center justify-center"> |
141 | 146 |
<div class="gd-6 pl0"> |
142 |
- <button title="기업회원신청" |
|
147 |
+ <button title="기업회원신청" |
|
143 | 148 |
:class="[companyOne.aprvDt === null || companyOne.hasRprsYn === 'N' ? 'gray-btn' : 'blue-border-btn', 'large-btn ml0']" |
144 | 149 |
@click="innerStepGo(companyOne, 'ROLE_CO_USER', 1)" |
145 | 150 |
:disabled="companyOne.aprvDt === null || companyOne.hasRprsYn === 'N'">기업회원신청</button> |
146 | 151 |
</div> |
147 | 152 |
<div class="gd-6 pl0 pr0"> |
148 |
- <button title="기업관리자신청" |
|
153 |
+ <button title="기업관리자신청" |
|
149 | 154 |
:class="[companyOne.hasRprsYn === 'Y' ? 'gray-btn' : 'green-border-btn', 'large-btn ml0']" |
150 | 155 |
:disabled="companyOne.hasRprsYn === 'Y'" |
151 | 156 |
@click="innerStepForManager(companyOne, 'ROLE_CO_MANAGER', 1, false)">기업관리자신청</button> |
... | ... | @@ -163,7 +168,8 @@ |
163 | 168 |
:click="companySelectList" /> |
164 | 169 |
<div class="btn-zone flex justify-end"> |
165 | 170 |
<div class="gd-2 pl0 pr0"> |
166 |
- <button class="large-btn blue-btn ml0" title="기업 신규 신청" @click="alertModalOpen">기업 신규 |
|
171 |
+ <button class="large-btn blue-btn ml0" title="기업 신규 신청" |
|
172 |
+ @click="alertModalOpen">기업 신규 |
|
167 | 173 |
신청</button> |
168 | 174 |
</div> |
169 | 175 |
</div> |
... | ... | @@ -171,7 +177,7 @@ |
171 | 177 |
</div> |
172 | 178 |
</div> |
173 | 179 |
<!-- 일반회원 두루두루 사용 --> |
174 |
- <div class="border pd30 " role="tabpanel" |
|
180 |
+ <div class="border pd30 " role="tabpanel" |
|
175 | 181 |
v-show="(userActive === 0 && innerStep === 1) || (userActive === 1 && innerStep === 0 && userTypedisable)" |
176 | 182 |
ref="form"> |
177 | 183 |
<div class="flex justify-between align-center border-b mb30"> |
... | ... | @@ -192,10 +198,11 @@ |
192 | 198 |
<div class="flex justify-start align-center"> |
193 | 199 |
<div class="gd-6 pl0"> |
194 | 200 |
<input type="text" class="full-input" placeholder="아이디를 입력하세요." |
195 |
- v-model="user_info.lgnId" id="panel2" autocomplete='off' aria-required="true" /> |
|
201 |
+ v-model="user_info.lgnId" id="panel2" autocomplete='off' |
|
202 |
+ aria-required="true" /> |
|
196 | 203 |
</div> |
197 | 204 |
<div class="gd-2 pl0 pr0"> |
198 |
- <button class="large-btn blue-border-btn" title="중복확인" |
|
205 |
+ <button class="large-btn blue-border-btn" title="중복확인" |
|
199 | 206 |
@click="userIdDuplicationCheck()">중복확인</button> |
200 | 207 |
</div> |
201 | 208 |
</div> |
... | ... | @@ -210,7 +217,8 @@ |
210 | 217 |
<p class="small-text">영문, 숫자, 특수문자 조합된 6~20자리</p> |
211 | 218 |
</div> |
212 | 219 |
<input type="password" class="full-input" placeholder="비밀번호를 입력하세요." |
213 |
- v-model="user_info.mbrEncptPswd" id="user_pw" autocomplete='off' aria-required="true" /> |
|
220 |
+ v-model="user_info.mbrEncptPswd" id="user_pw" autocomplete='off' |
|
221 |
+ aria-required="true" /> |
|
214 | 222 |
</div> |
215 | 223 |
</td> |
216 | 224 |
</tr> |
... | ... | @@ -241,7 +249,8 @@ |
241 | 249 |
<div class="gd-5 pl0 pt10 pb10"> |
242 | 250 |
<label for="user_nm" class="form-title mb16">이름</label> |
243 | 251 |
<input type="text" class="full-input" placeholder="이름을 입력하세요." |
244 |
- v-model="user_info.mbrEncptFlnm" id="user_nm" readonly disabled /> |
|
252 |
+ v-model="user_info.mbrEncptFlnm" id="user_nm" readonly |
|
253 |
+ disabled /> |
|
245 | 254 |
</div> |
246 | 255 |
<div class="gd-5 pl0 pr0 pt10 pb10" v-show="userActive !== 1"> |
247 | 256 |
<label for="mbr_jbgd" class="fw-bold mb16">직위(직급)</label> |
... | ... | @@ -257,20 +266,22 @@ |
257 | 266 |
<label for="user_tel1" class="form-title mb16">전화번호</label> |
258 | 267 |
<div class="flex justify-start no-gutters"> |
259 | 268 |
<div class="gd-2 pl0 pr0"> |
260 |
- <input type="text" v-model="user_tel1" id="user_tel1" readonly disabled |
|
261 |
- autocomplete='off' class="full-input" /> |
|
269 |
+ <input type="text" v-model="user_tel1" id="user_tel1" readonly |
|
270 |
+ disabled autocomplete='off' class="full-input" /> |
|
262 | 271 |
</div> |
263 | 272 |
<div class="pd10">-</div> |
264 | 273 |
<div class="gd-2 pl0 pr0"> |
265 |
- <label for="user_tel2" class="visually-hidden">전화번호 두번째자리</label> |
|
266 |
- <input type="text" v-model="user_tel2" id="user_tel2" readonly disabled |
|
267 |
- autocomplete='off' class="full-input" /> |
|
274 |
+ <label for="user_tel2" class="visually-hidden">전화번호 |
|
275 |
+ 두번째자리</label> |
|
276 |
+ <input type="text" v-model="user_tel2" id="user_tel2" readonly |
|
277 |
+ disabled autocomplete='off' class="full-input" /> |
|
268 | 278 |
</div> |
269 | 279 |
<div class="pd10">-</div> |
270 | 280 |
<div class="gd-2 pl0 pr0"> |
271 |
- <label for="user_tel3" class="visually-hidden">전화번호 세번째자리</label> |
|
272 |
- <input type="text" v-model="user_tel3" id="user_tel3" readonly disabled |
|
273 |
- autocomplete='off' class="full-input" /> |
|
281 |
+ <label for="user_tel3" class="visually-hidden">전화번호 |
|
282 |
+ 세번째자리</label> |
|
283 |
+ <input type="text" v-model="user_tel3" id="user_tel3" readonly |
|
284 |
+ disabled autocomplete='off' class="full-input" /> |
|
274 | 285 |
</div> |
275 | 286 |
</div> |
276 | 287 |
</div> |
... | ... | @@ -282,14 +293,15 @@ |
282 | 293 |
<label for="email_id" class="form-title mb16">이메일</label> |
283 | 294 |
<div class="flex justify-start"> |
284 | 295 |
<div class="gd-2 pl0 pr0"> |
285 |
- <input type="text" class="full-input" id="email_id" v-model="email_id" |
|
286 |
- autocomplete='off' aria-required="true" /> |
|
296 |
+ <input type="text" class="full-input" id="email_id" |
|
297 |
+ v-model="email_id" autocomplete='off' |
|
298 |
+ aria-required="true" /> |
|
287 | 299 |
</div> |
288 | 300 |
<div class="pd10">@</div> |
289 | 301 |
<div class="gd-2 pl0 pr0"> |
290 | 302 |
<label for="email_dns" class="visually-hidden">이메일 도메인자리</label> |
291 |
- <input type="text" class="full-input" v-model="email_dns" id="email_dns" |
|
292 |
- autocomplete='off' aria-required="true" /> |
|
303 |
+ <input type="text" class="full-input" v-model="email_dns" |
|
304 |
+ id="email_dns" autocomplete='off' aria-required="true" /> |
|
293 | 305 |
</div> |
294 | 306 |
<div class="gd-2"> |
295 | 307 |
<label for="email" class="visually-hidden">이메일 주소</label> |
... | ... | @@ -303,7 +315,7 @@ |
303 | 315 |
</select> |
304 | 316 |
</div> |
305 | 317 |
<div class="gd-2 pl0 pr0"> |
306 |
- <button class="large-btn blue-border-btn" title="중복확인" |
|
318 |
+ <button class="large-btn blue-border-btn" title="중복확인" |
|
307 | 319 |
@click="emailDuplicateCheck()">중복확인</button> |
308 | 320 |
</div> |
309 | 321 |
</div> |
... | ... | @@ -379,7 +391,8 @@ |
379 | 391 |
</div> |
380 | 392 |
<div class="gd-6 pl0"> |
381 | 393 |
<input type="text" class="full-input" placeholder="기업명을 입력하세요." |
382 |
- v-model="ent_info.entNm" id="ent_nm" autocomplete='off' aria-required="true" /> |
|
394 |
+ v-model="ent_info.entNm" id="ent_nm" autocomplete='off' |
|
395 |
+ aria-required="true" /> |
|
383 | 396 |
</div> |
384 | 397 |
</div> |
385 | 398 |
</td> |
... | ... | @@ -397,7 +410,7 @@ |
397 | 410 |
id="brno" autocomplete='off' aria-required="true" /> |
398 | 411 |
</div> |
399 | 412 |
<div class="gd-2 pl0 pr0"> |
400 |
- <button class="large-btn blue-border-btn" title="사업자등록번호 확인" |
|
413 |
+ <button class="large-btn blue-border-btn" title="사업자등록번호 확인" |
|
401 | 414 |
@click="checkBusinessId()">사업자등록번호 확인</button> |
402 | 415 |
</div> |
403 | 416 |
</div> |
... | ... | @@ -427,22 +440,24 @@ |
427 | 440 |
<div class="flex justify-start align-center mb5"> |
428 | 441 |
<div class="gd-2 pl0"> |
429 | 442 |
<input type="text" class="full-input" placeholder="우편번호" |
430 |
- readonly disabled v-model="ent_info.zip" autocomplete='off' /> |
|
443 |
+ readonly disabled v-model="ent_info.zip" |
|
444 |
+ autocomplete='off' /> |
|
431 | 445 |
</div> |
432 | 446 |
<div class="gd-2 pl0 pr0"> |
433 |
- <button class="large-btn blue-border-btn" title="주소 찾기" |
|
447 |
+ <button class="large-btn blue-border-btn" title="주소 찾기" |
|
434 | 448 |
@click="openPostcode()"> |
435 | 449 |
찾기</button> |
436 | 450 |
</div> |
437 | 451 |
</div> |
438 | 452 |
<div class="gd-4 mb5 pl0 pr0"> |
439 |
- <input type="text" class="full-input" placeholder="주소" readonly disabled |
|
440 |
- v-model="ent_info.entAddr" id="ent_addr" /> |
|
453 |
+ <input type="text" class="full-input" placeholder="주소" readonly |
|
454 |
+ disabled v-model="ent_info.entAddr" id="ent_addr" /> |
|
441 | 455 |
</div> |
442 | 456 |
<div class="gd-4 pl0 pr0"> |
443 | 457 |
<label for="ent_daddr" class="visually-hidden">상세주소</label> |
444 | 458 |
<input type="text" class="full-input" placeholder="상세주소" |
445 |
- v-model="ent_info.entDaddr" id="ent_daddr" autocomplete='off' aria-required="true" /> |
|
459 |
+ v-model="ent_info.entDaddr" id="ent_daddr" autocomplete='off' |
|
460 |
+ aria-required="true" /> |
|
446 | 461 |
</div> |
447 | 462 |
</div> |
448 | 463 |
</td> |
... | ... | @@ -454,7 +469,8 @@ |
454 | 469 |
<label for="hmpg_url" class="form-title ">홈페이지</label> |
455 | 470 |
</div> |
456 | 471 |
<input type="text" class="full-input" placeholder="홈페이지를 입력해주세요." |
457 |
- v-model="ent_info.hmpUrl" id="hmpg_url" autocomplete='off' aria-required="true" /> |
|
472 |
+ v-model="ent_info.hmpUrl" id="hmpg_url" autocomplete='off' |
|
473 |
+ aria-required="true" /> |
|
458 | 474 |
</div> |
459 | 475 |
</td> |
460 | 476 |
</tr> |
... | ... | @@ -465,7 +481,7 @@ |
465 | 481 |
<div class="flex justify-start no-gutters"> |
466 | 482 |
<div class="gd-2 pl0 pr0"> |
467 | 483 |
<select name="" id="ent_tel1" v-model="ent_tel1" |
468 |
- class="full-select ml0" > |
|
484 |
+ class="full-select ml0"> |
|
469 | 485 |
<option value="null">선택하세요.</option> |
470 | 486 |
<option value="02">02</option> |
471 | 487 |
<option value="031">031</option> |
... | ... | @@ -528,14 +544,15 @@ |
528 | 544 |
class="gd-2 pl0" role="group"> |
529 | 545 |
<input type="radio" :name="`first_info_${index}`" |
530 | 546 |
:id="item.cdId" :value="item.cdId" |
531 |
- v-model="ent_info.entSeNm" /> |
|
547 |
+ v-model="ent_info.entSeNm" /> |
|
532 | 548 |
<label :for="item.cdId" class="ml10">{{ item.cdNm }}</label> |
533 | 549 |
</div> |
534 | 550 |
</div> |
535 | 551 |
<div class="flex align-center mb15"> |
536 | 552 |
<label for="com_info" class="visually-hidden">기업출원추가정보</label> |
537 |
- <select name="" id="com_info" :disabled="ent_info.entSeNm !== 'applPrnmnt'" |
|
538 |
- class="gd-2" v-model="ent_info.mainApplEntYn"> |
|
553 |
+ <select name="" id="com_info" |
|
554 |
+ :disabled="ent_info.entSeNm !== 'applPrnmnt'" class="gd-2" |
|
555 |
+ v-model="ent_info.mainApplEntYn"> |
|
539 | 556 |
<option value="">선택</option> |
540 | 557 |
<option value="Y">주 출원사</option> |
541 | 558 |
<option value="N">보조 출원사</option> |
... | ... | @@ -584,7 +601,8 @@ |
584 | 601 |
<div class=" mb16"> |
585 | 602 |
<span class="form-title mb10">기업등록신청서</span> |
586 | 603 |
<div class="gd-2 pl0 pr0"> |
587 |
- <button class="large-btn blue-border-btn" title="기업등록신청서 다운로드" |
|
604 |
+ <button class="large-btn blue-border-btn" |
|
605 |
+ title="기업등록신청서 다운로드" |
|
588 | 606 |
@click="$downloadFileByIdNoAuthCheck('FILE_0000000002', 'CMMN_FILE_0000000002', 'AI 디지털교과서 통합지원센터 신규 기업등록신청서(양식).hwp', 'BBS_0000000032')"> |
589 | 607 |
기업등록신청서</button> |
590 | 608 |
</div> |
... | ... | @@ -610,7 +628,8 @@ |
610 | 628 |
<!-- <button class="large-btn darkg-border-btn">이전</button> --> |
611 | 629 |
</div> |
612 | 630 |
<div class="gd-1 pl0 pr0"> |
613 |
- <button class="large-btn blue-btn ml0" title="회원가입" @click="joinRequest()">회원가입</button> |
|
631 |
+ <button class="large-btn blue-btn ml0" title="회원가입" |
|
632 |
+ @click="joinRequest()">회원가입</button> |
|
614 | 633 |
</div> |
615 | 634 |
</div> |
616 | 635 |
</div> |
... | ... | @@ -621,14 +640,14 @@ |
621 | 640 |
</div> |
622 | 641 |
</div> |
623 | 642 |
<!-- 관리자로 회원가입이 된다는 팝업문구 --> |
624 |
- <div v-show="alert" class="modal-wrapper" role="dialog" |
|
625 |
- aria-modal="true"> |
|
643 |
+ <div v-if="alert" class="modal-wrapper" role="dialog" aria-modal="true"> |
|
626 | 644 |
<div :class="{ 'modal-container ': true, 'small-modal': userTypeCheckAlert !== null }"> |
627 | 645 |
<div class="modal-title border-none"> |
628 | 646 |
<div class="flex justify-between align-center"> |
629 | 647 |
<h2 v-if="userTypeCheckAlert !== null"></h2> |
630 | 648 |
<h2 class="page-sub-title" v-else>신규 기업 등록 시 유의 사항</h2> |
631 |
- <button class="icon-btn black" @click="modalClose" aria-label="closeButton" id="closeButton" title="닫기"> |
|
649 |
+ <button class="icon-btn black" @click="modalClose" aria-label="closeButton" id="closeButton" |
|
650 |
+ ref="firstFocusableElement" title="닫기"> |
|
632 | 651 |
<svg-icon type="mdi" :path="closePath" aria-labelledby="closeButton"></svg-icon> |
633 | 652 |
</button> |
634 | 653 |
</div> |
... | ... | @@ -686,20 +705,21 @@ |
686 | 705 |
<p class="mr30" style="font-weight: 700;">신규 기업 등록 시 유의 사항 문구를 확인했습니까?</p> |
687 | 706 |
<div class="flex justify-start align-center"> |
688 | 707 |
<label for="noticeCheck" class="block mr5">예</label> |
689 |
- <input type="checkbox" name="noticeCheck" id="noticeCheck" v-model="noticeCheck" aria-required="true" /> |
|
708 |
+ <input type="checkbox" name="noticeCheck" id="noticeCheck" v-model="noticeCheck" |
|
709 |
+ aria-required="true" /> |
|
690 | 710 |
</div> |
691 | 711 |
</div> |
692 | 712 |
</div> |
693 | 713 |
</div> |
694 | 714 |
<div class="modal-end flex justify-between align-center pd0"> |
695 | 715 |
<div class="gd-6 pl0"> |
696 |
- <button @click="modalClose" class="large-btn gray-btn ml0" title="취소">취소</button> |
|
716 |
+ <button @click="modalClose" class="large-btn gray-btn ml0" title="취소">취소</button> |
|
697 | 717 |
</div> |
698 | 718 |
<div class="gd-6 pl0 pr0" v-if="userTypeCheckAlert === '일반회원' || userTypeCheckAlert === '기업회원'"> |
699 |
- <button class="large-btn blue-btn ml0" title="확인" @click="typedisable">확인</button> |
|
719 |
+ <button class="large-btn blue-btn ml0" title="확인" @click="typedisable">확인</button> |
|
700 | 720 |
</div> |
701 | 721 |
<div class="gd-6 pl0 pr0" v-else> |
702 |
- <button class="large-btn blue-btn ml0" title="확인" |
|
722 |
+ <button class="large-btn blue-btn ml0" title="확인" |
|
703 | 723 |
@click="innerStepForManager(null, 'ROLE_CO_MANAGER', 1, true)">확인</button> |
704 | 724 |
</div> |
705 | 725 |
</div> |
... | ... | @@ -731,7 +751,7 @@ |
731 | 751 |
return { |
732 | 752 |
closePath: mdiWindowClose, |
733 | 753 |
step: ["이용약관 동의", "본인인증", "회원정보 입력", "가입완료 및 승인대기"], |
734 |
- userType: [{tabId:'usertype1', panel:'panel1',label:"기업회원"}, {tabId:'usertype2', panel:'panel2',label:"일반회원"}], |
|
754 |
+ userType: [{ tabId: 'usertype1', panel: 'panel1', label: "기업회원" }, { tabId: 'usertype2', panel: 'panel2', label: "일반회원" }], |
|
735 | 755 |
userActive: null, |
736 | 756 |
businessNumberCheckResult: false, |
737 | 757 |
businessNumber: null, |
... | ... | @@ -745,7 +765,7 @@ |
745 | 765 |
userTypeCheckAlert: null, |
746 | 766 |
userTypedisable: false, |
747 | 767 |
noticeCheck: false, |
748 |
- |
|
768 |
+ lastFocusedElement: null,// 이전 포커스 요소 저장 |
|
749 | 769 |
/** |
750 | 770 |
* 페이지네이션 변경 |
751 | 771 |
* |
... | ... | @@ -914,12 +934,19 @@ |
914 | 934 |
}, |
915 | 935 |
|
916 | 936 |
userTypeActive: function (index, uerType) { |
937 |
+ this.lastFocusedElement = document.activeElement; // 이전 포커스 요소 저장 |
|
917 | 938 |
this.userTypeCheckAlert = uerType; |
918 | 939 |
this.alert = true; |
919 | 940 |
this.userActive = index |
920 | 941 |
if (index === 1) { |
921 | 942 |
this.user_info.authrtId = 'ROLE_USER' |
922 | 943 |
} |
944 |
+ this.$nextTick(() => { |
|
945 |
+ // 모달이 열린 후 첫 번째 포커스 가능한 요소로 이동 |
|
946 |
+ if (this.$refs.firstFocusableElement) { |
|
947 |
+ this.$refs.firstFocusableElement.focus(); |
|
948 |
+ } |
|
949 |
+ }); |
|
923 | 950 |
}, |
924 | 951 |
typedisable: function () { |
925 | 952 |
this.userTypedisable = true; |
... | ... | @@ -971,18 +998,18 @@ |
971 | 998 |
// niceObj.sDupInfo 중복확인값(개인 고유 번호64Byte) |
972 | 999 |
|
973 | 1000 |
// 반환값이 있는 경우 만 14세 검사 |
974 |
- // if (!vm.checkAgeUnderFourteen(niceObj.sBirthDate)) { |
|
975 |
- // alert("만 14세 이하는 가입할 수 없습니다. 메인페이지로 이동합니다."); |
|
976 |
- // vm.$router.push({ path: '/' }); |
|
977 |
- // return; |
|
978 |
- // } |
|
1001 |
+ if (!vm.checkAgeUnderFourteen(niceObj.sBirthDate)) { |
|
1002 |
+ alert("만 14세 이하는 가입할 수 없습니다. 메인페이지로 이동합니다."); |
|
1003 |
+ vm.$router.push({ path: '/' }); |
|
1004 |
+ return; |
|
1005 |
+ } |
|
979 | 1006 |
|
980 |
- // const res = await vm.isNiceDuplicated(niceObj.sDupInfo) |
|
981 |
- // if (!res.data.success) { |
|
982 |
- // alert("이미 가입이 완료된 회원입니다. 로그인 페이지로 이동합니다") |
|
983 |
- // vm.$router.push({ path: '/login.page' }) |
|
984 |
- // return |
|
985 |
- // } |
|
1007 |
+ const res = await vm.isNiceDuplicated(niceObj.sDupInfo) |
|
1008 |
+ if (!res.data.success) { |
|
1009 |
+ alert("이미 가입이 완료된 회원입니다. 로그인 페이지로 이동합니다") |
|
1010 |
+ vm.$router.push({ path: '/login.page' }) |
|
1011 |
+ return |
|
1012 |
+ } |
|
986 | 1013 |
|
987 | 1014 |
vm.user_info.mbrEncptFlnm = niceObj.sName; |
988 | 1015 |
if (niceObj.sMobileNo && niceObj.sMobileNo.length === 11) { |
--- client/views/pages/user/join/Terms.vue
+++ client/views/pages/user/join/Terms.vue
... | ... | @@ -1,15 +1,15 @@ |
1 | 1 |
<template> |
2 | 2 |
<div class="terms-wrap"> |
3 | 3 |
<div class="page-title mb40"> |
4 |
- <h2 class="page-sub-title">약관동의</h2> |
|
4 |
+ <h2 class="page-sub-title" aria-live="polite">약관동의</h2> |
|
5 | 5 |
</div> |
6 | 6 |
<div class="terms-use mb40"> |
7 | 7 |
<div class="flex justify-between align-center"> |
8 | 8 |
<h3 class="content-title2 mb20">이용약관 안내</h3> |
9 |
- <router-link :to="{path:'/aidt/terms/view.page', query: { type: 'use' }}" target="_blank" class="link-text">이용약관 |
|
9 |
+ <router-link :to="{path:'/aidt/terms/view.page', query: { type: 'use' }}" target="_blank" class="link-text" >이용약관 |
|
10 | 10 |
전문보기</router-link> |
11 | 11 |
</div> |
12 |
- <div class="terms-content overflow-y mb24 radius"> |
|
12 |
+ <div class="terms-content overflow-y mb24 radius" tabindex="0"> |
|
13 | 13 |
<Terms1 /> |
14 | 14 |
</div> |
15 | 15 |
<div> |
... | ... | @@ -33,7 +33,7 @@ |
33 | 33 |
처리방침 전문보기</router-link> |
34 | 34 |
</div> |
35 | 35 |
|
36 |
- <div class="terms-content overflow-y mb24 radius"> |
|
36 |
+ <div class="terms-content overflow-y mb24 radius" tabindex="0"> |
|
37 | 37 |
<ul> |
38 | 38 |
<li class=" mb10"> |
39 | 39 |
<p class="detail-text">1. 개인정보의 수집·이용 목적 : AI 디지털교과서 통합지원센터 홈페이지 서비스 제공(회원 관리, 민원 처리, 서비스 개선) |
... | ... | @@ -125,7 +125,7 @@ |
125 | 125 |
class="link-text">개인정보 |
126 | 126 |
처리방침 전문보기</router-link> --> |
127 | 127 |
</div> |
128 |
- <div class="terms-content overflow-y mb24 radius"> |
|
128 |
+ <div class="terms-content overflow-y mb24 radius" tabindex="0"> |
|
129 | 129 |
<ul> |
130 | 130 |
<li class=" mb10"> |
131 | 131 |
<p class="detail-text">1. 개인정보의 수집·이용 목적 : AI 디지털교과서 통합지원센터 추후 <span class="border-b">기술지원 신청 및 |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?