实现V4 Payment附件预览前端

This commit is contained in:
andy
2026-07-21 16:52:49 +07:00
parent 4b869a0ecd
commit 61380a9ed8
9 changed files with 878 additions and 24 deletions

View File

@@ -88,6 +88,7 @@
:validation-errors="cardFieldErrors[detail.basic_information_card.card_id] ?? {}"
:hotel-id="detail.order_task.hotel_id"
:order-task-id="detail.order_task.order_task_id"
:source-message-id="detail.order_task.source_message_id"
:action-errors="cardActionErrors[detail.basic_information_card.card_id] ?? []"
:success-message="cardSuccessMessages[detail.basic_information_card.card_id] ?? ''"
:review-form="reviewForms[detail.basic_information_card.card_id]"
@@ -130,6 +131,7 @@
:validation-errors="cardFieldErrors[businessCard.card_id] ?? {}"
:hotel-id="detail.order_task.hotel_id"
:order-task-id="detail.order_task.order_task_id"
:source-message-id="detail.order_task.source_message_id"
:action-errors="cardActionErrors[businessCard.card_id] ?? []"
:success-message="cardSuccessMessages[businessCard.card_id] ?? ''"
:review-form="reviewForms[businessCard.card_id]"
@@ -198,6 +200,7 @@ import {
import { useAuthStore } from '@/stores/authStore'
import type {
ReservationAiTransitionDisplayResult,
ReservationV4CardConfirmRequest,
ReservationRecord,
ReservationV4OrderTaskDetailResult,
ReservationV4TaskCardResult,
@@ -367,10 +370,11 @@ async function submitConfirm(card: ReservationV4TaskCardResult): Promise<void> {
[card.card_id]: '',
}
try {
const result = await confirmReservationV4OrderTaskCard(orderTaskId.value, card.card_id, {
version: card.version,
confirmed_payload: buildReservationV4ConfirmedPayload(submissionFields, cardValues.value[card.card_id] ?? {}),
})
const result = await confirmReservationV4OrderTaskCard(
orderTaskId.value,
card.card_id,
buildConfirmRequest(card, submissionFields),
)
applyDetail(result)
cardSuccessMessages.value = {
...cardSuccessMessages.value,
@@ -455,6 +459,9 @@ function editableFieldKeys(card: ReservationV4TaskCardResult): string[] {
}
function submissionFieldsForCard(card: ReservationV4TaskCardResult): ReservationV4TaskCardResult['fields'] {
if (isPaymentCard(card)) {
return []
}
return card.card_type === 'ROOM_INFORMATION'
? card.fields.filter((field) =>
isReservationV4RoomInformationSafeField(field) && !isGroupRoomInformationBreakfastField(card, field),
@@ -462,6 +469,25 @@ function submissionFieldsForCard(card: ReservationV4TaskCardResult): Reservation
: card.fields
}
function buildConfirmRequest(
card: ReservationV4TaskCardResult,
submissionFields: ReservationV4TaskCardResult['fields'],
): ReservationV4CardConfirmRequest {
if (isPaymentCard(card)) {
return {
version: card.version,
}
}
return {
version: card.version,
confirmed_payload: buildReservationV4ConfirmedPayload(submissionFields, cardValues.value[card.card_id] ?? {}),
}
}
function isPaymentCard(card: ReservationV4TaskCardResult): boolean {
return card.card_type === 'PAYMENT'
}
function isGroupRoomInformationBreakfastField(
card: ReservationV4TaskCardResult,
field: ReservationV4TaskCardResult['fields'][number],