import React from "react"; import Table from "../../component/Table.jsx"; import Button from "../../component/Button.jsx"; import SubTitle from "../../component/SubTitle.jsx"; import Modal from "../../component/Modal.jsx"; import Category from "../../component/Category.jsx"; import { useNavigate } from "react-router"; export default function EquipmentManagementSelect() { // 시스템 코드 - 장비 상태 const [equipmentStates, setEquipmentStates] = React.useState({}); // 시스템 코드 - 장비 대여 상태 const [equipmentRentalStates, setEquipmentRentalStates] = React.useState({}); const [modalOpen, setModalOpen] = React.useState(false); const openModal = () => { setModalOpen(true); }; const closeModal = () => { setModalOpen(false); }; const navigate = useNavigate(); // 시스템 코드 - 장비 상태 조회 const equipmentStatesSelect = () => { console.log('equipmentStatesSelect Function Run'); //fetch post fetch("/common/systemCode/equipmentStatesSelect.json", { method: "POST", headers: { 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({}) }).then((response) => response.json()).then((data) => { console.log('equipmentStatesSelect response : ', data); setEquipmentStates(data); }).catch((error) => { console.log('equipmentStatesSelect error : ', error); }); } // 시스템 코드 - 장비 대여 상태 조회 const equipmentRentalStatesSelect = () => { console.log('equipmentRentalStatesSelect Function Run'); //fetch post fetch("/common/systemCode/equipmentRentalStatesSelect.json", { method: "POST", headers: { 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({}) }).then((response) => response.json()).then((data) => { console.log('equipmentRentalStatesSelect response : ', data); setEquipmentRentalStates(data); }).catch((error) => { console.log('equipmentRentalStatesSelect error : ', error); }); //fetch get /* fetch('/common/systemCode/equipmentRentalStatesSelect.json') .then((response) => response.json()).then((data) => { console.log('equipmentRentalStatesSelect response : ', data); }).catch((error) => { console.log('equipmentRentalStatesSelect error : ', error); }); */ //axios get /* axios.get('/common/systemCode/equipmentRentalStatesSelect.json') .then(function (response) { console.log('equipmentRentalStatesSelect : ', response.data); }).catch(function (error) { console.log("equipmentRentalStatesSelect - error : ", error); }); */ //axios post /* axios({ url: '/common/systemCode/equipmentRentalStatesSelect.json', method: 'post', headers: { 'Content-Type': "application/json; charset=UTF-8", }, data: {} }).then(function (response) { console.log("equipmentRentalStatesSelect - response : ", response.data); }).catch(function (error) { console.log("equipmentRentalStatesSelect - error : ", error); }); */ } // 장비 비매칭 대상자 목록 조회 const equipmentNotMatchSeniorSelectList = () => { console.log('seniorSelectList Function Run'); fetch("/user/equipmentMatchStateSelectListBySenior.json", { method: "POST", headers: { 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({ agency_id: 'AGENCY01', matchState: false }) }).then((response) => response.json()).then((data) => { console.log('equipmentNotMatchSeniorSelectList response : ', data); setEquipmentNotMatchSeniorList(data); }).catch((error) => { console.log('equipmentNotMatchSeniorSelectList error : ', error); }); } // 담당자 목록 조회 const workerSelectList = () => { console.log('workerSelectList Function Run'); fetch("/user/selectUserList.json", { method: "POST", headers: { 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({ user_code: 'WORKER01' }) }).then((response) => response.json()).then((data) => { console.log('workerSelectList response : ', data); setWorkerList(data); }).catch((error) => { console.log('workerSelectList error : ', error); }); } /********************************** 관리자 장비 (시작) **********************************/ //로그 확인 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 = () => { console.log('equipmentSelectList Function Run'); fetch("/equipment/equipmentSelectList.json", { method: "POST", headers: { 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({}) }).then((response) => response.json()).then((data) => { console.log('equipmentSelectList response : ', data); setEquipmentList(data); }).catch((error) => { console.log('equipmentSelectList error : ', error); }); } // 장비 임시 데이터 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", "모델 명", "시리얼 넘버", "입고 일자", "상태", "보유 기관", "시행기관 관리", ]; const key1 = [ "equipment_name", "equipment_serial_number", "equipment_stock_date", "equipment_state", "agency_name", ]; const thead2 = [ "No", "장비명", "시리얼 넘버", "입고일자", "납품 기관",//관리기관, 올잇메디 "대상자",//시행기관 ]; const key2 = [ "No", "equipment", "serialNumber", "date", "agency", "senior", ]; const content2 = [ { No: 1, equipment: "스마트약상자", serialNumber: "ABCD-1", date: "2022.12.02", agency: (