feat: add fetch commonCode for get email from your dealer base representative
This commit is contained in:
parent
46fe524f79
commit
d599f28522
@ -20,7 +20,6 @@ export async function GET(request: NextRequest) {
|
|||||||
if (!headCd) {
|
if (!headCd) {
|
||||||
return NextResponse.json({ error: `${headCode}를 찾을 수 없습니다` }, { status: 404 })
|
return NextResponse.json({ error: `${headCode}를 찾을 수 없습니다` }, { status: 404 })
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const roofMaterials: CommCode[] = await prisma.BC_COMM_L.findMany({
|
const roofMaterials: CommCode[] = await prisma.BC_COMM_L.findMany({
|
||||||
where: {
|
where: {
|
||||||
@ -35,10 +34,29 @@ export async function GET(request: NextRequest) {
|
|||||||
CODE: 'asc',
|
CODE: 'asc',
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
if (headCode === 'SALES_OFFICE_CD') {
|
||||||
|
return getSaleOffice(headCd.HEAD_CD)
|
||||||
|
}
|
||||||
return NextResponse.json(roofMaterials)
|
return NextResponse.json(roofMaterials)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
|
console.error('❌ 데이터 조회 중 오류가 발생했습니다:', error)
|
||||||
return NextResponse.json({ error: '데이터 조회 중 오류가 발생했습니다' }, { status: 500 })
|
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)
|
||||||
|
}
|
||||||
|
|||||||
@ -2,14 +2,16 @@ import Image from 'next/image'
|
|||||||
import { usePopupController } from '@/store/popupController'
|
import { usePopupController } from '@/store/popupController'
|
||||||
import { useParams } from 'next/navigation'
|
import { useParams } from 'next/navigation'
|
||||||
import { useServey } from '@/hooks/useSurvey'
|
import { useServey } from '@/hooks/useSurvey'
|
||||||
import { useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import { useSessionStore } from '@/store/session'
|
import { useSessionStore } from '@/store/session'
|
||||||
|
import { useCommCode } from '@/hooks/useCommCode'
|
||||||
|
import { CommCode } from '@/types/CommCode'
|
||||||
|
|
||||||
interface SubmitFormData {
|
interface SubmitFormData {
|
||||||
saleBase: string | null
|
saleBase: string | null
|
||||||
store: string
|
store: string
|
||||||
sender: string
|
sender: string
|
||||||
receiver: string
|
receiver: string[]
|
||||||
reference: string | null
|
reference: string | null
|
||||||
title: string
|
title: string
|
||||||
contents: string
|
contents: string
|
||||||
@ -21,23 +23,24 @@ interface FormField {
|
|||||||
required: boolean
|
required: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const dummy = [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
name: '東京支店',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: '大阪支店',
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
export default function SurveySaleSubmitPopup() {
|
export default function SurveySaleSubmitPopup() {
|
||||||
const popupController = usePopupController()
|
const popupController = usePopupController()
|
||||||
const { session } = useSessionStore()
|
const { session } = useSessionStore()
|
||||||
const params = useParams()
|
const params = useParams()
|
||||||
const routeId = params.id
|
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[] = [
|
const FORM_FIELDS: FormField[] = [
|
||||||
{ id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' },
|
{ id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' },
|
||||||
{ id: 'store', name: '提出販売店', required: true },
|
{ id: 'store', name: '提出販売店', required: true },
|
||||||
@ -52,7 +55,7 @@ export default function SurveySaleSubmitPopup() {
|
|||||||
saleBase: null,
|
saleBase: null,
|
||||||
store: '',
|
store: '',
|
||||||
sender: session?.email ?? '',
|
sender: session?.email ?? '',
|
||||||
receiver: '',
|
receiver: [],
|
||||||
reference: null,
|
reference: null,
|
||||||
title: '[HANASYS現地調査] 調査物件が提出.',
|
title: '[HANASYS現地調査] 調査物件が提出.',
|
||||||
contents: '',
|
contents: '',
|
||||||
@ -68,7 +71,7 @@ export default function SurveySaleSubmitPopup() {
|
|||||||
const requiredFields = FORM_FIELDS.filter((field) => field.required)
|
const requiredFields = FORM_FIELDS.filter((field) => field.required)
|
||||||
|
|
||||||
for (const field of requiredFields) {
|
for (const field of requiredFields) {
|
||||||
if (!data[field.id]?.trim()) {
|
if (data[field.id]?.length === 0) {
|
||||||
alert(`${field.name}は必須入力項目です。`)
|
alert(`${field.name}は必須入力項目です。`)
|
||||||
const element = document.getElementById(field.id)
|
const element = document.getElementById(field.id)
|
||||||
if (element) {
|
if (element) {
|
||||||
@ -77,7 +80,6 @@ export default function SurveySaleSubmitPopup() {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,12 +125,19 @@ export default function SurveySaleSubmitPopup() {
|
|||||||
className="select-form"
|
className="select-form"
|
||||||
id={field.id}
|
id={field.id}
|
||||||
value={submitData[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>
|
<option value="">選択してください</option>
|
||||||
{dummy.map((item) => (
|
{commCodeList.map((item) => (
|
||||||
<option key={item.id} value={item.name}>
|
<option key={item.code} value={item.code}>
|
||||||
{item.name}
|
{item.codeJp}
|
||||||
</option>
|
</option>
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
@ -58,8 +58,8 @@ export default function ListTable() {
|
|||||||
<div className="sale-item-num">{survey.srlNo}</div>
|
<div className="sale-item-num">{survey.srlNo}</div>
|
||||||
<div className="sale-item-date">{survey.investigationDate}</div>
|
<div className="sale-item-date">{survey.investigationDate}</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="sale-item-tit">{survey.buildingName}</div>
|
<div className="sale-item-tit">{survey.buildingName === null ? '-' : survey.buildingName}</div>
|
||||||
<div className="sale-item-customer">{survey.customerName}</div>
|
<div className="sale-item-customer">{survey.customerName === null ? '-' : survey.customerName}</div>
|
||||||
<div className="sale-item-update-bx">
|
<div className="sale-item-update-bx">
|
||||||
<div className="sale-item-name">{survey.representative}</div>
|
<div className="sale-item-name">{survey.representative}</div>
|
||||||
<div className="sale-item-update">{new Date(survey.uptDt).toLocaleString()}</div>
|
<div className="sale-item-update">{new Date(survey.uptDt).toLocaleString()}</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user