接入V4房型信息展示模型

This commit is contained in:
andy committed 2026-07-21 09:04:13 +07:00
1 parent 1d593f05fd
commit 8d181ee8ad
21 files changed
+1390 -77

No files matched your search

@@ -1,5 +1,8 @@
<template>
<section class="th-section task-card-section">
<section
class="th-section task-card-section"
:data-testid="isRoomInformationCard ? 'room-information-card' : undefined"
>
<div class="task-card-section__header">
<div class="task-card-section__heading">
<h2 class="th-section-title">
@@ -31,7 +34,19 @@
</div>
</div>
<ReservationV4RoomInformationCard
v-if="isRoomInformationCard"
class="task-card-section__fields"
:card="card"
:model-value="modelValue"
:read-only="readOnly"
:editable-keys="editableKeys"
:validation-errors="validationErrors"
:hotel-id="hotelId"
@update:model-value="emit('update:modelValue', $event)"
/>
<ReservationV4TaskCardFieldRenderer
v-else
class="task-card-section__fields"
:fields="card.fields"
:model-value="modelValue"
@@ -43,7 +58,7 @@
/>
<details
v-if="safePayloadRows.length"
v-if="!isRoomInformationCard && safePayloadRows.length"
class="safe-payload"
>
<summary>
@@ -86,6 +101,7 @@
<label>
<span>{{ t('taskV4.confirmedOrderId') }}</span>
<input
name="v4_confirmed_order_id"
:value="reviewForm.confirmed_order_id"
:placeholder="t('taskV4.confirmedOrderIdPlaceholder')"
@input="updateReviewForm('confirmed_order_id', $event)"
@@ -107,7 +123,7 @@
:disabled="!canReview"
@click="emit('resolveReview')"
>
{{ submitting ? t('taskV4.resolvingReview') : t('taskV4.resolveReview') }}
{{ submitting ? t('taskV4.confirmingCard') : t('taskV4.confirmCard') }}
</button>
<RouterLink
v-if="boundOrderId"
@@ -148,6 +164,7 @@ import { RouterLink } from 'vue-router'
import { useI18n } from 'vue-i18n'
import ReservationStatusBadge from '@/components/reservation/ReservationStatusBadge.vue'
import ReservationV4RoomInformationCard from '@/components/reservation/ReservationV4RoomInformationCard.vue'
import ReservationV4TaskCardFieldRenderer from '@/components/reservation/ReservationV4TaskCardFieldRenderer.vue'
import type { ReservationRecord, ReservationV4TaskCardResult } from '@/types/reservation'
import { formatReservationReadonlyReason } from '@/utils/reservationDisplay'
@@ -198,6 +215,7 @@ const emit = defineEmits<{
}>()
const { t } = useI18n()
const isRoomInformationCard = computed(() => props.card.card_type === 'ROOM_INFORMATION')
const availabilityReason = computed(() => {
return props.card.availability.readonly_reason_message ??