Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 428122d32a | |||
| a1c1b2afae |
@@ -9,11 +9,16 @@
|
|||||||
- Фазы: только согласование. Отдельной фазы исполнения нет — после того как
|
- Фазы: только согласование. Отдельной фазы исполнения нет — после того как
|
||||||
согласование пройдено (или если для вида работ оно не требуется), заявка сразу
|
согласование пройдено (или если для вида работ оно не требуется), заявка сразу
|
||||||
уходит не исполнителю из матрицы, а в Microsoft Planner (см. «Особое поведение»).
|
уходит не исполнителю из матрицы, а в Microsoft Planner (см. «Особое поведение»).
|
||||||
- Особенности: маршрут условный — набор шагов зависит от поля **«Виды работ»**
|
- Особенности: маршрут условный — набор шагов зависит от полей **«Виды работ»**
|
||||||
(`WorkType`), которое передаётся в `resolveRoute`/`getPlannedMatrix` через параметр
|
(`WorkType`) и **«Отдел»** (`Department`, свободный текст из профиля AAD, см.
|
||||||
`fieldValues: [{ fieldName: 'WorkType', value: data.WorkType }]` (см.
|
«Особое поведение»), которые передаются в `resolveRoute`/`getPlannedMatrix` через
|
||||||
`IResolveFieldValue` в `shared/approval/models/IApprovalRouteApi.ts`). Для части
|
параметр `fieldValues: [{ fieldName: 'WorkType', value: data.WorkType },
|
||||||
видов работ маршрут пуст — согласование не требуется вовсе.
|
{ fieldName: 'Department', value: data.Department }]` (см. `IResolveFieldValue` в
|
||||||
|
`shared/approval/models/IApprovalRouteApi.ts`). В админке маршрутов условие по
|
||||||
|
отделу настроено оператором «содержит» (напр. «Department содержит Бухгалтерия»),
|
||||||
|
поэтому важно фактическое значение поля, а не Id из справочника — отдельного
|
||||||
|
DepartmentId у этой формы нет. Для части видов работ маршрут пуст — согласование
|
||||||
|
не требуется вовсе.
|
||||||
- **Матрица нередактируема заявителем** (в отличие от WorkplaceSetup/RecruitingHire):
|
- **Матрица нередактируема заявителем** (в отличие от WorkplaceSetup/RecruitingHire):
|
||||||
раз маршрут однозначно определён видом работ, у заявителя нет ни UserPicker'а, ни
|
раз маршрут однозначно определён видом работ, у заявителя нет ни UserPicker'а, ни
|
||||||
кнопок добавить/удалить/переставить шаг — `useMatrixEditor` вызывается с
|
кнопок добавить/удалить/переставить шаг — `useMatrixEditor` вызывается с
|
||||||
|
|||||||
@@ -160,23 +160,24 @@ const Ticket1CForm: React.FC<IRequestFormProps> = ({
|
|||||||
const requestTypeIdState = useRequestTypeId(context, requestType.id);
|
const requestTypeIdState = useRequestTypeId(context, requestType.id);
|
||||||
const requestTypeId = requestTypeIdState.id;
|
const requestTypeId = requestTypeIdState.id;
|
||||||
|
|
||||||
// Маршрут полностью и однозначно определяется видом работ — настроен в админке
|
// Маршрут полностью и однозначно определяется видом работ и отделом — настроен
|
||||||
// маршрутов (условные шаги по WorkType, см. fieldValues), а не выбирается
|
// в админке маршрутов (условные шаги по WorkType и Department, см. fieldValues),
|
||||||
// заявителем. Поэтому матрица здесь ВСЕГДА нередактируема (editable=false) —
|
// а не выбирается заявителем. Поэтому матрица здесь ВСЕГДА нередактируема
|
||||||
// заявитель только видит, кто согласует, без возможности добавить/убрать/
|
// (editable=false) — заявитель только видит, кто согласует, без возможности
|
||||||
// переставить согласующего.
|
// добавить/убрать/переставить согласующего.
|
||||||
const loadMatrix = useCallback(
|
const loadMatrix = useCallback(
|
||||||
() =>
|
() =>
|
||||||
editId
|
editId
|
||||||
? approval.getMatrixForRequest(editId)
|
? approval.getMatrixForRequest(editId)
|
||||||
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, [
|
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, [
|
||||||
{ fieldName: 'WorkType', value: data.WorkType }
|
{ fieldName: 'WorkType', value: data.WorkType },
|
||||||
|
{ fieldName: 'Department', value: data.Department }
|
||||||
]),
|
]),
|
||||||
[context, userEmail, approval, editId, data.WorkType, requestTypeId]
|
[context, userEmail, approval, editId, data.WorkType, data.Department, requestTypeId]
|
||||||
);
|
);
|
||||||
const matrix = useMatrixEditor(
|
const matrix = useMatrixEditor(
|
||||||
loadMatrix,
|
loadMatrix,
|
||||||
`${userEmail}-${editId ?? 'new'}-${data.WorkType}`,
|
`${userEmail}-${editId ?? 'new'}-${data.WorkType}-${data.Department}`,
|
||||||
false,
|
false,
|
||||||
!!editId || (!!data.WorkType && !!requestTypeId),
|
!!editId || (!!data.WorkType && !!requestTypeId),
|
||||||
(login) => approval.getJobTitle(login)
|
(login) => approval.getJobTitle(login)
|
||||||
|
|||||||
Reference in New Issue
Block a user