
File name
Commit message
Commit date
2023-05-06
2023-05-06
2023-04-18
File name
Commit message
Commit date
2023-04-18
2023-05-06
File name
Commit message
Commit date
2023-04-18
2023-04-18
File name
Commit message
Commit date
import React from "react";
import { useNavigate, useLocation } from "react-router";
import { useSelector } from "react-redux";
import SubTitle from "../../component/SubTitle.jsx";
import ContentTitle from "../../component/ContentTitle.jsx";
import CommonUtil from "../../../resources/js/CommonUtil.js";
export default function RiskSet() {
const navigate = useNavigate();
const location = useLocation();
//전역 변수 저장 객체
const state = useSelector((state) => {return state});
const defaultGovernmentId = CommonUtil.isEmpty(state.loginUser) ? null : state.loginUser['government_id'];
const riskStandardInit = {
'government_id': defaultGovernmentId,
'risk_standard_type': null,
'risk_standard_cycle': null,
'risk_standard_start_value': null,
'risk_standard_end_value': null
};
//위험 기준 정보
const [riskStandard, setRiskStandard] = React.useState(riskStandardInit);
const riskStandardRef = React.useRef({...riskStandard});
//위험 기준 정보
const [sipal, setSipal] = React.useState({
'government_id': defaultGovernmentId,
'risk_standard_type': null,
'risk_standard_cycle': null,
'risk_standard_start_value': null,
'risk_standard_end_value': null
});
//위험 기준 유효성 검사
const riskStandardValidation = () => {
const target = riskStandard;
const targetRef = riskStandardRef;
if (CommonUtil.isEmpty(target['risk_standard_start_value']) == true) {
targetRef.current['risk_standard_start_value'].focus();
alert("위험 기준 값을 입력해주세요.");
return false;
}
return true;
}
//위험 기준 등록
const riskStandardInsert = () => {
if (riskStandardValidation() == false) {
return;
}
fetch("/danger/riskStandardInsert.json", {
method: "POST",
headers: {
'Content-Type': 'application/json; charset=UTF-8'
},
body: JSON.stringify(riskStandard),
}).then((response) => response.json()).then((data) => {
console.log("위험 기준 등록 결과(건수) : ", data);
if (data > 0) {
riskStandardSelectList();
alert("등록완료");
} else {
alert("등록에 실패하였습니다. 관리자에게 문의바랍니다.");
}
}).catch((error) => {
console.log('riskStandardInsert() /danger/riskStandardInsert.json error : ', error);
});
}
//위험 기준 수정
const riskStandardUpdate = () => {
if (riskStandardValidation() == false) {
return;
}
fetch("/danger/riskStandardUpdate.json", {
method: "POST",
headers: {
'Content-Type': 'application/json; charset=UTF-8'
},
body: JSON.stringify(riskStandard),
}).then((response) => response.json()).then((data) => {
console.log("위험 기준 수정 결과(건수) : ", data);
if (data > 0) {
//riskStandardSelectList();
alert("수정완료");
} else {
alert("수정에 실패하였습니다. 관리자에게 문의바랍니다.");
}
}).catch((error) => {
console.log('riskStandardUpdate() /danger/riskStandardUpdate.json error : ', error);
});
}
//위험 기준 목록 정보
const [riskStandardList, setRiskStandardList] = React.useState([]);
//위험 기준 목록 조회
const riskStandardSelectList = () => {
fetch("/danger/riskStandardSelectList.json", {
method: "POST",
headers: {
'Content-Type': 'application/json; charset=UTF-8'
},
body: JSON.stringify(riskStandard),
}).then((response) => response.json()).then((data) => {
console.log("위험 기준 목록 조회 결과(건수) : ", data);
setRiskStandardList(data);
setRiskStandard(data[tabIndex]);
}).catch((error) => {
console.log('riskStandardSelectList() /danger/riskStandardSelectList.json error : ', error);
});
}
React.useEffect(() => {
riskStandardSelectList();
console.log('riskStandard : ', riskStandard);
}, []);
//현재 탭 Index
const [tabIndex, setTabIndex] = React.useState(0);
//탭 초기화
const tab = [{
title: `온도`,
content: (
<>
<table className="risk-table">
<tbody>
<tr>
<td style={{textAlign: 'right'}}>최근 온도가</td>
<td>
<input type="number" value={riskStandard['risk_standard_start_value']}
onChange={(e) => {
riskStandard['risk_standard_start_value'] = e.target.value;
setRiskStandard({...riskStandard});
}}
ref={el => riskStandardRef.current['risk_standard_start_value'] = el}
/>
</td>
<td style={{textAlign: 'left'}}>이하 일 경우 위험알림으로 지정합니다.</td>
<td style={{textAlign: 'left'}}>
<button className="btn-small gray-btn" onClick={() => {riskStandardUpdate()}}>저장</button>
</td>
</tr>
</tbody>
</table>
</>
)
}, {
title: `복약`,
content: (
<>
<table className="risk-table">
<tbody>
<tr>
<td style={{textAlign: 'right'}}>최근 미복약 횟수가</td>
<td>
<input type="number" value={riskStandard['risk_standard_start_value']}
onChange={(e) => {
riskStandard['risk_standard_start_value'] = e.target.value;
setRiskStandard({...riskStandard});
}}
ref={el => riskStandardRef.current['risk_standard_start_value'] = el}
/>
</td>
<td style={{textAlign: 'left'}}>회 이상일 경우 위험알림으로 지정합니다.</td>
<td style={{textAlign: 'left'}}>
<button className="btn-small gray-btn" onClick={() => {riskStandardUpdate()}}>저장</button>
</td>
</tr>
</tbody>
</table>
</>
)
}, {
title: `배터리`,
content: (
<>
<table className="risk-table">
<tbody>
<tr>
<td style={{textAlign: 'right'}}>배터리 잔량이 최근</td>
<td>
<input type="number" value={riskStandard['risk_standard_start_value']}
onChange={(e) => {
riskStandard['risk_standard_start_value'] = e.target.value;
setRiskStandard({...riskStandard});
}}
ref={el => riskStandardRef.current['risk_standard_start_value'] = el}
/>
</td>
<td style={{textAlign: 'left'}}>% 이하일 경우 위험알림으로 지정합니다.</td>
<td style={{textAlign: 'left'}}>
<button className="btn-small gray-btn" onClick={() => {riskStandardUpdate()}}>저장</button>
</td>
</tr>
</tbody>
</table>
</>
)
}];
return (
<main>
<ContentTitle contentTitle={"위험 기준 관리 "} />
<div className="tab-container">
<ul className="tab-menu flex-start">
{tab.map((item, idx) => { return (
<li onClick={() => {setTabIndex(idx); setRiskStandard(riskStandardList[idx]);}} className={idx == tabIndex ? 'active' : null}>
{item.title}
</li>
)})}
</ul>
<div className="content-wrap">
<SubTitle className="margin-bottom" color={"#333333"}
explanation={"지정한 기준에 따라 메인 화면에 위험 알림 대상자 수를 표시하여 줍니다."}/>
<ul className="tab-content">
<li>
{tab[tabIndex].content}
</li>
</ul>
</div>
</div>
</main>
);
}