Заявление реферальная программа #13
@@ -29,11 +29,10 @@
|
||||
рекомендателя — кандидата в тенанте нет, резолвить условия по нему нечем.
|
||||
- **Автоподстановка при создании:** рекомендатель = текущий пользователь, его
|
||||
должность и подразделение — из профиля SharePoint (`SPS-JobTitle`/`SPS-Department`
|
||||
через `approval.getProfileFields`, как в «Обходном листе»), дата подачи =
|
||||
сегодня. При выборе другого рекомендателя должность и подразделение
|
||||
подтягиваются заново. **Подразделение — только для чтения** (в отличие от
|
||||
должности не редактируется вручную: не участвует в условиях маршрута, поэтому
|
||||
риска сломать согласование нет, и расхождение с профилем не нужно).
|
||||
через `approval.getProfileFields`), дата подачи = сегодня. При выборе другого
|
||||
рекомендателя должность и подразделение подтягиваются заново — оба поля
|
||||
остаются **редактируемыми** (фолбэк, если профиль не синхронизирован или
|
||||
подразделение указано не так, как нужно для этой рекомендации).
|
||||
«Подразделение / Объект» вакансии (`VacancyDepartment`) — отдельное поле,
|
||||
свободный текст: это подразделение, КУДА рекомендуют, а не рекомендателя.
|
||||
- **Условное поле:** «Откуда знаете» = «Другое» → появляется обязательное
|
||||
|
||||
@@ -127,14 +127,10 @@ const ReferralForm: React.FC<IRequestFormProps> = ({
|
||||
}, [editId]);
|
||||
|
||||
// Выбор другого рекомендателя подтягивает его должность и подразделение из
|
||||
// профиля. Подразделение поле только для чтения (см. ReferrerSection) — в
|
||||
// отличие от должности его нельзя поправить вручную, если профиль не
|
||||
// синхронизирован: колонка не участвует в условиях маршрута, риска сломать
|
||||
// согласование нет.
|
||||
// профиля — оба поля остаются редактируемыми (фолбэк, если профиль не
|
||||
// синхронизирован), поэтому не затираем то, что уже введено, пустым значением.
|
||||
const handleReferrerChange = (login: string): void => {
|
||||
// Подразделение — только для чтения, поэтому сбрасываем сразу (а не ждём
|
||||
// ответа профиля): иначе до резолва в поле виден отдел ПРЕЖНЕГО рекомендателя.
|
||||
setData((prev) => ({ ...prev, Referrer: login, ReferrerDepartment: '' }));
|
||||
setData((prev) => ({ ...prev, Referrer: login }));
|
||||
if (!login) {
|
||||
return;
|
||||
}
|
||||
@@ -144,7 +140,7 @@ const ReferralForm: React.FC<IRequestFormProps> = ({
|
||||
setData((prev) => ({
|
||||
...prev,
|
||||
ReferrerPosition: profile.jobTitle || prev.ReferrerPosition,
|
||||
ReferrerDepartment: profile.department
|
||||
ReferrerDepartment: profile.department || prev.ReferrerDepartment
|
||||
}))
|
||||
)
|
||||
.catch(() => undefined);
|
||||
|
||||
@@ -2,12 +2,6 @@ import * as React from 'react';
|
||||
import { CollapseSection, FormField, TextInput, PhoneInput, PeopleField } from '../../../shared/ui';
|
||||
import { ISectionProps, REFERRER_PLACEHOLDER } from '../model';
|
||||
|
||||
// Подразделение подтягивается автоматически при выборе рекомендателя (см.
|
||||
// ReferralForm.handleReferrerChange — SharePoint User Profile, SPS-Department) —
|
||||
// свободный ввод здесь намеренно убран, чтобы не расходиться с профилем (как в
|
||||
// «Обходном листе»).
|
||||
const NOOP = (): void => undefined;
|
||||
|
||||
/** Секция 1: кто рекомендует — дата подачи, сам рекомендатель и его контакты. */
|
||||
export const ReferrerSection: React.FC<ISectionProps> = ({ data, set, context, onReferrerChange }) => (
|
||||
<CollapseSection title="Рекомендатель" icon="people">
|
||||
@@ -33,8 +27,7 @@ export const ReferrerSection: React.FC<ISectionProps> = ({ data, set, context, o
|
||||
<TextInput
|
||||
id="ReferrerDepartment"
|
||||
value={data.ReferrerDepartment}
|
||||
onChange={NOOP}
|
||||
readOnly
|
||||
onChange={(v) => set('ReferrerDepartment', v)}
|
||||
placeholder="Подставится автоматически по выбранному сотруднику"
|
||||
/>
|
||||
</FormField>
|
||||
|
||||
Reference in New Issue
Block a user