diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
index 55261f8..1ee2d52 100644
--- a/src/app/login/page.tsx
+++ b/src/app/login/page.tsx
@@ -1,7 +1,18 @@
+import Login from '@/components/Login'
+import Footer from '@/components/ui/common/Footer'
+
export default function page() {
return (
<>
-
로그인
+
>
)
}
diff --git a/src/app/survey-sale/[id]/basic-info/page.tsx b/src/app/survey-sale/[id]/basic-info/page.tsx
new file mode 100644
index 0000000..1a0c763
--- /dev/null
+++ b/src/app/survey-sale/[id]/basic-info/page.tsx
@@ -0,0 +1,28 @@
+import BasicForm from '@/components/survey-sale/detail/BasicForm'
+import Footer from '@/components/ui/common/Footer'
+import Header from '@/components/ui/common/Header'
+
+export default function page() {
+ return (
+ <>
+
+ >
+ )
+}
diff --git a/src/app/survey-sale/[id]/page.tsx b/src/app/survey-sale/[id]/page.tsx
new file mode 100644
index 0000000..8bc0220
--- /dev/null
+++ b/src/app/survey-sale/[id]/page.tsx
@@ -0,0 +1,30 @@
+import DataTable from '@/components/survey-sale/detail/DataTable'
+import DetailForm from '@/components/survey-sale/detail/DetailForm'
+import Footer from '@/components/ui/common/Footer'
+import Header from '@/components/ui/common/Header'
+
+export default function page() {
+ return (
+ <>
+
+ >
+ )
+}
diff --git a/src/app/survey-sale/[id]/roof-info/page.tsx b/src/app/survey-sale/[id]/roof-info/page.tsx
new file mode 100644
index 0000000..d01a5a4
--- /dev/null
+++ b/src/app/survey-sale/[id]/roof-info/page.tsx
@@ -0,0 +1,28 @@
+import RoofInfoForm from '@/components/survey-sale/detail/RoofInfoForm'
+import Footer from '@/components/ui/common/Footer'
+import Header from '@/components/ui/common/Header'
+
+export default function page() {
+ return (
+ <>
+
+ >
+ )
+}
diff --git a/src/app/survey-sale/page.tsx b/src/app/survey-sale/page.tsx
index cd29fcc..f6e12ea 100644
--- a/src/app/survey-sale/page.tsx
+++ b/src/app/survey-sale/page.tsx
@@ -1,7 +1,22 @@
+import ListTable from '@/components/survey-sale/list/ListTable'
+import SearchForm from '@/components/survey-sale/list/SearchForm'
+import Footer from '@/components/ui/common/Footer'
+import Header from '@/components/ui/common/Header'
+
export default function page() {
return (
<>
- 조사 매물
+
>
)
}
diff --git a/src/components/Login.tsx b/src/components/Login.tsx
new file mode 100644
index 0000000..8f6e373
--- /dev/null
+++ b/src/components/Login.tsx
@@ -0,0 +1,48 @@
+'use client'
+
+import { useState } from 'react'
+
+export default function Login() {
+ const [pwShow, setPwShow] = useState(false) //비밀번호 보이기 숨기기
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/popup/MemberInfomationPopup.tsx b/src/components/popup/MemberInfomationPopup.tsx
index 86227d8..133b6c7 100644
--- a/src/components/popup/MemberInfomationPopup.tsx
+++ b/src/components/popup/MemberInfomationPopup.tsx
@@ -1,4 +1,10 @@
+'use client'
+
+import { usePopupController } from '@/store/popupController'
+
export default function MemberInfomationPopup() {
+ const popupController = usePopupController()
+
return (
@@ -11,7 +17,7 @@ export default function MemberInfomationPopup() {
会員情報
-
+
diff --git a/src/components/popup/ZipCodePopup.tsx b/src/components/popup/ZipCodePopup.tsx
new file mode 100644
index 0000000..180d8a2
--- /dev/null
+++ b/src/components/popup/ZipCodePopup.tsx
@@ -0,0 +1,90 @@
+'use client'
+
+import { usePopupController } from '@/store/popupController'
+import { useState } from 'react'
+
+export default function ZipCodePopup() {
+ const [searchValue, setSearchValue] = useState('') //search 데이터 유무
+
+ //search 데이터 value 추가
+ const handleChange = (e: React.ChangeEvent
) => {
+ setSearchValue(e.target.value)
+ }
+
+ const popupController = usePopupController()
+
+ return (
+ <>
+
+
+
+
+
+
+
+

+
+
住所検索
+
+
+
+
+
+
+
+
+
+ {/*input에 데이터 있으면 삭제버튼 보임 */}
+ {searchValue && }
+
+
+
+
+
名前
+
+
+
+ | 都道府県 |
+ 市区町村 |
+ 市区町村以下 |
+
+
+
+
+ | 東京都 |
+ 浜松 |
+ 浜松町 |
+
+
+ | 東京都 |
+ 浜松 |
+ 浜松町 |
+
+
+ | 東京都 |
+ 浜松 |
+ 浜松町 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/survey-sale/detail/BasicForm.tsx b/src/components/survey-sale/detail/BasicForm.tsx
new file mode 100644
index 0000000..fce0e49
--- /dev/null
+++ b/src/components/survey-sale/detail/BasicForm.tsx
@@ -0,0 +1,89 @@
+'use client'
+
+export default function BasicForm() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
建物名
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/survey-sale/detail/DataTable.tsx b/src/components/survey-sale/detail/DataTable.tsx
new file mode 100644
index 0000000..414164c
--- /dev/null
+++ b/src/components/survey-sale/detail/DataTable.tsx
@@ -0,0 +1,42 @@
+'use client'
+
+export default function DataTable() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+ | 登録番号 |
+ 0000000020 |
+
+
+ | 登録日 |
+ 2025.04.11 |
+
+
+ | 更新日時 |
+ 2025.04.11 15:06:29 |
+
+
+ | 提出可否 |
+ 2025.04.12 10:00:00 (INTERPLUG –販売店) |
+
+
+ | ダウンロード |
+
+
+ |
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/survey-sale/detail/DetailForm.tsx b/src/components/survey-sale/detail/DetailForm.tsx
new file mode 100644
index 0000000..2a0bbcb
--- /dev/null
+++ b/src/components/survey-sale/detail/DetailForm.tsx
@@ -0,0 +1,67 @@
+'use client'
+
+import { usePopupController } from '@/store/popupController'
+
+export default function DetailForm() {
+ const popupController = usePopupController()
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/survey-sale/detail/RoofInfoForm.tsx b/src/components/survey-sale/detail/RoofInfoForm.tsx
new file mode 100644
index 0000000..bbe6546
--- /dev/null
+++ b/src/components/survey-sale/detail/RoofInfoForm.tsx
@@ -0,0 +1,361 @@
+'use client'
+
+export default function RoofInfoForm() {
+ return (
+ <>
+
+
電気関係
+
+
+
電気契約容量
+
+
+
+
+
+
+
+
+
+
+ 電気袋設備※複数選択可能
+
+
+
+
+
+
+
+
設置希望システム
+
+
+
+
+
+
+
+
+
+
+
+
屋根関係
+
+
+
建築研修
+
+
+
+
+
+ 年
+
+
+
+
+ 屋根材※最大2個まで選択可能
+
+
+
+
+
+
+
+
建築研修
+
+
+
+
+
+
+
+
+
+
住宅構造
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
垂木サイズ
+
+
+
+
+
+
+
+
+
垂木サイズ
+
+
+
+
+
+
+
+
+
+
路地板の種類
+
+
+
+
+
+
+
+
+
+ 路地板厚※小幅板を選択した場合, 厚さ. 小幅板間の間隔寸法を記載
+
+
+
+ mm
+
+
+
+
+
住宅構造
+
+
+
+
+
+
+
+
+
+
+
+
+
+
断熱材の有無
+
+
+
+
+
+
+
+
+
+
+
+
+
+
路地板の種類
+
+
+
+
+
+
+
+
+
屋根製品名 設置可否確認
+
+
+
+
+
+
+
+
+
メモ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/survey-sale/list/ListTable.tsx b/src/components/survey-sale/list/ListTable.tsx
new file mode 100644
index 0000000..6d15b1e
--- /dev/null
+++ b/src/components/survey-sale/list/ListTable.tsx
@@ -0,0 +1,33 @@
+'use client'
+
+export default function ListTable() {
+ return (
+ <>
+
+
+ {Array.from({ length: 4 }).map((_, idx) => (
+ -
+
+
+
0000000021
+
2025.04.22
+
+
Hanwha Building
+
Gil dong
+
+
Hong Gildong
+
2025.04.22 10:00:21
+
+
+
+ ))}
+
+
+
+
+
+ >
+ )
+}
diff --git a/src/components/survey-sale/list/SearchForm.tsx b/src/components/survey-sale/list/SearchForm.tsx
new file mode 100644
index 0000000..5763dbf
--- /dev/null
+++ b/src/components/survey-sale/list/SearchForm.tsx
@@ -0,0 +1,43 @@
+'use client'
+
+export default function SearchForm() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/src/components/ui/PopupController.tsx b/src/components/ui/PopupController.tsx
index 1d9f4b1..dea0207 100644
--- a/src/components/ui/PopupController.tsx
+++ b/src/components/ui/PopupController.tsx
@@ -2,9 +2,15 @@
import { usePopupController } from '@/store/popupController'
import MemberInfomationPopup from '../popup/MemberInfomationPopup'
+import ZipCodePopup from '../popup/ZipCodePopup'
export default function PopupController() {
const popupController = usePopupController()
- return <>{popupController.memberInfomationPopup && }>
+ return (
+ <>
+ {popupController.memberInfomationPopup && }
+ {popupController.zipCodePopup && }
+ >
+ )
}
diff --git a/src/store/popupController.ts b/src/store/popupController.ts
index 1c883f3..1c4d568 100644
--- a/src/store/popupController.ts
+++ b/src/store/popupController.ts
@@ -1,19 +1,33 @@
import { create } from 'zustand'
+type MemberInfomationPopupState = {
+ memberInfomationPopup: boolean
+}
+
+type ZipCodePopupState = {
+ zipCodePopup: boolean
+}
+
type PoupControllerState = {
memberInfomationPopup: boolean
- setMemberInfomationPopup: (MemberInfomationPopupState: boolean) => void
+ zipCodePopup: boolean
+ setMemberInfomationPopup: (MemberInfomationPopupState: MemberInfomationPopupState) => void
+ setZipCodePopup: (ZipCodePopupState: ZipCodePopupState) => void
}
type InitialState = {
memberInfomationPopup: boolean
+ zipCodePopup: boolean
}
const initialState: InitialState = {
memberInfomationPopup: false,
+ zipCodePopup: false,
}
export const usePopupController = create((set) => ({
...initialState,
- setMemberInfomationPopup: (memberInfomationPopupState: boolean) => set((state) => ({ ...state, memberInfomationPopupState })),
+ setMemberInfomationPopup: ({ memberInfomationPopup }) => set((state) => ({ ...state, memberInfomationPopup })),
+ setZipCodePopup: ({ zipCodePopup }) => set((state) => ({ ...state, zipCodePopup })),
+ reset: () => set(initialState),
}))