- 자금이체 : 이체신청 API 추가

- 은행목록 추가
- 알림톡: 상세 페이지 및 Types 수정
This commit is contained in:
HyeonJongKim
2025-10-23 17:18:05 +09:00
parent 20e532bd68
commit 7ce247a743
18 changed files with 243 additions and 168 deletions

View File

@@ -12,7 +12,7 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant';
import { useStore } from '@/shared/model/store';
import { AccountHolderSearchFilterProps, AccountHolderSearchType } from '@/entities/additional-service/model/account-holder-search/types';
import { AccountHolderSearchFilterProps, AccountHolderSearchCl, AccountHolderResultStatus } from '@/entities/additional-service/model/account-holder-search/types';
export const AccountHolderSearchFilter = ({
filterOn,
@@ -23,23 +23,23 @@ export const AccountHolderSearchFilter = ({
startDate,
endDate,
bank,
processResult,
resultStatus,
setMid,
setSearchType,
setSearchKeyword,
setStartDate,
setEndDate,
setBank,
setProcessResult
setResultStatus
}: AccountHolderSearchFilterProps) => {
const [filterMid, setFilterMid] = useState<string>(mid);
const [filterSearchType, setFilterSearchType] = useState<AccountHolderSearchType>(searchType);
const [filterSearchType, setFilterSearchType] = useState<AccountHolderSearchCl>(searchType);
const [filterSearchKeyword, setFilterSearchKeyword] = useState<string>(searchKeyword);
const [filterStartDate, setFilterStartDate] = useState<string>(moment(startDate).format('YYYY.MM.DD'));
const [filterEndDate, setFilterEndDate] = useState<string>(moment(endDate).format('YYYY.MM.DD'));
const [filterBank, setFilterBank] = useState<string>(bank)
const [filterProcessResult, setFilterProcessResult] = useState<ProcessResult>(processResult);
const [filterResultStatus, setFilterResultStatus] = useState<AccountHolderResultStatus>(resultStatus);
const midOptions = useStore.getState().UserStore.selectOptionsMids;
@@ -58,7 +58,7 @@ export const AccountHolderSearchFilter = ({
setStartDate(filterStartDate);
setEndDate(filterEndDate);
setBank(filterBank);
setProcessResult(filterProcessResult);
setResultStatus(filterResultStatus);
onClickToClose();
};
@@ -68,8 +68,8 @@ export const AccountHolderSearchFilter = ({
];
let searchTypeOption = [
{ name: '예금주', value: AccountHolderSearchType.ACCOUNT_NAME },
{ name: '계좌번호', value: AccountHolderSearchType.ACCOUNT_NO },
{ name: '예금주', value: AccountHolderSearchCl.ACCOUNT_NAME },
{ name: '계좌번호', value: AccountHolderSearchCl.ACCOUNT_NO },
];
let processResultBtnGroup = [
@@ -137,9 +137,9 @@ export const AccountHolderSearchFilter = ({
<FilterButtonGroups
title='조회결과'
activeValue={filterProcessResult}
activeValue={filterResultStatus}
btnGroups={processResultBtnGroup}
setter={setFilterProcessResult}
setter={setFilterResultStatus}
></FilterButtonGroups>
</div>
<div className="apply-row">

View File

@@ -6,7 +6,7 @@ import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@
import { IMAGE_ROOT } from '@/shared/constants/common';
import { FilterSelect } from '@/shared/ui/filter/select';
import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FundAccountReceiveBankCodeOptionsGroup, FundAccountResultSearchDateTypeBtnGroup, FundAccountResultStatusBtnGroup, FundAccountSearchClOptionsGroup, FundAccountStatusBtnGroup } from '../../model/fund-account/constant';
import { FundAccountResultSearchDateTypeBtnGroup, FundAccountResultStatusBtnGroup, FundAccountSearchClOptionsGroup, FundAccountStatusBtnGroup } from '../../model/fund-account/constant';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { FilterSelectInput } from '@/shared/ui/filter/select-input';
import { useStore } from '@/shared/model/store';
@@ -61,6 +61,11 @@ export const FundAccountResultFilter = ({
const [filterBankCode, setFilterBankCode] = useState<string>(bankCode);
const [filterResultStatus, setFilterResultStatus] = useState<FundAccountResultStatus>(resultStatus);
const bankList = useStore.getState().CommonStore.bankList;
const bankOptions = bankList
.filter((bank) => bank.code1 !== '****')
.map((bank) => ({ name: bank.desc1, value: bank.code1 }));
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const onClickToClose = () => {
@@ -147,7 +152,7 @@ export const FundAccountResultFilter = ({
title='은행'
selectValue={filterBankCode}
selectSetter={setFilterBankCode}
selectOptions={FundAccountReceiveBankCodeOptionsGroup}
selectOptions={bankOptions}
></FilterSelect>
<FilterButtonGroups
title='처리 결과'

View File

@@ -6,7 +6,7 @@ import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@
import { IMAGE_ROOT } from '@/shared/constants/common';
import { FilterSelect } from '@/shared/ui/filter/select';
import { FilterCalendar } from '@/shared/ui/filter/calendar';
import { FundAccountReceiveBankCodeOptionsGroup, FundAccountSearchClOptionsGroup, FundAccountStatusBtnGroup } from '../../model/fund-account/constant';
import { FundAccountSearchClOptionsGroup, FundAccountStatusBtnGroup } from '../../model/fund-account/constant';
import { FilterButtonGroups } from '@/shared/ui/filter/button-groups';
import { FilterSelectInput } from '@/shared/ui/filter/select-input';
import { useStore } from '@/shared/model/store';
@@ -49,7 +49,7 @@ export const FundAccountTransactionFilter = ({
}: FundAccountTransactionFilterProps) => {
const [filterMid, setFilterMid] = useState<string>(mid);
const [filterSearchCl,setFilterSearchCl] = useState<FundAccountSearchCl>(searchCl);
const [filterSearchCl, setFilterSearchCl] = useState<FundAccountSearchCl>(searchCl);
const [filterSearchValue, setFilterSearchValue] = useState<string>(searchValue);
const [filterFromDate, setFilterFromDate] = useState<string>(moment(fromDate).format('YYYYMMDD'));
const [filterToDate, setFilterToDate] = useState<string>(moment(toDate).format('YYYYMMDD'));
@@ -57,21 +57,26 @@ export const FundAccountTransactionFilter = ({
const [filterStatus, setFilterStatus] = useState<FundAccountStatus>(status);
const midOptions = useStore.getState().UserStore.selectOptionsMids;
const bankList = useStore.getState().CommonStore.bankList;
const bankOptions = bankList
.filter((bank) => bank.code1 !== '****')
.map((bank) => ({ name: bank.desc1, value: bank.code1 }));
const onClickToClose = () => {
setFilterOn(false);
};
const onClickToSetFilter = () => {
setMid(filterMid);
if(filterSearchCl === FundAccountSearchCl.ACCOUNT_NAME){
if (filterSearchCl === FundAccountSearchCl.ACCOUNT_NAME) {
setSearchCl(filterSearchCl);
setSearchValue(filterSearchValue);
}
else if(filterSearchCl === FundAccountSearchCl.ACCOUNT_NO){
else if (filterSearchCl === FundAccountSearchCl.ACCOUNT_NO) {
setSearchCl(filterSearchCl);
setSearchValue(filterSearchValue);
setSearchValue(filterSearchValue);
}
setFromDate(filterFromDate);
setToDate(filterToDate);
setBankCode(filterBankCode);
@@ -85,26 +90,26 @@ export const FundAccountTransactionFilter = ({
return (
<>
<motion.div
className="full-menu-modal"
<motion.div
className="full-menu-modal"
initial="hidden"
animate={ (filterOn)? 'visible': 'hidden' }
variants={ FilterMotionVariants }
transition={ FilterMotionDuration }
style={ FilterMotionStyle }
animate={(filterOn) ? 'visible' : 'hidden'}
variants={FilterMotionVariants}
transition={FilterMotionDuration}
style={FilterMotionStyle}
>
<div className="full-menu-container">
<div className="full-menu-header">
<div className="full-menu-title center"></div>
<div className="full-menu-actions">
<button
<button
id="closeFullMenu"
className="full-menu-close"
>
<img
src={ IMAGE_ROOT + '/ico_close.svg' }
<img
src={IMAGE_ROOT + '/ico_close.svg'}
alt="닫기"
onClick={ () => onClickToClose() }
onClick={() => onClickToClose()}
/>
</button>
</div>
@@ -112,42 +117,42 @@ export const FundAccountTransactionFilter = ({
<div className="option-list pt-16">
<FilterSelect
title='가맹점'
selectValue={ filterMid }
selectSetter={ setFilterMid }
selectOptions={ midOptions }
selectValue={filterMid}
selectSetter={setFilterMid}
selectOptions={midOptions}
></FilterSelect>
<FilterSelectInput
title='수취인/계좌번호'
selectValue={ filterSearchCl }
selectSetter={ setFilterSearchCl }
selectOptions={ FundAccountSearchClOptionsGroup }
inputValue={ filterSearchValue }
inputSetter={ setFilterSearchValue }
selectValue={filterSearchCl}
selectSetter={setFilterSearchCl}
selectOptions={FundAccountSearchClOptionsGroup}
inputValue={filterSearchValue}
inputSetter={setFilterSearchValue}
></FilterSelectInput>
<FilterCalendar
title='조회기간'
startDate={ filterFromDate }
endDate={ filterToDate }
setStartDate={ setFilterFromDate }
setEndDate={ setFilterToDate }
startDate={filterFromDate}
endDate={filterToDate}
setStartDate={setFilterFromDate}
setEndDate={setFilterToDate}
></FilterCalendar>
<FilterSelect
title='은행'
selectValue={ filterBankCode }
selectSetter={ setFilterBankCode }
selectOptions={ FundAccountReceiveBankCodeOptionsGroup }
selectValue={filterBankCode}
selectSetter={setFilterBankCode}
selectOptions={bankOptions}
></FilterSelect>
<FilterButtonGroups
title='처리 결과'
activeValue={ filterStatus }
btnGroups={ FundAccountStatusBtnGroup }
setter={ setFilterStatus }
activeValue={filterStatus}
btnGroups={FundAccountStatusBtnGroup}
setter={setFilterStatus}
></FilterButtonGroups>
</div>
<div className="apply-row">
<button
<button
className="btn-50 btn-blue flex-1"
onClick={ () => onClickToSetFilter() }
onClick={() => onClickToSetFilter()}
></button>
</div>
</div>

View File

@@ -68,6 +68,7 @@ export const ListDateGroup = ({
sendCl={ items[i]?.sendCl }
paymentMethod={ items[i]?.paymentMethod }
receiverName={ items[i]?.receiverName }
serviceCode={ items[i]?.serviceCode}
smsCl= { items[i]?.smsCl }
onResendClick={ onResendClick }

View File

@@ -10,7 +10,7 @@ import { getSmsClName } from '../model/sms-payment/constant';
import { getKeyInPaymentPaymentStatusName } from '../model/key-in/constant';
import { getArsPaymentStatusName, getArsOrderStatusName } from '../model/ars/constant';
import { ServiceCode } from '../model/alimtalk/types';
import { getAlimtalkServiceCodeText } from '../model/alimtalk/constant';
import { getAlimtalkAlimClText, getAlimtalkSendClTypeText, getAlimtalkSendTypeText, getAlimtalkServiceCodeText } from '../model/alimtalk/constant';
export const ListItem = ({
additionalServiceCategory,
@@ -30,7 +30,7 @@ export const ListItem = ({
paymentMethod, receiverName,
requestId,subReqId,
buyerName,receiverInfo,
seq,serviceCode,
seq,serviceCode,sendDate,
smsCl,
name,
@@ -277,7 +277,7 @@ export const ListItem = ({
timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4);
}
else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) {
let time = paymentDate?.substring(8, 12);
let time = sendDate?.substring(8, 12);
timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4);
}
else {
@@ -353,7 +353,7 @@ export const ListItem = ({
str = '이름(' + tid + ')';
}
else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) {
str = `${receiverName}(${getAlimtalkServiceCodeText(serviceCode)})`;
str = `${receiverName}(${getAlimtalkSendTypeText(sendType)})`;
}
return str;
@@ -478,13 +478,14 @@ export const ListItem = ({
);
}
else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) {
console.log(serviceCode)
rs.push(
<div className="transaction-details">
<span>{getTime()}</span>
<span className="separator">|</span>
<span>{paymentMethod}</span>
<span>{getAlimtalkServiceCodeText(serviceCode)}</span>
<span className="separator">|</span>
<span>{alimCl}</span>
<span>{getAlimtalkAlimClText(alimCl)}</span>
</div>
);
}
@@ -598,10 +599,8 @@ export const ListItem = ({
}
else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) {
rs.push(
<div
key="payout-item-amount"
className="transaction-amount"
>{sendCl}</div>
<div key="payout-item-amount" className={`status-label ${(sendCl === 'REQUEST' || sendCl === 'SUCCESS') ? 'success' : 'fail'}`}
>{getAlimtalkSendClTypeText(sendCl)}</div>
);
}
else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment && onResendClick && tid) {