박정하 박정하 2023-09-06
230906 박정하 통계 페이지 수정
@f8cb62fd39a8481fcb4b5bd6d2a4725613c753e5
client/views/component/chart/Chart11.jsx
--- client/views/component/chart/Chart11.jsx
+++ client/views/component/chart/Chart11.jsx
@@ -6,8 +6,6 @@
 
 export default function Chart11({ data }) {
   const createChart = () => {
-    console.log('createChart11 data : ', data);
-
     let root = am5.Root.new("Chart11");
     root._logo.dispose();
     
@@ -145,8 +143,8 @@
   }
 
   React.useEffect(() => {
-    console.log('React.useEffect Chart11 data : ', data);
     if (CommonUtil.isEmpty(data) == false) {
+      console.log('React.useEffect Chart11 data : ', data);
       createChart();
     }
   }, [data])
client/views/pages/equipment/EquipmentData.jsx
--- client/views/pages/equipment/EquipmentData.jsx
+++ client/views/pages/equipment/EquipmentData.jsx
@@ -50,7 +50,7 @@
     'start_date': null,
     'end_date': new Date(),
 
-    'currentPage': 0,
+    'currentPage': 1,
     'perPage': 10,
   });
   const dateSearchChange = (targetKey, value) => {
@@ -88,9 +88,13 @@
     equipmentDataList: [],
     equipmentDataListCount: 0
   });
+  const [equipmentChartData, setEquipmentChartData] = React.useState([]);
 
   //복약 현황 조회
-  const equipmentDataList = () => {
+  const equipmentDataList = (currentPage) => {
+    userSearch.currentPage = CommonUtil.isEmpty(currentPage) ? 1 : currentPage;
+    setUserSearch({ ...userSearch });
+
     fetch("/stats/equipmentDataList.json", {
       method: "POST",
       headers: {
@@ -98,12 +102,27 @@
       },
       body: JSON.stringify(userSearch),
     }).then((response) => response.json()).then((data) => {
-      console.log("equipmentData : ", data);
       setEquipmentData(data);
+      var chartOriginData = [...data['equipmentDataList']];
+      var chartData = chartOriginData.reverse();
+      setEquipmentChartData(chartData)
     }).catch((error) => {
       console.log('equipmentDataList() /stats/equipmentDataList.json error : ', error);
     });
   };
+
+  const dateSelect = (selectValue) => {
+    const newUserSearch = JSON.parse(JSON.stringify(userSearch));
+    newUserSearch['start_date'] = null;
+    newUserSearch['end_date'] = null;
+    setUserSearch(newUserSearch);
+
+    if (selectValue == 'selectDatetime') {
+      setIsSelectDate(true);
+    } else {
+      setIsSelectDate(false);
+    }
+  }
 
   React.useEffect(() => {
     equipmentDataList();
@@ -111,7 +130,7 @@
 
   React.useEffect(() => {
     orgSelectListOfHierarchy();
-    equipmentDataList();
+    // equipmentDataList();
   }, []);
 
   return (
@@ -119,7 +138,7 @@
       <div className="content-wrap">
         <div className="search-management flex margin-bottom2 margin-top gap">
           <select style={{ maxWidth: '150px' }}
-            onChange={(e) => { setIsSelectDate(e.target.value == 'selectDate' ? false : true) }}
+            onChange={(e) => { dateSelect(e.target.value) }}
           >
             <option value="selectDate">날짜선택</option>
             <option value="selectDatetime">기간선택</option>
@@ -127,24 +146,24 @@
           {!isSelectDate ?
             <div className="selectDate" style={{ width: 'calc(100% - 300px)' }}>
               <input type="date"
-                value=""
+                value={userSearch['end_date']}
                 onChange={(e) => { dateSearchChange("end_date", e.target.value) }}
                 onKeyDown={function (e) { e.preventDefault() }} />
             </div>
             :
             <div className="selectDatetime flex" style={{ width: 'calc(100% - 300px)' }}>
               <input type="date"
-                value=""
+                value={userSearch['start_date']}
                 onChange={(e) => { dateSearchChange("start_date", e.target.value) }}
                 onKeyDown={function (e) { e.preventDefault() }} />
               <input type="date"
-                value=""
+                value={userSearch['end_date']}
                 onChange={(e) => { dateSearchChange("end_date", e.target.value) }}
                 onKeyDown={function (e) { e.preventDefault() }} />
             </div>
           }
           <button className={"btn-small gray-btn"} style={{ maxWidth: '150px' }}
-            onClick={() => { console.log("userSearch: ", userSearch); equipmentDataList(); }}
+            onClick={() => { equipmentDataList(); }}
           >검색</button>
         </div>
 
@@ -199,11 +218,11 @@
                 <SubTitle explanation={"선택한 기관의 통계 자료입니다."} />
               </div>
 
-              {/* <div style={{ height: '30vh' }}>
-                {equipmentData['equipmentDataList'].length > 0 ?
-                  <Chart11 data={equipmentData['equipmentDataList']} />
-                  : "데이터가 없습니다."}
-              </div> */}
+              <div style={{ height: '30vh' }}>
+                {equipmentChartData.length > 0 ?
+                  <Chart11 data={equipmentChartData} />
+                  : <div className="no-data"><p>데이터가 없습니다.</p></div>}
+              </div>
 
               <table class="caregiver-user protector-user">
                 <thead>
@@ -219,35 +238,35 @@
                   </tr>
                 </thead>
                 <tbody>
-                  {equipmentData['equipmentDataList'].map((item, idx) => {
+                  {equipmentData.equipmentDataList.map((item, idx) => {
                     return (
                       <tr key={idx}>
                         <td data-label="날짜">{item['date']}</td>
-                        <td data-label="납품기기">{item['delivery_equipment']}</td>
-                        <td data-label="등록기기">{item['register_equipment']}</td>
+                        <td data-label="납품기기">{item['delivery_equipment'] == null ? 0 : item['delivery_equipment']}</td>
+                        <td data-label="등록기기">{item['register_equipment'] == null ? 0 : item['register_equipment']}</td>
                         <td data-label="데이터수집기기">{item['data_equipment']}</td>
                         <td data-label="복약기기">{item['medication_equipment']}</td>
-                        <td data-label="기기등록율">{item['register_percent']}%</td>
-                        <td data-label="데이터수집율">{item['data_percent']}%</td>
-                        <td data-label="복약율">{item['medication_percent']}%</td>
+                        <td data-label="기기등록율">{item['register_percent'] == null ? 0 : item['register_percent']}%</td>
+                        <td data-label="데이터수집율">{item['data_percent'] == null ? 0 : item['data_percent']}%</td>
+                        <td data-label="복약율">{item['medication_percent'] == null ? 0 : item['medication_percent']}%</td>
                       </tr>
                     )
                   })
                   }
-                  {CommonUtil.isEmpty(equipmentData['equipmentDataList']) ?
+                  {CommonUtil.isEmpty(equipmentData.equipmentDataList) ?
                     <tr>
                       <td colSpan={8}>조회된 데이터가 없습니다</td>
                     </tr>
                     : null}
                 </tbody>
               </table>
-              {/* <Pagination
-                currentPage={search.currentPage}
-                perPage={search.perPage}
-                totalCount={equipmentInquiry.equipmentInquiryListCount}
+              <Pagination
+                currentPage={userSearch.currentPage}
+                perPage={userSearch.perPage}
+                totalCount={equipmentData.equipmentDataListCount}
                 maxRange={5}
-                click={equipmentInquirySelectList}
-              /> */}
+                click={equipmentDataList}
+              />
             </div>
           </div>
         </div>
client/views/pages/equipment/EquipmentSelect.jsx
--- client/views/pages/equipment/EquipmentSelect.jsx
+++ client/views/pages/equipment/EquipmentSelect.jsx
@@ -965,15 +965,20 @@
       </div>
 
       <div className="tab-container">
-        <ul className="tab-menu flex-start">
-          {tab.map((item, idx) => {
-            return (
-              <li onClick={() => setTabIndex(idx)} className={idx == tabIndex ? 'active' : null}>
-                {item.title}
-              </li>
-            )
-          })}
-        </ul>
+        <div className="flex">
+          <ul className="tab-menu flex-start">
+            {tab.map((item, idx) => {
+              return (
+                <li onClick={() => setTabIndex(idx)} className={idx == tabIndex ? 'active' : null}>
+                  {item.title}
+                </li>
+              )
+            })}
+          </ul>
+          <ul className="tab-menu">
+            <li onClick={() => navigate('../EquipmentData')}>통계확인</li>
+          </ul>
+        </div>
         <div className="content-wrap">
           <ul className="tab-content">
             <li>
Add a comment
List