Skip to content
This repository was archived by the owner on Jul 13, 2026. It is now read-only.

Commit 305ad0e

Browse files
committed
Merge branch 'feature/timetable' into merge-test
2 parents faac595 + 01ef77b commit 305ad0e

5 files changed

Lines changed: 63 additions & 19 deletions

File tree

src/api/timetableApi.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ export const getCourses = async (sec_id) => {
142142
}
143143

144144
// ---------------------------------------------------------------
145-
// 시간표 정보 조회
145+
// [학생] 시간표 정보 조회
146146
// ---------------------------------------------------------------
147147
export const getStudentTimetable = async (today) => {
148148
try {
@@ -159,7 +159,24 @@ export const getStudentTimetable = async (today) => {
159159
}
160160

161161
// ---------------------------------------------------------------
162-
// 시간표 정보 조회
162+
// [교수] 시간표 정보 조회
163+
// ---------------------------------------------------------------
164+
export const getProfessorTimetable = async (today) => {
165+
try {
166+
const res = await api.get(`/timetables/professor`, {
167+
params: {
168+
date: today,
169+
},
170+
})
171+
console.log('교수 시간표 정보 조회', res.data)
172+
return res.data
173+
} catch (e) {
174+
errorMsg(e)
175+
}
176+
}
177+
178+
// ---------------------------------------------------------------
179+
// [전체] 시간표 정보 조회
163180
// ---------------------------------------------------------------
164181
export const getAdminTimetable = async (today) => {
165182
try {

src/pages/TimeTable/TimeTablePage.vue

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ const sidebarIsOpen = ref(false)
1212
const Ustore = useUserStore()
1313
const Tstore = useTimetableStore()
1414
15-
const isStudent = ref(null) // 학생인지
15+
const roleType = ref(null) // 권한
16+
const professorTT = ref(true)
1617
1718
// 사용자 정보 확인
1819
watch(
1920
() => {
20-
isStudent.value = Ustore.userInfo.role_type == 'student' ? true : false
21+
roleType.value = Ustore.userInfo.role_type
2122
// console.log(isStudent.value)
2223
},
2324
{ immediate: true },
@@ -34,8 +35,8 @@ function setData(data) {
3435
<template>
3536
<AppLayout pageName="Timetable">
3637
<!-- =============== 학생 시간표 =============== -->
37-
<div v-if="isStudent">
38-
<TimeTable />
38+
<div v-if="roleType == 'student'">
39+
<TimeTable v-model="professorTT" />
3940
</div>
4041

4142
<!-- =============== 교수, 관리자 시간표 =============== -->
@@ -48,8 +49,20 @@ function setData(data) {
4849
<!-- 사이드바 컴포넌트 -->
4950
<Sidebar v-if="sidebarIsOpen" />
5051

52+
<div v-if="roleType == 'professor'">
53+
<div v-if="professorTT">
54+
<button @click="professorTT = !professorTT">전체 시간표 보기</button>
55+
<TimeTable v-model="professorTT" />
56+
</div>
57+
<div v-else>
58+
<button @click="professorTT = !professorTT">담당 시간표 보기</button>
59+
</div>
60+
</div>
61+
5162
<!-- 시간표 컴포넌트 -->
52-
<AdminTimeTable @setRange="setData" />
63+
<div v-if="!professorTT">
64+
<AdminTimeTable @setRange="setData" />
65+
</div>
5366
</div>
5467
</AppLayout>
5568
</template>

src/pages/TimeTable/components/AdminTimeTable.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ const Tstore = useTimetableStore()
99
const timetableData = ref(null)
1010
const today = new Date('2025-06-05') // 오늘
1111
const today_day = today.getDay() // 오늘의 요일 (일요일=0)
12-
const selectDate = ref(today)
12+
const selectDate = ref(null)
1313
1414
// 주 변경시 시간표 데이터 갱신
1515
watch(
1616
() => selectDate.value,
1717
async () => {
18+
if (selectDate.value == null) selectDate.value = Tstore.date ? new Date(Tstore.date) : today
1819
// console.log("selectDate", selectDate.value);
1920
await Tstore.setTimetable(selectDate.value.toISOString().split('T')[0])
2021
},

src/pages/TimeTable/components/TimeTable.vue

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,29 @@
22
import { ref, watch } from 'vue'
33
import { day } from '@/utils/reName'
44
import { useTimetableStore } from '@/stores/timetable'
5+
import { getStudentTimetable } from '@/api/timetableApi'
56
67
const Tstore = useTimetableStore()
78
89
// 시간표 조회 ====================================
910
const timetableData = ref(null)
1011
const today = new Date('2025-06-05') // 오늘
1112
const today_day = today.getDay() // 오늘의 요일 (일요일=0)
12-
const selectDate = ref(today)
13+
const selectDate = ref(null)
1314
15+
const professorTT = defineModel()
1416
// 주 변경시 시간표 데이터 갱신
1517
watch(
1618
() => selectDate.value,
1719
async () => {
18-
timetableData.value = await Tstore.getStdTimetable(selectDate.value.toISOString().split('T')[0])
20+
if (selectDate.value == null) selectDate.value = Tstore.date ? new Date(Tstore.date) : today
21+
if (professorTT.value) {
22+
timetableData.value = await Tstore.getPfsTimetable(
23+
selectDate.value.toISOString().split('T')[0],
24+
)
25+
} else {
26+
timetableData.value = await getStudentTimetable(selectDate.value.toISOString().split('T')[0])
27+
}
1928
},
2029
{ immediate: true },
2130
)

src/stores/timetable.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@ import { defineStore } from 'pinia'
22
import { lengthHour } from '@/utils/lengthHour'
33
import { useClassroomStore } from '@/stores/classroom'
44
import { useProfessorStore } from '@/stores/professor'
5-
import { getStudentTimetable, getAdminTimetable, getCourses, getSections } from '@/api/timetableApi'
5+
import {
6+
getProfessorTimetable,
7+
getAdminTimetable,
8+
getCourses,
9+
getSections,
10+
} from '@/api/timetableApi'
611

712
export const useTimetableStore = defineStore('timetable', {
813
state: () => ({
9-
// 학생 Timetable
10-
studentTimetable: [],
14+
// 교수 Timetable
15+
professorTimetable: [],
1116
// 관리자 Timetable / 기준 date
1217
adminTimetable: [],
1318
date: null,
@@ -40,19 +45,18 @@ export const useTimetableStore = defineStore('timetable', {
4045
actions: {
4146
// ------------------------ studentTimetable --------------------------
4247
// [ set ] : studentTimetable 셋팅
43-
async setStdTimetable(day = this.selectTT.date) {
48+
async setPfsTimetable(day = this.date) {
4449
if (day == null) day = new Date().toISOString().split('T')[0]
45-
this.studentTimetable = await getStudentTimetable(day)
50+
this.professorTimetable = await getProfessorTimetable(day)
4651
this.date = day
47-
// console.log('store: studentTimetable', this.studentTimetable)
4852
},
4953

5054
// [ get ] : studentTimetable 반환
51-
async getStdTimetable(day) {
55+
async getPfsTimetable(day) {
5256
if (this.date != day) {
53-
await this.setStdTimetable(day)
57+
await this.setPfsTimetable(day)
5458
}
55-
return this.studentTimetable
59+
return this.professorTimetable
5660
},
5761

5862
// ------------------------ adminTimetable --------------------------

0 commit comments

Comments
 (0)