diff --git a/src/components/orders/OrderDetailPanel.jsx b/src/components/orders/OrderDetailPanel.jsx index 9e8eb6d..c06fd12 100644 --- a/src/components/orders/OrderDetailPanel.jsx +++ b/src/components/orders/OrderDetailPanel.jsx @@ -689,11 +689,21 @@ export const OrderDetailPanel = ({ // ---- Drag-and-drop block reordering state ---- const isLogisticsRole = ["manager", "logistician", "admin", "mega_admin"].includes(userRole); const [blockOrder, setBlockOrder] = React.useState(() => { + let saved = null; try { - const saved = JSON.parse(localStorage.getItem(ORDER_STORAGE_KEY) || "[]"); - if (Array.isArray(saved) && saved.length > 0) return saved; + const parsed = JSON.parse(localStorage.getItem(ORDER_STORAGE_KEY) || "[]"); + if (Array.isArray(parsed) && parsed.length > 0) saved = parsed; } catch {} - return DEFAULT_BLOCK_ORDER; + if (!saved) return DEFAULT_BLOCK_ORDER; + // Мердж с дефолтом: новые блоки (например, autocall_status) добавляются, + // устаревшие ключи удаляются — иначе сохранённый порядок навсегда скрывает новые блоки. + const merged = [ + // сначала сохранённые ключи, которые ещё актуальны + ...saved.filter((k) => DEFAULT_BLOCK_ORDER.includes(k)), + // затем новые блоки, которых нет в сохранённом — вставляем рядом со «Статус SMS» + ...DEFAULT_BLOCK_ORDER.filter((k) => !saved.includes(k)), + ]; + return merged; }); const [activeTab, setActiveTab] = React.useState(() => { try {