자금이체

This commit is contained in:
focp212@naver.com
2025-11-04 11:08:33 +09:00
parent 872a3f74db
commit 48bf13e749
9 changed files with 417 additions and 48 deletions

View File

@@ -150,6 +150,7 @@ export interface DetailInfoSectionProps extends DetailResponse {
export interface DetailData {
mid?: string;
tid?: string;
seq?: string;
detailOn: boolean;
}

View File

@@ -0,0 +1,180 @@
import { motion } from 'framer-motion';
import { useTranslation } from 'react-i18next';
import { useEffect, useState } from 'react';
import {
ExtensionFundAccountDownloadReceiptParams,
ExtensionFundAccountDownloadReceiptResponse,
ExtensionFundAccountResultDetailParams,
ExtensionFundAccountResultDetailResponse,
} from '@/entities/additional-service/model/fund-account/types';
import moment from 'moment';
import { useExtensionFundAccountResultDetailMutation } from '@/entities/additional-service/api/fund-account/use-extension-fund-account-result-detail-mutation';
import { useExtensionFundAccountDownloadReceiptMutation } from '@/entities/additional-service/api/fund-account/use-extension-fund-account-download-certificate-mutation';
import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet';
import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant';
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
export interface FundAccountResultDetailProps {
detailOn: boolean;
setDetailOn: (detailOn: boolean) => void;
mid: string;
tid: string;
};
export const FundAccountResultDetail = ({
detailOn,
setDetailOn,
mid,
tid
}: FundAccountResultDetailProps) => {
const { t } = useTranslation();
const [detail, setDetail] = useState<ExtensionFundAccountResultDetailResponse>();
const [emailBottomSheetOn, setEmailBottomSheetOn] = useState<boolean>(false);
const { mutateAsync: extensionFundAccountResultDetail } = useExtensionFundAccountResultDetailMutation();
const { mutateAsync: extensionFundAccountDownlaodReceipt } = useExtensionFundAccountDownloadReceiptMutation();
const callDetail = () => {
let params: ExtensionFundAccountResultDetailParams = {
mid: mid,
tid: tid,
};
extensionFundAccountResultDetail(params).then((rs: ExtensionFundAccountResultDetailResponse) => {
console.log(rs.requestDate)
setDetail(rs);
});
};
const onClickToOpenEmailBottomSheet = () => {
setEmailBottomSheetOn(true);
};
const onSendRequest = (selectedEmail?: string) => {
if(selectedEmail){
let params: ExtensionFundAccountDownloadReceiptParams = {
mid: mid,
tid: tid,
email: selectedEmail
};
extensionFundAccountDownlaodReceipt(params).then((rs: ExtensionFundAccountDownloadReceiptResponse) => {
console.log('Receipt Download Status:', rs);
});
}
setEmailBottomSheetOn(false);
};
const onClickToClose = () => {
setDetailOn(false);
};
useEffect(() => {
if(!!mid && !!tid){
callDetail();
}
}, [mid, tid]);
return (
<>
<motion.div
className="full-menu-modal"
initial="hidden"
animate={ (detailOn)? 'visible': 'hidden' }
variants={ DetailMotionVariants }
transition={ DetailMotionDuration }
style={ DetailMotionStyle }
>
<div className="full-menu-container pdw-16">
<div className="full-menu-header">
<div className="full-menu-title center">{ t('additionalService.fundAccount.transferDetailTitle') }</div>
<div className="full-menu-actions">
<FullMenuClose
addClass="full-menu-close"
onClickToCallback={ onClickToClose }
></FullMenuClose>
</div>
</div>
<div className="tab-pane sub active">
<div className="pay-top">
<div className="num-amount">
<span className="amount">
{t('home.money', { value: new Intl.NumberFormat('en-US').format(detail?.amount || 0) })}
</span>
</div>
<div className="num-store">{detail?.accountName}({detail?.accountNo})</div>
{detail?.applicationDate && (
<div className="num-day"> {moment(detail?.applicationDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}</div>
)}
</div>
{/* ✅ resultMessage가 "정상"일 때만 표시 */}
{detail?.resultMessage === '정상' && (
<div className="receipt-row">
<button
type="button"
className="receipt-btn"
onClick={ onClickToOpenEmailBottomSheet }
>
<span className="icon-24 download"></span>
<span>{t('additionalService.fundAccount.depositCertificate')}</span>
</button>
</div>
)}
<div className="detail-divider"></div>
<div className="pay-detail">
<div className="detail-title">{t('additionalService.fundAccount.detailInfo')}</div>
<ul className="kv-list">
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.requestDateTime')}</span>
<span className="v">{moment(detail?.requestDate,'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss')}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.transferDateTime')}</span>
<span className="v">{detail?.applicationDate ? moment(detail?.applicationDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.transferResult')}</span>
<span className="v">{detail?.resultMessage || '-'}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.failureReason')}</span>
<span className="v">{detail?.failReason || '-'}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.beneficiaryName')}</span>
<span className="v">{detail?.accountName}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.bank')}</span>
<span className="v">{detail?.bankName}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.accountNumber')}</span>
<span className="v">{detail?.accountNo}</span>
</li>
<li className="kv-row">
<span className="k">MID</span>
<span className="v">{mid}</span>
</li>
<li className="kv-row">
<span className="k">{t('transaction.fields.orderNumber')}</span>
<span className="v">{detail?.moid}</span>
</li>
<li className="kv-row">
<span className="k">TID</span>
<span className="v">{detail?.tid}</span>
</li>
</ul>
</div>
</div>
</div>
</motion.div>
<EmailBottomSheet
bottomSheetOn={emailBottomSheetOn}
setBottomSheetOn={setEmailBottomSheetOn}
imageSave={false}
sendEmail={true}
sendRequest={onSendRequest}
></EmailBottomSheet>
</>
);
};

View File

@@ -0,0 +1,163 @@
import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { useTranslation } from 'react-i18next';
import { motion } from 'framer-motion';
import { useLocation } from 'react-router';
import { useEffect, useState } from 'react';
import { useExtensionFundAccountTransferDetailMutation } from '@/entities/additional-service/api/fund-account/use-extension-fund-account-transfer-detail-mutation';
import { ExtensionFundAccountTransferDetailParams, ExtensionFundAccountTransferDetailResponse, ExtensionFundAccountTransferRegistParams, ExtensionFundAccountTransferRequestParams, ExtensionFundAccountTransferRequestResponse, FundAccountStatus } from '@/entities/additional-service/model/fund-account/types';
import { getFundAccountStatusName } from '@/entities/additional-service/model/fund-account/constant';
import moment from 'moment';
import { snackBar } from '@/shared/lib';
import { useExtensionFundAccountTransferRequestMutation } from '@/entities/additional-service/api/fund-account/use-extension-fund-account-transfer-request-mutation';
import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant';
import { FullMenuClose } from '@/entities/common/ui/full-menu-close';
export interface FundAccountTransferDetailProps {
detailOn: boolean;
setDetailOn: (detailOn: boolean) => void;
seq: string;
};
export const FundAccountTransferDetail = ({
detailOn,
setDetailOn,
seq
}: FundAccountTransferDetailProps) => {
const { t } = useTranslation();
const { navigate } = useNavigate();
const location = useLocation();
const [detail, setDetail] = useState<ExtensionFundAccountTransferDetailResponse>();
const { mutateAsync: extensionFundAccountTransferDetail } = useExtensionFundAccountTransferDetailMutation();
const { mutateAsync: extensionFundAccountTransferRequest } = useExtensionFundAccountTransferRequestMutation();
const callDetail = () => {
let params: ExtensionFundAccountTransferDetailParams = {
seq: seq
};
extensionFundAccountTransferDetail(params).then((rs: ExtensionFundAccountTransferDetailResponse) => {
setDetail(rs);
});
};
const onClickToRequest = () => {
let params: ExtensionFundAccountTransferRequestParams = {
seq: seq
};
extensionFundAccountTransferRequest(params).then((rs: ExtensionFundAccountTransferRequestResponse) => {
if(rs.status){
callDetail();
snackBar(t('additionalService.fundAccount.transferRequestSuccess'))
}
else{
const errorMessage = rs.error?.message || t('additionalService.fundAccount.transferRequestFailed');
snackBar(`[${t('common.failed')}] ${errorMessage}`);
}
}).catch((error) => {
const errorMessage = error?.response?.data?.error?.message ||
error?.message ||
t('additionalService.fundAccount.transferRequestError');
snackBar(`[${t('common.failed')}] ${errorMessage}`);
});
};
const onClickToClose = () => {
setDetailOn(false);
};
useEffect(() => {
if(!!seq){
callDetail();
}
}, [seq]);
return (
<>
<motion.div
className="full-menu-modal"
initial="hidden"
animate={ (detailOn)? 'visible': 'hidden' }
variants={ DetailMotionVariants }
transition={ DetailMotionDuration }
style={ DetailMotionStyle }
>
<div className="full-menu-container pdw-16">
<div className="full-menu-header">
<div className="full-menu-title center">{ t('additionalService.fundAccount.transferDetailTitle') }</div>
<div className="full-menu-actions">
<FullMenuClose
addClass="full-menu-close"
onClickToCallback={ onClickToClose }
></FullMenuClose>
</div>
</div>
<div className="tab-pane sub active">
<div className="pay-top">
<div className="num-amount">
<span className="amount">
{t('home.money', { value: new Intl.NumberFormat('en-US').format(detail?.amount || 0) })}
</span>
</div>
<div className="num-store">{detail?.accountName}({detail?.accountNo})</div>
<div className="num-day">
{detail?.registDate ? moment(detail.registDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}
</div>
</div>
<div className="detail-divider"></div>
<div className="pay-detail">
<div className="detail-title">{t('additionalService.fundAccount.detailInfo')}</div>
<ul className="kv-list">
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.registrationDateTime')}</span>
<span className="v">
{detail?.registDate ? moment(detail.registDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : '-'}
</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.processingResult')}</span>
<span className="v">{getFundAccountStatusName(t)(detail?.resultStatus) || '-'}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.requestDate')}</span>
<span className="v">
{detail?.requestDate ? moment(detail.requestDate, 'YYYYMMDDHHmmss').format('YYYY.MM.DD') : '-'}
</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.transferResult')}</span>
<span className="v">{detail?.resultMessage || '-'}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.beneficiaryName')}</span>
<span className="v">{detail?.accountName}</span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.bank')}</span>
<span className="v">{detail?.bankCode || '-'} </span>
</li>
<li className="kv-row">
<span className="k">{t('additionalService.fundAccount.accountNumber')}</span>
<span className="v">{detail?.accountNo}</span>
</li>
<li className="kv-row">
<span className="k">MID</span>
<span className="v">{detail?.mid}</span>
</li>
</ul>
</div>
<div className="apply-row">
<button
className="btn-50 btn-blue flex-1"
onClick={() => onClickToRequest()}
disabled={detail?.resultStatus !== FundAccountStatus.REGIST_COMPLETE}
>{t('additionalService.fundAccount.transferRequestButton')}</button>
</div>
</div>
</div>
</motion.div>
</>
);
};

View File

@@ -5,7 +5,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { JSX, useEffect, useState } from 'react';
import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant';
import { ListDateGroup } from '../list-date-group';
import { AdditionalServiceCategory } from '../../model/types';
import { AdditionalServiceCategory, DetailData } from '../../model/types';
import { ExtensionFundAccountResultExcelParams, ExtensionFundAccountResultExcelResponse, ExtensionFundAccountResultListParams, ExtensionFundAccountResultListResponse, ExtensionFundAccountResultSummaryParams, ExtensionFundAccountResultSummaryResponse, FundAccountResultContent, FundAccountResultContentItem, FundAccountResultStatus, FundAccountSearchCl, FundAccountSearchDateType, FundAccountStatus } from '../../model/fund-account/types';
import { useExtensionFundAccountResultSummaryMutation } from '../../api/fund-account/use-extension-fund-account-result-summary-mutation';
import { useExtensionFundAccountResultExcelMutation } from '../../api/fund-account/use-extension-fund-account-result-excel-mutation';
@@ -18,6 +18,7 @@ import { useStore } from '@/shared/model/store';
import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet';
import useIntersectionObserver from '@/widgets/intersection-observer';
import { useTranslation } from 'react-i18next';
import { FundAccountResultDetail } from './detail/result-detail';
export const FundAccountResultListWrap = () => {
const { navigate } = useNavigate();
@@ -50,6 +51,9 @@ export const FundAccountResultListWrap = () => {
const [totalFailCount, setTotalFailCount] = useState<number>(0);
const [totalFailAmount, setTotalFailAmount] = useState<number>(0);
const [detailOn, setDetailOn] = useState<boolean>(false);
const [detailMid, setDetailMid] = useState<string>('');
const [detailTid, setDetailTid] = useState<string>('');
const { mutateAsync: extensionFundAccountResultList } = useExtensionFundAccountResultListMutation();
const { mutateAsync: extensionFundAccountResultExcel } = useExtensionFundAccountResultExcelMutation();
@@ -163,6 +167,16 @@ export const FundAccountResultListWrap = () => {
setFilterOn(!filterOn);
};
const setDetailData = (detailData: DetailData) => {
setDetailOn(detailData.detailOn);
if(detailData.mid){
setDetailMid(detailData.mid);
}
if(detailData.tid){
setDetailTid(detailData.tid);
}
};
const onClickToSort = (sort: SortTypeKeys) => {
setSortType(sort);
};
@@ -187,11 +201,12 @@ export const FundAccountResultListWrap = () => {
if (list.length > 0) {
rs.push(
<ListDateGroup
additionalServiceCategory={AdditionalServiceCategory.FundAccountResult}
mid={mid}
key={date + '-' + i}
date={date}
items={list}
additionalServiceCategory={ AdditionalServiceCategory.FundAccountResult }
mid={ mid }
key={ date + '-' + i }
date={ date }
items={ list }
setDetailData={ setDetailData }
></ListDateGroup>
);
}
@@ -205,11 +220,12 @@ export const FundAccountResultListWrap = () => {
if (list.length > 0) {
rs.push(
<ListDateGroup
additionalServiceCategory={AdditionalServiceCategory.FundAccountResult}
mid={mid}
key={date + '-last'}
date={date}
items={list}
additionalServiceCategory={ AdditionalServiceCategory.FundAccountResult }
mid={ mid }
key={ date + '-last' }
date={ date }
items={ list }
setDetailData={ setDetailData }
></ListDateGroup>
);
}
@@ -350,6 +366,12 @@ export const FundAccountResultListWrap = () => {
setBankCode={setBankCode}
setResultStatus={setResultStatus}
></FundAccountResultFilter>
<FundAccountResultDetail
detailOn={ detailOn }
setDetailOn={ setDetailOn }
mid={ detailMid }
tid={ detailTid }
></FundAccountResultDetail>
<EmailBottomSheet
bottomSheetOn={emailBottomSheetOn}
setBottomSheetOn={setEmailBottomSheetOn}

View File

@@ -16,7 +16,7 @@ import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant';
import moment from 'moment';
import { useExtensionFundAccountTransferListMutation } from '../../api/fund-account/use-extension-fund-account-transfer-list-mutation';
import { ListDateGroup } from '../list-date-group';
import { AdditionalServiceCategory } from '../../model/types';
import { AdditionalServiceCategory, DetailData } from '../../model/types';
import { SortTypeBox } from '@/entities/common/ui/sort-type-box';
import { useExtensionFundAccountTransferExcelMutation } from '../../api/fund-account/use-extension-fund-account-transfer-excel-mutation';
import { getFundAccountStatusBtnGroup } from '../../model/fund-account/constant';
@@ -27,6 +27,7 @@ import { useStore } from '@/shared/model/store';
import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet';
import useIntersectionObserver from '@/widgets/intersection-observer';
import { useTranslation } from 'react-i18next';
import { FundAccountTransferDetail } from './detail/transfer-detail';
export const FundAccountTransferListWrap = () => {
const { navigate } = useNavigate();
@@ -47,6 +48,9 @@ export const FundAccountTransferListWrap = () => {
const [status, setStatus] = useState<FundAccountStatus>(FundAccountStatus.ALL);
const [bankCode, setBankCode] = useState<string>('');
const [detailOn, setDetailOn] = useState<boolean>(false);
const [detailSeq, setDetailSeq] = useState<string>('');
const [emailBottomSheetOn, setEmailBottomSheetOn] = useState<boolean>(false);
const [balance, setBalance] = useState<number>(0);
@@ -126,6 +130,13 @@ export const FundAccountTransferListWrap = () => {
setEmailBottomSheetOn(true);
};
const setDetailData = (detailData: DetailData) => {
setDetailOn(detailData.detailOn);
if(detailData.seq){
setDetailSeq(detailData.seq);
}
};
const onSendRequest = (selectedEmail?: string) => {
if (selectedEmail) {
const params: ExtensionFundAccountTransferExcelParams = {
@@ -179,10 +190,11 @@ export const FundAccountTransferListWrap = () => {
if (list.length > 0) {
rs.push(
<ListDateGroup
additionalServiceCategory={AdditionalServiceCategory.FundAccountTransfer}
key={date + '-' + i}
date={date}
items={list}
additionalServiceCategory={ AdditionalServiceCategory.FundAccountTransfer }
key={ date + '-' + i }
date={ date }
items={ list }
setDetailData={ setDetailData }
></ListDateGroup>
);
}
@@ -196,11 +208,12 @@ export const FundAccountTransferListWrap = () => {
if (list.length > 0) {
rs.push(
<ListDateGroup
additionalServiceCategory={AdditionalServiceCategory.FundAccountTransfer}
mid={mid}
key={date + '-last'}
date={date}
items={list}
additionalServiceCategory={ AdditionalServiceCategory.FundAccountTransfer }
mid={ mid }
key={ date + '-last' }
date={ date }
items={ list }
setDetailData={ setDetailData }
></ListDateGroup>
);
}
@@ -320,7 +333,11 @@ export const FundAccountTransferListWrap = () => {
setBankCode={setBankCode}
setStatus={setStatus}
></FundAccountTransactionFilter>
<FundAccountTransferDetail
detailOn={ detailOn }
setDetailOn={ setDetailOn }
seq={ detailSeq }
></FundAccountTransferDetail>
<EmailBottomSheet
bottomSheetOn={emailBottomSheetOn}
setBottomSheetOn={setEmailBottomSheetOn}

View File

@@ -200,21 +200,21 @@ export const ListItem = ({
});
}
else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) {
navigate(PATHS.additionalService.fundAccount.transferDetail, {
state: {
additionalServiceCategory: additionalServiceCategory,
seq: seq
}
});
if(setDetailData && !!seq){
setDetailData({
seq: seq,
detailOn: true
});
}
}
else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) {
navigate(PATHS.additionalService.fundAccount.resultDetail, {
state: {
additionalServiceCategory: additionalServiceCategory,
if(setDetailData && !!mid && !!tid){
setDetailData({
mid: mid,
tid: tid
}
});
tid: tid,
detailOn: true
});
}
}
else if (additionalServiceCategory === AdditionalServiceCategory.SettlementAgency) {

View File

@@ -15,10 +15,8 @@ import { LinkPaymentWaitSendPage } from './link-payment/link-payment-wait-send-p
import { AlimtalkListPage } from './alimtalk/list-page';
import { AlimtalkSettingPage } from './alimtalk/setting-page';
import { FundAccountTransferListPage } from './fund-account/transfer-list-page';
import { FundAccountTransferDetailPage } from './fund-account/transfer-detail-page';
import { FundAccountTransferRequestPage } from './fund-account/transfer-request-page';
import { FundAccountResultListPage } from './fund-account/result-list-page';
import { FundAccountResultDetailPage } from './fund-account/result-detail-page';
import { SettlementAgencyManagePage } from './settlement-agency/manage-page';
import { SettlementAgencyDepositPage } from './settlement-agency/deposit-page';
import { SettlementAgencyMemberPage } from './settlement-agency/member-page';
@@ -76,10 +74,8 @@ export const AdditionalServicePages = () => {
</Route>
<Route path={ROUTE_NAMES.additionalService.fundAccount.base}>
<Route path={ROUTE_NAMES.additionalService.fundAccount.transferList} element={<FundAccountTransferListPage />} />
<Route path={ROUTE_NAMES.additionalService.fundAccount.transferDetail} element={<FundAccountTransferDetailPage />} />
<Route path={ROUTE_NAMES.additionalService.fundAccount.transferRequest} element={<FundAccountTransferRequestPage />} />
<Route path={ROUTE_NAMES.additionalService.fundAccount.resultList} element={<FundAccountResultListPage />} />
<Route path={ROUTE_NAMES.additionalService.fundAccount.resultDetail} element={<FundAccountResultDetailPage />} />
</Route>
<Route path={ROUTE_NAMES.additionalService.settlementAgency.base}>
<Route path={ROUTE_NAMES.additionalService.settlementAgency.manage} element={<SettlementAgencyManagePage />} />

View File

@@ -220,10 +220,6 @@ export const PATHS: RouteNamesType = {
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.fundAccount.base}`,
ROUTE_NAMES.additionalService.fundAccount.transferList,
),
transferDetail: generatePath(
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.fundAccount.base}`,
ROUTE_NAMES.additionalService.fundAccount.transferDetail,
),
transferRequest: generatePath(
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.fundAccount.base}`,
ROUTE_NAMES.additionalService.fundAccount.transferRequest,
@@ -232,10 +228,6 @@ export const PATHS: RouteNamesType = {
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.fundAccount.base}`,
ROUTE_NAMES.additionalService.fundAccount.resultList,
),
resultDetail: generatePath(
`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.fundAccount.base}`,
ROUTE_NAMES.additionalService.fundAccount.resultDetail,
),
},
settlementAgency: {
base: generatePath(`${ROUTE_NAMES.additionalService.base}${ROUTE_NAMES.additionalService.settlementAgency.base}`),

View File

@@ -103,10 +103,8 @@ export const ROUTE_NAMES = {
fundAccount: {
base: '/fund-account/*',
transferList: 'transfer-list',
transferDetail: 'transfer-detail',
transferRequest: 'transfer-request',
resultList: 'result-list',
resultDetail: 'result-detail',
},
settlementAgency: {
base: '/settlement-agency/*',