'use client' import { useEffect, useState, useContext } from 'react' import ProductItem from './ProductItem' import { useMessage } from '@/hooks/useMessage' import Image from 'next/image' import dayjs from 'dayjs' import { useAxios } from '@/hooks/useAxios' import { useRecoilValue } from 'recoil' import { useRouter } from 'next/navigation' import { globalLocaleStore } from '@/store/localeAtom' import { queryStringFormatter } from '@/util/common-utils' import MainSkeleton from '../ui/MainSkeleton' import { useMainContentsController } from '@/hooks/main/useMainContentsController' import { QcastContext } from '@/app/QcastProvider' import { useSwal } from '@/hooks/useSwal' import BoardDetailModal from '../community/modal/BoardDetailModal' export default function MainContents() { const { swalFire } = useSwal() const { getMessage } = useMessage() const router = useRouter() const globalLocaleState = useRecoilValue(globalLocaleStore) const { promiseGet } = useAxios(globalLocaleState) //공지사항 const [recentNoticeList, setRecentNoticeList] = useState([]) //FAQ const [recentFaqList, setRecentFaqList] = useState([]) const { qcastState } = useContext(QcastContext) const { fetchObjectList, initObjectList } = useMainContentsController() useEffect(() => { fetchObjectList() fetchNoticeList() fetchFaqList() return () => { initObjectList() } }, []) //공지사항 호출 const fetchNoticeList = async () => { try { const param = { schNoticeTpCd: 'QC', schNoticeClsCd: 'NOTICE', startRow: 1, endRow: 1, } const noticeApiUrl = `api/board/list?${queryStringFormatter(param)}` await promiseGet({ url: noticeApiUrl }).then((res) => { if (res.status === 200) { setRecentNoticeList(res.data.data) } else { setRecentNoticeList([]) } }) } catch (error) { console.error('NOTICE fetching error:', error) } } //FAQ 호출 const fetchFaqList = async () => { try { const param = { schNoticeTpCd: 'QC', schNoticeClsCd: 'FAQ', startRow: 1, endRow: 3, } const faqApiUrl = `api/board/list?${queryStringFormatter(param)}` await promiseGet({ url: faqApiUrl, }).then((res) => { if (res.status === 200) { setRecentFaqList(res.data.data) } else { setRecentFaqList([]) } }) } catch (error) { console.error('FAQ fetching error:', error) } } // FAQ 팝업 관련 const [open, setOpen] = useState(false) const [modalNoticeNo, setModalNoticeNo] = useState('') return (
{qcastState?.objectList.length > 0 ? (
    {qcastState?.objectList.map((row) => { return (
  • { if (row.tempFlg === '0') { router.push(`/management/stuff/detail?objectNo=${row.objectNo.toString()}`, { scroll: false }) } else { router.push(`/management/stuff/tempdetail?objectNo=${row.objectNo.toString()}`, { scroll: false }) } }} >
    {dayjs(row.lastEditDatetime).format('YYYY.MM.DD HH:mm:ss')} {row.tempFlg === '0' ? row.objectNo : getMessage('stuff.gridData.tempObjectNo')} {row.objectName ? row.objectName : '-'} {row.saleStoreName}
  • ) })}
) : (

{getMessage('main.content.objectList.noData1')}

{getMessage('main.content.objectList.noData2')}

)}
{recentNoticeList.length > 0 ? (
{dayjs(recentNoticeList[0]?.regDt).format('YYYY.MM.DD')}
{recentNoticeList[0]?.title}
') : '' }} >
) : (

{getMessage('main.content.noBusiness')}

)}
{open && }
{recentFaqList.length > 0 ? (
    {recentFaqList.map((row) => { return (
  • FAQ {row.totCnt - row.rowNumber + 1}
    { setOpen(true) setModalNoticeNo(row.noticeNo) }} > {row.title}
    {dayjs(row.regDt).format('YYYY.MM.DD')}
  • ) })}
) : (

{getMessage('main.content.noBusiness')}

)}
  • react
    {(qcastState?.businessCharger &&
    {qcastState?.businessCharger}
    ) || (
    {getMessage('main.content.noBusiness')}
    )}
  • react
    {(qcastState?.businessChargerMail &&
    {qcastState?.businessChargerMail}
    ) || (
    {getMessage('main.content.noBusiness')}
    )}
) }