diff --git a/src/components/orders/OrderDetailPanel.jsx b/src/components/orders/OrderDetailPanel.jsx index 53c1fa5..8caa321 100644 --- a/src/components/orders/OrderDetailPanel.jsx +++ b/src/components/orders/OrderDetailPanel.jsx @@ -38,6 +38,33 @@ const renderList = (values) => { const renderValue = (value) => value || "Нет данных"; +const parseOrderList = (order) => { + if (!order) return []; + + if (order.order_list_structured) { + try { + const parsed = JSON.parse(order.order_list_structured); + if (parsed && Array.isArray(parsed.orders)) { + return parsed.orders; + } + } catch { + /* ignore */ + } + } + + if (order.order_list) { + try { + const parsed = JSON.parse(order.order_list); + if (Array.isArray(parsed)) { + return parsed; + } + } catch { + /* ignore */ + } + } + + return []; +}; const getErrorMessage = (error, fallbackMessage) => { if (!error) { return fallbackMessage; @@ -331,19 +358,19 @@ export const OrderDetailPanel = ({

Дата доставки

-

{formatDeliveryDateDisplay(order.deliveryDate)}

+

{formatDeliveryDateDisplay(order.deliveryDate)}

Время доставки

-

{renderValue(order.deliveryTime || order.deliveryHalfDay)}

+

{renderValue(order.deliveryTime || order.deliveryHalfDay)}

Водитель

-

{order.assignedDriverId ? renderValue(order.assignedDriverName) : "Не назначен"}

+

{order.assignedDriverId ? renderValue(order.assignedDriverName) : "Не назначен"}

@@ -351,7 +378,7 @@ export const OrderDetailPanel = ({

{renderValue(order.customerPhone)} @@ -360,42 +387,42 @@ export const OrderDetailPanel = ({

Адрес доставки

-

{renderValue(order.deliveryAddress)}

+

{renderValue(order.deliveryAddress)}

Номер счёта

-

{renderValue(order.orderNumberSummary)}

+

{renderValue(order.orderNumberSummary)}

Клиент

-

{renderValue(order.customerName)}

+

{renderValue(order.customerName)}

Дата счёта

-

{renderValue(order.customerDate)}

+

{renderValue(order.customerDate)}

Всего заказов

-

{order.ordersCount ?? 0}

+

{order.ordersCount ?? 0}

Готово

-

{order.readyCount ?? 0}

+

{order.readyCount ?? 0}

Не готово

-

{order.notReadyCount ?? 0}

+

{order.notReadyCount ?? 0}

Обновлена

-

{formatDateTime(order.updatedAt)}

+

{formatDateTime(order.updatedAt)}

Статус доставки

-

{getOrderGroupDeliveryStatusLabel(order.deliveryStatus || order.delivery_status)}

+

{getOrderGroupDeliveryStatusLabel(order.deliveryStatus || order.delivery_status)}

@@ -491,7 +518,7 @@ export const OrderDetailPanel = ({

{isDeliveryAgreed ? ( -
+

@@ -511,7 +538,7 @@ export const OrderDetailPanel = ({ type="button" aria-label="Дата доставки" aria-expanded={isCalendarOpen} - className="flex min-h-[54px] w-full items-center justify-between rounded-2xl border border-[var(--color-border)] bg-[var(--color-surface)] px-4 text-left text-sm font-medium text-[var(--color-text)] transition hover:border-[var(--color-accent)] focus:border-[var(--color-accent)] focus:outline-none" + className="flex min-h-[54px] w-full items-center justify-between rounded-2xl border border-[var(--color-border)] bg-[var(--color-surface)] px-4 text-left text-sm font-medium !text-[var(--color-text)] transition hover:border-[var(--color-accent)] focus:border-[var(--color-accent)] focus:outline-none" onClick={() => setIsCalendarOpen((current) => !current)} > {formatDateForDisplay(deliveryDate)} @@ -536,7 +563,7 @@ export const OrderDetailPanel = ({ type="button" disabled={!canGoBack} aria-label="Предыдущий месяц" - className="flex h-9 w-9 items-center justify-center rounded-full border border-[var(--color-border)] text-sm text-[var(--color-text-muted)] transition hover:border-[var(--color-accent)] hover:text-[var(--color-text)] disabled:cursor-not-allowed disabled:opacity-40" + className="flex h-9 w-9 items-center justify-center rounded-full border border-[var(--color-border)] text-sm text-[var(--color-text-muted)] transition hover:border-[var(--color-accent)] hover:!text-[var(--color-text)] disabled:cursor-not-allowed disabled:opacity-40" onClick={() => setCurrentMonth((month) => addMonths(month, -1))} > ‹ @@ -544,7 +571,7 @@ export const OrderDetailPanel = ({