diff --git a/frontend/src/components/form/StepClaimConfirmation.tsx b/frontend/src/components/form/StepClaimConfirmation.tsx index b155b05..9b9fbd4 100644 --- a/frontend/src/components/form/StepClaimConfirmation.tsx +++ b/frontend/src/components/form/StepClaimConfirmation.tsx @@ -35,11 +35,42 @@ export default function StepClaimConfirmation({ console.log('📋 Извлечённые ID:', { claimId, unifiedId }); + // Преобразуем данные из propertyName в формат для формы + const applicant = claimPlanData?.propertyName?.applicant || {}; + const caseData = claimPlanData?.propertyName?.case || {}; + const contract = claimPlanData?.propertyName?.contract_or_service || {}; + const claimData = claimPlanData?.propertyName?.claim || {}; + const offenders = claimPlanData?.propertyName?.offenders || []; + const formData = { case: { - user: claimPlanData?.propertyName?.applicant || {}, - project: claimPlanData?.propertyName?.case || {}, - offenders: claimPlanData?.propertyName?.offenders || [], + user: { + firstname: applicant.first_name || null, + lastname: applicant.last_name || null, + secondname: applicant.middle_name || null, + birthday: applicant.birth_date_fmt || applicant.birth_date || null, + birthplace: applicant.birth_place || null, + inn: applicant.inn || null, + mailingstreet: applicant.address || null, + mobile: applicant.phone || null, + email: applicant.email || null, + }, + project: { + category: caseData.category || null, + subject: contract.subject || null, + agrdate: contract.agreement_date_fmt || contract.agreement_date || null, + agrprice: contract.amount_paid_fmt || contract.amount_paid || null, + reason: claimData.reason || caseData.category || null, + description: claimData.description || null, + }, + offenders: offenders.length > 0 ? [{ + accountname: offenders[0].name || offenders[0].accountname || null, + address: offenders[0].address || null, + inn: offenders[0].inn || null, + ogrn: offenders[0].ogrn || null, + phone: offenders[0].phone || null, + email: offenders[0].email || null, + }] : [], attachments: claimPlanData?.propertyName?.attachments_names || [], meta: { ...claimPlanData?.propertyName?.meta, @@ -66,72 +97,164 @@ export default function StepClaimConfirmation({ console.log('📋 Сформированные formData.meta:', formData.case.meta); - // Здесь нужно будет получить HTML форму от n8n или использовать готовый шаблон - // Пока используем заглушку - в реальности нужно будет вызывать n8n workflow для генерации HTML + // Генерируем HTML форму здесь, на нашей стороне const html = generateConfirmationFormHTML(formData); setHtmlContent(html); setLoading(false); }, [claimPlanData]); - // Функция генерации HTML формы (временная заглушка) - // В реальности это должен делать n8n workflow + // Функция генерации HTML формы подтверждения заявления const generateConfirmationFormHTML = (data: any): string => { + const user = data.case?.user || {}; + const project = data.case?.project || {}; + const offenders = data.case?.offenders || []; + const offender = offenders[0] || {}; + const meta = data.case?.meta || {}; + const attachments = data.case?.attachments || []; + // Экранируем данные для безопасной вставки в HTML const caseJson = JSON.stringify(data) .replace(//g, '\\u003e'); + // Вспомогательная функция для экранирования HTML + const esc = (str: any): string => { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + }; + return ` -Подтверждение данных +Подтверждение данных заявления

📋 Подтверждение данных заявления

+

Проверьте и при необходимости отредактируйте данные перед отправкой

-
+

Статус: Данные заявления получены

-

Claim ID: ${data.case?.meta?.claim_id || 'не указан'}

-

Unified ID: ${data.case?.meta?.unified_id || 'не указан'}

-
- -
- - +

Claim ID: ${esc(meta.claim_id || 'не указан')}

+

Unified ID: ${esc(meta.unified_id || 'не указан')}

+ +
+ +
+
Данные заявителя
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
Данные дела
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
Данные нарушителя
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + + ${attachments.length > 0 ? ` +
+
Прикрепленные документы
+
+ ${attachments.map(function(att, idx) { + return '
' + (idx + 1) + '. ' + esc(att) + '
'; + }).join('')} +
+
+ ` : ''} + +
+ + +
+
`; @@ -189,7 +477,13 @@ export default function StepClaimConfirmation({ console.log('📨 Message from iframe:', event.data); if (event.data.type === 'claim_confirmed') { + console.log('✅ Заявление подтверждено с данными:', event.data.data); message.success('Заявление подтверждено!'); + // Здесь можно сохранить отредактированные данные перед переходом дальше + if (event.data.data) { + // Данные формы можно передать дальше через updateFormData или сохранить + console.log('📋 Отредактированные данные формы:', event.data.data); + } onNext(); } else if (event.data.type === 'claim_cancelled') { message.info('Подтверждение отменено');