Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/9
This commit was merged in pull request #9.
This commit is contained in:
@@ -52,6 +52,15 @@ export interface IRoute {
|
||||
formKey?: string;
|
||||
/** Id заявки в списке данных — для 'approve' и 'edit'. */
|
||||
itemId?: number;
|
||||
/**
|
||||
* Серверный относительный url КОНКРЕТНОЙ партиции, где лежит заявка — для
|
||||
* 'approve' и 'edit'. Списки заявок нумерованные (см. shared/approval/
|
||||
* listPartitions.ts): без этого поля заявка всегда открывалась бы так, будто
|
||||
* лежит в ТЕКУЩЕЙ партиции, и архивная заявка читалась/сохранялась бы не в
|
||||
* тот список. Не задан — значит партиция неизвестна (старая ссылка без
|
||||
* параметра), и форма/просмотр откатываются на текущую партицию.
|
||||
*/
|
||||
listId?: string;
|
||||
/** Id исходной заявки для предзаполнения — для 'create' (напр. орг. места на основе прием). */
|
||||
sourceId?: number;
|
||||
/** Подвкладка «Моих заявок»; задана только при nav='own'. */
|
||||
@@ -263,6 +272,7 @@ 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 listId = params.get('rplist') ?? undefined;
|
||||
const sourceRaw = params.get('rpsource');
|
||||
const sourceId = sourceRaw ? Number(sourceRaw) : undefined;
|
||||
|
||||
@@ -288,11 +298,11 @@ export function parseRoute(search: string = window.location.search): IRoute {
|
||||
// страницей: закрыв панель, пользователь должен вернуться ровно в тот же
|
||||
// список и на то же место в нём.
|
||||
if (mode === 'approve' && formKey && itemId && !isNaN(itemId)) {
|
||||
return { mode: 'approve', nav, formKey, itemId, ownTab, ownStatus, page, query };
|
||||
return { mode: 'approve', nav, formKey, itemId, listId, ownTab, ownStatus, page, query };
|
||||
}
|
||||
// Редактирование собственной незавершённой заявки — та же панель, но с формой.
|
||||
if (mode === 'edit' && formKey && itemId && !isNaN(itemId)) {
|
||||
return { mode: 'edit', nav, formKey, itemId, ownTab, ownStatus, page, query };
|
||||
return { mode: 'edit', nav, formKey, itemId, listId, ownTab, ownStatus, page, query };
|
||||
}
|
||||
// Создание производной заявки с предзаполнением из исходной.
|
||||
if (formKey && sourceId && !isNaN(sourceId)) {
|
||||
@@ -308,6 +318,7 @@ function buildQuery(route: IRoute): string {
|
||||
params.delete('rpnav');
|
||||
params.delete('rptype');
|
||||
params.delete('rpid');
|
||||
params.delete('rplist');
|
||||
params.delete('rpsource');
|
||||
params.delete('rptab');
|
||||
params.delete('rpstatus');
|
||||
@@ -331,6 +342,9 @@ function buildQuery(route: IRoute): string {
|
||||
params.set('rpmode', route.mode);
|
||||
params.set('rptype', route.formKey);
|
||||
params.set('rpid', String(route.itemId));
|
||||
// Партиция неизвестна (архивная ссылка старого формата, до этого поля) —
|
||||
// ссылка всё равно валидна, форма/просмотр просто откатятся на текущую.
|
||||
if (route.listId) params.set('rplist', route.listId);
|
||||
} else if (route.mode === 'create' && route.formKey && route.sourceId) {
|
||||
params.set('rptype', route.formKey);
|
||||
params.set('rpsource', String(route.sourceId));
|
||||
|
||||
Reference in New Issue
Block a user