fix: correct layout interface and enhance user session management
This commit is contained in:
parent
c06a96bc1b
commit
da0d77724d
@ -27,7 +27,7 @@ export async function POST(request: Request) {
|
||||
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
||||
console.log('start session edit!')
|
||||
session.userNm = user.username!
|
||||
// session.email = user.email!
|
||||
session.email = user.email!
|
||||
session.isLoggedIn = true
|
||||
console.log('end session edit!')
|
||||
await session.save()
|
||||
|
||||
@ -18,7 +18,7 @@ interface RootLayoutProps {
|
||||
header: ReactNode
|
||||
footer: ReactNode
|
||||
floatBtn: ReactNode
|
||||
}
|
||||
}6
|
||||
|
||||
export default async function RootLayout({ children, header, footer, floatBtn }: RootLayoutProps): Promise<ReactNode> {
|
||||
return (
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
import { useSurveySaleTabState } from '@/store/surveySaleTabState'
|
||||
import { usePathname, useRouter, useSearchParams, useParams } from 'next/navigation'
|
||||
import { useEffect } from 'react'
|
||||
import { usePopupController } from '@/store/popupController'
|
||||
|
||||
export default function NavTab() {
|
||||
const router = useRouter()
|
||||
@ -11,6 +10,7 @@ export default function NavTab() {
|
||||
|
||||
const searchParams = useSearchParams()
|
||||
const id = searchParams.get('id')
|
||||
const isTemp = searchParams.get('isTemp')
|
||||
|
||||
const params = useParams()
|
||||
const detailId = params.id
|
||||
@ -40,6 +40,10 @@ export default function NavTab() {
|
||||
|
||||
const handleRoofInfoClick = () => {
|
||||
if (id) {
|
||||
if (isTemp === 'true') {
|
||||
alert('基本情報が一時保存された状態です。')
|
||||
return
|
||||
}
|
||||
router.push(`/survey-sale/roof-info?id=${id}`)
|
||||
return
|
||||
}
|
||||
@ -48,8 +52,7 @@ export default function NavTab() {
|
||||
return
|
||||
}
|
||||
if (pathname === '/survey-sale/basic-info') {
|
||||
// TODO: 팝업 추가
|
||||
alert('Save essential information first')
|
||||
alert('基本情報を先に保存してください。')
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,12 +16,12 @@ export default function DataTable() {
|
||||
const tab = searchParams.get('tab')
|
||||
|
||||
const { surveyDetail, isLoadingSurveyDetail } = useServey(Number(id))
|
||||
const [isTemporary, setIsTemporary] = useState(false)
|
||||
const [isTemporary, setIsTemporary] = useState(true)
|
||||
const { setBasicInfoSelected, setRoofInfoSelected } = useSurveySaleTabState()
|
||||
|
||||
useEffect(() => {
|
||||
if (!surveyDetail?.representative || !surveyDetail?.store || !surveyDetail?.construction_point) {
|
||||
setIsTemporary(true)
|
||||
if (surveyDetail?.representative && surveyDetail?.store && surveyDetail?.construction_point) {
|
||||
setIsTemporary(false)
|
||||
}
|
||||
if (tab === 'roof-info') {
|
||||
setRoofInfoSelected()
|
||||
@ -66,8 +66,9 @@ export default function DataTable() {
|
||||
<td>
|
||||
{surveyDetail?.submission_status && surveyDetail?.submission_date ? (
|
||||
<>
|
||||
{/* TODO: 제출한 판매점 ID 추가 필요 */}
|
||||
<div>{new Date(surveyDetail.submission_date).toLocaleString()}</div>
|
||||
<div>제출한 판매점 ID 추가 필요</div>
|
||||
<div>販売店 ID...</div>
|
||||
</>
|
||||
) : (
|
||||
'-'
|
||||
|
||||
@ -2,29 +2,29 @@
|
||||
import { useRouter } from 'next/navigation'
|
||||
import { useServey } from '@/hooks/useSurvey'
|
||||
|
||||
export default function DetailButton({ isTemporary, surveyId }: { isTemporary: boolean, surveyId: number }) {
|
||||
export default function DetailButton({ isTemporary, surveyId }: { isTemporary: boolean; surveyId: number }) {
|
||||
const router = useRouter()
|
||||
|
||||
const { submitSurvey, deleteSurvey } = useServey(surveyId)
|
||||
|
||||
const handleSubmit = async () => {
|
||||
if (isTemporary) {
|
||||
alert('SAVE FIRST')
|
||||
alert('一時保存されたデータは提出できません。')
|
||||
return
|
||||
}
|
||||
if (confirm('submit?')) {
|
||||
if (confirm('提出しますか??')) {
|
||||
if (surveyId) {
|
||||
// TODO: 제출 페이지 추가
|
||||
alert('SUBMIT POPUP')
|
||||
alert('SUBMIT POPUP!!!!!!!!!!!')
|
||||
await submitSurvey()
|
||||
}
|
||||
}
|
||||
}
|
||||
const handleUpdate = () => {
|
||||
router.push(`/survey-sale/basic-info?id=${surveyId}`)
|
||||
router.push(`/survey-sale/basic-info?id=${surveyId}&isTemp=${isTemporary}`)
|
||||
}
|
||||
const handleDelete = async () => {
|
||||
if (confirm('delete?')) {
|
||||
if (confirm('削除しますか?')) {
|
||||
if (surveyId) {
|
||||
await deleteSurvey()
|
||||
router.push('/survey-sale')
|
||||
|
||||
@ -7,6 +7,7 @@ import { useState, useEffect } from 'react'
|
||||
import { useSurveySaleTabState } from '@/store/surveySaleTabState'
|
||||
import { usePopupController } from '@/store/popupController'
|
||||
import { useAddressStore } from '@/store/addressStore'
|
||||
import { useSessionStore } from '@/store/session'
|
||||
|
||||
const defaultBasicInfoForm: SurveyBasicRequest = {
|
||||
representative: '',
|
||||
@ -78,16 +79,17 @@ export default function BasicForm() {
|
||||
const handleSave = async (isTemporary: boolean) => {
|
||||
if (id) {
|
||||
updateSurvey(basicInfoData)
|
||||
alert('保存しました。')
|
||||
router.push(`/survey-sale/${id}?tab=basic-info`)
|
||||
}
|
||||
if (isTemporary) {
|
||||
const saveId = await createSurvey(basicInfoData)
|
||||
alert('save success temporary id: ' + saveId)
|
||||
alert('一時保存されました。')
|
||||
router.push(`/survey-sale/${saveId}?tab=basic-info`)
|
||||
} else {
|
||||
if (validateSurvey(basicInfoData)) {
|
||||
const saveId = await createSurvey(basicInfoData)
|
||||
alert('save success id: ' + saveId)
|
||||
alert('保存しました。 登録番号: ' + saveId)
|
||||
router.push(`/survey-sale/${saveId}?tab=basic-info`)
|
||||
}
|
||||
}
|
||||
@ -109,7 +111,6 @@ export default function BasicForm() {
|
||||
id="representative"
|
||||
value={basicInfoData.representative}
|
||||
onChange={(e) => handleChange('representative', e.target.value)}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div className="data-input-form-bx">
|
||||
@ -120,7 +121,6 @@ export default function BasicForm() {
|
||||
id="store"
|
||||
value={basicInfoData.store ?? ''}
|
||||
onChange={(e) => handleChange('store', e.target.value)}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div className="data-input-form-bx">
|
||||
@ -131,7 +131,6 @@ export default function BasicForm() {
|
||||
id="construction_point"
|
||||
value={basicInfoData.construction_point ?? ''}
|
||||
onChange={(e) => handleChange('construction_point', e.target.value)}
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -73,8 +73,8 @@ export default function RoofInfoForm() {
|
||||
const handleNumberInput = (key: keyof SurveyDetailRequest, value: number | string) => {
|
||||
if (key === 'roof_slope' || key === 'open_field_plate_thickness') {
|
||||
const stringValue = value.toString()
|
||||
if (stringValue.length > 4) {
|
||||
alert('over db size')
|
||||
if (stringValue.length > 5) {
|
||||
alert('保存できるサイズを超えました。')
|
||||
return
|
||||
}
|
||||
if (stringValue.includes('.')) {
|
||||
@ -118,17 +118,18 @@ export default function RoofInfoForm() {
|
||||
surveyId: Number(id),
|
||||
surveyDetail: updatedBasicInfoData,
|
||||
})
|
||||
alert('調査物件を保存しました。')
|
||||
} catch (error) {
|
||||
alert(error)
|
||||
throw new Error('failed to create survey detail: ' + error)
|
||||
}
|
||||
alert('created successfully')
|
||||
router.push(`/survey-sale`)
|
||||
} else {
|
||||
alert(emptyField + ' is required')
|
||||
alert(emptyField + ' は必須項目です。')
|
||||
focusOnInput(emptyField)
|
||||
}
|
||||
} else {
|
||||
alert('save essential information first')
|
||||
alert('基本情報を作成した後、屋根情報を作成することができます。')
|
||||
}
|
||||
}
|
||||
const focusOnInput = (field: string) => {
|
||||
|
||||
@ -215,16 +215,10 @@ export default function SelectBoxForm({
|
||||
name={column}
|
||||
id={column}
|
||||
onChange={handleSelectChange}
|
||||
value={
|
||||
detailInfoData[column]
|
||||
? detailInfoData[column]
|
||||
: detailInfoData[`${column}_etc`]
|
||||
? 'etc'
|
||||
: ''
|
||||
}
|
||||
value={detailInfoData[column] ? detailInfoData[column] : detailInfoData[`${column}_etc`] ? 'etc' : ''}
|
||||
>
|
||||
<option value="" hidden>
|
||||
선택해주세요
|
||||
選択してください
|
||||
</option>
|
||||
{selectBoxOptions[column].map((option) => (
|
||||
<option key={option.id} value={option.id}>
|
||||
|
||||
@ -2,10 +2,11 @@
|
||||
|
||||
import LoadMoreButton from '@/components/LoadMoreButton'
|
||||
import { useServey } from '@/hooks/useSurvey'
|
||||
import { useEffect, useState, useRef } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import SearchForm from './SearchForm'
|
||||
import { useSurveyFilterStore } from '@/store/surveyFilterStore'
|
||||
import { useSessionStore } from '@/store/session'
|
||||
|
||||
export default function ListTable() {
|
||||
const router = useRouter()
|
||||
@ -15,6 +16,9 @@ export default function ListTable() {
|
||||
const [heldSurveyList, setHeldSurveyList] = useState<typeof surveyList>([])
|
||||
const [hasMore, setHasMore] = useState(false)
|
||||
|
||||
const { session } = useSessionStore()
|
||||
console.log('session:: ', session)
|
||||
|
||||
useEffect(() => {
|
||||
if (surveyList && surveyList.length > 0) {
|
||||
if (offset === 0) {
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
'use client'
|
||||
|
||||
import { useRouter } from 'next/navigation'
|
||||
|
||||
export default function Main() {
|
||||
const router = useRouter()
|
||||
|
||||
|
||||
@ -60,6 +60,7 @@ export const SEARCH_OPTIONS_PARTNERS = [
|
||||
},
|
||||
]
|
||||
|
||||
export type MEMBER_TYPE = 'hwj' | 'order' | 'musubi' | 'partner'
|
||||
export type SEARCH_OPTIONS_ENUM = (typeof SEARCH_OPTIONS)[number]['id']
|
||||
export type SEARCH_OPTIONS_PARTNERS_ENUM = (typeof SEARCH_OPTIONS_PARTNERS)[number]['id']
|
||||
export type SORT_OPTIONS_ENUM = 'created' | 'updated'
|
||||
|
||||
@ -9,11 +9,11 @@ export interface SessionData {
|
||||
storeId: null
|
||||
userId: null
|
||||
category: null
|
||||
userNm: null
|
||||
userNmKana: null
|
||||
userNm: null | string
|
||||
userNmKana: null | string
|
||||
telNo: null
|
||||
fax: null
|
||||
email: null
|
||||
email: null | string
|
||||
lastEditUser: null
|
||||
storeGubun: null
|
||||
pwCurr: null
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user