diff --git a/src/components/pdf/SurveySalePdf.tsx b/src/components/pdf/SurveySalePdf.tsx index ff1f776..1a9b631 100644 --- a/src/components/pdf/SurveySalePdf.tsx +++ b/src/components/pdf/SurveySalePdf.tsx @@ -137,7 +137,7 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { HWJ 現地調査シート - 現地調査販賣店名 + 現地調査会社名 {survey?.store ?? '-'} {survey?.constructionPoint && ( @@ -147,7 +147,7 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { )} - 現地阴買日 + 現地調査日 {survey?.investigationDate ?? '-'} @@ -171,16 +171,16 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { {/* Electric Info */} - も気開係 + 電気関係 - 雨気契约容国 + 電気契約容量 {survey?.detailInfo?.contractCapacity ?? '-'} 電気契約会社 {survey?.detailInfo?.retailCompany ?? '-'} - 電気付带設備 + 電気付帯設備 {survey?.detailInfo?.supplementaryFacilities ? supplementaryFacilities @@ -207,7 +207,7 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { {/* Roof Info */} - 屋根眀係 + 屋根関連 築年数 @@ -218,7 +218,7 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { ? `既築 (${survey?.detailInfo?.constructionYear}年)` : '-'} - 至根材 + 屋根材 {survey?.detailInfo?.roofMaterial === null && survey?.detailInfo?.roofMaterialEtc === null ? '-' @@ -228,25 +228,25 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { .join(', ')} {survey?.detailInfo?.roofMaterialEtc ? `, ${survey?.detailInfo?.roofMaterialEtc}` : ''} - 座根形状 + 屋根形状 {selectBoxOptions.roofShape.find((shape) => shape.id.toString() === survey?.detailInfo?.roofShape)?.name ?? (survey?.detailInfo?.roofShapeEtc ? ` ${survey?.detailInfo?.roofShapeEtc}` : '-')} - 座根勾配 + 屋根勾配 {survey?.detailInfo?.roofSlope ? `${survey?.detailInfo?.roofSlope} 寸` : '-'} - 住宅樠造 + 住宅構造 {radioEtcData.houseStructure.find((structure) => structure.id.toString() === survey?.detailInfo?.houseStructure)?.label ?? (survey?.detailInfo?.houseStructureEtc ? ` ${survey?.detailInfo?.houseStructureEtc}` : '-')} - 並木材質 + 垂木材質 {radioEtcData.rafterMaterial.find((material) => material.id.toString() === survey?.detailInfo?.rafterMaterial)?.label ?? (survey?.detailInfo?.rafterMaterialEtc ? ` ${survey?.detailInfo?.rafterMaterialEtc}` : '-')} @@ -280,7 +280,7 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { - 兩漏の形跡 + 雨漏りの形跡 {survey?.detailInfo?.leakTrace ? 'あり' : 'なし'} @@ -313,7 +313,7 @@ export default function SurveySalePdf({ survey }: { survey: SurveyBasicInfo }) { - 区根製品名設置可否確認 + 屋根製品名設置可否 {survey?.detailInfo?.installationAvailability === null && survey.detailInfo?.installationAvailabilityEtc === null ? '-' diff --git a/src/components/survey-sale/detail/RoofForm.tsx b/src/components/survey-sale/detail/RoofForm.tsx index 33aded8..353de95 100644 --- a/src/components/survey-sale/detail/RoofForm.tsx +++ b/src/components/survey-sale/detail/RoofForm.tsx @@ -309,7 +309,6 @@ const SelectedBox = ({ const handleSelectChange = (e: React.ChangeEvent) => { const value = e.target.value const isEtc = value === 'etc' - const isSpecialEtc = isSpecialCase && value === 'O' const updatedData = { ...detailInfoData, @@ -317,11 +316,7 @@ const SelectedBox = ({ [`${column}Etc`]: isEtc ? '' : null, } - if (isSpecialEtc) { - updatedData[column] = value - } - - setIsEtcSelected(isEtc || isSpecialEtc) + setIsEtcSelected(isEtc) setRoofInfo(updatedData) } @@ -333,13 +328,13 @@ const SelectedBox = ({ /** Input box 비활성화 처리 * - 읽기 모드 : 비활성화 * - 설치 가능 여부 : 기타 입력 창 항상 활성화 - * - 건축 연수 : 신축(1) 체크 시 비활성화 + * - 건축 연수 : 新築 신축 (N) 체크 시 비활성화 * */ const isInputDisabled = () => { if (mode === 'READ') return true if (column === 'installationAvailability') return false if (column === 'constructionYear') { - return detailInfoData.constructionYear === 'N' || detailInfoData.constructionYear === null + return detailInfoData.constructionYear === selectBoxOptions.constructionYear[0].code || detailInfoData.constructionYear === null } return !isEtcSelected && !etcValue } @@ -401,8 +396,10 @@ const RadioSelected = ({ const [etcChecked, setEtcChecked] = useState(Boolean(etcValue)) const selectedId = - /** 누수 흔적 boolean 타입이므로 number 타입으로 변환 - 값이 없을 경우 2(없음) 으로 초기화*/ - column === 'leakTrace' ? Number(detailInfoData?.[column as keyof SurveyDetailInfo]) || 2 : detailInfoData?.[column as keyof SurveyDetailInfo] + /** 누수 흔적 boolean 타입이므로 number 타입으로 변환 - 값이 없을 경우 2(없음) 으로 초기화*/ + column === 'leakTrace' + ? Number(detailInfoData?.[column as keyof SurveyDetailInfo]) || radioEtcData.leakTrace[1].id + : detailInfoData?.[column as keyof SurveyDetailInfo] const isSpecialColumn = column === 'rafterDirection' || column === 'leakTrace' || column === 'insulationPresence' const showEtcOption = !isSpecialColumn @@ -413,7 +410,7 @@ const RadioSelected = ({ /** 누수 흔적 처리 - boolean 타입이므로 별도 처리 */ if (column === 'leakTrace') { - setRoofInfo({ ...detailInfoData, leakTrace: value === '1' }) + setRoofInfo({ ...detailInfoData, leakTrace: value === String(radioEtcData.leakTrace[0].id) }) return } @@ -430,7 +427,7 @@ const RadioSelected = ({ const isInsulationPresence = column === 'insulationPresence' const isRafterDirection = column === 'rafterDirection' - setEtcChecked(isInsulationPresence && value === '2') + setEtcChecked(isInsulationPresence && value === String(radioEtcData.insulationPresence[1].id)) setRoofInfo({ ...detailInfoData, @@ -451,7 +448,7 @@ const RadioSelected = ({ const isInputDisabled = () => { if (mode === 'READ') return true if (column === 'insulationPresence') { - return detailInfoData.insulationPresence !== '2' + return detailInfoData.insulationPresence === String(radioEtcData.insulationPresence[0].id) } return !etcChecked && !etcValue } @@ -518,8 +515,11 @@ const MultiCheck = ({ const { showErrorAlert } = useAlertMsg() const { roofMaterial, initialized, loading, loadOptions } = useSurveyOptionStore() const multiCheckData = column === 'supplementaryFacilities' ? supplementaryFacilities : roofMaterial - const etcValue = roofInfo?.[`${column}Etc` as keyof SurveyDetailInfo] - const [isOtherCheck, setIsOtherCheck] = useState(Boolean(etcValue)) + const [etcValue, setEtcValue] = useState(roofInfo?.[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? null) + useEffect(() => { + const newValue = roofInfo?.[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? null + setEtcValue(newValue) + }, [roofInfo, column]) useEffect(() => { if (!initialized && !loading) loadOptions() @@ -530,7 +530,7 @@ const MultiCheck = ({ /** 다중 선택 처리 */ const handleCheckbox = (item: { id: number; code: string | null; name: string }) => { - const isOtherSelected = Boolean(etcValue) + const isOtherSelected = etcValue !== null let newValue: string[] if (selectedValues.includes(item.code ?? String(item.id))) { @@ -538,7 +538,7 @@ const MultiCheck = ({ } else { /** 지붕 재료 처리 - 최대 2개 선택 처리 */ if (isRoofMaterial) { - const totalSelected = selectedValues.length + (isOtherSelected || isOtherCheck ? 1 : 0) + const totalSelected = selectedValues.length + (isOtherSelected ? 1 : 0) if (totalSelected >= 2) { showErrorAlert(WARNING_MESSAGE.ROOF_MATERIAL_MAX_SELECT) return @@ -551,21 +551,22 @@ const MultiCheck = ({ /** 기타 선택 처리 */ const handleOtherCheckbox = () => { + setEtcValue(etcValue !== null ? null : '') + const isOtherSelected = etcValue !== null + if (isRoofMaterial) { - const currentSelected = selectedValues.length - if (!isOtherCheck && currentSelected >= 2) { + /** 지붕 재료 기타 선택 포함 최대 2개 선택 처리 */ + if (!isOtherSelected && selectedValues.length >= 2) { showErrorAlert(WARNING_MESSAGE.ROOF_MATERIAL_MAX_SELECT) + setEtcValue(null) return } } - const newIsOtherCheck = !isOtherCheck - setIsOtherCheck(newIsOtherCheck) - /** 기타 선택 해제 시 값도 null로 설정 */ setRoofInfo({ ...roofInfo, - [`${column}Etc`]: newIsOtherCheck ? '' : null, + [`${column}Etc`]: isOtherSelected ? null : '', }) } @@ -576,7 +577,7 @@ const MultiCheck = ({ /** Input box 비활성화 처리 */ const isInputDisabled = () => { - return mode === 'READ' || (!isOtherCheck && !etcValue) + return mode === 'READ' || etcValue === null } return ( @@ -595,13 +596,7 @@ const MultiCheck = ({ ))}
- +