feat: implemented workpalcesetup form

This commit is contained in:
Тимур Городецкий
2026-08-04 11:08:16 +05:00
parent dc60d2dbee
commit c2e785961b
28 changed files with 650 additions and 85 deletions
+12 -4
View File
@@ -9,14 +9,16 @@
// (напр. ?id= он трактует как навигацию к элементу → «Элемент не существует»),
// поэтому используем собственные, неконфликтные имена параметров.
export type PortalMode = 'submit' | 'approve';
export type PortalMode = 'submit' | 'approve' | 'create';
export interface IRoute {
mode: PortalMode;
/** Ключ формы (тип заявки) — только для mode='approve'. */
/** Ключ формы (тип заявки) — для 'approve' и 'create'. */
formKey?: string;
/** Id заявки в списке данных — только для mode='approve'. */
/** Id заявки в списке данных — для 'approve'. */
itemId?: number;
/** Id исходной заявки для предзаполнения — для 'create' (напр. орг. места на основе прием). */
sourceId?: number;
}
/** Разобрать строку запроса (по умолчанию — из адреса страницы) в маршрут. */
@@ -26,10 +28,16 @@ export function parseRoute(search: string = window.location.search): IRoute {
const formKey = params.get('rptype') ?? undefined;
const idRaw = params.get('rpid');
const itemId = idRaw ? Number(idRaw) : undefined;
const sourceRaw = params.get('rpsource');
const sourceId = sourceRaw ? Number(sourceRaw) : undefined;
// Режим согласующего валиден только при полном наборе параметров.
// Режим согласующего — при полном наборе параметров.
if (mode === 'approve' && formKey && itemId && !isNaN(itemId)) {
return { mode: 'approve', formKey, itemId };
}
// Создание производной заявки с предзаполнением из исходной.
if (formKey && sourceId && !isNaN(sourceId)) {
return { mode: 'create', formKey, sourceId };
}
return { mode: 'submit' };
}