diff --git a/src/entities/additional-service/ui/account-holder-auth/detail/account-holder-auth-detail.tsx b/src/entities/additional-service/ui/account-holder-auth/detail/account-holder-auth-detail.tsx index 55ef9da..3a0f5af 100644 --- a/src/entities/additional-service/ui/account-holder-auth/detail/account-holder-auth-detail.tsx +++ b/src/entities/additional-service/ui/account-holder-auth/detail/account-holder-auth-detail.tsx @@ -1,7 +1,5 @@ import { useEffect, useState } from 'react'; import { motion } from 'framer-motion'; -import { useNavigate } from '@/shared/lib/hooks/use-navigate'; -import { useLocation } from 'react-router'; import { useExtensionAccountHolderAuthDetailMutation } from '@/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-deatil-mutation'; import { ExtensionAccountHolderAuthDetailParams, ExtensionAccountHolderAuthDetailResponse } from '@/entities/additional-service/model/account-holder-auth/types'; import moment from 'moment'; diff --git a/src/entities/additional-service/ui/alimtalk/detail/alimtalk-detail.tsx b/src/entities/additional-service/ui/alimtalk/detail/alimtalk-detail.tsx new file mode 100644 index 0000000..2079927 --- /dev/null +++ b/src/entities/additional-service/ui/alimtalk/detail/alimtalk-detail.tsx @@ -0,0 +1,130 @@ +import { motion } from 'framer-motion'; +import { useNavigate } from '@/shared/lib/hooks/use-navigate'; +import { useLocation } from 'react-router'; +import { useEffect, useState } from 'react'; +import { ExtensionAlimtalkDetailParams, ExtensionAlimtalkDetailResponse } from '@/entities/additional-service/model/alimtalk/types'; +import { useExtensionAlimtalkDetailMutation } from '@/entities/additional-service/api/alimtalk/use-extansion-alimtalk-detail-mutation'; +import moment from 'moment'; +import { getAlimtalkAlimClText, getAlimtalkSendClTypeText, getAlimtalkSendTypeText, getAlimtalkServiceCodeText } from '@/entities/additional-service/model/alimtalk/constant'; +import { useTranslation } from 'react-i18next'; +import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant'; +import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; + +export interface AlimtalkDetailProps { + detailOn: boolean; + setDetailOn: (detailOn: boolean) => void; + mid: string; + tid: string; +}; + +export const AlimtalkDetail = ({ + detailOn, + setDetailOn, + mid, + tid +}: AlimtalkDetailProps) => { + const { t } = useTranslation(); + + const [detail, setDetail] = useState(); + + const { mutateAsync: extensionAlimtalkDetail } = useExtensionAlimtalkDetailMutation(); + + const callDetail = () => { + let params: ExtensionAlimtalkDetailParams = { + mid: mid, + tid: tid + }; + + extensionAlimtalkDetail(params).then((rs: ExtensionAlimtalkDetailResponse) => { + setDetail(rs); + }); + }; + + const onClickToClose = () => { + setDetailOn(false); + }; + + const getDate = (date?: string) => { + return (date)? moment(date, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss'): ''; + }; + + useEffect(() => { + if(!!mid && !!tid){ + callDetail(); + } + }, [mid, tid]); + + + + return ( + <> + +
+
+
{ t('additionalService.alimtalk.detailTitle') }
+
+ +
+
+
+
+
+ { detail?.receiverName } +
+
{ detail?.companyName }
+
{ getDate(detail?.sendDate) }
+
+
+
+
{t('additionalService.alimtalk.transactionInfo')}
+
    +
  • + MID + { detail?.mid } +
  • +
  • + TID + { detail?.tid } +
  • +
  • + {t('additionalService.alimtalk.serviceName')} + { detail?.extensionServiceName } +
  • +
  • + {t('additionalService.alimtalk.sendKind')} + { getAlimtalkSendTypeText(t)(detail?.sendType) } +
  • +
  • + {t('additionalService.alimtalk.buyerName')} + {detail?.receiverName } +
  • +
  • + {t('additionalService.alimtalk.paymentService')} + { getAlimtalkServiceCodeText(t)(detail?.serviceCode) } +
  • +
  • + {t('additionalService.alimtalk.notificationDivision')} + { getAlimtalkAlimClText(t)(detail?.alimCl) } +
  • +
  • + {t('additionalService.alimtalk.sendDivision')} + { getAlimtalkSendClTypeText(t)(detail?.sendCl) } +
  • +
+
+
+
+
+ + ); +}; \ No newline at end of file diff --git a/src/entities/additional-service/ui/list-item.tsx b/src/entities/additional-service/ui/list-item.tsx index 17dadf4..76af414 100644 --- a/src/entities/additional-service/ui/list-item.tsx +++ b/src/entities/additional-service/ui/list-item.tsx @@ -238,13 +238,13 @@ export const ListItem = ({ }); } else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { - navigate(PATHS.additionalService.alimtalk.detail, { - state: { - additionalServiceCategory: additionalServiceCategory, + if(setDetailData && !!mid && !!tid){ + setDetailData({ mid: mid, tid: tid, - } - }); + detailOn: true + }); + } } // else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { // navigate(PATHS.additionalService.faceAuth.detail, { diff --git a/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx b/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx index 83b264e..36b523a 100644 --- a/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx +++ b/src/pages/additional-service/account-holder-search/account-holder-search-page.tsx @@ -182,7 +182,7 @@ export const AccountHolderSearchPage = () => { if(detailData.tid){ setDetailTid(detailData.tid); } - } + }; useEffect(() => { callList(); diff --git a/src/pages/additional-service/additional-service-pages.tsx b/src/pages/additional-service/additional-service-pages.tsx index 82cb504..654529d 100644 --- a/src/pages/additional-service/additional-service-pages.tsx +++ b/src/pages/additional-service/additional-service-pages.tsx @@ -13,7 +13,6 @@ import { AccountHolderAuthPage } from './account-holder-auth/account-holder-auth import { LinkPaymentHistoryPage } from './link-payment/link-payment-history-page'; import { LinkPaymentWaitSendPage } from './link-payment/link-payment-wait-send-page'; import { AlimtalkListPage } from './alimtalk/list-page'; -import { AlimtalkDetailPage } from './alimtalk/detail-page'; import { AlimtalkSettingPage } from './alimtalk/setting-page'; import { FundAccountTransferListPage } from './fund-account/transfer-list-page'; import { FundAccountTransferDetailPage } from './fund-account/transfer-detail-page'; @@ -74,7 +73,6 @@ export const AdditionalServicePages = () => { } /> - } /> } /> diff --git a/src/pages/additional-service/alimtalk/list-page.tsx b/src/pages/additional-service/alimtalk/list-page.tsx index 9b0d68f..93d170e 100644 --- a/src/pages/additional-service/alimtalk/list-page.tsx +++ b/src/pages/additional-service/alimtalk/list-page.tsx @@ -26,7 +26,7 @@ import moment from 'moment'; import { useExtensionAlimtalkListMutation } from '@/entities/additional-service/api/alimtalk/use-extansion-alimtalk-list-mutation'; import { useExtensionAlimtalkDownloadExcelMutation } from '@/entities/additional-service/api/alimtalk/use-extansion-alimtalk-download-excel-mutation'; import { ListDateGroup } from '@/entities/additional-service/ui/list-date-group'; -import { AdditionalServiceCategory } from '@/entities/additional-service/model/types'; +import { AdditionalServiceCategory, DetailData } from '@/entities/additional-service/model/types'; import { useStore } from '@/shared/model/store'; import { snackBar } from '@/shared/lib'; import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; @@ -34,6 +34,7 @@ import { AlimtalkFilter } from '@/entities/additional-service/ui/filter/alimtalk import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access-check'; import useIntersectionObserver from '@/widgets/intersection-observer'; import { useTranslation } from 'react-i18next'; +import { AlimtalkDetail } from '@/entities/additional-service/ui/alimtalk/detail/alimtalk-detail'; export const AlimtalkListPage = () => { const { t } = useTranslation(); @@ -60,6 +61,10 @@ export const AlimtalkListPage = () => { const [sendCl, setSendCl] = useState(AlimTalkSendCl.ALL); const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false); + const [detailOn, setDetailOn] = useState(false); + const [detailMid, setDetailMid] = useState(''); + const [detailTid, setDetailTid] = useState(''); + const { mutateAsync: extensionAlimtalkList } = useExtensionAlimtalkListMutation(); const { mutateAsync: extensionAlimtalkDownloadExcel } = useExtensionAlimtalkDownloadExcelMutation(); const onIntersect: IntersectionObserverCallback = (entries: Array) => { @@ -161,6 +166,16 @@ export const AlimtalkListPage = () => { setEmailBottomSheetOn(false); }; + const setDetailData = (detailData: DetailData) => { + setDetailOn(detailData.detailOn); + if(detailData.mid){ + setDetailMid(detailData.mid); + } + if(detailData.tid){ + setDetailTid(detailData.tid); + } + }; + const onClickToNavigate = () => { navigate(PATHS.additionalService.alimtalk.setting); }; @@ -192,6 +207,7 @@ export const AlimtalkListPage = () => { key={date + '-' + i} date={date} items={list as any} + setDetailData={ setDetailData } > ); } @@ -210,6 +226,7 @@ export const AlimtalkListPage = () => { key={date + '-last'} date={date} items={list as any} + setDetailData={ setDetailData } > ); } @@ -273,7 +290,7 @@ export const AlimtalkListPage = () => {
- {getAlimtalkList()} + { getAlimtalkList() }
@@ -307,6 +324,12 @@ export const AlimtalkListPage = () => { setSendType={setSendType} setSendCl={setSendCl} > +