feat: подразделения в подборе и приёме фильтруются по организации
Tests / frontend-test (push) Successful in 1m14s

This commit is contained in:
Тимур Городецкий
2026-09-25 15:24:33 +05:00
parent 06044bbce9
commit ebc74dc46d
4 changed files with 94 additions and 10 deletions
@@ -1,9 +1,16 @@
import * as React from "react";
import { CollapseSection, FormField, TextInput } from "../../../shared/ui";
import { PositionPicker } from "../../../shared/dictionary";
import { ISectionProps } from "../model";
import { DepartmentPicker, PositionPicker } from "../../../shared/dictionary";
import { IFormData, ISectionProps } from "../model";
import { HireDateField } from "./HireDateField";
// Отдел ищем в «Основном месте работы», если оно выбрано, иначе — во всех
// организациях заявки.
function departmentCompanyIds(data: IFormData): string[] {
if (data.MainCompanyId) return [data.MainCompanyId];
return data.Companies.map((c) => c.Id);
}
interface ICandidateSectionProps extends ISectionProps {
/** Начальник расчётной группы правит отдел/участок даже в режиме просмотра (см. approverRights.ts). */
payrollEditable?: boolean;
@@ -42,11 +49,15 @@ export const CandidateSection: React.FC<ICandidateSectionProps> = ({
/>
</FormField>
<FormField label="2.4 Отдел/Участок" htmlFor="Department">
<TextInput
{/* Выбор из справочника или свой текст — отдела может не быть в справочнике. */}
<DepartmentPicker
context={context}
id="Department"
value={data.Department}
onChange={(v) => set("Department", v)}
onChange={(name) => set("Department", name)}
companyIds={departmentCompanyIds(data)}
readOnly={payrollEditable ? false : undefined}
placeholder="Выберите из списка или введите вручную"
/>
</FormField>
<FormField label="2.5 Местоположение" htmlFor="SiteLocation">
@@ -15,6 +15,9 @@ export const DepartmentSection: React.FC<ISectionProps> = ({ data, set, context
id="Department"
context={context}
value={data.Department}
valueId={data.DepartmentId}
// Подразделения всех организаций из «1.5 Организация».
companyIds={data.Companies.map((c) => c.Id)}
onChange={(name, id) => {
set('Department', name);
set('DepartmentId', id);