
--- client/resources/css/main.css
+++ client/resources/css/main.css
... | ... | @@ -849,7 +849,7 @@ |
849 | 849 |
margin-bottom: 0; |
850 | 850 |
} |
851 | 851 |
|
852 |
-/* 생활보호사 정보 */ |
|
852 |
+/* 보호사 정보 */ |
|
853 | 853 |
.caregiver-info p { |
854 | 854 |
font-size: 1.6rem; |
855 | 855 |
margin-bottom: 1rem; |
--- client/views/component/Modal_Guardian.jsx
+++ client/views/component/Modal_Guardian.jsx
... | ... | @@ -61,6 +61,11 @@ |
61 | 61 |
alert("연락처를 입력해 주세요."); |
62 | 62 |
return false; |
63 | 63 |
} |
64 |
+ if (guardian['user_phonenumber'].length < 7) { |
|
65 |
+ guardianRef.current['user_phonenumber'].focus(); |
|
66 |
+ alert("연락처를 7자리 이상 입력해 주세요."); |
|
67 |
+ return false; |
|
68 |
+ } |
|
64 | 69 |
|
65 | 70 |
guardian['user_id'] = guardian['user_phonenumber']; |
66 | 71 |
fetch("/user/userSelectOne.json", { |
... | ... | @@ -186,6 +191,11 @@ |
186 | 191 |
alert("연락처 중복확인을 해주세요."); |
187 | 192 |
return false; |
188 | 193 |
} |
194 |
+ if (guardian['user_phonenumber'].length < 7) { |
|
195 |
+ guardianRef.current['user_phonenumber'].focus(); |
|
196 |
+ alert("연락처를 7자리 이상 입력해 주세요."); |
|
197 |
+ return false; |
|
198 |
+ } |
|
189 | 199 |
if (CommonUtil.isEmpty(guardian['user_address']) == true) { |
190 | 200 |
guardianRef.current['user_address'].focus(); |
191 | 201 |
alert("주소를 입력해 주세요."); |
--- client/views/component/Modal_Matching.jsx
+++ client/views/component/Modal_Matching.jsx
... | ... | @@ -24,9 +24,9 @@ |
24 | 24 |
|
25 | 25 |
const thead = [ |
26 | 26 |
"No", |
27 |
- "생활보호사 명", |
|
28 |
- "생활보호사 ID", |
|
29 |
- "생활보호사 연락처", |
|
27 |
+ "보호사 명", |
|
28 |
+ "보호사 ID", |
|
29 |
+ "보호사 연락처", |
|
30 | 30 |
"매칭 일자", |
31 | 31 |
"삭제" |
32 | 32 |
]; |
--- client/views/component/Modal_SeniorInsert.jsx
+++ client/views/component/Modal_SeniorInsert.jsx
... | ... | @@ -170,6 +170,11 @@ |
170 | 170 |
alert("연락처를 입력해 주세요."); |
171 | 171 |
return false; |
172 | 172 |
} |
173 |
+ if (senior['user_phonenumber'].length < 7) { |
|
174 |
+ seniorRef.current['user_phonenumber'].focus(); |
|
175 |
+ alert("연락처를 7자리 이상 입력해 주세요."); |
|
176 |
+ return false; |
|
177 |
+ } |
|
173 | 178 |
|
174 | 179 |
senior['user_id'] = senior['user_phonenumber']; |
175 | 180 |
fetch("/user/userSelectOne.json", { |
... | ... | @@ -229,6 +234,11 @@ |
229 | 234 |
alert("연락처 중복확인을 해주세요."); |
230 | 235 |
return false; |
231 | 236 |
} |
237 |
+ if (senior['user_phonenumber'].length < 7) { |
|
238 |
+ seniorRef.current['user_phonenumber'].focus(); |
|
239 |
+ alert("연락처를 7자리 이상 입력해 주세요."); |
|
240 |
+ return false; |
|
241 |
+ } |
|
232 | 242 |
if (CommonUtil.isEmpty(senior['user_address']) == true) { |
233 | 243 |
seniorRef.current['user_address'].focus(); |
234 | 244 |
alert("주소를 입력해 주세요."); |
--- client/views/pages/App.jsx
+++ client/views/pages/App.jsx
... | ... | @@ -11,7 +11,7 @@ |
11 | 11 |
import { setLoginUser, setSeniorList, setCurrentSeniorIndex } from "./AppStore.jsx"; |
12 | 12 |
|
13 | 13 |
//Application의 Route 정보를 관리하는 Component |
14 |
-import {AdminApp, GovernmentApp, AgencyApp, AgencyAdminApp, GuardianApp} from "./AppRoute.jsx"; |
|
14 |
+import { AdminApp, GovernmentApp, AgencyApp, AgencyAdminApp, GuardianApp } from "./AppRoute.jsx"; |
|
15 | 15 |
|
16 | 16 |
//Test Layout |
17 | 17 |
import Header from "../layout/Header.jsx"; |
... | ... | @@ -49,7 +49,7 @@ |
49 | 49 |
|
50 | 50 |
/**************** Firebase 푸시 설정 (시작) ****************/ |
51 | 51 |
const messaging = getMessaging(); |
52 |
- |
|
52 |
+ |
|
53 | 53 |
onMessage(messaging, (payload) => { |
54 | 54 |
console.log('Message received. ', payload); |
55 | 55 |
}); |
... | ... | @@ -72,17 +72,17 @@ |
72 | 72 |
setToken(currentToken); |
73 | 73 |
|
74 | 74 |
if (CommonUtil.isEmpty(loginUser) == false |
75 |
- && (CommonUtil.isEmpty(loginUser['push_token']) || loginUser['push_token'] != currentToken)) { |
|
75 |
+ && (CommonUtil.isEmpty(loginUser['push_token']) || loginUser['push_token'] != currentToken)) { |
|
76 | 76 |
loginUser['push_token'] = currentToken |
77 | 77 |
userUpdateForPushToken(loginUser); |
78 | 78 |
} |
79 |
- |
|
79 |
+ |
|
80 | 80 |
/* navigator.clipboard.writeText(currentToken).then(() => { |
81 | 81 |
console.log("Text copied to clipboard... : ", currentToken); |
82 | 82 |
}).catch(err => { |
83 | 83 |
console.log('Something went wrong', err); |
84 | 84 |
}); */ |
85 |
- |
|
85 |
+ |
|
86 | 86 |
} else { |
87 | 87 |
// Show permission request UI |
88 | 88 |
console.log('No registration token available. Request permission to generate one.'); |
... | ... | @@ -110,7 +110,7 @@ |
110 | 110 |
|
111 | 111 |
// FCM 메세지 처리 |
112 | 112 |
if (CommonUtil.isEmpty(loginUser) == false |
113 |
- && (CommonUtil.isEmpty(loginUser['is_push']) || loginUser['is_push'] == false)) { |
|
113 |
+ && (CommonUtil.isEmpty(loginUser['is_push']) || loginUser['is_push'] == false)) { |
|
114 | 114 |
loginUser['is_push'] = true; |
115 | 115 |
userUpdateForIsPush(loginUser); |
116 | 116 |
} |
... | ... | @@ -118,7 +118,7 @@ |
118 | 118 |
setIsPush(false); |
119 | 119 |
|
120 | 120 |
if (CommonUtil.isEmpty(loginUser) == false |
121 |
- && (CommonUtil.isEmpty(loginUser['is_push']) || loginUser['is_push'] == true)) { |
|
121 |
+ && (CommonUtil.isEmpty(loginUser['is_push']) || loginUser['is_push'] == true)) { |
|
122 | 122 |
loginUser['is_push'] = false; |
123 | 123 |
userUpdateForIsPush(loginUser); |
124 | 124 |
} |
... | ... | @@ -136,18 +136,18 @@ |
136 | 136 |
//const navigate = useNavigate(); |
137 | 137 |
|
138 | 138 |
//전역 변수 저장 객체 |
139 |
- const state = useSelector((state) => {return state}); |
|
139 |
+ const state = useSelector((state) => { return state }); |
|
140 | 140 |
const dispatch = useDispatch(); |
141 | 141 |
|
142 | 142 |
//로그인 여부 |
143 | 143 |
const [isLogin, setIsLogin] = React.useState(false); |
144 | 144 |
//기본 비밀번호 사용 여부 확인 (로그인 여부 확인 후, 사용 바람) |
145 | 145 |
const [isDefaultPassword, setIsDefaultPassword] = React.useState(false); |
146 |
- |
|
146 |
+ |
|
147 | 147 |
//로그인에 따라 각기 다른 App 주입 대상 변수(AdminApp, GovernmentApp, AgencyApp, GuardianApp) |
148 | 148 |
const [appRoute, setAppRoute] = React.useState(null); |
149 | 149 |
const [menuItems, setMenuItems] = React.useState(null); |
150 |
- |
|
150 |
+ |
|
151 | 151 |
//로그인 사용자 조회 |
152 | 152 |
const loginUserSelectOne = (clientLoginCheck) => { |
153 | 153 |
fetch("/user/loginUserSelectOne.json", { |
... | ... | @@ -158,8 +158,20 @@ |
158 | 158 |
body: JSON.stringify({}), |
159 | 159 |
}).then((response) => response.json()).then((loginUser) => { |
160 | 160 |
console.log("로그인 결과 : ", loginUser); |
161 |
+ |
|
161 | 162 |
//로그인 사용자 정보 전역 변수에 저장 |
162 | 163 |
dispatch(setLoginUser(loginUser)); |
164 |
+ |
|
165 |
+ if (loginUser) { |
|
166 |
+ if (loginUser['government_type'] == 'HOSPITAL') { |
|
167 |
+ loginUser['title_name'] = '의료사회복지사' |
|
168 |
+ } else if (loginUser['government_type'] == 'WELFARE') { |
|
169 |
+ loginUser['title_name'] = '생활지원사' |
|
170 |
+ } else { |
|
171 |
+ loginUser['title_name'] = '생활보호사' |
|
172 |
+ } |
|
173 |
+ dispatch(setLoginUser(loginUser)); |
|
174 |
+ } |
|
163 | 175 |
|
164 | 176 |
//로그인 유무(로그인 정보가 있으면 True, 없으면 False) |
165 | 177 |
let isLogin = (loginUser != null && loginUser['user_id'] != null); |
... | ... | @@ -235,7 +247,7 @@ |
235 | 247 |
}).then((response) => response.json()).then((data) => { |
236 | 248 |
console.log("특정 보호자의 대상자(시니어) 목록 조회 : ", data); |
237 | 249 |
//로그인 사용자 정보 전역 변수에 저장 |
238 |
- dispatch(setSeniorList({value: data})); |
|
250 |
+ dispatch(setSeniorList({ value: data })); |
|
239 | 251 |
}).catch((error) => { |
240 | 252 |
console.log('login() /user/seniorSelectListByGuardian.json error : ', error); |
241 | 253 |
}); |
... | ... | @@ -251,19 +263,19 @@ |
251 | 263 |
if (isLogin == true) { |
252 | 264 |
if (loginResultData['authority'] == 'ROLE_ADMIN') { |
253 | 265 |
setMenuItems(AdminApp.menuItems); |
254 |
- setAppRoute(<AdminApp.AppRoute/>); |
|
266 |
+ setAppRoute(<AdminApp.AppRoute />); |
|
255 | 267 |
} else if (loginResultData['authority'] == 'ROLE_GOVERNMENT') { |
256 | 268 |
setMenuItems(GovernmentApp.menuItems); |
257 |
- setAppRoute(<GovernmentApp.AppRoute/>); |
|
269 |
+ setAppRoute(<GovernmentApp.AppRoute />); |
|
258 | 270 |
} else if (loginResultData['authority'] == 'ROLE_AGENCYADMIN') { |
259 | 271 |
setMenuItems(AgencyAdminApp.menuItems); |
260 |
- setAppRoute(<AgencyAdminApp.AppRoute/>); |
|
272 |
+ setAppRoute(<AgencyAdminApp.AppRoute />); |
|
261 | 273 |
} else if (loginResultData['authority'] == 'ROLE_AGENCY') { |
262 | 274 |
setMenuItems(AgencyApp.menuItems); |
263 |
- setAppRoute(<AgencyApp.AppRoute/>); |
|
275 |
+ setAppRoute(<AgencyApp.AppRoute />); |
|
264 | 276 |
} else if (loginResultData['authority'] == 'ROLE_GUARDIAN' || loginResultData['authority'] == 'ROLE_SENIOR') { |
265 | 277 |
setMenuItems(GuardianApp.menuItems); |
266 |
- setAppRoute(<GuardianApp.AppRoute/>); |
|
278 |
+ setAppRoute(<GuardianApp.AppRoute />); |
|
267 | 279 |
if (loginResultData['authority'] == 'ROLE_GUARDIAN' && CommonUtil.isEmpty(state['seniorList'].value) == true) { |
268 | 280 |
seniorSelectListByGuardian(loginResultData); |
269 | 281 |
} |
... | ... | @@ -282,8 +294,8 @@ |
282 | 294 |
setIsPush(null); |
283 | 295 |
setToken(null); |
284 | 296 |
dispatch(setLoginUser({})); |
285 |
- dispatch(setSeniorList({value: []})); |
|
286 |
- dispatch(setCurrentSeniorIndex({value: 0})); |
|
297 |
+ dispatch(setSeniorList({ value: [] })); |
|
298 |
+ dispatch(setCurrentSeniorIndex({ value: 0 })); |
|
287 | 299 |
} |
288 | 300 |
}); |
289 | 301 |
}, [location]); |
... | ... | @@ -294,14 +306,14 @@ |
294 | 306 |
{isLogin == true ? |
295 | 307 |
isDefaultPassword == false ? ( |
296 | 308 |
<div id="layout"> |
297 |
- <Header/> |
|
298 |
- <Menu items={menuItems != null ? menuItems : null}/> |
|
309 |
+ <Header /> |
|
310 |
+ <Menu items={menuItems != null ? menuItems : null} /> |
|
299 | 311 |
<div id="pages"> |
300 | 312 |
{appRoute != null ? appRoute : null} |
301 | 313 |
</div> |
302 | 314 |
</div> |
303 |
- ) : (<PasswordChange/>) |
|
304 |
- : (<Login/>)} |
|
315 |
+ ) : (<PasswordChange />) |
|
316 |
+ : (<Login />)} |
|
305 | 317 |
</div> |
306 | 318 |
); |
307 | 319 |
} |
--- client/views/pages/healthcare/Healthcare.jsx
+++ client/views/pages/healthcare/Healthcare.jsx
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 |
React.useEffect(() => { |
44 | 44 |
searching(); |
45 | 45 |
}, [isMySenior]) |
46 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) |
|
46 |
+ //보호사(간호사)의 돌봄 대상자(시니어) |
|
47 | 47 |
const [senior, setSenior] = React.useState({ |
48 | 48 |
seniorList: [], seniorListCount: 0, search: { |
49 | 49 |
'government_id': CommonUtil.isEmpty(state.loginUser) ? null : state.loginUser['government_id'], |
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 |
'perPage': 10, |
55 | 55 |
} |
56 | 56 |
}); |
57 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
57 |
+ //보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
58 | 58 |
const seniorSelectList = (currentPage) => { |
59 | 59 |
senior.search.currentPage = CommonUtil.isEmpty(currentPage) ? 1 : currentPage; |
60 | 60 |
|
--- client/views/pages/healthcare/HealthcareAdmin.jsx
+++ client/views/pages/healthcare/HealthcareAdmin.jsx
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 |
React.useEffect(() => { |
44 | 44 |
searching(); |
45 | 45 |
}, [isMySenior]) |
46 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) |
|
46 |
+ //보호사(간호사)의 돌봄 대상자(시니어) |
|
47 | 47 |
const [senior, setSenior] = React.useState({ |
48 | 48 |
seniorList: [], seniorListCount: 0, search: { |
49 | 49 |
'government_id': CommonUtil.isEmpty(state.loginUser) ? null : state.loginUser['government_id'], |
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 |
'perPage': 10, |
55 | 55 |
} |
56 | 56 |
}); |
57 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
57 |
+ //보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
58 | 58 |
const seniorSelectList = (currentPage) => { |
59 | 59 |
senior.search.currentPage = CommonUtil.isEmpty(currentPage) ? 1 : currentPage; |
60 | 60 |
|
--- client/views/pages/healthcare/Medicalcare.jsx
+++ client/views/pages/healthcare/Medicalcare.jsx
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 |
React.useEffect(() => { |
47 | 47 |
searching(); |
48 | 48 |
}, [isMySenior]) |
49 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) |
|
49 |
+ //보호사(간호사)의 돌봄 대상자(시니어) |
|
50 | 50 |
const [senior, setSenior] = React.useState({seniorList: [], seniorListCount: 0, search: { |
51 | 51 |
'government_id': CommonUtil.isEmpty(state.loginUser) ? null : state.loginUser['government_id'], |
52 | 52 |
'agency_id': CommonUtil.isEmpty(state.loginUser) ? null : state.loginUser['agency_id'], |
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 |
'currentPage': 1, |
56 | 56 |
'perPage': 10, |
57 | 57 |
}}); |
58 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
58 |
+ //보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
59 | 59 |
const seniorSelectList = (currentPage) => { |
60 | 60 |
senior.search.currentPage = CommonUtil.isEmpty(currentPage) ? 1 : currentPage; |
61 | 61 |
|
--- client/views/pages/healthcare/MedicalcareAdmin.jsx
+++ client/views/pages/healthcare/MedicalcareAdmin.jsx
... | ... | @@ -46,7 +46,7 @@ |
46 | 46 |
React.useEffect(() => { |
47 | 47 |
searching(); |
48 | 48 |
}, [isMySenior]) |
49 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) |
|
49 |
+ //보호사(간호사)의 돌봄 대상자(시니어) |
|
50 | 50 |
const [senior, setSenior] = React.useState({ |
51 | 51 |
seniorList: [], seniorListCount: 0, search: { |
52 | 52 |
'government_id': CommonUtil.isEmpty(state.loginUser) ? null : state.loginUser['government_id'], |
... | ... | @@ -57,7 +57,7 @@ |
57 | 57 |
'perPage': 10, |
58 | 58 |
} |
59 | 59 |
}); |
60 |
- //생활보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
60 |
+ //보호사(간호사)의 돌봄 대상자(시니어) 목록 조회 |
|
61 | 61 |
const seniorSelectList = (currentPage) => { |
62 | 62 |
senior.search.currentPage = CommonUtil.isEmpty(currentPage) ? 1 : currentPage; |
63 | 63 |
|
--- client/views/pages/join/Join.jsx
+++ client/views/pages/join/Join.jsx
... | ... | @@ -310,7 +310,7 @@ |
310 | 310 |
{CommonUtil.isEmpty(state.loginUser) == false && (state.loginUser['authority'] == 'ROLE_ADMIN' || state.loginUser['authority'] == 'ROLE_GOVERNMENT' || state.loginUser['authority'] == 'ROLE_AGENCYADMIN') ? |
311 | 311 |
<option value="ROLE_AGENCYADMIN" selected={user['authority'] == "ROLE_AGENCYADMIN"}>센터 관리자</option> |
312 | 312 |
: null} |
313 |
- <option value="ROLE_AGENCY" selected={user['authority'] == "ROLE_AGENCY"}>생활보호사</option> |
|
313 |
+ <option value="ROLE_AGENCY" selected={user['authority'] == "ROLE_AGENCY"}>{state.loginUser['title_name']}</option> |
|
314 | 314 |
</select> |
315 | 315 |
</div> |
316 | 316 |
</div> |
--- client/views/pages/main/Main_agencyAdmin.jsx
+++ client/views/pages/main/Main_agencyAdmin.jsx
... | ... | @@ -358,7 +358,7 @@ |
358 | 358 |
</div> |
359 | 359 |
<div className="content-box combine-right-government"> |
360 | 360 |
<div className="flex"> |
361 |
- <Title title={`생활보호사별 대상자 등록 현황`} explanation={"약상자 사용자의 데이터 차트가 보여집니다."} /> |
|
361 |
+ <Title title={state.loginUser['title_name'] + '별 대상자 등록 현황'} explanation={"약상자 사용자의 데이터 차트가 보여집니다."} /> |
|
362 | 362 |
</div> |
363 | 363 |
<div style={{ height: 'calc(100% - 60px)' }}> |
364 | 364 |
{ |
--- client/views/pages/main/PasswordChange.jsx
+++ client/views/pages/main/PasswordChange.jsx
... | ... | @@ -15,15 +15,15 @@ |
15 | 15 |
|
16 | 16 |
//등록할 사용자 정보 |
17 | 17 |
const [user, setUser] = React.useState({ |
18 |
- 'user_id': null, |
|
19 |
- 'user_name': null, |
|
18 |
+ // 'user_id': null, |
|
19 |
+ // 'user_name': null, |
|
20 | 20 |
'user_password': null, |
21 | 21 |
'user_password_check': null, |
22 |
- 'user_phonenumber': null, |
|
23 |
- 'user_birth': null, |
|
24 |
- 'user_gender': null, |
|
25 |
- 'user_address': null, |
|
26 |
- 'user_email': null, |
|
22 |
+ // 'user_phonenumber': null, |
|
23 |
+ // 'user_birth': null, |
|
24 |
+ // 'user_gender': null, |
|
25 |
+ // 'user_address': null, |
|
26 |
+ // 'user_email': null, |
|
27 | 27 |
//'authority': CommonUtil.isEmpty(defaultAuthority) ? state.loginUser['authority'] : defaultAuthority, |
28 | 28 |
//'agency_id': CommonUtil.isEmpty(defaultAgencyId) ? state.loginUser['agency_id'] : defaultAgencyId, |
29 | 29 |
//'government_id': CommonUtil.isEmpty(defaultGovernmentId) ? state.loginUser['government_id'] : defaultGovernmentId, |
... | ... | @@ -55,25 +55,31 @@ |
55 | 55 |
return true; |
56 | 56 |
} |
57 | 57 |
|
58 |
- //사용자 등록 |
|
58 |
+ //비밀번호 변경 |
|
59 | 59 |
const userUpdate = () => { |
60 | 60 |
if (userInsertValidation() == false) { |
61 | 61 |
return; |
62 | 62 |
} |
63 |
+ |
|
64 |
+ const userData = { ...state.loginUser }; |
|
65 |
+ |
|
66 |
+ userData['user_password'] = user['user_password']; |
|
67 |
+ |
|
68 |
+ console.log("userData: ", userData) |
|
63 | 69 |
|
64 | 70 |
fetch("/user/userUpdate.json", { |
65 | 71 |
method: "POST", |
66 | 72 |
headers: { |
67 | 73 |
'Content-Type': 'application/json; charset=UTF-8' |
68 | 74 |
}, |
69 |
- body: JSON.stringify(user), |
|
75 |
+ body: JSON.stringify(userData), |
|
70 | 76 |
}).then((response) => response.json()).then((data) => { |
71 |
- console.log("사용자 등록 결과(건수) : ", data); |
|
77 |
+ console.log("사용자 수정 결과(건수) : ", data); |
|
72 | 78 |
if (data > 0) { |
73 |
- alert("계정생성완료"); |
|
74 |
- navigate(-1); |
|
79 |
+ alert("비밀번호 변경 완료"); |
|
80 |
+ navigate('/'); |
|
75 | 81 |
} else { |
76 |
- alert("계정생성에 실패하였습니다. 관리자에게 문의바랍니다."); |
|
82 |
+ alert("비밀번호 변경에 실패하였습니다. 관리자에게 문의바랍니다."); |
|
77 | 83 |
} |
78 | 84 |
}).catch((error) => { |
79 | 85 |
console.log('userUpdate() /user/userInsert.json error : ', error); |
--- client/views/pages/org/OrgSelect.jsx
+++ client/views/pages/org/OrgSelect.jsx
... | ... | @@ -587,7 +587,7 @@ |
587 | 587 |
<th>기관명</th> |
588 | 588 |
<th>관리장비개수</th> |
589 | 589 |
<th>관리자(명)</th> |
590 |
- <th>생활보호사(명)</th> |
|
590 |
+ <th>{state.loginUser['title_name']}(명)</th> |
|
591 | 591 |
<th>돌봄 대상자(명)</th> |
592 | 592 |
<th>주소</th> |
593 | 593 |
<th>대표연락처</th> |
... | ... | @@ -608,7 +608,7 @@ |
608 | 608 |
<td data-label="기관명">{item['government_name']}</td> |
609 | 609 |
<td data-label="관리 장비 개수">{item['equipment_count']}</td> |
610 | 610 |
<td data-label="관리자(명)">{item['government_user_count']}</td> |
611 |
- <td data-label="생활보호사(명)">{item['agent_user_count']}</td> |
|
611 |
+ <td data-label="보호사(명)">{item['agent_user_count']}</td> |
|
612 | 612 |
<td data-label="돌봄 대상자(명)">{item['senior_user_count']}</td> |
613 | 613 |
<td data-label="주소">{item['government_address']}</td> |
614 | 614 |
<td data-label="대표 연락처">{item['government_phonenumber']}</td> |
... | ... | @@ -696,7 +696,7 @@ |
696 | 696 |
<th>구분</th> |
697 | 697 |
<th>관리기관명</th> |
698 | 698 |
<th>기관명</th> |
699 |
- <th>생활보호사(명)</th> |
|
699 |
+ <th>{state.loginUser['title_name']}(명)</th> |
|
700 | 700 |
<th>돌봄 대상자(명)</th> |
701 | 701 |
<th>주소</th> |
702 | 702 |
<th>대표연락처</th> |
... | ... | @@ -713,7 +713,7 @@ |
713 | 713 |
<td data-label="구분">{orgTypes[item['agency_type']]}</td> |
714 | 714 |
<td data-label="관리기관명">{item['government_name']}</td> |
715 | 715 |
<td data-label="기관명">{item['agency_name']}</td> |
716 |
- <td data-label="생활보호사(명)">{item['agent_user_count']}</td> |
|
716 |
+ <td data-label="보호사(명)">{item['agent_user_count']}</td> |
|
717 | 717 |
<td data-label="돌봄 대상자(명)">{item['senior_user_count']}</td> |
718 | 718 |
<td data-label="주소">{item['agency_address']}</td> |
719 | 719 |
<td data-label="대표 연락처">{item['agency_phonenumber']}</td> |
--- client/views/pages/senior_management/SeniorSelectOne.jsx
+++ client/views/pages/senior_management/SeniorSelectOne.jsx
... | ... | @@ -1,5 +1,6 @@ |
1 | 1 |
import React from "react"; |
2 | 2 |
import { useNavigate, useLocation } from "react-router"; |
3 |
+import { useSelector } from "react-redux"; |
|
3 | 4 |
|
4 | 5 |
import Modal from "../../component/Modal.jsx"; |
5 | 6 |
import SubTitle from "../../component/SubTitle.jsx"; |
... | ... | @@ -13,6 +14,9 @@ |
13 | 14 |
export default function SeniorSelectOne() { |
14 | 15 |
const navigate = useNavigate(); |
15 | 16 |
const location = useLocation(); |
17 |
+ |
|
18 |
+ //전역 변수 저장 객체 |
|
19 |
+ const state = useSelector((state) => { return state }); |
|
16 | 20 |
|
17 | 21 |
//보호자 모달 오픈 여부 |
18 | 22 |
const [modalGuardianIsOpen, setModalGuardianIsOpen] = React.useState(false); |
... | ... | @@ -329,6 +333,7 @@ |
329 | 333 |
const [agent, setAgent] = React.useState({ agentListBySenior: [], agentListCountBySenior: 0 }); |
330 | 334 |
//대상자의 생활보호사 목록 조회 |
331 | 335 |
const agentSelectListBySenior = () => { |
336 |
+ |
|
332 | 337 |
fetch("/user/agentSelectListBySenior.json", { |
333 | 338 |
method: "POST", |
334 | 339 |
headers: { |
... | ... | @@ -392,7 +397,6 @@ |
392 | 397 |
if (!senior_delete) { |
393 | 398 |
if (data > 0) { |
394 | 399 |
alert("담당자 매칭이 종료 되었습니다."); |
395 |
- seniorSelectListByAgent(); |
|
396 | 400 |
agentSelectListBySenior(); |
397 | 401 |
} else { |
398 | 402 |
alert("담당자 매칭 종료에 실패하였습니다."); |
... | ... | @@ -700,7 +704,7 @@ |
700 | 704 |
</div> |
701 | 705 |
|
702 | 706 |
|
703 |
- <SubTitle explanation={"대상자의 생활보호사"} className="margin-bottom" /> |
|
707 |
+ <SubTitle explanation={"대상자의 " + state.loginUser['title_name']} className="margin-bottom" /> |
|
704 | 708 |
<div className="margin-bottom5"> |
705 | 709 |
<table className={"senior-user protector-user"}> |
706 | 710 |
<thead> |
... | ... | @@ -728,7 +732,7 @@ |
728 | 732 |
<td data-label="이름">{item['user_name']}</td> |
729 | 733 |
<td data-label="연락처">{item['user_phonenumber']}</td> |
730 | 734 |
<td data-label="이메일">{item['user_email']}</td> |
731 |
- <td data-label="상태">{item['agent_match_state'] ? <span className="green">현재 생활보호사</span> : <span className="grey">이전 생활보호사</span>}</td> |
|
735 |
+ <td data-label="상태">{item['agent_match_state'] ? <span className="green">현재 {state.loginUser['title_name']}</span> : <span className="grey">이전 {state.loginUser['title_name']}</span>}</td> |
|
732 | 736 |
<td data-label="배정시작일">{item['agent_match_start_date']}</td> |
733 | 737 |
<td data-label="배정종료일">{item['agent_match_end_date']}</td> |
734 | 738 |
<td data-label="관리"> |
--- client/views/pages/user_management/AgencyAdminSeniorSelect.jsx
+++ client/views/pages/user_management/AgencyAdminSeniorSelect.jsx
... | ... | @@ -168,7 +168,7 @@ |
168 | 168 |
// 시니어 - 담당자 매칭 |
169 | 169 |
const MatchSeniorAgency = () => { |
170 | 170 |
if (CommonUtil.isEmpty(workerId) == true) { |
171 |
- alert("생활보호사를 선택해 주세요."); |
|
171 |
+ alert(state.loginUser['title_name'] + "를 선택해 주세요."); |
|
172 | 172 |
return; |
173 | 173 |
} |
174 | 174 |
var insertBtn = confirm("등록하시겠습니까?"); |
... | ... | @@ -226,6 +226,58 @@ |
226 | 226 |
}); |
227 | 227 |
} |
228 | 228 |
|
229 |
+ |
|
230 |
+ //대상자(시니어) 복구 |
|
231 |
+ const userUpdate = (senior) => { |
|
232 |
+ senior.user_use = true |
|
233 |
+ |
|
234 |
+ console.log("복구할 시니어 정보 : ", senior); |
|
235 |
+ |
|
236 |
+ fetch("/user/userUpdate.json", { |
|
237 |
+ method: "POST", |
|
238 |
+ headers: { |
|
239 |
+ 'Content-Type': 'application/json; charset=UTF-8' |
|
240 |
+ }, |
|
241 |
+ body: JSON.stringify(senior), |
|
242 |
+ }).then((response) => response.json()).then((data) => { |
|
243 |
+ console.log("사용자 수정 결과(건수) : ", data); |
|
244 |
+ if (data > 0) { |
|
245 |
+ alert("계정복구완료"); |
|
246 |
+ agentSelectList(); |
|
247 |
+ searching(); |
|
248 |
+ } else { |
|
249 |
+ alert("계정복구에 실패하였습니다. 관리자에게 문의바랍니다."); |
|
250 |
+ } |
|
251 |
+ }).catch((error) => { |
|
252 |
+ console.log('userUpdate() /user/userUpdate.json error : ', error); |
|
253 |
+ }); |
|
254 |
+ } |
|
255 |
+ |
|
256 |
+ |
|
257 |
+ //대상자(시니어) 삭제 |
|
258 |
+ const userDelete = (senior) => { |
|
259 |
+ confirm("계정을 삭제하시겠습니까?\n계정을 삭제할 경우 복구할 수 없습니다."); |
|
260 |
+ |
|
261 |
+ fetch("/user/userDelete.json", { |
|
262 |
+ method: "POST", |
|
263 |
+ headers: { |
|
264 |
+ 'Content-Type': 'application/json; charset=UTF-8' |
|
265 |
+ }, |
|
266 |
+ body: JSON.stringify(senior), |
|
267 |
+ }).then((response) => response.json()).then((data) => { |
|
268 |
+ console.log("사용자 수정 결과(건수) : ", data); |
|
269 |
+ if (data > 0) { |
|
270 |
+ alert("계정삭제완료"); |
|
271 |
+ agentSelectList(); |
|
272 |
+ searching(); |
|
273 |
+ } else { |
|
274 |
+ alert("계정삭제에 실패하였습니다. 관리자에게 문의바랍니다."); |
|
275 |
+ } |
|
276 |
+ }).catch((error) => { |
|
277 |
+ console.log('userUpdate() /user/userUpdate.json error : ', error); |
|
278 |
+ }); |
|
279 |
+ } |
|
280 |
+ |
|
229 | 281 |
React.useEffect(() => { |
230 | 282 |
agentSelectList(); |
231 | 283 |
searching(); |
... | ... | @@ -241,7 +293,7 @@ |
241 | 293 |
<div> |
242 | 294 |
<div className="flex-align-start userauthoriylist gap5"> |
243 | 295 |
<div className="left"> |
244 |
- <SubTitle explanation={"우리기관 생활보호사"} /> |
|
296 |
+ <SubTitle explanation={"우리기관 " + state.loginUser['title_name']} /> |
|
245 | 297 |
<div style={{ fontSize: '16px', marginTop: '0px' }} className="category"> |
246 | 298 |
<a className="active" onClick={() => { agentChange(null) }}> |
247 | 299 |
{state.loginUser['government_name']} |
... | ... | @@ -291,7 +343,7 @@ |
291 | 343 |
} /> |
292 | 344 |
<div className="btn-wrap flex-end margin-bottom "> |
293 | 345 |
<button className={"btn-small gray-btn"} onClick={modalSeniorInsertOpen}>신규등록</button> |
294 |
- <button className={"btn-small gray-btn"} onClick={() => { openModal() }}>생활보호사 배정하기</button> |
|
346 |
+ <button className={"btn-small gray-btn"} onClick={() => { openModal() }}>{state.loginUser['title_name']} 배정하기</button> |
|
295 | 347 |
</div> |
296 | 348 |
</div> |
297 | 349 |
<table className={"protector-user"}> |
... | ... | @@ -307,7 +359,7 @@ |
307 | 359 |
<th>성별</th> |
308 | 360 |
<th>연락처</th> |
309 | 361 |
<th>보호자</th> |
310 |
- <th>생활보호사</th> |
|
362 |
+ <th>{state.loginUser['title_name']}</th> |
|
311 | 363 |
<th>대상자관리</th> |
312 | 364 |
</tr> |
313 | 365 |
</thead> |
... | ... | @@ -331,7 +383,7 @@ |
331 | 383 |
: item['guardian_user_names'] |
332 | 384 |
} |
333 | 385 |
</td> |
334 |
- <td data-label="생활보호사"> |
|
386 |
+ <td data-label={state.loginUser['title_name']}> |
|
335 | 387 |
{item['agent_user_names']} |
336 | 388 |
</td> |
337 | 389 |
<td data-label="대상자관리"> |
... | ... | @@ -383,6 +435,8 @@ |
383 | 435 |
<th>성별</th> |
384 | 436 |
<th>연락처</th> |
385 | 437 |
<th>보호자</th> |
438 |
+ <th>계정복구</th> |
|
439 |
+ <th>계정삭제</th> |
|
386 | 440 |
<th>대상자관리</th> |
387 | 441 |
</tr> |
388 | 442 |
</thead> |
... | ... | @@ -401,6 +455,12 @@ |
401 | 455 |
? '없음' |
402 | 456 |
: item['guardian_user_names'] |
403 | 457 |
} |
458 |
+ </td> |
|
459 |
+ <td> |
|
460 |
+ <button className="btn-small red-btn" onClick={() => { userUpdate(item) }}>계정복구</button> |
|
461 |
+ </td> |
|
462 |
+ <td> |
|
463 |
+ <button className="btn-small red-btn" onClick={() => { userDelete(item) }}>계정삭제</button> |
|
404 | 464 |
</td> |
405 | 465 |
<td data-label="대상자관리"> |
406 | 466 |
<button className="btn-small gray-btn" onClick={() => { |
... | ... | @@ -485,18 +545,18 @@ |
485 | 545 |
</ul> |
486 | 546 |
</div> |
487 | 547 |
</div> |
488 |
- <Modal open={modalOpen} close={closeModal} header="생활보호사 배정하기"> |
|
548 |
+ <Modal open={modalOpen} close={closeModal} header={state.loginUser['title_name'] + " 배정하기"}> |
|
489 | 549 |
<div className="modal-visit board-wrap"> |
490 | 550 |
<table className="margin-bottom"> |
491 | 551 |
<tbody> |
492 | 552 |
<tr> |
493 |
- <th>담당 생활보호사</th> |
|
553 |
+ <th>담당 {state.loginUser['title_name']}</th> |
|
494 | 554 |
<td> |
495 | 555 |
<select onChange={(e) => { |
496 | 556 |
console.log('e.target.value : ', e.target.value); |
497 | 557 |
setWorkerId(e.target.value); |
498 | 558 |
}}> |
499 |
- <option value="">담당 생활보호사를 선택해주세요.</option> |
|
559 |
+ <option value="">담당 {state.loginUser['title_name']}를 선택해주세요.</option> |
|
500 | 560 |
{agent.userList.map((user, idx) => { |
501 | 561 |
return ( |
502 | 562 |
<option key={idx} value={user['user_id']}>{user['user_name']}</option> |
--- client/views/pages/user_management/AgentSelectOne.jsx
+++ client/views/pages/user_management/AgentSelectOne.jsx
... | ... | @@ -1,5 +1,6 @@ |
1 | 1 |
import React from "react"; |
2 | 2 |
import { useNavigate, useLocation } from "react-router"; |
3 |
+import { useSelector } from "react-redux"; |
|
3 | 4 |
|
4 | 5 |
import SubTitle from "../../component/SubTitle.jsx"; |
5 | 6 |
import Modal_Guardian from "../../component/Modal_Guardian.jsx"; |
... | ... | @@ -10,6 +11,8 @@ |
10 | 11 |
const navigate = useNavigate(); |
11 | 12 |
const location = useLocation(); |
12 | 13 |
|
14 |
+ //전역 변수 저장 객체 |
|
15 |
+ const state = useSelector((state) => { return state }); |
|
13 | 16 |
|
14 | 17 |
//대상자(시니어) 등록 모달 오픈 여부 |
15 | 18 |
const [modalSeniorInsertIsOpen, setModalSeniorInsertIsOpen] = React.useState(false); |
... | ... | @@ -239,7 +242,7 @@ |
239 | 242 |
|
240 | 243 |
{agent['authority'] == 'ROLE_AGENCYADMIN' ? null : ( |
241 | 244 |
<> |
242 |
- <SubTitle explanation={"생활보호사의 보호대상자"} className="margin-bottom display-inline-block" /> |
|
245 |
+ <SubTitle explanation={state.loginUser['title_name'] + "의 보호대상자"} className="margin-bottom display-inline-block" /> |
|
243 | 246 |
<button className={"btn-small gray-btn display-inline-block float-right"} onClick={() => modalSeniorInsertOpen()}>보호대상자 추가</button> |
244 | 247 |
<div className="margin-bottom5"> |
245 | 248 |
<table className={"agent-user"}> |
--- client/views/pages/user_management/UserSelect.jsx
+++ client/views/pages/user_management/UserSelect.jsx
... | ... | @@ -253,8 +253,8 @@ |
253 | 253 |
agent.search['government_id'] = null; |
254 | 254 |
agent.search['agency_id'] = null; |
255 | 255 |
agentSelectList(); |
256 |
- agent.search['government_id'] = null; |
|
257 |
- agent.search['agency_id'] = null; |
|
256 |
+ agentAdmin.search['government_id'] = null; |
|
257 |
+ agentAdmin.search['agency_id'] = null; |
|
258 | 258 |
agentAdminSelectList(); |
259 | 259 |
if (state.loginUser['authority'] == 'ROLE_ADMIN' || state.loginUser['authority'] == 'ROLE_GOVERNMENT') { |
260 | 260 |
government.search['government_id'] = null; |
... | ... | @@ -273,8 +273,8 @@ |
273 | 273 |
agent.search['government_id'] = government_id; |
274 | 274 |
agent.search['agency_id'] = null; |
275 | 275 |
agentSelectList(); |
276 |
- agent.search['government_id'] = government_id; |
|
277 |
- agent.search['agency_id'] = null; |
|
276 |
+ agentAdmin.search['government_id'] = government_id; |
|
277 |
+ agentAdmin.search['agency_id'] = null; |
|
278 | 278 |
agentAdminSelectList(); |
279 | 279 |
if (state.loginUser['authority'] == 'ROLE_ADMIN' || state.loginUser['authority'] == 'ROLE_GOVERNMENT') { |
280 | 280 |
government.search['government_id'] = government_id; |
... | ... | @@ -293,8 +293,9 @@ |
293 | 293 |
agent.search['government_id'] = government_id; |
294 | 294 |
agent.search['agency_id'] = agency_id; |
295 | 295 |
agentSelectList(); |
296 |
- agent.search['government_id'] = government_id; |
|
297 |
- agent.search['agency_id'] = agency_id; |
|
296 |
+ |
|
297 |
+ agentAdmin.search['government_id'] = government_id; |
|
298 |
+ agentAdmin.search['agency_id'] = agency_id; |
|
298 | 299 |
agentAdminSelectList(); |
299 | 300 |
} |
300 | 301 |
|
... | ... | @@ -331,6 +332,50 @@ |
331 | 332 |
} |
332 | 333 |
}).catch((error) => { |
333 | 334 |
console.log('userUpdate() /user/userUpdate.json error : ', error); |
335 |
+ }); |
|
336 |
+ } |
|
337 |
+ |
|
338 |
+ //대상자 복구 |
|
339 |
+ const userRestore = (user) => { |
|
340 |
+ user.user_use = true |
|
341 |
+ |
|
342 |
+ console.log("복구할 계정 정보 : ", user); |
|
343 |
+ |
|
344 |
+ fetch("/user/userUpdate.json", { |
|
345 |
+ method: "POST", |
|
346 |
+ headers: { |
|
347 |
+ 'Content-Type': 'application/json; charset=UTF-8' |
|
348 |
+ }, |
|
349 |
+ body: JSON.stringify(user), |
|
350 |
+ }).then((response) => response.json()).then((data) => { |
|
351 |
+ console.log("사용자 수정 결과(건수) : ", data); |
|
352 |
+ if (data > 0) { |
|
353 |
+ alert("계정복구완료"); |
|
354 |
+ orgSelectListOfHierarchy(); |
|
355 |
+ |
|
356 |
+ if (CommonUtil.isEmpty(location.state) == false) { |
|
357 |
+ const param = location.state; |
|
358 |
+ if (CommonUtil.isEmpty(param['tabActiveByRoleType']) == false) { |
|
359 |
+ setTabActiveByRoleType(param['tabActiveByRoleType']); |
|
360 |
+ } |
|
361 |
+ governmentChange(param['government_id']); |
|
362 |
+ agencyChange(param['government_id'], param['agency_id']); |
|
363 |
+ } else { |
|
364 |
+ agentSelectList(); |
|
365 |
+ agentAdminSelectList(); |
|
366 |
+ if (state.loginUser['authority'] == 'ROLE_ADMIN' || state.loginUser['authority'] == 'ROLE_GOVERNMENT') { |
|
367 |
+ governmentSelectList(); |
|
368 |
+ } |
|
369 |
+ } |
|
370 |
+ |
|
371 |
+ if (state.loginUser['authority'] == 'ROLE_ADMIN') { |
|
372 |
+ adminSelectList(); |
|
373 |
+ } |
|
374 |
+ } else { |
|
375 |
+ alert("계정복구에 실패하였습니다. 관리자에게 문의바랍니다."); |
|
376 |
+ } |
|
377 |
+ }).catch((error) => { |
|
378 |
+ console.log('userRestore() /user/userUpdate.json error : ', error); |
|
334 | 379 |
}); |
335 | 380 |
} |
336 | 381 |
|
... | ... | @@ -423,7 +468,9 @@ |
423 | 468 |
|
424 | 469 |
{/* 탭 제목 */} |
425 | 470 |
<ul className="tab-menu flex-end" > |
426 |
- <li onClick={() => setTabActiveByRoleType('ROLE_AGENCY')} className={tabActiveByRoleType == 'ROLE_AGENCY' ? "active" : null}>생활보호사 ({agent.userListCount})</li> |
|
471 |
+ <li onClick={() => setTabActiveByRoleType('ROLE_AGENCY')} className={tabActiveByRoleType == 'ROLE_AGENCY' ? "active" : null}> |
|
472 |
+ {state.loginUser['title_name']} |
|
473 |
+ ({agent.userListCount})</li> |
|
427 | 474 |
{state.loginUser['authority'] == 'ROLE_ADMIN' || state.loginUser['authority'] == 'ROLE_AGENCYADMIN' || state.loginUser['authority'] == 'ROLE_GOVERNMENT' ? |
428 | 475 |
<li onClick={() => setTabActiveByRoleType('ROLE_AGENCYADMIN')} className={tabActiveByRoleType == 'ROLE_AGENCYADMIN' ? "active" : null}>센터 관리자 ({agentAdmin.userListCount})</li> |
429 | 476 |
: null} |
... | ... | @@ -485,6 +532,7 @@ |
485 | 532 |
<th>연락처</th> |
486 | 533 |
<th>이메일</th> |
487 | 534 |
<th>가입승인</th> |
535 |
+ {!isAgentType ? <th>활성화</th> : null} |
|
488 | 536 |
<th>상세보기</th> |
489 | 537 |
</tr> |
490 | 538 |
</thead> |
... | ... | @@ -503,6 +551,11 @@ |
503 | 551 |
<button className={"btn-small red-btn"} onClick={() => { userUpdate(item, agentSelectList) }}>가입승인</button> |
504 | 552 |
} |
505 | 553 |
</td> |
554 |
+ {!isAgentType ? |
|
555 |
+ <td> |
|
556 |
+ <button className={"btn-small red-btn"} onClick={() => { userRestore(item) }}>활성화</button> |
|
557 |
+ </td> |
|
558 |
+ : null} |
|
506 | 559 |
<td data-label="상세보기"> |
507 | 560 |
<button className={"btn-small lightgray-btn"} onClick={() => { navigate("/AgentSelectOne", { state: { 'agent_id': item['user_id'] } }) }}>상세 페이지 이동</button> |
508 | 561 |
</td> |
... | ... | @@ -575,6 +628,9 @@ |
575 | 628 |
<th>연락처</th> |
576 | 629 |
<th>이메일</th> |
577 | 630 |
<th>가입승인</th> |
631 |
+ {!isAgentAdminType ? |
|
632 |
+ <th>활성화</th> |
|
633 |
+ : null} |
|
578 | 634 |
<th>상세보기</th> |
579 | 635 |
</tr> |
580 | 636 |
</thead> |
... | ... | @@ -593,6 +649,11 @@ |
593 | 649 |
<button className={"btn-small red-btn"} onClick={() => { userUpdate(item, agentAdminSelectList) }}>가입승인</button> |
594 | 650 |
} |
595 | 651 |
</td> |
652 |
+ {!isAgentAdminType ? |
|
653 |
+ <td> |
|
654 |
+ <button className={"btn-small red-btn"} onClick={() => { userRestore(item) }}>활성화</button> |
|
655 |
+ </td> |
|
656 |
+ : null} |
|
596 | 657 |
<td data-label="상세보기"> |
597 | 658 |
<button className={"btn-small lightgray-btn"} onClick={() => { navigate("/AgentSelectOne", { state: { 'agent_id': item['user_id'] } }) }}>상세 페이지 이동</button> |
598 | 659 |
</td> |
... | ... | @@ -639,20 +700,6 @@ |
639 | 700 |
</div> |
640 | 701 |
|
641 | 702 |
<div className="radio-tab btn-wrap flex-end margin-bottom"> |
642 |
- <div className="flex-start"> |
|
643 |
- <div> |
|
644 |
- <input type="radio" name="viewGovType" id="useGovTrue" |
|
645 |
- checked={isGovType} |
|
646 |
- onChange={(e) => { e.target.checked ? changeGovType(true) : null }} /> |
|
647 |
- <label htmlFor="useGovTrue">활성화</label> |
|
648 |
- </div> |
|
649 |
- <div> |
|
650 |
- <input type="radio" name="viewGovType" id="useGovFalse" |
|
651 |
- checked={!isGovType} |
|
652 |
- onChange={(e) => { e.target.checked ? changeGovType(false) : null }} /> |
|
653 |
- <label htmlFor="useGovFalse">미활성화</label> |
|
654 |
- </div> |
|
655 |
- </div> |
|
656 | 703 |
<button className={"btn-small gray-btn"} onClick={join}>등록</button> |
657 | 704 |
</div> |
658 | 705 |
|
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?