refactoring

This commit is contained in:
Grog 2026-10-28 12:14:40 +03:00
parent 0ccb515054
commit dcb92e197c
29 changed files with 126 additions and 114 deletions

View File

@ -21,16 +21,19 @@ import type { CatalogueJurFormProps } from '../types/catalogueJur/catalogueJur';
import type { CompanyGroupFormProps } from '../types/companyGroups/companyGroups'; import type { CompanyGroupFormProps } from '../types/companyGroups/companyGroups';
import type { CreateEntityKind, RelatedGroupFormType } from '../types/relatedGroup/relatedGroup'; import type { CreateEntityKind, RelatedGroupFormType } from '../types/relatedGroup/relatedGroup';
import { useNotificationApi } from '../utils/useNotification'; import { useNotificationApi } from '../utils/useNotification';
import { ArchiveCompanyGroupModal } from '../widgets/ArchiveCompanyGroupModal/ArchiveCompanyGroupModal'; import { ArchiveCompanyGroupModal } from '../widgets/CatalogueCompanyGroup/ArchiveCompanyGroupModal/ArchiveCompanyGroupModal';
import { CataloguGroupTabs, type CatalogueGroupTabKey } from '../widgets/CataloguGroupTabs/CataloguGroupTabs'; import { CompanyGroupHeader } from '../widgets/CatalogueCompanyGroup/CatalogueCompanyGroupHeader/CatalogueCompanyGroupHeader';
import { CompanyGroupHeader } from '../widgets/CatalogueGroupHeader/CatalogueGroupHeader'; import {
import { CatalogueJurForm } from '../widgets/CatalogueJurForm/CatalogueJurForm'; type CatalogueCompanyGroupTabKey,
import { CatalogueJurTable } from '../widgets/CatalogueJurTable/CatalogueJurTable'; CatalogueCompanyGroupTabs,
import { CompanyGroupForm } from '../widgets/CompanyGroupForm/CompanyGroupForm'; } from '../widgets/CatalogueCompanyGroup/CatalogueCompanyGroupTabs/CatalogueCompanyGroupTabs';
import { CompanyGroupsList } from '../widgets/CompanyGroupsList/CompanyGroupsList'; import { CompanyGroupForm } from '../widgets/CatalogueCompanyGroup/CompanyGroupForm/CompanyGroupForm';
import { CompanyGroupsList } from '../widgets/CatalogueCompanyGroup/CompanyGroupsList/CompanyGroupsList';
import { CatalogueJurForm } from '../widgets/CatalogueJur/CatalogueJurForm/CatalogueJurForm';
import { CatalogueJurTable } from '../widgets/CatalogueJur/CatalogueJurTable/CatalogueJurTable';
import { CreateEntityPickerModal } from '../widgets/CreateEntityPickerModal/CreateEntityPickerModal'; import { CreateEntityPickerModal } from '../widgets/CreateEntityPickerModal/CreateEntityPickerModal';
import { RelatedGroupForm } from '../widgets/RelatedGroupForm/RelatedGroupForm'; import { RelatedGroupForm } from '../widgets/RelatedGroup/RelatedGroupForm/RelatedGroupForm';
import { RelatedGroupTable } from '../widgets/RelatedGroupTable/RelatedGroupTable'; import { RelatedGroupTable } from '../widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable';
export function CatalogueGroup() { export function CatalogueGroup() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();
@ -44,7 +47,7 @@ export function CatalogueGroup() {
const [companyGroupEditFormOpen, setCompanyGroupEditFormOpen] = useState(false); const [companyGroupEditFormOpen, setCompanyGroupEditFormOpen] = useState(false);
const [companyGroupDeleteOpen, setCompanyGroupDeleteOpen] = useState(false); const [companyGroupDeleteOpen, setCompanyGroupDeleteOpen] = useState(false);
const [companyGroupDeleteLoading, setCompanyGroupDeleteLoading] = useState(false); const [companyGroupDeleteLoading, setCompanyGroupDeleteLoading] = useState(false);
const [activeTab, setActiveTab] = useState<CatalogueGroupTabKey>('legal_entities'); const [activeTab, setActiveTab] = useState<CatalogueCompanyGroupTabKey>('legal_entities');
const [gskData, setGskData] = useState<RelatedGroupOut[]>([]); const [gskData, setGskData] = useState<RelatedGroupOut[]>([]);
const [gszData, setGszData] = useState<RelatedGroupOut[]>([]); const [gszData, setGszData] = useState<RelatedGroupOut[]>([]);
const activeCompanyGroup = useAppSelector((state) => state.catalogue_jur.activeCompanyGroup); const activeCompanyGroup = useAppSelector((state) => state.catalogue_jur.activeCompanyGroup);
@ -186,7 +189,12 @@ export function CatalogueGroup() {
<CatalogueJurTable <CatalogueJurTable
outside_group={false} outside_group={false}
tabsComponent={ tabsComponent={
<CataloguGroupTabs activeTab={activeTab} setActiveTab={(val) => setActiveTab(val)} gskData={gskData} gszData={gszData} /> <CatalogueCompanyGroupTabs
activeTab={activeTab}
setActiveTab={(val) => setActiveTab(val)}
gskData={gskData}
gszData={gszData}
/>
} }
/> />
)} )}
@ -196,7 +204,12 @@ export function CatalogueGroup() {
data={activeTab === 'gsz' ? gszData : gskData} data={activeTab === 'gsz' ? gszData : gskData}
getData={() => getRelatedGroupsHandler()} getData={() => getRelatedGroupsHandler()}
tabsComponent={ tabsComponent={
<CataloguGroupTabs activeTab={activeTab} setActiveTab={(val) => setActiveTab(val)} gskData={gskData} gszData={gszData} /> <CatalogueCompanyGroupTabs
activeTab={activeTab}
setActiveTab={(val) => setActiveTab(val)}
gskData={gskData}
gszData={gszData}
/>
} }
loading={relatedGroupLoading} loading={relatedGroupLoading}
/> />

View File

@ -6,8 +6,8 @@ import { createCatalogueJur } from '../services/api/directories/catalogue_jur';
import { getCatalogueJurThunk } from '../store/slices/catalogueJurSlice/thunks'; import { getCatalogueJurThunk } from '../store/slices/catalogueJurSlice/thunks';
import { useAppDispatch, useAppSelector } from '../store/store'; import { useAppDispatch, useAppSelector } from '../store/store';
import type { CatalogueJurFormProps } from '../types/catalogueJur/catalogueJur'; import type { CatalogueJurFormProps } from '../types/catalogueJur/catalogueJur';
import { CatalogueJurForm } from '../widgets/CatalogueJurForm/CatalogueJurForm'; import { CatalogueJurForm } from '../widgets/CatalogueJur/CatalogueJurForm/CatalogueJurForm';
import { CatalogueJurTable } from '../widgets/CatalogueJurTable/CatalogueJurTable'; import { CatalogueJurTable } from '../widgets/CatalogueJur/CatalogueJurTable/CatalogueJurTable';
export function CatalogueJur() { export function CatalogueJur() {
const dispatch = useAppDispatch(); const dispatch = useAppDispatch();

View File

@ -12,9 +12,9 @@ import type { VersionCard } from '../types/consolidations/version_members';
import { CONS_STATUS_LABEL, canChangeStatus, consStatusDescription, isLockedBy } from '../utils/consolidations'; import { CONS_STATUS_LABEL, canChangeStatus, consStatusDescription, isLockedBy } from '../utils/consolidations';
import { quarterShortLabel } from '../utils/labels'; import { quarterShortLabel } from '../utils/labels';
import { statusColorMapping } from '../widgets/ConsoleTable/consts'; import { statusColorMapping } from '../widgets/ConsoleTable/consts';
import { ChessContent } from '../widgets/ConsolidatedChessContent/ConsolidatedChessContent';
import { OsvTabs } from '../widgets/ConsolidatedOsv/OsvTabs'; import { OsvTabs } from '../widgets/ConsolidatedOsv/OsvTabs';
import { OsvContent } from '../widgets/ConsolidatedOsvContent/ConsolidatedOsvContent'; import { OsvContent } from '../widgets/ConsolidatedOsvContent/ConsolidatedOsvContent';
import { ChessContent } from '../widgets/ConsolidationChess/ConsolidationChessContent/ConsolidatedChessContent';
import ChangeStatusModal from '../widgets/StatusChangeModal/ChangeStatusModal'; import ChangeStatusModal from '../widgets/StatusChangeModal/ChangeStatusModal';
function ReportContent() { function ReportContent() {

View File

@ -1,7 +1,7 @@
import { useMemo } from 'react'; import { useMemo } from 'react';
import PageTitle from '../components/PageTitle'; import PageTitle from '../components/PageTitle';
import { useAppSelector } from '../store/store'; import { useAppSelector } from '../store/store';
import { CompanyGroupsTable } from '../widgets/CompanyGroupsTable/CompanyGroupsTable'; import { CompanyGroupsTable } from '../widgets/CatalogueCompanyGroup/CompanyGroupsTable/CompanyGroupsTable';
export function GroupsLayout() { export function GroupsLayout() {
const totalGroupsNum = useAppSelector((state) => state.company_groups.total_groups); const totalGroupsNum = useAppSelector((state) => state.company_groups.total_groups);

View File

@ -3,8 +3,8 @@ import { Button, Dropdown, Space } from 'antd';
import Text from 'antd/es/typography/Text'; import Text from 'antd/es/typography/Text';
import Title from 'antd/es/typography/Title'; import Title from 'antd/es/typography/Title';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useAppSelector } from '../../store/store'; import { useAppSelector } from '../../../store/store';
import { pluralRu } from '../../utils/labels'; import { pluralRu } from '../../../utils/labels';
interface CompanyGroupHeaderI { interface CompanyGroupHeaderI {
setDeleteConfirmOpen: (el: boolean) => void; setDeleteConfirmOpen: (el: boolean) => void;
@ -36,7 +36,7 @@ export const CompanyGroupHeader = ({ setEditFormOpen, setDeleteConfirmOpen }: Co
key: 'delete', key: 'delete',
icon: activeCompanyGroup?.is_archived ? <CheckCircleOutlined /> : <DeleteOutlined />, icon: activeCompanyGroup?.is_archived ? <CheckCircleOutlined /> : <DeleteOutlined />,
label: activeCompanyGroup?.is_archived ? 'Разархивировать' : 'Архивировать', label: activeCompanyGroup?.is_archived ? 'Разархивировать' : 'Архивировать',
danger: activeCompanyGroup?.is_archived, danger: !activeCompanyGroup?.is_archived,
onClick: () => { onClick: () => {
setDeleteConfirmOpen(true); setDeleteConfirmOpen(true);
}, },

View File

@ -1,23 +1,23 @@
import { Tabs } from 'antd'; import { Tabs } from 'antd';
import { useAppSelector } from '../../store/store'; import { useAppSelector } from '../../../store/store';
import type { RelatedGroupOut } from '../../types/api'; import type { RelatedGroupOut } from '../../../types/api';
import './CataloguGroupTabs.css'; import './CatalogueCompanyGroupTabs.css';
interface CataloguGroupTabsI { interface CataloguGroupTabsI {
activeTab: CatalogueGroupTabKey; activeTab: CatalogueCompanyGroupTabKey;
setActiveTab: (val: CatalogueGroupTabKey) => void; setActiveTab: (val: CatalogueCompanyGroupTabKey) => void;
gskData: RelatedGroupOut[]; gskData: RelatedGroupOut[];
gszData: RelatedGroupOut[]; gszData: RelatedGroupOut[];
} }
export type CatalogueGroupTabKey = 'legal_entities' | 'gsk' | 'gsz'; export type CatalogueCompanyGroupTabKey = 'legal_entities' | 'gsk' | 'gsz';
export const CataloguGroupTabs = ({ activeTab, setActiveTab, gskData, gszData }: CataloguGroupTabsI) => { export const CatalogueCompanyGroupTabs = ({ activeTab, setActiveTab, gskData, gszData }: CataloguGroupTabsI) => {
const activeCompanyGroup = useAppSelector((state) => state.catalogue_jur.activeCompanyGroup); const activeCompanyGroup = useAppSelector((state) => state.catalogue_jur.activeCompanyGroup);
return ( return (
<Tabs <Tabs
activeKey={activeTab} activeKey={activeTab}
onChange={(key) => setActiveTab(key as CatalogueGroupTabKey)} onChange={(key) => setActiveTab(key as CatalogueCompanyGroupTabKey)}
tabBarStyle={{ margin: 0, marginBottom: 0 }} tabBarStyle={{ margin: 0, marginBottom: 0 }}
style={{ marginBottom: 0 }} style={{ marginBottom: 0 }}
items={[ items={[

View File

@ -1,12 +1,12 @@
import { Col, Form, Input, Modal, Row, Select } from 'antd'; import { Col, Form, Input, Modal, Row, Select } from 'antd';
import type React from 'react'; import type React from 'react';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { useMe } from '../../auth/useMe'; import { useMe } from '../../../auth/useMe';
import { fetchOneCompanyGroup } from '../../services/api/directories/company_groups'; import { fetchOneCompanyGroup } from '../../../services/api/directories/company_groups';
import type { CompanyGroupFormProps } from '../../types/companyGroups/companyGroups'; import type { CompanyGroupFormProps } from '../../../types/companyGroups/companyGroups';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
import { loadOffices } from '../Admin/UsersTable'; import { loadOffices } from '../../Admin/UsersTable';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -1,11 +1,11 @@
import { FolderOpenOutlined, SearchOutlined } from '@ant-design/icons'; import { FolderOpenOutlined, SearchOutlined } from '@ant-design/icons';
import { Checkbox, Empty, Input, List, Space, Spin, Tag, Typography } from 'antd'; import { Checkbox, Empty, Input, List, Space, Spin, Tag, Typography } from 'antd';
import { useEffect, useMemo, useState } from 'react'; import { useEffect, useMemo, useState } from 'react';
import { useVirtualList } from '../../hooks/useVirtualList'; import { useVirtualList } from '../../../hooks/useVirtualList';
import { setActiveCompanyGroup } from '../../store/slices/catalogueJurSlice/catalogueJurSlice'; import { setActiveCompanyGroup } from '../../../store/slices/catalogueJurSlice/catalogueJurSlice';
import { setIsGettingArchive } from '../../store/slices/companyGroupsSlice/companyGroupsSlice'; import { setIsGettingArchive } from '../../../store/slices/companyGroupsSlice/companyGroupsSlice';
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';
const { Text } = Typography; const { Text } = Typography;

View File

@ -3,11 +3,11 @@ import { Button, Input, Space, Tooltip } from 'antd';
import type { ColumnsType } from 'antd/es/table'; import type { ColumnsType } from 'antd/es/table';
import { useEffect, useMemo } from 'react'; import { useEffect, useMemo } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../components/GenericTable'; import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../../components/GenericTable';
import { useTableFilters } from '../../components/GenericTable/useTableFilters'; import { useTableFilters } from '../../../components/GenericTable/useTableFilters';
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';
import type { ICompanyGroup } from '../../types/companyGroups/companyGroups'; import type { ICompanyGroup } from '../../../types/companyGroups/companyGroups';
import { groupsConfig } from './config'; import { groupsConfig } from './config';
export function CompanyGroupsTable() { export function CompanyGroupsTable() {

View File

@ -1,5 +1,5 @@
import type { TableConfig } from '../../components/GenericTable'; import type { TableConfig } from '../../../components/GenericTable';
import type { ICompanyGroup } from '../../types/companyGroups/companyGroups'; import type { ICompanyGroup } from '../../../types/companyGroups/companyGroups';
export const groupsConfig: TableConfig<ICompanyGroup> = { export const groupsConfig: TableConfig<ICompanyGroup> = {
rowKey: 'id', rowKey: 'id',

View File

@ -1,14 +1,14 @@
import { Col, Form, Input, Modal, Row, Select } from 'antd'; import { Col, Form, Input, Modal, Row, Select } from 'antd';
import type React from 'react'; import type React from 'react';
import { useEffect, useMemo, useState } from 'react'; import { useEffect, useMemo, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { fetchOneCatalogueJur } from '../../services/api/directories/catalogue_jur'; import { fetchOneCatalogueJur } from '../../../services/api/directories/catalogue_jur';
import { fetchRelatedGroups } from '../../services/api/directories/company_groups'; import { fetchRelatedGroups } from '../../../services/api/directories/company_groups';
import { useAppSelector } from '../../store/store'; import { useAppSelector } from '../../../store/store';
import type { RelatedGroupOut } from '../../types/api'; import type { RelatedGroupOut } from '../../../types/api';
import type { CatalogueJurFormProps } from '../../types/catalogueJur/catalogueJur'; import type { CatalogueJurFormProps } from '../../../types/catalogueJur/catalogueJur';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
import { loadOffices } from '../Admin/UsersTable'; import { loadOffices } from '../../Admin/UsersTable';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -3,12 +3,12 @@ import FormItem from 'antd/es/form/FormItem';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type React from 'react'; import type React from 'react';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { fetchOneCatalogueJur } from '../../services/api/directories/catalogue_jur'; import { fetchOneCatalogueJur } from '../../../services/api/directories/catalogue_jur';
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';
import type { MoveCatalogueJurProps } from '../../types/catalogueJur/catalogueJur'; import type { MoveCatalogueJurProps } from '../../../types/catalogueJur/catalogueJur';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
type FormValues = { type FormValues = {
name: string; name: string;

View File

@ -11,25 +11,24 @@ import { Button, Checkbox, Dropdown, Input, Space } from 'antd';
import type { ColumnsType } from 'antd/es/table'; import type { ColumnsType } from 'antd/es/table';
import { type ReactNode, useEffect, useMemo, useState } from 'react'; import { type ReactNode, useEffect, useMemo, useState } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../components/GenericTable'; import { ColumnSettings, DataTable, useFilteredRows, useTableFilters, useVisibleColumns } from '../../../components/GenericTable';
import { useTableFilters } from '../../components/GenericTable/useTableFilters'; 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 { 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';
import type { import type {
CatalogueJurFormProps, CatalogueJurFormProps,
ICatalogueJur, ICatalogueJur,
MoveCatalogueJurProps, MoveCatalogueJurProps,
WithdrawCatalogueJurProps, WithdrawCatalogueJurProps,
} from '../../types/catalogueJur/catalogueJur'; } from '../../../types/catalogueJur/catalogueJur';
import { pluralRu } from '../../utils/labels'; import { pluralRu } from '../../../utils/labels';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
import { CatalogueJurForm } from '../CatalogueJurForm/CatalogueJurForm'; import { CatalogueJurForm } from '../CatalogueJurForm/CatalogueJurForm';
import { MoveCatalogueJurForm } from '../MoveCatalogueJurForm/MoveCatalogueJurForm'; import { MoveCatalogueJurForm } from '../CatalogueJurMoveForm/CatalogueJurMoveForm';
import { WithdrawCatalogueJurForm } from '../WithdrawCatalogueJurForm/WithdrawCatalogueJurForm'; import { WithdrawCatalogueJurForm } from '../CatalogueJurWithdrawForm/CatalogueJurWithdrawForm';
import { catalogueJurConfig } from './config'; import { catalogueJurConfig } from './config';
interface CatalogueJurTableI { interface CatalogueJurTableI {

View File

@ -1,7 +1,7 @@
import type { TableConfig } from '../../components/GenericTable'; import type { TableConfig } from '../../../components/GenericTable';
import { TableTag } from '../../components/TableTag/TableTag'; import { TableTag } from '../../../components/TableTag/TableTag';
import { TAG_PRESETS } from '../../components/TableTag/presets'; import { TAG_PRESETS } from '../../../components/TableTag/presets';
import type { ICatalogueJur } from '../../types/catalogueJur/catalogueJur'; import type { ICatalogueJur } from '../../../types/catalogueJur/catalogueJur';
export const catalogueJurConfig: TableConfig<ICatalogueJur> = { export const catalogueJurConfig: TableConfig<ICatalogueJur> = {
rowKey: 'id', rowKey: 'id',

View File

@ -4,10 +4,10 @@ import TextArea from 'antd/es/input/TextArea';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type React from 'react'; import type React from 'react';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { fetchOneCatalogueJur } from '../../services/api/directories/catalogue_jur'; import { fetchOneCatalogueJur } from '../../../services/api/directories/catalogue_jur';
import type { WithdrawCatalogueJurProps } from '../../types/catalogueJur/catalogueJur'; import type { WithdrawCatalogueJurProps } from '../../../types/catalogueJur/catalogueJur';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
interface FormValues extends WithdrawCatalogueJurProps { interface FormValues extends WithdrawCatalogueJurProps {
name: string; name: string;

View File

@ -2,7 +2,7 @@ import { DownloadOutlined, FullscreenExitOutlined, FullscreenOutlined } from '@a
import { Button, ConfigProvider } from 'antd'; import { Button, ConfigProvider } from 'antd';
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useParams } from 'react-router-dom'; import { useParams } from 'react-router-dom';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { import {
exportChessConsolidationsResult, exportChessConsolidationsResult,
exportChessTableAll, exportChessTableAll,
@ -10,11 +10,11 @@ import {
fetchChessConsolidations, fetchChessConsolidations,
fetchChessConsolidationsManual, fetchChessConsolidationsManual,
fetchChessConsolidationsResult, fetchChessConsolidationsResult,
} from '../../services/api/intercompanyMatrix'; } from '../../../services/api/intercompanyMatrix';
import type { IntercompanyMatrixResponse, IntercompanyMatrixResultResponse } from '../../types/api'; import type { IntercompanyMatrixResponse, IntercompanyMatrixResultResponse } from '../../../types/api';
import type { VersionCard } from '../../types/consolidations/version_members'; import type { VersionCard } from '../../../types/consolidations/version_members';
import { saveBlob, xlsxFilename } from '../../utils/download'; import { saveBlob, xlsxFilename } from '../../../utils/download';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
import { ConsolidationChessFormatTableFilter } from '../ConsolidationChessFormatTableFilter/ConsolidationChessFormatTableFilter'; import { ConsolidationChessFormatTableFilter } from '../ConsolidationChessFormatTableFilter/ConsolidationChessFormatTableFilter';
import { ConsolidationChessResTable } from '../ConsolidationChessResTable/ConsolidationChessResTable'; import { ConsolidationChessResTable } from '../ConsolidationChessResTable/ConsolidationChessResTable';
import { ConsolidationChessTable } from '../ConsolidationChessTable/ConsolidationChessTable'; import { ConsolidationChessTable } from '../ConsolidationChessTable/ConsolidationChessTable';

View File

@ -2,10 +2,10 @@ import { Table, Typography } from 'antd';
import type { ColumnsType } from 'antd/es/table'; import type { ColumnsType } from 'antd/es/table';
import type React from 'react'; import type React from 'react';
import { useMemo } from 'react'; import { useMemo } from 'react';
import type { IntercompanyMatrixResultResponse, MatrixResCell } from '../../types/api'; import type { IntercompanyMatrixResultResponse, MatrixResCell } from '../../../types/api';
import './ConsolidatedChessResTable.css'; import './ConsolidatedChessResTable.css';
import { chessTableCellFormatValue } from '../../utils/chessTableCellFormatValue'; import { chessTableCellFormatValue } from '../../../utils/chessTableCellFormatValue';
import { sumAmounts } from '../../utils/money'; import { sumAmounts } from '../../../utils/money';
const { Text } = Typography; const { Text } = Typography;

View File

@ -3,10 +3,10 @@ import { Table, Tooltip, Typography } from 'antd';
import type { ColumnsType } from 'antd/es/table'; import type { ColumnsType } from 'antd/es/table';
import type React from 'react'; import type React from 'react';
import { useMemo } from 'react'; import { useMemo } from 'react';
import type { IntercompanyMatrixResponse, MatrixCell, MatrixCompany } from '../../types/api'; import type { IntercompanyMatrixResponse, MatrixCell, MatrixCompany } from '../../../types/api';
import './ConsolidatedChessTable.css'; import './ConsolidatedChessTable.css';
import { chessTableCellFormatValue } from '../../utils/chessTableCellFormatValue'; import { chessTableCellFormatValue } from '../../../utils/chessTableCellFormatValue';
import { sumAmounts } from '../../utils/money'; import { sumAmounts } from '../../../utils/money';
const { Text } = Typography; const { Text } = Typography;

View File

@ -1,11 +1,11 @@
import { Button, Select, Space } from 'antd'; import { Button, Select, Space } from 'antd';
import type React from 'react'; import type React from 'react';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { ApiError, api } from '../../api/client'; import { ApiError, api } from '../../../api/client';
import { type OptionType, TreeFilterDropdown } from '../../components/TreeFilterDropdown/TreeFilterDropdown'; import { type OptionType, TreeFilterDropdown } from '../../../components/TreeFilterDropdown/TreeFilterDropdown';
import type { Account, MatrixCompany, Quarter } from '../../types/api'; import type { Account, MatrixCompany, Quarter } from '../../../types/api';
import { quarterShortLabel } from '../../utils/labels'; import { quarterShortLabel } from '../../../utils/labels';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
interface ConsolidationChessTableFilterI { interface ConsolidationChessTableFilterI {
companies: string[]; companies: string[];

View File

@ -3,12 +3,12 @@ import FormItem from 'antd/es/form/FormItem';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import type React from 'react'; import type React from 'react';
import { useEffect, useMemo, useState } from 'react'; import { useEffect, useMemo, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { fetchRelatedGroup } from '../../services/api/directories/company_groups'; import { fetchRelatedGroup } from '../../../services/api/directories/company_groups';
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';
import type { RelatedGroupFormType } from '../../types/relatedGroup/relatedGroup'; import type { RelatedGroupFormType } from '../../../types/relatedGroup/relatedGroup';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -2,13 +2,13 @@ import { DeleteOutlined, EditOutlined, EllipsisOutlined } from '@ant-design/icon
import { Button, Dropdown, Space } from 'antd'; import { Button, Dropdown, Space } from 'antd';
import type { ColumnsType } from 'antd/es/table'; import type { ColumnsType } from 'antd/es/table';
import { type ReactNode, useMemo, useState } from 'react'; import { type ReactNode, useMemo, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../../api/client';
import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../components/GenericTable'; import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../../components/GenericTable';
import { useTableFilters } from '../../components/GenericTable/useTableFilters'; import { useTableFilters } from '../../../components/GenericTable/useTableFilters';
import { deleteRelatedGroup, editRelatedGroup } from '../../services/api/directories/related-groups'; import { deleteRelatedGroup, editRelatedGroup } from '../../../services/api/directories/related-groups';
import type { RelatedGroupOut } from '../../types/api'; import type { RelatedGroupOut } from '../../../types/api';
import type { RelatedGroupFormType } from '../../types/relatedGroup/relatedGroup'; import type { RelatedGroupFormType } from '../../../types/relatedGroup/relatedGroup';
import { useNotificationApi } from '../../utils/useNotification'; import { useNotificationApi } from '../../../utils/useNotification';
import { DeleteRelatedGroupModal } from '../DeleteRelatedGroupModal/DeleteRelatedGroupModal'; import { DeleteRelatedGroupModal } from '../DeleteRelatedGroupModal/DeleteRelatedGroupModal';
import { RelatedGroupForm } from '../RelatedGroupForm/RelatedGroupForm'; import { RelatedGroupForm } from '../RelatedGroupForm/RelatedGroupForm';
import { relateGroupConfig } from './config'; import { relateGroupConfig } from './config';

View File

@ -1,9 +1,9 @@
import { VerticalAlignTopOutlined } from '@ant-design/icons'; import { VerticalAlignTopOutlined } from '@ant-design/icons';
import { Button } from 'antd'; import { Button } from 'antd';
import type { TableConfig } from '../../components/GenericTable'; import type { TableConfig } from '../../../components/GenericTable';
import { setRelatedGroupFilter } from '../../store/slices/catalogueJurSlice/catalogueJurSlice'; import { setRelatedGroupFilter } from '../../../store/slices/catalogueJurSlice/catalogueJurSlice';
import { store } from '../../store/store'; import { store } from '../../../store/store';
import type { RelatedGroupOut } from '../../types/api'; import type { RelatedGroupOut } from '../../../types/api';
export const relateGroupConfig: TableConfig<RelatedGroupOut> = { export const relateGroupConfig: TableConfig<RelatedGroupOut> = {
rowKey: 'id', rowKey: 'id',
searchableKeys: ['code', 'crm_id', 'name', 'members_count', 'created_date'], searchableKeys: ['code', 'crm_id', 'name', 'members_count', 'created_date'],