From 73d93d05f90a0d316838c6dbdd5b245b5ea4cf9c Mon Sep 17 00:00:00 2001 From: keyy1315 Date: Wed, 28 May 2025 18:08:25 +0900 Subject: [PATCH 01/16] feat: add publish at surveyDetail page (structure order), submit popup page --- .../popup/SurveySaleSubmitPopup.tsx | 69 +++++++++++++------ .../survey-sale/detail/RoofForm.tsx | 2 +- src/styles/components/_pop-contents.scss | 9 +++ 3 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/components/popup/SurveySaleSubmitPopup.tsx b/src/components/popup/SurveySaleSubmitPopup.tsx index 7a50406..4a33083 100644 --- a/src/components/popup/SurveySaleSubmitPopup.tsx +++ b/src/components/popup/SurveySaleSubmitPopup.tsx @@ -2,7 +2,7 @@ import Image from 'next/image' import { usePopupController } from '@/store/popupController' import { useParams } from 'next/navigation' import { useSurvey } from '@/hooks/useSurvey' -import { useEffect, useState } from 'react' +import { useEffect, useRef, useState } from 'react' import { useSessionStore } from '@/store/session' import { useCommCode } from '@/hooks/useCommCode' import { CommCode } from '@/types/CommCode' @@ -16,7 +16,7 @@ interface SubmitFormData { receiver: string[] | string reference: string | null title: string - contents: string + contents: string | null } interface FormField { @@ -32,10 +32,10 @@ export default function SurveySaleSubmitPopup() { const routeId = params.id const { setIsShow } = useSpinnerStore() - const [commCodeList, setCommCodeList] = useState([]) - const { getCommCode } = useCommCode() + const { surveyDetail } = useSurvey(Number(routeId)) + const [commCodeList, setCommCodeList] = useState([]) useEffect(() => { if (session?.isLoggedIn && session?.role === 'Admin') { getCommCode('SALES_OFFICE_CD').then((codes) => { @@ -45,13 +45,13 @@ export default function SurveySaleSubmitPopup() { }, [session]) const FORM_FIELDS: FormField[] = [ + { id: 'sender', name: '発送者', required: true }, { id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' }, { id: 'store', name: '提出販売店', required: true }, - { id: 'sender', name: '発送者', required: true }, { id: 'receiver', name: '受信者', required: true }, { id: 'reference', name: '参考', required: false }, { id: 'title', name: 'タイトル', required: true }, - { id: 'contents', name: '内容', required: true }, + { id: 'contents', name: '内容', required: false }, ] const [submitData, setSubmitData] = useState({ @@ -94,16 +94,16 @@ export default function SurveySaleSubmitPopup() { sendEmail({ to: submitData.receiver, subject: submitData.title, - content: submitData.contents, + content: contentsRef.current?.innerHTML ?? '', }) .then(() => { - if (!isSubmittingSurvey) { - popupController.setSurveySaleSubmitPopup(false) - } - }) - .catch((error) => { - console.error('Error sending email:', error) - alert('メール送信に失敗しました。') + if (!isSubmittingSurvey) { + popupController.setSurveySaleSubmitPopup(false) + } + }) + .catch((error) => { + console.error('Error sending email:', error) + alert('メール送信に失敗しました。') }) .finally(() => { setIsShow(false) @@ -112,6 +112,8 @@ export default function SurveySaleSubmitPopup() { } } + const contentsRef = useRef(null) + const handleClose = () => { popupController.setSurveySaleSubmitPopup(false) } @@ -122,7 +124,6 @@ export default function SurveySaleSubmitPopup() { if (field.id === 'saleBase' && session?.role !== 'Admin') { return null } - return (
@@ -130,12 +131,38 @@ export default function SurveySaleSubmitPopup() {
{field.id === 'contents' ? ( -