import { styled } from 'styled-components'; import { Link } from 'react-router-dom'; import React, { Fragment, useRef, useState } from 'react'; import { AnimatedPageWrapper } from '../../components/common/Layout' import { Title, TableStyle, FormWrapper, TableWrapper, } from '../../styles/Components'; import Button from '../../components/common/button/Button'; import { useNavigate } from 'react-router-dom'; import { authList } from '../../store/authList'; import { useRecoilValue } from 'recoil'; import { useDataFetch, useModal, useTable, withAuth } from '../../hooks/hook'; import { authType, landSize, modalTypes, opLandCategoryType, opLandOwnedType, } from '../../assets/data'; import { INITIAL_PAGE_LIMIT, INITIAL_PAGE_SIZE, TYPE_MODIFY } from '../../assets/data/adminConstants'; import { useTranslation } from 'react-i18next'; import { CheckBox, DynamicModal, ExcelDownButton, Pagination, ViewTableInfo } from '../../components/common'; import LandInfoSearchBar, { useLandInfoSearch } from '../../components/searchBar/LandInfoSearchBar'; import { TableSkeleton } from '../../components/Skeleton/TableSkeleton'; import OwnerChangeModal from '../../components/modal/OwnerChangeModal'; import { opLandInfoStatusType } from '../../assets/data/options'; import { useAlert } from '../../context/AlertProvider'; import { alertTypes } from '../../assets/data/types'; const LandInfoView = () => { const token = sessionStorage.getItem('token'); const userInfo = useRecoilValue(authList); const { t } = useTranslation(); const tableRef = useRef(null); const {showToast} = useAlert(); const [detailData, setDetailData] = useState({}); const { modalState, handleModalView, handleModalClose } = useModal({ detail: 'hidden', deleteConfirm: 'hidden', deleteComplete: 'hidden' }); const [modalType, setModalType] = useState('regist'); const { searchParams, loading, data: dataList, handleSearch, handleReset, handlePageChange, handlePageSizeChange, handleOrderByChange, updateSearchParams } = useLandInfoSearch(token, INITIAL_PAGE_SIZE); const { selectedRows, handleSelectRow, isRowSelected, removeSelectedRows } = useTable(dataList?.land_info_list || [], {mode: 'single'}); // const { // data: landData // } = useDataFetch(() => LandView(token), [token]); const handleModalSubmit = async (type, param = null) => { switch (type) { case "regist": setModalType('regist'); const selectRow = selectedRows[0]; if(!selectRow.owned) { showToast('LAND_OWNED_CHANGES_WARNING', {type:alertTypes.warning}); return; } const owner_changes = selectRow.owner_changes; if(owner_changes.length > 0){ setModalType(TYPE_MODIFY); } setDetailData(selectRow); handleModalView('detail'); break; // case "detail": // await LandAuctionDetailView(token, param).then(data => { // setDetailData(data.auction_detail); // setModalType('modify'); // handleModalView('detail'); // }); // break; // case "delete": // const date_check = selectedRows.every(row => { // const timeDiff = timeDiffMinute(convertKTC(row.auction_start_dt), (new Date)); // return timeDiff < 3; // }); // if(date_check){ // setAlertMsg(t('LAND_AUCTION_DELETE_DATE_WARNING')); // return; // } // if(selectedRows[0].status === landAuctionStatusType.auction_start || selectedRows[0].status === landAuctionStatusType.stl_end){ // setAlertMsg(t('LAND_AUCTION_DELETE_STATUS_WARNING')); // return; // } // handleModalView('deleteConfirm'); // break; // case "deleteConfirm": // let list = []; // let isChecked = false; // // selectedRows.map(data => { // // const row = dataList.list.find(row => row.id === Number(data.id)); // // if(row.status !== commonStatus.wait) isChecked = true; // list.push({ // id: data.id, // }); // }); // // if(isChecked) { // setAlertMsg(t('LAND_AUCTION_WARNING_DELETE')) // handleModalClose('deleteConfirm'); // return; // } // // await LandAuctionDelete(token, list).then(data => { // handleModalClose('deleteConfirm'); // if(data.result === "SUCCESS") { // handleModalView('deleteComplete'); // }else{ // setAlertMsg(t('DELETE_FAIL')); // } // }).catch(reason => { // setAlertMsg(t('API_FAIL')); // }); // // break; // case "deleteComplete": // handleModalClose('deleteComplete'); // // fetchData(option); // window.location.reload(); // break; } } const handleDetailView = () => { handleModalClose('detail'); handleSearch(updateSearchParams); removeSelectedRows(); } return ( 랜드 정보 조회 { if (executeSearch) { handleSearch(newParams); } else { updateSearchParams(newParams); } }} onReset={handleReset} /> {userInfo.auth_list?.some(auth => auth.id === authType.landUpdate) && (