каркас вроде есть

This commit is contained in:
gorbenko.pavel
2026-07-29 12:30:40 +05:00
parent ad04d9bda4
commit 04f04133f2
114 changed files with 8347 additions and 5143 deletions
@@ -0,0 +1,54 @@
import * as React from 'react';
import styles from './AdminApp.module.scss';
import { TopNav } from './TopNav';
import { ScreenKey } from './types';
import { ApprovalRouteApi } from '../../services/api';
import { TemplateRoute } from '../../models';
import { DashboardScreen } from '../screens/DashboardScreen';
import { RequestTypesScreen } from '../screens/RequestTypesScreen';
import { RoutesScreen } from '../screens/RoutesScreen';
import { RouteStepsScreen } from '../screens/RouteStepsScreen';
import { ResolveScreen } from '../screens/ResolveScreen';
export interface IAdminAppProps {
api: ApprovalRouteApi;
currentUserEmail?: string;
}
export const AdminApp: React.FC<IAdminAppProps> = ({ api, currentUserEmail }) => {
const [screen, setScreen] = React.useState<ScreenKey>('dashboard');
const [selectedRoute, setSelectedRoute] = React.useState<TemplateRoute | undefined>();
const [selectedRequestTypeName, setSelectedRequestTypeName] = React.useState('');
const navigate = (key: ScreenKey): void => {
setScreen(key);
};
const openSteps = (route: TemplateRoute): void => {
setSelectedRoute(route);
api.requestTypes.get(route.requestTypeId)
.then(rt => setSelectedRequestTypeName(rt.name))
.catch(() => setSelectedRequestTypeName(`#${route.requestTypeId}`));
setScreen('routeSteps');
};
return (
<div className={styles.shell}>
<TopNav active={screen} onSelect={navigate} />
<div className={styles.content}>
{screen === 'dashboard' && <DashboardScreen api={api} onNavigate={navigate} />}
{screen === 'requestTypes' && <RequestTypesScreen api={api} />}
{screen === 'routes' && <RoutesScreen api={api} onOpenSteps={openSteps} />}
{screen === 'routeSteps' && selectedRoute && (
<RouteStepsScreen
api={api}
route={selectedRoute}
requestTypeName={selectedRequestTypeName}
onBack={() => setScreen('routes')}
/>
)}
{screen === 'resolve' && <ResolveScreen api={api} currentUserEmail={currentUserEmail} />}
</div>
</div>
);
};