fix: 조사 매물 필수값 검증 조건에 공통 코드 추가

This commit is contained in:
Dayoung 2025-08-07 14:08:31 +09:00
parent 7574dffb0b
commit a24b2f338b
2 changed files with 24 additions and 7 deletions

View File

@ -97,12 +97,10 @@ export default function ButtonForm({ mode, setMode, data }: ButtonFormProps) {
/** 저장 로직 */ /** 저장 로직 */
const handleSave = (isTemporary: boolean) => { const handleSave = (isTemporary: boolean) => {
const emptyField = validateSurveyDetail(data.roof)
if (isTemporary) { if (isTemporary) {
tempSaveProcess() tempSaveProcess()
} else { } else {
saveProcess(emptyField) saveProcess()
} }
} }
@ -134,7 +132,9 @@ export default function ButtonForm({ mode, setMode, data }: ButtonFormProps) {
} }
/** 저장 로직 */ /** 저장 로직 */
const saveProcess = async (emptyField: string | null) => { const saveProcess = async () => {
const emptyField = validateSurveyDetail(data.roof)
if (emptyField?.trim() === '') { if (emptyField?.trim() === '') {
showConfirm(CONFIRM_MESSAGE.SAVE_CONFIRM, async () => { showConfirm(CONFIRM_MESSAGE.SAVE_CONFIRM, async () => {
await handleSuccessfulSave() await handleSuccessfulSave()

View File

@ -1,4 +1,11 @@
import type { SubmitTargetResponse, SurveyBasicInfo, SurveyDetailRequest, SurveyRegistRequest } from '@/types/Survey' import {
radioEtcData,
selectBoxOptions,
type SubmitTargetResponse,
type SurveyBasicInfo,
type SurveyDetailRequest,
type SurveyRegistRequest,
} from '@/types/Survey'
import { useMemo } from 'react' import { useMemo } from 'react'
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { useSurveyFilterStore } from '@/store/surveyFilterStore' import { useSurveyFilterStore } from '@/store/surveyFilterStore'
@ -380,7 +387,7 @@ export function useSurvey(
}) })
/** /**
* @description * @description
* *
* @param {SurveyDetailRequest} surveyDetail * @param {SurveyDetailRequest} surveyDetail
* @returns {string} * @returns {string}
@ -395,15 +402,25 @@ export function useSurvey(
} }
const checkRequiredField = (field: string): string => { const checkRequiredField = (field: string): string => {
/** 기타 (직접입력) 항목이 있는 필드 체크 */
if (ETC_FIELDS.includes(field as (typeof ETC_FIELDS)[number])) { if (ETC_FIELDS.includes(field as (typeof ETC_FIELDS)[number])) {
/** 기타 (직접입력) 항목이 비어있거나 값 선택/입력을 하지 않은 경우 해당 필드 반환 */
if ( if (
isEmptyValue(surveyDetail[field as keyof SurveyDetailRequest]) && isEmptyValue(surveyDetail[field as keyof SurveyDetailRequest]) &&
isEmptyValue(surveyDetail[`${field}Etc` as keyof SurveyDetailRequest]) isEmptyValue(surveyDetail[`${field}Etc` as keyof SurveyDetailRequest])
) { ) {
return field return field
} }
/** - ,
* (O) /
* 2() /
*/
} else if (SPECIAL_CONDITIONS.includes(field as (typeof SPECIAL_CONDITIONS)[number])) { } else if (SPECIAL_CONDITIONS.includes(field as (typeof SPECIAL_CONDITIONS)[number])) {
if (surveyDetail[field as keyof SurveyDetailRequest] === '2' && isEmptyValue(surveyDetail[`${field}Etc` as keyof SurveyDetailRequest])) { if (
(surveyDetail.constructionYear === selectBoxOptions.constructionYear[1].code && isEmptyValue(surveyDetail.constructionYearEtc)) ||
(surveyDetail.insulationPresence === '2' && isEmptyValue(surveyDetail.insulationPresenceEtc))
) {
/** 건축연수, 단열재 유무 필드가 비어있거나 값 선택/입력을 하지 않은 경우 해당 필드 반환 */
return `${field}Etc` return `${field}Etc`
} else if (isEmptyValue(surveyDetail[field as keyof SurveyDetailRequest])) { } else if (isEmptyValue(surveyDetail[field as keyof SurveyDetailRequest])) {
return field return field