refactor: преобразование организаций сотрудника в компании вынесено в shared/dictionary
employeeCompanies() нужен теперь не только подбору, но и заявке на рабочее место — одна реализация вместо копий в каждой форме. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -42,7 +42,7 @@ import {
|
||||
IAttachmentInfo
|
||||
} from '../../shared/attachments/attachments.service';
|
||||
import { effectiveUserEmail } from '../../shared/impersonation';
|
||||
import { getEmployeeOrganizations, ICompany, IEmployeeOrganization } from '../../shared/dictionary';
|
||||
import { getEmployeeOrganizations, employeeCompanies } from '../../shared/dictionary';
|
||||
import { friendlyErrorMessage } from '../../shared/diagnostics';
|
||||
import { IRequestFormProps } from '../../models/types';
|
||||
import {
|
||||
@@ -120,16 +120,11 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
|
||||
};
|
||||
}, [editId, editListId, notifyCode, setSubmitError]);
|
||||
|
||||
// Компании ответственного (Employee/ByEmail.company/companyId) → предзаполнение
|
||||
// «1.5 Организация» (Companies/CompanyPickerMulti). companyId из Employee/ByEmail
|
||||
// совпадает с Id из Dictionary/Companies (тот же источник) — доп. запрос не нужен.
|
||||
// Поле остаётся редактируемым: значения только ПРЕДЛАГАЮТСЯ, как и DepartmentName.
|
||||
const toCompanies = (records: IEmployeeOrganization[]): ICompany[] =>
|
||||
records.filter((r) => r.companyId && r.company).map((r) => ({ Id: r.companyId, Name: r.company }));
|
||||
|
||||
// Новая заявка — по умолчанию ответственный: сам подающий, подразделение и
|
||||
// организация — из Employee/ByEmail (Section/company), как в остальных формах
|
||||
// с авто-«Организацией» (см. shared/dictionary/employeeOrganizations.service.ts).
|
||||
// «1.5 Организация» остаётся редактируемой: значения только ПРЕДЛАГАЮТСЯ,
|
||||
// как и DepartmentName.
|
||||
useEffect(() => {
|
||||
if (editId) {
|
||||
return;
|
||||
@@ -143,7 +138,7 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
|
||||
setData((prev) => ({
|
||||
...prev,
|
||||
DepartmentName: prev.DepartmentName || records[0]?.section || prev.DepartmentName,
|
||||
Companies: prev.Companies.length > 0 ? prev.Companies : toCompanies(records)
|
||||
Companies: prev.Companies.length > 0 ? prev.Companies : employeeCompanies(records)
|
||||
}));
|
||||
}
|
||||
})
|
||||
@@ -166,7 +161,7 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
|
||||
setData((prev) => ({
|
||||
...prev,
|
||||
DepartmentName: records[0]?.section || prev.DepartmentName,
|
||||
Companies: toCompanies(records)
|
||||
Companies: employeeCompanies(records)
|
||||
}))
|
||||
)
|
||||
.catch(() => undefined);
|
||||
|
||||
Reference in New Issue
Block a user