调整预订事项字段展示与基础信息编辑
This commit is contained in:
@@ -283,11 +283,12 @@ async function loadDetail(): Promise<void> {
|
||||
}
|
||||
|
||||
function applyDetail(result: ReservationV4OrderTaskDetailResult): void {
|
||||
detail.value = result
|
||||
const normalizedResult = normalizeReservationV4Detail(result)
|
||||
detail.value = normalizedResult
|
||||
const cards = [
|
||||
result.source_message_card,
|
||||
result.basic_information_card,
|
||||
...result.business_cards,
|
||||
normalizedResult.source_message_card,
|
||||
normalizedResult.basic_information_card,
|
||||
...normalizedResult.business_cards,
|
||||
].filter((card): card is ReservationV4TaskCardResult => Boolean(card))
|
||||
cardValues.value = cards.reduce<Record<string, ReservationRecord>>((values, card) => {
|
||||
values[card.card_id] = buildReservationV4InitialFieldValues(card.fields)
|
||||
@@ -298,13 +299,60 @@ function applyDetail(result: ReservationV4OrderTaskDetailResult): void {
|
||||
cardSuccessMessages.value = {}
|
||||
reviewForms.value = cards.reduce<Record<string, { confirmed_order_id: string; reason: string }>>((forms, card) => {
|
||||
forms[card.card_id] = {
|
||||
confirmed_order_id: result.order_task.order_id ?? '',
|
||||
confirmed_order_id: normalizedResult.order_task.order_id ?? '',
|
||||
reason: '',
|
||||
}
|
||||
return forms
|
||||
}, {})
|
||||
}
|
||||
|
||||
function normalizeReservationV4Detail(result: ReservationV4OrderTaskDetailResult): ReservationV4OrderTaskDetailResult {
|
||||
return {
|
||||
...result,
|
||||
basic_information_card: result.basic_information_card
|
||||
? normalizeBasicInformationCard(result.basic_information_card)
|
||||
: result.basic_information_card,
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeBasicInformationCard(card: ReservationV4TaskCardResult): ReservationV4TaskCardResult {
|
||||
return {
|
||||
...card,
|
||||
fields: card.fields.map((field) =>
|
||||
isEditableBasicMarketSourceField(field)
|
||||
? normalizeEditableBasicMarketSourceField(card, field)
|
||||
: field,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeEditableBasicMarketSourceField(
|
||||
card: ReservationV4TaskCardResult,
|
||||
field: ReservationV4TaskCardResult['fields'][number],
|
||||
): ReservationV4TaskCardResult['fields'][number] {
|
||||
const reviewMode = card.card_status === 'REVIEW_REQUIRED'
|
||||
return {
|
||||
...field,
|
||||
editable: true,
|
||||
raw_readonly: false,
|
||||
control_type: 'TEXT',
|
||||
edit_scope: reviewMode ? 'REVIEW' : 'CONFIRM',
|
||||
write_target: reviewMode ? 'REVIEW_RESOLUTION_FIELD_OVERRIDES' : 'CONFIRMED_PAYLOAD_JSON',
|
||||
control_hint: null,
|
||||
}
|
||||
}
|
||||
|
||||
function isEditableBasicMarketSourceField(field: ReservationV4TaskCardResult['fields'][number]): boolean {
|
||||
const key = normalizeV4FieldKey(field)
|
||||
return key === '/basic_information/market_code' || key === '/basic_information/source_code'
|
||||
}
|
||||
|
||||
function normalizeV4FieldKey(field: ReservationV4TaskCardResult['fields'][number]): string {
|
||||
return reservationV4FieldKey(field)
|
||||
.replace(/\./g, '/')
|
||||
.replace(/^([^/])/, '/$1')
|
||||
}
|
||||
|
||||
function setCardValues(card: ReservationV4TaskCardResult, values: ReservationRecord): void {
|
||||
cardValues.value = {
|
||||
...cardValues.value,
|
||||
|
||||
Reference in New Issue
Block a user