aurora-1589, исправление расхождения с макетом
This commit is contained in:
parent
65c44978bd
commit
0cb395f5e7
@ -5,3 +5,43 @@
|
|||||||
box-shadow: inset 0 0 0 1px #2ea64b38 !important;
|
box-shadow: inset 0 0 0 1px #2ea64b38 !important;
|
||||||
border-radius: 999px !important;
|
border-radius: 999px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* кастомные стили для модального окна */
|
||||||
|
.ant-modal-container{
|
||||||
|
padding: 0 !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
.ant-modal-header, .ant-modal-body, .ant-modal-footer{
|
||||||
|
padding: 16px !important;
|
||||||
|
}
|
||||||
|
.ant-modal-header{
|
||||||
|
border-bottom: 1px solid #f0f0f0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-modal-close{
|
||||||
|
padding: 4px !important;
|
||||||
|
|
||||||
|
}
|
||||||
|
/* */
|
||||||
|
|
||||||
|
/* стили кастомного сегмента */
|
||||||
|
.customSegment .ant-segmented-item{
|
||||||
|
margin-right: 8px;
|
||||||
|
padding: 5px 8px;
|
||||||
|
}
|
||||||
|
.customSegment .ant-segmented-item-selected {
|
||||||
|
background-color: #ecfdf3 !important;
|
||||||
|
color: #1f5f35 !important;
|
||||||
|
box-shadow: inset 0 0 0 1px #2ea64b38 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.customSegment .ant-segmented-thumb {
|
||||||
|
background-color: #ecfdf3 !important;
|
||||||
|
box-shadow: inset 0 0 0 1px #2ea64b38 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.customSegment .ant-segmented-item:focus-visible {
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
/* */
|
||||||
|
|||||||
5
web/src/components/CustomModalCloseIcon.tsx
Normal file
5
web/src/components/CustomModalCloseIcon.tsx
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import { CloseOutlined } from '@ant-design/icons';
|
||||||
|
|
||||||
|
export default function CustomModalCloseIcon() {
|
||||||
|
return <CloseOutlined style={{ border: '1px solid #d0d5dd', borderRadius: '8px', padding: 4 }} />;
|
||||||
|
}
|
||||||
@ -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)) {
|
if (!seen.has(v) && v) {
|
||||||
seen.add(v);
|
seen.add(v);
|
||||||
opts.push({ label: String(v), value: v });
|
opts.push({ label: String(v), value: v });
|
||||||
}
|
}
|
||||||
|
|||||||
@ -92,6 +92,7 @@ export function ConsolidationPage() {
|
|||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
minHeight: 0,
|
minHeight: 0,
|
||||||
|
borderRadius:12
|
||||||
}}>
|
}}>
|
||||||
{/* после «Взять в работу» перечитываем и панель «Организации»: в ней «Ответственный» */}
|
{/* после «Взять в работу» перечитываем и панель «Организации»: в ней «Ответственный» */}
|
||||||
<ConsoleTableWidget onVersionLocked={() => setReloadKey((k) => k + 1)} />
|
<ConsoleTableWidget onVersionLocked={() => setReloadKey((k) => k + 1)} />
|
||||||
@ -106,6 +107,7 @@ export function ConsolidationPage() {
|
|||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
minHeight: 0,
|
minHeight: 0,
|
||||||
|
borderRadius:12
|
||||||
}}>
|
}}>
|
||||||
<ConsoleLegalEntitiesTable reloadKey={reloadKey} onDrawerOpen={setPanelEntity} />
|
<ConsoleLegalEntitiesTable reloadKey={reloadKey} onDrawerOpen={setPanelEntity} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -3,6 +3,7 @@ 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 { useMountedRef, useNotifyError } from './hooks';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -97,7 +98,9 @@ export function CreateUserModal({ open, roles, offices, onClose, onCreated }: Pr
|
|||||||
confirmLoading={submitting}
|
confirmLoading={submitting}
|
||||||
cancelButtonProps={{ disabled: submitting }}
|
cancelButtonProps={{ disabled: submitting }}
|
||||||
mask={{ closable: !submitting }}
|
mask={{ closable: !submitting }}
|
||||||
|
centered
|
||||||
// форма смонтирована всегда (forceRender), поэтому её можно очистить после закрытия окна
|
// форма смонтирована всегда (forceRender), поэтому её можно очистить после закрытия окна
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
forceRender
|
forceRender
|
||||||
afterClose={() => form.resetFields()}>
|
afterClose={() => form.resetFields()}>
|
||||||
<Form<FormValues> form={form} layout='vertical' onFinish={submit} disabled={submitting}>
|
<Form<FormValues> form={form} layout='vertical' onFinish={submit} disabled={submitting}>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { Modal } from 'antd';
|
import { Modal } from 'antd';
|
||||||
|
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -19,7 +20,8 @@ export const ArchiveCompanyGroupModal: React.FC<Props> = ({ open, onCancel, onOk
|
|||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
okButtonProps={isArchived ? undefined : { danger: true }}
|
okButtonProps={isArchived ? undefined : { danger: true }}
|
||||||
confirmLoading={loading}
|
confirmLoading={loading}
|
||||||
centered>
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon/>}>
|
||||||
<p style={{ margin: 0, color: '#595959' }}>
|
<p style={{ margin: 0, color: '#595959' }}>
|
||||||
{isArchived ? 'Группа компаний вернётся из архива в список действующих.' : 'Группа компаний будет перенесена в архив.'}
|
{isArchived ? 'Группа компаний вернётся из архива в список действующих.' : 'Группа компаний будет перенесена в архив.'}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { fetchOneCompanyGroup } from '../../../services/api/directories/company_
|
|||||||
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 CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -109,7 +110,9 @@ export const CompanyGroupForm: React.FC<Props> = ({ open, onCancel, onOk, compan
|
|||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
loading={initialDataLoading}
|
loading={initialDataLoading}
|
||||||
confirmLoading={confirmLoading}
|
confirmLoading={confirmLoading}
|
||||||
width={720}>
|
width={720}
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon/>}>
|
||||||
<Form form={form} layout='vertical'>
|
<Form form={form} layout='vertical'>
|
||||||
<Form.Item name='name' label='Название ГК' rules={[{ required: true, message: 'Укажите название ГК' }]}>
|
<Form.Item name='name' label='Название ГК' rules={[{ required: true, message: 'Укажите название ГК' }]}>
|
||||||
<Input placeholder='Например: Агроком' />
|
<Input placeholder='Например: Агроком' />
|
||||||
|
|||||||
@ -9,6 +9,7 @@ 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 CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -163,7 +164,9 @@ export const CatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, jurId
|
|||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
width={720}
|
width={720}
|
||||||
confirmLoading={confirmLoading}
|
confirmLoading={confirmLoading}
|
||||||
loading={initialDataLoading}>
|
loading={initialDataLoading}
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon/>}>
|
||||||
<Form form={form} layout='vertical'>
|
<Form form={form} layout='vertical'>
|
||||||
<Row gutter={16}>
|
<Row gutter={16}>
|
||||||
<Col span={6}>
|
<Col span={6}>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/
|
|||||||
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 CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type FormValues = {
|
type FormValues = {
|
||||||
name: string;
|
name: string;
|
||||||
@ -94,7 +95,9 @@ export const MoveCatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, ju
|
|||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
loading={initialDataLoading}
|
loading={initialDataLoading}
|
||||||
confirmLoading={confirmLoading}>
|
confirmLoading={confirmLoading}
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon/>}>
|
||||||
<Form form={form} layout='vertical'>
|
<Form form={form} layout='vertical'>
|
||||||
<FormItem name='name' label='ЮЛ'>
|
<FormItem name='name' label='ЮЛ'>
|
||||||
<Input disabled />
|
<Input disabled />
|
||||||
|
|||||||
@ -8,6 +8,7 @@ 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';
|
||||||
|
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
interface FormValues extends WithdrawCatalogueJurProps {
|
interface FormValues extends WithdrawCatalogueJurProps {
|
||||||
name: string;
|
name: string;
|
||||||
@ -87,7 +88,8 @@ export const WithdrawCatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk
|
|||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
loading={initialDataLoading}
|
loading={initialDataLoading}
|
||||||
confirmLoading={confirmLoading}
|
confirmLoading={confirmLoading}
|
||||||
okButtonProps={{ danger: true }}>
|
okButtonProps={{ danger: true }}
|
||||||
|
centered closeIcon={<CustomModalCloseIcon/>}>
|
||||||
<Form form={form} layout='vertical'>
|
<Form form={form} layout='vertical'>
|
||||||
<FormItem name='name' label='ЮЛ'>
|
<FormItem name='name' label='ЮЛ'>
|
||||||
<Input disabled />
|
<Input disabled />
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import { ApiError } from '../../api/client';
|
|||||||
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 CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type ChecklistProps = {
|
type ChecklistProps = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -34,11 +35,13 @@ export default function ChecklistModal({ open, onDownload, consolidationData, on
|
|||||||
onCancel={onClose}
|
onCancel={onClose}
|
||||||
title='Чеклист'
|
title='Чеклист'
|
||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
|
centered
|
||||||
onOk={() => {
|
onOk={() => {
|
||||||
onDownload();
|
onDownload();
|
||||||
onClose();
|
onClose();
|
||||||
}}
|
}}
|
||||||
okText='Скачать чек-лист'
|
okText='Скачать чек-лист'
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
okButtonProps={{ icon: <DownloadOutlined /> }}>
|
okButtonProps={{ icon: <DownloadOutlined /> }}>
|
||||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
|
<div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
|
||||||
{getMarksItems()}
|
{getMarksItems()}
|
||||||
|
|||||||
@ -98,6 +98,7 @@ export function ConsoleLegalEntitiesTable({ onDrawerOpen, reloadKey }: { onDrawe
|
|||||||
color: '#667085',
|
color: '#667085',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
borderTop: '1px solid #f1f5f9',
|
borderTop: '1px solid #f1f5f9',
|
||||||
|
borderRadius:12,
|
||||||
}}>
|
}}>
|
||||||
Выберите консолидацию выше
|
Выберите консолидацию выше
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -112,7 +112,7 @@ export function buildChecklistColumns(checklistData: ChecklistBackendShape): Tab
|
|||||||
</h5>
|
</h5>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{ key: 'balance', dataIndex: 'balance', title: 'БУХ.БАЛАНС', render: (v: FileStatus) => mapStatus(v) },
|
{ key: 'balance', dataIndex: 'balance', title: 'БУХ. БАЛАНС', render: (v: FileStatus) => mapStatus(v) },
|
||||||
{ key: 'ofr', dataIndex: 'ofr', title: 'ОФР', render: (v: FileStatus) => mapStatus(v) },
|
{ key: 'ofr', dataIndex: 'ofr', title: 'ОФР', render: (v: FileStatus) => mapStatus(v) },
|
||||||
{
|
{
|
||||||
key: 'osv',
|
key: 'osv',
|
||||||
|
|||||||
@ -38,7 +38,7 @@ export const membersConfig: TableConfig<MemberRow> = {
|
|||||||
|
|
||||||
{
|
{
|
||||||
key: 'bb_status',
|
key: 'bb_status',
|
||||||
title: 'Бух.баланс',
|
title: 'Бух. баланс',
|
||||||
features: { multiselect: true },
|
features: { multiselect: true },
|
||||||
render: (v) => <StatusTag status={v as FileRussianStatus | undefined} />,
|
render: (v) => <StatusTag status={v as FileRussianStatus | undefined} />,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,6 +6,7 @@ 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 CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type LockModalProps = {
|
type LockModalProps = {
|
||||||
versionId: string | null;
|
versionId: string | null;
|
||||||
@ -114,7 +115,8 @@ export default function LockModal({ versionId, open, onOpenChange, currentUserId
|
|||||||
confirmLoading={submitting}
|
confirmLoading={submitting}
|
||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
onOk={handleOk}
|
onOk={handleOk}
|
||||||
cancelButtonProps={{ disabled: submitting }}>
|
cancelButtonProps={{ disabled: submitting }}
|
||||||
|
closeIcon={<CustomModalCloseIcon />}>
|
||||||
{loading && <Skeleton active paragraph={{ rows: 2 }} />}
|
{loading && <Skeleton active paragraph={{ rows: 2 }} />}
|
||||||
|
|
||||||
{!loading && loadError && (
|
{!loading && loadError && (
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import {
|
|||||||
mapResultText,
|
mapResultText,
|
||||||
pairCandidateRows,
|
pairCandidateRows,
|
||||||
} from './counterpartyMapping';
|
} from './counterpartyMapping';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
const SEARCH_DELAY_MS = 300;
|
const SEARCH_DELAY_MS = 300;
|
||||||
|
|
||||||
@ -229,6 +230,8 @@ export function CounterpartyMapModal({ versionId, row, onClose, onMapped, pairTa
|
|||||||
width={1040}
|
width={1040}
|
||||||
footer={null}
|
footer={null}
|
||||||
onCancel={onClose}
|
onCancel={onClose}
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
title={
|
title={
|
||||||
<>
|
<>
|
||||||
Выбор организации для связи с <span style={{ color: TITLE_COLOR }}>{sourceName}</span>
|
Выбор организации для связи с <span style={{ color: TITLE_COLOR }}>{sourceName}</span>
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import {
|
|||||||
resolveLeaveAfterFetch,
|
resolveLeaveAfterFetch,
|
||||||
} from '../../utils/consolidations';
|
} from '../../utils/consolidations';
|
||||||
import { pairsViewSearch } from './counterPairs';
|
import { pairsViewSearch } from './counterPairs';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
const TAB_CONFIG = [
|
const TAB_CONFIG = [
|
||||||
{ key: 'osv', label: 'ОСВ' },
|
{ key: 'osv', label: 'ОСВ' },
|
||||||
@ -149,10 +150,11 @@ export function OsvTabs({ summary, versionId, status }: Props) {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Segmented
|
<Segmented
|
||||||
|
className='customSegment'
|
||||||
value={activeKey}
|
value={activeKey}
|
||||||
onChange={handleTabChange}
|
onChange={handleTabChange}
|
||||||
disabled={checking}
|
disabled={checking}
|
||||||
style={{ alignSelf: 'flex-start', maxWidth: '100%', overflowX: 'auto' }}
|
style={{ alignSelf: 'flex-start', maxWidth: '100%', overflowX: 'auto', background: '#f1f3f4' }}
|
||||||
options={options}
|
options={options}
|
||||||
/>
|
/>
|
||||||
<CounterPairsModal
|
<CounterPairsModal
|
||||||
@ -200,6 +202,7 @@ export function CounterPairsModal({
|
|||||||
title='Проверьте встречные записи участников'
|
title='Проверьте встречные записи участников'
|
||||||
centered
|
centered
|
||||||
onCancel={onStay}
|
onCancel={onStay}
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
footer={[
|
footer={[
|
||||||
<Button key='show' onClick={onShow}>
|
<Button key='show' onClick={onShow}>
|
||||||
Показать пары
|
Показать пары
|
||||||
@ -212,7 +215,9 @@ export function CounterPairsModal({
|
|||||||
</Button>,
|
</Button>,
|
||||||
]}>
|
]}>
|
||||||
<div style={{ display: 'flex', gap: 12, alignItems: 'flex-start' }}>
|
<div style={{ display: 'flex', gap: 12, alignItems: 'flex-start' }}>
|
||||||
<WarningOutlined style={{ color: '#dc6803', fontSize: 20, marginTop: 2 }} />
|
<WarningOutlined
|
||||||
|
style={{ background: '#fff4e5', color: '#dc6803', fontSize: 20, marginTop: 2, padding: 10, borderRadius: '50%' }}
|
||||||
|
/>
|
||||||
<div>
|
<div>
|
||||||
<div style={{ fontWeight: 600 }}>{headline}</div>
|
<div style={{ fontWeight: 600 }}>{headline}</div>
|
||||||
<div style={{ color: '#667085' }}>{details}</div>
|
<div style={{ color: '#667085' }}>{details}</div>
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { Modal } from 'antd';
|
|||||||
import type React from 'react';
|
import type React from 'react';
|
||||||
import type { CreateEntityKind } from '../../types/relatedGroup/relatedGroup';
|
import type { CreateEntityKind } from '../../types/relatedGroup/relatedGroup';
|
||||||
import './CreateEntityPickerModal.css';
|
import './CreateEntityPickerModal.css';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
type Option = {
|
type Option = {
|
||||||
key: CreateEntityKind;
|
key: CreateEntityKind;
|
||||||
title: string;
|
title: string;
|
||||||
@ -52,14 +53,7 @@ export const CreateEntityPickerModal: React.FC<Props> = ({ open, onCancel, onSel
|
|||||||
footer={null}
|
footer={null}
|
||||||
centered
|
centered
|
||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
styles={{
|
closeIcon={<CustomModalCloseIcon />}>
|
||||||
header: {
|
|
||||||
borderBottom: '1px solid #f0f0f0',
|
|
||||||
paddingBottom: 16,
|
|
||||||
marginBottom: 0,
|
|
||||||
},
|
|
||||||
body: { paddingTop: 16, paddingBottom: 16 },
|
|
||||||
}}>
|
|
||||||
<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)}>
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { Alert, Button, Input, Modal, Space, Tooltip, Typography } from 'antd';
|
|||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
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 CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
checks: ChecksOut;
|
checks: ChecksOut;
|
||||||
@ -93,6 +94,9 @@ export function ChecksPanel({ checks, editable, dirty, onAccept, onShow }: Props
|
|||||||
okText='Принять'
|
okText='Принять'
|
||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
confirmLoading={saving}
|
confirmLoading={saving}
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
|
||||||
okButtonProps={{ disabled: comment.trim().length === 0 }}
|
okButtonProps={{ disabled: comment.trim().length === 0 }}
|
||||||
onOk={submit}
|
onOk={submit}
|
||||||
onCancel={() => setOpen(false)}>
|
onCancel={() => setOpen(false)}>
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import { type ReactNode, useState } from 'react';
|
|||||||
import { ApiError } from '../../api/client';
|
import { ApiError } from '../../api/client';
|
||||||
import { removeFile } from '../../services/api/files';
|
import { removeFile } from '../../services/api/files';
|
||||||
import type { DocumentRow } from './documentRows';
|
import type { DocumentRow } from './documentRows';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
const { Text } = Typography;
|
const { Text } = Typography;
|
||||||
|
|
||||||
@ -56,7 +57,14 @@ export default function DeleteReasonModal({ targetRow, open, onCancel, onDelete,
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<Modal title='Удаление документа' open={open} onCancel={onCancel} footer={null} destroyOnHidden>
|
<Modal
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
centered
|
||||||
|
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>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { FileAddOutlined, UploadOutlined } from '@ant-design/icons';
|
import { FileAddOutlined, UploadOutlined } from '@ant-design/icons';
|
||||||
import { Button, Input, Modal, Upload } from 'antd';
|
import { Button, Input, Modal, Upload } from 'antd';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
const { Dragger } = Upload;
|
const { Dragger } = Upload;
|
||||||
|
|
||||||
@ -36,6 +37,9 @@ export default function ReplaceDocModal({ open, docName, organizationName, submi
|
|||||||
icon: <UploadOutlined />,
|
icon: <UploadOutlined />,
|
||||||
disabled: file === null || reason.trim().length === 0,
|
disabled: file === null || reason.trim().length === 0,
|
||||||
}}
|
}}
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
|
||||||
|
centered
|
||||||
confirmLoading={submitting}>
|
confirmLoading={submitting}>
|
||||||
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
||||||
{organizationName && <span>{organizationName}</span>}
|
{organizationName && <span>{organizationName}</span>}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ 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 { summarizeUpload, uploadFiles } from '../../services/api/files';
|
||||||
|
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
legalEntityId: string;
|
legalEntityId: string;
|
||||||
@ -59,6 +60,9 @@ export function UploadDocumentsModal({ legalEntityId, consolidationId, organizat
|
|||||||
disabled: !summary && fileList.length === 0,
|
disabled: !summary && fileList.length === 0,
|
||||||
style: { background: summary || fileList.length > 0 ? '#237804' : undefined },
|
style: { background: summary || fileList.length > 0 ? '#237804' : undefined },
|
||||||
}}
|
}}
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
|
||||||
|
centered
|
||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
confirmLoading={uploading}
|
confirmLoading={uploading}
|
||||||
closable={!uploading}
|
closable={!uploading}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ 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 CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -156,7 +157,10 @@ export const NewConsolidationModal: React.FC<Props> = ({ open, onCancel, onOk })
|
|||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
confirmLoading={submitting}
|
confirmLoading={submitting}
|
||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
width={640}>
|
width={640}
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
>
|
||||||
<Form form={form} requiredMark={false} layout='vertical' preserve={false} initialValues={{ legal_entity_ids: [] }}>
|
<Form form={form} requiredMark={false} layout='vertical' preserve={false} initialValues={{ legal_entity_ids: [] }}>
|
||||||
<Row gutter={16}>
|
<Row gutter={16}>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { Modal } from 'antd';
|
import { Modal } from 'antd';
|
||||||
|
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -19,6 +20,8 @@ export const DeleteRelatedGroupModal: React.FC<Props> = ({ open, onCancel, onOk,
|
|||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
okButtonProps={{ danger: true }}
|
okButtonProps={{ danger: true }}
|
||||||
confirmLoading={loading}
|
confirmLoading={loading}
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
|
||||||
centered>
|
centered>
|
||||||
<p style={{ margin: 0, color: '#595959' }}>Группа связанных {kind === 'gsk' ? 'компаний' : 'заёмщиков'} будет удалена.</p>
|
<p style={{ margin: 0, color: '#595959' }}>Группа связанных {kind === 'gsk' ? 'компаний' : 'заёмщиков'} будет удалена.</p>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/
|
|||||||
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 CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -108,7 +109,11 @@ export const RelatedGroupForm: React.FC<Props> = ({ open, onCancel, onOk, relate
|
|||||||
cancelText='Отмена'
|
cancelText='Отмена'
|
||||||
destroyOnHidden
|
destroyOnHidden
|
||||||
loading={initialDataLoading}
|
loading={initialDataLoading}
|
||||||
confirmLoading={confirmLoading}>
|
confirmLoading={confirmLoading}
|
||||||
|
closeIcon={<CustomModalCloseIcon />}
|
||||||
|
|
||||||
|
centered
|
||||||
|
>
|
||||||
<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 />
|
||||||
|
|||||||
@ -9,6 +9,7 @@ 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 CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||||
|
|
||||||
type StatusModalProps = {
|
type StatusModalProps = {
|
||||||
open: boolean;
|
open: boolean;
|
||||||
@ -63,7 +64,9 @@ export default function ChangeStatusModal({ open, card, onClose, onSuccess }: St
|
|||||||
confirmLoading={submitting}
|
confirmLoading={submitting}
|
||||||
onOk={handleOk}
|
onOk={handleOk}
|
||||||
onCancel={() => !submitting && onClose()}
|
onCancel={() => !submitting && onClose()}
|
||||||
destroyOnHidden>
|
destroyOnHidden
|
||||||
|
centered
|
||||||
|
closeIcon={<CustomModalCloseIcon/>}>
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>
|
<div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>
|
||||||
<span style={{ color: '#667085' }}>Текущий этап</span>
|
<span style={{ color: '#667085' }}>Текущий этап</span>
|
||||||
<TableTag text={currentLabel} {...statusColorMapping[currentLabel]} />
|
<TableTag text={currentLabel} {...statusColorMapping[currentLabel]} />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user