'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 { useMainContentsController } from '@/hooks/main/useMainContentsController' import { QcastContext } from '@/app/QcastProvider' import { handleFileDown } from '@/util/board-utils' export default function MainContents({ setFaqOpen, setFaqModalNoticeNo }) { const { getMessage } = useMessage() const router = useRouter() const globalLocaleState = useRecoilValue(globalLocaleStore) const { promiseGet, get } = useAxios(globalLocaleState) //공지사항 const [recentNoticeList, setRecentNoticeList] = useState([]) //FAQ const [recentFaqList, setRecentFaqList] = useState([]) const { qcastState, setIsGlobalLoading } = useContext(QcastContext) const { fetchObjectList, initObjectList } = useMainContentsController() //첨부파일 const [fileList, setFileList] = useState([]) useEffect(() => { fetchObjectList() fetchNoticeList() fetchFaqList() //첨부파일 목록 호출 fetchArchiveList() return () => { initObjectList() } }, []) //첨부파일 목록 호출 const fetchArchiveList = async () => { const url = `/api/board/list` const params = new URLSearchParams({ schNoticeTpCd: 'QC', schNoticeClsCd: 'DOWN', startRow: 1, endRow: 2, schMainYn: 'Y', }) const apiUrl = `${url}?${params.toString()}` const resultData = await get({ url: apiUrl }) if (resultData) { if (resultData.result.code === 200) { setFileList(resultData.data) } } } //공지사항 호출 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) } } return (
{qcastState?.objectList.length > 0 ? (
    {qcastState?.objectList.map((row) => { return (
  • { setIsGlobalLoading(true) 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')}

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

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

)}
{fileList.length > 0 ? (
{fileList?.map((file) => ( ))}
) : (

{getMessage('common.message.no.data')}

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