feat: added app routing

This commit is contained in:
Тимур Городецкий
2026-08-03 17:58:24 +05:00
parent e6203e7093
commit dc60d2dbee
22 changed files with 460 additions and 61 deletions
+9 -5
View File
@@ -2,8 +2,12 @@
//
// Обычный режим (нет параметров) — подача заявок (features/submit).
// Режим согласующего — переход по ссылке из потока Power Automate:
// …/СтраницаПортала.aspx?mode=approve&type=<форма>&id=<RowID>
// где type = ключ формы в реестре (forms/registry), id = RowID заявки в её списке данных.
// …/СтраницаПортала.aspx?rpmode=approve&rptype=<форма>&rpid=<RowID>
// где rptype = ключ формы в реестре (forms/registry), rpid = RowID заявки в списке данных.
//
// Префикс rp (request-portal): имена id/mode/type зарезервированы SharePoint
// (напр. ?id= он трактует как навигацию к элементу → «Элемент не существует»),
// поэтому используем собственные, неконфликтные имена параметров.
export type PortalMode = 'submit' | 'approve';
@@ -18,9 +22,9 @@ export interface IRoute {
/** Разобрать строку запроса (по умолчанию — из адреса страницы) в маршрут. */
export function parseRoute(search: string = window.location.search): IRoute {
const params = new URLSearchParams(search);
const mode = params.get('mode');
const formKey = params.get('type') ?? undefined;
const idRaw = params.get('id');
const mode = params.get('rpmode');
const formKey = params.get('rptype') ?? undefined;
const idRaw = params.get('rpid');
const itemId = idRaw ? Number(idRaw) : undefined;
// Режим согласующего валиден только при полном наборе параметров.