박정하 박정하 2023-07-06
230706 박정하 통계 및 보호자 관련 작업
@af3e4756d383f6633c848d9db4c648d1bbd3c8d4
client/views/component/Modal_Guardian.jsx
--- client/views/component/Modal_Guardian.jsx
+++ client/views/component/Modal_Guardian.jsx
@@ -85,6 +85,80 @@
     });
   }
 
+  // 연락처 정보 검색
+  const [isPhoneCheck, setIsPhoneCheck] = React.useState(false);
+  // 연락처 정보 검색 결과
+  const [searchGuardian, setSearchGuardian] = React.useState({});
+
+  const insertGuardianValueChange = (targetKey, value) => {
+    searchGuardian[targetKey] = value;
+    setGuardian(searchGuardian);
+  }
+
+  const userPhoneCheck = () => {
+    if (CommonUtil.isEmpty(searchGuardian['user_id']) == true) {
+      guardianRef.current['gardian_phonenumber'].focus();
+      alert("연락처를 입력해 주세요.");
+      return false;
+    }
+
+    fetch("/user/userSelectOne.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(searchGuardian),
+    }).then((response) => response.json()).then((data) => {
+      console.log("정보 검색 결과 : ", data);
+      if (CommonUtil.isEmpty(data) == true) {
+        setIsPhoneCheck(false);
+        guardianRef.current['gardian_phonenumber'].focus();
+        alert("존재하지 않는 보호자 연락처입니다.");
+      } else {
+        if (data['authority'] == 'ROLE_GUARDIAN') {
+          setIsPhoneCheck(true);
+          alert("보호자 정보 검색에 성공했습니다.");
+          setSearchGuardian(data);
+        } else {
+          setIsPhoneCheck(false);
+          guardianRef.current['gardian_phonenumber'].focus();
+          alert("보호자의 연락처가 아닙니다.");
+        }
+      }
+    }).catch((error) => {
+      console.log('userIdCheck() /user/userSelectOne.json error : ', error);
+    });
+  }
+
+  // 기존 보호자 등록
+  const guardianNewInsert = () => {
+    searchGuardian['senior_id'] = seniorId;
+    searchGuardian['guardian_id'] = searchGuardian['user_id'];
+
+    if (CommonUtil.isEmpty(guardian['guardian_id']) && isPhoneCheck == false) {
+      alert("연락처 검색을 해주세요.");
+      return false;
+    }
+
+    fetch("/user/seniorGuardianInsert.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(searchGuardian),
+    }).then((response) => response.json()).then((data) => {
+      console.log("시니어 등록 결과(건수) : ", data);
+      if (data > 0) {
+        alert("등록완료");
+        guardianManagementCallback();
+      } else {
+        alert("등록에 실패하였습니다. 관리자에게 문의바랍니다.");
+      }
+    }).catch((error) => {
+      console.log('guardianNewInsert() /user/seniorGuardianInsert.json error : ', error);
+    });
+  }
+
   //보호자 등록 유효성 검사
   const guardianInsertValidation = () => {
     if (CommonUtil.isEmpty(guardian['user_name']) == true) {
@@ -129,12 +203,12 @@
 
     return true;
   }
+
   //보호자 등록
   const guardianInsert = () => {
     if (guardianInsertValidation() == false) {
       return;
     }
-
     fetch("/user/guardianInsert.json", {
       method: "POST",
       headers: {
@@ -184,10 +258,6 @@
     if (confirm("보호자를 삭제하시겠습니까?") == false) {
       return;
     }
-    if (guardianInsertValidation() == false) {
-      return;
-    }
-
     fetch("/user/guardianDelete.json", {
       method: "POST",
       headers: {
@@ -203,11 +273,9 @@
         alert("삭제에 실패하였습니다. 관리자에게 문의바랍니다.");
       }
     }).catch((error) => {
-      console.log('guardianInsert() /user/guardianInsert.json error : ', error);
+      console.log('guardianDelete() /user/guardianDelete.json error : ', error);
     });
   }
-
-
 
   //주소 검색 결과 객체
   const [jusoList, setJusoList] = React.useState({
@@ -320,169 +388,240 @@
             }
 
             {CommonUtil.isEmpty(guardian['guardian_id']) && !isNewGuardian ? (
-              <table className="margin-bottom2 senior-insert">
-                <tr>
-                  <th><span style={{ color: "red" }}>*</span>연락처 검색</th>
-                  <td colSpan={3}>
-                    <input type="number" maxLength="11" style={{ width: 'calc(100% - 160px)' }}
-                      value={guardian['user_phonenumber']}
-                      onChange={(e) => { guardianValueChange('user_phonenumber', e.target.value); setIsIdCheck(false); }}
-                      ref={el => guardianRef.current['user_phonenumber'] = el}
-                    />
-                    <button className={"red-btn btn-large"} onClick={userIdCheck}>
-                      정보검색
-                    </button>
-                  </td>
-                </tr>
-              </table>
-            ) : null}
+              <>
+                <table className="margin-bottom2 senior-insert">
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>연락처 검색</th>
+                    <td colSpan={3}>
+                      <input type="number" maxLength="11" style={{ width: 'calc(100% - 160px)' }}
+                        value={searchGuardian['user_phonenumber']}
+                        onChange={(e) => { insertGuardianValueChange('user_id', e.target.value); setIsPhoneCheck(false); }}
+                        ref={el => guardianRef.current['gardian_phonenumber'] = el}
+                      />
+                      <button className={"red-btn btn-large"} onClick={userPhoneCheck}>
+                        정보검색
+                      </button>
+                    </td>
+                  </tr>
+                </table>
 
-            <table className="margin-bottom2 senior-insert">
-              <tr>
-                <th><span style={{ color: "red" }}>*</span>이름</th>
-                <td>
-                  <input type="text"
-                    value={guardian['user_name']}
-                    onChange={(e) => { guardianValueChange('user_name', e.target.value) }}
-                    ref={el => guardianRef.current['user_name'] = el}
-                  />
-                </td>
-                <th><span style={{ color: "red" }}>*</span>성별</th>
-                <td className=" gender">
-                  <div className="flex-start">
-                    <input type="radio" id="user_gender_m" name="user_gender" value="남"
-                      onChange={(e) => { e.target.checked ? guardianValueChange('user_gender', e.target.value) : null }}
-                      ref={el => guardianRef.current['user_gender']['m'] = el}
-                    />
-                    <label for="user_gender_m">남</label>
-                  </div>
-                  <div className="flex-start">
-                    <input type="radio" id="user_gender_f" name="user_gender" value="여"
-                      onChange={(e) => { e.target.checked ? guardianValueChange('user_gender', e.target.value) : null }}
-                      ref={el => guardianRef.current['user_gender']['f'] = el}
-                    />
-                    <label for="user_gender_f">여</label>
-                  </div>
-                </td>
-              </tr>
-              <tr>
-                <th><span style={{ color: "red" }}>*</span>생년월일</th>
-                <td>
-                  <div className="flex">
-                    <input type='date'
-                      value={guardian['user_birth']}
-                      onChange={(e) => { guardianValueChange('user_birth', e.target.value) }}
-                      ref={el => guardianRef.current['user_birth'] = el}
-                    />
-                  </div>
-                </td>
-              </tr>
-              {isNewGuardian ? (
-                <tr>
-                  <th><span style={{ color: "red" }}>*</span>연락처</th>
-                  <td colSpan={3}>
-                    {CommonUtil.isEmpty(guardian['guardian_id']) ?
-                      <>
-                        <input type="number" maxLength="11" style={{ width: 'calc(100% - 160px)' }}
-                          value={guardian['user_phonenumber']}
-                          onChange={(e) => { guardianValueChange('user_phonenumber', e.target.value); setIsIdCheck(false); }}
-                          ref={el => guardianRef.current['user_phonenumber'] = el}
+                <table className="margin-bottom2 senior-insert">
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>이름</th>
+                    <td>
+                      <input type="text"
+                        value={searchGuardian['user_name']}
+                        disabled
+                      />
+                    </td>
+                    <th><span style={{ color: "red" }}>*</span>성별</th>
+                    <td className=" gender">
+                      <div className="flex-start">
+                        <input type="radio" id="user_gender_m" name="user_gender" value="남" disabled checked={searchGuardian['user_gender'] == "남"} />
+                        <label for="user_gender_m">남</label>
+                      </div>
+                      <div className="flex-start">
+                        <input type="radio" id="user_gender_f" name="user_gender" value="여" disabled checked={searchGuardian['user_gender'] == "여"} />
+                        <label for="user_gender_f">여</label>
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>생년월일</th>
+                    <td>
+                      <div className="flex">
+                        <input type='date'
+                          value={searchGuardian['user_birth']}
+                          disabled
                         />
-                        <button className={"red-btn btn-large"} onClick={userIdCheck}>
-                          중복확인
-                        </button>
-                      </>
-                      : <input type="number" maxLength="11" disabled
-                        value={guardian['user_phonenumber']}
-                      />}
-                  </td>
-                </tr>
-              ) : null}
-              <tr>
-                <th><span style={{ color: "red" }}>*</span>주소</th>
-                <td colSpan={3}>
-                  <div>
-                    <input type="text" style={{ width: 'calc(100% - 160px)' }}
-                      value={guardian['user_address']} disabled={CommonUtil.isEmpty(guardian['zip_no']) == false}
-                      onChange={(e) => { guardianValueChange('user_address', e.target.value) }}
-                      onKeyUp={(e) => { e.key == 'Enter' ? jusoSearch() : null }}
-                      ref={el => guardianRef.current['user_address'] = el}
-                    />
-                    {CommonUtil.isEmpty(guardian['zip_no'])
-                      ? <button className={"red-btn btn-large"} onClick={() => { jusoSearch() }}>주소검색</button>
-                      : <button className={"gray-btn btn-large"} onClick={() => { guardianValueChange('zip_no', null) }}>다시검색</button>
-                    }
-                  </div>
-                  {CommonUtil.isEmpty(jusoList.juso) == false && CommonUtil.isEmpty(guardian['zip_no']) ?
-                    <div>
-                      <ul className="list-box" style={{ width: '100%' }}>
-                        {CommonUtil.isEmpty(jusoList.juso) == false ? jusoList.juso.map((item, idx) => {
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>주소</th>
+                    <td colSpan={3}>
+                      <input type="text"
+                        value={searchGuardian['user_address']}
+                        disabled
+                      />
+                    </td>
+                  </tr>
+
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>대상자와의 관계</th>
+                    <td colSpan={3}>
+                      <select onChange={(e) => { insertGuardianValueChange('senior_relationship', e.target.value) }}
+                        ref={el => guardianRef.current['senior_relationship'] = el}>
+                        {relationshipList.map((relationship, idx) => {
                           return (
-                            <li className={guardian['zip_no'] == item['zipNo'] ? 'active' : null} onClick={() => {
-                              guardian['zip_no'] = item['zipNo']; guardian['adm_cd'] = item['admCd'];
-                              guardian['rn_mgt_sn'] = item['rnMgtSn']; guardian['bd_mgt_sn'] = item['bdMgtSn'];
-                              guardian['siNsi_nmm'] = item['siNm']; guardian['sgg_nm'] = item['sggNm'];
-                              guardian['emd_nm'] = item['emdNm']; guardian['li_nm'] = item['liNm'];
-                              guardian['rn'] = item['rn']; guardian['emd_no'] = item['emdNo'];
-                              guardian['hemd_nm'] = item['hemdNm']; guardian['road_addr'] = item['roadAddr'];
-                              guardian['buld_mnnm'] = item['buldMnnm']; guardian['buld_slno'] = item['buldSlno'];
-                              guardian['user_address'] = item['roadAddr'];
-
-                              if (CommonUtil.isEmpty(item['udrtYn'])) {
-                                guardian['udrt_yn'] = null;
-                              } else {
-                                if (item['udrtYn'] == 1 || item['udrtYn'] == true || item['udrtYn'] == '1' || item['udrtYn'].toLowerCase() == 'true') {
-                                  guardian['udrt_yn'] = true;
-                                } else {
-                                  guardian['udrt_yn'] = false;
-                                }
-                              }
-
-                              setGuardian({ ...guardian }); coordSearch();
-                            }}>
-                              <span style={{ fontWeight: 600 }}>[지번]</span> {item['jibunAddr']}
-                              <br />
-                              <span style={{ fontWeight: 600 }}>[도로명]</span> {item['roadAddr']}
-                            </li>
+                            <option key={idx}>{relationship}</option>
                           )
-                        }) : null}
-                      </ul>
-                    </div>
-                    : null}
-                </td>
-              </tr>
+                        })}
+                        <option value="" selected={relationshipList.indexOf(guardian['senior_relationship']) == -1}>기타</option>
+                      </select>
+                      {relationshipList.indexOf(guardian['senior_relationship']) == -1 ? (
+                        <input type="text"
+                          value={guardian['senior_relationship']}
+                          onChange={(e) => { insertGuardianValueChange('senior_relationship', e.target.value) }}
+                          ref={el => guardianRef.current['senior_relationship_etc'] = el}
+                        />
+                      ) : null}
+                    </td>
+                  </tr>
+                </table>
 
-              <tr>
-                <th><span style={{ color: "red" }}>*</span>대상자와의 관계</th>
-                <td colSpan={3}>
-                  <select onChange={(e) => { guardianValueChange('senior_relationship', e.target.value) }}
-                    ref={el => guardianRef.current['senior_relationship'] = el}>
-                    {relationshipList.map((relationship, idx) => {
-                      return (
-                        <option key={idx}>{relationship}</option>
-                      )
-                    })}
-                    <option value="" selected={relationshipList.indexOf(guardian['senior_relationship']) == -1}>기타</option>
-                  </select>
-                  {relationshipList.indexOf(guardian['senior_relationship']) == -1 ? (
-                    <input type="text"
-                      value={guardian['senior_relationship']}
-                      onChange={(e) => { guardianValueChange('senior_relationship', e.target.value) }}
-                      ref={el => guardianRef.current['senior_relationship_etc'] = el}
-                    />
-                  ) : null}
-                </td>
-              </tr>
-            </table>
+                <div className="btn-wrap flex-center margin-bottom5">
+                  <button className={"btn-small gray-btn"} onClick={guardianNewInsert}>기존추가</button>
+                </div>
+              </>
+            ) : (
+              <>
+                <table className="margin-bottom2 senior-insert">
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>이름</th>
+                    <td>
+                      <input type="text"
+                        value={guardian['user_name']}
+                        onChange={(e) => { guardianValueChange('user_name', e.target.value) }}
+                        ref={el => guardianRef.current['user_name'] = el}
+                      />
+                    </td>
+                    <th><span style={{ color: "red" }}>*</span>성별</th>
+                    <td className=" gender">
+                      <div className="flex-start">
+                        <input type="radio" id="user_gender_m" name="user_gender" value="남"
+                          onChange={(e) => { e.target.checked ? guardianValueChange('user_gender', e.target.value) : null }}
+                          ref={el => guardianRef.current['user_gender']['m'] = el}
+                        />
+                        <label for="user_gender_m">남</label>
+                      </div>
+                      <div className="flex-start">
+                        <input type="radio" id="user_gender_f" name="user_gender" value="여"
+                          onChange={(e) => { e.target.checked ? guardianValueChange('user_gender', e.target.value) : null }}
+                          ref={el => guardianRef.current['user_gender']['f'] = el}
+                        />
+                        <label for="user_gender_f">여</label>
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>생년월일</th>
+                    <td>
+                      <div className="flex">
+                        <input type='date'
+                          value={guardian['user_birth']}
+                          onChange={(e) => { guardianValueChange('user_birth', e.target.value) }}
+                          ref={el => guardianRef.current['user_birth'] = el}
+                        />
+                      </div>
+                    </td>
+                  </tr>
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>연락처</th>
+                    <td colSpan={3}>
+                      {CommonUtil.isEmpty(guardian['guardian_id']) ?
+                        <>
+                          <input type="number" maxLength="11" style={{ width: 'calc(100% - 160px)' }}
+                            value={guardian['user_phonenumber']}
+                            onChange={(e) => { guardianValueChange('user_phonenumber', e.target.value); setIsIdCheck(false); }}
+                            ref={el => guardianRef.current['user_phonenumber'] = el}
+                          />
+                          <button className={"red-btn btn-large"} onClick={userIdCheck}>
+                            중복확인
+                          </button>
+                        </>
+                        : <input type="number" maxLength="11" disabled
+                          value={guardian['user_phonenumber']}
+                        />}
+                    </td>
+                  </tr>
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>주소</th>
+                    <td colSpan={3}>
+                      <div>
+                        <input type="text" style={{ width: 'calc(100% - 160px)' }}
+                          value={guardian['user_address']} disabled={CommonUtil.isEmpty(guardian['zip_no']) == false}
+                          onChange={(e) => { guardianValueChange('user_address', e.target.value) }}
+                          onKeyUp={(e) => { e.key == 'Enter' ? jusoSearch() : null }}
+                          ref={el => guardianRef.current['user_address'] = el}
+                        />
+                        {CommonUtil.isEmpty(guardian['zip_no'])
+                          ? <button className={"red-btn btn-large"} onClick={() => { jusoSearch() }}>주소검색</button>
+                          : <button className={"gray-btn btn-large"} onClick={() => { guardianValueChange('zip_no', null) }}>다시검색</button>
+                        }
+                      </div>
+                      {CommonUtil.isEmpty(jusoList.juso) == false && CommonUtil.isEmpty(guardian['zip_no']) ?
+                        <div>
+                          <ul className="list-box" style={{ width: '100%' }}>
+                            {CommonUtil.isEmpty(jusoList.juso) == false ? jusoList.juso.map((item, idx) => {
+                              return (
+                                <li className={guardian['zip_no'] == item['zipNo'] ? 'active' : null} onClick={() => {
+                                  guardian['zip_no'] = item['zipNo']; guardian['adm_cd'] = item['admCd'];
+                                  guardian['rn_mgt_sn'] = item['rnMgtSn']; guardian['bd_mgt_sn'] = item['bdMgtSn'];
+                                  guardian['siNsi_nmm'] = item['siNm']; guardian['sgg_nm'] = item['sggNm'];
+                                  guardian['emd_nm'] = item['emdNm']; guardian['li_nm'] = item['liNm'];
+                                  guardian['rn'] = item['rn']; guardian['emd_no'] = item['emdNo'];
+                                  guardian['hemd_nm'] = item['hemdNm']; guardian['road_addr'] = item['roadAddr'];
+                                  guardian['buld_mnnm'] = item['buldMnnm']; guardian['buld_slno'] = item['buldSlno'];
+                                  guardian['user_address'] = item['roadAddr'];
 
-            <div className="btn-wrap flex-center margin-bottom5">
-              {CommonUtil.isEmpty(guardian['guardian_id'])
-                ? <button className={"btn-small gray-btn"} onClick={guardianInsert}>추가</button>
-                : <>
-                  <button className={"btn-small gray-btn"} onClick={guardianUpdate}>수정</button>
-                  <button className={"btn-small red-btn"} onClick={guardianDelete}>삭제</button>
-                </>}
-            </div>
+                                  if (CommonUtil.isEmpty(item['udrtYn'])) {
+                                    guardian['udrt_yn'] = null;
+                                  } else {
+                                    if (item['udrtYn'] == 1 || item['udrtYn'] == true || item['udrtYn'] == '1' || item['udrtYn'].toLowerCase() == 'true') {
+                                      guardian['udrt_yn'] = true;
+                                    } else {
+                                      guardian['udrt_yn'] = false;
+                                    }
+                                  }
+
+                                  setGuardian({ ...guardian }); coordSearch();
+                                }}>
+                                  <span style={{ fontWeight: 600 }}>[지번]</span> {item['jibunAddr']}
+                                  <br />
+                                  <span style={{ fontWeight: 600 }}>[도로명]</span> {item['roadAddr']}
+                                </li>
+                              )
+                            }) : null}
+                          </ul>
+                        </div>
+                        : null}
+                    </td>
+                  </tr>
+
+                  <tr>
+                    <th><span style={{ color: "red" }}>*</span>대상자와의 관계</th>
+                    <td colSpan={3}>
+                      <select onChange={(e) => { guardianValueChange('senior_relationship', e.target.value) }}
+                        ref={el => guardianRef.current['senior_relationship'] = el}>
+                        {relationshipList.map((relationship, idx) => {
+                          return (
+                            <option key={idx}>{relationship}</option>
+                          )
+                        })}
+                        <option value="" selected={relationshipList.indexOf(guardian['senior_relationship']) == -1}>기타</option>
+                      </select>
+                      {relationshipList.indexOf(guardian['senior_relationship']) == -1 ? (
+                        <input type="text"
+                          value={guardian['senior_relationship']}
+                          onChange={(e) => { guardianValueChange('senior_relationship', e.target.value) }}
+                          ref={el => guardianRef.current['senior_relationship_etc'] = el}
+                        />
+                      ) : null}
+                    </td>
+                  </tr>
+                </table>
+
+                <div className="btn-wrap flex-center margin-bottom5">
+                  {CommonUtil.isEmpty(guardian['guardian_id'])
+                    ? <button className={"btn-small gray-btn"} onClick={guardianInsert}>추가</button>
+                    : <>
+                      <button className={"btn-small gray-btn"} onClick={guardianUpdate}>수정</button>
+                      <button className={"btn-small red-btn"} onClick={guardianDelete}>삭제</button>
+                    </>}
+                </div>
+              </>
+            )}
           </div>
         </div>
       ) : null}
client/views/pages/healthcare/Healthcare.jsx
--- client/views/pages/healthcare/Healthcare.jsx
+++ client/views/pages/healthcare/Healthcare.jsx
@@ -185,6 +185,36 @@
     });
   };
 
+  const Temperature = ({ data }) => {
+    let seniorTemperature = [];
+    if (data['seniorTemperatureList'] && data['seniorTemperatureList'].length > 0) {
+      data['seniorTemperatureList'].map((data, dataIdx) => {
+        seniorTemperature.push(data['temperature']);
+      })
+      if (data['seniorTemperatureList'].length < 12) {
+        for (let i = 0; i < 12 - data['seniorTemperatureList'].length; i++) {
+          seniorTemperature.push('-');
+        }
+      }
+    }
+
+    console.log(">>", seniorTemperature)
+
+    if (seniorTemperature.length > 0) {
+      return (
+        seniorTemperature.map((item, idx) => {
+          return (
+            <td>{item}</td>
+          )
+        })
+      )
+    } else {
+      return (
+        <td colSpan={12}>집계된 정보가 없습니다.</td>
+      )
+    }
+  }
+
   React.useEffect(() => {
     searching();
   }, []);
@@ -203,13 +233,18 @@
         <table className={"protector-user"}>
           <thead>
             <tr>
-              <th>No</th>
-              <th>소속기관명</th>
-              <th>이름</th>
-              <th>생년월일</th>
-              <th>성별</th>
-              <th>연락처</th>
-              <th colSpan={3}>최근복약률</th>
+              <th rowSpan={2}>No</th>
+              <th rowSpan={2}>소속기관명</th>
+              <th rowSpan={2}>이름</th>
+              <th rowSpan={2}>생년월일</th>
+              <th rowSpan={2}>성별</th>
+              <th rowSpan={2}>연락처</th>
+              <th colSpan={3}>최근복약률(집계/전체)</th>
+            </tr>
+            <tr>
+              <th>최근 하루 전</th>
+              <th>최근 이틀 전</th>
+              <th>최근 사흘 전</th>
             </tr>
           </thead>
           <tbody>
@@ -238,7 +273,7 @@
                           </td>
                         )
                       })
-                      : null}
+                      : <td colSpan={3}>집계된 정보가 없습니다.</td>}
                 </tr>
               )
             })}
@@ -299,17 +334,7 @@
                   <td data-label="생년월일">{item['user_birth']}</td>
                   <td data-label="성별">{item['user_gender']}</td>
                   <td data-label="연락처">{item['user_phonenumber']}</td>
-                  {
-                    item['seniorTemperatureList'] && item['seniorTemperatureList'].length > 0 ?
-                      item['seniorTemperatureList'].map((data, dataIdx) => {
-                        return (
-                          <td data-label="최근온도">
-                            {data['temperature']}
-                            {/* <small>({data['time']})</small> */}
-                          </td>
-                        )
-                      })
-                      : null}
+                  <Temperature data={item} />
                 </tr>
               )
             })}
client/views/pages/healthcare/HealthcareSelectOne.jsx
--- client/views/pages/healthcare/HealthcareSelectOne.jsx
+++ client/views/pages/healthcare/HealthcareSelectOne.jsx
@@ -183,6 +183,25 @@
     });
   };
 
+  //특정 대상자의 일별 배터리 목록
+  const [seniorBatteryListByDay, setSeniorBatteryListByDay] = React.useState([]);
+  //특정 대상자의 일별 배터리 목록 조회
+  const seniorBatterySelectListByDay = (seniorNum) => {
+    fetch("/user/seniorBatterySelectListByDay.json", {
+      method: "POST",
+      headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+      },
+      body: JSON.stringify(seniorNum),
+    }).then((response) => response.json()).then((data) => {
+      console.log("seniorBatteryListByDay data : ", data);
+      setSeniorBatteryListByDay(data);
+      console.log("seniorBatteryListByDay : ", seniorBatteryListByDay);
+    }).catch((error) => {
+      console.log('seniorBatterySelectListByDay() /user/seniorBatterySelectListByDay.json error : ', error);
+    });
+  };
+
   //방문 기록 정보
   const [visitRecordList, setVisitRecordList] = React.useState({});
   const visitRecordInit = {
@@ -267,6 +286,7 @@
         setVisitRecordInit();
         seniorMedicationSelectList(senior);
         seniorTemperatureSelectListByDay(senior);
+        seniorBatterySelectListByDay(senior);
         visitRecordSelectList(senior);
         closeModal();
         alert("등록완료");
@@ -428,6 +448,7 @@
     seniorSelectOne();
     seniorMedicationSelectList(senior);
     seniorTemperatureSelectListByDay(senior);
+    seniorBatterySelectListByDay(senior);
     visitRecordSelectList(senior);
   }, [])
 
@@ -461,10 +482,18 @@
               <tbody>
                 <DateMedication />
                 <DateTemperature />
-                <tr>
-                  <th>배터리</th>
-                  <td colSpan={5}>30%</td>
-                </tr>
+                {seniorBatteryListByDay.map((item, idx) => {
+                  return (
+                    item['battery_date'] == visitDate ? (
+                      <tr>
+                        <th>배터리</th>
+                        <td colSpan={5}>
+                          {item['battery_power_data']}
+                        </td>
+                      </tr>
+                    ) : null
+                  )
+                })}
               </tbody>
             </table>
 
client/views/pages/join/Join.jsx
--- client/views/pages/join/Join.jsx
+++ client/views/pages/join/Join.jsx
@@ -432,7 +432,7 @@
 
             <div className="btn-wrap">
               <button className={"gray-btn btn-large"} onClick={() => {navigate(-1)}}>취소</button>
-              {user['authority'] == "ROLE_AGENCY"
+              {user['authority'] == "ROLE_AGENCYADMIN" || user['authority'] == "ROLE_AGENCY"
                 ? <button className={"red-btn btn-large"} onClick={agentInsert}>등록</button>
                 : <button className={"red-btn btn-large"} onClick={userInsert}>등록</button>
               }
client/views/pages/senior_management/SeniorSelectOne.jsx
--- client/views/pages/senior_management/SeniorSelectOne.jsx
+++ client/views/pages/senior_management/SeniorSelectOne.jsx
@@ -376,6 +376,7 @@
           if (data > 0) {
             alert("담당자 매칭이 종료 되었습니다.");
             seniorSelectListByAgent();
+            agentSelectListBySenior();
           } else {
             alert("담당자 매칭 종료에 실패하였습니다.");
           }
Add a comment
List