diff --git a/src/app/api/survey-sales/[id]/route.ts b/src/app/api/survey-sales/[id]/route.ts index 07ecd6a..7c03530 100644 --- a/src/app/api/survey-sales/[id]/route.ts +++ b/src/app/api/survey-sales/[id]/route.ts @@ -19,14 +19,16 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{ } } -const getNewSrlNo = async (srlNo: string, storeId: string) => { +const getNewSrlNo = async (srlNo: string, storeId: string, role: string) => { + const srlRole = role === 'T01' || role === 'Admin' ? 'HO' : role === 'Admin_Sub' || role === 'Builder' ? 'HM' : '' + let newSrlNo = srlNo if (srlNo.startsWith('一時保存')) { //@ts-ignore const lastSurvey = await prisma.SD_SURVEY_SALES_BASIC_INFO.findFirst({ where: { SRL_NO: { - startsWith: storeId, + startsWith: srlRole + storeId, }, }, orderBy: { @@ -34,7 +36,9 @@ const getNewSrlNo = async (srlNo: string, storeId: string) => { }, }) const lastNo = lastSurvey ? parseInt(lastSurvey.SRL_NO.slice(-3)) : 0 + newSrlNo = + srlRole + storeId + new Date().getFullYear().toString().slice(-2) + (new Date().getMonth() + 1).toString().padStart(2, '0') + @@ -51,7 +55,7 @@ export async function PUT(request: NextRequest, { params }: { params: Promise<{ const { detailInfo, ...basicInfo } = body.survey // PUT 요청 시 임시저장 여부 확인 후 임시저장 시 기존 SRL_NO 사용, 기본 저장 시 새로운 SRL_NO 생성 - const newSrlNo = body.isTemporary ? body.survey.srlNo : await getNewSrlNo(body.survey.srlNo, body.storeId) + const newSrlNo = body.isTemporary ? body.survey.srlNo : await getNewSrlNo(body.survey.srlNo, body.storeId, body.role) // @ts-ignore const survey = await prisma.SD_SURVEY_SALES_BASIC_INFO.update({ where: { ID: Number(id) }, @@ -113,7 +117,7 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise< const body = await request.json() // 제출 시 기존 SRL_NO 확인 후 '임시저장'으로 시작하면 새로운 SRL_NO 생성 - const newSrlNo = await getNewSrlNo(body.srlNo, body.storeId) + const newSrlNo = await getNewSrlNo(body.srlNo, body.storeId, body.role) if (body.targetId) { // @ts-ignore diff --git a/src/app/api/survey-sales/route.ts b/src/app/api/survey-sales/route.ts index d3160b6..a5d60c8 100644 --- a/src/app/api/survey-sales/route.ts +++ b/src/app/api/survey-sales/route.ts @@ -227,11 +227,21 @@ export async function POST(request: Request) { try { const body = await request.json() - // 임시 저장 시 임시저장 + 000 으로 저장 - // 기본 저장 시 판매점ID + yyMMdd + 000 으로 저장 + const role = + body.role === 'T01' || body.role === 'Admin' + ? 'HO' + : body.role === 'Admin_Sub' || body.role === 'Builder' + ? 'HM' + : body.role === 'Partner' + ? '' + : null + + // 임시 저장 시 임시저장으로 저장 + // 기본 저장 시 (HO/HM) + 판매점ID + yyMMdd + 000 으로 저장 const baseSrlNo = body.survey.srlNo ?? - body.storeId + + role + + body.storeId + new Date().getFullYear().toString().slice(-2) + (new Date().getMonth() + 1).toString().padStart(2, '0') + new Date().getDate().toString().padStart(2, '0') @@ -240,7 +250,7 @@ export async function POST(request: Request) { const lastSurvey = await prisma.SD_SURVEY_SALES_BASIC_INFO.findFirst({ where: { SRL_NO: { - startsWith: body.storeId, + startsWith: role + body.storeId, }, }, orderBy: { diff --git a/src/components/survey-sale/detail/ButtonForm.tsx b/src/components/survey-sale/detail/ButtonForm.tsx index 8f8e3dd..fd3e339 100644 --- a/src/components/survey-sale/detail/ButtonForm.tsx +++ b/src/components/survey-sale/detail/ButtonForm.tsx @@ -29,7 +29,7 @@ export default function ButtonForm(props: { }) // !!!!!!!!!! - const [tempTargetId, setTempTargetId] = useState('') + const [tempTargetId, setTempTargetId] = useState('TEST') // -------------------------------------------------------------- // 권한 @@ -158,6 +158,7 @@ export default function ButtonForm(props: { if (routeId) { window.neoConfirm('削除しますか?', async () => { await deleteSurvey() + alert('削除されました。') router.push('/survey-sale') }) } @@ -269,9 +270,6 @@ function SubmitButton(props: { handleSubmit: () => void; setTempTargetId: (targe 提出 -
- setTempTargetId(e.target.value)} /> -
) } diff --git a/src/components/survey-sale/detail/DetailForm.tsx b/src/components/survey-sale/detail/DetailForm.tsx index 340b13d..7204135 100644 --- a/src/components/survey-sale/detail/DetailForm.tsx +++ b/src/components/survey-sale/detail/DetailForm.tsx @@ -1,11 +1,11 @@ 'use client' -import type { Mode, SurveyBasicInfo, SurveyBasicRequest, SurveyDetailRequest } from '@/types/Survey' +import type { Mode, SurveyBasicRequest, SurveyDetailRequest } from '@/types/Survey' import { useEffect, useState } from 'react' import ButtonForm from './ButtonForm' import BasicForm from './BasicForm' import RoofForm from './RoofForm' -import { useParams, useRouter, useSearchParams } from 'next/navigation' +import { useParams, useSearchParams } from 'next/navigation' import { useServey } from '@/hooks/useSurvey' const roofInfoForm: SurveyDetailRequest = { diff --git a/src/hooks/useSurvey.ts b/src/hooks/useSurvey.ts index 0f897ff..7149828 100644 --- a/src/hooks/useSurvey.ts +++ b/src/hooks/useSurvey.ts @@ -1,4 +1,4 @@ -import type { SurveyBasicInfo, SurveyDetailInfo, SurveyDetailRequest, SurveyDetailCoverRequest, SurveyRegistRequest } from '@/types/Survey' +import type { SurveyBasicInfo, SurveyDetailRequest, SurveyRegistRequest } from '@/types/Survey' import { useMemo } from 'react' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useSurveyFilterStore } from '@/store/surveyFilterStore' @@ -63,7 +63,6 @@ export function useServey(id?: number): { isUpdatingSurvey: boolean isDeletingSurvey: boolean createSurvey: (survey: SurveyRegistRequest) => Promise - createSurveyDetail: (params: { surveyId: number; surveyDetail: SurveyDetailCoverRequest }) => void updateSurvey: ({ survey, isTemporary, storeId }: { survey: SurveyRegistRequest; isTemporary: boolean; storeId?: string }) => void deleteSurvey: () => Promise submitSurvey: (params: { saveId?: number; targetId?: string; storeId?: string; srlNo?: string }) => void @@ -119,7 +118,11 @@ export function useServey(id?: number): { const { mutateAsync: createSurvey, isPending: isCreatingSurvey } = useMutation({ mutationFn: async (survey: SurveyRegistRequest) => { - const resp = await axiosInstance(null).post('/api/survey-sales', { survey: survey, storeId: session?.storeId ?? null }) + const resp = await axiosInstance(null).post('/api/survey-sales', { + survey: survey, + storeId: session?.storeId ?? null, + role: session?.role ?? null, + }) return resp.data.id ?? 0 }, onSuccess: (data) => { @@ -137,6 +140,7 @@ export function useServey(id?: number): { survey: survey, isTemporary: isTemporary, storeId: storeId, + role: session?.role ?? null, }) return resp.data }, @@ -158,17 +162,6 @@ export function useServey(id?: number): { }, }) - const { mutateAsync: createSurveyDetail } = useMutation({ - mutationFn: async ({ surveyId, surveyDetail }: { surveyId: number; surveyDetail: SurveyDetailCoverRequest }) => { - const resp = await axiosInstance(null).patch(`/api/survey-sales/${surveyId}`, surveyDetail) - return resp.data - }, - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['survey', 'list'] }) - queryClient.invalidateQueries({ queryKey: ['survey', id] }) - }, - }) - const { mutateAsync: submitSurvey } = useMutation({ mutationFn: async ({ saveId, targetId, storeId, srlNo }: { saveId?: number; targetId?: string; storeId?: string; srlNo?: string }) => { const submitId = saveId ?? id @@ -177,6 +170,7 @@ export function useServey(id?: number): { targetId, storeId, srlNo, + role: session?.role ?? null, }) return resp.data }, @@ -240,7 +234,6 @@ export function useServey(id?: number): { createSurvey, updateSurvey, deleteSurvey, - createSurveyDetail, submitSurvey, validateSurveyDetail, getZipCode,