import moment from 'moment'; import { useEffect, useState } from 'react'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { SmsPaymentDetailResend } from '@/entities/additional-service/ui/sms-payment/sms-payment-detail-resend'; import { HeaderType, SortTypeKeys } from '@/entities/common/model/types'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode } from '@/widgets/sub-layout/use-sub-layout'; import { SmsPaymentListItem, SmsPaymentSearchType, SmsType, ExtensionSmsDetailResponse } from '@/entities/additional-service/model/sms-payment/types'; import { useExtensionSmsListMutation } from '@/entities/additional-service/api/sms-payment/use-extension-sms-list-mutation'; import { useExtensionSmsDownloadExcelMutation } from '@/entities/additional-service/api/sms-payment/use-extension-sms-download-excel-mutation'; import { SmsPaymentList } from '@/entities/additional-service/ui/sms-payment/sms-payment-list'; import { SmsPaymentFilter } from '@/entities/additional-service/ui/sms-payment/sms-payment-filter'; import { useExtensionSmsDetailMutation } from '@/entities/additional-service/api/sms-payment/use-extension-sms-detail-mutation'; import { useStore } from '@/shared/model/store'; export const SmsPaymentPage = () => { const { navigate } = useNavigate(); const userMid = useStore.getState().UserStore.mid; const [bottomSmsPaymentDetailResendOn, setBottomSmsPaymentDetailResendOn] = useState(false) const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState({}); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [filterOn, setFilterOn] = useState(false); const [mid, setMid] = useState(userMid); const [selectedTid, setSelectedTid] = useState(''); const [selectedMid, setSelectedMid] = useState(''); const [searchCl, setSearchCl] = useState(SmsPaymentSearchType.BUYER_NAME) const [searchValue, setSearchValue] = useState('') const [fromDate, setFromDate] = useState(moment().format('YYYY-MM-DD')); const [toDate, setToDate] = useState(moment().format('YYYY-MM-DD')); const [smsCl, setSmsCl] = useState(SmsType.ALL); const [smsDetailData, setSmsDetailData] = useState(null); const { mutateAsync: smsPaymentList } = useExtensionSmsListMutation(); const { mutateAsync: downloadExcel } = useExtensionSmsDownloadExcelMutation(); const { mutateAsync: detail } = useExtensionSmsDetailMutation(); useSetHeaderTitle('SMS 결제 통보'); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); const callList = (option?: { sortType?: SortTypeKeys, val?: string }) => { pageParam.sortType = (option?.sortType)? option.sortType: sortType; setPageParam(pageParam); let listParams = { mid: mid, searchCl: searchCl, searchValue: searchValue, fromDate: fromDate, toDate: toDate, smsCl: (smsCl === SmsType.ALL)? '' :smsCl, page: pageParam } smsPaymentList(listParams).then((rs) => { setListItems(assembleData(rs.content)); }) } const assembleData = (content: Array) => { let data: any = {}; if (content && content.length > 0) { for (let i = 0; i < content?.length; i++) { let paymentDate = content[i]?.paymentDate?.substring(0, 8); let groupDate = moment(paymentDate).format('YYYYMMDD'); if(!!groupDate && !data.hasOwnProperty(groupDate)){ data[groupDate] = []; } if(!!groupDate && data.hasOwnProperty(groupDate)){ data[groupDate].push(content[i]); } } } console.log('Data : ', data); return data; }; const callDetail = (selectedMid: string, selectedTid: string) => { console.log('Selected Mid: ', selectedMid, 'Selected Tid: ', selectedTid); detail({ mid: selectedMid, tid: selectedTid }).then((rs) => { console.log('Detail info : ', rs); setSmsDetailData(rs); }) } const onClickToDownloadExcel = () => { downloadExcel({ mid: mid, searchCl: searchCl, searchValue: searchValue, fromDate: fromDate, toDate: toDate, smsCl: (smsCl === SmsType.ALL)? '': smsCl, }).then((rs) => { console.log('Excel Dowload Status : ' + rs.status); }); } const onClickToOpenFilter = () => { setFilterOn(!filterOn); }; const onClickToShowDetail = (itemMid: string, itemTid: string) => { setSelectedMid(itemMid); setSelectedTid(itemTid); callDetail(itemMid, itemTid); setBottomSmsPaymentDetailResendOn(true); }; useEffect(() => { callList(); }, []); return ( <>
); };