import moment from 'moment'; import { useEffect, useState } from 'react'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { DefaultRequestPagination, HeaderType } from '@/entities/common/model/types'; import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; import { PATHS } from '@/shared/constants/paths'; import { useExtensionKeyinDownloadExcelMutation } from '@/entities/additional-service/api/use-extension-keyin-download-excel-mutation'; import { KeyInPaymentFilter } from '@/entities/additional-service/ui/key-in-payment/filter/key-in-payment-filter'; import { AdditionalServiceCategory } from '@/entities/additional-service/model/types'; import { SortTypeBox } from '@/entities/common/ui/sort-type-box'; import { SortTypeKeys } from '@/entities/common/model/types'; import { useExtensionKeyinListMutation } from '@/entities/additional-service/api/use-extension-keyin-list-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; import { KeyInPaymentList } from '@/entities/additional-service/ui/key-in-payment/key-in-payment-list'; import { useStore } from '@/shared/model/store'; import { KeyInPaymentListItem, KeyInPaymentPaymentStatus } from '@/entities/additional-service/model/key-in/types'; import { keyInPaymentPaymentStatusBtnGroup } from '@/entities/additional-service/model/key-in/constant'; import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access-check'; export const KeyInPaymentPage = () => { const { navigate } = useNavigate(); const userMid = useStore.getState().UserStore.mid; // 권한 체크 const { hasAccess, AccessDeniedDialog } = useExtensionAccessCheck({ extensionCode: 'KEYIN' }); const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [startDate, setStartDate] = useState(moment().format('YYYY-MM-DD')); const [endDate, setEndDate] = useState(moment().format('YYYY-MM-DD')); const [paymentStatus, setPaymentStatus] = useState(KeyInPaymentPaymentStatus.ALL) const [minAmount, setMinAmount] = useState(); const [maxAmount, setMaxAmount] = useState(); const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false); useSetHeaderTitle('KEY-IN 결제'); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { navigate(PATHS.home); }); const { mutateAsync: keyinList } = useExtensionKeyinListMutation(); const { mutateAsync: downloadExcel } = useExtensionKeyinDownloadExcelMutation(); const callList = (option?: { sortType?: SortTypeKeys, status?: KeyInPaymentPaymentStatus }) => { let newMinAmount = minAmount; if (!!minAmount && typeof (minAmount) === 'string') { newMinAmount = parseInt(minAmount); } let newMaxAmount = maxAmount; if (!!maxAmount && typeof (maxAmount) === 'string') { newMaxAmount = parseInt(maxAmount); } let listParams = { mid: mid, fromDate: startDate, toDate: endDate, paymentStatus: paymentStatus, minAmount: newMinAmount, maxAmount: newMaxAmount, page: pageParam }; if (listParams.page) { listParams.page.sortType = option?.sortType || sortType; setPageParam(listParams.page); } keyinList(listParams).then((rs) => { setListItems(rs.content); }); } const onClickToOpenFilter = () => { setFilterOn(!filterOn); }; const onClickToOpenEmailBottomSheet = () => { setEmailBottomSheetOn(true); }; const onSendRequest = (selectedEmail?: string) => { if (selectedEmail) { let newMinAmount = minAmount; if (!!minAmount && typeof (minAmount) === 'string') { newMinAmount = parseInt(minAmount); } let newMaxAmount = maxAmount; if (!!maxAmount && typeof (maxAmount) === 'string') { newMaxAmount = parseInt(maxAmount); } downloadExcel({ mid: mid, fromDate: startDate, toDate: endDate, paymentStatus: paymentStatus, minAmount: newMinAmount, maxAmount: newMaxAmount, //email: selectedEmail }).then((rs) => { console.log('Excel Download Status:', rs.status); }); } setEmailBottomSheetOn(false); }; const onClickToSort = (sort: SortTypeKeys) => { setSortType(sort); callList({ sortType: sort }); }; const onClickToPaymentStatus = (val: KeyInPaymentPaymentStatus) => { setPaymentStatus(val); }; useEffect(() => { callList(); }, [ mid, startDate, endDate, paymentStatus, minAmount, maxAmount ]); // if (!hasAccess) { // return ; // } return ( <>
{ keyInPaymentPaymentStatusBtnGroup.map((value, index) => ( onClickToPaymentStatus(value.value)} >{value.name} )) }
); };