diff --git a/src/app/api/survey-sales/[id]/route.ts b/src/app/api/survey-sales/[id]/route.ts index ad87e4b..ce5bc1d 100644 --- a/src/app/api/survey-sales/[id]/route.ts +++ b/src/app/api/survey-sales/[id]/route.ts @@ -115,21 +115,18 @@ export async function PATCH(request: NextRequest, { params }: { params: Promise< try { const { id } = await params const body = await request.json() - - if (body.targetId) { - // @ts-ignore - const survey = await prisma.SD_SURVEY_SALES_BASIC_INFO.update({ - where: { ID: Number(id) }, - data: { - SUBMISSION_STATUS: true, - SUBMISSION_DATE: new Date(), - SUBMISSION_TARGET_ID: body.targetId, - SUBMISSION_TARGET_NM: body.targetNm, - UPT_DT: new Date(), - }, - }) - return NextResponse.json({ message: 'Survey confirmed successfully', data: survey }) - } + // @ts-ignore + const survey = await prisma.SD_SURVEY_SALES_BASIC_INFO.update({ + where: { ID: Number(id) }, + data: { + SUBMISSION_STATUS: true, + SUBMISSION_DATE: new Date(), + SUBMISSION_TARGET_ID: body.targetId, + SUBMISSION_TARGET_NM: body.targetNm, + UPT_DT: new Date(), + }, + }) + return NextResponse.json({ message: 'Survey confirmed successfully', data: survey }) } catch (error) { console.error('Error updating survey:', error) return NextResponse.json({ error: 'Failed to update survey' }, { status: 500 }) diff --git a/src/components/pdf/SurveySaleDownloadPdf.tsx b/src/components/pdf/SurveySaleDownloadPdf.tsx index b7c724a..4002d49 100644 --- a/src/components/pdf/SurveySaleDownloadPdf.tsx +++ b/src/components/pdf/SurveySaleDownloadPdf.tsx @@ -10,7 +10,6 @@ import { useSpinnerStore } from '@/store/spinnerStore' export default function SurveySaleDownloadPdf() { const params = useParams() const id = params.id - const router = useRouter() const { surveyDetail, isLoadingSurveyDetail } = useSurvey(Number(id)) const { setIsShow } = useSpinnerStore() @@ -50,7 +49,7 @@ export default function SurveySaleDownloadPdf() { generatePDF(targetRef, options).then(() => { setIsShow(false) - router.push(`/survey-sale/${id}`) + alert('PDFの生成が完了しました。 ポップアップウィンドウからダウンロードしてください。') }) } diff --git a/src/components/popup/SurveySaleSubmitPopup.tsx b/src/components/popup/SurveySaleSubmitPopup.tsx index 726d41d..99f003d 100644 --- a/src/components/popup/SurveySaleSubmitPopup.tsx +++ b/src/components/popup/SurveySaleSubmitPopup.tsx @@ -11,8 +11,8 @@ import { useSpinnerStore } from '@/store/spinnerStore' interface SubmitFormData { saleBase: string | null - targetId: string - targetNm: string + targetId: string | null + targetNm: string | null sender: string receiver: string[] | string reference: string | null @@ -38,8 +38,8 @@ export default function SurveySaleSubmitPopup() { const [submitData, setSubmitData] = useState({ saleBase: null, - targetId: '', - targetNm: '', + targetId: null, + targetNm: null, sender: '', receiver: [], reference: null, @@ -57,8 +57,8 @@ export default function SurveySaleSubmitPopup() { } setSubmitData({ ...submitData, - targetId: session?.role === 'Builder' ? surveyDetail?.storeId ?? '' : '', - targetNm: session?.role === 'Builder' ? surveyDetail?.store ?? '' : '', + targetId: session?.role === 'Builder' ? surveyDetail?.storeId ?? null : null, + targetNm: session?.role === 'Builder' ? surveyDetail?.store ?? null : null, sender: session?.email ?? '', title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')', }) @@ -67,7 +67,7 @@ export default function SurveySaleSubmitPopup() { const FORM_FIELDS: FormField[] = [ { id: 'sender', name: '発送者', required: true }, { id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' }, - { id: 'targetNm', name: '提出販売店', required: session?.role === 'Admin_Sub' || session?.role === 'Builder' }, + { id: 'targetNm', name: '提出販売店', required: session?.role !== 'Admin' }, { id: 'receiver', name: '受信者', required: true }, { id: 'reference', name: '参考', required: false }, { id: 'title', name: 'タイトル', required: true }, @@ -77,9 +77,6 @@ export default function SurveySaleSubmitPopup() { const { submitSurvey, isSubmittingSurvey } = useSurvey(Number(routeId)) const handleInputChange = (field: keyof SubmitFormData, value: string) => { - if (field === 'receiver' && session?.role === 'Partner') { - setSubmitData((prev) => ({ ...prev, targetNm: value })) - } setSubmitData((prev) => ({ ...prev, [field]: value })) } @@ -87,7 +84,7 @@ export default function SurveySaleSubmitPopup() { const requiredFields = FORM_FIELDS.filter((field) => field.required) for (const field of requiredFields) { - if (data[field.id]?.length === 0) { + if (data[field.id] === '' || data[field.id] === null || data[field.id]?.length === 0) { alert(`${field.name}は必須入力項目です。`) const element = document.getElementById(field.id) if (element) { @@ -110,16 +107,17 @@ export default function SurveySaleSubmitPopup() { }) .then(() => { if (!isSubmittingSurvey) { - submitSurvey({ targetId: submitData.targetId, targetNm: submitData.targetNm }) alert('提出が完了しました。') + // submitSurvey({ targetId: submitData.targetId, targetNm: submitData.targetNm }) popupController.setSurveySaleSubmitPopup(false) } }) .catch((error) => { console.error('Error sending email:', error) - alert('メール送信に失敗しました。') + alert('メール送信に失敗しました。 再度送信してください。') }) .finally(() => { + submitSurvey({ targetId: submitData.targetId, targetNm: submitData.targetNm }) setIsShow(false) popupController.setSurveySaleSubmitPopup(false) }) @@ -139,7 +137,7 @@ export default function SurveySaleSubmitPopup() { if (field.id === 'saleBase' && session?.role !== 'Admin') { return null } - if (field.id === 'targetNm' && (session?.role === 'Admin' || session?.role === 'Partner')) { + if (field.id === 'targetNm' && session?.role === 'Admin') { return null } diff --git a/src/components/survey-sale/detail/ButtonForm.tsx b/src/components/survey-sale/detail/ButtonForm.tsx index e408be0..c7e78df 100644 --- a/src/components/survey-sale/detail/ButtonForm.tsx +++ b/src/components/survey-sale/detail/ButtonForm.tsx @@ -29,9 +29,6 @@ export default function ButtonForm(props: { ...props.data.basic, detailInfo: props.data.roof, }) - - console.log(session) - console.log(props.data.basic) // -------------------------------------------------------------- // 권한 @@ -190,6 +187,19 @@ export default function ButtonForm(props: { ) } + //TODO: 추가확인 필요 (T01 계정이 어떤 조사매물을 수정/삭제 할 수 있는지) + if (mode === 'READ' && session?.role === 'T01' && (!isSubmit || props.data.basic.submissionTargetId !== session.storeId)) { + return ( + <> +
+
+ +
+
+ + ) + } + return ( <> {mode === 'READ' && ( diff --git a/src/components/survey-sale/detail/DataTable.tsx b/src/components/survey-sale/detail/DataTable.tsx index ac34400..30bfc40 100644 --- a/src/components/survey-sale/detail/DataTable.tsx +++ b/src/components/survey-sale/detail/DataTable.tsx @@ -23,19 +23,23 @@ export default function DataTable() { const { surveyDetail, isLoadingSurveyDetail } = useSurvey(Number(id)) if (isLoadingSurveyDetail) { - return <> + return null } const submitStatus = () => { - if (session?.role === 'Admin') { - return
HWJ
+ const { submissionTargetNm, submissionTargetId } = surveyDetail ?? {} + + if (!submissionTargetNm) { + return null } - if (session?.role === 'Partner') { - return
{surveyDetail?.submissionTargetNm}
+ + if (!submissionTargetId) { + return
{submissionTargetNm}
} + return (
- ({surveyDetail?.submissionTargetNm} - {surveyDetail?.submissionTargetId}) + ({submissionTargetNm} - {submissionTargetId})
) } diff --git a/src/hooks/useSurvey.ts b/src/hooks/useSurvey.ts index 64d57e5..122f358 100644 --- a/src/hooks/useSurvey.ts +++ b/src/hooks/useSurvey.ts @@ -66,7 +66,7 @@ export function useSurvey(id?: number): { createSurvey: (survey: SurveyRegistRequest) => Promise updateSurvey: ({ survey, isTemporary, storeId }: { survey: SurveyRegistRequest; isTemporary: boolean; storeId?: string }) => void deleteSurvey: () => Promise - submitSurvey: (params: { saveId?: number; targetId?: string; targetNm?: string; storeId?: string; srlNo?: string }) => void + submitSurvey: (params: { targetId?: string | null; targetNm?: string | null }) => void validateSurveyDetail: (surveyDetail: SurveyDetailRequest) => string getZipCode: (zipCode: string) => Promise refetchSurveyList: () => void @@ -163,14 +163,11 @@ export function useSurvey(id?: number): { }) const { mutateAsync: submitSurvey, isPending: isSubmittingSurvey } = useMutation({ - mutationFn: async ({ targetId, targetNm, storeId, srlNo }: { targetId?: string; targetNm?: string; storeId?: string; srlNo?: string }) => { + mutationFn: async ({ targetId, targetNm }: { targetId?: string | null; targetNm?: string | null }) => { if (!id) throw new Error('id is required') const resp = await axiosInstance(null).patch(`/api/survey-sales/${id}`, { targetId, targetNm, - storeId, - srlNo, - role: session?.role ?? null, }) return resp.data }, diff --git a/src/store/session.ts b/src/store/session.ts index 054bc97..0ad5b81 100644 --- a/src/store/session.ts +++ b/src/store/session.ts @@ -44,7 +44,6 @@ const initialState: InitialState = { builderNm: null, isLoggedIn: false, role: null, - builderNm: null, }, }