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="Да" /> - -