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
@@ -12,7 +12,7 @@ type MatrixEditor = ReturnType<typeof useMatrixEditor>;
export interface IPhasedRoute {
/** Согласующие — редактируемы заявителем в новой заявке / черновике / доработке. */
approvers: MatrixEditor;
/** Исполнители по маршруту (фаза «Исполнение») — только чтение. */
/** Исполнители по маршруту (фаза «Исполнение») — только чтение, кроме редактора маршрута. */
executors: MatrixEditor;
}
@@ -26,6 +26,8 @@ interface IRouteSource {
requestTypeId: number | undefined;
/** Можно ли править согласующих. */
editable: boolean;
/** Можно ли править исполнителей (только редактору маршрута, см. canEditExecutors). */
executorsEditable?: boolean;
/** Меняется после решения согласующего — перечитать строки. */
reloadSeq?: number;
}
@@ -42,7 +44,7 @@ const byPhase =
* approval-route, форма его только получает.
*/
export function usePhasedRoute(source: IRouteSource): IPhasedRoute {
const { context, approval, requestId, employeeEmail, requestTypeId, editable, reloadSeq = 0 } = source;
const { context, approval, requestId, employeeEmail, requestTypeId, editable, executorsEditable = false, reloadSeq = 0 } = source;
const canLoad = !!requestId || (!!employeeEmail && !!requestTypeId);
const reloadKey = `${employeeEmail}-${requestId ?? 'new'}-${reloadSeq}`;
@@ -64,6 +66,6 @@ export function usePhasedRoute(source: IRouteSource): IPhasedRoute {
const jobTitle = (login: string): Promise<string> => approval.getJobTitle(login);
const approvers = useMatrixEditor(loadApprovers, reloadKey, editable, canLoad, jobTitle, resolveApproverOrgInfo(context));
const executors = useMatrixEditor(loadExecutors, reloadKey, false, canLoad, jobTitle, resolveApproverOrgInfo(context));
const executors = useMatrixEditor(loadExecutors, reloadKey, executorsEditable, canLoad, jobTitle, resolveApproverOrgInfo(context));
return { approvers, executors };
}