diff --git a/client/src/components/reservation/ReservationV4RoomInformationCard.vue b/client/src/components/reservation/ReservationV4RoomInformationCard.vue index 7bc45c0..0ecdd7d 100644 --- a/client/src/components/reservation/ReservationV4RoomInformationCard.vue +++ b/client/src/components/reservation/ReservationV4RoomInformationCard.vue @@ -7,7 +7,7 @@ {{ t('taskV4.roomInformation.noDisplayModel') }} @@ -89,19 +86,6 @@ function readableValue(value?: string | null): string { overflow-wrap: anywhere; } -.rooming-list-card p, -.rooming-list-card small { - margin: 0; - color: var(--th-color-slate-600); - font-size: 13px; - line-height: 1.55; -} - -.rooming-list-card small { - color: var(--th-color-slate-500); - font-weight: 700; -} - .rooming-list-card__link { color: var(--th-color-blue-600); flex: 0 0 auto; diff --git a/client/src/tests/reservationV4Views.spec.ts b/client/src/tests/reservationV4Views.spec.ts index 0c5df38..129707f 100644 --- a/client/src/tests/reservationV4Views.spec.ts +++ b/client/src/tests/reservationV4Views.spec.ts @@ -8,6 +8,7 @@ import { createMemoryHistory, createRouter } from 'vue-router' import taskCardSectionSource from '@/components/reservation/ReservationV4TaskCardSection.vue?raw' import paymentAttachmentPreviewSource from '@/components/reservation/ReservationV4PaymentAttachmentPreview.vue?raw' +import roomInformationCardSource from '@/components/reservation/ReservationV4RoomInformationCard.vue?raw' import roomingListCardSource from '@/components/reservation/ReservationV4RoomingListCard.vue?raw' import traceCardSource from '@/components/reservation/ReservationV4TraceCard.vue?raw' import zhCN from '@/i18n/locales/zh-CN' @@ -528,7 +529,8 @@ describe('reservation V4 pages', () => { const roomingListCard = roomingListSection!.find('[data-testid="rooming-list-card"]') expect(roomingListCard.exists()).toBe(true) expect(roomingListSection!.text()).toContain(zhCN.taskV4.roomingList.title) - expect(roomingListCard.text()).toContain(zhCN.taskV4.roomingList.description) + expect(roomingListCard.text()).not.toContain(zhCN.taskV4.roomingList.description) + expect(roomingListCard.text()).not.toContain(zhCN.taskV4.roomingList.confirmHint) expect(roomingListCard.text()).toContain('GRP-001') expect(roomingListSection!.findAll('a').filter((link) => link.text() === zhCN.task.viewOrder)).toHaveLength(1) expect(wrapper.text()).toContain(zhCN.taskV4.sourceMessageCard) @@ -885,6 +887,10 @@ describe('reservation V4 pages', () => { const blockIdField = findFieldByLabel(roomCard, zhCN.taskV4.roomInformation.blockId) expect(confirmationField?.find('.v4-field__static').text()).toBe('-') expect(blockIdField?.find('.v4-field__static').text()).toBe('-') + const summary = roomCard.find('.room-information__summary') + expect(summary.exists()).toBe(true) + expect(summary.find('.room-information__chips').exists()).toBe(true) + expect(summary.find('.room-information__status-slot').exists()).toBe(true) const statusSlot = roomCard.find('.room-information__status-slot') const statusSelect = statusSlot.find('select[name="/room_information/final_values/group_booking_status"]') expect(statusSlot.text()).toContain(zhCN.taskV4.roomInformation.groupBookingStatus) @@ -1440,6 +1446,12 @@ describe('reservation V4 pages', () => { expect(traceCardSource).not.toContain('margin: 0 20px 18px') }) + it('keeps Room Information summary compact on narrow screens and readable with readonly errors', () => { + expect(roomInformationCardSource).toMatch(/\.room-information__status-badge\s*\{[\s\S]*?flex-wrap: wrap;/) + expect(roomInformationCardSource).toMatch(/\.room-information__status-badge \.room-information__status-error\s*\{[\s\S]*?flex-basis: 100%;/) + expect(roomInformationCardSource).toMatch(/\.room-information__status-slot\s*\{[\s\S]*?flex: 0 1 auto;[\s\S]*?width: 100%;/) + }) + it('requires confirmed order id before resolving an unresolved V4 review card', async () => { const detail = createOrderTaskDetail({ businessCardStatus: 'REVIEW_REQUIRED',