feat: add fetch commonCode for get email from your dealer base representative

This commit is contained in:
Dayoung 2025-05-27 17:52:52 +09:00
parent 46fe524f79
commit d599f28522
3 changed files with 51 additions and 24 deletions

View File

@ -20,7 +20,6 @@ export async function GET(request: NextRequest) {
if (!headCd) {
return NextResponse.json({ error: `${headCode}를 찾을 수 없습니다` }, { status: 404 })
}
// @ts-ignore
const roofMaterials: CommCode[] = await prisma.BC_COMM_L.findMany({
where: {
@ -35,10 +34,29 @@ export async function GET(request: NextRequest) {
CODE: 'asc',
},
})
if (headCode === 'SALES_OFFICE_CD') {
return getSaleOffice(headCd.HEAD_CD)
}
return NextResponse.json(roofMaterials)
} catch (error) {
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
return NextResponse.json({ error: '데이터 조회 중 오류가 발생했습니다' }, { status: 500 })
}
}
const getSaleOffice = async (headCode: string) => {
// @ts-ignore
const commCodeSaleOffice: CommCode[] = await prisma.BC_COMM_L.findMany({
where: {
HEAD_CD: headCode,
REF_NUM1: 1,
},
select: {
CODE: true,
CODE_JP: true,
REF_CHR1: true,
REF_NUM1: true,
},
})
return NextResponse.json(commCodeSaleOffice)
}

View File

@ -2,14 +2,16 @@ import Image from 'next/image'
import { usePopupController } from '@/store/popupController'
import { useParams } from 'next/navigation'
import { useServey } from '@/hooks/useSurvey'
import { useState } from 'react'
import { useEffect, useState } from 'react'
import { useSessionStore } from '@/store/session'
import { useCommCode } from '@/hooks/useCommCode'
import { CommCode } from '@/types/CommCode'
interface SubmitFormData {
saleBase: string | null
store: string
sender: string
receiver: string
receiver: string[]
reference: string | null
title: string
contents: string
@ -21,23 +23,24 @@ interface FormField {
required: boolean
}
const dummy = [
{
id: 1,
name: '東京支店',
},
{
id: 2,
name: '大阪支店',
},
]
export default function SurveySaleSubmitPopup() {
const popupController = usePopupController()
const { session } = useSessionStore()
const params = useParams()
const routeId = params.id
const [commCodeList, setCommCodeList] = useState<CommCode[]>([])
const { getCommCode } = useCommCode()
useEffect(() => {
if (session?.isLoggedIn && session?.role === 'Admin') {
getCommCode('SALES_OFFICE_CD').then((codes) => {
setCommCodeList(codes)
})
}
}, [session])
const FORM_FIELDS: FormField[] = [
{ id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' },
{ id: 'store', name: '提出販売店', required: true },
@ -52,7 +55,7 @@ export default function SurveySaleSubmitPopup() {
saleBase: null,
store: '',
sender: session?.email ?? '',
receiver: '',
receiver: [],
reference: null,
title: '[HANASYS現地調査] 調査物件が提出.',
contents: '',
@ -68,7 +71,7 @@ export default function SurveySaleSubmitPopup() {
const requiredFields = FORM_FIELDS.filter((field) => field.required)
for (const field of requiredFields) {
if (!data[field.id]?.trim()) {
if (data[field.id]?.length === 0) {
alert(`${field.name}は必須入力項目です。`)
const element = document.getElementById(field.id)
if (element) {
@ -77,7 +80,6 @@ export default function SurveySaleSubmitPopup() {
return false
}
}
return true
}
@ -123,12 +125,19 @@ export default function SurveySaleSubmitPopup() {
className="select-form"
id={field.id}
value={submitData[field.id] ?? ''}
onChange={(e) => handleInputChange(field.id, e.target.value)}
onChange={(e) => {
const selectedOffice = commCodeList.find((item) => item.code === e.target.value)
if (selectedOffice) {
//@ts-ignore
const receiver = selectedOffice.REF_CHR1.split(';')
setSubmitData((prev) => ({ ...prev, receiver: receiver, saleBase: e.target.value }))
}
}}
>
<option value=""></option>
{dummy.map((item) => (
<option key={item.id} value={item.name}>
{item.name}
{commCodeList.map((item) => (
<option key={item.code} value={item.code}>
{item.codeJp}
</option>
))}
</select>

View File

@ -58,8 +58,8 @@ export default function ListTable() {
<div className="sale-item-num">{survey.srlNo}</div>
<div className="sale-item-date">{survey.investigationDate}</div>
</div>
<div className="sale-item-tit">{survey.buildingName}</div>
<div className="sale-item-customer">{survey.customerName}</div>
<div className="sale-item-tit">{survey.buildingName === null ? '-' : survey.buildingName}</div>
<div className="sale-item-customer">{survey.customerName === null ? '-' : survey.customerName}</div>
<div className="sale-item-update-bx">
<div className="sale-item-name">{survey.representative}</div>
<div className="sale-item-update">{new Date(survey.uptDt).toLocaleString()}</div>