куча доработок

This commit is contained in:
gorbenko.pavel
2026-08-10 16:07:58 +05:00
parent 4cfb9a545d
commit 71335b325e
10 changed files with 277 additions and 190 deletions
@@ -2,7 +2,7 @@ import * as React from 'react';
import styles from './RequestPortal.module.scss';
import type { IRequestPortalProps } from './IRequestPortalProps';
import { IconSprite } from '../shared/ui/Icon/IconSprite';
import { navigate, useRoute, NavSection, OwnTab } from '../shared/routing';
import { navigate, persistOwnSelection, useRoute, NavSection, OwnTab } from '../shared/routing';
import { onRequestsChanged, emitRequestsChanged } from '../shared/requestEvents';
import { confirmDiscardFormChanges, markFormClean, markFormDirty } from '../shared/unsavedChanges';
import { SideNav } from './SideNav/SideNav';
@@ -110,28 +110,27 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
// таблица на него подписана и перечитает данные фоном, не убирая с экрана
// текущие строки (см. RequestsTableView/SearchView).
if (nav === route.nav && route.mode === 'submit') emitRequestsChanged();
// Возврат в «Мои заявки» открывает ту же подвкладку и с тем же фильтром,
// что были в прошлый раз, — иначе уход в другой раздел и обратно сбрасывал
// бы выбор пользователя.
navigate(
nav === 'own'
? { mode: 'submit', nav, ownTab: route.ownTab, ownStatus: route.ownStatus }
: { mode: 'submit', nav }
);
// Подвкладку/фильтр «Моих заявок» здесь передавать не нужно: при переходе
// ИЗ другого раздела route.ownTab всё равно undefined (parseRoute заполняет
// его только когда nav==='own'), а при возврате на уже открытую «own» их
// подхватит storage-фолбэк в parseRoute — то же самое значение, которое
// пользователь выбирал последним (см. persistOwnSelection/gotoOwnTab).
navigate({ mode: 'submit', nav });
};
const gotoOwnTab = (ownTab: OwnTab): void =>
const gotoOwnTab = (ownTab: OwnTab): void => {
// Фильтр по статусу относится только к «Инициированным» — на других
// подвкладках отбор задаёт сама вкладка, поэтому фильтр туда не тащим.
navigate({
mode: 'submit',
nav: 'own',
ownTab,
ownStatus: ownTab === 'created' ? route.ownStatus : undefined,
});
const ownStatus = ownTab === 'created' ? route.ownStatus : undefined;
persistOwnSelection(ownTab, ownStatus);
navigate({ mode: 'submit', nav: 'own', ownTab, ownStatus });
};
const setOwnStatus = (ownStatus: string): void =>
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: ownStatus || undefined });
const setOwnStatus = (ownStatus: string): void => {
const normalized = ownStatus || undefined;
persistOwnSelection('created', normalized);
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: normalized });
};
// Клик по строке таблицы. СВОЯ заявка в незавершённом статусе (черновик,
// возвращённая, отклонённая) открывается на редактирование, всё остальное —
// на просмотр: чужую заявку править нельзя, а свою уже ушедшую по маршруту —