fix: добавил прочие вложения на форму заявки на прием
Tests / frontend-test (push) Successful in 1m12s
Tests / frontend-test (push) Successful in 1m12s
This commit is contained in:
@@ -35,11 +35,12 @@
|
||||
и в просмотре показывается ссылкой «№ код ↗», которая открывает
|
||||
`RecruitingSelectionView` в **новой вкладке** (deep-link через `routeUrl`,
|
||||
rptype=recruiting-selection, rpid/rplist из сохранённых полей).
|
||||
- **Вложения по категориям** — две области: «Удостоверение» и «Резюме» (в каждую
|
||||
можно несколько файлов). Вложения SP плоские, поэтому категория кодируется
|
||||
префиксом в имени файла «<Категория> — <имя>» (`attachmentCategories.ts`); при
|
||||
показе группируются и префикс срезается. Старые файлы без префикса показываются
|
||||
блоком «Прочие вложения», чтобы не исчезали.
|
||||
- **Вложения по категориям** — три зоны загрузки: «Удостоверение», «Резюме» и
|
||||
«Прочие вложения» (в каждую можно несколько файлов). Вложения SP плоские, поэтому
|
||||
категория кодируется префиксом в имени файла «<Категория> — <имя>»
|
||||
(`attachmentCategories.ts`); при показе группируются и префикс срезается.
|
||||
«Прочие» грузятся БЕЗ префикса — это та же «незакатегоризированная» корзина, куда
|
||||
же попадают и старые файлы, загруженные до разделения (не исчезают).
|
||||
- Печать — общий механизм (без «Вложений»).
|
||||
|
||||
## Секции формы
|
||||
|
||||
@@ -70,9 +70,11 @@ const RecruitingHireForm: React.FC<IRequestFormProps> = ({
|
||||
editListId
|
||||
}) => {
|
||||
const [data, setData] = useState<IFormData>(EMPTY_DATA);
|
||||
// Вложения — две категории: удостоверение и резюме (см. attachmentCategories.ts).
|
||||
// Вложения — три зоны: удостоверение, резюме и прочие (см. attachmentCategories.ts).
|
||||
// «Прочие» грузятся без префикса — это та же «незакатегоризированная» корзина.
|
||||
const [idFiles, setIdFiles] = useState<File[]>([]);
|
||||
const [resumeFiles, setResumeFiles] = useState<File[]>([]);
|
||||
const [otherFiles, setOtherFiles] = useState<File[]>([]);
|
||||
const [existingAttachments, setExistingAttachments] = useState<IAttachmentInfo[]>([]);
|
||||
// При открытии на редактирование (editId) — сразу известен, иначе появится
|
||||
// после первого сохранения.
|
||||
@@ -221,15 +223,17 @@ const RecruitingHireForm: React.FC<IRequestFormProps> = ({
|
||||
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<IRequestFormProps> = ({
|
||||
)}
|
||||
<FileDropzone files={resumeFiles} onChange={setResumeFiles} />
|
||||
</FormField>
|
||||
{otherAttachments.length > 0 && (
|
||||
<FormField label="Прочие вложения" full>
|
||||
<FormField label="Прочие вложения" full>
|
||||
{otherAttachments.length > 0 && (
|
||||
<AttachmentList items={otherAttachments} onRemove={handleRemoveAttachment} />
|
||||
</FormField>
|
||||
)}
|
||||
)}
|
||||
<FileDropzone files={otherFiles} onChange={setOtherFiles} />
|
||||
</FormField>
|
||||
</CollapseSection>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user