dev режим убран

This commit is contained in:
gorbenko.pavel
2026-08-14 14:51:48 +05:00
parent f2c36506ed
commit 7d5d51982b
15 changed files with 118 additions and 162 deletions
@@ -3,7 +3,7 @@ import styles from './ApprovalAdmin.module.scss';
import type { IApprovalAdminProps } from './IApprovalAdminProps';
import { AdminApp } from './app/AdminApp';
import { ApprovalRouteApi } from '../services/api';
import { AadApiHttpClient, DevApiHttpClient, IHttpClient } from '../services/httpClient';
import { AadApiHttpClient, IHttpClient } from '../services/httpClient';
import { PortalDictionaryClient } from '../services/portalDictionary';
import { SharePointListsClient } from '../services/sharePointLists';
import { RequestManageService } from '../services/requestManageService';
@@ -21,9 +21,6 @@ function ensureFontsLoaded(): void {
}
async function createHttpClient(props: IApprovalAdminProps): Promise<IHttpClient> {
if (props.useDevAuth) {
return new DevApiHttpClient(props.apiBaseUrl, props.devUserEmail || 'dev@tnsu.kz');
}
const aadClient = await props.context.aadHttpClientFactory.getClient(props.aadResourceId);
return new AadApiHttpClient(aadClient, props.apiBaseUrl);
}
@@ -50,11 +47,8 @@ const ApprovalAdmin: React.FC<IApprovalAdminProps> = props => {
return () => { cancelled = true; };
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [props.useDevAuth, props.apiBaseUrl, props.devUserEmail, props.aadResourceId]);
}, [props.apiBaseUrl, props.aadResourceId]);
// Справочники всегда идут через AAD, независимо от Dev-режима нашего API:
// api.tnsu.kz принимает только настоящий токен, заголовок X-Dev-User-Email
// ему ничего не говорит.
React.useEffect(() => {
let cancelled = false;
setDictionary(undefined);
@@ -3,8 +3,6 @@ import { WebPartContext } from '@microsoft/sp-webpart-base';
export interface IApprovalAdminProps {
context: WebPartContext;
apiBaseUrl: string;
useDevAuth: boolean;
devUserEmail: string;
aadResourceId: string;
portalBaseUrl: string;
}
@@ -223,7 +223,7 @@ export const RouteStepFormModal: React.FC<IRouteStepFormModalProps> = ({
// бэкенд ищет по компании инициатора). Найденные в других компаниях
// этому маршруту не подойдут — их надо не прятать, а объяснить, что они не в счёт.
const inRouteCompany = routeCompanyName
? positionMatches.exact.filter(e => e.company === routeCompanyName)
? positionMatches.exact.filter(e => e.companies.indexOf(routeCompanyName) !== -1)
: positionMatches.exact;
if (inRouteCompany.length > 0) {
@@ -235,12 +235,18 @@ export const RouteStepFormModal: React.FC<IRouteStepFormModalProps> = ({
: texts.routeSteps.positionPreviewFound(inRouteCompany.length)}
</span>
<ul className={styles.previewList}>
{inRouteCompany.map(e => (
<li key={e.email}>
<span className={styles.previewPerson}>{e.fio}</span>
{e.company && <span className={styles.previewCompany}> · {e.company}</span>}
</li>
))}
{inRouteCompany.map(e => {
// Показываем ИМЕННО ту компанию, по которой сотрудник совпал с
// маршрутом — она не обязана быть его company (первой из
// справочника), если он числится в нескольких (см. companies).
const shownCompany = routeCompanyName ?? e.company;
return (
<li key={e.email}>
<span className={styles.previewPerson}>{e.fio}</span>
{shownCompany && <span className={styles.previewCompany}> · {shownCompany}</span>}
</li>
);
})}
</ul>
</div>
);