'use client' import { useState, useEffect } from 'react' import BasicWriteForm from './BasicWriteForm' import DetailWriteForm from './DetailWriteForm' import { SurveySalesBasicInfo, SurveySalesDetailInfo } from '@/api/surveySales' import { useRouter, useSearchParams } from 'next/navigation' import { useServey } from '@/hooks/useSurvey' type TabType = 'basic' | 'detail' const defaultDetailInfoForm: SurveySalesDetailInfo = { contract_capacity: null, retail_company: null, supplementary_facilities: null, supplementary_facilities_etc: null, installation_system: null, installation_system_etc: null, construction_year: null, construction_year_etc: null, roof_material: null, roof_material_etc: null, roof_shape: null, roof_shape_etc: null, roof_slope: null, house_structure: null, house_structure_etc: null, rafter_material: null, rafter_material_etc: null, rafter_size: null, rafter_size_etc: null, rafter_pitch: null, rafter_pitch_etc: null, rafter_direction: null, open_field_plate_kind: null, open_field_plate_kind_etc: null, open_field_plate_thickness: null, leak_trace: false, waterproof_material: null, waterproof_material_etc: null, structure_order: null, structure_order_etc: null, insulation_presence: null, insulation_presence_etc: null, installation_availability: null, installation_availability_etc: null, memo: null, } const defaultBasicInfoForm: SurveySalesBasicInfo = { representative: '', store: null, construction_point: null, investigation_date: null, building_name: null, customer_name: null, post_code: null, address: null, address_detail: null, submission_status: false, } export default function MainSurveyForm() { const searchParams = useSearchParams() const id = searchParams.get('id') const [activeTab, setActiveTab] = useState('basic') const handleTabClick = (tab: TabType) => { setActiveTab(tab) } const router = useRouter() const { createSurvey, isCreatingSurvey, createSurveyDetail, surveyDetail, updateSurvey } = useServey(Number(id)) const [detailInfoForm, setDetailInfoForm] = useState(defaultDetailInfoForm) const [basicInfoData, setBasicInfoData] = useState(defaultBasicInfoForm) useEffect(() => { if (surveyDetail) { setBasicInfoData({ ...defaultBasicInfoForm, ...(({ id, ...rest }) => rest)(surveyDetail), }) setDetailInfoForm({ ...defaultDetailInfoForm, ...(surveyDetail.detail_info ? (({ id, basic_info_id, updated_at, ...rest }) => rest)(surveyDetail.detail_info as any) : {}), }) } }, [surveyDetail]) const handleSave = async (isSubmit: boolean = false) => { if (id) { updateSurvey({ ...basicInfoData, detail_info: detailInfoForm, submission_status: isSubmit, }) router.push('/survey-sales') return } const surveyId = await createSurvey(basicInfoData) if (surveyId && surveyId !== 0) { createSurveyDetail({ surveyId, surveyDetail: detailInfoForm, }) router.push('/survey-sales') return } throw new Error('‼️Survey creation failed') } if (isCreatingSurvey) { return
Loading...
} return (
{/* TAB BUTTONS */}
{/* Tab Content */}
{activeTab === 'basic' && (

Basic Information

)} {activeTab === 'detail' && (

Detail Information

)}
) }