From b1060433d0075e679e650843221de8a58c456c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=83=D1=80=20=D0=93=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=86=D0=BA=D0=B8=D0=B9?= Date: Fri, 30 Oct 2026 09:58:32 +0500 Subject: [PATCH] =?UTF-8?q?feat:=20=C2=AB=D0=9D=D0=B5=D0=BE=D0=B1=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE=D0=B5=20=D0=9F=D0=9E=C2=BB=20?= =?UTF-8?q?=D0=B2=20=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B5=D0=BC=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B5=20=E2=80=94=20=D0=BC=D1=83=D0=BB=D1=8C?= =?UTF-8?q?=D1=82=D0=B8=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Вместо свободного текста — выбор из общего списка ПО (как в подборе) со своим значением. В SP и в маршрут по-прежнему уходит текст через запятую в колонке Software: условия «Software содержит …» и старые заявки работают без изменений. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../forms/WorkplaceSetup/README.md | 4 +++ .../sections/EquipmentSection.tsx | 20 ++++++++++-- .../forms/WorkplaceSetup/softwareList.test.ts | 31 +++++++++++++++++++ .../forms/WorkplaceSetup/softwareList.ts | 25 +++++++++++++++ 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 src/webparts/requestPortal/forms/WorkplaceSetup/softwareList.test.ts create mode 100644 src/webparts/requestPortal/forms/WorkplaceSetup/softwareList.ts diff --git a/src/webparts/requestPortal/forms/WorkplaceSetup/README.md b/src/webparts/requestPortal/forms/WorkplaceSetup/README.md index 1c2223f..7866eb3 100644 --- a/src/webparts/requestPortal/forms/WorkplaceSetup/README.md +++ b/src/webparts/requestPortal/forms/WorkplaceSetup/README.md @@ -28,6 +28,10 @@ **первого** шага согласования и это текущий пользователь; сохраняются кнопкой «Сохранить» и автоматически при «Согласовать» (`updateReviewFields`, `DecisionPanel.onBeforeDecide`). Остальная форма при этом read-only. +- **Необходимое ПО** — мультивыбор из общего списка `shared/dictionary/software.ts` + (тот же, что в подборе) + своё значение. В SP и в маршрут — по-прежнему ТЕКСТОМ + в колонке `Software` через запятую (`softwareList.ts`): условия «Software содержит + AutoCAD» и старые заявки со свободным текстом работают как раньше. - **Мебель** — мультивыбор (`FURNITURE_OPTIONS`); при «Другое» появляется поле своего значения. В SP — `WorkplaceFurnitureJson` (JSON-массив) и `WorkplaceFurnitureOther`. Необязательная. Уходит в маршрут как diff --git a/src/webparts/requestPortal/forms/WorkplaceSetup/sections/EquipmentSection.tsx b/src/webparts/requestPortal/forms/WorkplaceSetup/sections/EquipmentSection.tsx index f312ee8..b717a83 100644 --- a/src/webparts/requestPortal/forms/WorkplaceSetup/sections/EquipmentSection.tsx +++ b/src/webparts/requestPortal/forms/WorkplaceSetup/sections/EquipmentSection.tsx @@ -1,6 +1,8 @@ import * as React from 'react'; -import { CollapseSection, FormField, TextArea, Toggle } from '../../../shared/ui'; +import { CollapseSection, FormField, FormModeProvider, MultiChoiceField, TextArea, Toggle } from '../../../shared/ui'; +import { SOFTWARE_OPTIONS } from '../../../shared/dictionary'; import { ISectionProps } from '../model'; +import { formatSoftware, parseSoftware } from '../softwareList'; interface IEquipmentSectionProps extends ISectionProps { /** Согласующий-руководитель на этапе согласования может править ПО и доступы, @@ -13,13 +15,25 @@ export const EquipmentSection: React.FC = ({ data, set, // берёт значение из FormMode (в форме подачи редактируемо, в просмотре — нет). const fieldReadOnly = approverEditable ? false : undefined; + const software = ( + set('Software', formatSoftware(items))} + options={SOFTWARE_OPTIONS} + allowOther + placeholder="Выберите программу или введите свою" + /> + ); + return ( set('NeedsEquipment', v)} onLabel="Да" /> - -