feat: get inquiry type common code

This commit is contained in:
Dayoung 2025-05-22 18:13:16 +09:00
parent 333f06bb64
commit 50a2335590
5 changed files with 65 additions and 12 deletions

19
src/app/api/qna/route.ts Normal file
View File

@ -0,0 +1,19 @@
import { NextResponse } from 'next/server'
import axios from 'axios'
import { CommonCode } from '@/types/Inquiry'
export async function GET() {
const response = await axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/system/commonCodeListData`)
const codeList: CommonCode[] = []
response.data.data.apiCommCdList.forEach((item: any) => {
if (item.headCd === '204200' || item.headCd === '204300' || item.headCd === '204400') {
codeList.push({
headCd: item.headCd,
code: item.code,
name: item.codeJp,
refChar1: item.refChr1,
})
}
})
return NextResponse.json({ data: codeList })
}

View File

@ -40,6 +40,8 @@ export default function RegistForm() {
}
}, [session])
const { commonCodeList } = useInquiry()
const [attachedFiles, setAttachedFiles] = useState<File[]>([])
const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
@ -113,9 +115,14 @@ export default function RegistForm() {
value={inquiryRequest.qnaClsLrgCd}
onChange={(e) => setInquiryRequest({ ...inquiryRequest, qnaClsLrgCd: e.target.value })}
>
<option value=""></option>
<option value="A01">A01</option>
<option value="204200">204200</option>
<option value="" hidden></option>
{commonCodeList
.filter((code) => code.headCd === '204200')
.map((code) => (
<option key={code.code} value={code.code}>
{code.name}
</option>
))}
</select>
</div>
<div className="data-input mt5">
@ -126,9 +133,14 @@ export default function RegistForm() {
value={inquiryRequest.qnaClsMidCd}
onChange={(e) => setInquiryRequest({ ...inquiryRequest, qnaClsMidCd: e.target.value })}
>
<option value=""></option>
<option value="B02">B02</option>
<option value="204300">204300</option>
<option value="" hidden></option>
{commonCodeList
.filter((code) => code.refChar1 === inquiryRequest.qnaClsLrgCd)
.map((code) => (
<option key={code.code} value={code.code}>
{code.name}
</option>
))}
</select>
</div>
<div className="data-input mt5">
@ -139,9 +151,14 @@ export default function RegistForm() {
value={inquiryRequest.qnaClsSmlCd ?? ''}
onChange={(e) => setInquiryRequest({ ...inquiryRequest, qnaClsSmlCd: e.target.value })}
>
<option value=""></option>
<option value="C05">C05</option>
<option value="204400">204400</option>
<option value="" hidden></option>
{commonCodeList
.filter((code) => code.refChar1 === inquiryRequest.qnaClsMidCd)
.map((code) => (
<option key={code.code} value={code.code}>
{code.name}
</option>
))}
</select>
</div>
</div>

View File

@ -46,9 +46,7 @@ export default function ListTable() {
if (!session.isLoggedIn || !inquiryList) return
if (session.isLoggedIn) {
setInquiryListRequest({ ...inquiryListRequest, storeId: session.storeId ?? '', loginId: session.userId ?? '' })
// setInquiryListRequest({ ...inquiryListRequest, storeId: 'X112', loginId: 'x112' })
}
console.log('inquiryListRequest', inquiryListRequest)
if (inquiryList.length > 0 && inquiryList[0].totCnt > 0) {
if (inquiryListRequest.startRow > 1) {
const isDuplicate = inquiryList.every((newItem) => heldInquiryList.some((existingItem) => existingItem.qnaNo === newItem.qnaNo))

View File

@ -1,4 +1,4 @@
import { InquiryList, Inquiry, InquirySaveResponse } from '@/types/Inquiry'
import { InquiryList, Inquiry, InquirySaveResponse, CommonCode } from '@/types/Inquiry'
import { useAxios } from '@/hooks/useAxios'
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { useInquiryFilterStore } from '@/store/inquiryFilterStore'
@ -16,6 +16,7 @@ export function useInquiry(
isSavingInquiry: boolean
saveInquiry: (formData: FormData) => Promise<InquirySaveResponse>
downloadFile: (encodeFileNo: number) => Promise<File>
commonCodeList: CommonCode[]
} {
const queryClient = useQueryClient()
const { inquiryListRequest } = useInquiryFilterStore()
@ -78,6 +79,16 @@ export function useInquiry(
return resp.data
}
const { data: commonCodeList, isLoading: isLoadingCommonCodeList } = useQuery({
queryKey: ['commonCodeList'],
queryFn: async () => {
const resp = await axiosInstance(null).get<{ data: CommonCode[] }>(`/api/qna`)
return resp.data
},
staleTime: Infinity,
gcTime: Infinity,
})
return {
inquiryList: inquriyListData.inquiryList,
inquiryDetail: inquiryDetail ?? null,
@ -86,5 +97,6 @@ export function useInquiry(
isSavingInquiry,
saveInquiry,
downloadFile,
commonCodeList: commonCodeList?.data ?? [],
}
}

View File

@ -89,3 +89,10 @@ export type InquirySaveResponse = {
qnaNo: number //qna number
mailYn: string //mail yn - Y / N
}
export type CommonCode = {
headCd: string
code: string
name: string
refChar1: string
}