форматирование

This commit is contained in:
Grog 2026-10-30 11:46:45 +03:00
parent 3bc1acb1ad
commit ad691d5158
21 changed files with 30 additions and 49 deletions

View File

@ -6,8 +6,6 @@
border-radius: 999px !important; border-radius: 999px !important;
} }
/* стили кастомного сегмента */ /* стили кастомного сегмента */
.customSegment .ant-segmented-item { .customSegment .ant-segmented-item {
margin-right: 8px; margin-right: 8px;

View File

@ -3,7 +3,7 @@
padding: 0 !important; padding: 0 !important;
} }
.appModal .ant-modal-header, .appModal .ant-modal-header,
.appModal .ant-modal-body{ .appModal .ant-modal-body {
padding: 16px !important; padding: 16px !important;
} }
.appModal .ant-modal-footer { .appModal .ant-modal-footer {
@ -16,4 +16,4 @@
.appModal .ant-modal-close { .appModal .ant-modal-close {
padding: 4px !important; padding: 4px !important;
} }
/* */ /* */

View File

@ -1,18 +1,13 @@
import { Modal } from 'antd'; import { Modal } from 'antd';
import type { ModalProps } from 'antd'; import type { ModalProps } from 'antd';
import CustomModalCloseIcon from '../CustomModalCloseIcon'; import CustomModalCloseIcon from '../CustomModalCloseIcon';
import './AppModal.css' import './AppModal.css';
export type AppModalProps = ModalProps ; export type AppModalProps = ModalProps;
export function AppModal({ children, ...props }: AppModalProps) { export function AppModal({ children, ...props }: AppModalProps) {
return ( return (
<Modal <Modal className='appModal' centered={true} closeIcon={<CustomModalCloseIcon />} {...props}>
className='appModal' {children}
centered={true} </Modal>
closeIcon={<CustomModalCloseIcon />} );
{...props} }
>
{children}
</Modal>
);
}

View File

@ -55,7 +55,7 @@ export function DataTable<T extends Record<string, any>>({
const opts: FilterOption[] = []; const opts: FilterOption[] = [];
for (const r of allRows) { for (const r of allRows) {
const v = r[key]; const v = r[key];
if (!seen.has(v) && (v !== null && v !== undefined)) { if (!seen.has(v) && v !== null && v !== undefined) {
seen.add(v); seen.add(v);
opts.push({ label: String(v), value: v }); opts.push({ label: String(v), value: v });
} }

View File

@ -2,8 +2,8 @@ import { Form, Input, Select } from 'antd';
import { useRef, useState } from 'react'; import { useRef, useState } from 'react';
import { ApiError, api } from '../../api/client'; import { ApiError, api } from '../../api/client';
import type { AdminUser, BusinessSegment, RegionalOffice, Role, UserCreate } from '../../api/types'; import type { AdminUser, BusinessSegment, RegionalOffice, Role, UserCreate } from '../../api/types';
import { useMountedRef, useNotifyError } from './hooks';
import { AppModal } from '../../components/AppModal/AppModal'; import { AppModal } from '../../components/AppModal/AppModal';
import { useMountedRef, useNotifyError } from './hooks';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -18,8 +18,7 @@ export const ArchiveCompanyGroupModal: React.FC<Props> = ({ open, onCancel, onOk
okText='Подтвердить' okText='Подтвердить'
cancelText='Отмена' cancelText='Отмена'
okButtonProps={isArchived ? undefined : { danger: true }} okButtonProps={isArchived ? undefined : { danger: true }}
confirmLoading={loading} confirmLoading={loading}>
>
<p style={{ margin: 0, color: '#595959' }}> <p style={{ margin: 0, color: '#595959' }}>
{isArchived ? 'Группа компаний вернётся из архива в список действующих.' : 'Группа компаний будет перенесена в архив.'} {isArchived ? 'Группа компаний вернётся из архива в список действующих.' : 'Группа компаний будет перенесена в архив.'}
</p> </p>

View File

@ -3,11 +3,11 @@ 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 { AppModal } from '../../../components/AppModal/AppModal';
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';
import { AppModal } from '../../../components/AppModal/AppModal';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -2,6 +2,7 @@ import { Col, Form, Input, 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 { AppModal } from '../../../components/AppModal/AppModal';
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';
@ -9,7 +10,6 @@ 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';
import { AppModal } from '../../../components/AppModal/AppModal';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -4,12 +4,12 @@ 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 { AppModal } from '../../../components/AppModal/AppModal';
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';
import { AppModal } from '../../../components/AppModal/AppModal';
type FormValues = { type FormValues = {
name: string; name: string;

View File

@ -5,10 +5,10 @@ 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 { AppModal } from '../../../components/AppModal/AppModal';
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';
import { AppModal } from '../../../components/AppModal/AppModal';
interface FormValues extends WithdrawCatalogueJurProps { interface FormValues extends WithdrawCatalogueJurProps {
name: string; name: string;

View File

@ -2,10 +2,10 @@ import { DownloadOutlined } from '@ant-design/icons';
import { Table, message } from 'antd'; import { Table, message } from 'antd';
import { useEffect, useMemo, useState } from 'react'; import { useEffect, useMemo, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { AppModal } from '../../components/AppModal/AppModal';
import { getChecklist } from '../../services/api/consolidations'; import { getChecklist } from '../../services/api/consolidations';
import type { ChecklistBackendShape, IVersionCard } from '../../types/consolidations/version_members'; import type { ChecklistBackendShape, IVersionCard } from '../../types/consolidations/version_members';
import { buildChecklistColumns, buildChecklistRows, getMarksItems } from './checklist_utils'; import { buildChecklistColumns, buildChecklistRows, getMarksItems } from './checklist_utils';
import { AppModal } from '../../components/AppModal/AppModal';
type ChecklistProps = { type ChecklistProps = {
open: boolean; open: boolean;

View File

@ -1,12 +1,12 @@
import { Alert, Button, Input, Skeleton, message } from 'antd'; import { Alert, Button, Input, Skeleton, message } from 'antd';
import { useCallback, useEffect, useRef, useState } from 'react'; import { useCallback, useEffect, useRef, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { AppModal } from '../../components/AppModal/AppModal';
import { useBeforeUnload } from '../../hooks/useBeforeUnload'; import { useBeforeUnload } from '../../hooks/useBeforeUnload';
import { getVersionCard, lockVersion } from '../../services/api/consolidations'; import { getVersionCard, lockVersion } from '../../services/api/consolidations';
import type { LockOut } from '../../types/consolidations/common_types'; import type { LockOut } from '../../types/consolidations/common_types';
import { MAX_REASON_LENGTH, endSentence, isValidReason } from '../../utils/consolidations'; import { MAX_REASON_LENGTH, endSentence, isValidReason } from '../../utils/consolidations';
import { quarterShortLabel } from '../../utils/labels'; import { quarterShortLabel } from '../../utils/labels';
import { AppModal } from '../../components/AppModal/AppModal';
type LockModalProps = { type LockModalProps = {
versionId: string | null; versionId: string | null;

View File

@ -3,6 +3,7 @@ import { Button, Checkbox, Input, Modal, Table, message } from 'antd';
import type { TableColumnsType } from 'antd'; import type { TableColumnsType } from 'antd';
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { AppModal } from '../../components/AppModal/AppModal';
import { getVersionCard, lockVersion } from '../../services/api/consolidations'; import { getVersionCard, lockVersion } from '../../services/api/consolidations';
import { getCounterpartyCandidates, mapCounterparty } from '../../services/api/osv'; import { getCounterpartyCandidates, mapCounterparty } from '../../services/api/osv';
import type { CandidateOut, CandidateScope, ConsolidatedRowOut, RefOut } from '../../types/api'; import type { CandidateOut, CandidateScope, ConsolidatedRowOut, RefOut } from '../../types/api';
@ -19,7 +20,6 @@ import {
mapResultText, mapResultText,
pairCandidateRows, pairCandidateRows,
} from './counterpartyMapping'; } from './counterpartyMapping';
import { AppModal } from '../../components/AppModal/AppModal';
const SEARCH_DELAY_MS = 300; const SEARCH_DELAY_MS = 300;

View File

@ -2,6 +2,7 @@ import { WarningOutlined } from '@ant-design/icons';
import { Button, Segmented, Tooltip } from 'antd'; import { Button, Segmented, Tooltip } from 'antd';
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { useLocation, useNavigate, useParams } from 'react-router-dom';
import { AppModal } from '../../components/AppModal/AppModal';
import { getOsvSummary } from '../../services/api/osv'; import { getOsvSummary } from '../../services/api/osv';
import type { CounterPairOut, OsvSummaryOut } from '../../types/api'; import type { CounterPairOut, OsvSummaryOut } from '../../types/api';
import type { ConsStatus } from '../../types/consolidations/common_types'; import type { ConsStatus } from '../../types/consolidations/common_types';
@ -13,7 +14,6 @@ import {
resolveLeaveAfterFetch, resolveLeaveAfterFetch,
} from '../../utils/consolidations'; } from '../../utils/consolidations';
import { pairsViewSearch } from './counterPairs'; import { pairsViewSearch } from './counterPairs';
import { AppModal } from '../../components/AppModal/AppModal';
const TAB_CONFIG = [ const TAB_CONFIG = [
{ key: 'osv', label: 'ОСВ' }, { key: 'osv', label: 'ОСВ' },

View File

@ -45,12 +45,7 @@ type Props = {
export const CreateEntityPickerModal: React.FC<Props> = ({ open, onCancel, onSelect }) => { export const CreateEntityPickerModal: React.FC<Props> = ({ open, onCancel, onSelect }) => {
return ( return (
<AppModal <AppModal title='Выберите объект для добавления' open={open} onCancel={onCancel} footer={null} destroyOnHidden>
title='Выберите объект для добавления'
open={open}
onCancel={onCancel}
footer={null}
destroyOnHidden>
<div className='options'> <div className='options'>
{OPTIONS.map((opt) => ( {OPTIONS.map((opt) => (
<button key={opt.key} type='button' className='optionCard' onClick={() => onSelect(opt.key)}> <button key={opt.key} type='button' className='optionCard' onClick={() => onSelect(opt.key)}>

View File

@ -1,8 +1,8 @@
import { Alert, Button, Input, Space, Tooltip, Typography } from 'antd'; import { Alert, Button, Input, Space, Tooltip, Typography } from 'antd';
import { useState } from 'react'; import { useState } from 'react';
import { AppModal } from '../../components/AppModal/AppModal';
import type { ChecksOut, FailedCheckOut } from '../../types/api'; import type { ChecksOut, FailedCheckOut } from '../../types/api';
import { expectedActualText, failureKey, failureText } from './checkText'; import { expectedActualText, failureKey, failureText } from './checkText';
import { AppModal } from '../../components/AppModal/AppModal';
type Props = { type Props = {
checks: ChecksOut; checks: ChecksOut;

View File

@ -1,9 +1,9 @@
import { Button, Tooltip, Typography, message, theme } from 'antd'; import { Button, Tooltip, Typography, message, theme } from 'antd';
import { type ReactNode, useState } from 'react'; import { type ReactNode, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { AppModal } from '../../components/AppModal/AppModal';
import { removeFile } from '../../services/api/files'; import { removeFile } from '../../services/api/files';
import type { DocumentRow } from './documentRows'; import type { DocumentRow } from './documentRows';
import { AppModal } from '../../components/AppModal/AppModal';
const { Text } = Typography; const { Text } = Typography;
@ -57,12 +57,7 @@ export default function DeleteReasonModal({ targetRow, open, onCancel, onDelete,
} }
}; };
return ( return (
<AppModal <AppModal title='Удаление документа' open={open} onCancel={onCancel} footer={null} destroyOnHidden>
title='Удаление документа'
open={open}
onCancel={onCancel}
footer={null}
destroyOnHidden>
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}> <div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
<p style={{ color: '#667085', margin: 0 }}>Выберите причину удаления документа «{targetRow.name}»</p> <p style={{ color: '#667085', margin: 0 }}>Выберите причину удаления документа «{targetRow.name}»</p>
<p style={{ color: 'red', fontSize: 11, margin: 0 }}>Будет удален/заменён сам файл и все его документы</p> <p style={{ color: 'red', fontSize: 11, margin: 0 }}>Будет удален/заменён сам файл и все его документы</p>

View File

@ -3,8 +3,8 @@ import { Alert, Button, Typography, Upload, message } from 'antd';
import type { UploadFile } from 'antd/es/upload/interface'; import type { UploadFile } from 'antd/es/upload/interface';
import { useState } from 'react'; import { useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { summarizeUpload, uploadFiles } from '../../services/api/files';
import { AppModal } from '../../components/AppModal/AppModal'; import { AppModal } from '../../components/AppModal/AppModal';
import { summarizeUpload, uploadFiles } from '../../services/api/files';
type Props = { type Props = {
legalEntityId: string; legalEntityId: string;

View File

@ -3,6 +3,7 @@ import { Col, Form, Row, Select, message } from 'antd';
import type React from 'react'; import type React from 'react';
import { useEffect, useMemo, useRef, useState } from 'react'; import { useEffect, useMemo, useRef, useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { AppModal } from '../../components/AppModal/AppModal';
import { useBeforeUnload } from '../../hooks/useBeforeUnload'; import { useBeforeUnload } from '../../hooks/useBeforeUnload';
import { fetchAllLegalEntities, fetchRelatedGroup, fetchRelatedGroups } from '../../services/api/directories/company_groups'; import { fetchAllLegalEntities, fetchRelatedGroup, fetchRelatedGroups } from '../../services/api/directories/company_groups';
import { getCompanyGroupsThunk } from '../../store/slices/companyGroupsSlice/thunks'; import { getCompanyGroupsThunk } from '../../store/slices/companyGroupsSlice/thunks';
@ -11,7 +12,6 @@ import type { ConsolidationCreate, LegalEntityBrief, Quarter, RelatedGroupOut }
import { MIN_PERIMETER } from '../../utils/consolidations'; import { MIN_PERIMETER } from '../../utils/consolidations';
import { CompanyMultiSelect } from './CompanyOptionRow'; import { CompanyMultiSelect } from './CompanyOptionRow';
import { membersFirst, preselectMembers } from './preselect'; import { membersFirst, preselectMembers } from './preselect';
import { AppModal } from '../../components/AppModal/AppModal';
type Props = { type Props = {
open: boolean; open: boolean;

View File

@ -4,12 +4,12 @@ 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 { AppModal } from '../../../components/AppModal/AppModal';
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';
import { AppModal } from '../../../components/AppModal/AppModal';
type Props = { type Props = {
open: boolean; open: boolean;
@ -109,8 +109,7 @@ export const RelatedGroupForm: React.FC<Props> = ({ open, onCancel, onOk, relate
cancelText='Отмена' cancelText='Отмена'
destroyOnHidden destroyOnHidden
loading={initialDataLoading} loading={initialDataLoading}
confirmLoading={confirmLoading} confirmLoading={confirmLoading}>
>
<Form form={form} layout='vertical'> <Form form={form} layout='vertical'>
<FormItem name='crm_id' label='ID в CRM'> <FormItem name='crm_id' label='ID в CRM'>
<Input /> <Input />

View File

@ -1,6 +1,7 @@
import { Form, Input, Select, message } from 'antd'; import { Form, Input, Select, message } from 'antd';
import { useState } from 'react'; import { useState } from 'react';
import { ApiError } from '../../api/client'; import { ApiError } from '../../api/client';
import { AppModal } from '../../components/AppModal/AppModal';
import { TableTag } from '../../components/TableTag/TableTag'; import { TableTag } from '../../components/TableTag/TableTag';
import { useBeforeUnload } from '../../hooks/useBeforeUnload'; import { useBeforeUnload } from '../../hooks/useBeforeUnload';
import { updateStatus } from '../../services/api/consolidations'; import { updateStatus } from '../../services/api/consolidations';
@ -9,7 +10,6 @@ import type { ConsStatus } from '../../types/consolidations/common_types';
import type { VersionCard } from '../../types/consolidations/version_members'; import type { VersionCard } from '../../types/consolidations/version_members';
import { CONS_STATUS_LABEL, MAX_REASON_LENGTH, canSubmitStatusChange, manualTransitions } from '../../utils/consolidations'; import { CONS_STATUS_LABEL, MAX_REASON_LENGTH, canSubmitStatusChange, manualTransitions } from '../../utils/consolidations';
import { statusColorMapping } from '../ConsoleTable/consts'; import { statusColorMapping } from '../ConsoleTable/consts';
import { AppModal } from '../../components/AppModal/AppModal';
type StatusModalProps = { type StatusModalProps = {
open: boolean; open: boolean;