提交代码
This commit is contained in:
@@ -195,6 +195,7 @@ import type {
|
||||
ReservationRecord,
|
||||
ReservationV4OrderTaskDetailResult,
|
||||
ReservationV4TaskCardResult,
|
||||
ReservationV4TaskCardFieldResult,
|
||||
} from '@/types/reservation'
|
||||
import {
|
||||
formatReservationTaskCard,
|
||||
@@ -209,7 +210,9 @@ import {
|
||||
isReservationV4ReviewWritableField,
|
||||
isReservationV4TraceSafeField,
|
||||
mapReservationV4BackendDetailsToFields,
|
||||
fieldPathToPointer,
|
||||
reservationV4FieldKey,
|
||||
type ReservationV4FieldValidationMessageContext,
|
||||
validateReservationV4Fields,
|
||||
} from '@/utils/reservationV4FieldRules'
|
||||
|
||||
@@ -405,7 +408,11 @@ function canReviewCard(card: ReservationV4TaskCardResult): boolean {
|
||||
async function submitConfirm(card: ReservationV4TaskCardResult): Promise<void> {
|
||||
const submissionFields = submissionFieldsForCard(card)
|
||||
const writableFields = submissionFields.filter(isReservationV4ConfirmWritableField)
|
||||
const localErrors = validateReservationV4Fields(writableFields, cardValues.value[card.card_id] ?? {})
|
||||
const localErrors = validateReservationV4Fields(
|
||||
writableFields,
|
||||
cardValues.value[card.card_id] ?? {},
|
||||
{ formatMessage: (context) => formatLocalFieldValidationMessage(card, context) },
|
||||
)
|
||||
cardFieldErrors.value = {
|
||||
...cardFieldErrors.value,
|
||||
[card.card_id]: localErrors,
|
||||
@@ -458,7 +465,11 @@ async function submitReview(card: ReservationV4TaskCardResult): Promise<void> {
|
||||
|
||||
const submissionFields = submissionFieldsForCard(card)
|
||||
const writableFields = submissionFields.filter(isReservationV4ReviewWritableField)
|
||||
const localErrors = validateReservationV4Fields(writableFields, cardValues.value[card.card_id] ?? {})
|
||||
const localErrors = validateReservationV4Fields(
|
||||
writableFields,
|
||||
cardValues.value[card.card_id] ?? {},
|
||||
{ formatMessage: (context) => formatLocalFieldValidationMessage(card, context) },
|
||||
)
|
||||
cardFieldErrors.value = {
|
||||
...cardFieldErrors.value,
|
||||
[card.card_id]: localErrors,
|
||||
@@ -610,6 +621,39 @@ function cardTitle(card: ReservationV4TaskCardResult): string {
|
||||
return formatReservationTaskCard(t, card.card_type)
|
||||
}
|
||||
|
||||
function formatLocalFieldValidationMessage(
|
||||
card: ReservationV4TaskCardResult,
|
||||
context: ReservationV4FieldValidationMessageContext,
|
||||
): string {
|
||||
const fieldLabel = localFieldLabel(card, context.field)
|
||||
if (context.type === 'positiveInteger') {
|
||||
return t('taskV4.fieldValidation.positiveInteger', { field: fieldLabel })
|
||||
}
|
||||
return t('taskV4.fieldValidation.required', { field: fieldLabel })
|
||||
}
|
||||
|
||||
function localFieldLabel(
|
||||
card: ReservationV4TaskCardResult,
|
||||
field: ReservationV4TaskCardFieldResult,
|
||||
): string {
|
||||
const pointer = field.field_pointer || fieldPathToPointer(field.field_path)
|
||||
if (isTraceCard(card)) {
|
||||
if (pointer.endsWith('/text')) {
|
||||
return t('taskV4.trace.textLabel')
|
||||
}
|
||||
if (pointer.endsWith('/department_code')) {
|
||||
return t('taskV4.trace.department')
|
||||
}
|
||||
if (pointer.endsWith('/target_room_type_code')) {
|
||||
return t('taskV4.trace.targetRoomType')
|
||||
}
|
||||
if (pointer.endsWith('/extra_bed_room_count')) {
|
||||
return t('taskV4.trace.extraBedRoomCount')
|
||||
}
|
||||
}
|
||||
return field.display_name || reservationV4FieldKey(field)
|
||||
}
|
||||
|
||||
function formatApiError(error: unknown, fallback: string): {
|
||||
message: string
|
||||
details: unknown
|
||||
|
||||
Reference in New Issue
Block a user