[AURORA-1970]: Справочники: состав ГСК/ГСЗ и реестр «ЮЛ вне ГК»

This commit is contained in:
Veronika Tsygankova 2026-11-05 14:35:58 +03:00
parent 967fa01fb6
commit 1a3fed537f
4 changed files with 20 additions and 6 deletions

View File

@ -45,6 +45,7 @@ export function CatalogueJur() {
{createFormOpen && ( {createFormOpen && (
<CatalogueJurForm <CatalogueJurForm
open={createFormOpen} open={createFormOpen}
outsideGroup={outside_group}
onCancel={() => { onCancel={() => {
setCreateFormOpen(false); setCreateFormOpen(false);
}} }}

View File

@ -29,6 +29,10 @@ const catalogueJurSlice = createSlice({
state.activeCompanyGroup = action.payload; state.activeCompanyGroup = action.payload;
state.relatedGroupFilter = null; state.relatedGroupFilter = null;
}, },
resetRows(state) {
state.raw_rows = [];
state.total_groups = 0;
},
}, },
extraReducers: (builder) => { extraReducers: (builder) => {
builder builder
@ -54,5 +58,5 @@ const catalogueJurSlice = createSlice({
}, },
}); });
export const { setIsGettingArchive, setRelatedGroupFilter, setActiveCompanyGroup } = catalogueJurSlice.actions; export const { setIsGettingArchive, setRelatedGroupFilter, setActiveCompanyGroup, resetRows } = catalogueJurSlice.actions;
export default catalogueJurSlice.reducer; export default catalogueJurSlice.reducer;

View File

@ -16,6 +16,7 @@ type Props = {
onCancel: () => void; onCancel: () => void;
onOk: (values: CatalogueJurFormProps) => void | Promise<void>; onOk: (values: CatalogueJurFormProps) => void | Promise<void>;
jurId?: string; jurId?: string;
outsideGroup?: boolean;
}; };
// Ошибки сервера, относящиеся к одному полю, показываем у этого поля // Ошибки сервера, относящиеся к одному полю, показываем у этого поля
@ -26,7 +27,7 @@ const FIELD_BY_ERROR_CODE: Record<string, keyof CatalogueJurFormProps> = {
CRM_ID_EXISTS: 'crm_id', CRM_ID_EXISTS: 'crm_id',
}; };
export const CatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, jurId }) => { export const CatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, jurId, outsideGroup = false }) => {
const [form] = Form.useForm<CatalogueJurFormProps>(); const [form] = Form.useForm<CatalogueJurFormProps>();
const notification = useNotificationApi(); const notification = useNotificationApi();
const [initialDataLoading, setInitialDataLoading] = useState(false); const [initialDataLoading, setInitialDataLoading] = useState(false);
@ -67,7 +68,9 @@ export const CatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, jurId
} finally { } finally {
setInitialDataLoading(false); setInitialDataLoading(false);
} }
} else { } else if (!outsideGroup) {
// Создание из карточки ГК: подставляем выбранную ГК. В «ЮЛ вне ГК» не подставляем —
// выбранная ГК остаётся в сторе после ухода со страницы «ГК и организации».
form.setFieldsValue({ form.setFieldsValue({
company_group_id: activeCompanyGroup?.id ?? undefined, company_group_id: activeCompanyGroup?.id ?? undefined,
}); });
@ -253,7 +256,7 @@ export const CatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, jurId
<Col span={12}> <Col span={12}>
<Form.Item name='company_group_id' label='ГК'> <Form.Item name='company_group_id' label='ГК'>
<Select <Select
disabled={!!jurId} disabled={!!jurId || outsideGroup}
allowClear allowClear
placeholder='— не указан —' placeholder='— не указан —'
options={companyGroupOptions} options={companyGroupOptions}

View File

@ -14,7 +14,7 @@ import { useNavigate } from 'react-router-dom';
import { ApiError } from '../../../api/client'; import { ApiError } from '../../../api/client';
import { ColumnSettings, DataTable, useFilteredRows, useTableFilters, useVisibleColumns } from '../../../components/GenericTable'; import { ColumnSettings, DataTable, useFilteredRows, useTableFilters, useVisibleColumns } from '../../../components/GenericTable';
import { editCatalogueJur, moveCatalogueJur, withdrawCatalogueJur } from '../../../services/api/directories/catalogue_jur'; import { editCatalogueJur, moveCatalogueJur, withdrawCatalogueJur } from '../../../services/api/directories/catalogue_jur';
import { setIsGettingArchive, setRelatedGroupFilter } from '../../../store/slices/catalogueJurSlice/catalogueJurSlice'; import { resetRows, setIsGettingArchive, setRelatedGroupFilter } from '../../../store/slices/catalogueJurSlice/catalogueJurSlice';
import { getCatalogueJurThunk } from '../../../store/slices/catalogueJurSlice/thunks'; import { getCatalogueJurThunk } from '../../../store/slices/catalogueJurSlice/thunks';
import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/thunks'; import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/thunks';
import { useAppDispatch, useAppSelector } from '../../../store/store'; import { useAppDispatch, useAppSelector } from '../../../store/store';
@ -136,6 +136,12 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur
} }
}, [isGettingArchive, activeCompanyGroup, outside_group]); }, [isGettingArchive, activeCompanyGroup, outside_group]);
useEffect(() => {
return () => {
dispatch(resetRows());
};
}, [dispatch]);
const extraColumns: ColumnsType<ICatalogueJur> = useMemo( const extraColumns: ColumnsType<ICatalogueJur> = useMemo(
() => [ () => [
{ {
@ -213,7 +219,7 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur
<Input <Input
allowClear allowClear
prefix={<SearchOutlined />} prefix={<SearchOutlined />}
placeholder='Поиск по ГК, CRM ID или РФ' placeholder='Поиск по ЮЛ или ИНН'
value={rawQuery} value={rawQuery}
onChange={(e) => setRawQuery(e.target.value)} onChange={(e) => setRawQuery(e.target.value)}
style={{ maxWidth: 320 }} style={{ maxWidth: 320 }}