From db8641a1a8272a79e9e6565448e8c8e10bd73b76 Mon Sep 17 00:00:00 2001 From: Grog Date: Fri, 6 Nov 2026 08:37:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D1=81=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/layouts/CatalogueGroups.tsx | 11 ++--------- .../CompanyGroupForm/CompanyGroupForm.tsx | 8 ++------ .../CatalogueJurForm/CatalogueJurForm.tsx | 13 +++---------- .../CatalogueJurMoveForm/CatalogueJurMoveForm.tsx | 11 ++--------- .../CatalogueJurTable/CatalogueJurTable.tsx | 14 ++------------ .../CatalogueJurWithdrawForm.tsx | 11 ++--------- .../ConsolidatedChessContent.tsx | 12 +++--------- .../ConsolidationGoodwillContent.tsx | 15 ++++----------- .../RelatedGroupForm/RelatedGroupForm.tsx | 4 +--- .../RelatedGroupTable/RelatedGroupTable.tsx | 7 +------ 10 files changed, 22 insertions(+), 84 deletions(-) diff --git a/web/src/layouts/CatalogueGroups.tsx b/web/src/layouts/CatalogueGroups.tsx index dfcf853..aa443be 100644 --- a/web/src/layouts/CatalogueGroups.tsx +++ b/web/src/layouts/CatalogueGroups.tsx @@ -1,7 +1,6 @@ import { PlusOutlined } from '@ant-design/icons'; import { Button, Empty, Space } from 'antd'; import { useEffect, useMemo, useState } from 'react'; -import { ApiError } from '../api/client'; import PageTitle from '../components/PageTitle'; import { createCatalogueJur } from '../services/api/directories/catalogue_jur'; import { @@ -108,11 +107,7 @@ export function CatalogueGroup() { setCompanyGroupDeleteOpen(false); } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } + notification.error({ description: e instanceof Error ? e.message : 'Не удалось обновить компанию' }); } finally { setCompanyGroupDeleteLoading(false); } @@ -128,9 +123,7 @@ export function CatalogueGroup() { setGskData(gsks); setGszData(gszs); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении связанных групп' }); } finally { setRelatedGroupLoading(false); } diff --git a/web/src/widgets/CatalogueCompanyGroup/CompanyGroupForm/CompanyGroupForm.tsx b/web/src/widgets/CatalogueCompanyGroup/CompanyGroupForm/CompanyGroupForm.tsx index fe8520a..c0c268e 100644 --- a/web/src/widgets/CatalogueCompanyGroup/CompanyGroupForm/CompanyGroupForm.tsx +++ b/web/src/widgets/CatalogueCompanyGroup/CompanyGroupForm/CompanyGroupForm.tsx @@ -37,9 +37,7 @@ export const CompanyGroupForm: React.FC = ({ open, onCancel, onOk, compan base_regional_office_id: data.base_regional_office_id, }); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении данных' }); } finally { setInitialDataLoading(false); } @@ -53,9 +51,7 @@ export const CompanyGroupForm: React.FC = ({ open, onCancel, onOk, compan const options = res.map((elem) => elem && { value: elem.id, label: elem.name }); setOfficesOptions(options); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получения региональных офисов' }); } finally { setLoadingOptions(false); } diff --git a/web/src/widgets/CatalogueJur/CatalogueJurForm/CatalogueJurForm.tsx b/web/src/widgets/CatalogueJur/CatalogueJurForm/CatalogueJurForm.tsx index afce0b8..d81421a 100644 --- a/web/src/widgets/CatalogueJur/CatalogueJurForm/CatalogueJurForm.tsx +++ b/web/src/widgets/CatalogueJur/CatalogueJurForm/CatalogueJurForm.tsx @@ -18,7 +18,6 @@ type Props = { jurId?: string; }; -// Ошибки сервера, относящиеся к одному полю, показываем у этого поля const FIELD_BY_ERROR_CODE: Record = { INN_EXISTS: 'inn', INVALID_INN: 'inn', @@ -61,9 +60,7 @@ export const CatalogueJurForm: React.FC = ({ open, onCancel, onOk, jurId }); getRelatedGroupsHandler(data.company_group_id as string); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получнии данных' }); } finally { setInitialDataLoading(false); } @@ -82,9 +79,7 @@ export const CatalogueJurForm: React.FC = ({ open, onCancel, onOk, jurId const options = res.map((elem) => elem && { value: elem.id, label: elem.name }); setOfficesOptions(options); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получения офисов рф' }); } finally { setLoadingOfficesOptions(false); } @@ -101,9 +96,7 @@ export const CatalogueJurForm: React.FC = ({ open, onCancel, onOk, jurId setGskData(gsks); setGszData(gszs); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении связанных компаний' }); } finally { setLoadingRelatedGroupsOptions(false); } diff --git a/web/src/widgets/CatalogueJur/CatalogueJurMoveForm/CatalogueJurMoveForm.tsx b/web/src/widgets/CatalogueJur/CatalogueJurMoveForm/CatalogueJurMoveForm.tsx index cf1b1c6..47d2b1f 100644 --- a/web/src/widgets/CatalogueJur/CatalogueJurMoveForm/CatalogueJurMoveForm.tsx +++ b/web/src/widgets/CatalogueJur/CatalogueJurMoveForm/CatalogueJurMoveForm.tsx @@ -3,7 +3,6 @@ import FormItem from 'antd/es/form/FormItem'; import dayjs from 'dayjs'; import type React from 'react'; import { useEffect, useState } from 'react'; -import { ApiError } from '../../../api/client'; import { AppModal } from '../../../components/AppModal/AppModal'; import { fetchOneCatalogueJur } from '../../../services/api/directories/catalogue_jur'; import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/thunks'; @@ -47,9 +46,7 @@ export const MoveCatalogueJurForm: React.FC = ({ open, onCancel, onOk, ju effective_date: '', }); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении данных' }); } finally { setInitialDataLoading(false); } @@ -61,11 +58,7 @@ export const MoveCatalogueJurForm: React.FC = ({ open, onCancel, onOk, ju const { effective_date, company_group_id } = await form.validateFields(); await onOk({ effective_date, company_group_id }); } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при сохранении данных' }); } finally { setConfirmLoading(false); } diff --git a/web/src/widgets/CatalogueJur/CatalogueJurTable/CatalogueJurTable.tsx b/web/src/widgets/CatalogueJur/CatalogueJurTable/CatalogueJurTable.tsx index eaa4d30..85848fd 100644 --- a/web/src/widgets/CatalogueJur/CatalogueJurTable/CatalogueJurTable.tsx +++ b/web/src/widgets/CatalogueJur/CatalogueJurTable/CatalogueJurTable.tsx @@ -11,7 +11,6 @@ import { Alert, Button, Checkbox, Dropdown, Input, Space } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { type ReactNode, useEffect, useMemo, useState } from 'react'; import { useNavigate } from 'react-router-dom'; -import { ApiError } from '../../../api/client'; import { ColumnSettings, DataTable, useFilteredRows, useTableFilters, useVisibleColumns } from '../../../components/GenericTable'; import { editCatalogueJur, moveCatalogueJur, withdrawCatalogueJur } from '../../../services/api/directories/catalogue_jur'; import { setIsGettingArchive, setRelatedGroupFilter } from '../../../store/slices/catalogueJurSlice/catalogueJurSlice'; @@ -100,11 +99,7 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur dispatch(getCompanyGroupsThunk()); closeMoveCatalogueJurHandler(); } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при перемещении ЮЛ в другую ГК' }); } } async function withdrawCatalogueJurHandler(values: WithdrawCatalogueJurProps) { @@ -115,11 +110,7 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur closeWithdrawCatalogueJurHandler(); } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при выводе ЮЛ из ГК' }); } } @@ -130,7 +121,6 @@ export function CatalogueJurTable({ outside_group, tabsComponent }: CatalogueJur } useEffect(() => { - // «ЮЛ вне ГК» грузится без выбранной ГК; список ГК — только по выбранной (без неё запрос ушёл бы по всем ГК) if (outside_group || activeCompanyGroup?.id) { getCatalogueJur(); } diff --git a/web/src/widgets/CatalogueJur/CatalogueJurWithdrawForm/CatalogueJurWithdrawForm.tsx b/web/src/widgets/CatalogueJur/CatalogueJurWithdrawForm/CatalogueJurWithdrawForm.tsx index c43430f..0ae80a7 100644 --- a/web/src/widgets/CatalogueJur/CatalogueJurWithdrawForm/CatalogueJurWithdrawForm.tsx +++ b/web/src/widgets/CatalogueJur/CatalogueJurWithdrawForm/CatalogueJurWithdrawForm.tsx @@ -4,7 +4,6 @@ import TextArea from 'antd/es/input/TextArea'; import dayjs from 'dayjs'; import type React from 'react'; import { useEffect, useState } from 'react'; -import { ApiError } from '../../../api/client'; import { AppModal } from '../../../components/AppModal/AppModal'; import { fetchOneCatalogueJur } from '../../../services/api/directories/catalogue_jur'; import type { WithdrawCatalogueJurProps } from '../../../types/catalogueJur/catalogueJur'; @@ -44,9 +43,7 @@ export const WithdrawCatalogueJurForm: React.FC = ({ open, onCancel, onOk comment: '', }); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении данных' }); } finally { setInitialDataLoading(false); } @@ -58,11 +55,7 @@ export const WithdrawCatalogueJurForm: React.FC = ({ open, onCancel, onOk const { effective_date, event, comment = '' } = await form.validateFields(); await onOk({ effective_date, event, comment }); } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при сохранении данных' }); } finally { setConfirmLoading(false); } diff --git a/web/src/widgets/ConsolidationChess/ConsolidationChessContent/ConsolidatedChessContent.tsx b/web/src/widgets/ConsolidationChess/ConsolidationChessContent/ConsolidatedChessContent.tsx index c7fdaa7..874abf1 100644 --- a/web/src/widgets/ConsolidationChess/ConsolidationChessContent/ConsolidatedChessContent.tsx +++ b/web/src/widgets/ConsolidationChess/ConsolidationChessContent/ConsolidatedChessContent.tsx @@ -108,9 +108,7 @@ export const ChessContent = ({ card }: { card: VersionCard | null }) => { const res = await fetchChessConsolidationsResult(vid); setChessResData(res); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении данных' }); } finally { setChessResLoading(false); } @@ -134,9 +132,7 @@ export const ChessContent = ({ card }: { card: VersionCard | null }) => { saveBlob(blob, filename ?? xlsxFilename('Шахматка', versionInfo)); } } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при экспорте данных' }); } finally { setMatrixExportLoading(false); } @@ -150,9 +146,7 @@ export const ChessContent = ({ card }: { card: VersionCard | null }) => { const { blob, filename } = await exportChessConsolidationsResult(version_id); saveBlob(blob, filename ?? xlsxFilename('Результирующая_таблица_ВГО', versionInfo)); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при экспорте данных' }); } finally { setResExportLoading(false); } diff --git a/web/src/widgets/ConsolidationGoodwill/ConsolidationGoodwillContent/ConsolidationGoodwillContent.tsx b/web/src/widgets/ConsolidationGoodwill/ConsolidationGoodwillContent/ConsolidationGoodwillContent.tsx index 4eb127e..b051c9e 100644 --- a/web/src/widgets/ConsolidationGoodwill/ConsolidationGoodwillContent/ConsolidationGoodwillContent.tsx +++ b/web/src/widgets/ConsolidationGoodwill/ConsolidationGoodwillContent/ConsolidationGoodwillContent.tsx @@ -2,7 +2,6 @@ import { DownloadOutlined, EditOutlined, FullscreenExitOutlined, FullscreenOutli import { Alert, Button, ConfigProvider, Select, Space, Tooltip } from 'antd'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useParams } from 'react-router-dom'; -import { ApiError } from '../../../api/client'; import { ConsolidationFormatTableFilter } from '../../../components/ConsolidationFormatTableFilter/ConsolidationFormatTableFilter'; import { type ColumnDef, ColumnSettings, useVisibleColumns } from '../../../components/GenericTable'; import { exportGoodwillTable, fetchGoodwillTable, saveGoodwillRow } from '../../../services/api/goodwill'; @@ -191,7 +190,7 @@ export const GoodwillContent = ({ card }: { card: VersionCard | null }) => { setFullscreen(false); } } catch (e) { - notification.error({ description: e instanceof Error ? e.message : 'Ошибка' }); + notification.error({ description: e instanceof Error ? e.message : 'Ошибка раскрытия на весь экран' }); } }; @@ -219,9 +218,7 @@ export const GoodwillContent = ({ card }: { card: VersionCard | null }) => { }); setEditedRows(initialEdited); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при загрузке данных' }); } finally { setLoading(false); } @@ -253,9 +250,7 @@ export const GoodwillContent = ({ card }: { card: VersionCard | null }) => { setIsEditMode(false); loadData(version_id); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при сохранении данных' }); } finally { setSaving(false); } @@ -270,9 +265,7 @@ export const GoodwillContent = ({ card }: { card: VersionCard | null }) => { const { blob, filename } = await exportGoodwillTable(version_id); saveBlob(blob, filename ?? xlsxFilename('Гудвил', versionInfo)); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при экспорте таблицы' }); } finally { setExportLoading(false); } diff --git a/web/src/widgets/RelatedGroup/RelatedGroupForm/RelatedGroupForm.tsx b/web/src/widgets/RelatedGroup/RelatedGroupForm/RelatedGroupForm.tsx index b796691..83976fa 100644 --- a/web/src/widgets/RelatedGroup/RelatedGroupForm/RelatedGroupForm.tsx +++ b/web/src/widgets/RelatedGroup/RelatedGroupForm/RelatedGroupForm.tsx @@ -48,9 +48,7 @@ export const RelatedGroupForm: React.FC = ({ open, onCancel, onOk, relate company_group_id: data?.company_group_id, }); } catch (e) { - if (e instanceof ApiError) { - notification.error({ description: e.message }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при получении данных' }); } finally { setInitialDataLoading(false); } diff --git a/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx b/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx index 1c45a40..87b62d7 100644 --- a/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx +++ b/web/src/widgets/RelatedGroup/RelatedGroupTable/RelatedGroupTable.tsx @@ -2,7 +2,6 @@ import { DeleteOutlined, EditOutlined, EllipsisOutlined } from '@ant-design/icon import { Button, Dropdown, Space } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { type ReactNode, useMemo, useState } from 'react'; -import { ApiError } from '../../../api/client'; import { ColumnSettings, DataTable, useFilteredRows, useVisibleColumns } from '../../../components/GenericTable'; import { useTableFilters } from '../../../components/GenericTable/useTableFilters'; import { deleteRelatedGroup, editRelatedGroup } from '../../../services/api/directories/related-groups'; @@ -51,11 +50,7 @@ export function RelatedGroupTable({ tabsComponent, data, loading, getData, activ setDeleteModalOpen(false); setGroupId(''); } catch (e) { - if (e instanceof ApiError) { - notification.error({ - description: e.message, - }); - } + notification.error({ description: e instanceof Error ? e.message : 'Ошибка при удалении данных' }); } finally { setDeletingLoading(false); }