From 60b3139f7057f9d2e4f6e8b996a1f464cae9c9fb Mon Sep 17 00:00:00 2001 From: dbwoflaqnzo3 <141646829+dbwoflaqnzo3@users.noreply.github.com> Date: Fri, 28 Feb 2025 14:12:41 +0000 Subject: [PATCH] =?UTF-8?q?refactor[#53]:=20Write=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=9E=91=EC=84=B1=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/mainPage/helpPage/edit/basicForm.js | 0 student/app/mainPage/helpPage/edit/detail.js | 133 ++++++++++++++++++ .../app/mainPage/helpPage/edit/editForm.js | 99 +++++++++++++ student/app/mainPage/helpPage/edit/page.js | 12 ++ student/app/mainPage/helpPage/listItem.js | 81 ++++++----- student/app/mainPage/helpPage/page.js | 26 +++- student/app/widgets/structure/Grid.js | 4 + 7 files changed, 321 insertions(+), 34 deletions(-) create mode 100644 student/app/mainPage/helpPage/edit/basicForm.js create mode 100644 student/app/mainPage/helpPage/edit/detail.js create mode 100644 student/app/mainPage/helpPage/edit/editForm.js diff --git a/student/app/mainPage/helpPage/edit/basicForm.js b/student/app/mainPage/helpPage/edit/basicForm.js new file mode 100644 index 0000000..e69de29 diff --git a/student/app/mainPage/helpPage/edit/detail.js b/student/app/mainPage/helpPage/edit/detail.js new file mode 100644 index 0000000..551b563 --- /dev/null +++ b/student/app/mainPage/helpPage/edit/detail.js @@ -0,0 +1,133 @@ +"use client"; +import { useSearchParams } from "next/navigation"; +import { useState , useEffect } from "react"; +import EditForm from './editForm'; + + +const DetailPage = () => { + const searchParams = useSearchParams(); + const postId = searchParams.get("postId"); + const title = searchParams.get("title"); + + const [status , setStatus] = useState(null); + const [content , setContent] = useState(''); + const [category , setCategory] = useState(''); + + const [answer , setAnswer] = useState(''); + const [loading , setLoading] = useState(true); + +// 렌더링이 될때 get요청 + useEffect(()=>{ + const fetchPostData = async () => { + try{ + const res = await fetch(`/api/posts/${postId}`); + if(!res.ok){ + throw new Error('Failed to fetch data'); + } + const postData = await res.json(); + + // console.log(postData); + + setStatus(postData.post.status); + setContent(postData.post.content); + setCategory(postData.post.category); + setAnswer(postData.post.answer); + } catch (err){ + console.error('Error fetching post Data:', err); + } finally { + setLoading(false); + } + }; + + if(postId){ + fetchPostData(); + } + + }, [postId]) + + +// 버튼을 누렀을때 post요청 + const handleEditClick = async (e) => { + e.preventDefault(); + + try { + const response = await fetch('/api/posts/updatePost', { + method: 'POST', // 또는 PUT 요청 사용 가능 + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + postId, + title, + category, + content, + status: status, // 상태도 함께 전송 + }), + }); + + if (response.ok) { + alert('수정된 내용이 저장되었습니다.'); + } else { + console.error('수정 요청에 실패했습니다.'); + } + } catch (error) { + console.error('서버와 연결하는 중 오류가 발생했습니다.', error); + } + } + + const handleDeleteClick = async (e) => { + e.preventDefault(); + + try { + const response = await fetch('/api/posts/updatePost', { + method: 'Delete', // 또는 PUT 요청 사용 가능 + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + postId, + title, + category, + content, + status: status, // 상태도 함께 전송 + }), + }); + + if (response.ok) { + alert('수정된 내용이 삭제된거 처럼되었습니다.'); + } else { + console.error('수정 요청에 실패했습니다.'); + } + } catch (error) { + console.error('서버와 연결하는 중 오류가 발생했습니다.', error); + } + } + + + const handleCategoryChange = (e) => setCategory(e.target.value); + const handleContentChange = (e) => setContent(e.target.value); + + + + return ( +
+

고객센터 - 글수정

+ + {/* Form 컴포넌트에 필요한 props 전달 */} + +
+ ); +}; + +export default DetailPage; \ No newline at end of file diff --git a/student/app/mainPage/helpPage/edit/editForm.js b/student/app/mainPage/helpPage/edit/editForm.js new file mode 100644 index 0000000..8a473e3 --- /dev/null +++ b/student/app/mainPage/helpPage/edit/editForm.js @@ -0,0 +1,99 @@ +"use client"; +import { posts } from '@/data' +import { useRouter } from "next/navigation" + +const Form = ({postId, title, category, content, status, answer, onCategoryChange, onContentChange, onSubmit , onDelete}) => { + const data = posts[postId-1]; + let router = useRouter(); + + const goSVPage = (e) => { + e.preventDefault(); + router.push('/studentService'); + } + + return ( +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ +{/* 여기가 추가부분 */} +
+
+
+ +