diff --git a/frontend_management/components/course/AnnouncementsTab.vue b/frontend_management/components/course/AnnouncementsTab.vue
index aa529d46..ab094e2f 100644
--- a/frontend_management/components/course/AnnouncementsTab.vue
+++ b/frontend_management/components/course/AnnouncementsTab.vue
@@ -449,10 +449,7 @@ const deleteAttachment = async (attachmentId: number) => {
}
};
-const formatDate = (dateStr: string) => {
- const date = new Date(dateStr);
- return date.toLocaleDateString('th-TH', { day: 'numeric', month: 'short', year: 'numeric' });
-};
+// Date formatting function is auto-imported from utils/date.ts
const formatFileSize = (bytes: number) => {
if (bytes < 1024) return bytes + ' B';
diff --git a/frontend_management/components/course/ApprovalHistoryTab.vue b/frontend_management/components/course/ApprovalHistoryTab.vue
index f1dd8942..335845b3 100644
--- a/frontend_management/components/course/ApprovalHistoryTab.vue
+++ b/frontend_management/components/course/ApprovalHistoryTab.vue
@@ -20,7 +20,7 @@
v-for="item in history"
:key="item.id"
:title="titleMap[item.action] || item.action"
- :subtitle="formatDate(item.created_at)"
+ :subtitle="formatDateTime(item.created_at)"
:color="colorMap[item.action] || 'grey'"
:icon="iconMap[item.action] || 'circle'"
>
@@ -91,12 +91,7 @@ const getActorName = (item: ApprovalHistory) => {
return actor.username || actor.email || 'Unknown User';
};
-const formatDate = (dateString: string) => {
- return new Date(dateString).toLocaleString('th-TH', {
- dateStyle: 'medium',
- timeStyle: 'short'
- });
-};
+// Date formatting function is auto-imported from utils/date.ts
onMounted(() => {
fetchHistory();
diff --git a/frontend_management/components/course/QuizResultsTab.vue b/frontend_management/components/course/QuizResultsTab.vue
index eef37e63..c69ebe97 100644
--- a/frontend_management/components/course/QuizResultsTab.vue
+++ b/frontend_management/components/course/QuizResultsTab.vue
@@ -450,14 +450,7 @@ const openStudentDetail = async (studentId: number) => {
const formatDate = (dateStr: string) => {
if (!dateStr) return '-';
- const date = new Date(dateStr);
- return date.toLocaleDateString('th-TH', {
- day: 'numeric',
- month: 'short',
- year: 'numeric',
- hour: '2-digit',
- minute: '2-digit'
- });
+ return formatDateTime(dateStr);
};
// Lifecycle
diff --git a/frontend_management/components/course/StudentsTab.vue b/frontend_management/components/course/StudentsTab.vue
index 9a8f4416..1cd742b1 100644
--- a/frontend_management/components/course/StudentsTab.vue
+++ b/frontend_management/components/course/StudentsTab.vue
@@ -404,8 +404,7 @@ const getStudentStatusLabel = (status: string) => {
};
const formatEnrollDate = (dateStr: string) => {
- const date = new Date(dateStr);
- return date.toLocaleDateString('th-TH', { day: 'numeric', month: 'short', year: 'numeric' });
+ return formatDate(dateStr);
};
const getLessonTypeIcon = (type: string) => {
@@ -436,8 +435,7 @@ const formatVideoTime = (seconds: number) => {
const formatCompletedDate = (dateStr: string | null) => {
if (!dateStr) return '-';
- const date = new Date(dateStr);
- return date.toLocaleDateString('th-TH', { day: 'numeric', month: 'short' });
+ return formatDate(dateStr);
};
// Fetch on mount
diff --git a/frontend_management/pages/admin/audit-log/index.vue b/frontend_management/pages/admin/audit-log/index.vue
index 1214298e..8038014e 100644
--- a/frontend_management/pages/admin/audit-log/index.vue
+++ b/frontend_management/pages/admin/audit-log/index.vue
@@ -136,7 +136,7 @@