- 지급대행 입금확인서 다운로드 활성화 조건 수정

- 일부 확인 스낵바 문자열 다국어화 적용
This commit is contained in:
HyeonJongKim
2025-11-11 18:14:03 +09:00
parent 297215fe09
commit b72d68ede6
11 changed files with 69 additions and 49 deletions

View File

@@ -29,6 +29,7 @@ export interface PayoutListItem {
companyName?: string; companyName?: string;
status?: PayoutDisbursementStatus; status?: PayoutDisbursementStatus;
amount?: number; amount?: number;
depositAmount?: number;
}; };
export interface ExtensionPayoutRequestParams { export interface ExtensionPayoutRequestParams {
@@ -93,4 +94,12 @@ export interface ExtensionPayoutDetailDownloadCertificateParams extends Extensio
email: string; email: string;
}; };
export interface ExtensionPayoutDetailDownloadCertificateResponse { }; export interface ExtensionPayoutDetailDownloadCertificateResponse {
depositDateTime?: string;
depositBank?: string;
depositAccount?: string;
amount?: number;
depositRemark?: string;
depositId?: string;
message?: string;
};

View File

@@ -154,6 +154,7 @@ export interface DetailData {
requestId?: string; requestId?: string;
subReqId?: string; subReqId?: string;
detailOn: boolean; detailOn: boolean;
depositAmount?: number;
} }
// ======================================== // ========================================

View File

@@ -64,6 +64,7 @@ export const ListDateGroup = ({
settlementDate={ items[i]?.settlementDate } settlementDate={ items[i]?.settlementDate }
companyName={ items[i]?. companyName } companyName={ items[i]?. companyName }
status={ items[i]?.status } status={ items[i]?.status }
depositAmount={ items[i]?.depositAmount }
orderStatus={ items[i]?.orderStatus } orderStatus={ items[i]?.orderStatus }
orderTime={ items[i]?.orderTime } orderTime={ items[i]?.orderTime }

View File

@@ -35,7 +35,8 @@ export const ListItem = ({
authResult, failReason, requestTime, authResult, failReason, requestTime,
resendEnabled, resendEnabled,
onResendClick, onResendClick,
setDetailData setDetailData,
depositAmount
}: ListItemProps) => { }: ListItemProps) => {
const { navigate } = useNavigate(); const { navigate } = useNavigate();
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
@@ -222,7 +223,8 @@ export const ListItem = ({
setDetailData({ setDetailData({
mid: mid, mid: mid,
tid: tid, tid: tid,
detailOn: true detailOn: true,
depositAmount: depositAmount
}); });
} }
} }

View File

@@ -12,19 +12,22 @@ import { showAlert } from '@/widgets/show-alert';
import { checkGrant } from '@/shared/lib/check-grant'; import { checkGrant } from '@/shared/lib/check-grant';
import { snackBar } from '@/shared/lib'; import { snackBar } from '@/shared/lib';
import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample'; import { DepositReceiptSample } from '@/entities/common/ui/deposit-receipt-sample';
import { DepositInfo } from '@/entities/transaction/model/types';
export interface PayoutDetailProps { export interface PayoutDetailProps {
detailOn: boolean; detailOn: boolean;
setDetailOn: (detailOn: boolean) => void; setDetailOn: (detailOn: boolean) => void;
mid: string; mid: string;
tid: string; tid: string;
depositAmount?: number;
}; };
export const PayoutDetail = ({ export const PayoutDetail = ({
detailOn, detailOn,
setDetailOn, setDetailOn,
mid, mid,
tid tid,
depositAmount
}: PayoutDetailProps) => { }: PayoutDetailProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
@@ -32,6 +35,7 @@ export const PayoutDetail = ({
const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false); const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false);
const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState<boolean>(false); const [depositReceiptSampleOn, setDepositReceiptSampleOn] = useState<boolean>(false);
const [depositReceiptData, setDepositReceiptData] = useState<ExtensionPayoutDetailDownloadCertificateResponse>();
const { mutateAsync: extensionPayoutDetail } = useExtensionPayoutDetailMutation(); const { mutateAsync: extensionPayoutDetail } = useExtensionPayoutDetailMutation();
const { mutateAsync: extensionPayoutDetailDownloadCertification } = useExtensionPayoutDetailDownloadCertificateMutation(); const { mutateAsync: extensionPayoutDetailDownloadCertification } = useExtensionPayoutDetailDownloadCertificateMutation();
@@ -70,12 +74,13 @@ export const PayoutDetail = ({
requestType: selectedMode, requestType: selectedMode,
email: '' email: ''
}; };
extensionPayoutDetailDownloadCertification(params).then((rs: ExtensionPayoutDetailDownloadCertificateResponse) => { extensionPayoutDetailDownloadCertification(params).then((rs: any) => {
console.log('Certificate Download Status:', rs); console.log('Certificate Download Status:', rs);
if (selectedMode === DownloadSelectedMode.IMAGE) { if (selectedMode === DownloadSelectedMode.IMAGE) {
setDepositReceiptSampleOn(true) setDepositReceiptData(rs);
setDepositReceiptSampleOn(true);
} else if (selectedMode === DownloadSelectedMode.EMAIL) { } else if (selectedMode === DownloadSelectedMode.EMAIL) {
snackBar('입금확인서 다운 성공') console.log('Certificate Download Status:', rs);
} }
}).catch((error) => { }).catch((error) => {
console.error('Certificate Download Failed:', error); console.error('Certificate Download Failed:', error);
@@ -136,16 +141,18 @@ export const PayoutDetail = ({
</div> </div>
<div className="num-store">{detail?.companyName}</div> <div className="num-store">{detail?.companyName}</div>
<div className="num-day">{moment(detail?.settlementDate).format('YYYY.MM.DD')}</div> <div className="num-day">{moment(detail?.settlementDate).format('YYYY.MM.DD')}</div>
<div className="receipt-row"> {depositAmount != null && (
<button <div className="receipt-row">
className="receipt-btn" <button
type="button" className="receipt-btn"
onClick={onClickToOpenDownloadBottomSheet} type="button"
> onClick={onClickToOpenDownloadBottomSheet}
<span className="icon-24 download"></span> >
<span>{t('additionalService.payout.depositCertificate')}</span> <span className="icon-24 download"></span>
</button> <span>{t('additionalService.payout.depositCertificate')}</span>
</div> </button>
</div>
)}
</div> </div>
<div className="detail-divider"></div> <div className="detail-divider"></div>
<div className="pay-detail"> <div className="pay-detail">
@@ -208,6 +215,14 @@ export const PayoutDetail = ({
<DepositReceiptSample <DepositReceiptSample
depositReceiptSampleOn={depositReceiptSampleOn} depositReceiptSampleOn={depositReceiptSampleOn}
setDepositReceiptSampleOn={setDepositReceiptSampleOn} setDepositReceiptSampleOn={setDepositReceiptSampleOn}
depositInfo={{
depositDate: depositReceiptData?.depositDateTime ? moment(depositReceiptData.depositDateTime, 'YYYYMMDDHHmmss').format('YYYY/MM/DD HH:mm:ss') : undefined,
depositBank: depositReceiptData?.depositBank,
depositAccount: depositReceiptData?.depositAccount,
amount: depositReceiptData?.amount,
depositReason: depositReceiptData?.depositRemark,
depositId: depositReceiptData?.depositId
}}
></DepositReceiptSample> ></DepositReceiptSample>
} }
</> </>

View File

@@ -95,7 +95,7 @@ export const DepositReceiptSample = ({
value={depositInfo?.amount} value={depositInfo?.amount}
thousandSeparator thousandSeparator
displayType='text' displayType='text'
suffix='원' suffix=' 원'
> >
</NumericFormat> </NumericFormat>
</div> </div>

View File

@@ -1020,7 +1020,8 @@
"select": "Select", "select": "Select",
"request": "Request", "request": "Request",
"searchRequest": "Search Request", "searchRequest": "Search Request",
"searchRequestSuccess": "Search Reqeust Complete" "searchRequestSuccess": "Search Reqeust Complete",
"accountNumberWrong": "Invalid account number. Please check the account number."
}, },
"faceAuth": { "faceAuth": {
"authentication": "Authentication", "authentication": "Authentication",

View File

@@ -1020,7 +1020,8 @@
"select": "선택", "select": "선택",
"request": "신청", "request": "신청",
"searchRequest": "조회 신청", "searchRequest": "조회 신청",
"searchRequestSuccess": "조회 신청을 성공하였습니다." "searchRequestSuccess": "조회 신청을 성공하였습니다.",
"accountNumberWrong": "잘못된 계좌번호입니다. 계좌번호를 확인해주세요."
}, },
"faceAuth": { "faceAuth": {
"authentication": "인증", "authentication": "인증",

View File

@@ -172,13 +172,12 @@ export const AccountHolderSearchPage = () => {
bankCode: bank, bankCode: bank,
resultStatus: resultStatus resultStatus: resultStatus
}).then((rs) => { }).then((rs) => {
// if (rs.status) { console.log('Excel Download Status:', rs.status);
// setTimeout(() => { }).catch((e: any) => {
// snackBar("다운로드가 완료되었습니다."); if(e.response?.data?.error?.message){
// }, 2000); snackBar(e.response?.data?.error?.message);
// } else { return;
// snackBar("다운로드에 실패했습니다.") }
// }
}); });
} }
}; };

View File

@@ -20,9 +20,6 @@ import { AccountHolderSearchDetail } from '@/entities/additional-service/ui/acco
export const AccountHolderSearchRequestPage = () => { export const AccountHolderSearchRequestPage = () => {
const { navigate } = useNavigate(); const { navigate } = useNavigate();
const { t } = useTranslation(); const { t } = useTranslation();
// const [detailOn, setDetailOn] = useState<boolean>(false);
// const [detailMid, setDetailMid] = useState<string>('');
// const [detailTid, setDetailTid] = useState<string>('');
const userMid = useStore.getState().UserStore.mid; const userMid = useStore.getState().UserStore.mid;
const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids; const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids;
@@ -59,16 +56,6 @@ export const AccountHolderSearchRequestPage = () => {
setFormData({ ...formData, [field]: value }); setFormData({ ...formData, [field]: value });
}; };
// const setDetailData = (response: ExtensionAccountHolderSearchRequestResponse) => {
// if (formData.mid) {
// setDetailMid(formData.mid);
// }
// if (response?.data?.tid) {
// setDetailTid(response.data.tid);
// }
// setDetailOn(true);
// }
const onClickToRequest = () => { const onClickToRequest = () => {
const requestParams: ExtensionAccountHolderSearchRequestParams = { const requestParams: ExtensionAccountHolderSearchRequestParams = {
mid: formData.mid, mid: formData.mid,
@@ -83,10 +70,15 @@ export const AccountHolderSearchRequestPage = () => {
console.log("Account holder search request success: ", response.status) console.log("Account holder search request success: ", response.status)
snackBar(t('additionalService.accountHolderSearch.searchRequestSuccess')) snackBar(t('additionalService.accountHolderSearch.searchRequestSuccess'))
navigate(PATHS.additionalService.accountHolderSearch.list); navigate(PATHS.additionalService.accountHolderSearch.list);
//setDetailData(response)
} else { } else {
const errorMessage = response.error?.message || t('common.requestFailed'); console.log("AccountHolder Fail", response.error?.code)
snackBar(`[${t('common.failed')}] ${errorMessage}`); if (response.error?.code === "007") {
const errorMessage = t('additionalService.accountHolderSEarch.accountNumberWrong')
snackBar(`[${t('common.failed')}] ${errorMessage}`)
} else {
const errorMessage = response.error?.message || t('common.requestFailed');
snackBar(`[${t('common.failed')}] ${errorMessage}`);
}
} }
}) })
.catch((e) => { .catch((e) => {
@@ -180,12 +172,6 @@ export const AccountHolderSearchRequestPage = () => {
</div> </div>
</div> </div>
</main> </main>
{/* <AccountHolderSearchDetail
detailOn={detailOn}
setDetailOn={setDetailOn}
mid={detailMid}
tid={detailTid}
></AccountHolderSearchDetail> */}
</> </>
) )
} }

View File

@@ -65,6 +65,7 @@ export const PayoutListPage = () => {
const [detailOn, setDetailOn] = useState<boolean>(false); const [detailOn, setDetailOn] = useState<boolean>(false);
const [detailMid, setDetailMid] = useState<string>(''); const [detailMid, setDetailMid] = useState<string>('');
const [detailTid, setDetailTid] = useState<string>(''); const [detailTid, setDetailTid] = useState<string>('');
const [detailDepositAmount, setDetailDepositAmount] = useState<number | undefined>();
const { mutateAsync: extensionPayoutList } = useExtensionPayoutListMutation(); const { mutateAsync: extensionPayoutList } = useExtensionPayoutListMutation();
const { mutateAsync: extensionPayoutExcel } = useExtensionPayoutExcelMutation(); const { mutateAsync: extensionPayoutExcel } = useExtensionPayoutExcelMutation();
@@ -196,6 +197,9 @@ export const PayoutListPage = () => {
if (detailData.tid) { if (detailData.tid) {
setDetailTid(detailData.tid); setDetailTid(detailData.tid);
} }
if (detailData.depositAmount !== undefined) {
setDetailDepositAmount(detailData.depositAmount);
}
}; };
const onClickToOpenFilter = () => { const onClickToOpenFilter = () => {
@@ -378,6 +382,7 @@ export const PayoutListPage = () => {
setDetailOn={setDetailOn} setDetailOn={setDetailOn}
mid={detailMid} mid={detailMid}
tid={detailTid} tid={detailTid}
depositAmount={detailDepositAmount}
> >
</PayoutDetail> </PayoutDetail>
{ !!downloadBottomSheetOn && { !!downloadBottomSheetOn &&