fix: черновик без маршрута планирует маршрут заново при открытии
У части черновиков не оказалось строк маршрута, и форма показывала пустую матрицу: отправить такую заявку было некому. Теперь при открытии черновика без строк маршрут планируется заново (loadRoutePhase), во всех формах; поданные заявки по-прежнему читают записанные строки. Почему строки пропали у первоначального случая — пока не выяснено. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -24,12 +24,13 @@ import {
|
||||
useMatrixEditor,
|
||||
canEditExecutors,
|
||||
getPlannedMatrix,
|
||||
loadRoutePhase,
|
||||
isOpenedRouteReady,
|
||||
notifyActiveStep,
|
||||
useRequestTypeId,
|
||||
REQUEST_STATUS,
|
||||
isEditableStatus,
|
||||
IApproverToWrite,
|
||||
APPROVAL_PHASE,
|
||||
unassignedStepMessage,
|
||||
resolveWriteListId
|
||||
} from '../../shared/approval';
|
||||
@@ -301,18 +302,18 @@ const TmcTransferForm: React.FC<IRequestFormProps> = ({
|
||||
// Маршрут согласования зависит от заявителя и проекта-источника («Откуда»):
|
||||
// пока не выбраны, resolve вернёт 404 — не грузим, показываем заглушку. У
|
||||
// открытой на редактирование заявки маршрут уже записан, ни то ни другое не нужно.
|
||||
const matrixReady = !!editId || (!!userEmail && !!projectId && !!requestTypeId);
|
||||
const openedReady = isOpenedRouteReady(editId, requestStatus, requestTypeId);
|
||||
const matrixReady = openedReady && (!!editId || (!!userEmail && !!projectId && !!requestTypeId));
|
||||
// Исполнитель определяется проектом-получателем («Куда»): показываем блок с
|
||||
// заглушкой, пока «Куда» не выбрано. Источник и заявитель тоже нужны, иначе resolve 404.
|
||||
const executorsReady = !!editId || (!!userEmail && !!projectId && !!targetProjectId && !!requestTypeId);
|
||||
const executorsReady =
|
||||
openedReady && (!!editId || (!!userEmail && !!projectId && !!targetProjectId && !!requestTypeId));
|
||||
const loadMatrix = useCallback(
|
||||
() =>
|
||||
editId
|
||||
? approval
|
||||
.getMatrixForRequest(editId)
|
||||
.then((rows) => rows.filter((r) => r.phase !== APPROVAL_PHASE.execution))
|
||||
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, undefined, projectId),
|
||||
[context, userEmail, approval, editId, projectId, requestTypeId]
|
||||
loadRoutePhase(approval, editId, requestStatus, 'Approval', () =>
|
||||
getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, undefined, projectId)
|
||||
),
|
||||
[context, userEmail, approval, editId, requestStatus, projectId, requestTypeId]
|
||||
);
|
||||
const matrix = useMatrixEditor(loadMatrix, `${userEmail}-${editId ?? 'new'}-${projectId}`, !readOnly, matrixReady, (login) =>
|
||||
approval.getJobTitle(login)
|
||||
@@ -321,12 +322,10 @@ const TmcTransferForm: React.FC<IRequestFormProps> = ({
|
||||
// Фаза исполнения: исполнители из маршрута (status='Execution'), только для чтения.
|
||||
const loadExecutors = useCallback(
|
||||
() =>
|
||||
editId
|
||||
? approval
|
||||
.getMatrixForRequest(editId)
|
||||
.then((rows) => rows.filter((r) => r.phase === APPROVAL_PHASE.execution))
|
||||
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Execution', null, undefined, projectId),
|
||||
[context, userEmail, approval, editId, projectId, requestTypeId]
|
||||
loadRoutePhase(approval, editId, requestStatus, 'Execution', () =>
|
||||
getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Execution', null, undefined, projectId)
|
||||
),
|
||||
[context, userEmail, approval, editId, requestStatus, projectId, requestTypeId]
|
||||
);
|
||||
const executors = useMatrixEditor(
|
||||
loadExecutors,
|
||||
|
||||
Reference in New Issue
Block a user