From 4cb0119e32381c33355f7a4737ea0ed5ef7def9f Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 13 Jul 2026 13:38:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BB=BB=E5=8A=A1=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=9D=A5=E6=BA=90=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/i18n/locales/en-US.ts | 1 + client/src/i18n/locales/th-TH.ts | 1 + client/src/i18n/locales/zh-CN.ts | 1 + client/src/tests/reservationViews.spec.ts | 16 ++++++++++++++++ .../reservation/ReservationTaskListView.vue | 2 ++ 5 files changed, 21 insertions(+) diff --git a/client/src/i18n/locales/en-US.ts b/client/src/i18n/locales/en-US.ts index 939466e..24fa967 100644 --- a/client/src/i18n/locales/en-US.ts +++ b/client/src/i18n/locales/en-US.ts @@ -259,6 +259,7 @@ export default { tableTitle: 'Task data', totalSuffix: 'tasks', noSourceSubject: 'No source subject', + sourceReceivedAt: 'Source time', canProcess: 'Processable', cannotProcess: 'Not processable', queueParticipation: 'Queue participation', diff --git a/client/src/i18n/locales/th-TH.ts b/client/src/i18n/locales/th-TH.ts index 3520db3..9036eed 100644 --- a/client/src/i18n/locales/th-TH.ts +++ b/client/src/i18n/locales/th-TH.ts @@ -259,6 +259,7 @@ export default { tableTitle: 'ข้อมูลงาน', totalSuffix: 'งาน', noSourceSubject: 'ไม่มีหัวข้ออีเมลต้นทาง', + sourceReceivedAt: 'เวลารับอีเมล', canProcess: 'ประมวลผลได้', cannotProcess: 'ประมวลผลไม่ได้', queueParticipation: 'อยู่ในคิวหรือไม่', diff --git a/client/src/i18n/locales/zh-CN.ts b/client/src/i18n/locales/zh-CN.ts index 83bb21d..58946f3 100644 --- a/client/src/i18n/locales/zh-CN.ts +++ b/client/src/i18n/locales/zh-CN.ts @@ -259,6 +259,7 @@ export default { tableTitle: '任务数据', totalSuffix: '条任务', noSourceSubject: '暂无来源主题', + sourceReceivedAt: '来源时间', canProcess: '可处理', cannotProcess: '不可处理', queueParticipation: '是否参与队列', diff --git a/client/src/tests/reservationViews.spec.ts b/client/src/tests/reservationViews.spec.ts index b4d1091..10c1bbb 100644 --- a/client/src/tests/reservationViews.spec.ts +++ b/client/src/tests/reservationViews.spec.ts @@ -494,6 +494,22 @@ describe('reservation P0 views', () => { expect(wrapper.text()).not.toContain('NEW_BOOKING / NEW_BOOKING') }) + it('renders task source received time in the source email column', async () => { + const taskListResult = createTaskListResult('GRP-001', 'Booking Request') + taskListResult.items[0] = { + ...taskListResult.items[0]!, + source_sender_summary: 'guest@example.test', + source_received_at: '2026-07-08T03:00:00Z', + } + vi.mocked(service.fetchReservationTaskList).mockResolvedValue(taskListResult) + + const wrapper = await mountWithPlugins(ReservationTaskListView) + await vi.dynamicImportSettled() + + expect(wrapper.text()).toContain('来源时间') + expect(wrapper.text()).toContain('2026-07-08 10:00:00') + }) + it('filters source-message-only tasks with S10 and S99 subtypes', async () => { vi.mocked(service.fetchReservationTaskList).mockResolvedValue(createSourceMessageOnlyTaskListResult('S10')) diff --git a/client/src/views/reservation/ReservationTaskListView.vue b/client/src/views/reservation/ReservationTaskListView.vue index 8f9955e..c200893 100644 --- a/client/src/views/reservation/ReservationTaskListView.vue +++ b/client/src/views/reservation/ReservationTaskListView.vue @@ -187,6 +187,7 @@ {{ task.source_subject ?? t('taskList.noSourceSubject') }} {{ task.source_sender_summary ?? task.source_message_id ?? '-' }} + {{ t('taskList.sourceReceivedAt') }}: {{ formatReservationDateTime(task.source_received_at) }} {{ task.queue_sequence ?? '-' }} @@ -279,6 +280,7 @@ import { formatReservationTaskRouteSummary, isReservationReadonlyDiagnosticTask, } from '@/utils/reservationDisplay' +import { formatReservationDateTime } from '@/utils/reservationFormat' const { t } = useI18n() const authStore = useAuthStore()