Feature/vacation edo signing (#23)
Tests / frontend-test (push) Successful in 1m24s

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/23
This commit was merged in pull request #23.
This commit is contained in:
2026-10-05 08:53:18 +00:00
parent f8ab2a1d71
commit 637e51d7f9
85 changed files with 2152 additions and 171 deletions
@@ -17,10 +17,12 @@ import {
useRequestSubmit
} from '../../shared/ui';
import {
composeRemoveRowRule,
ApprovalMatrix,
ApprovalHistory,
StatusBadge,
useMatrixEditor,
canEditExecutors,
getPlannedMatrix,
notifyActiveStep,
useRequestTypeId,
@@ -327,7 +329,7 @@ const TmcTransferForm: React.FC<IRequestFormProps> = ({
const executors = useMatrixEditor(
loadExecutors,
`${userEmail}-${editId ?? 'new'}-${projectId}-${targetProjectId}`,
false,
canEditExecutors(context, readOnly),
executorsReady,
(login) => approval.getJobTitle(login)
);
@@ -512,6 +514,7 @@ const TmcTransferForm: React.FC<IRequestFormProps> = ({
<ApprovalMatrix
editor={matrix}
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
search={(q) => approval.searchUsers(q)}
waiting={!matrixReady}
waitingText="Укажите заявителя и проект-источник («Откуда»), чтобы построить маршрут согласования."
@@ -519,12 +522,14 @@ const TmcTransferForm: React.FC<IRequestFormProps> = ({
{/* Блок исполнителя показываем, только когда по маршруту реально есть
исполнители (грузится по проектам, см. executorsReady). */}
{executorsReady && !executors.loading && executors.rows.length > 0 && (
{executorsReady && !executors.loading && (executors.editable || executors.rows.length > 0) && (
<ApprovalMatrix
editor={executors}
search={(q) => approval.searchUsers(q)}
title="Исполнение (после согласования)"
roleLabel="Исполнитель"
canRemoveRow={executors.editable ? () => true : undefined}
pickerPlaceholder="Добавить исполнителя: начните вводить ФИО…"
emptyText="Исполнители не заданы по маршруту."
/>
)}