fix: черновик без маршрута планирует маршрут заново при открытии

У части черновиков не оказалось строк маршрута, и форма показывала пустую
матрицу: отправить такую заявку было некому. Теперь при открытии
черновика без строк маршрут планируется заново (loadRoutePhase), во всех
формах; поданные заявки по-прежнему читают записанные строки. Почему
строки пропали у первоначального случая — пока не выяснено.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-10-09 12:18:15 +05:00
parent b64ec76998
commit bbef3062f4
18 changed files with 247 additions and 176 deletions
@@ -22,10 +22,11 @@ import {
StatusBadge,
useMatrixEditor,
useFormExecutors,
approvalPhaseRows,
executorsToWrite,
initialSubmitStatus,
getPlannedMatrix,
loadRoutePhase,
isOpenedRouteReady,
notifyActiveStep,
useRequestTypeId,
REQUEST_STATUS,
@@ -162,16 +163,16 @@ const UnpaidLeaveForm: React.FC<IRequestFormProps> = ({
// маршрут читается из уже записанных строк, чтобы не затереть правки инициатора.
const loadMatrix = useCallback(
() =>
editId
? approval.getMatrixForRequest(editId).then(approvalPhaseRows)
: getPlannedMatrix(context, requestTypeId as number, data.Employee, approval, 'Approval'),
[context, approval, editId, data.Employee, requestTypeId]
loadRoutePhase(approval, editId, requestStatus, 'Approval', () =>
getPlannedMatrix(context, requestTypeId as number, data.Employee, approval, 'Approval')
),
[context, approval, editId, requestStatus, data.Employee, requestTypeId]
);
const matrix = useMatrixEditor(
loadMatrix,
`${data.Employee}-${editId ?? 'new'}`,
!readOnly,
!!editId || (!!data.Employee && !!requestTypeId),
isOpenedRouteReady(editId, requestStatus, requestTypeId) && (!!editId || (!!data.Employee && !!requestTypeId)),
(login) => approval.getJobTitle(login)
);
@@ -182,7 +183,8 @@ const UnpaidLeaveForm: React.FC<IRequestFormProps> = ({
approval,
requestTypeId,
userEmail: data.Employee,
editId
editId,
requestStatus
});
// Проблемы полей (см. validation.ts) подсвечиваются под полями через FieldIssuesProvider.