From 591636740f498a9668cd11be2ba05717aa0de0d7 Mon Sep 17 00:00:00 2001 From: basssy Date: Tue, 22 Oct 2024 14:32:37 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=ED=8C=9D=EC=97=85=20&=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EC=BB=A8=ED=85=90=EC=B8=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Main.jsx | 40 +++---- src/components/main/ChangePasswordPop.jsx | 3 +- src/components/main/MainContents.jsx | 126 +++++++++++++--------- src/locales/ja.json | 1 + src/locales/ko.json | 7 +- 5 files changed, 98 insertions(+), 79 deletions(-) diff --git a/src/components/Main.jsx b/src/components/Main.jsx index 76676cd1..11046eed 100644 --- a/src/components/Main.jsx +++ b/src/components/Main.jsx @@ -2,39 +2,32 @@ import React, { useEffect, useState } from 'react' import { useRouter } from 'next/navigation' -import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil' -import { modalContent, modalState, modalProps } from '@/store/modalAtom' +import { useRecoilState, useRecoilValue } from 'recoil' import { sessionStore } from '@/store/commonAtom' import { useAxios } from '@/hooks/useAxios' import { globalLocaleStore } from '@/store/localeAtom' import MainContents from './main/MainContents' import { useMessage } from '@/hooks/useMessage' import { stuffSearchState } from '@/store/stuffAtom' -import { useForm } from 'react-hook-form' import '@/styles/contents.scss' import ChangePasswordPop from './main/ChangePasswordPop' import { searchState } from '@/store/boardAtom' export default function MainPage() { - const [sessionState, setSessionState] = useRecoilState(sessionStore) + const sessionState = useRecoilValue(sessionStore) const globalLocaleState = useRecoilValue(globalLocaleStore) - const { get } = useAxios(globalLocaleState) + const { promiseGet } = useAxios(globalLocaleState) const router = useRouter() const { getMessage } = useMessage() const [searchTxt, setSearchTxt] = useState('') const [searchRadioType, setSearchRadioType] = useState('object') - //컨텐츠 관련 + const [saleStoreId, setSaleStoreId] = useState('') const [saleStoreName, setSaleStoreName] = useState('') - const [objectList, setObjectList] = useState([]) - const [businessCharger, setBusinessCharger] = useState('') - const [businessChargerMail, setBusinessChargerMail] = useState('') - const [businessChargerTel, setBusinessChargerTel] = useState('') - const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) const [searchForm, setSearchForm] = useRecoilState(searchState) @@ -47,17 +40,15 @@ export default function MainPage() { const fetchObjectList = async () => { try { - // const apiUrl = `/api/main-page/object/X167/list` const apiUrl = `/api/main-page/object/${sessionState?.storeId}/list` - const res = await get({ url: apiUrl }) - if (res) { - setSaleStoreId(res.saleStoreId) - setSaleStoreName(res.saleStoreName) - setObjectList(res.objectList) - setBusinessCharger(res.businessCharger) - setBusinessChargerMail(res.businessChargerMail) - setBusinessChargerTel(res.businessChargerTel) - } + await promiseGet({ + url: apiUrl, + }).then((res) => { + if (res.status === 200) { + setSaleStoreId(res.data.saleStoreId) + setSaleStoreName(res.data.saleStoreName) + } + }) } catch (error) { console.error('MAIN API fetching error:', error) } @@ -143,12 +134,7 @@ export default function MainPage() { - + )) || ( diff --git a/src/components/main/ChangePasswordPop.jsx b/src/components/main/ChangePasswordPop.jsx index e9355d24..b5a3f8da 100644 --- a/src/components/main/ChangePasswordPop.jsx +++ b/src/components/main/ChangePasswordPop.jsx @@ -70,8 +70,9 @@ export default function ChangePasswordPop() { chgType: 'I', chgPwd: _password1, } + await patch({ url: '/api/login/v1.0/user/change-password', data: param }).then((res) => { - if (res) { + if (res.result.code === 200) { if (res.result.resultCode === 'S') { alert(getMessage('main.popup.login.success')) setSessionState({ ...sessionState, pwdInitYn: 'Y' }) diff --git a/src/components/main/MainContents.jsx b/src/components/main/MainContents.jsx index 6dcca943..d2e38853 100644 --- a/src/components/main/MainContents.jsx +++ b/src/components/main/MainContents.jsx @@ -8,11 +8,18 @@ import { useRecoilValue } from 'recoil' import { useRouter } from 'next/navigation' import { globalLocaleStore } from '@/store/localeAtom' import { queryStringFormatter } from '@/util/common-utils' -export default function MainContents({ objectList, businessCharger, businessChargerMail, businessChargerTel }) { +import { sessionStore } from '@/store/commonAtom' + +export default function MainContents() { const { getMessage } = useMessage() const router = useRouter() const globalLocaleState = useRecoilValue(globalLocaleStore) - const { get } = useAxios(globalLocaleState) + const { promiseGet, get } = useAxios(globalLocaleState) + + const sessionState = useRecoilValue(sessionStore) + + //최근 물건 + const [objectList, setObjectList] = useState([]) //공지사항 const [recentNoticeList, setRecentNoticeList] = useState([]) @@ -20,10 +27,37 @@ export default function MainContents({ objectList, businessCharger, businessChar //FAQ const [recentFaqList, setRecentFaqList] = useState([]) + //Sales Contact info + const [businessCharger, setBusinessCharger] = useState(null) + const [businessChargerMail, setBusinessChargerMail] = useState(null) + useEffect(() => { + fetchObjectList() fetchNoticeList() fetchFaqList() - }, []) + }, [sessionState]) + + //최근 갱신 물건목록 / Sales Contact info 정보 + const fetchObjectList = async () => { + try { + const apiUrl = `/api/main-page/object/${sessionState?.storeId}/list` + await promiseGet({ + url: apiUrl, + }).then((res) => { + if (res.status === 200) { + setObjectList(res.data.objectList) + setBusinessCharger(res.data.businessCharger) + setBusinessChargerMail(res.data.businessChargerMail) + } else { + setObjectList([]) + setBusinessCharger(null) + setBusinessChargerMail(null) + } + }) + } catch (error) { + console.error('MAIN API fetching error:', error) + } + } //공지사항 호출 const fetchNoticeList = async () => { @@ -35,13 +69,13 @@ export default function MainContents({ objectList, businessCharger, businessChar endRow: 1, } const noticeApiUrl = `api/board/list?${queryStringFormatter(param)}` - const res = await get({ url: noticeApiUrl }) - //console.log('공지res::', res) - if (res) { - if (res.data.length > 0) { - setRecentNoticeList(res.data) + await promiseGet({ url: noticeApiUrl }).then((res) => { + if (res.status === 200) { + setRecentNoticeList(res.data.data) + } else { + setRecentNoticeList([]) } - } + }) } catch (error) { console.error('NOTICE fetching error:', error) } @@ -57,13 +91,15 @@ export default function MainContents({ objectList, businessCharger, businessChar endRow: 3, } const faqApiUrl = `api/board/list?${queryStringFormatter(param)}` - const res = await get({ url: faqApiUrl }) - //console.log('FAQres::', res) - if (res) { - if (res.data.length > 0) { - setRecentFaqList(res.data) + await promiseGet({ + url: faqApiUrl, + }).then((res) => { + if (res.status === 200) { + setRecentFaqList(res.data.data) + } else { + setRecentFaqList([]) } - } + }) } catch (error) { console.error('FAQ fetching error:', error) } @@ -74,38 +110,28 @@ export default function MainContents({ objectList, businessCharger, businessChar
    - {objectList?.length > 0 ? ( - <> - {objectList.map((row) => { - return ( -
  • { - if (row.objectNo.substring(0, 1) === 'R') { - router.push(`/management/stuff/detail?objectNo=${row.objectNo.toString()}`) - } else { - router.push(`/management/stuff/tempdetail?objectNo=${row.objectNo.toString()}`) - } - }} - > -
    - {dayjs(row.lastEditDatetime).format('YYYY.MM.DD HH:mm:ss')} - {row.objectNo} - {row.objectName} - {row.saleStoreName} -
    -
  • - ) - })} - - ) : ( - <> -
  • -
    최근 갱신 물건이 없습니다
    + {objectList.map((row) => { + return ( +
  • { + if (row.objectNo.substring(0, 1) === 'R') { + router.push(`/management/stuff/detail?objectNo=${row.objectNo.toString()}`) + } else { + router.push(`/management/stuff/tempdetail?objectNo=${row.objectNo.toString()}`) + } + }} + > +
    + {dayjs(row.lastEditDatetime).format('YYYY.MM.DD HH:mm:ss')} + {row.objectNo} + {row.objectName} + {row.saleStoreName} +
  • - - )} + ) + })}
@@ -156,13 +182,17 @@ export default function MainContents({ objectList, businessCharger, businessChar
react
-
{businessCharger}
+ {(businessCharger &&
{businessCharger}
) || ( +
{getMessage('main.content.noBusiness')}
+ )}
  • react
    -
    {businessChargerMail}
    + {(businessChargerMail &&
    {businessChargerMail}
    ) || ( +
    {getMessage('main.content.noBusiness')}
    + )}
  • diff --git a/src/locales/ja.json b/src/locales/ja.json index b6f41c05..c4c09341 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -588,6 +588,7 @@ "main.content.notice": "お知らせ", "main.content.download1": "操作マニュアル", "main.content.download2": "屋根の説明書", + "main.content.noBusiness": "Hanwha Japanにお問い合わせください", "main.popup.login.popupTitle": "パスワード変更", "main.popup.login.newPassword1": "新しいパスワードを入力", "main.popup.login.newPassword2": "新規パスワード再入力", diff --git a/src/locales/ko.json b/src/locales/ko.json index 525ae91c..f5394e2e 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -472,7 +472,7 @@ "stuff.addressPopup.btn1": "닫기", "stuff.addressPopup.btn2": "주소적용", "stuff.planReqPopup.title": "설계의뢰 불러오기", - "stuff.temp.subTitle" : "물건정보", + "stuff.temp.subTitle": "물건정보", "stuff.detail.required": "필수 입력항목", "stuff.detail.planReqNo": "설계의뢰No.", "stuff.detail.dispCompanyName": "담당자", @@ -593,12 +593,13 @@ "main.content.notice": "공지사항", "main.content.download1": "조작메뉴얼", "main.content.download2": "지붕설명서", + "main.content.noBusiness": "Hanwha Japan에 문의하세요", "main.popup.login.popupTitle": "비밀번호변경", "main.popup.login.newPassword1": "새 비밀번호 입력", "main.popup.login.newPassword2": "새 비밀번호 재입력", "main.popup.login.placeholder": "반각 10자 이내", - "main.popup.login.guide1": "초기화된 비밀번호로 로그인한 경우 비밀번호를 변경하지 않으면 사이트 이용이 가능합니다.", - "main.popup.login.guide2": "비밀번호를 변경하지 않으려면 로그인 화면으로 이동합니다.", + "main.popup.login.guide1": "초기화된 비밀번호로 로그인한 경우, 비밀번호를 변경해야 사이트 이용이 가능합니다.", + "main.popup.login.guide2": "비밀번호를 변경하지 않을 경우, 로그인 화면으로 이동합니다.", "main.popup.login.btn1": "변경", "main.popup.login.btn2": "변경안함", "main.popup.login.validate1": "입력한 패스워드가 다릅니다.",