diff --git a/src/entities/transaction/model/contant.ts b/src/entities/transaction/model/contant.ts index bd69c7f..caa5e6b 100644 --- a/src/entities/transaction/model/contant.ts +++ b/src/entities/transaction/model/contant.ts @@ -2,11 +2,39 @@ import { BillingPaymentMethod, BillingProcessResult, BillingRequestStatus, + BillingSearchType, + CashReceiptIssueStatus, + CashReceiptProcessResult, + CashReceiptPurposeType, EscrowDeliveryStatus, + EscrowSearchType, EscrowSettlementStatus } from '@/entities/transaction/model/types'; -export const deliveryStatusBtnGroup = [ +export const CashReceiptPurposeTypeBtnGroup = [ + {name: '전체', value: CashReceiptPurposeType.ALL}, + {name: '소득공제', value: CashReceiptPurposeType.INCOME_DEDUCTION}, + {name: '지출증빙', value: CashReceiptPurposeType.EXPENSE_PROOF}, +]; +export const CashReceiptIssueStatusBtnGroup = [ + {name: '전체', value: CashReceiptIssueStatus.ALL}, + {name: '승인', value: CashReceiptIssueStatus.APPROVAL}, + {name: '취소', value: CashReceiptIssueStatus.CANCEL}, +]; +export const CashReceiptProcessResultBtnGroup = [ + {name: '전체', value: CashReceiptProcessResult.ALL}, + {name: '요청', value: CashReceiptProcessResult.REQUEST}, + {name: '요청취소', value: CashReceiptProcessResult.REQUEST_CANCEL}, + {name: '요청완료', value: CashReceiptProcessResult.REQUEST_COMPLETE}, + {name: '발급완료', value: CashReceiptProcessResult.ISSUE_COMPLETE}, + {name: '요청실패', value: CashReceiptProcessResult.REQUEST_FAIL}, + {name: '발급실패', value: CashReceiptProcessResult.ISSUE_FAIL}, +]; +export const EscrowSearchTypeOptionsGroup = [ + {name: '주문번호', value: EscrowSearchType.ORDER_NUMBER }, + {name: 'TID', value: EscrowSearchType.TID } +]; +export const EscrowDeliveryStatusBtnGroup = [ {name: '전체', value: EscrowDeliveryStatus.ALL}, {name: '결제완료', value: EscrowDeliveryStatus.PAY_COMPLETE}, {name: '배송등록', value: EscrowDeliveryStatus.DELIVERY_INSERT}, @@ -16,24 +44,28 @@ export const deliveryStatusBtnGroup = [ {name: '환불처리', value: EscrowDeliveryStatus.RETURN_PROCESSING}, {name: '지급완료', value: EscrowDeliveryStatus.DEPOSIT_COMPLETE}, ]; -export let settlementStatusBtnGroup = [ +export let EscrowSettlementStatusBtnGroup = [ {name: '전체', value: EscrowSettlementStatus.ALL}, {name: '신용카드', value: EscrowSettlementStatus.CREDIT_CARD}, {name: '가상계좌', value: EscrowSettlementStatus.REAL_ACCOUNT}, {name: '계좌이체', value: EscrowSettlementStatus.ACCOUNT_TRANSFER}, ]; -export const requestStatusBtnGroup = [ +export const BillingSearchTypeOptionsGroup = [ + {name: '주문번호', value: BillingSearchType.ORDER_NUMBER }, + {name: 'TID', value: BillingSearchType.TID } +]; +export const BillingRequestStatusBtnGroup = [ {name: '전체', value: BillingRequestStatus.ALL}, {name: '진행중', value: BillingRequestStatus.IN_PROGRESS}, {name: '성공', value: BillingRequestStatus.SUCCESS}, {name: '요청취소', value: BillingRequestStatus.REQUEST_CANCEL}, ]; -export const processResultBtnGroup = [ +export const BillingProcessResultBtnGroup = [ {name: '전체', value: BillingProcessResult.ALL}, {name: '성공', value: BillingProcessResult.SUCCESS}, {name: '실패', value: BillingProcessResult.FAILURE}, ]; -export const paymentMethodBtnGroup = [ +export const BillingPaymentMethodBtnGroup = [ {name: '전체', value: BillingPaymentMethod.ALL}, {name: '신용카드', value: BillingPaymentMethod.CREDIT_CARD}, {name: '가상계좌', value: BillingPaymentMethod.VIRTUAL_ACCOUNT}, diff --git a/src/entities/transaction/model/types.ts b/src/entities/transaction/model/types.ts index dc4ceca..169b917 100644 --- a/src/entities/transaction/model/types.ts +++ b/src/entities/transaction/model/types.ts @@ -33,11 +33,25 @@ export enum ProcessStep { One = 'One', Two = 'Two', }; -export enum CashReceiptPurpose { +export enum CashReceiptPurposeType { ALL = 'ALL', INCOME_DEDUCTION = 'INCOME_DEDUCTION', EXPENSE_PROOF = 'EXPENSE_PROOF', }; +export enum CashReceiptIssueStatus { + ALL = 'ALL', + APPROVAL = 'APPROVAL', + CANCEL = 'CANCEL', +}; +export enum CashReceiptProcessResult { + ALL = 'ALL', + REQUEST = 'REQUEST', + REQUEST_CANCEL = 'REQUEST_CANCEL', + REQUEST_COMPLETE = 'REQUEST_COMPLETE', + ISSUE_COMPLETE = 'ISSUE_COMPLETE', + REQUEST_FAIL = 'REQUEST_FAIL', + ISSUE_FAIL = 'ISSUE_FAIL', +}; export enum EscrowSearchType { ALL = 'ALL', ORDER_NUMBER = 'ORDER_NUMBER', @@ -206,7 +220,7 @@ export interface CashReceiptListParams { mid: string; startDate: string; endDate: string; - purposeType: string; + purposeType: CashReceiptPurposeType; issueStatus: string; processResult: string; pagination: DefaultRequestPagination @@ -352,7 +366,7 @@ export interface IssueInfo { approvalNumber?: number; issueNumber?: number; issueDateTime?: string; - purpose?: CashReceiptPurpose; + purpose?: CashReceiptPurposeType; paymentMethod?: string; productName?: string; transmissionStatus?: string; @@ -416,7 +430,7 @@ export interface DetailInfoProps extends DetailResponse { show?: boolean; tid?: string; serviceCode?: string; - purpose?: CashReceiptPurpose; + purposeType?: CashReceiptPurposeType; onClickToShowInfo?: (info: InfoWrapKeys) => void; } export interface DetailArrowProps { @@ -471,13 +485,24 @@ export interface AllTransactionFilterProps extends FilterProps { }; export interface CashReceiptFilterProps extends FilterProps { - + mid : string; + startDate: string; + endDate: string; + purposeType: CashReceiptPurposeType; + issueStatus: CashReceiptIssueStatus; + processResult: CashReceiptProcessResult; + setMid: (mid: string) => void; + setStartDate: (startDate: string) => void; + setEndDate: (endDate: string) => void; + setPurposeType: (purposeType: CashReceiptPurposeType) => void; + setIssueStatus: (issueStatus: CashReceiptIssueStatus) => void; + setProcessResult: (processResult: CashReceiptProcessResult) => void; }; export interface EscrowFilterProps extends FilterProps { mid: string; searchType: EscrowSearchType; searchKeyword: string; - startDate: string + startDate: string; endDate: string; deliveryStatus: EscrowDeliveryStatus; settlementStatus: EscrowSettlementStatus; @@ -522,13 +547,13 @@ export interface CashReceiptPurposeUpdateParams { }; export interface CashReceiptPurposeUpdateResponse { issueNumber: number; - beforePurposeType: CashReceiptPurpose; - afterPurposeType: CashReceiptPurpose; + beforePurposeType: CashReceiptPurposeType; + afterPurposeType: CashReceiptPurposeType; updateDateTime: string; }; export interface CashReceiptManualIssueParams { businessNumber: string, - purpose: CashReceiptPurpose + purpose: CashReceiptPurposeType productName: string, buyerName: string, issueNumber: string, diff --git a/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx b/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx index 4833550..2547725 100644 --- a/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx +++ b/src/entities/transaction/ui/cash-receipt-hand-written-issuance-step1.tsx @@ -2,18 +2,18 @@ import { ChangeEvent } from 'react'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; -import { CashReceiptPurpose } from '../model/types'; +import { CashReceiptPurposeType } from '../model/types'; export interface CashReceiptHandWrittenIssuanceStep1Props { businessNumber?: string; - purpose?: CashReceiptPurpose; + purposeType?: CashReceiptPurposeType; productName?: string; buyerName?: string; issueNumber?: string; email?: string; phoneNumber?: string; setBusinessNumber: (businessNumber: string) => void; - setPurpose: (purpose: CashReceiptPurpose) => void; + setPurposeType: (purposeType: CashReceiptPurposeType) => void; setProductName: (productName: string) => void; setBuyerName: (buyerName: string) => void; setIssueNumber: (issueNumber: string) => void; @@ -23,14 +23,14 @@ export interface CashReceiptHandWrittenIssuanceStep1Props { export const CashReceiptHandWrittenIssuanceStep1 = ({ businessNumber, - purpose, + purposeType, productName, buyerName, issueNumber, email, phoneNumber, setBusinessNumber, - setPurpose, + setPurposeType, setProductName, setBuyerName, setIssueNumber, @@ -63,14 +63,14 @@ export const CashReceiptHandWrittenIssuanceStep1 = ({
diff --git a/src/entities/transaction/ui/filter/billing-filter.tsx b/src/entities/transaction/ui/filter/billing-filter.tsx index 3d7c917..072c3a3 100644 --- a/src/entities/transaction/ui/filter/billing-filter.tsx +++ b/src/entities/transaction/ui/filter/billing-filter.tsx @@ -8,9 +8,10 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterRangeAmount } from '@/shared/ui/filter/range-amount'; import { - requestStatusBtnGroup, - processResultBtnGroup, - paymentMethodBtnGroup + BillingSearchTypeOptionsGroup, + BillingRequestStatusBtnGroup, + BillingProcessResultBtnGroup, + BillingPaymentMethodBtnGroup } from '@/entities/transaction/model/contant'; import { BillingFilterProps, @@ -85,10 +86,7 @@ export const BillingFilter = ({ let MidOptions = [ {name: 'nictest001m', value: 'nictest001m'} ]; - let SearchTypeOptions = [ - {name: '주문번호', value: BillingSearchType.ORDER_NUMBER }, - {name: 'TID', value: BillingSearchType.TID } - ]; + useEffect(() => { setFilterRequestStatus(requestStatus); @@ -136,7 +134,7 @@ export const BillingFilter = ({ title='주문번호/ID' selectValue={ filterSearchType } selectSetter={ setFilterSearchType } - selectOptions={ SearchTypeOptions } + selectOptions={ BillingSearchTypeOptionsGroup } inputValue={ searchKeyword } inputSetter={ setFilterSearchKeyword } > @@ -151,19 +149,19 @@ export const BillingFilter = ({ diff --git a/src/entities/transaction/ui/filter/cash-receipt-filter.tsx b/src/entities/transaction/ui/filter/cash-receipt-filter.tsx index 80e6fdf..dcd7c1b 100644 --- a/src/entities/transaction/ui/filter/cash-receipt-filter.tsx +++ b/src/entities/transaction/ui/filter/cash-receipt-filter.tsx @@ -1,11 +1,46 @@ +import { useEffect } from 'react'; +import { useState } from 'react'; import { motion } from 'framer-motion'; import { IMAGE_ROOT } from '@/shared/constants/common'; -import { FilterProps } from '../../model/types'; +import { FilterSelect } from '@/shared/ui/filter/select'; +import { FilterSelectInput } from '@/shared/ui/filter/select-input'; +import { FilterCalendar } from '@/shared/ui/filter/calendar'; +import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; +import { + CashReceiptPurposeTypeBtnGroup, + CashReceiptIssueStatusBtnGroup, + CashReceiptProcessResultBtnGroup +} from '@/entities/transaction/model/contant'; +import { + CashReceiptFilterProps, + CashReceiptPurposeType, + CashReceiptIssueStatus, + CashReceiptProcessResult +} from '../../model/types'; export const CashReceiptFilter = ({ filterOn, - setFilterOn -}: FilterProps) => { + setFilterOn, + mid, + startDate, + endDate, + purposeType, + issueStatus, + processResult, + setMid, + setStartDate, + setEndDate, + setPurposeType, + setIssueStatus, + setProcessResult +}: CashReceiptFilterProps) => { + + const [filterMid, setFilterMid] = useState(mid); + const [filterStartDate, setFilterStartDate] = useState(startDate); + const [filterEndDate, setFilterEndDate] = useState(endDate); + const [filterPurposeType, setFilterPurposeType] = useState(purposeType); + const [filterIssueStatus, setFilterIssueStatus] = useState(issueStatus); + const [filterProcessResult, setFilterProcessResult] = useState(processResult); const variants = { hidden: { x: '100%' }, @@ -15,6 +50,28 @@ export const CashReceiptFilter = ({ const onClickToClose = () => { setFilterOn(false); }; + + const setNewDate = (newDate: any) => { + console.log(newDate) + }; + + const onClickToSetFilter = () => { + setMid(filterMid); + setStartDate(filterStartDate); + setEndDate(filterEndDate); + setPurposeType(filterPurposeType); + setIssueStatus(filterIssueStatus); + setProcessResult(filterProcessResult); + onClickToClose(); + }; + let MidOptions = [ + {name: 'nictest001m', value: 'nictest001m'} + ]; + + useEffect(() => { + setFilterIssueStatus(issueStatus); + }, [issueStatus]); + return ( <> -
-
-
가맹점
-
- -
-
- -
-
주문번호/ID
-
- - -
-
- -
-
조회기간
-
-
- 당일 - 일주일 - 1개월 - 직접입력 -
-
-
- - -
- ~ -
- - -
-
-
-
- -
-
요청상태
-
-
- 전체 - 진행중 - 성공 - 요청취소 -
-
-
- -
-
저리결과
-
-
- 전체 - 성공 - 실패 - -
-
-
- -
-
결제수단
-
- -
-
- -
-
거래금액
-
-
- -
- ~ -
- -
-
-
+
+ + + + + + +
- +
diff --git a/src/entities/transaction/ui/filter/escrow-filter.tsx b/src/entities/transaction/ui/filter/escrow-filter.tsx index f10315a..b0ab8aa 100644 --- a/src/entities/transaction/ui/filter/escrow-filter.tsx +++ b/src/entities/transaction/ui/filter/escrow-filter.tsx @@ -8,8 +8,8 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterRangeAmount } from '@/shared/ui/filter/range-amount'; import { - deliveryStatusBtnGroup, - settlementStatusBtnGroup + EscrowDeliveryStatusBtnGroup, + EscrowSettlementStatusBtnGroup } from '@/entities/transaction/model/contant'; import { EscrowFilterProps, @@ -145,13 +145,13 @@ export const EscrowFilter = ({ diff --git a/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx b/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx index 448f654..b995e23 100644 --- a/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx +++ b/src/entities/transaction/ui/info-wrap/issue-info-wrap.tsx @@ -5,7 +5,7 @@ import moment from 'moment'; export const IssueInfoWrap = ({ transactionCategory, issueInfo, - purpose, + purposeType, }: DetailInfoProps) => { return ( @@ -27,7 +27,7 @@ export const IssueInfoWrap = ({
  • 용도 - { purpose } + { purposeType }
  • 결제수단 diff --git a/src/pages/transaction/billing/list-page.tsx b/src/pages/transaction/billing/list-page.tsx index 1a24f37..c7298e0 100644 --- a/src/pages/transaction/billing/list-page.tsx +++ b/src/pages/transaction/billing/list-page.tsx @@ -11,6 +11,7 @@ import { useDownloadExcelMutation } from '@/entities/transaction/api/use-downloa import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constants'; import { BillingFilter } from '@/entities/transaction/ui/filter/billing-filter'; import { SortOptionsBox } from '@/entities/transaction/ui/sort-options-box'; +import { BillingRequestStatusBtnGroup } from '@/entities/transaction/model/contant'; import { HeaderType } from '@/entities/common/model/types'; import { useSetOnBack, @@ -19,13 +20,6 @@ import { useSetFooterMode } from '@/widgets/sub-layout/use-sub-layout'; -const requestStatusBtnGroup = [ - {name: '전체', value: BillingRequestStatus.ALL}, - {name: '진행중', value: BillingRequestStatus.IN_PROGRESS}, - {name: '성공', value: BillingRequestStatus.SUCCESS}, - {name: '요청취소', value: BillingRequestStatus.REQUEST_CANCEL} -]; - export const BillingListPage = () => { const { navigate } = useNavigate(); const userInfo = useStore((state) => state.UserStore.UserInfo); @@ -170,7 +164,7 @@ export const BillingListPage = () => {
    { - requestStatusBtnGroup.map((value, index) => ( + BillingRequestStatusBtnGroup.map((value, index) => ( { const [detailInfo, setDetailInfo] = useState(); const [showDetailInfo, setShowDetailInfo] = useState(false); const [bottomSheetOn, setBottomSheetOn] = useState(false); - const [purpose, setPurpose] = useState(); + const [purposeType, setPurposeType] = useState(); useSetHeaderTitle('현금영수증 상세'); useSetHeaderType(HeaderType.RightClose); @@ -47,14 +47,14 @@ export const CashReceiptDetailPage = () => { const { mutateAsync: cashReceiptPurposeUpdate } = useCashReceiptPurposeUpdateMutation(); const callPurposeUpdate = () => { - let newPurpose = (purpose === CashReceiptPurpose.EXPENSE_PROOF) - ? CashReceiptPurpose.INCOME_DEDUCTION: CashReceiptPurpose.EXPENSE_PROOF; + let newPurpose = (purposeType === CashReceiptPurposeType.EXPENSE_PROOF) + ? CashReceiptPurposeType.INCOME_DEDUCTION: CashReceiptPurposeType.EXPENSE_PROOF; let params = { issueNumber: issueNumber, newPurpose: newPurpose }; cashReceiptPurposeUpdate(params).then((rs) => { - setPurpose(rs.afterPurposeType); + setPurposeType(rs.afterPurposeType); setBottomSheetOn(false); alert('toast : 용도 변경을 성공하였습니다.') }); @@ -68,7 +68,7 @@ export const CashReceiptDetailPage = () => { setIssueInfo(rs.issueInfo); setDetailInfo(rs.detailInfo); if(rs.issueInfo){ - setPurpose(rs.issueInfo.purpose); + setPurposeType(rs.issueInfo.purpose); } }); }; @@ -96,7 +96,7 @@ export const CashReceiptDetailPage = () => {
    { // 1 or 2 const [processStep, setProcessStep] = useState(ProcessStep.One); const [businessNumber, setBusinessNumber] = useState('5459577852'); - const [purpose, setPurpose] = useState(CashReceiptPurpose.INCOME_DEDUCTION); + const [purposeType, setPurposeType] = useState(CashReceiptPurposeType.INCOME_DEDUCTION); const [productName, setProductName] = useState('상품명'); const [buyerName, setBuyerName] = useState('구매자명'); const [issueNumber, setIssueNumber] = useState('01012341234'); @@ -34,7 +34,7 @@ export const CashReceitHandWrittenIssuancePage = () => { const callManualIssue = () => { let params = { businessNumber: businessNumber, - purpose: purpose, + purpose: purposeType, productName: productName, buyerName: buyerName, issueNumber: issueNumber, @@ -89,14 +89,14 @@ export const CashReceitHandWrittenIssuancePage = () => { { (processStep === ProcessStep.One) && { const { navigate } = useNavigate(); - const [selectedServiceCode, setSelectedServiceCode] = useState('all'); const [sortBy, setSortBy] = useState(SortByKeys.New); const [listItems, setListItems] = useState({}); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); - const [startDate, setStartDate] = useState(moment().subtract(1, 'month').format('YYYYMMDD')); - const [endDate, setEndDate] = useState(moment().format('YYYYMMDD')); + 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); @@ -50,15 +48,15 @@ export const CashReceiptListPage = () => { sortBy?: string, val?: string }) => { - pageParam.sortBy = (option?.sortBy) ? option.sortBy : sortBy; - setPageParam(pageParam); + pageParam.sortBy = (option?.sortBy)? option.sortBy: sortBy; + setPageParam(pageParam); let listParams = { - mid: 'string', - startDate: '2025-06-08', - endDate: '2025-06-08', - purposeType: 'ALL', - issueStatus: 'ALL', - processResult: 'ALL', + mid: mid, + startDate: startDate, + endDate: endDate, + purposeType: purposeType, + issueStatus: issueStatus, + processResult: processResult, pagination: pageParam }; @@ -101,8 +99,8 @@ export const CashReceiptListPage = () => { callList({ sortBy: sort }); }; - const onClickToServiceCode = (val: string) => { - setSelectedServiceCode(val); + const onClickToIssueStatus = (val: CashReceiptIssueStatus) => { + setIssueStatus(val); callList({ val: val }); }; @@ -192,11 +190,11 @@ export const CashReceiptListPage = () => {
    { - serviceCodes.map((value, index) => ( + CashReceiptIssueStatusBtnGroup.map((value, index) => ( onClickToServiceCode(value.key)} + className={`keyword-tag ${(issueStatus === value.value) ? 'active' : ''}`} + onClick={() => onClickToIssueStatus(value.value)} >{value.name} )) } @@ -210,10 +208,22 @@ export const CashReceiptListPage = () => {
    - + ); }; \ No newline at end of file diff --git a/src/pages/transaction/escrow/list-page.tsx b/src/pages/transaction/escrow/list-page.tsx index 97c3390..4a32de6 100644 --- a/src/pages/transaction/escrow/list-page.tsx +++ b/src/pages/transaction/escrow/list-page.tsx @@ -10,7 +10,7 @@ import { useEscrowListMutation } from '@/entities/transaction/api/use-escrow-lis import { useDownloadExcelMutation } from '@/entities/transaction/api/use-download-excel-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constants'; import { EscrowFilter } from '@/entities/transaction/ui/filter/escrow-filter'; -import { deliveryStatusBtnGroup } from '@/entities/transaction/model/contant'; +import { EscrowDeliveryStatusBtnGroup } from '@/entities/transaction/model/contant'; import { SortOptionsBox } from '@/entities/transaction/ui/sort-options-box'; import { HeaderType } from '@/entities/common/model/types'; import { @@ -162,7 +162,7 @@ export const EscrowListPage = () => {
    { - deliveryStatusBtnGroup.map((value, index) => ( + EscrowDeliveryStatusBtnGroup.map((value, index) => (