fix: удалил эндпоинт Projects1C и перевел на актуальный Project
Tests / frontend-test (push) Successful in 1m9s
Tests / frontend-test (push) Successful in 1m9s
This commit is contained in:
@@ -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}
|
||||
|
||||
+5
-5
@@ -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="Начните вводить название или код проекта…"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user