최정임 최정임 2023-02-28
Merge branch 'admin' of http://210.180.118.83/yjryu/senior_care_system into admin
@d846b43a50638a88fe903a9952527064b3dad227
client/views/pages/equipment/EquipmentManagementSelect.jsx
--- client/views/pages/equipment/EquipmentManagementSelect.jsx
+++ client/views/pages/equipment/EquipmentManagementSelect.jsx
@@ -22,26 +22,10 @@
 		setModalOpen(false);
 	};
 
-	const [modalOpen3, setModalOpen3] = React.useState(false);
-	const openModal3 = () => {
-		// equipmentListData();
-		setModalOpen3(true);
-	};
-	const closeModal3 = () => {
-		setModalOpen3(false);
-	};
-
-	// 대상자 매칭 반납
-	const seniorMatchDelete = () => {
-		if (confirm('아니다') == false) {
-			return;
-		}
-		// 대상자 매칭 반납 함수 사용하기
-	};
 
 	const navigate = useNavigate();
 
-	// 시스템 코드 - 장비 대여 상태 조회
+	// 시스템 코드 - 장비 상태 조회
 	const equipmentStatesSelect = () => {
 		console.log('equipmentStatesSelect Function Run');
 
@@ -149,8 +133,47 @@
 	}
 
 	/********************************** 관리자 장비 (시작) **********************************/
+	//로그 확인
+	const logCheck = () => {
+		console.log('equipment - change: ', equipment);
+	};
+
+	// 장비 빈 초기값
+	const equipment_ = {
+		equipment_serial_number: null,
+		equipment_type: null,
+		equipment_name: null,
+		equipment_state: null,
+		equipment_product_date: null,
+		equipment_stock_date: null,
+	}
+
+
 	// 관리자 전체 장비 목록
 	const [equipmentList, setEquipmentList] = React.useState([]);
+	// 장비
+	const [equipment, setEquipment] = React.useState({
+		equipment_serial_number: null,
+		equipment_type: null,
+		equipment_name: null,
+		equipment_state: null,
+		equipment_product_date: null,
+		equipment_stock_date: null,
+	});
+	// 장비 등록 모달창
+	const [equipmentInsertModal, setEquipmentInsertModal] = React.useState(false);
+
+	// 장비 등록 모달창 열기
+	const equipmentInsertModalOpen = () => {
+		setEquipmentInsertModal(true);
+	};
+	// 장비 등록 모달창 닫기
+	const equipmentInsertModalClose = () => {
+		// 장비 초기화
+		setEquipment(equipment_);
+		setEquipmentInsertModal(false);
+	};
+
 
 	// 관리자 전체 장비 목록 조회
 	const equipmentSelectList = () => {
@@ -169,6 +192,85 @@
 		});
 	}
 
+	// 장비 임시 데이터
+	const equipmentChange = (e) => {
+		console.log('equipmentChange: ', e.target.name, e.target.value);
+
+		// 원본 데이터 복사 및 수정
+		let data = {};
+
+		// 장비 종류가 '디지털 약상자'일 경우 모델 명에 '스마트 약상자' 입력
+		if(e.target.name == "equipment_type" && e.target.value == "DIGITAL_MEDIBOX") {
+			data = {
+				...equipment,
+				[e.target.name]: e.target.value,
+				equipment_name: "스마트 약상자"
+			}
+		} else { // 장비 종류 이외의 이벤트 핸들러일 경우
+			data = {
+				...equipment,
+				[e.target.name]: e.target.value
+			}
+		}
+		// 복사 데이터를 원본 데이터에 덮어쓰기
+		setEquipment(data);
+	}
+
+	// 장비 등록
+	const equipmentInsert = () => {
+		console.log('equipmentInsert Function Run');
+
+		// 유효성 검사
+		for(let i = 0; i < equipmentInsertHead.length; i++) {
+			if(equipment[equipmentInsertKey[i]] == null) {
+				alert(equipmentInsertHead[i] +'를 선택해 주세요');
+				return;
+			}
+		}
+
+		fetch("/equipment/equipmentInsert.json", {
+			method: "POST",
+			headers: {
+				'Content-Type': 'application/json; charset=UTF-8'
+			},
+			body: JSON.stringify(equipment),
+		}).then((response) => response.json()).then((data) => {
+			console.log('equipmentInsert response : ', data);
+			// 장비 목록 조회
+			equipmentSelectList();
+			// 장비 초기화
+			setEquipment(equipment_);
+			// 모달창 닫기
+			setEquipmentInsertModal(false);
+
+			alert('등록이 완료됐습니다.');
+		}).catch((error) => {
+			console.log('equipmentInsert error : ', error);
+			alert('등록에 실패했습니다.');
+		});
+	}
+
+	// 장비 등록 th
+	const equipmentInsertHead = [
+		"종류",
+		"모델 명",
+		"시리얼 넘버",
+		"생산 일자",
+		"입고 일자",
+	]
+
+	// 장비 등록 key
+	const equipmentInsertKey = [
+		"equipment_type",
+		"equipment_name",
+		"equipment_serial_number",
+		"equipment_product_date",
+		"equipment_stock_date",
+	]
+
+	//스마트 약상자 모델명 리스트 (예시)
+	const smartMediBoxNameList = ["SMB-NB100", "NB100", "SDC-2000", "SDC-2002"]
+
 	const thead1 = [
 		"No",
 		"모델 명",
@@ -176,7 +278,7 @@
 		"입고 일자",
 		"상태",
 		"보유 기관",
-		"관리",
+		"시행기관 관리",
 	];
 	const key1 = [
 		"equipment_name",
@@ -277,11 +379,6 @@
 
 
 	/********************************** 시행기관 장비 (시작) **********************************/
-	//로그 확인
-	const logCheck = () => {
-		console.log('seniorMatchListByEquipment - change: ', seniorMatchListByEquipment.length);
-	};
-
 	// 시행기관 전체 장비 목록
 	const [agencyEquipmentList, setAgencyEquipmentList] = React.useState([]);
 	// 시행기관 대상자 장비 목록
@@ -303,7 +400,6 @@
 	const [equipmentNotMatchSeniorList, setEquipmentNotMatchSeniorList] = React.useState([]);
 	// 담당자 목록
 	const [workerList, setWorkerList] = React.useState([]);
-
 
 	// 대상자 장비 등록 모달창 열기
 	const seniorMatchInsertModalOpen = (item) => {
@@ -698,15 +794,16 @@
 
 	// 마운트 시 실행 함수
 	React.useEffect(() => {
+		// 공통
 		equipmentStatesSelect();
 		equipmentRentalStatesSelect();
 		equipmentNotMatchSeniorSelectList();
 		workerSelectList();
 
-		//관리자
+		// 관리자
 		equipmentSelectList();
 
-		//시행기관
+		// 시행기관
 		agencyEquipmentSelectList();
 		agencySeniorEquipmentSelectList();
 		agencyStockEquipmentSelectList();
@@ -754,8 +851,13 @@
 						<div className="btn-wrap flex-end margin-bottom ">
 							<Button
 								className={"btn-small gray-btn"}
+								btnName={"LOG"}
+								onClick={logCheck}
+							/>
+							<Button
+								className={"btn-small gray-btn"}
 								btnName={"등록"}
-								onClick={openModal3}
+								onClick={equipmentInsertModalOpen}
 							/>
 						</div>
 					</div>
@@ -783,6 +885,13 @@
 										<tr key={index}>
 											<td>{equipmentList.length - index}</td>
 											{key1.map((kes) => {
+												if(kes == "equipment_state") {
+													Object.keys(equipmentStates).map((key, idx) => {
+														if(item[kes] == key) {
+															item[kes] = Object.values(equipmentStates)[idx];
+														}
+													})
+												}
 												return <td>{item[kes]}</td>
 											})}
 											<td>
@@ -1001,10 +1110,72 @@
 	];
 
 	//시작 탭 설정
-	const [index, setIndex] = React.useState(4);
+	const [index, setIndex] = React.useState(1);
 
 	return (
 		<main>
+
+			<Modal open={equipmentInsertModal} close={equipmentInsertModalClose} header="장비 등록">
+				<div className="board-wrap">
+					<div>
+						<table className="flex70 margin-bottom">
+							<tbody className="equipment-insert">
+								<tr>
+									<th>종류</th>
+									<td colSpan={5}>
+										<select defaultValue={""} name="equipment_type" onChange={equipmentChange}>
+											<option value="" disabled>선택</option>
+											<option value="DIGITAL_MEDIBOX">디지털 약상자</option>
+											<option value="ECG" disabled>심전도계</option>
+											<option value="SPHYGMOMANOMETER" disabled>혈압계</option>
+										</select>
+									</td>
+								</tr>
+								<tr>
+									<th>모델 명</th>
+									<td colSpan={5}>
+										<input type="text" value={equipment['equipment_name']} id="equipmentName" name="equipment_name" placeholder="모델 명을 입력해 주세요" onChange={equipmentChange}></input>
+										{/* {smartMediBoxNameList.map((item) => {
+											return (
+												<span>
+													<input type="radio" id={item} name="equipment_name" value={item}></input>
+													<label for={item}>{item}</label>
+												</span>
+											)
+										})} */}
+									</td>
+								</tr>
+								<tr>
+									<th>시리얼 넘버</th>
+									<td colSpan={5}>
+										<input type="text" name="equipment_serial_number" placeholder="S/N을 입력해 주세요" onChange={equipmentChange}/>
+									</td>
+								</tr>
+								<tr>
+									<th>생산 일자</th>
+									<td colSpan={5}>
+										<input type="date" name="equipment_product_date" onChange={equipmentChange}/>
+									</td>
+								</tr>
+								<tr>
+									<th>입고 일자</th>
+									<td colSpan={5}>
+										<input type="date" name="equipment_stock_date" onChange={equipmentChange}/>
+									</td>
+								</tr>
+							</tbody>
+						</table>
+					</div>
+					<div className="flex-center">
+						<Button
+							className={"btn-small gray-btn"}
+							btnName={"저장"}
+							onClick={equipmentInsert}
+						/>
+					</div>
+				</div>
+			</Modal>
+
 			<Modal open={modalOpen} close={closeModal} header="납품 기관 선택">
 				<div className="board-wrap">
 					<div>
@@ -1020,42 +1191,6 @@
 							className={"btn-100 gray-btn"}
 							btnName={"닫기"}
 							onClick={closeModal}
-						/>
-					</div>
-				</div>
-			</Modal>
-
-			<Modal open={modalOpen3} close={closeModal3} header="장비 등록">
-				<div className="board-wrap">
-					<div>
-						<table className="flex70 margin-bottom">
-							<tbody className="equipment-insert">
-								<tr>
-									<th>장비명</th>
-									<td colSpan={5}>
-										<input type="text" name="" id="" />
-									</td>
-								</tr>
-								<tr>
-									<th>시리얼 넘버</th>
-									<td colSpan={5}>
-										<input type="text" name="" id="" />
-									</td>
-								</tr>
-								<tr>
-									<th>입고일자</th>
-									<td colSpan={5}>
-										<input type="text" name="" id="" />
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
-					<div className="flex-center">
-						<Button
-							className={"btn-small gray-btn"}
-							btnName={"저장"}
-							onClick={closeModal3}
 						/>
 					</div>
 				</div>
Add a comment
List