feat: added notifications workflow

This commit is contained in:
Тимур Городецкий
2026-08-07 10:35:28 +05:00
parent 40f9ac6c03
commit d2e137dfad
23 changed files with 490 additions and 56 deletions
@@ -16,15 +16,23 @@ export interface ISubmitFeatureProps {
activeCategoryId: string;
/** Открыть сразу форму с предзаполнением (производная заявка), минуя плитки. */
initialForm?: { formKey: string; sourceId: number };
/** Открыть сразу форму на РЕДАКТИРОВАНИЕ существующей заявки (черновик/возвращена). */
editForm?: { formKey: string; itemId: number };
}
// Фича «Подать заявку»: плитки → беспоук-форма (категории/вкладки — в RequestPortal).
// Владелец: автор портала. Живёт целиком в features/submit/**.
const SubmitFeature: React.FC<ISubmitFeatureProps> = ({ context, activeCategoryId, initialForm }) => {
// Если пришли по ссылке «создать на основе» — сразу открываем нужную форму.
const SubmitFeature: React.FC<ISubmitFeatureProps> = ({
context,
activeCategoryId,
initialForm,
editForm,
}) => {
// «Создать на основе» и «редактировать» оба сразу открывают нужную форму, минуя плитки.
const preOpen = initialForm ?? editForm;
const initialSelected = useMemo(
() => (initialForm ? REQUEST_TYPES.filter((r) => r.id === initialForm.formKey)[0] ?? null : null),
[initialForm]
() => (preOpen ? REQUEST_TYPES.filter((r) => r.id === preOpen.formKey)[0] ?? null : null),
[preOpen]
);
const [selectedRequest, setSelectedRequest] = useState<IRequestType | null>(initialSelected);
@@ -61,9 +69,10 @@ const SubmitFeature: React.FC<ISubmitFeatureProps> = ({ context, activeCategoryI
);
}
// sourceId — только для формы, открытой «на основе» исходной заявки.
// sourceId — «на основе» исходной заявки; editId — правка существующей.
const sourceId =
initialForm && request.id === initialForm.formKey ? initialForm.sourceId : undefined;
const editId = editForm && request.id === editForm.formKey ? editForm.itemId : undefined;
// Ленивый рендер формы: её код подтягивается только сейчас, при открытии.
return (
@@ -74,6 +83,7 @@ const SubmitFeature: React.FC<ISubmitFeatureProps> = ({ context, activeCategoryI
onCancel={handleBack}
onSaved={emitRequestsChanged}
sourceId={sourceId}
editId={editId}
/>
</React.Suspense>
);