diff --git a/frontend/src/components/delivery/DeliveryForm.tsx b/frontend/src/components/delivery/DeliveryForm.tsx index 32c6b07..50db571 100644 --- a/frontend/src/components/delivery/DeliveryForm.tsx +++ b/frontend/src/components/delivery/DeliveryForm.tsx @@ -2,7 +2,6 @@ import { useState, useEffect, useCallback } from 'react'; import { Button, Input, Select, Modal } from '../ui'; import { pickupOptions } from '../../constants/pickup'; import { formatDateForInput, parseDateFromInput, getTodayFrontend } from '../../utils/date'; -import { parseAddress } from '../../utils/addressParser'; import type { Delivery, PickupLocation, DeliveryStatus } from '../../types'; interface DeliveryFormProps { @@ -17,6 +16,23 @@ interface DeliveryFormProps { // Phone validation regex for Kazakhstan numbers const PHONE_REGEX = /^\+7\s?\(?\d{3}\)?\s?\d{3}[\s-]?\d{2}[\s-]?\d{2}$/; +// City is not shown in UI but is included in the saved address (used for 2GIS search). +const CITY_LABEL = 'Кокшетау'; + +const buildAddressString = ( + street: string, + house: string, + apartment: string, + entrance: string, +): string => { + const parts: string[] = [CITY_LABEL]; + if (street) parts.push(`ул. ${street}`); + if (house) parts.push(`д. ${house}`); + if (apartment) parts.push(`кв. ${apartment}`); + if (entrance) parts.push(`подъезд ${entrance}`); + return parts.join(', '); +}; + export const DeliveryForm = ({ isOpen, onClose, onSubmit, initialData, defaultDate, isSubmitting }: DeliveryFormProps) => { const [formData, setFormData] = useState({ date: defaultDate || getTodayFrontend(), @@ -39,7 +55,6 @@ export const DeliveryForm = ({ isOpen, onClose, onSubmit, initialData, defaultDa status: 'new' as DeliveryStatus, }); const [showSecondPickup, setShowSecondPickup] = useState(false); - const [showAddressDetails, setShowAddressDetails] = useState(false); useEffect(() => { if (initialData) { @@ -76,13 +91,17 @@ export const DeliveryForm = ({ isOpen, onClose, onSubmit, initialData, defaultDa const isPhoneValid = !formData.phone || validatePhone(formData.phone); const isAdditionalPhoneValid = !formData.additionalPhone || validatePhone(formData.additionalPhone); - const isFormValid = formData.productName && formData.address && formData.phone && isPhoneValid && formData.customerName && formData.street && formData.house; + const isFormValid = formData.productName && formData.phone && isPhoneValid && formData.customerName && formData.street && formData.house; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!isFormValid) return; try { - await onSubmit(formData); + const payload = { + ...formData, + address: buildAddressString(formData.street, formData.house, formData.apartment, formData.entrance), + }; + await onSubmit(payload); if (!initialData) { setFormData({ date: defaultDate || getTodayFrontend(), @@ -105,7 +124,6 @@ export const DeliveryForm = ({ isOpen, onClose, onSubmit, initialData, defaultDa status: 'new', }); setShowSecondPickup(false); - setShowAddressDetails(false); } onClose(); } catch { @@ -159,44 +177,9 @@ export const DeliveryForm = ({ isOpen, onClose, onSubmit, initialData, defaultDa required /> - {/* Address with auto-parse */} -
- Улица, дом, квартира, подъезд, этаж -
-Проверьте распознанные данные:
+ {/* Address fields */} +Адрес доставки