From 47bd25f7e387aebe0b698b292b2a6169e847b2a4 Mon Sep 17 00:00:00 2001 From: "focp212@naver.com" Date: Tue, 4 Nov 2025 16:38:42 +0900 Subject: [PATCH] .. --- .env.development | 4 +- .../account-holder-search-list.tsx | 10 +-- src/entities/alarm/ui/alarm-item.tsx | 77 ++++++----------- src/entities/alarm/ui/alarm-list.tsx | 20 ++++- src/entities/alarm/ui/alarm-routes.tsx | 86 +++++++++++++++++++ src/entities/home/ui/home-notice-list.tsx | 2 +- .../ui/detail/settlement-detail.tsx | 15 +++- .../support/api/use-qna-detail-mutation.ts | 39 +++++++++ src/entities/support/model/types.ts | 9 +- .../support/ui/detail/notice-detail.tsx | 19 ++-- src/entities/support/ui/detail/qna-detail.tsx | 64 ++++++-------- src/entities/support/ui/qna-item.tsx | 2 +- src/pages/support/notice/list-page.tsx | 10 ++- src/pages/support/qna/list-page.tsx | 16 +++- src/pages/support/support-pages.tsx | 2 + src/shared/api/api-url-support.ts | 4 + src/widgets/sub-layout/index.tsx | 12 +++ 17 files changed, 272 insertions(+), 119 deletions(-) create mode 100644 src/entities/alarm/ui/alarm-routes.tsx create mode 100644 src/entities/support/api/use-qna-detail-mutation.ts diff --git a/.env.development b/.env.development index 935fbb3..2fd390b 100644 --- a/.env.development +++ b/.env.development @@ -1,6 +1,6 @@ VITE_APP_ENV=development -# VITE_APP_AUTH_PROXY_HOST='http://3.35.79.250:8090' -# VITE_APP_API_PROXY_HOST='http://3.35.79.250:8080' +#VITE_APP_AUTH_PROXY_HOST='http://3.35.79.250:8090' +#VITE_APP_API_PROXY_HOST='http://3.35.79.250:8080' VITE_APP_AUTH_PROXY_HOST='https://auth.nicepay.co.kr' VITE_APP_API_PROXY_HOST='https://rest.nicepay.co.kr' GENERATE_SOURCEMAP=false diff --git a/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx b/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx index 1ff053f..22d1abd 100644 --- a/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx +++ b/src/entities/additional-service/ui/account-holder-search/account-holder-search-list.tsx @@ -69,13 +69,13 @@ export const AccountHolderSearchList = ({ return ( <>
- {getListDateGroup()} + { getListDateGroup() }
- +
); diff --git a/src/entities/alarm/ui/alarm-item.tsx b/src/entities/alarm/ui/alarm-item.tsx index 2332bc7..5eb606e 100644 --- a/src/entities/alarm/ui/alarm-item.tsx +++ b/src/entities/alarm/ui/alarm-item.tsx @@ -3,11 +3,12 @@ import { IMAGE_ROOT } from '@/shared/constants/common'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import moment from 'moment'; import { useAppAlarmMarkMutation } from '../api/use-app-alarm-mark-mutation'; -import { AppAlarmMarkParams, AppAlarmMarkResponse } from '../model/types'; +import { AlarmLinkOptions, AppAlarmMarkParams, AppAlarmMarkResponse } from '../model/types'; import { useStore } from '@/shared/model/store'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; + export interface AlarmItemProps { appNotificationSequence?: number; appNotificationCategory?: string; @@ -16,6 +17,8 @@ export interface AlarmItemProps { appNotificationContent?: string; appNotificationLink?: string; appNotificationCategories: Array; + setAlarmRoutesOn: (alarmRoutesOn: boolean) => void; + setAlarmOptions: (alarmOptions: AlarmLinkOptions) => void; }; export const AlarmItem = ({ @@ -25,9 +28,10 @@ export const AlarmItem = ({ appNotificationTitle, appNotificationContent, appNotificationLink, - appNotificationCategories + appNotificationCategories, + setAlarmRoutesOn, + setAlarmOptions }: AlarmItemProps) => { - const { navigate } = useNavigate(); const { t } = useTranslation(); let userInfo = useStore.getState().UserStore.userInfo; @@ -42,40 +46,11 @@ export const AlarmItem = ({ return myCategory[0].desc1; }; const onClickToNavigate = () => { - let path = PATHS.support.notice.list + appNotificationSequence; - let pathState = {}; - - console.log('appNotificationSequence : [' + appNotificationSequence + ']'); - console.log('appNotificationCategory : [' + appNotificationCategory + ']'); - console.log('notificationReceivedDate : [' + notificationReceivedDate + ']'); - console.log('appNotificationTitle : [' + appNotificationTitle + ']'); - console.log('appNotificationContent : [' + appNotificationContent + ']'); - console.log('appNotificationLink : [' + appNotificationLink + ']'); if(appNotificationLink){ - path = appNotificationLink; - /* - if(appNotificationCategory === '10'){ - - } - else if(appNotificationCategory === '20'){ - - } - else if(appNotificationCategory === '30'){ - - } - else if(appNotificationCategory === '40'){ - - } - else if(appNotificationCategory === '60'){ - - } - */ + setAlarmRoutesOn(true); + setAlarmOptions({ linkUrl: appNotificationLink }); } - - navigate(path, { - state: pathState - }); }; const callAppAlarmMark = () => { @@ -97,23 +72,25 @@ export const AlarmItem = ({ }, [appNotificationCategory]); return ( -
callAppAlarmMark() } - > -
-
{ appNotificationTitle }
-
- { appNotificationCategoryName } - { moment(notificationReceivedDate).format('YYYY.MM.DD HH:mm:ss') } + <> +
callAppAlarmMark() } + > +
+
{ appNotificationTitle }
+
+ { appNotificationCategoryName } + { moment(notificationReceivedDate).format('YYYY.MM.DD HH:mm:ss') } +
+
+
+ {t('alarm.goTo',
-
- {t('alarm.goTo', -
-
+ ); }; \ No newline at end of file diff --git a/src/entities/alarm/ui/alarm-list.tsx b/src/entities/alarm/ui/alarm-list.tsx index 8e2fdea..99a2fc4 100644 --- a/src/entities/alarm/ui/alarm-list.tsx +++ b/src/entities/alarm/ui/alarm-list.tsx @@ -1,6 +1,6 @@ import { IMAGE_ROOT } from '@/shared/constants/common'; import { AlarmItem } from './alarm-item'; -import { AlarmListContent, AppAlarmListParams, AppAlarmListResponse, MERCHANT_ADMIN_APP } from '../model/types'; +import { AlarmLinkOptions, AlarmListContent, AppAlarmListParams, AppAlarmListResponse, MERCHANT_ADMIN_APP } from '../model/types'; import { useEffect, useState } from 'react'; import { useAppAlarmListMutation } from '../api/use-app-alarm-list-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; @@ -9,6 +9,7 @@ import { useNavigate } from '@/shared/lib/hooks'; import useIntersectionObserver from '@/widgets/intersection-observer'; import { useStore } from '@/shared/model/store'; import { DefaultRequestPagination } from '@/entities/common/model/types'; +import { AlarmRoutes } from './alarm-routes'; export interface AlarmListProps { appNotificationCategory: string; @@ -27,7 +28,9 @@ export const AlarmList = ({ const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [appCl, setAppCl] = useState(MERCHANT_ADMIN_APP.MERCHANT_ADMIN_APP) const [resultList, setResultList] = useState>([]); - + const [alarmRoutesOn, setAlarmRoutesOn] = useState(false); + const [alarmOptions, setAlarmOptions] = useState(); + const { mutateAsync: appAlarmList } = useAppAlarmListMutation(); const onIntersect: IntersectionObserverCallback = (entries: Array) => { @@ -107,6 +110,8 @@ export const AlarmList = ({ appNotificationContent={ resultList[i]?.appNotificationContent } appNotificationLink={ resultList[i]?.appNotificationLink } appNotificationCategories={ appNotificationCategories } + setAlarmRoutesOn={ setAlarmRoutesOn } + setAlarmOptions={ setAlarmOptions } > ); } @@ -116,6 +121,12 @@ export const AlarmList = ({ useEffect(() => { callList(); }, [appNotificationCategory]); + + useEffect(() => { + if(!!alarmRoutesOn){ + console.log(alarmOptions) + } + }, [alarmRoutesOn, alarmOptions]); return ( <> @@ -124,6 +135,11 @@ export const AlarmList = ({
{t('alarm.retentionNotice')}
+ { alarmRoutesOn && + + } ); }; \ No newline at end of file diff --git a/src/entities/alarm/ui/alarm-routes.tsx b/src/entities/alarm/ui/alarm-routes.tsx new file mode 100644 index 0000000..178d025 --- /dev/null +++ b/src/entities/alarm/ui/alarm-routes.tsx @@ -0,0 +1,86 @@ +import { AlarmLinkOptions } from '@/entities/alarm/model/types'; +import { NoticeDetail } from '@/entities/support/ui/detail/notice-detail'; +import { useEffect, useState } from 'react'; +import { QnaDetail } from '@/entities/support/ui/detail/qna-detail'; +import { SettlementDetail } from '@/entities/settlement/ui/detail/settlement-detail'; +import { SettlementPeriodType } from '@/entities/settlement/model/types'; + +export interface AlarmRoutesProps { + options?: AlarmLinkOptions; +}; + +export const AlarmRoutes = ({ + options +}: AlarmRoutesProps) => { + const [noticeDetailOn, setNoticeDetailOn] = useState(false); + const [qnaDetailOn, setQnaDetailOn] = useState(false); + const [settlementDetailOn, setSettlementDetailOn] = useState(false); + const [seq, setSeq] = useState(); + const [settlementId, setSettlementId] = useState(); + + const initOptions = () => { + if(options?.linkUrl){ + let linkUrl = options.linkUrl; + if(linkUrl.indexOf('notice') > -1){ + let linkArr: Array = linkUrl.split('/'); + setSeq(linkArr[linkArr.length - 1]); + setNoticeDetailOn(true); + setQnaDetailOn(false); + setSettlementDetailOn(false); + } + else if(linkUrl.indexOf('qna') > -1){ + let linkArr: Array = linkUrl.split('/'); + setSeq(linkArr[linkArr.length - 1]); + setNoticeDetailOn(false); + setQnaDetailOn(true); + setSettlementDetailOn(false); + } + else if(linkUrl.indexOf('settlement') > -1){ + let linkArr: Array = linkUrl.split('/'); + setSettlementId(linkArr[linkArr.length - 1]); + setNoticeDetailOn(false); + setQnaDetailOn(false); + setSettlementDetailOn(true); + } + else{ + if(linkUrl.indexOf('http') > -1){ + window.open(linkUrl); + } + } + } + } + + + useEffect(() => { + if(options){ + initOptions(); + } + }, [options]); + + return ( + <> + { !!noticeDetailOn && + + } + { !!qnaDetailOn && + + } + { !!settlementDetailOn && + + } + + ); +}; \ No newline at end of file diff --git a/src/entities/home/ui/home-notice-list.tsx b/src/entities/home/ui/home-notice-list.tsx index 9e9dfad..4aea421 100644 --- a/src/entities/home/ui/home-notice-list.tsx +++ b/src/entities/home/ui/home-notice-list.tsx @@ -12,7 +12,7 @@ export const HomeNoticeList = () => { const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [resultList, setResultList] = useState>([]); const [detailOn, setDetailOn] = useState(false); - const [detailSeq, setDetailSeq] = useState(0); + const [detailSeq, setDetailSeq] = useState(); const { mutateAsync: noticeList } = useNoticeListMutation(); diff --git a/src/entities/settlement/ui/detail/settlement-detail.tsx b/src/entities/settlement/ui/detail/settlement-detail.tsx index 8369499..336ead1 100644 --- a/src/entities/settlement/ui/detail/settlement-detail.tsx +++ b/src/entities/settlement/ui/detail/settlement-detail.tsx @@ -21,6 +21,7 @@ import moment from 'moment'; import { useTranslation } from 'react-i18next'; import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant'; +import { snackBar } from '@/shared/lib'; export interface SettlementDetailProps { detailOn: boolean; @@ -60,10 +61,16 @@ export const SettlementDetail = ({ }; settlementsHistoryDetail(params).then((rs: SettlementsHistoryDetailResponse) => { - setAmountInfo(rs.amountInfo); - setSettlementInfo(rs.settlementInfo); - setSettlementAmount(rs.settlementAmount); - setSettlementDate(rs.settlementDate); + if(rs.amountInfo){ + setAmountInfo(rs.amountInfo); + setSettlementInfo(rs.settlementInfo); + setSettlementAmount(rs.settlementAmount); + setSettlementDate(rs.settlementDate); + } + else{ + snackBar('데이터가 존재하지 않습니다.'); + onClickToClose(); + } }); } }; diff --git a/src/entities/support/api/use-qna-detail-mutation.ts b/src/entities/support/api/use-qna-detail-mutation.ts new file mode 100644 index 0000000..ba04355 --- /dev/null +++ b/src/entities/support/api/use-qna-detail-mutation.ts @@ -0,0 +1,39 @@ +import axios from 'axios'; +import { API_URL_SUPPORT } from '@/shared/api/api-url-support'; +import { resultify } from '@/shared/lib/resultify'; +import { NiceAxiosError } from '@/shared/@types/error'; +import { + QnaDetailParams, + QnaDetailResponse +} from '../model/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; +import { getHeaderUserAgent } from '@/shared/constants/url'; + +export const qnaDetail = (params: QnaDetailParams) => { + let headerOptions = { + menuId: 62, + apiType: 'SELECT' + }; + let options = { + headers: { + 'X-User-Agent': getHeaderUserAgent(headerOptions) + } + }; + return resultify( + axios.post(API_URL_SUPPORT.qnaDetail(), params, options), + ); +}; + +export const useQnaDetailMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: QnaDetailParams) => qnaDetail(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/support/model/types.ts b/src/entities/support/model/types.ts index cd16562..d6cfd3f 100644 --- a/src/entities/support/model/types.ts +++ b/src/entities/support/model/types.ts @@ -29,6 +29,10 @@ export interface QnaListParams extends SupportParams { statusCode?: string; page?: DefaultRequestPagination; }; +export interface QnaDetailParams { + seq: string | number; +}; +export interface QnaDetailResponse extends QnaItem {}; export interface QnaItem { answer?: string; answerDate?: string; @@ -47,9 +51,8 @@ export interface QnaListResponse extends DefaulResponsePagination { content: Array }; export interface DetailData { - qnaItem?: QnaItem; faqItem?: FaqItem; - seq?: number; + seq?: string | number; detailOn: boolean; }; export interface QnaItemProps { @@ -103,7 +106,7 @@ export enum InformCl { OTHERS = 'OTHERS' }; export interface NoticeDetailParams { - seq: number; + seq: number | string; }; export interface NoticeDetailResponse extends NoticeItem { diff --git a/src/entities/support/ui/detail/notice-detail.tsx b/src/entities/support/ui/detail/notice-detail.tsx index a9ece91..2bf183f 100644 --- a/src/entities/support/ui/detail/notice-detail.tsx +++ b/src/entities/support/ui/detail/notice-detail.tsx @@ -11,27 +11,26 @@ import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; export interface NoticeDetaillProps { detailOn: boolean; setDetailOn: (detailOn: boolean) => void; - seq: number; + seq?: number | string; }; export const NoticeDetail = ({ detailOn, setDetailOn, seq }: NoticeDetaillProps) => { - const location = useLocation(); const { t } = useTranslation(); - const [result, setResult] = useState({}); - const { mutateAsync: noticeDetail } = useNoticeDetailMutation(); const callDetail = () => { - let detailParams: NoticeDetailParams = { - seq: seq, - }; - noticeDetail(detailParams).then((rs: NoticeDetailResponse) => { - setResult(rs); - }); + if(!!seq){ + let detailParams: NoticeDetailParams = { + seq: seq, + }; + noticeDetail(detailParams).then((rs: NoticeDetailResponse) => { + setResult(rs); + }); + } }; const onClickToClose = () => { diff --git a/src/entities/support/ui/detail/qna-detail.tsx b/src/entities/support/ui/detail/qna-detail.tsx index 79eb8be..3de69e7 100644 --- a/src/entities/support/ui/detail/qna-detail.tsx +++ b/src/entities/support/ui/detail/qna-detail.tsx @@ -2,53 +2,45 @@ import moment from 'moment'; import { motion } from 'framer-motion'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; -import { QnaItem } from '../../model/types'; +import { QnaDetailParams, QnaDetailResponse, QnaItem } from '../../model/types'; import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant'; import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; +import { useQnaDetailMutation } from '../../api/use-qna-detail-mutation'; export interface qnaDetaillProps { detailOn: boolean; setDetailOn: (detailOn: boolean) => void; - qnaItem: QnaItem; + seq?: string | number; }; export const QnaDetail = ({ detailOn, setDetailOn, - qnaItem + seq }: qnaDetaillProps) => { const { t } = useTranslation(); - - const [answer, setAnswer] = useState(); - const [answerDate, setAnswerDate] = useState(); - const [contents, setContents] = useState(); - const [corpName, setCorpName] = useState(); - const [cursorId, setCursorId] = useState(); - const [requestDate, setRequestDate] = useState(); - const [requestName, setRequestName] = useState(); - const [requestType, setRequestType] = useState(); - const [sendEmail, setSendEmail] = useState(); - const [seq, setSeq] = useState(); - const [statusCode, setStatusCode] = useState(); - const [title, setTitle] = useState(); + const [result, setResult] = useState({}); + const { mutateAsync: qnaDetail } = useQnaDetailMutation(); + + const callDetail = () => { + if(!!seq){ + let detailParams: QnaDetailParams = { + seq: seq, + }; + qnaDetail(detailParams).then((rs: QnaDetailResponse) => { + setResult(rs); + }); + } + }; const onClickToClose = () => { setDetailOn(false); }; useEffect(() => { - setAnswer(qnaItem?.answer); - setAnswerDate(qnaItem?.answerDate); - setContents(qnaItem?.contents); - setCorpName(qnaItem?.corpName); - setCursorId(qnaItem?.cursorId); - setRequestDate(qnaItem?.requestDate); - setRequestName(qnaItem?.requestName); - setRequestType(qnaItem?.requestType); - setSendEmail(qnaItem?.sendEmail); - setSeq(qnaItem?.seq); - setStatusCode(qnaItem?.statusCode); - setTitle(qnaItem?.title); - }, [qnaItem]); + if(!!seq){ + callDetail(); + } + }, [seq]); return ( <> @@ -60,7 +52,7 @@ export const QnaDetail = ({ transition={ DetailMotionDuration } style={ DetailMotionStyle } > - { statusCode && + { result?.statusCode &&
{ t('support.qna.title') }
@@ -76,29 +68,29 @@ export const QnaDetail = ({
{t('support.qna.detailLabels.title')} - { title } + { result?.title }
{t('support.qna.detailLabels.type')} - { t(`support.qna.categories.${requestType}`) } + { result?.requestType? t(`support.qna.categories.${result?.requestType}`): '' }
{t('support.qna.detailLabels.registrationDate')} - { !!requestDate? moment(requestDate).format('YYYY.MM.DD'): '' } + { result?.requestDate? moment(result?.requestDate).format('YYYY.MM.DD'): '' }
{t('support.qna.detailLabels.answerDate')} - { !!answerDate? moment(answerDate).format('YYYY.MM.DD'): '' } + { result?.answerDate? moment(result?.answerDate).format('YYYY.MM.DD'): '' }
{t('support.qna.detailLabels.inquiryAnswer')}
-
+
{t('support.qna.detailLabels.inquiryContents')}
-
+
diff --git a/src/entities/support/ui/qna-item.tsx b/src/entities/support/ui/qna-item.tsx index 856aedd..cf517c6 100644 --- a/src/entities/support/ui/qna-item.tsx +++ b/src/entities/support/ui/qna-item.tsx @@ -10,7 +10,7 @@ export const SupportQnaItem = ({ const onClickToDetail = () => { if(setDetailData){ setDetailData({ - qnaItem: qnaItem, + seq: qnaItem.seq, detailOn: true }); } diff --git a/src/pages/support/notice/list-page.tsx b/src/pages/support/notice/list-page.tsx index 8448aba..b1436ce 100644 --- a/src/pages/support/notice/list-page.tsx +++ b/src/pages/support/notice/list-page.tsx @@ -15,9 +15,11 @@ import { } from '@/widgets/sub-layout/use-sub-layout'; import useIntersectionObserver from '@/widgets/intersection-observer'; import { NoticeDetail } from '@/entities/support/ui/detail/notice-detail'; +import { useParams } from 'react-router'; export const NoticeListPage = () => { const { navigate } = useNavigate(); + const { seq } = useParams(); const { t } = useTranslation(); const [onActionIntersect, setOnActionIntersect] = useState(false); @@ -26,7 +28,7 @@ export const NoticeListPage = () => { const [searchKeyword, setSearchKeyword] = useState(''); const [resultList, setResultList] = useState>([]); const [detailOn, setDetailOn] = useState(false); - const [detailSeq, setDetailSeq] = useState(0); + const [detailSeq, setDetailSeq] = useState(); useSetHeaderTitle(t('support.notice.title')); useSetHeaderType(HeaderType.LeftArrow); @@ -133,6 +135,12 @@ export const NoticeListPage = () => { useEffect(() => { callList(); }, [informCl]); + useEffect(() => { + if(seq){ + setDetailOn(true); + setDetailSeq(parseInt(seq)); + } + }, [seq]); return ( <> diff --git a/src/pages/support/qna/list-page.tsx b/src/pages/support/qna/list-page.tsx index 77ac667..1f23573 100644 --- a/src/pages/support/qna/list-page.tsx +++ b/src/pages/support/qna/list-page.tsx @@ -16,9 +16,11 @@ import { useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; import { QnaDetail } from '@/entities/support/ui/detail/qna-detail'; +import { useParams } from 'react-router'; export const QnaListPage = () => { const { navigate } = useNavigate(); + const { seq } = useParams(); const { t } = useTranslation(); const midOptions = useStore.getState().UserStore.selectOptionsMids; @@ -33,7 +35,7 @@ export const QnaListPage = () => { const [statusCode, setStatusCode] = useState(''); // 02, 03 const [resultList, setResultList] = useState>([]); const [detailOn, setDetailOn] = useState(false); - const [detailQnaItem, setDetailQnaItem] = useState({}); + const [detailSeq, setDetailSeq] = useState(); useSetHeaderTitle(t('support.qna.title')); useSetHeaderType(HeaderType.LeftArrow); @@ -108,8 +110,8 @@ export const QnaListPage = () => { const setDetailData = (detailData: DetailData) => { setDetailOn(detailData.detailOn); - if(detailData?.qnaItem){ - setDetailQnaItem(detailData?.qnaItem); + if(detailData?.seq){ + setDetailSeq(detailData?.seq); } }; @@ -138,6 +140,12 @@ export const QnaListPage = () => { callList(); }, [mid, statusCode]); + useEffect(() => { + if(!!seq){ + + } + }); + return ( <>
@@ -191,7 +199,7 @@ export const QnaListPage = () => { ); diff --git a/src/pages/support/support-pages.tsx b/src/pages/support/support-pages.tsx index 3ac681f..628ba8c 100644 --- a/src/pages/support/support-pages.tsx +++ b/src/pages/support/support-pages.tsx @@ -12,12 +12,14 @@ export const SupportPages = () => { } /> + } /> } /> } /> + } /> } /> diff --git a/src/shared/api/api-url-support.ts b/src/shared/api/api-url-support.ts index 5c05dba..77cbab6 100644 --- a/src/shared/api/api-url-support.ts +++ b/src/shared/api/api-url-support.ts @@ -19,6 +19,10 @@ export const API_URL_SUPPORT = { // POST: 1:1 문의 목록 조회 return `${API_BASE_URL}/api/v1/${API_URL_KEY}/counsel/list`; }, + qnaDetail: () => { + // POST: 1:1 문의 상세 조회 + return `${API_BASE_URL}/api/v1/${API_URL_KEY}/counsel/detail`; + }, qnaSave: () => { // POST: 1:1 문의 등록 return `${API_BASE_URL}/api/v1/${API_URL_KEY}/counsel/save`; diff --git a/src/widgets/sub-layout/index.tsx b/src/widgets/sub-layout/index.tsx index 60b8961..ebe9dcd 100644 --- a/src/widgets/sub-layout/index.tsx +++ b/src/widgets/sub-layout/index.tsx @@ -34,6 +34,7 @@ import { useUserFindAuthMethodMutation } from '@/entities/user/api/use-user-find import { useCodesSelectMutation } from '@/entities/common/api/use-codes-select-mutation'; import { MenuItems } from '@/entities/common/model/constant'; import { AlarmLinkOptions } from '@/entities/alarm/model/types'; +import { AlarmRoutes } from '@/entities/alarm/ui/alarm-routes'; export interface ContextType { setOnBack: (onBack: () => void) => void; @@ -73,6 +74,8 @@ export const SubLayout = () => { const [headerNavigationKey, setHeaderNavigationKey] = useState(1); const [loginSuccess, setLoginSuccess] = useState(false); const [mid, setMid] = useState(); + const [alarmRoutesOn, setAlarmRoutesOn] = useState(false); + const [alarmOptions, setAlarmOptions] = useState(); const { isNativeEnvironment } = useAppBridge(); const { mutateAsync: homeGroups } = useHomeGroupsMutation(); @@ -328,6 +331,10 @@ export const SubLayout = () => { }; const alarmLink = (options: AlarmLinkOptions) => { console.log(options); + if(options?.linkUrl){ + setAlarmRoutesOn(true); + setAlarmOptions(options); + } }; window.saveToken = saveToken; @@ -380,6 +387,11 @@ export const SubLayout = () => { setFavoriteEdit={ setFavoriteEdit } > } + { alarmRoutesOn && + + }