From cdae73b95e54bfb990eb07ecd10780ed7e96710c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Fri, 16 May 2025 15:32:23 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A8chore:=20Sync=20Sass=20[=EC=A1=B0?= =?UTF-8?q?=EC=82=AC=EB=A7=A4=EB=AC=BC]=20=EC=83=81=EC=84=B8,=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=ED=8D=BC=EB=B8=94=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/images/sub/sale_toggle_btn.svg | 4 + .../images/sub/sale_toggle_btn_white.svg | 6 + src/app/survey-sale/[id]/page.tsx | 20 +- src/app/survey-sale/layout.tsx | 5 +- .../survey-sale/detail/BasicForm.tsx | 175 ++++++++++-------- .../survey-sale/detail/DataTable.tsx | 2 +- .../survey-sale/detail/DetailForm.tsx | 101 +++++----- src/styles/base/_check-radio.scss | 3 + src/styles/components/_sub.scss | 97 +++++++--- src/types/Survey.ts | 4 +- 10 files changed, 249 insertions(+), 168 deletions(-) create mode 100644 public/assets/images/sub/sale_toggle_btn.svg create mode 100644 public/assets/images/sub/sale_toggle_btn_white.svg diff --git a/public/assets/images/sub/sale_toggle_btn.svg b/public/assets/images/sub/sale_toggle_btn.svg new file mode 100644 index 0000000..ad2504a --- /dev/null +++ b/public/assets/images/sub/sale_toggle_btn.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/images/sub/sale_toggle_btn_white.svg b/public/assets/images/sub/sale_toggle_btn_white.svg new file mode 100644 index 0000000..3575065 --- /dev/null +++ b/public/assets/images/sub/sale_toggle_btn_white.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/survey-sale/[id]/page.tsx b/src/app/survey-sale/[id]/page.tsx index 52202ca..bc48257 100644 --- a/src/app/survey-sale/[id]/page.tsx +++ b/src/app/survey-sale/[id]/page.tsx @@ -1,11 +1,29 @@ import DataTable from '@/components/survey-sale/detail/DataTable' import DetailForm from '@/components/survey-sale/detail/DetailForm' +import { SurveyBasicInfo } from '@/types/Survey' export default function page() { + const surveyInfo: SurveyBasicInfo = { + ID: 1, + REPRESENTATIVE: 'HG', + STORE: 'HWJ(T01)', + CONSTRUCTION_POINT: '施工点名表示', + INVESTIGATION_DATE: '2021-01-01', + BUILDING_NAME: 'ビル名表示', + CUSTOMER_NAME: '顧客名表示', + POST_CODE: '1234567890', + ADDRESS: '東京都千代田区永田町1-7-1', + ADDRESS_DETAIL: '永田町ビル101号室', + SUBMISSION_STATUS: true, + SUBMISSION_DATE: '2021-01-01', + DETAIL_INFO: null, + REG_DT: new Date(), + UPT_DT: new Date(), + } return ( <> - + ) } diff --git a/src/app/survey-sale/layout.tsx b/src/app/survey-sale/layout.tsx index f558ad6..83f37c0 100644 --- a/src/app/survey-sale/layout.tsx +++ b/src/app/survey-sale/layout.tsx @@ -9,10 +9,7 @@ export default function layout({ children, navTab }: SurveySaleLayoutProps) { return ( <>
-
- {navTab} - {children} -
+
{children}
) diff --git a/src/components/survey-sale/detail/BasicForm.tsx b/src/components/survey-sale/detail/BasicForm.tsx index f293495..5b7fb31 100644 --- a/src/components/survey-sale/detail/BasicForm.tsx +++ b/src/components/survey-sale/detail/BasicForm.tsx @@ -1,10 +1,18 @@ 'use client' -import { useEffect } from 'react' +import { useEffect, useState } from 'react' import { useSurveySaleTabState } from '@/store/surveySaleTabState' +import { SurveyBasicInfo } from '@/types/Survey' +import { Mode } from 'fs' -export default function BasicForm() { +export default function BasicForm(props: { + surveyInfo: Partial + setSurveyInfo: (surveyInfo: Partial) => void + mode: Mode +}) { + const { surveyInfo, setSurveyInfo, mode } = props const { setBasicInfoSelected } = useSurveySaleTabState() + const [isFlip, setIsFlip] = useState(true) useEffect(() => { setBasicInfoSelected() @@ -12,84 +20,101 @@ export default function BasicForm() { return ( <> -
-
-
-
担当者名
- -
-
-
販売店
- -
-
-
施工店
- +
+
setIsFlip(!isFlip)}> +
基本情報
+
+
-
+
+
+
+
+
担当者名
+ setSurveyInfo({ ...surveyInfo, REPRESENTATIVE: e.target.value })} + /> +
+
+
販売店
+ setSurveyInfo({ ...surveyInfo, BUILDING_NAME: e.target.value })} + /> +
+
+
施工店
+ setSurveyInfo({ ...surveyInfo, CONSTRUCTION_POINT: e.target.value })} + /> +
+
+
+
+
+
+
現地調査日
+ {['CREATE', 'EDIT'].includes(mode as 'CREATE' | 'EDIT') ? ( +
+ + +
+ ) : ( + + )} +
+
+ {/* 건물명 */} +
建物名
+ +
+
+ {/* 고객명 */} +
建物名
+ +
+
+
郵便番号/都道府県
+
+ {/* 우편번호 */} +
+ +
+ {/* 도도부현 */} +
+ +
+
+ {/* 주소 */} +
+ +
+
+ +
+
-
-
-
-
現地調査日
-
- - -
-
-
-
建物名
- -
-
-
建物名
- -
-
-
建物名
-
-
- -
-
- +
+
市区町村名, 以後の住所
+
-
- -
-
-
-
市区町村名, 以後の住所
- -
-
-
-
- -
-
- -
-
-
diff --git a/src/components/survey-sale/detail/DataTable.tsx b/src/components/survey-sale/detail/DataTable.tsx index 414164c..b47c092 100644 --- a/src/components/survey-sale/detail/DataTable.tsx +++ b/src/components/survey-sale/detail/DataTable.tsx @@ -3,7 +3,7 @@ export default function DataTable() { return ( <> -
+
diff --git a/src/components/survey-sale/detail/DetailForm.tsx b/src/components/survey-sale/detail/DetailForm.tsx index 9462e95..6e5fc24 100644 --- a/src/components/survey-sale/detail/DetailForm.tsx +++ b/src/components/survey-sale/detail/DetailForm.tsx @@ -1,62 +1,53 @@ 'use client' -export default function DetailForm() { +import { Mode, SurveyBasicInfo } from '@/types/Survey' +import { useEffect, useState } from 'react' +import ButtonForm from './ButtonForm' +import BasicForm from './BasicForm' +import RoofForm from './RoofForm' + +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 } + + useEffect(() => { + // setMode(props.surveyInfo ? 'EDIT' : 'CREATE') + }, [props.surveyInfo]) + + useEffect(() => { + console.log(surveyInfo) + }, [surveyInfo]) + return ( <> -
-
-
-
担当者名
- -
-
-
販売店
- -
-
-
施工店
- -
-
-
- -
-
-
-
現地調査日
- -
-
-
建物名
- -
-
-
顧客名
- -
-
-
-
- -
-
- -
-
- -
-
- -
-
+
+ {mode} + {/* 기본정보 */} + + {/* 전기/지붕정보 */} + +
) diff --git a/src/styles/base/_check-radio.scss b/src/styles/base/_check-radio.scss index d4d2904..47c50cb 100644 --- a/src/styles/base/_check-radio.scss +++ b/src/styles/base/_check-radio.scss @@ -85,6 +85,9 @@ input[type="checkbox"]:disabled + label::after{ cursor: default; } + input[type="checkbox"]:disabled:checked + label::before{ + background-color: #A8B6C7; + } &.ch-bld{ input[type="checkbox"]:checked + label{ font-weight: 500; diff --git a/src/styles/components/_sub.scss b/src/styles/components/_sub.scss index ebcb374..0723ab1 100644 --- a/src/styles/components/_sub.scss +++ b/src/styles/components/_sub.scss @@ -77,36 +77,11 @@ } } } -.sale-detail-tab-relative{ - height: 40px; - margin-bottom: 10px; -} -.sale-detail-tab-wrap{ - position: fixed; - top: 66px; - left: 0; - width: 100%; - height: 40px; - background-color: $white-fff; - z-index: 98000; - .sale-detail-tab-inner{ - position: relative; - @include flex(0px); - align-items: center; - height: 100%; - .sale-detail-tab{ - flex: 1; - height: 100%; - background-color: #fff; - border-top: 1px solid #DDDFE2; - border-bottom: 1px solid #DDDFE2; - @include defaultFont($font-s-13, $font-w-500, $font-c); - &.act{ - color: $white-fff; - background-color: #5F738E; - border-color: #5F738E; - } - } +.sale-form-btn-wrap{ + padding: 20px 20px 0 ; + background-color: #fff; + .btn-flex-wrap{ + margin-top: 0; } } @@ -202,6 +177,11 @@ } // 매물 상세 +.sale-data-table-wrap{ + padding: 24px; + background-color: #fff; + border-top: 1px solid #ECECEC; +} .sale-data-table{ width: 100%; table-layout: fixed; @@ -242,6 +222,63 @@ } } +.sale-detail-toggle-wrap{ + border-top: 1px solid #ECECEC; +} +.sale-detail-toggle-bx{ + border-bottom: 1px solid #ECECEC; +} +.sale-detail-toggle-head{ + @include flex(5px); + padding: 14px 18px; + background-color: $white-fff; + cursor: pointer; + .sale-detail-toggle-name{ + @include defaultFont($font-s-13, $font-w-500, $font-c); + } + .sale-detail-toggle-btn-wrap{ + margin-left: auto; + .sale-detail-toggle-btn{ + display: block; + width: 22px; + height: 22px; + background: url(/assets/images/sub/sale_toggle_btn.svg)no-repeat center; + background-size: cover + } + } +} +.sale-detail-toggle-cont{ + display: none; + .sale-frame{ + padding: 24px 20px; + &:first-child{ + padding-top: 24px; + } + &:last-child{ + padding-bottom: 24px; + } + } +} + +.sale-detail-toggle-bx{ + &.act{ + .sale-detail-toggle-head{ + background-color: #5F738E; + .sale-detail-toggle-name{ + color: #fff + } + .sale-detail-toggle-btn-wrap{ + .sale-detail-toggle-btn{ + background: url(/assets/images/sub/sale_toggle_btn_white.svg)no-repeat center; + } + } + } + .sale-detail-toggle-cont{ + display: block; + } + } +} + // 매물 기본정보 .form-flex{ @include flex(5px); diff --git a/src/types/Survey.ts b/src/types/Survey.ts index 1401c47..83d2ec1 100644 --- a/src/types/Survey.ts +++ b/src/types/Survey.ts @@ -1,5 +1,3 @@ -import { SEARCH_OPTIONS_ENUM, SEARCH_OPTIONS_PARTNERS_ENUM, SORT_OPTIONS_ENUM } from '@/store/surveyFilterStore' - export type SurveyBasicInfo = { ID: number REPRESENTATIVE: string @@ -130,3 +128,5 @@ export type SurveyRegistRequest = { SUBMISSION_DATE: string | null DETAIL_INFO: SurveyDetailRequest | null } + +export type Mode = 'CREATE' | 'EDIT' | 'READ' | 'TEMP' // 등록 | 수정 | 상세 | 임시저장