feat: Ербол Шаймерденов правит все поля и вложения заявки на рабочее место

Полное право правки стало раздельным по формам: раньше общий список открыл
бы Ерболу и подбор с приёмом. В «Организации рабочего места» право действует,
пока он есть в маршруте (согласование или исполнение) и заявка «На
согласовании» или «Выполнение», независимо от того, чья сейчас очередь.
Правки пишутся в журнал (подсветка «Было: …»), перед «Согласовать»
проверяются обязательные поля. Блок вложений вынесен в общий компонент.

Нужна новая колонка WorkplaceApproverChangesJson в списке данных.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-10-07 12:08:25 +05:00
parent 2ade16ce1d
commit cfbca8c2b2
16 changed files with 301 additions and 106 deletions
@@ -0,0 +1,34 @@
import * as React from 'react';
import { Alert, AttachmentList, CollapseSection, FileDropzone, FormField } from '../ui';
import { IAttachmentEditor } from './useAttachmentEditor';
/** Единственная группа новых файлов (категорий нет — в отличие от заявки на приём). */
export const ATTACHMENTS_FILES_GROUP = 'files';
interface Props {
editor: IAttachmentEditor;
/** Согласующий с полным правом на своём шаге — может добавлять и удалять файлы. */
editable: boolean;
}
/**
* Блок «Вложения» в просмотре заявки без категорий файлов: список, а при
* полном праве правки (shared/approval/fullEditRights.ts) — удаление и загрузка.
*/
export const EditableAttachments: React.FC<Props> = ({ editor, editable }) => {
const newFiles = editor.pending[ATTACHMENTS_FILES_GROUP] || [];
return (
<CollapseSection title="Вложения" icon="upload">
{editor.error && <Alert variant="err">{editor.error}</Alert>}
<FormField label="Файлы" full>
<AttachmentList items={editor.items} onRemove={editable ? editor.remove : undefined} />
</FormField>
{editable && (
<FormField label="Добавить файлы" full>
<FileDropzone files={newFiles} onChange={(files) => editor.setPending(ATTACHMENTS_FILES_GROUP, files)} />
</FormField>
)}
</CollapseSection>
);
};