Skip to content

Commit 09ac8da

Browse files
authored
Merge pull request #47 from INU-Software-Design/feature/student-record-page
⬆️ update : 배포
2 parents 30436e3 + 4a77c31 commit 09ac8da

9 files changed

Lines changed: 2204 additions & 221 deletions

File tree

next.config.mjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
/** @type {import('next').NextConfig} */
22
const nextConfig = {
33
reactStrictMode: false,
4+
webpack: (config) => {
5+
config.module.rules.push({
6+
test: /\.svg$/,
7+
use: ["@svgr/webpack"],
8+
});
9+
10+
return config;
11+
},
412
};
513

614
export default nextConfig;

package-lock.json

Lines changed: 2168 additions & 160 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
},
1212
"dependencies": {
1313
"@fullcalendar/react": "^6.1.17",
14+
"@svgr/webpack": "^8.1.0",
1415
"@tailwindcss/postcss": "^4.0.17",
1516
"axios": "^1.8.3",
1617
"dayjs": "^1.11.13",

public/assets/images/logo.png

14.5 KB
Loading

public/assets/images/logo.svg

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/components/counsel/counselContent.tsx

Lines changed: 10 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default function CounselContent() {
2828
teacher: teacher?.name || "",
2929
content: "",
3030
isPublic: true,
31-
nextPlan: ""
31+
nextPlan: "",
3232
});
3333

3434
useEffect(() => {
@@ -58,7 +58,7 @@ export default function CounselContent() {
5858

5959
useEffect(() => {
6060
if (teacher?.name) {
61-
setForm(prev => ({ ...prev, teacher: teacher.name }));
61+
setForm((prev) => ({ ...prev, teacher: teacher.name }));
6262
}
6363
}, [teacher?.name]);
6464

@@ -71,7 +71,7 @@ export default function CounselContent() {
7171
teacher: teacher?.name || "",
7272
content: "",
7373
isPublic: true,
74-
nextPlan: ""
74+
nextPlan: "",
7575
});
7676
};
7777

@@ -87,7 +87,7 @@ export default function CounselContent() {
8787
teacher: counsel.teacher,
8888
content: counsel.content,
8989
isPublic: counsel.isPublic,
90-
nextPlan: counsel.nextPlan
90+
nextPlan: counsel.nextPlan,
9191
});
9292
}
9393
};
@@ -103,14 +103,7 @@ export default function CounselContent() {
103103
e.preventDefault();
104104
setConsultingData((prev) => [...prev, { ...form, id: nextId++ }]);
105105
try {
106-
await PostCounsel(
107-
studentId,
108-
reverseCategoryMap[form.category] ?? form.category,
109-
form.content,
110-
form.nextPlan,
111-
form.dateTime,
112-
!sendAsPrivate
113-
);
106+
await PostCounsel(studentId, reverseCategoryMap[form.category] ?? form.category, form.content, form.nextPlan, form.dateTime, !sendAsPrivate);
114107
} catch (error) {
115108
console.error(" 실패", error);
116109
alert(error);
@@ -121,27 +114,16 @@ export default function CounselContent() {
121114
teacher: teacher?.name || "",
122115
content: "",
123116
isPublic: true,
124-
nextPlan: ""
117+
nextPlan: "",
125118
});
126119
};
127120

128121
const handleEdit = async (e: React.FormEvent): Promise<void> => {
129122
e.preventDefault();
130123
if (selectedCounselId === null) return;
131-
setConsultingData((prev) =>
132-
prev.map((c) =>
133-
c.id === selectedCounselId ? { ...c, ...form } : c
134-
)
135-
);
124+
setConsultingData((prev) => prev.map((c) => (c.id === selectedCounselId ? { ...c, ...form } : c)));
136125
try {
137-
await PutCounsel(
138-
selectedCounselId,
139-
reverseCategoryMap[form.category] ?? form.category,
140-
form.content,
141-
form.nextPlan,
142-
form.dateTime,
143-
!sendAsPrivate
144-
);
126+
await PutCounsel(selectedCounselId, reverseCategoryMap[form.category] ?? form.category, form.content, form.nextPlan, form.dateTime, !sendAsPrivate);
145127
} catch (error) {
146128
console.error(" 실패", error);
147129
alert(error);
@@ -179,12 +161,7 @@ export default function CounselContent() {
179161
<div className="w-full h-full border border-[#a9a9a9] p-4">
180162
<div className="flex flex-col md:flex-row gap-4">
181163
<div className="flex-1 min-w-[320px] flex justify-center items-center">
182-
<CounselCalendar
183-
events={events}
184-
selectedDate={selectedDate}
185-
handleDateClick={handleDateClick}
186-
handleEventClick={handleEventClick}
187-
/>
164+
<CounselCalendar events={events} selectedDate={selectedDate} handleDateClick={handleDateClick} handleEventClick={handleEventClick} />
188165
</div>
189166
<div className={`flex-[2] border rounded-md p-4 flex flex-col justify-between relative ${form.isPublic ? "" : "pointer-events-none"}`}>
190167
<CounselForm
@@ -216,12 +193,7 @@ export default function CounselContent() {
216193
})} 상담 이력`
217194
: "상담이력"}
218195
</div>
219-
<CounselHistoryList
220-
dailyHistory={dailyHistory}
221-
selectedCounselId={selectedCounselId}
222-
setSelectedCounselId={setSelectedCounselId}
223-
setForm={setForm}
224-
/>
196+
<CounselHistoryList dailyHistory={dailyHistory} selectedCounselId={selectedCounselId} setSelectedCounselId={setSelectedCounselId} setForm={setForm} />
225197
</div>
226198
</div>
227199
);

src/components/shared/Header.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import React, { ReactNode, useMemo, useCallback } from "react";
22
import Image from "next/image";
33
import { useRouter } from "next/router";
4-
import logo from "@/assets/images/logo.png";
54
import AlertIcon from "@/assets/icons/AlertIcon";
65

76
export const Header = ({ children }: { children: ReactNode }) => {
@@ -46,15 +45,16 @@ export const Header = ({ children }: { children: ReactNode }) => {
4645
<header>
4746
<div className="flex items-center w-full h-18 bg-white border-b border-gray-400">
4847
<Image
49-
src={logo}
48+
src={"/assets/images/logo.png"}
5049
alt="로고"
51-
height={64}
50+
width={71}
51+
height={48}
5252
onClick={() => {
5353
router.push("/");
5454
}}
55-
className="cursor-pointer"
55+
className="cursor-pointer mx-8 my-auto"
5656
/>
57-
<div className="flex items-center gap-16 ml-4">{menuElements}</div>
57+
<div className="flex items-center h-[72px] gap-16 ml-4">{menuElements}</div>
5858
<div
5959
className="flex justify-center items-center ml-auto mr-8"
6060
onClick={() => {

src/components/student-record/Modal.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ export default function Modal({ name, onClose }: ModalProps) {
1414
const token = localStorage.getItem("accessToken");
1515
const getFeedback = async () => {
1616
try {
17-
await axios.get(`${process.env.NEXT_PUBLIC_BACKEND_DOMAIN}`, {
17+
const res = await axios.get(`${process.env.NEXT_PUBLIC_BACKEND_DOMAIN}`, {
1818
headers: { Authorization: `Bearer ${token}` },
1919
});
20-
20+
const data = res.data;
21+
console.log(data);
22+
// 초기 피드백 데이터를 여기서 넣고 싶으면:
23+
// setFeedback(data.feedback);
2124
} catch (err) {
2225
console.error(err);
2326
}
@@ -43,4 +46,4 @@ export default function Modal({ name, onClose }: ModalProps) {
4346
</div>
4447
</div>
4548
);
46-
}
49+
}

src/pages/index.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ const Login = () => {
1818
const handleLogin = async (e: React.MouseEvent<HTMLButtonElement>): Promise<void> => {
1919
e.preventDefault();
2020
if (!userId || !password) {
21-
alert('아이디와 비밀번호를 모두 입력해주세요.');
22-
return;
21+
alert("아이디와 비밀번호를 모두 입력해주세요.");
22+
return;
2323
}
2424

2525
try {
@@ -35,16 +35,16 @@ const Login = () => {
3535

3636
router.push("/student-record");
3737
} catch (error) {
38-
console.error("로그인 실패", error);
39-
alert(error);
40-
alert('이메일 혹은 비밀번호가 틀립니다. 다시 시도해주세요.');
38+
console.error("로그인 실패", error);
39+
alert(error);
40+
alert("이메일 혹은 비밀번호가 틀립니다. 다시 시도해주세요.");
4141
}
4242
};
4343

4444
return (
4545
<div className="w-full h-[100vh] flex justify-center items-center">
4646
<div className="flex w-full h-auto max-w-[500px] flex-col items-center jsutify-center">
47-
<Image className="flex" src={"/assets/images/logo.svg"} alt="logo" width={380} height={190}></Image>
47+
<Image className="flex" src={"/assets/images/logo.png"} alt="logo" width={300} height={190}></Image>
4848
<div id="inputCont" className="flex flex-col align-start mt-[32px] w-[76%]">
4949
<div id="id" className="mb-[32px]">
5050
<p className="mb-[8px] text-[20px] leading-[23px] text-center text-[#333333] flex items-center font-[NanumGothic]">아이디</p>

0 commit comments

Comments
 (0)