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 (
+
+
+ );
+};
+
+export default Form;
\ No newline at end of file
diff --git a/student/app/mainPage/helpPage/edit/page.js b/student/app/mainPage/helpPage/edit/page.js
index 8afe671..c5cd422 100644
--- a/student/app/mainPage/helpPage/edit/page.js
+++ b/student/app/mainPage/helpPage/edit/page.js
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
"use client";
import { useSearchParams } from "next/navigation";
import { useState, useEffect } from "react";
@@ -121,3 +122,14 @@ const DetailPage = () => {
};
export default DetailPage;
+=======
+// 여기서 작성자를 토큰으로 받을예정
+import DetailPage from "./detail"
+
+export default function helpPageWrite() {
+
+ return(
+
+ )
+}
+>>>>>>> 2eb536d (refactor[#53]: Write페이지 작성완료)
diff --git a/student/app/mainPage/helpPage/listItem.js b/student/app/mainPage/helpPage/listItem.js
index 34ddc18..9ba8662 100644
--- a/student/app/mainPage/helpPage/listItem.js
+++ b/student/app/mainPage/helpPage/listItem.js
@@ -8,6 +8,7 @@ import { useState , useEffect } from 'react';
+<<<<<<< HEAD
<<<<<<< HEAD
const ListItem = () => {
const [posts , setPosts] = useState([]);
@@ -68,51 +69,67 @@ const ListItem = () => {
export default ListItem;
=======
const listItem = () => {
+=======
+const ListItem = () => {
+>>>>>>> 2eb536d (refactor[#53]: Write페이지 작성완료)
const [posts , setPosts] = useState([]);
-
- useEffect(()=>{
- const fetchPosts = async() => {
+ useEffect(() => {
+ const fetchPosts = async () => {
const res = await fetch('/api/posts');
const data = await res.json();
- console.log(data)
- if(res.ok){
- setPosts(data.posts || [])
-
- }else{
- console.error('서버오류',res.message)
+ console.log(data);
+ if (res.ok) {
+ setPosts(data.posts || []);
+ } else {
+ console.error('서버 오류', res.message);
}
- }
-
+ };
fetchPosts();
- },[]);
-
-
+ }, []);
return (
- {posts.map((post, index) => (
-
-
{index + 1}
{/* 번호는 인덱스에 1을 더해서 표시 */}
-
{post.category}
-
+
번호
+
카테고리
+
제목
+
등록자
+
등록일
+
상태
+
+
+ {posts.map((post, index) => (
+
-
- {post.title}
+
{index + 1}
+
{post.category}
+
+
+ {post.title}
+
+
+
{post.author}
+
{post.date}
+
{post.status ? '처리완료' : '답변대기'}
-
-
{post.author}
-
{post.date}
-
{post.status ? '처리완료' : '답변대기'}
-
- ))}
+ ))}
);
- };
+};
+<<<<<<< HEAD
export default listItem;
>>>>>>> 4dd0664 (feat[#53]: 글 카테고리 버튼 설정)
+=======
+
+export default ListItem;
+>>>>>>> 2eb536d (refactor[#53]: Write페이지 작성완료)
diff --git a/student/app/mainPage/helpPage/page.js b/student/app/mainPage/helpPage/page.js
index 50c6639..2bed5c3 100644
--- a/student/app/mainPage/helpPage/page.js
+++ b/student/app/mainPage/helpPage/page.js
@@ -3,12 +3,15 @@
<<<<<<< HEAD
import { useState } from "react";
import { useRouter } from "next/navigation";
+<<<<<<< HEAD
=======
import styles from "./helpPage.module.css";
>>>>>>> b147fff (feat: pull받고 고객센터 페이지추가)
=======
import { useState } from "react";
>>>>>>> 4dd0664 (feat[#53]: 글 카테고리 버튼 설정)
+=======
+>>>>>>> 2eb536d (refactor[#53]: Write페이지 작성완료)
import { PageLayout } from '@/app/page.js';
import SizedBox from "@/app/widgets/structure/SizedBox";
@@ -41,12 +44,18 @@ export default function studentService(){
=======
import { DropdownButton2 , DropdownElement } from "@/app/components/ui/buttons/Dropdown";
+import ListItem from "./listItem";
export default function studentService(){
const [selectedCategory, setSelectedCategory] = useState(null);
const [selectedOrdering, setSelectedOrdering] = useState(null);
+ const router = useRouter();
+ const writeContent = () => {
+ router.push("/mainPage/helpPage/write");
+ // alert("경고: 이 작업을 수행할 수 없습니다!");
+ };
>>>>>>> 4dd0664 (feat[#53]: 글 카테고리 버튼 설정)
@@ -123,14 +132,27 @@ export default function studentService(){
-
+
- 찾기
+
+<<<<<<< HEAD
>>>>>>> b147fff (feat: pull받고 고객센터 페이지추가)
+=======
+
+
+
+
+
+
+
+
+
+
+>>>>>>> 2eb536d (refactor[#53]: Write페이지 작성완료)
)
}
\ No newline at end of file
diff --git a/student/app/widgets/structure/Grid.js b/student/app/widgets/structure/Grid.js
index 3efd6b3..4d32e82 100644
--- a/student/app/widgets/structure/Grid.js
+++ b/student/app/widgets/structure/Grid.js
@@ -1,7 +1,11 @@
<<<<<<< HEAD
+<<<<<<< HEAD
import { addRequestMeta } from "next/dist/server/request-meta";
=======
>>>>>>> 3ee5730 (feat[#44] : component 적용 오류 해결 중)
+=======
+import { addRequestMeta } from "next/dist/server/request-meta";
+>>>>>>> 2eb536d (refactor[#53]: Write페이지 작성완료)
import styles from "./grid.module.css";
export function Grid({