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 && ( - - )} + )} + + )}