From df33608f42e7dc920aef4f853e6a5160ec7fa998 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: Mon, 24 Aug 2026 15:47:57 +0500 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BF=D1=80=D0=BE=D1=87=D0=B8=D0=B5=20=D0=B2=D0=BB?= =?UTF-8?q?=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=B0=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D1=83=20=D0=B7=D0=B0=D1=8F=D0=B2=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BF=D1=80=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forms/RecruitingHire/README.md | 11 ++++++----- .../RecruitingHire/RecruitingHireForm.tsx | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/webparts/requestPortal/forms/RecruitingHire/README.md b/src/webparts/requestPortal/forms/RecruitingHire/README.md index ff657d4..b87e505 100644 --- a/src/webparts/requestPortal/forms/RecruitingHire/README.md +++ b/src/webparts/requestPortal/forms/RecruitingHire/README.md @@ -35,11 +35,12 @@ и в просмотре показывается ссылкой «№ код ↗», которая открывает `RecruitingSelectionView` в **новой вкладке** (deep-link через `routeUrl`, rptype=recruiting-selection, rpid/rplist из сохранённых полей). -- **Вложения по категориям** — две области: «Удостоверение» и «Резюме» (в каждую - можно несколько файлов). Вложения SP плоские, поэтому категория кодируется - префиксом в имени файла «<Категория> — <имя>» (`attachmentCategories.ts`); при - показе группируются и префикс срезается. Старые файлы без префикса показываются - блоком «Прочие вложения», чтобы не исчезали. +- **Вложения по категориям** — три зоны загрузки: «Удостоверение», «Резюме» и + «Прочие вложения» (в каждую можно несколько файлов). Вложения SP плоские, поэтому + категория кодируется префиксом в имени файла «<Категория> — <имя>» + (`attachmentCategories.ts`); при показе группируются и префикс срезается. + «Прочие» грузятся БЕЗ префикса — это та же «незакатегоризированная» корзина, куда + же попадают и старые файлы, загруженные до разделения (не исчезают). - Печать — общий механизм (без «Вложений»). ## Секции формы diff --git a/src/webparts/requestPortal/forms/RecruitingHire/RecruitingHireForm.tsx b/src/webparts/requestPortal/forms/RecruitingHire/RecruitingHireForm.tsx index ca3c0bf..113265f 100644 --- a/src/webparts/requestPortal/forms/RecruitingHire/RecruitingHireForm.tsx +++ b/src/webparts/requestPortal/forms/RecruitingHire/RecruitingHireForm.tsx @@ -70,9 +70,11 @@ const RecruitingHireForm: React.FC = ({ editListId }) => { const [data, setData] = useState(EMPTY_DATA); - // Вложения — две категории: удостоверение и резюме (см. attachmentCategories.ts). + // Вложения — три зоны: удостоверение, резюме и прочие (см. attachmentCategories.ts). + // «Прочие» грузятся без префикса — это та же «незакатегоризированная» корзина. const [idFiles, setIdFiles] = useState([]); const [resumeFiles, setResumeFiles] = useState([]); + const [otherFiles, setOtherFiles] = useState([]); const [existingAttachments, setExistingAttachments] = useState([]); // При открытии на редактирование (editId) — сразу известен, иначе появится // после первого сохранения. @@ -221,15 +223,17 @@ const RecruitingHireForm: React.FC = ({ if (code) { setRequestCode(code); } - // Категорию кодируем префиксом в имени файла (SP-вложения плоские). + // Категорию кодируем префиксом в имени файла (SP-вложения плоские); прочие — без префикса. const filesToUpload = [ ...prefixFiles(idFiles, ATT_CATEGORY_ID), - ...prefixFiles(resumeFiles, ATT_CATEGORY_RESUME) + ...prefixFiles(resumeFiles, ATT_CATEGORY_RESUME), + ...otherFiles ]; if (filesToUpload.length > 0) { await uploadAttachments(writeListId || dataListTitle(FORM_ID), id, filesToUpload); // файлы — после создания элемента setIdFiles([]); // выгруженные файлы убираем, чтобы пересохранение не дублировало setResumeFiles([]); + setOtherFiles([]); setExistingAttachments(await getAttachments(writeListId || dataListTitle(FORM_ID), id)); // показать добавленные } if (onSaved) { @@ -340,11 +344,12 @@ const RecruitingHireForm: React.FC = ({ )} - {otherAttachments.length > 0 && ( - + + {otherAttachments.length > 0 && ( - - )} + )} + + )}