import type { SurveyDetailRequest } from '@/types/Survey' import { useEffect, useState } from 'react' export type SelectBoxKeys = | 'INSTALLATION_SYSTEM' | 'CONSTRUCTION_YEAR' | 'ROOF_SHAPE' | 'RAFTER_PITCH' | 'RAFTER_SIZE' | 'OPEN_FIELD_PLATE_KIND' | 'STRUCTURE_ORDER' | 'INSTALLATION_AVAILABILITY' const font: Record = { INSTALLATION_SYSTEM: 'data-input-form-tit red-f', CONSTRUCTION_YEAR: 'data-input-form-tit red-f', ROOF_SHAPE: 'data-input-form-tit', RAFTER_PITCH: 'data-input-form-tit red-f', RAFTER_SIZE: 'data-input-form-tit red-f', OPEN_FIELD_PLATE_KIND: 'data-input-form-tit', STRUCTURE_ORDER: 'data-input-form-tit red-f', INSTALLATION_AVAILABILITY: 'data-input-form-tit', } const translateJapanese: Record = { INSTALLATION_SYSTEM: '設置希望システム', CONSTRUCTION_YEAR: '建築年数', ROOF_SHAPE: '屋根の形状', RAFTER_PITCH: '垂木傾斜', RAFTER_SIZE: '垂木サイズ', OPEN_FIELD_PLATE_KIND: '路地板の種類', STRUCTURE_ORDER: '屋根構造の順序', INSTALLATION_AVAILABILITY: '屋根製品名 設置可否確認', } export const selectBoxOptions: Record = { INSTALLATION_SYSTEM: [ { id: 1, name: '太陽光発電', //태양광발전 }, { id: 2, name: 'ハイブリッド蓄電システム', //하이브리드축전지시스템 }, { id: 3, name: '蓄電池システム', //축전지시스템 }, ], CONSTRUCTION_YEAR: [ { id: 1, name: '新築', //신축 }, { id: 2, name: '既築', //기존 }, ], ROOF_SHAPE: [ { id: 1, name: '切妻', //박공지붕 }, { id: 2, name: '寄棟', //기동 }, { id: 3, name: '片流れ', //한쪽흐름 }, ], RAFTER_SIZE: [ { id: 1, name: '幅35mm以上×高さ48mm以上', }, { id: 2, name: '幅36mm以上×高さ46mm以上', }, { id: 3, name: '幅37mm以上×高さ43mm以上', }, { id: 4, name: '幅38mm以上×高さ40mm以上', }, ], RAFTER_PITCH: [ { id: 1, name: '(455mm以下', }, { id: 2, name: '500mm以下', }, { id: 3, name: '606mm以下', }, ], OPEN_FIELD_PLATE_KIND: [ { id: 1, name: '構造用合板', //구조용합판 }, { id: 2, name: 'OSB', //OSB }, { id: 3, name: 'パーティクルボード', //파티클보드 }, { id: 4, name: '小幅板', //소판 }, ], STRUCTURE_ORDER: [ { id: 1, name: '屋根材', //지붕재 }, { id: 2, name: '防水材', //방수재 }, { id: 3, name: '屋根の基礎', //지붕의기초 }, { id: 4, name: '垂木', //서까래 }, ], INSTALLATION_AVAILABILITY: [ { id: 1, name: '確認済み', //확인완료 }, { id: 2, name: '未確認', //미확인 }, ], } export default function SelectBoxForm({ column, setDetailInfoData, detailInfoData, }: { column: SelectBoxKeys setDetailInfoData: (data: any) => void detailInfoData: SurveyDetailRequest }) { const [isEtcSelected, setIsEtcSelected] = useState(false) const [etcValue, setEtcValue] = useState('') useEffect(() => { if (detailInfoData[`${column}_ETC` as keyof SurveyDetailRequest]) { setIsEtcSelected(true) setEtcValue(detailInfoData[`${column}_ETC` as keyof SurveyDetailRequest] as string) } }, [detailInfoData]) const handleSelectChange = (e: React.ChangeEvent) => { const value = e.target.value const isSpecialCase = column === 'CONSTRUCTION_YEAR' || column === 'INSTALLATION_AVAILABILITY' const isEtc = value === 'etc' const isSpecialEtc = isSpecialCase && value === '2' const updatedData: typeof detailInfoData = { ...detailInfoData, [column]: isEtc ? null : value, [`${column}_ETC`]: isEtc ? '' : null, } // 건축연수 + 설치가능여부는 2번 선택 시 input 활성화 if (isSpecialEtc) { updatedData[column] = value } setIsEtcSelected(isEtc || isSpecialEtc) if (!isEtc) setEtcValue('') setDetailInfoData(updatedData) } const handleEtcInputChange = (e: React.ChangeEvent) => { const value = e.target.value setEtcValue(value) setDetailInfoData({ ...detailInfoData, [`${column}_ETC`]: value, }) } return ( <>
{translateJapanese[column as keyof typeof translateJapanese]}
) }