import moment from 'moment'; import { ChangeEvent, useEffect, useState } from 'react'; import { NumericFormat } from 'react-number-format'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { AllTransactionList } from '@/entities/transaction/ui/all-transaction-list'; import { AllTransactionListItem, TransactionCategory, SortByKeys } from '@/entities/transaction/model/types'; import { useAllTransactionListMutation } from '@/entities/transaction/api/use-all-transaction-list-mutation'; import { useAllTransactionListSummaryMutation } from '@/entities/transaction/api/use-all-transaction-list-summary-mutation'; import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constants'; import { Filter } from '@/entities/transaction/ui/filter'; import { SortOptionsBox } from '@/entities/transaction/ui/sort-options-box'; import { FooterItemActiveKey } from '@/entities/common/model/types'; import { HeaderType } from '@/entities/common/model/types'; import { useSetOnBack, useSetHeaderTitle, useSetHeaderType, useSetFooterMode, useSetFooterCurrentPage } from '@/widgets/sub-layout/use-sub-layout'; export const AllTransactionListPage = () => { const { navigate } = useNavigate(); const [serviceCodeOptions, setServiceCodeOptions] = useState>>(); const [selectedServiceCode, setSelectedServiceCode] = useState('st'); const [sortBy, setSortBy] = useState(SortByKeys.New); const [listItems, setListItems] = useState({}); const [totalTransactionCount, setTotalTransactionCount] = useState(0); const [totalTransactionAmount, setTotalTransactionAmount] = useState(0); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [fromDate, setFromDate] = useState(moment().subtract(1, 'month').format('YYYYMMDD')); const [toDate, setToDate] = useState(moment().format('YYYYMMDD')); useSetHeaderTitle('거래내역 조회'); useSetHeaderType(HeaderType.LeftArrow); useSetOnBack(() => { navigate(PATHS.home); }); useSetFooterMode(true); useSetFooterCurrentPage(FooterItemActiveKey.Transaction); const { mutateAsync: allTransactionList } = useAllTransactionListMutation(); const { mutateAsync: allTransactionListSummary } = useAllTransactionListSummaryMutation(); const { mutateAsync: downloadExcel } = useDownloadExcelMutation(); const callList = (option?: { sortBy?: string, val?: string }) => { let listSummaryParams = { moid: 'string', tid: 'string', fromDate: fromDate, toDate: toDate, stateCode: '0', serviceCode: (option?.val)? option.val: selectedServiceCode, minAmount: 0, maxAmount: 0, dateCl: 'TRANS', goodsName: 'string', cardCode: 'st', bankCode: 'str', searchCl: 'CARD_NO', searchValue: 'string', }; pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; setPageParam(pageParam); let listParams = { ...listSummaryParams, ...{page: pageParam} }; allTransactionList(listParams).then((rs) => { setListItems(assembleData(rs.content)); }); allTransactionListSummary(listSummaryParams).then((rs) => { setTotalTransactionAmount(rs.totalTransactionAmount); setTotalTransactionCount(rs.totalTransactionCount); }); }; const assembleData = (content: Array) => { let data: any = {}; if(content && content.length > 0){ for(let i=0;i { setFilterOn(!filterOn); }; const onClickToDownloadExcel = () => { // tid??? 확인 필요 downloadExcel({ // tid: tid }).then((rs) => { }); }; const onCliCkToSort = (sort: SortByKeys) => { setSortBy(sort); callList({sortBy: sort}); }; const callServiceCodeOptions = () => { let options = [ {text: '계좌간편결제', value: 'simple'}, {text: '신용카드', value: 'card'}, {text: '계좌이체', value: 'transfer'}, {text: '휴대폰', value: 'phone'}, {text: '문화상품권', value: 'gift'}, {text: '티머니페이', value: '티머니페이'}, ]; setServiceCodeOptions(options); setSelectedServiceCode('simple'); }; const onChangeSelectedServiceCode = (e: ChangeEvent) => { let val = e.target.value; // onchagne 에서 useState가 즉시 반영 안되므로 값을 직접 바로 넘긴다. setSelectedServiceCode(val); callList({val: val}); }; const getServiceCodeOptions = () => { let rs = []; if(!!serviceCodeOptions && serviceCodeOptions.length > 0) for(let i=0;i{ serviceCodeOptions[i]?.text } ) } return rs; }; useEffect(() => { callServiceCodeOptions(); callList(); }, []); return ( <>
조회금액
조회일자 { moment(fromDate).format('YYYY.MM.DD') } ~ { moment(toDate).format('YYYY.MM.DD') }
거래건수
); };