import moment from 'moment'; import { 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 { CashReceiptList } from '@/entities/transaction/ui/cash-receipt-list'; import { CashReceiptListItem, TransactionCategory, CashReceiptPurposeType, CashReceiptIssueStatus, CashReceiptProcessResult } from '@/entities/transaction/model/types'; import { useCashReceiptListMutation } from '@/entities/transaction/api/use-cash-receipt-list-mutation'; import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; import { CashReceiptFilter } from '@/entities/transaction/ui/filter/cash-receipt-filter'; import { SortOptionsBox } from '@/entities/common/ui/sort-options-box'; import { SortByKeys, HeaderType } from '@/entities/common/model/types'; import { useSetOnBack, useSetHeaderTitle, useSetHeaderType, useSetFooterMode } from '@/widgets/sub-layout/use-sub-layout'; import { CashReceiptIssueStatusBtnGroup } from '@/entities/transaction/model/contant'; export const CashReceiptListPage = () => { const { navigate } = useNavigate(); const [sortBy, setSortBy] = useState(SortByKeys.New); const [listItems, setListItems] = useState({}); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState('nictest001m'); const [startDate, setStartDate] = useState(moment().subtract(1, 'month').format('YYYY-MM-DD')); const [endDate, setEndDate] = useState(moment().format('YYYY-MM-DD')); const [purposeType, setPurposeType] = useState(CashReceiptPurposeType.ALL); const [issueStatus, setIssueStatus] = useState(CashReceiptIssueStatus.ALL); const [processResult, setProcessResult] = useState(CashReceiptProcessResult.ALL); useSetHeaderTitle('현금영수증'); useSetHeaderType(HeaderType.LeftArrow); useSetOnBack(() => { navigate(PATHS.home); }); useSetFooterMode(true); const { mutateAsync: cashReceiptList } = useCashReceiptListMutation(); const { mutateAsync: downloadExcel } = useDownloadExcelMutation(); const callList = (option?: { sortBy?: string, val?: string }) => { pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; setPageParam(pageParam); let listParams = { mid: mid, startDate: startDate, endDate: endDate, purposeType: purposeType, issueStatus: issueStatus, processResult: processResult, pagination: pageParam }; cashReceiptList(listParams).then((rs) => { console.log(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 groupDate = moment(content[i]?.transactionDateTime).format('YYYYMMDD'); if (!!groupDate && !data.hasOwnProperty(groupDate)) { data[groupDate] = []; } if (!!groupDate && data.hasOwnProperty(groupDate)) { data[groupDate].push(content[i]); } } } return data; }; const onClickToOpenFilter = () => { setFilterOn(!filterOn); }; const onClickToDownloadExcel = () => { // tid??? 확인 필요 downloadExcel({ // tid: tid }).then((rs) => { }); }; const onClickToSort = (sort: SortByKeys) => { setSortBy(sort); callList({ sortBy: sort }); }; const onClickToIssueStatus = (val: CashReceiptIssueStatus) => { setIssueStatus(val); callList({ val: val }); }; useEffect(() => { callList(); }, []); return ( <>
승인
취소
{ CashReceiptIssueStatusBtnGroup.map((value, index) => ( onClickToIssueStatus(value.value)} >{value.name} )) }
); };