'use client' import { useEffect, useState } from 'react' import type { SurveyBasicRequest } from '@/types/Survey' import type { Mode } from 'fs' import { usePopupController } from '@/store/popupController' import { useAddressStore } from '@/store/addressStore' import { SessionData } from '@/types/Auth' interface BasicFormProps { basicInfo: SurveyBasicRequest setBasicInfo: (basicInfo: SurveyBasicRequest) => void mode: Mode session: SessionData } export default function BasicForm({ basicInfo, setBasicInfo, mode, session }: BasicFormProps) { const [isFlip, setIsFlip] = useState(true) const { addressData, resetAddressData } = useAddressStore() const popupController = usePopupController() useEffect(() => { if (!addressData) return setBasicInfo({ ...basicInfo, postCode: addressData.post_code.slice(0, 3) + '-' + addressData.post_code.slice(3), address: addressData.address, addressDetail: addressData.address_detail, }) resetAddressData() }, [addressData]) const handleAddressInitiate = () => { setBasicInfo({ ...basicInfo, postCode: null, address: null, addressDetail: null, }) } return ( <>
setIsFlip(!isFlip)}>
基本情報
担当者名
setBasicInfo({ ...basicInfo, representative: e.target.value })} />
{/* 페이지 모드 별, 권한 별 판매점, 시공점 입력 여부 처리 */} {mode === 'CREATE' && (session?.role === 'Builder' ? ( <> {storeInput(basicInfo, setBasicInfo, mode)} {builderInput(basicInfo, setBasicInfo, mode, session)} ) : session?.role === 'Partner' ? ( <>{builderInput(basicInfo, setBasicInfo, mode, session)} ) : ( <>{storeInput(basicInfo, setBasicInfo, mode)} ))} {(mode === 'READ' || mode === 'EDIT') && ( <> {basicInfo?.store && storeInput(basicInfo, setBasicInfo, mode)} {(basicInfo?.constructionPoint || (session?.role === 'Builder' && mode === 'EDIT')) && builderInput(basicInfo, setBasicInfo, mode, session)} )}
{/* 현지 조사일*/}
現地調査日
{['CREATE', 'EDIT'].includes(mode as 'CREATE' | 'EDIT') ? (
setBasicInfo({ ...basicInfo, investigationDate: e.target.value })} />
) : ( )}
{/* 건물명 */}
建物名
setBasicInfo({ ...basicInfo, buildingName: e.target.value })} />
{/* 고객명 */}
お客様名
setBasicInfo({ ...basicInfo, customerName: e.target.value })} />
郵便番号/都道府県
{/* 우편번호 */}
{/* 도도부현 */}
setBasicInfo({ ...basicInfo, address: e.target.value })} />
{/* 주소 */} {mode !== 'READ' && (
)}
市区町村名, 以後の住所
setBasicInfo({ ...basicInfo, addressDetail: e.target.value })} />
) } /** 판매점 입력 창 */ const storeInput = (basicInfo: SurveyBasicRequest, setBasicInfo: (basicInfo: SurveyBasicRequest) => void, mode: Mode) => { return (
販売店
setBasicInfo({ ...basicInfo, store: e.target.value })} />
) } /** 시공점 입력 창 - 2차점 시공권한 유저이지만(Builder) 시공점ID가 없는 경우에만 작성 가능 */ const builderInput = (basicInfo: SurveyBasicRequest, setBasicInfo: (basicInfo: SurveyBasicRequest) => void, mode: Mode, session: SessionData) => { const isWriteable = mode !== 'READ' && session?.role === 'Builder' && session?.builderId === null return (
施工店
setBasicInfo({ ...basicInfo, constructionPoint: e.target.value })} />
) }