fix: удалил эндпоинт Projects1C и перевел на актуальный Project
Tests / frontend-test (push) Successful in 1m9s

This commit is contained in:
Тимур Городецкий
2026-08-24 16:33:36 +05:00
parent df33608f42
commit a146877327
7 changed files with 22 additions and 264 deletions
@@ -110,18 +110,25 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
// data/requests.ts) → числовой RequestTypeId, нужный approval-route API.
const requestTypeIdState = useRequestTypeId(context, requestType.id);
const requestTypeId = requestTypeIdState.id;
// Маршрут подбора зависит от проекта (ByProject): без projectId бэкенд отвечает
// resolve: 404. projectId = oid выбранного объекта/проекта (поле ObjectProject).
const projectId = data.ObjectProjectId || null;
// Новая заявка: матрицу резолвим только когда есть и тип, и проект — иначе
// 404 «маршрут не найден». При редактировании читаем уже записанные строки.
const matrixReady = !!editId || (!!projectId && !!requestTypeId);
const loadMatrix = useCallback(
() =>
editId
? approval.getMatrixForRequest(editId)
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval'),
[context, userEmail, approval, editId, requestTypeId]
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, undefined, projectId),
[context, userEmail, approval, editId, requestTypeId, projectId]
);
const matrix = useMatrixEditor(
loadMatrix,
`${userEmail}-${editId ?? 'new'}`,
// projectId в ключе → при смене проекта маршрут перезапрашивается.
`${userEmail}-${editId ?? 'new'}-${projectId}`,
!readOnly,
!!editId || !!requestTypeId,
matrixReady,
(login) => approval.getJobTitle(login)
);
@@ -278,7 +285,12 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
</CollapseSection>
)}
<ApprovalMatrix editor={matrix} search={(q) => approval.searchUsers(q)} />
<ApprovalMatrix
editor={matrix}
search={(q) => approval.searchUsers(q)}
waiting={!matrixReady}
waitingText="Выберите «Объект/Проект» (п. 1.6), чтобы построить маршрут согласования."
/>
<SubmitActions
submit={submit}
@@ -1,6 +1,6 @@
import * as React from 'react';
import { CollapseSection, FormField, TextInput, Select, PeopleField } from '../../../shared/ui';
import { CompanyPickerMulti, Project1CPicker } from '../../../shared/dictionary';
import { CompanyPickerMulti, ProjectPicker } from '../../../shared/dictionary';
import {
ISectionProps,
PERSON_PLACEHOLDER,
@@ -68,14 +68,14 @@ export const ApplicationSection: React.FC<ISectionProps> = ({ data, set, context
/>
</FormField>
<FormField label="1.6 Объект/Проект" htmlFor="ObjectProject" full>
<Project1CPicker
<ProjectPicker
context={context}
id="ObjectProject"
value={data.ObjectProject}
onChange={(name, id, code) => {
onChange={(name, id, project) => {
set('ObjectProject', name);
set('ObjectProjectId', id);
set('ObjectProjectCode', code);
set('ObjectProjectId', id); // oid из /Project — им же резолвится ByProject-маршрут
set('ObjectProjectCode', project ? project.code : '');
}}
placeholder="Начните вводить название или код проекта…"
/>