From 7d0a0e9a502ade9c6fbe043cf11a5f7c0485e64f Mon Sep 17 00:00:00 2001 From: viktot14-ai Date: Wed, 9 Sep 2026 22:31:34 +0300 Subject: [PATCH] =?UTF-8?q?UI:=20=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D0=B8=D0=BA=20=D0=BF=D0=BE=D0=B4=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B3=D1=80=D1=83?= =?UTF-8?q?=D0=BF=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=BE=D0=B9=20optgro?= =?UTF-8?q?up=20=E2=80=94=20=D0=A0=D0=A6=D0=A3=20=D0=A0=D0=A7=D0=A1=20/=20?= =?UTF-8?q?=D0=9E=D0=A3=D0=9C=D0=A7=D0=A1=20/=20=D0=93(=D0=A0)=D0=9E=D0=A7?= =?UTF-8?q?=D0=A1=20=D0=BF=D0=BE=20=D0=BE=D0=B1=D0=BB=D0=B0=D1=81=D1=82?= =?UTF-8?q?=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/UsersAdmin.jsx | 34 ++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/UsersAdmin.jsx b/frontend/src/pages/UsersAdmin.jsx index 0daba40..0a7bcf1 100644 --- a/frontend/src/pages/UsersAdmin.jsx +++ b/frontend/src/pages/UsersAdmin.jsx @@ -175,6 +175,24 @@ const UsersAdmin = () => { const unitName = (id) => units.find((u) => u.id === id)?.name || '—'; + // Иерархия для optgroup: РЦУ РЧС, 6 ОУМЧС, Г(Р)ОЧС сгруппированы по родителю + const unitsTree = (() => { + const rcu = units.filter((u) => u.kind === 'rcu'); + const obl = units.filter((u) => u.kind === 'oblast'); + const oblById = Object.fromEntries(obl.map((u) => [u.id, u])); + const children = {}; + obl.forEach((o) => { children[o.id] = []; }); + units.filter((u) => u.kind === 'gor_rayon').forEach((u) => { + if (u.parent_id && children[u.parent_id]) children[u.parent_id].push(u); + else (children._other ||= []).push(u); + }); + const groups = obl + .filter((o) => (children[o.id] || []).length) + .map((o) => ({ label: o.name, items: children[o.id] })); + if (children._other?.length) groups.push({ label: 'Прочие', items: children._other }); + return { rcu, obl, groups }; + })(); + const createUser = async () => { setCreating(true); setMessage(''); @@ -293,7 +311,21 @@ const UsersAdmin = () => {