
--- client/views/pages/equipment/EquipmentManagementSelect.jsx
+++ client/views/pages/equipment/EquipmentManagementSelect.jsx
... | ... | @@ -36,15 +36,6 @@ |
36 | 36 |
|
37 | 37 |
const navigate = useNavigate(); |
38 | 38 |
|
39 |
- // 함수 실행 함수 |
|
40 |
- React.useEffect(() => { |
|
41 |
- equipmentSelectList(); |
|
42 |
- |
|
43 |
- agencyEquipmentSelectList(); |
|
44 |
- }, []) |
|
45 |
- |
|
46 |
- |
|
47 |
- |
|
48 | 39 |
/********************************** 관리자 장비 (시작) **********************************/ |
49 | 40 |
// 관리자 전체 장비 목록 |
50 | 41 |
const [equipmentList, setEquipmentList] = React.useState([]); |
... | ... | @@ -63,18 +54,6 @@ |
63 | 54 |
}).catch((error) => { |
64 | 55 |
console.log('equipmentSelectList error : ', error); |
65 | 56 |
}); |
66 |
- } |
|
67 |
- |
|
68 |
- // 장비 목록 조회 확인 |
|
69 |
- const equipmentListData = () => { |
|
70 |
- console.log('equipmentSelectList Function Run', equipmentList); |
|
71 |
- console.log('equipmentSelectList Function Run', equipmentList.length); |
|
72 |
- console.log('content1 before data: ', content1); |
|
73 |
- for(let i = 0; i < equipmentList.length; i++) { |
|
74 |
- content1.equipmentNo = i + 1; |
|
75 |
- content1.equipmentName = equipmentList[i].equipment_name; |
|
76 |
- } |
|
77 |
- console.log('content1 after data: ', content1); |
|
78 | 57 |
} |
79 | 58 |
|
80 | 59 |
const thead1 = [ |
... | ... | @@ -189,17 +168,22 @@ |
189 | 168 |
/********************************** 시행기관 장비 (시작) **********************************/ |
190 | 169 |
//로그 확인 |
191 | 170 |
const logCheck = () => { |
192 |
- console.log('agencyEquipmentList - change: ', agencyEquipmentList); |
|
171 |
+ console.log('seniorList - change: ', seniorList); |
|
193 | 172 |
}; |
194 | 173 |
|
195 | 174 |
// 시행기관 전체 장비 목록 |
196 | 175 |
const [agencyEquipmentList, setAgencyEquipmentList] = React.useState([]); |
197 |
- |
|
176 |
+ // 시행기관 대상자 장비 목록 |
|
177 |
+ const [agencySeniorEquipmentList, setAgencySeniorEquipmentList] = React.useState([]); |
|
178 |
+ // 시행기관 재고 장비 목록 |
|
179 |
+ const [agencyStockEquipmentList, setAgencyStockEquipmentList] = React.useState([]); |
|
180 |
+ // 선택 대상자 장비 |
|
181 |
+ const [seniorEquipment, setSeniorEquipment] = React.useState({}); |
|
182 |
+ // 대상자 목록 |
|
183 |
+ const [seniorList, setSeniorList] = React.useState([]); |
|
198 | 184 |
// 대상자 장비 등록 모달창 |
199 | 185 |
const [seniorMatchModal, setSeniorMatchModal] = React.useState(false); |
200 |
- |
|
201 |
- // 대상자 장비 |
|
202 |
- const [seniorEquipment, setSeniorEquipment] = React.useState({}); |
|
186 |
+ |
|
203 | 187 |
|
204 | 188 |
// 대상자 장비 등록 모달창 열기 |
205 | 189 |
const seniorMatchModalOpen = (item) => { |
... | ... | @@ -213,6 +197,16 @@ |
213 | 197 |
|
214 | 198 |
// 대상자 장비 등록 - 대상자 |
215 | 199 |
const seniorEquipmentSeniorInsert = (e) => { |
200 |
+ console.log("senior: ", e.target.value); |
|
201 |
+ |
|
202 |
+ // // Name 속성 |
|
203 |
+ // const userName = e.target.value.split('(')[0].trim(); |
|
204 |
+ // // ID 속성 |
|
205 |
+ // const second = e.target.value.split('(')[1]; // ')' 자르기 전 |
|
206 |
+ // const userId = second.substr(0, second.length-1); |
|
207 |
+ // console.log("senior id: ", userId); |
|
208 |
+ // console.log("senior name: ", userName); |
|
209 |
+ |
|
216 | 210 |
// 원본 데이터 복사 및 수정 |
217 | 211 |
let data = { |
218 | 212 |
...seniorEquipment, |
... | ... | @@ -245,6 +239,7 @@ |
245 | 239 |
setSeniorEquipment(data); |
246 | 240 |
}; |
247 | 241 |
|
242 |
+ |
|
248 | 243 |
// 시행기관 전체 장비 목록 조회 |
249 | 244 |
const agencyEquipmentSelectList = () => { |
250 | 245 |
console.log('agencyEquipmentSelectList Function Run'); |
... | ... | @@ -264,22 +259,83 @@ |
264 | 259 |
}); |
265 | 260 |
} |
266 | 261 |
|
262 |
+ // 시행기관 대상자 장비 목록 조회 |
|
263 |
+ // const agencySeniorEquipmentSelectList = () => { |
|
264 |
+ // console.log('agencySeniorEquipmentSelectList Function Run'); |
|
265 |
+ // fetch("/equipment/agencySeniorEquipmentSelectList.json", { |
|
266 |
+ // method: "POST", |
|
267 |
+ // headers: { |
|
268 |
+ // 'Content-Type': 'application/json; charset=UTF-8' |
|
269 |
+ // }, |
|
270 |
+ // body: JSON.stringify({ |
|
271 |
+ // agency_id: 'AGENCY01', |
|
272 |
+ // }), |
|
273 |
+ // }).then((response) => response.json()).then((data) => { |
|
274 |
+ // console.log('agencySeniorEquipmentSelectList response : ', data); |
|
275 |
+ // setAgencySeniorEquipmentList(data); |
|
276 |
+ // }).catch((error) => { |
|
277 |
+ // console.log('agencySeniorEquipmentSelectList error : ', error); |
|
278 |
+ // }); |
|
279 |
+ // } |
|
280 |
+ |
|
267 | 281 |
// 대상자 장비 등록 |
268 | 282 |
const seniorEquipmentInsert = () => { |
269 | 283 |
console.log('seniorEquipmentInsert Function Run'); |
284 |
+ |
|
285 |
+ // 대상자 아이디 유효성 검사 |
|
286 |
+ let check = 0; |
|
287 |
+ for(let i = 0; i < seniorList.length; i++) { |
|
288 |
+ // 입력한 데이터가 대상자 목록에 있을 경우 |
|
289 |
+ if(seniorList[i]['user_id'] == seniorEquipment['senior_id']) { |
|
290 |
+ console.log('success: ', seniorList[i]['user_id']); |
|
291 |
+ // 원본 데이터 복사 및 수정 |
|
292 |
+ let data = { |
|
293 |
+ ...seniorEquipment, |
|
294 |
+ user_name: seniorList[i]['user_name'] |
|
295 |
+ } |
|
296 |
+ // 복사 데이터를 원본 데이터에 덮어쓰기 |
|
297 |
+ setSeniorEquipment(data); |
|
298 |
+ |
|
299 |
+ check = 1; |
|
300 |
+ } |
|
301 |
+ } |
|
302 |
+ // 입력한 데이터가 대상자 목록에 없을 경우 |
|
303 |
+ if(check != 1) { |
|
304 |
+ console.log('fail: ', seniorList, seniorEquipment['senior_id']); |
|
305 |
+ alert('존재하지 않는 대상자입니다.'); |
|
306 |
+ return; |
|
307 |
+ } |
|
308 |
+ |
|
270 | 309 |
fetch("/equipment/seniorEquipmentInsert.json", { |
271 | 310 |
method: "POST", |
272 | 311 |
headers: { |
273 | 312 |
'Content-Type': 'application/json; charset=UTF-8' |
274 | 313 |
}, |
275 |
- body: JSON.stringify({ |
|
276 |
- agency_id: 'AGENCY01', |
|
277 |
- }), |
|
314 |
+ body: JSON.stringify(seniorEquipment), |
|
278 | 315 |
}).then((response) => response.json()).then((data) => { |
279 | 316 |
console.log('seniorEquipmentInsert response : ', data); |
280 |
- setSeniorEquipment(data); |
|
317 |
+ // 대상자 장비 데이터 초기화 |
|
318 |
+ setSeniorEquipment({}); |
|
319 |
+ alert('등록이 완료됐습니다.'); |
|
281 | 320 |
}).catch((error) => { |
282 | 321 |
console.log('seniorEquipmentInsert error : ', error); |
322 |
+ alert('등록에 실패했습니다.'); |
|
323 |
+ }); |
|
324 |
+ } |
|
325 |
+ |
|
326 |
+ // 대상자 목록 조회 |
|
327 |
+ const seniorSelectList = () => { |
|
328 |
+ console.log('seniorSelectList Function Run'); |
|
329 |
+ fetch("/user/selectSubjectList.json", { |
|
330 |
+ method: "POST", |
|
331 |
+ headers: { |
|
332 |
+ 'Content-Type': 'application/json; charset=UTF-8' |
|
333 |
+ }, |
|
334 |
+ }).then((response) => response.json()).then((data) => { |
|
335 |
+ console.log('seniorSelectList response : ', data); |
|
336 |
+ setSeniorList(data); |
|
337 |
+ }).catch((error) => { |
|
338 |
+ console.log('seniorSelectList error : ', error); |
|
283 | 339 |
}); |
284 | 340 |
} |
285 | 341 |
|
... | ... | @@ -306,13 +362,34 @@ |
306 | 362 |
|
307 | 363 |
const thead22 = [ |
308 | 364 |
"No", |
365 |
+ "모델 명", |
|
366 |
+ "시리얼 넘버", |
|
367 |
+ "상태", |
|
368 |
+ "대상자", |
|
369 |
+ "대여일", |
|
370 |
+ "반납예정일", |
|
371 |
+ "반납일", |
|
372 |
+ "관리" |
|
373 |
+ ]; |
|
374 |
+ const key22 = [ |
|
375 |
+ "equipment_name", |
|
376 |
+ "equipment_serial_number", |
|
377 |
+ "equipment_state", |
|
378 |
+ "user_name", |
|
379 |
+ "equipment_rental_start_date", |
|
380 |
+ "equipment_rental_end_date", |
|
381 |
+ "equipment_rental_return_date" |
|
382 |
+ ]; |
|
383 |
+ |
|
384 |
+ const thead33 = [ |
|
385 |
+ "No", |
|
309 | 386 |
"장비명", |
310 | 387 |
"시리얼 넘버", |
311 | 388 |
"입고일자", |
312 | 389 |
"납품 기관",//관리기관, 올잇메디 |
313 | 390 |
"대상자",//시행기관 |
314 | 391 |
]; |
315 |
- const key22 = [ |
|
392 |
+ const key33 = [ |
|
316 | 393 |
"No", |
317 | 394 |
"equipment", |
318 | 395 |
"serialNumber", |
... | ... | @@ -320,7 +397,7 @@ |
320 | 397 |
"agency", |
321 | 398 |
"senior", |
322 | 399 |
]; |
323 |
- const content22 = [ |
|
400 |
+ const content33 = [ |
|
324 | 401 |
{ |
325 | 402 |
No: 1, |
326 | 403 |
equipment: "스마트약상자", |
... | ... | @@ -360,36 +437,29 @@ |
360 | 437 |
), |
361 | 438 |
}, |
362 | 439 |
]; |
363 |
- const thead33 = [ |
|
364 |
- "No", |
|
365 |
- "장비명", |
|
366 |
- "시리얼 넘버", |
|
367 |
- "대여일", |
|
368 |
- "배터리 잔량", |
|
369 |
- "보유기관",//관리기관, 올잇메디 |
|
370 |
- "담당자",//시행기관 |
|
371 |
- ]; |
|
372 |
- const key33 = [ |
|
373 |
- "No", |
|
374 |
- "equipment", |
|
375 |
- "serialNumber", |
|
376 |
- "date", |
|
377 |
- "battery", |
|
378 |
- "agency", |
|
379 |
- "protector", |
|
380 |
- ]; |
|
381 |
- const content33 = [ |
|
382 |
- { |
|
383 |
- No: 1, |
|
384 |
- equipment: "스마트약상자", |
|
385 |
- serialNumber: "ABCD-1", |
|
386 |
- date: "2022.12.02", |
|
387 |
- battery: "10%", |
|
388 |
- agency: "A복지관", |
|
389 |
- protector: "김복지" |
|
390 | 440 |
|
391 |
- }, |
|
392 |
- ]; |
|
441 |
+ // 마운트 시 실행 함수 |
|
442 |
+ React.useEffect(() => { |
|
443 |
+ equipmentSelectList(); |
|
444 |
+ |
|
445 |
+ agencyEquipmentSelectList(); |
|
446 |
+ // agencySeniorEquipmentSelectList(); |
|
447 |
+ seniorSelectList(); |
|
448 |
+ }, []) |
|
449 |
+ |
|
450 |
+ // 대상자, 재고 장비 목록 |
|
451 |
+ React.useEffect(() => { |
|
452 |
+ console.log('@@@', agencyEquipmentList); |
|
453 |
+ let data = []; |
|
454 |
+ for(let i = 0; i < agencyEquipmentList.length; i++) { |
|
455 |
+ if(agencyEquipmentList[i]['senior_id'] != null) { |
|
456 |
+ data.push(agencyEquipmentList[i]); |
|
457 |
+ } |
|
458 |
+ } |
|
459 |
+ console.log('@@@data', data); |
|
460 |
+ setAgencySeniorEquipmentList(data); |
|
461 |
+ }, [agencyEquipmentList]) |
|
462 |
+ |
|
393 | 463 |
/********************************** 시행기관 장비 (끝) **********************************/ |
394 | 464 |
|
395 | 465 |
const thead4 = [ |
... | ... | @@ -564,15 +634,6 @@ |
564 | 634 |
/> |
565 | 635 |
</div> |
566 | 636 |
</div> |
567 |
- {/* <Table |
|
568 |
- className={"caregiver-user"} |
|
569 |
- head={thead11} |
|
570 |
- contents={agencyEquipmentList} |
|
571 |
- contentKey={key11} |
|
572 |
- onClick={() => { |
|
573 |
- navigate("/EquipmentManagementSelectOne"); |
|
574 |
- }} |
|
575 |
- /> */} |
|
576 | 637 |
<table class = "caregiver-user"> |
577 | 638 |
<thead> |
578 | 639 |
<tr> |
... | ... | @@ -614,21 +675,71 @@ |
614 | 675 |
}, |
615 | 676 |
{ |
616 | 677 |
id: 5, |
617 |
- title: "재고 장비(시행기관)" + "(" + ")", //에이젼시로 들어가면 미사용 장비(5)로 나와야 함 |
|
678 |
+ title: "대상자 장비(시행기관)" + "(" + agencySeniorEquipmentList.length + ")", |
|
618 | 679 |
description: ( |
619 | 680 |
<div> |
620 |
- <Table |
|
621 |
- className={"caregiver-user"} |
|
622 |
- head={thead22} |
|
623 |
- contents={content22} |
|
624 |
- contentKey={key22} |
|
625 |
- /> |
|
681 |
+ {/* <table class = "caregiver-user"> |
|
682 |
+ <thead> |
|
683 |
+ <tr> |
|
684 |
+ {thead22.map((i) => { |
|
685 |
+ return <th>{i}</th>; |
|
686 |
+ })} |
|
687 |
+ </tr> |
|
688 |
+ </thead> |
|
689 |
+ <tbody> |
|
690 |
+ {agencySeniorEquipmentList.map((item, index) => { |
|
691 |
+ return ( |
|
692 |
+ <tr key={index}> |
|
693 |
+ <td>{agencySeniorEquipmentList.length - index}</td> |
|
694 |
+ {key22.map((kes) => { |
|
695 |
+ return <td>{item[kes]}</td> |
|
696 |
+ })} |
|
697 |
+ <td> |
|
698 |
+ <Button |
|
699 |
+ className={"btn-small green-btn"} |
|
700 |
+ btnName={"삭제"} |
|
701 |
+ onClick={seniorMatchDelete} |
|
702 |
+ /> |
|
703 |
+ </td> |
|
704 |
+ </tr> |
|
705 |
+ ); |
|
706 |
+ })} |
|
707 |
+ </tbody> |
|
708 |
+ </table> */} |
|
709 |
+ <table class = "caregiver-user"> |
|
710 |
+ <thead> |
|
711 |
+ <tr> |
|
712 |
+ {thead22.map((i) => { |
|
713 |
+ return <th>{i}</th>; |
|
714 |
+ })} |
|
715 |
+ </tr> |
|
716 |
+ </thead> |
|
717 |
+ <tbody> |
|
718 |
+ {agencySeniorEquipmentList.map((item, index) => { |
|
719 |
+ return ( |
|
720 |
+ <tr key={index}> |
|
721 |
+ <td>{agencySeniorEquipmentList.length - index}</td> |
|
722 |
+ {key22.map((kes) => { |
|
723 |
+ return <td>{item[kes]}</td> |
|
724 |
+ })} |
|
725 |
+ <td> |
|
726 |
+ <Button |
|
727 |
+ className={"btn-small green-btn"} |
|
728 |
+ btnName={"삭제"} |
|
729 |
+ onClick={seniorMatchDelete} |
|
730 |
+ /> |
|
731 |
+ </td> |
|
732 |
+ </tr> |
|
733 |
+ ); |
|
734 |
+ })} |
|
735 |
+ </tbody> |
|
736 |
+ </table> |
|
626 | 737 |
</div> |
627 | 738 |
), |
628 | 739 |
}, |
629 | 740 |
{ |
630 | 741 |
id: 6, |
631 |
- title: "납품 장비(시행기관)" + "(" + ")",//에이젼시로 들어가면 내가 사용중인 장비(5)로 나와야 함 |
|
742 |
+ title: "재고 장비(시행기관)" + "(" + ")", |
|
632 | 743 |
description: ( |
633 | 744 |
<Table |
634 | 745 |
className={"caregiver-user"} |
... | ... | @@ -677,11 +788,13 @@ |
677 | 788 |
<tbody> |
678 | 789 |
<tr> |
679 | 790 |
<td> |
680 |
- <input type="text" list="senior_list" /> |
|
791 |
+ <input type="text" list="senior_list" placeholder="대상자를 입력해 주세요" onChange={seniorEquipmentSeniorInsert}/> |
|
681 | 792 |
<datalist id="senior_list"> |
682 |
- <option value="대상자1(ID)"></option> |
|
683 |
- <option value="대상자2(ID)"></option> |
|
684 |
- <option value="대상자3(ID)"></option> |
|
793 |
+ {seniorList.map((item) => { |
|
794 |
+ // return <option value={item['user_name'] + " (" + item['user_id'] + ")"}></option> |
|
795 |
+ return <option value={item['user_id']}>{item['user_name']}</option> |
|
796 |
+ |
|
797 |
+ })} |
|
685 | 798 |
</datalist> |
686 | 799 |
</td> |
687 | 800 |
<td> |
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?