= {}
+ formData.forEach((value, key) => {
+ formDataObj[key] = value
+ })
+ console.log('formData contents:', formDataObj)
+
+ window.neoConfirm(
+ 'お問い合わせを登録しますか? Hanwha Japanの担当者にお問い合わせメールが送信されます。',
+ async () => {
+ const res = await saveInquiry(formData)
+ alert('保存されました。')
+ router.push(`/inquiry/${res.qnaNo}`)
+ },
+ () => null,
+ )
}
return (
@@ -62,30 +81,42 @@ export default function RegistForm() {
お問い合わせタイプ *
-
-
-
-
-
-
-
+ setInquiryRequest({ ...inquiryRequest, qnaClsMidCd: e.target.value })}
+ >
+
+
+
-
-
-
-
-
-
+ setInquiryRequest({ ...inquiryRequest, qnaClsSmlCd: e.target.value })}
+ >
+
+
+
@@ -94,27 +125,36 @@ export default function RegistForm() {
名前 *
-
+ setInquiryRequest({ ...inquiryRequest, regUserNm: e.target.value })}
+ />
-
@@ -122,7 +162,12 @@ export default function RegistForm() {
お問い合わせタイトル *
-
+ setInquiryRequest({ ...inquiryRequest, title: e.target.value })}
+ />
diff --git a/src/components/inquiry/list/ListForm.tsx b/src/components/inquiry/list/ListForm.tsx
index d22d424..0118f58 100644
--- a/src/components/inquiry/list/ListForm.tsx
+++ b/src/components/inquiry/list/ListForm.tsx
@@ -5,8 +5,8 @@ import { useState } from 'react'
export default function ListForm() {
const router = useRouter()
- const [searchKeyword, setSearchKeyword] = useState('')
const { inquiryListRequest, setInquiryListRequest } = useInquiryFilterStore()
+ const [searchKeyword, setSearchKeyword] = useState(inquiryListRequest.schTitle ?? '')
const handleSearch = () => {
if (searchKeyword.length >= 2) {
diff --git a/src/components/inquiry/list/ListTable.tsx b/src/components/inquiry/list/ListTable.tsx
index 9598117..eed1d34 100644
--- a/src/components/inquiry/list/ListTable.tsx
+++ b/src/components/inquiry/list/ListTable.tsx
@@ -7,6 +7,7 @@ import { InquiryList } from '@/types/Inquiry'
import { useRouter } from 'next/navigation'
import { useInquiryFilterStore } from '@/store/inquiryFilterStore'
import { useSessionStore } from '@/store/session'
+import ListForm from './ListForm'
const badgeStyle = [
{
@@ -29,14 +30,23 @@ export default function ListTable() {
const { inquiryList } = useInquiry()
const { inquiryListRequest, setInquiryListRequest } = useInquiryFilterStore()
+ const [heldInquiryList, setHeldInquiryList] = useState
([])
+
const { session } = useSessionStore()
useEffect(() => {
- if (inquiryList.length !== 0) {
- const hasMoreItems = inquiryList[0].totCnt > offset + 10
- setHasMore(hasMoreItems)
+ if (inquiryList.length > 0) {
+ if (offset === 0) {
+ setHeldInquiryList(inquiryList)
+ } else {
+ const remainingList = heldInquiryList.slice(offset, offset + 10)
+ if (JSON.stringify(remainingList) !== JSON.stringify(inquiryList)) {
+ setHeldInquiryList((prev) => [...prev, ...inquiryList])
+ }
+ }
+ setHasMore(inquiryList.length > offset + 10)
} else {
- setHasMore(false)
+ setHeldInquiryList([])
}
}, [inquiryList, offset])
@@ -49,8 +59,19 @@ export default function ListTable() {
setInquiryListRequest({ ...inquiryListRequest, startRow: offset, endRow: offset + 10 })
}
+ const handleFilter = (e: React.ChangeEvent) => {
+ console.log(e.target.value)
+ setHeldInquiryList(inquiryList.filter((inquiry: InquiryList) => inquiry.answerYn === e.target.value))
+ if (e.target.value === '') {
+ setHeldInquiryList(inquiryList)
+ }
+ }
+
+ console.log('heldInquiryList:: ', heldInquiryList)
+
return (
<>
+
@@ -60,7 +81,7 @@ export default function ListTable() {
-
+ handleFilter(e)}>
@@ -69,11 +90,11 @@ export default function ListTable() {
- 合計 {inquiryList.length}個
+ 合計 {heldInquiryList.length > 0 ? heldInquiryList[0].totCnt : 0}個
- {inquiryList.length > 0 &&
- inquiryList.map((inquiry: InquiryList) => (
+ {heldInquiryList.length > 0 &&
+ heldInquiryList.map((inquiry: InquiryList) => (
- router.push(`/inquiry/${inquiry.qnaNo}`)}>
{inquiry.qnaClsLrgCd}
diff --git a/src/hooks/useInquiry.ts b/src/hooks/useInquiry.ts
index 1314dee..0e698b1 100644
--- a/src/hooks/useInquiry.ts
+++ b/src/hooks/useInquiry.ts
@@ -12,10 +12,10 @@ export function useInquiry(
inquiryDetail: Inquiry | null
isLoadingInquiryDetail: boolean
isSavingInquiry: boolean
- saveInquiry: (params: { inquiryRequest: InquiryRequest; files: File[] }) => Promise
+ saveInquiry: (formData: FormData) => Promise
downloadFile: (encodeFileNo: number) => Promise
} {
- const { session } = useSessionStore()
+ // const { session } = useSessionStore()
const queryClient = useQueryClient()
const { inquiryListRequest } = useInquiryFilterStore()
@@ -41,6 +41,7 @@ export function useInquiry(
const resp = await axiosInstance(null).get<{ data: Inquiry }>(`/api/qna/detail`, {
params: { qnoNo, compCd, langCd: 'JA', loginId: 'x112' },
})
+ console.log('resp.data.data:: ', resp.data.data)
return resp.data.data
} catch (error: any) {
console.error(error.response)
@@ -51,15 +52,7 @@ export function useInquiry(
})
const { mutateAsync: saveInquiry, isPending: isSavingInquiry } = useMutation({
- mutationFn: async ({ inquiryRequest, files }: { inquiryRequest: InquiryRequest; files: File[] }) => {
- const formData = new FormData()
- Object.entries(inquiryRequest).forEach(([key, value]) => {
- formData.append(key, value ?? '')
- })
- files.forEach((file) => {
- formData.append('files', file)
- })
-
+ mutationFn: async (formData: FormData) => {
const resp = await axiosInstance(null).post<{ data: InquirySaveResponse }>('/api/qna/save', formData)
return resp.data.data
},
diff --git a/src/types/Inquiry.ts b/src/types/Inquiry.ts
index 96a6fff..c876020 100644
--- a/src/types/Inquiry.ts
+++ b/src/types/Inquiry.ts
@@ -75,11 +75,12 @@ export type InquiryRequest = {
qnaClsMidCd: string //qna CLS Mid Code
qnaClsSmlCd: string | null //qna CLS Small Code
title: string //title
- contents: string | null //contents
+ contents: string //contents
regId: string //registration Userid
- storeId: string | null //store id
+ storeId: string //store id
regUserNm: string //registration User name
regUserTelNo: string | null //registration User tel number
+ qstMail: string //mail
}
export type InquirySaveResponse = {