diff --git a/frontend_management/components/course/LessonPreviewDialog.vue b/frontend_management/components/course/LessonPreviewDialog.vue new file mode 100644 index 00000000..2d414994 --- /dev/null +++ b/frontend_management/components/course/LessonPreviewDialog.vue @@ -0,0 +1,228 @@ + + + diff --git a/frontend_management/components/course/StructureTab.vue b/frontend_management/components/course/StructureTab.vue index e2e6aa33..79cc1555 100644 --- a/frontend_management/components/course/StructureTab.vue +++ b/frontend_management/components/course/StructureTab.vue @@ -3,14 +3,15 @@

โครงสร้างบทเรียน

-
+
ยังไม่มีบทเรียน
@@ -41,6 +42,10 @@ v-for="lesson in getSortedLessons(chapter)" :key="lesson.id" class="py-3" + :class="{ 'cursor-pointer hover:bg-gray-50': course.status === 'APPROVED' }" + :clickable="course.status === 'APPROVED'" + :v-ripple="course.status === 'APPROVED'" + @click="handleLessonClick(lesson)" > + + + +
+ + + diff --git a/frontend_management/pages/admin/courses/[id].vue b/frontend_management/pages/admin/courses/[id].vue index e8eaf667..a78bd809 100644 --- a/frontend_management/pages/admin/courses/[id].vue +++ b/frontend_management/pages/admin/courses/[id].vue @@ -323,7 +323,7 @@ const getLessonIcon = (type: string) => { const getLessonTypeColor = (type: string) => { const colors: Record = { VIDEO: 'blue', - QUIZ: 'purple', + QUIZ: 'orange', DOCUMENT: 'teal' }; return colors[type] || 'grey'; diff --git a/frontend_management/pages/admin/courses/pending.vue b/frontend_management/pages/admin/courses/pending.vue index 9aea3966..c9503538 100644 --- a/frontend_management/pages/admin/courses/pending.vue +++ b/frontend_management/pages/admin/courses/pending.vue @@ -3,14 +3,16 @@

คอร์สรออนุมัติ

- +
+ +
@@ -47,6 +49,17 @@ +
+ +
+
@@ -57,7 +70,8 @@

ไม่มีคอร์สที่รอการอนุมัติ

-
+ +
+ + +
+ + + + + + + + + + + + + + + + +
@@ -144,6 +230,16 @@ const router = useRouter(); const courses = ref([]); const loading = ref(true); const searchQuery = ref(''); +const viewMode = ref('table'); + +const columns = [ + { name: 'thumbnail', label: 'รูปปก', field: 'thumbnail', align: 'left' }, + { name: 'title', label: 'ชื่อคอร์ส', field: (row: PendingCourse) => row.title.th, align: 'left', sortable: true }, + { name: 'instructor', label: 'ผู้สอน', field: (row: PendingCourse) => getPrimaryInstructor(row), align: 'left', sortable: true }, + { name: 'stats', label: 'จำนวนบท', field: 'stats', align: 'center' }, + { name: 'submitted_at', label: 'วันที่ส่ง', field: (row: PendingCourse) => row.latest_submission?.created_at, align: 'left', sortable: true }, + { name: 'actions', label: '', field: 'actions', align: 'center' } +]; // Computed const totalChapters = computed(() => diff --git a/frontend_management/pages/instructor/courses/[id]/chapters/[chapterId]/lessons/[lessonId]/quiz.vue b/frontend_management/pages/instructor/courses/[id]/chapters/[chapterId]/lessons/[lessonId]/quiz.vue index 52401d55..666b5df3 100644 --- a/frontend_management/pages/instructor/courses/[id]/chapters/[chapterId]/lessons/[lessonId]/quiz.vue +++ b/frontend_management/pages/instructor/courses/[id]/chapters/[chapterId]/lessons/[lessonId]/quiz.vue @@ -230,9 +230,10 @@ :color="choice.is_correct ? 'positive' : 'grey'" size="18px" /> - - {{ choice.text.th || `ตัวเลือก ${Number(cIndex) + 1}` }} - +
+
{{ choice.text.th || `ตัวเลือก ${Number(cIndex) + 1}` }}
+
{{ choice.text.en }}
+
@@ -296,13 +297,21 @@ :val="cIndex" @update:model-value="setCorrectChoice(cIndex)" /> - +
+ + +
- +