diff --git a/src/entities/support/model/constants.ts b/src/entities/support/model/constants.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/entities/support/model/types.ts b/src/entities/support/model/types.ts index b6df4af..7c68cc0 100644 --- a/src/entities/support/model/types.ts +++ b/src/entities/support/model/types.ts @@ -26,13 +26,13 @@ export interface FaqItemProps extends FaqItem { } export interface QnaListParams extends SupportParams { + statusCode?: string; page?: DefaultRequestPagination; }; export interface QnaItem { - sortNo?: string; + cursorId?: number; seq?: string; statusCode?: string; - statusName?: string; requestDate?: string; requestName?: string; title?: string; diff --git a/src/entities/support/ui/qna-item.tsx b/src/entities/support/ui/qna-item.tsx index 1028473..b56e353 100644 --- a/src/entities/support/ui/qna-item.tsx +++ b/src/entities/support/ui/qna-item.tsx @@ -2,12 +2,12 @@ import moment from 'moment'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { QnaItemProps } from '../model/types'; +import { useTranslation } from 'react-i18next'; export const SupportQnaItem = ({ - sortNo, + cursorId, seq, statusCode, - statusName, requestDate, requestName, title, @@ -15,12 +15,11 @@ export const SupportQnaItem = ({ answer }: QnaItemProps) => { const { navigate } = useNavigate(); - + const { t } = useTranslation(); const onClickToDetail = () => { navigate(PATHS.support.qna.detail, { state: { statusCode, - statusName, requestDate, requestName, title, @@ -34,13 +33,13 @@ export const SupportQnaItem = ({ <>
onClickToDetail() } + onClick={ () => onClickToDetail() } >
-
{ contents }
+
{ title }
등록일{ moment(requestDate).format('YYYY.MM.DD') } - 상태 [{ statusName }] + 상태 [{t(`support.qna.statusCode.${statusCode}`)}]
diff --git a/src/locales/en.json b/src/locales/en.json index 35c7e54..f2c9963 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -112,6 +112,7 @@ "inquiryButton": "Submit Inquiry", "categories": { "all": "All", + "choose": "Choose", "01": "Billing & Tax Inquiry", "02": "Transaction & Cancellation Inquiry", "03": "Contract & Service Request Inquiry", @@ -119,6 +120,13 @@ "05": "Others", "06": "Service Usage Inquiry", "09": "Credit Limit & Insurance Inquiry" + }, + "statusCode": { + "all": "All", + "00": "Submit", + "01": "Save", + "02": "Submit Inquiry", + "03": "Completed" } } } diff --git a/src/locales/ko.json b/src/locales/ko.json index 364d0fe..36ecca8 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -112,6 +112,7 @@ "inquiryButton": "1:1 문의하기", "categories": { "all": "모두", + "choose": "선택", "01": "정산/세금계산서/부가세 문의", "02": "거래내역/거래취소 문의", "03": "계약/서비스 추가신청 문의", @@ -119,6 +120,13 @@ "05": "기타", "06": "서비스이용문의", "09": "한도/보증보험 문의" + }, + "statusCode": { + "all": "모두", + "00": "작성", + "01": "저장", + "02": "문의", + "03": "답변완료" } } } diff --git a/src/pages/support/qna/detail-page.tsx b/src/pages/support/qna/detail-page.tsx index d670447..70ffc59 100644 --- a/src/pages/support/qna/detail-page.tsx +++ b/src/pages/support/qna/detail-page.tsx @@ -16,7 +16,6 @@ export const QnaDetailPage = () => { const location = useLocation(); const [statusCode, setStatusCode] = useState(''); - const [statusName, setStatusName] = useState(''); const [requestDate, setRequestDate] = useState(''); const [requestName, setRequestName] = useState(''); const [title, setTitle] = useState(''); @@ -27,12 +26,11 @@ export const QnaDetailPage = () => { useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { - navigate(PATHS.support.faq.list); + navigate(PATHS.support.qna.list); }); useEffect(() => { setStatusCode(location?.state.statusCode); - setStatusName(location?.state.statusName); setRequestDate(location?.state.requestDate); setRequestName(location?.state.requestName); setTitle(location?.state.title); @@ -49,7 +47,7 @@ export const QnaDetailPage = () => {
제목 - 보증보험 가입 완료에 따른 한도증액 요청... + { requestName }
유형 @@ -67,10 +65,12 @@ export const QnaDetailPage = () => {
문의 답변
-
{ answer }
+
-
문의 내용
+
문의 내용
+
+ {/*
제목
@@ -81,6 +81,7 @@ export const QnaDetailPage = () => {
+ */}
diff --git a/src/pages/support/qna/list-page.tsx b/src/pages/support/qna/list-page.tsx index 86ae417..89fdf4c 100644 --- a/src/pages/support/qna/list-page.tsx +++ b/src/pages/support/qna/list-page.tsx @@ -5,7 +5,7 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { HeaderType } from '@/entities/common/model/types'; import { useQnaListMutation } from '@/entities/support/api/use-qna-list-mutation'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; -import { QnaItem } from '@/entities/support/model/types'; +import { QnaItem, QnaListParams, QnaListResponse } from '@/entities/support/model/types'; import { SupportQnaItem } from '@/entities/support/ui/qna-item'; import { useSetHeaderTitle, @@ -17,11 +17,13 @@ import { useStore } from '@/shared/model/store'; export const QnaListPage = () => { const { navigate } = useNavigate(); + const midOptions = useStore.getState().UserStore.selectOptionsMids; const userMid = useStore.getState().UserStore.mid; const { t } = useTranslation(); + const [mid, setMid] = useState(userMid); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); - const [selectedCategory, setSelectedCategory] = useState(''); + const [statusCode, setStatusCode] = useState(''); // 02, 03 const [resultList, setResultList] = useState>([]); useSetHeaderTitle(t('support.qna.title')); @@ -33,13 +35,13 @@ export const QnaListPage = () => { const { mutateAsync: qnaList } = useQnaListMutation(); const callList = () => { - let listParams = { - mid: userMid, + let listParams: QnaListParams = { + mid: mid, + statusCode: statusCode, ...{page: pageParam} }; - qnaList(listParams).then((rs) => { - console.log(rs) + qnaList(listParams).then((rs: QnaListResponse) => { setResultList(rs.content); }); }; @@ -50,10 +52,9 @@ export const QnaListPage = () => { rs.push( { useEffect(() => { callList(); - }, [selectedCategory]); + }, [statusCode]); return ( <> @@ -82,25 +83,32 @@ export const QnaListPage = () => {
{t('support.qna.merchant')}
- ) => setMid(e.target.value) } + > + { + midOptions.map((value, index) => ( + + )) + }
diff --git a/src/pages/support/qna/register-page.tsx b/src/pages/support/qna/register-page.tsx index 1febea9..aa9dab3 100644 --- a/src/pages/support/qna/register-page.tsx +++ b/src/pages/support/qna/register-page.tsx @@ -10,6 +10,8 @@ import { useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; import { useStore } from '@/shared/model/store'; +import { useTranslation } from 'react-i18next'; +import { PatternFormat } from 'react-number-format'; export enum QnaRegisterPropsName { Mid = 'Mid', @@ -23,6 +25,7 @@ export enum QnaRegisterPropsName { export const QnaRegisterPage = () => { const { navigate } = useNavigate(); + const { t } = useTranslation(); const userMid = useStore.getState().UserStore.mid; const [mid, setMid] = useState(userMid); @@ -33,7 +36,7 @@ export const QnaRegisterPage = () => { const [title, setTitle] = useState(''); const [contents, setContents] = useState(''); - useSetHeaderTitle('1:1 문의'); + useSetHeaderTitle(t('support.qna.title')); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { @@ -73,15 +76,14 @@ export const QnaRegisterPage = () => { const callRegister = () => { let params = { mid: mid, + title: title, counselType: counselType, requestName: requestName, requestTel: requestTel, requestEmail: requestEmail, - title: title, contents: contents, }; qnaSave(params).then((rs) => { - console.log(rs); alert('성공'); navigate(PATHS.support.qna.list); }); @@ -105,6 +107,7 @@ export const QnaRegisterPage = () => { ) => setInputValue(e, QnaRegisterPropsName.Title) } />
@@ -116,9 +119,17 @@ export const QnaRegisterPage = () => {
@@ -130,6 +141,7 @@ export const QnaRegisterPage = () => { ) => setInputValue(e, QnaRegisterPropsName.RequestName) } /> @@ -139,12 +151,13 @@ export const QnaRegisterPage = () => { 휴대폰번호 *
- ) => setInputValue(e, QnaRegisterPropsName.RequestTel) } - /> + >
@@ -165,6 +178,7 @@ export const QnaRegisterPage = () => {