diff --git a/frontend_management/components/course/LessonPreviewDialog.vue b/frontend_management/components/course/LessonPreviewDialog.vue index 91a4c598..f2a2a50f 100644 --- a/frontend_management/components/course/LessonPreviewDialog.vue +++ b/frontend_management/components/course/LessonPreviewDialog.vue @@ -83,6 +83,28 @@ + +
+
การตั้งค่าเพิ่มเติม
+
+ + สุ่มคำถาม + + + สุ่มตัวเลือก + + + เฉลยหลังทำเสร็จ + + + ข้ามข้อได้ + + + ทำซ้ำได้ + +
+
+
diff --git a/frontend_management/layouts/admin.vue b/frontend_management/layouts/admin.vue index 82872eba..1b490ad0 100644 --- a/frontend_management/layouts/admin.vue +++ b/frontend_management/layouts/admin.vue @@ -63,7 +63,7 @@ @@ -91,11 +91,29 @@ diff --git a/frontend_management/layouts/instructor.vue b/frontend_management/layouts/instructor.vue index e2b8c99e..25f88d17 100644 --- a/frontend_management/layouts/instructor.vue +++ b/frontend_management/layouts/instructor.vue @@ -2,7 +2,7 @@
- - -
-

ข้อมูลระบบ

-
-
- สร้างเมื่อ - {{ formatDate(course.created_at) }} -
-
- อัพเดทล่าสุด - {{ formatDate(course.updated_at) }} -
-
-
diff --git a/frontend_management/pages/admin/index.vue b/frontend_management/pages/admin/index.vue index 03e35cb9..cf1121ed 100644 --- a/frontend_management/pages/admin/index.vue +++ b/frontend_management/pages/admin/index.vue @@ -146,7 +146,7 @@

กิจกรรมล่าสุด

- +
diff --git a/frontend_management/pages/admin/recommended-courses/index.vue b/frontend_management/pages/admin/recommended-courses/index.vue index b4c8cb48..96d66203 100644 --- a/frontend_management/pages/admin/recommended-courses/index.vue +++ b/frontend_management/pages/admin/recommended-courses/index.vue @@ -183,6 +183,34 @@
+ + +
+
โครงสร้างหลักสูตร (Course Structure)
+
+ +
+
+ + {{ lessonIndex + 1 }}. {{ lesson.title.th }} + {{ lesson.title.en }} +
+
+
+
+
+ diff --git a/frontend_management/pages/instructor/courses/index.vue b/frontend_management/pages/instructor/courses/index.vue index 13f84d74..cdda8b84 100644 --- a/frontend_management/pages/instructor/courses/index.vue +++ b/frontend_management/pages/instructor/courses/index.vue @@ -263,7 +263,8 @@ const statusOptions = [ { label: 'เผยแพร่แล้ว', value: 'APPROVED' }, { label: 'รอตรวจสอบ', value: 'PENDING' }, { label: 'แบบร่าง', value: 'DRAFT' }, - { label: 'ถูกปฏิเสธ', value: 'REJECTED' } + { label: 'ถูกปฏิเสธ', value: 'REJECTED' }, + //{ label: 'เก็บถาวร', value: 'ARCHIVED' } ]; // Stats @@ -275,7 +276,7 @@ const stats = computed(() => ({ rejected: courses.value.filter(c => c.status === 'REJECTED').length })); -// Filtered courses +// Filtered courses (search only, status is handled server-side) const filteredCourses = computed(() => { let result = courses.value; @@ -287,10 +288,6 @@ const filteredCourses = computed(() => { ); } - if (filterStatus.value) { - result = result.filter(course => course.status === filterStatus.value); - } - return result; }); @@ -298,7 +295,7 @@ const filteredCourses = computed(() => { const fetchCourses = async () => { loading.value = true; try { - courses.value = await instructorService.getCourses(); + courses.value = await instructorService.getCourses(filterStatus.value || undefined); } catch (error) { $q.notify({ type: 'negative', @@ -310,12 +307,18 @@ const fetchCourses = async () => { } }; +// Re-fetch when status filter changes +watch(filterStatus, () => { + fetchCourses(); +}); + const getStatusColor = (status: string) => { const colors: Record = { APPROVED: 'green', PENDING: 'orange', DRAFT: 'grey', - REJECTED: 'red' + REJECTED: 'red', + ARCHIVED: 'blue-grey' }; return colors[status] || 'grey'; }; @@ -325,7 +328,8 @@ const getStatusLabel = (status: string) => { APPROVED: 'เผยแพร่แล้ว', PENDING: 'รอตรวจสอบ', DRAFT: 'แบบร่าง', - REJECTED: 'ถูกปฏิเสธ' + REJECTED: 'ถูกปฏิเสธ', + ARCHIVED: 'เก็บถาวร' }; return labels[status] || status; }; diff --git a/frontend_management/public/icon.png b/frontend_management/public/icon.png new file mode 100644 index 00000000..cc1e9aab Binary files /dev/null and b/frontend_management/public/icon.png differ diff --git a/frontend_management/services/admin.service.ts b/frontend_management/services/admin.service.ts index 473c6ed9..cdea0ea4 100644 --- a/frontend_management/services/admin.service.ts +++ b/frontend_management/services/admin.service.ts @@ -296,6 +296,15 @@ export interface RecommendedCourse { }; chapters_count: number; lessons_count: number; + chapters?: { + id: number; + title: { th: string; en: string }; + sort_order: number; + lessons: { + id: number; + title: { th: string; en: string }; + }[]; + }[]; } export interface RecommendedCoursesListResponse { diff --git a/frontend_management/services/instructor.service.ts b/frontend_management/services/instructor.service.ts index 1c81d8ca..1c3ab0b4 100644 --- a/frontend_management/services/instructor.service.ts +++ b/frontend_management/services/instructor.service.ts @@ -208,8 +208,12 @@ const authRequest = async ( }; export const instructorService = { - async getCourses(): Promise { - const response = await authRequest('/api/instructors/courses'); + async getCourses(status?: string): Promise { + let url = '/api/instructors/courses'; + if (status) { + url += `?status=${status}`; + } + const response = await authRequest(url); return response.data; },