fix: организация в заявке на рабочее место больше не предзаполняется
Подставлялась организация инициатора, а не нового сотрудника — её приходилось исправлять. Теперь поле пустое и выбирается вручную, обязательность сохранена. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -43,7 +43,6 @@ import {
|
|||||||
IAttachmentInfo
|
IAttachmentInfo
|
||||||
} from '../../shared/attachments/attachments.service';
|
} from '../../shared/attachments/attachments.service';
|
||||||
import { effectiveUserEmail } from '../../shared/impersonation';
|
import { effectiveUserEmail } from '../../shared/impersonation';
|
||||||
import { getEmployeeOrganizations, employeeCompanies } from '../../shared/dictionary';
|
|
||||||
import { friendlyErrorMessage } from '../../shared/diagnostics';
|
import { friendlyErrorMessage } from '../../shared/diagnostics';
|
||||||
import { IRequestFormProps } from '../../models/types';
|
import { IRequestFormProps } from '../../models/types';
|
||||||
import {
|
import {
|
||||||
@@ -141,8 +140,7 @@ const WorkplaceSetupForm: React.FC<IRequestFormProps> = ({
|
|||||||
loadHirePrefill(sourceId)
|
loadHirePrefill(sourceId)
|
||||||
.then((prefilled) => {
|
.then((prefilled) => {
|
||||||
if (alive) {
|
if (alive) {
|
||||||
// Merge, а не replace: организация заявителя (ниже) резолвится отдельным
|
// Merge, а не replace: пользователь мог успеть что-то ввести до ответа.
|
||||||
// эффектом и могла успеть записаться раньше — не затираем её.
|
|
||||||
setData((prev) => ({ ...prev, ...prefilled }));
|
setData((prev) => ({ ...prev, ...prefilled }));
|
||||||
setSourceHire((prev) => (prev ? { ...prev, candidateName: prefilled.FullName } : prev));
|
setSourceHire((prev) => (prev ? { ...prev, candidateName: prefilled.FullName } : prev));
|
||||||
}
|
}
|
||||||
@@ -163,33 +161,6 @@ const WorkplaceSetupForm: React.FC<IRequestFormProps> = ({
|
|||||||
const approval = useMemo(() => workplaceApprovalService(editListId), [editListId]);
|
const approval = useMemo(() => workplaceApprovalService(editListId), [editListId]);
|
||||||
const userEmail = effectiveUserEmail(context);
|
const userEmail = effectiveUserEmail(context);
|
||||||
|
|
||||||
// Организации заявителя (Employee/ByEmail) — форма не о самом заявителе, а о
|
|
||||||
// новом сотруднике (FullName — обычный текст, предзаполняется из «Заявки на
|
|
||||||
// прием», и его чаще всего ещё нет в системе кадров), поэтому организация
|
|
||||||
// тянется по ТЕКУЩЕМУ пользователю. Это только предложение: поле дальше
|
|
||||||
// редактируется вручную. На редактировании уже сохранённое значение не перезатираем.
|
|
||||||
useEffect(() => {
|
|
||||||
if (editId || !userEmail) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let alive = true;
|
|
||||||
getEmployeeOrganizations(context, userEmail)
|
|
||||||
.then((records) => {
|
|
||||||
if (alive) {
|
|
||||||
setData((prev) => ({
|
|
||||||
...prev,
|
|
||||||
Companies: prev.Companies.length > 0 ? prev.Companies : employeeCompanies(records)
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => undefined);
|
|
||||||
return () => {
|
|
||||||
alive = false;
|
|
||||||
};
|
|
||||||
// context — единственный экземпляр WebPartContext на всё время жизни
|
|
||||||
// веб-части, так что перезапуска эффекта эта зависимость не добавляет.
|
|
||||||
}, [editId, userEmail, context]);
|
|
||||||
|
|
||||||
// pageUrl формы (requestType.id совпадает с ним по конвенции портала, см.
|
// pageUrl формы (requestType.id совпадает с ним по конвенции портала, см.
|
||||||
// data/requests.ts) → числовой RequestTypeId, нужный approval-route API.
|
// data/requests.ts) → числовой RequestTypeId, нужный approval-route API.
|
||||||
const requestTypeIdState = useRequestTypeId(context, requestType.id);
|
const requestTypeIdState = useRequestTypeId(context, requestType.id);
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ export interface IFormData {
|
|||||||
StartDate: string;
|
StartDate: string;
|
||||||
/**
|
/**
|
||||||
* Организации заявителя — мультивыбор из справочника (CompanyPickerMulti).
|
* Организации заявителя — мультивыбор из справочника (CompanyPickerMulti).
|
||||||
* Предзаполняется из Employee/ByEmail по e-mail заявителя (не нового
|
* Не предзаполняется (решение Тимура 2026-10-07: организация инициатора
|
||||||
* сотрудника — его ещё нет в системе кадров), дальше редактируется вручную.
|
* подставлялась не та) — выбирается вручную.
|
||||||
* В SP хранится JSON-ом в колонке WorkplaceCompaniesJson (см. submit.ts).
|
* В SP хранится JSON-ом в колонке WorkplaceCompaniesJson (см. submit.ts).
|
||||||
*/
|
*/
|
||||||
Companies: ICompany[];
|
Companies: ICompany[];
|
||||||
|
|||||||
Reference in New Issue
Block a user