diff --git a/src/app/survey-sale/[id]/page.tsx b/src/app/survey-sale/[id]/page.tsx index bc48257..482dab4 100644 --- a/src/app/survey-sale/[id]/page.tsx +++ b/src/app/survey-sale/[id]/page.tsx @@ -23,7 +23,7 @@ export default function page() { return ( <> - + {/* */} ) } diff --git a/src/app/survey-sale/basic-info/page.tsx b/src/app/survey-sale/basic-info/page.tsx index 2c75137..7359926 100644 --- a/src/app/survey-sale/basic-info/page.tsx +++ b/src/app/survey-sale/basic-info/page.tsx @@ -1,4 +1,4 @@ -import BasicForm from '@/components/survey-sale/detail/form/BasicForm' +import BasicForm from '@/components/survey-sale/detail/my/basicForm' export default function page() { return ( diff --git a/src/app/survey-sale/regist/page.tsx b/src/app/survey-sale/regist/page.tsx index 5090aaa..cf18ff2 100644 --- a/src/app/survey-sale/regist/page.tsx +++ b/src/app/survey-sale/regist/page.tsx @@ -1,9 +1,10 @@ -import RegistForm from '@/components/survey-sale/temp/registForm' +// import RegistForm from '@/components/survey-sale/temp/registForm' +import RegistForm from '@/components/survey-sale/RegistForm' export default function RegistPage() { return ( <> - + ) } diff --git a/src/app/survey-sale/roof-info/page.tsx b/src/app/survey-sale/roof-info/page.tsx index 1c5358b..51797e6 100644 --- a/src/app/survey-sale/roof-info/page.tsx +++ b/src/app/survey-sale/roof-info/page.tsx @@ -1,4 +1,4 @@ -import RoofInfoForm from '@/components/survey-sale/detail/form/RoofInfoForm' +import RoofInfoForm from '@/components/survey-sale/detail/my/roofInfoForm' export default function page() { return ( diff --git a/src/components/survey-sale/RegistForm.tsx b/src/components/survey-sale/RegistForm.tsx new file mode 100644 index 0000000..b1cc240 --- /dev/null +++ b/src/components/survey-sale/RegistForm.tsx @@ -0,0 +1,29 @@ +import { Mode } from '@/types/Survey' +import { useSearchParams } from 'next/navigation' +import DetailForm from './detail/DetailForm' +import { useServey } from '@/hooks/useSurvey' +import { useEffect, useState } from 'react' +import { SurveyBasicInfo } from '@/types/Survey' +import { useSessionStore } from '@/store/session' + +export default function RegistForm() { + const searchParams = useSearchParams() + const id = searchParams.get('id') + + const { surveyDetail } = useServey(Number(id)) + const { session } = useSessionStore() + + const [mode, setMode] = useState('CREATE') + + useEffect(() => { + if (id) { + setMode('EDIT') + } + }, [id]) + + return ( + <> + + + ) +} diff --git a/src/components/survey-sale/detail/BasicForm.tsx b/src/components/survey-sale/detail/BasicForm.tsx index 5b7fb31..bee4623 100644 --- a/src/components/survey-sale/detail/BasicForm.tsx +++ b/src/components/survey-sale/detail/BasicForm.tsx @@ -2,15 +2,11 @@ import { useEffect, useState } from 'react' import { useSurveySaleTabState } from '@/store/surveySaleTabState' -import { SurveyBasicInfo } from '@/types/Survey' +import { SurveyBasicRequest } from '@/types/Survey' import { Mode } from 'fs' -export default function BasicForm(props: { - surveyInfo: Partial - setSurveyInfo: (surveyInfo: Partial) => void - mode: Mode -}) { - const { surveyInfo, setSurveyInfo, mode } = props +export default function BasicForm(props: { basicInfo: SurveyBasicRequest; setBasicInfo: (basicInfo: SurveyBasicRequest) => void; mode: Mode }) { + const { basicInfo, setBasicInfo, mode } = props const { setBasicInfoSelected } = useSurveySaleTabState() const [isFlip, setIsFlip] = useState(true) @@ -36,8 +32,8 @@ export default function BasicForm(props: { type="text" className="input-frame" readOnly={mode === 'READ'} - value={surveyInfo?.REPRESENTATIVE} - onChange={(e) => setSurveyInfo({ ...surveyInfo, REPRESENTATIVE: e.target.value })} + value={basicInfo?.REPRESENTATIVE ?? ''} + onChange={(e) => setBasicInfo({ ...basicInfo, REPRESENTATIVE: e.target.value })} />
@@ -46,8 +42,8 @@ export default function BasicForm(props: { type="text" className="input-frame" readOnly={mode === 'READ'} - value={surveyInfo?.BUILDING_NAME ?? ''} - onChange={(e) => setSurveyInfo({ ...surveyInfo, BUILDING_NAME: e.target.value })} + value={basicInfo?.STORE ?? ''} + onChange={(e) => setBasicInfo({ ...basicInfo, STORE: e.target.value })} />
@@ -56,8 +52,8 @@ export default function BasicForm(props: { type="text" className="input-frame" readOnly={mode === 'READ'} - value={surveyInfo?.CONSTRUCTION_POINT ?? ''} - onChange={(e) => setSurveyInfo({ ...surveyInfo, CONSTRUCTION_POINT: e.target.value })} + value={basicInfo?.CONSTRUCTION_POINT ?? ''} + onChange={(e) => setBasicInfo({ ...basicInfo, CONSTRUCTION_POINT: e.target.value })} />
@@ -71,38 +67,35 @@ export default function BasicForm(props: { - + ) : ( - + )}
{/* 건물명 */}
建物名
- +
{/* 고객명 */}
建物名
- +
郵便番号/都道府県
{/* 우편번호 */}
- +
{/* 도도부현 */}
- +
{/* 주소 */} -
- -
diff --git a/src/components/survey-sale/detail/ButtonForm.tsx b/src/components/survey-sale/detail/ButtonForm.tsx index 84b4b4c..4b2b9fa 100644 --- a/src/components/survey-sale/detail/ButtonForm.tsx +++ b/src/components/survey-sale/detail/ButtonForm.tsx @@ -1,6 +1,6 @@ -import { Mode } from '@/types/Survey' +import { Mode, SurveyBasicRequest, SurveyDetailRequest } from '@/types/Survey' -export default function ButtonForm(props: { mode: Mode; setMode: (mode: Mode) => void }) { +export default function ButtonForm(props: { mode: Mode; setMode: (mode: Mode) => void; data: { basic: SurveyBasicRequest; roof: SurveyDetailRequest } }) { const { mode, setMode } = props return ( <> diff --git a/src/components/survey-sale/detail/DataTable.tsx b/src/components/survey-sale/detail/DataTable.tsx index d049c33..be8da34 100644 --- a/src/components/survey-sale/detail/DataTable.tsx +++ b/src/components/survey-sale/detail/DataTable.tsx @@ -4,7 +4,7 @@ import { useServey } from '@/hooks/useSurvey' import { useParams, useSearchParams } from 'next/navigation' import { useEffect, useState } from 'react' import DetailForm from './DetailForm' -import RoofDetailForm from './RoofDetailForm' +import { SurveyBasicInfo } from '@/types/Survey' export default function DataTable() { const params = useParams() @@ -84,11 +84,7 @@ export default function DataTable() { - {/* {tab === 'roof-info' ? ( - - ) : ( - - )} */} + ) } diff --git a/src/components/survey-sale/detail/DetailForm.tsx b/src/components/survey-sale/detail/DetailForm.tsx index 6e5fc24..92dbce4 100644 --- a/src/components/survey-sale/detail/DetailForm.tsx +++ b/src/components/survey-sale/detail/DetailForm.tsx @@ -1,52 +1,101 @@ 'use client' -import { Mode, SurveyBasicInfo } from '@/types/Survey' +import { Mode, SurveyBasicInfo, SurveyBasicRequest, SurveyDetailRequest } from '@/types/Survey' import { useEffect, useState } from 'react' import ButtonForm from './ButtonForm' import BasicForm from './BasicForm' import RoofForm from './RoofForm' +const roofInfoForm: SurveyDetailRequest = { + 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: '1', + HOUSE_STRUCTURE_ETC: null, + RAFTER_MATERIAL: '1', + RAFTER_MATERIAL_ETC: null, + RAFTER_SIZE: null, + RAFTER_SIZE_ETC: null, + RAFTER_PITCH: null, + RAFTER_PITCH_ETC: null, + RAFTER_DIRECTION: '1', + 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, + INSULATION_PRESENCE: '1', + INSULATION_PRESENCE_ETC: null, + STRUCTURE_ORDER: null, + STRUCTURE_ORDER_ETC: null, + INSTALLATION_AVAILABILITY: null, + INSTALLATION_AVAILABILITY_ETC: null, + MEMO: null, +} + +const basicInfoForm: SurveyBasicRequest = { + REPRESENTATIVE: '', + STORE: null, + CONSTRUCTION_POINT: null, + INVESTIGATION_DATE: new Date().toLocaleDateString('en-CA'), + BUILDING_NAME: null, + CUSTOMER_NAME: null, + POST_CODE: null, + ADDRESS: null, + ADDRESS_DETAIL: null, + SUBMISSION_STATUS: false, + SUBMISSION_DATE: null, +} export default function DetailForm(props: { surveyInfo?: SurveyBasicInfo; mode?: Mode }) { - const [surveyInfo, setSurveyInfo] = useState>( - props.surveyInfo ?? { - REPRESENTATIVE: '', - CONSTRUCTION_POINT: '', - STORE: '', - INVESTIGATION_DATE: '', - BUILDING_NAME: '', - CUSTOMER_NAME: '', - POST_CODE: '', - ADDRESS: '', - ADDRESS_DETAIL: '', - SUBMISSION_STATUS: true, - SUBMISSION_DATE: '2021-01-01', - DETAIL_INFO: null, - REG_DT: new Date(), - UPT_DT: new Date(), - }, - ) - const [roofValue, setRoofValue] = useState(false) const [mode, setMode] = useState(props.mode ?? 'CREATE') - const basicInfoProps = { surveyInfo, setSurveyInfo, mode } - const roofInfoProps = { surveyInfo, mode } - const buttonFormProps = { mode, setMode } + const [basicInfoData, setBasicInfoData] = useState(basicInfoForm) + const [roofInfoData, setRoofInfoData] = useState(roofInfoForm) + + // useEffect(() => { + // // setMode(props.surveyInfo ? 'EDIT' : 'CREATE') + // }, [props.surveyInfo]) useEffect(() => { - // setMode(props.surveyInfo ? 'EDIT' : 'CREATE') + console.log(props.surveyInfo) }, [props.surveyInfo]) useEffect(() => { - console.log(surveyInfo) - }, [surveyInfo]) + if (props.surveyInfo && mode === 'EDIT') { + const { ID, UPT_DT, REG_DT, DETAIL_INFO, ...rest } = props.surveyInfo + setBasicInfoData(rest) + if (DETAIL_INFO) { + const { ID, UPT_DT, REG_DT, BASIC_INFO_ID, ...rest } = DETAIL_INFO + setRoofInfoData(rest) + } + } + }, [props.surveyInfo, mode]) + + const data = { + basic: basicInfoData, + roof: roofInfoData, + } + + const buttonFormProps = { mode, setMode, data } return ( <>
- {mode} + {/* {mode} */} {/* 기본정보 */} - + {/* 전기/지붕정보 */} - +
diff --git a/src/components/survey-sale/detail/RoofForm.tsx b/src/components/survey-sale/detail/RoofForm.tsx index 878fbf2..1e92ae9 100644 --- a/src/components/survey-sale/detail/RoofForm.tsx +++ b/src/components/survey-sale/detail/RoofForm.tsx @@ -1,8 +1,21 @@ import { useState } from 'react' -import { Mode, SurveyBasicInfo } from '@/types/Survey' +import { Mode, SurveyBasicInfo, SurveyDetailInfo, SurveyDetailRequest } from '@/types/Survey' +import { roof_material, supplementary_facilities } from './form/etcProcess/MultiCheckEtc' +import { selectBoxOptions } from './form/etcProcess/SelectBoxEtc' +import { radioEtcData } from './form/etcProcess/RadioEtc' -export default function RoofForm(props: { surveyInfo: Partial; mode: Mode }) { - const { surveyInfo, mode } = props +export default function RoofForm(props: { + roofInfo: SurveyDetailRequest | SurveyDetailInfo + setRoofInfo: (roofInfo: SurveyDetailRequest) => void + mode: Mode +}) { + const makeNumArr = (value: string) => { + return value + .split(',') + .map((v) => v.trim()) + .filter((v) => v.length > 0) + } + const { roofInfo, setRoofInfo, mode } = props const [isFlip, setIsFlip] = useState(true) return (
@@ -21,7 +34,7 @@ export default function RoofForm(props: { surveyInfo: Partial; {/* 전기 계약 용량 */}
電気契約容量
- +
{mode === 'READ' && } {mode !== 'READ' && ( @@ -39,7 +52,7 @@ export default function RoofForm(props: { surveyInfo: Partial;
{/* 전기 소매 회사사 */}
電気小売会社
- +
{/* 전기 부대 설비 */} @@ -47,34 +60,33 @@ export default function RoofForm(props: { surveyInfo: Partial; 電気袋設備※複数選択可能
-
+ {/*
-
+
*/} + {supplementary_facilities.map((item) => ( +
+ + +
+ ))}
- - -
-
- - -
-
- - -
-
- - + +
- +
{/* 설치 희망 시스템 */} -
設置希望システム
+ {/*
設置希望システム
{mode === 'READ' && (
@@ -90,7 +102,9 @@ export default function RoofForm(props: { surveyInfo: Partial;
- )} + )} */} +
設置希望システム
+
@@ -102,7 +116,7 @@ export default function RoofForm(props: { surveyInfo: Partial; {/* 건축 연수 */}
建築研修
- {mode === 'READ' && } + {/* {mode === 'READ' && } {mode !== 'READ' && ( - )} + )} */} +
-
+ {/*
-
+
*/}
{/* 지붕재 */} @@ -124,36 +139,26 @@ export default function RoofForm(props: { surveyInfo: Partial; 屋根材※最大2個まで選択可能
+ {roof_material.map((item) => ( +
+ + +
+ ))}
- - -
-
- - -
-
- - -
-
- - -
-
- - + +
- +
{/* 지붕 모양 */}
建築研修
- {mode === 'READ' && } + {/* {mode === 'READ' && } {mode !== 'READ' && ( - )} + )} */} +
@@ -172,207 +178,84 @@ export default function RoofForm(props: { surveyInfo: Partial; {/* 지붕 경사도도 */}
屋根の斜面
- +
{/* 주택구조조 */}
住宅構造
-
- - -
-
- - -
-
- -
+
{/* 서까래 재질 */}
垂木材質
-
-
- - -
-
- - -
-
- - -
-
-
- -
+
{/* 서까래 크기 */}
垂木サイズ
- {mode === 'READ' && } - {mode !== 'READ' && ( - - )} -
-
- +
{/* 서까래 피치 */}
垂木サイズ
- {mode === 'READ' && } - {mode !== 'READ' && ( - - )} -
-
- +
{/* 서까래 방향 */}
垂木の方向
-
- - -
-
- - -
+
{/* 노지판 종류류 */}
路地板の種類
- {mode === 'READ' && } - {mode !== 'READ' && ( - - )} -
-
- +
+ {/* 노지판 두께 */}
路地板厚※小幅板を選択した場合, 厚さ. 小幅板間の間隔寸法を記載
- + mm
- {/* 서까래 방향 */} -
垂木の方向
+ {/* 누수 흔적 */} +
水漏れの痕跡
-
- - -
-
- - -
+
- {/* 주택 구조 */} -
住宅構造
-
- - -
-
- - -
-
- -
+ {/* 방수재 종류 */} +
防水材の種類
+
{/* 단열재 유무 */}
断熱材の有無
-
- - -
-
- -
-
- - -
+
{/* 지붕 구조의 순서 */} -
路地板の種類
-
- {mode === 'READ' && } - {mode !== 'READ' && ( - - )} -
-
- -
+
屋根構造の順序
+
{/* 지붕 제품명 설치 가능 여부 확인 */}
屋根製品名 設置可否確認
-
- {mode === 'READ' && } - {mode !== 'READ' && ( - - )} -
-
- -
+
{/* 메모 */} @@ -382,8 +265,8 @@ export default function RoofForm(props: { surveyInfo: Partial; className="textarea-form" name="" id="" - defaultValue={'漏れの兆候があるため、正確な点検が必要です.'} placeholder="TextArea Filed" + value={roofInfo?.MEMO ?? ''} readOnly={mode === 'READ'} >
@@ -394,3 +277,56 @@ export default function RoofForm(props: { surveyInfo: Partial;
) } + +const SelectedBox = ({ column, detailInfoData }: { column: string; detailInfoData: SurveyDetailInfo }) => { + const selectedId = detailInfoData?.[column as keyof SurveyDetailInfo] + const etcValue = detailInfoData?.[`${column}_ETC` as keyof SurveyDetailInfo] + + return ( + <> + + {etcValue && } + + ) +} + +const RadioSelected = ({ column, detailInfoData }: { column: string; detailInfoData: SurveyDetailInfo | null }) => { + let selectedId = detailInfoData?.[column as keyof SurveyDetailInfo] + if (column === 'LEAK_TRACE') { + selectedId = Number(selectedId) + if (!selectedId) selectedId = 2 + } + + let etcValue = null + if (column !== 'RAFTER_DIRECTION') { + etcValue = detailInfoData?.[`${column}_ETC` as keyof SurveyDetailInfo] + } + const etcChecked = etcValue !== null && etcValue !== undefined && etcValue !== '' + + console.log('column: selectedId', column, selectedId) + return ( + <> + {radioEtcData[column as keyof typeof radioEtcData].map((item) => ( +
+ + +
+ ))} + {column !== 'RAFTER_DIRECTION' && column !== 'LEAK_TRACE' && column !== 'INSULATION_PRESENCE' && ( +
+ + +
+ )} + {etcChecked && ( +
+ +
+ )} + + ) +} diff --git a/src/components/survey-sale/detail/form/BasicForm.tsx b/src/components/survey-sale/detail/my/basicForm.tsx similarity index 100% rename from src/components/survey-sale/detail/form/BasicForm.tsx rename to src/components/survey-sale/detail/my/basicForm.tsx diff --git a/src/components/survey-sale/detail/DetailButton.tsx b/src/components/survey-sale/detail/my/detailButton.tsx similarity index 100% rename from src/components/survey-sale/detail/DetailButton.tsx rename to src/components/survey-sale/detail/my/detailButton.tsx diff --git a/src/components/survey-sale/detail/RoofDetailForm.tsx b/src/components/survey-sale/detail/my/roofDetailForm.tsx similarity index 96% rename from src/components/survey-sale/detail/RoofDetailForm.tsx rename to src/components/survey-sale/detail/my/roofDetailForm.tsx index a9a4031..6b8bbb5 100644 --- a/src/components/survey-sale/detail/RoofDetailForm.tsx +++ b/src/components/survey-sale/detail/my/roofDetailForm.tsx @@ -1,8 +1,8 @@ import { SurveyBasicInfo, SurveyDetailInfo } from '@/types/Survey' -import DetailButton from './DetailButton' -import { roof_material, supplementary_facilities } from './form/etcProcess/MultiCheckEtc' -import { selectBoxOptions } from './form/etcProcess/SelectBoxEtc' -import { radioEtcData } from './form/etcProcess/RadioEtc' +import DetailButton from './detailButton' +import { roof_material, supplementary_facilities } from '../form/etcProcess/MultiCheckEtc' +import { selectBoxOptions } from '../form/etcProcess/SelectBoxEtc' +import { radioEtcData } from '../form/etcProcess/RadioEtc' export default function RoofDetailForm({ surveyDetail, @@ -196,10 +196,7 @@ export default function RoofDetailForm({ - + ) diff --git a/src/components/survey-sale/detail/form/RoofInfoForm.tsx b/src/components/survey-sale/detail/my/roofInfoForm.tsx similarity index 98% rename from src/components/survey-sale/detail/form/RoofInfoForm.tsx rename to src/components/survey-sale/detail/my/roofInfoForm.tsx index 2a465d4..bd0a1f7 100644 --- a/src/components/survey-sale/detail/form/RoofInfoForm.tsx +++ b/src/components/survey-sale/detail/my/roofInfoForm.tsx @@ -6,9 +6,9 @@ import { useServey } from '@/hooks/useSurvey' import { SurveyDetailRequest } from '@/types/Survey' import { useRouter, useSearchParams } from 'next/navigation' import { useEffect, useState } from 'react' -import MultiCheckEtc from './etcProcess/MultiCheckEtc' -import SelectBoxEtc from './etcProcess/SelectBoxEtc' -import RadioEtc from './etcProcess/RadioEtc' +import MultiCheckEtc from '../form/etcProcess/MultiCheckEtc' +import SelectBoxEtc from '../form/etcProcess/SelectBoxEtc' +import RadioEtc from '../form/etcProcess/RadioEtc' const defaultDetailInfoForm: SurveyDetailRequest = { CONTRACT_CAPACITY: null,