'use client' import { useServey } from '@/hooks/useSurvey' import { SurveyBasicRequest } from '@/types/Survey' import { useRouter, useSearchParams } from 'next/navigation' import { useState, useEffect } from 'react' import { useSurveySaleTabState } from '@/store/surveySaleTabState' import { usePopupController } from '@/store/popupController' import { useAddressStore } from '@/store/addressStore' import { useSessionStore } from '@/store/session' // import { useUserType } from '@/hooks/useUserType' const defaultBasicInfoForm: SurveyBasicRequest = { REPRESENTATIVE: '', STORE: null, CONSTRUCTION_POINT: null, INVESTIGATION_DATE: new Date().toLocaleDateString('en-CA'), BUILDING_NAME: null, CUSTOMER_NAME: null, POST_CODE: null, ADDRESS: null, ADDRESS_DETAIL: null, SUBMISSION_STATUS: false, SUBMISSION_DATE: null, } const REQUIRED_FIELDS: (keyof SurveyBasicRequest)[] = ['REPRESENTATIVE', 'BUILDING_NAME', 'CUSTOMER_NAME'] export default function BasicForm() { const searchParams = useSearchParams() const id = searchParams.get('id') const router = useRouter() const { setBasicInfoSelected } = useSurveySaleTabState() const { surveyDetail, createSurvey, isCreatingSurvey, updateSurvey, isUpdatingSurvey } = useServey(Number(id)) const [basicInfoData, setBasicInfoData] = useState(defaultBasicInfoForm) const { addressData } = useAddressStore() const { session } = useSessionStore() const popupController = usePopupController() useEffect(() => { if (surveyDetail) { const { ID, UPT_DT, REG_DT, DETAIL_INFO, ...rest } = surveyDetail setBasicInfoData(rest) } if (addressData) { setBasicInfoData({ ...basicInfoData, POST_CODE: addressData.post_code, ADDRESS: addressData.address, ADDRESS_DETAIL: addressData.address_detail, }) } if (session?.isLoggedIn) { setBasicInfoData((prev) => ({ ...prev, REPRESENTATIVE: session?.userId ?? '', STORE: session?.storeNm ?? '', CONSTRUCTION_POINT: session?.builderNo ?? '', })) } setBasicInfoSelected() }, [surveyDetail, addressData, session?.isLoggedIn, session?.userId, session?.storeNm, session?.builderNo]) const focusInput = (input: keyof SurveyBasicRequest) => { const inputElement = document.getElementById(input) if (inputElement) { inputElement.focus() } } const validateSurvey = (basicInfoData: SurveyBasicRequest) => { const emptyField = REQUIRED_FIELDS.find((field) => !basicInfoData[field]) if (emptyField) { focusInput(emptyField) return false } return true } const handleChange = (key: keyof SurveyBasicRequest, value: string) => { setBasicInfoData({ ...basicInfoData, [key]: value }) } const handleSave = async (isTemporary: boolean) => { if (id) { // updateSurvey(basicInfoData) alert('保存しました。') // router.push(`/survey-sale/${id}?tab=basic-info`) } if (isTemporary) { // const saveId = await createSurvey(basicInfoData) alert('一時保存されました。') // router.push(`/survey-sale/${saveId}?tab=basic-info`) } else { if (validateSurvey(basicInfoData)) { // const saveId = await createSurvey(basicInfoData) alert('保存しました。') // router.push(`/survey-sale/${saveId}?tab=basic-info`) } } } if (isCreatingSurvey || isUpdatingSurvey) { return
Loading...
} return ( <>
担当者名
handleChange('REPRESENTATIVE', e.target.value)} />
{(session?.role === 'Builder' || session?.role?.includes('Admin')) && ( <>
販売店
handleChange('STORE', e.target.value)} />
)} {(session?.role === 'Partner' || session?.role === 'Builder') && (
施工店
handleChange('CONSTRUCTION_POINT', e.target.value)} />
)}
現地調査日
handleChange('INVESTIGATION_DATE', e.target.value)} />
建物名
handleChange('BUILDING_NAME', e.target.value)} />
顧客名
handleChange('CUSTOMER_NAME', e.target.value)} />
建物の住所
市区町村名, 以後の住所
handleChange('ADDRESS_DETAIL', e.target.value)} />
) }