fix: черновик без маршрута планирует маршрут заново при открытии
У части черновиков не оказалось строк маршрута, и форма показывала пустую матрицу: отправить такую заявку было некому. Теперь при открытии черновика без строк маршрут планируется заново (loadRoutePhase), во всех формах; поданные заявки по-прежнему читают записанные строки. Почему строки пропали у первоначального случая — пока не выяснено. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -22,6 +22,8 @@ import {
|
||||
StatusBadge,
|
||||
useMatrixEditor,
|
||||
getPlannedMatrix,
|
||||
loadRoutePhase,
|
||||
isOpenedRouteReady,
|
||||
resolveWriteListId,
|
||||
notifyActiveStep,
|
||||
useRequestTypeId,
|
||||
@@ -29,7 +31,6 @@ import {
|
||||
isEditableStatus,
|
||||
IApproverToWrite,
|
||||
unassignedStepMessage,
|
||||
APPROVAL_PHASE,
|
||||
executorsToWrite
|
||||
} from '../../shared/approval';
|
||||
import {
|
||||
@@ -181,15 +182,14 @@ const Ticket1CForm: React.FC<IRequestFormProps> = ({
|
||||
[data.WorkType, data.Department]
|
||||
);
|
||||
const matrixKey = `${userEmail}-${editId ?? 'new'}-${data.WorkType}-${data.Department}`;
|
||||
const matrixReady = !!editId || (!!data.WorkType && !!requestTypeId);
|
||||
const matrixReady =
|
||||
isOpenedRouteReady(editId, requestStatus, requestTypeId) && (!!editId || (!!data.WorkType && !!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, fieldValues),
|
||||
[context, userEmail, approval, editId, fieldValues, requestTypeId]
|
||||
loadRoutePhase(approval, editId, requestStatus, 'Approval', () =>
|
||||
getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, fieldValues)
|
||||
),
|
||||
[context, userEmail, approval, editId, requestStatus, fieldValues, requestTypeId]
|
||||
);
|
||||
const matrix = useMatrixEditor(loadMatrix, matrixKey, false, matrixReady, (login) => approval.getJobTitle(login));
|
||||
|
||||
@@ -197,12 +197,10 @@ const Ticket1CForm: React.FC<IRequestFormProps> = ({
|
||||
// в карточке Planner, в портале отмечает «Выполнено» (см. plannerHandoff.ts).
|
||||
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, fieldValues),
|
||||
[context, userEmail, approval, editId, fieldValues, requestTypeId]
|
||||
loadRoutePhase(approval, editId, requestStatus, 'Execution', () =>
|
||||
getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Execution', null, fieldValues)
|
||||
),
|
||||
[context, userEmail, approval, editId, requestStatus, fieldValues, requestTypeId]
|
||||
);
|
||||
const executors = useMatrixEditor(loadExecutors, matrixKey, false, matrixReady, (login) => approval.getJobTitle(login));
|
||||
// Должность нового «Руководителя» — approval-route её не знает (резолвил шаг
|
||||
|
||||
Reference in New Issue
Block a user