aurora-1589, исправление расхождения с макетом
This commit is contained in:
parent
65c44978bd
commit
0cb395f5e7
@ -5,3 +5,43 @@
|
||||
box-shadow: inset 0 0 0 1px #2ea64b38 !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[] = [];
|
||||
for (const r of allRows) {
|
||||
const v = r[key];
|
||||
if (!seen.has(v)) {
|
||||
if (!seen.has(v) && v) {
|
||||
seen.add(v);
|
||||
opts.push({ label: String(v), value: v });
|
||||
}
|
||||
|
||||
@ -92,6 +92,7 @@ export function ConsolidationPage() {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
minHeight: 0,
|
||||
borderRadius:12
|
||||
}}>
|
||||
{/* после «Взять в работу» перечитываем и панель «Организации»: в ней «Ответственный» */}
|
||||
<ConsoleTableWidget onVersionLocked={() => setReloadKey((k) => k + 1)} />
|
||||
@ -106,6 +107,7 @@ export function ConsolidationPage() {
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
minHeight: 0,
|
||||
borderRadius:12
|
||||
}}>
|
||||
<ConsoleLegalEntitiesTable reloadKey={reloadKey} onDrawerOpen={setPanelEntity} />
|
||||
</div>
|
||||
|
||||
@ -3,6 +3,7 @@ import { useRef, useState } from 'react';
|
||||
import { ApiError, api } from '../../api/client';
|
||||
import type { AdminUser, BusinessSegment, RegionalOffice, Role, UserCreate } from '../../api/types';
|
||||
import { useMountedRef, useNotifyError } from './hooks';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -97,7 +98,9 @@ export function CreateUserModal({ open, roles, offices, onClose, onCreated }: Pr
|
||||
confirmLoading={submitting}
|
||||
cancelButtonProps={{ disabled: submitting }}
|
||||
mask={{ closable: !submitting }}
|
||||
centered
|
||||
// форма смонтирована всегда (forceRender), поэтому её можно очистить после закрытия окна
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
forceRender
|
||||
afterClose={() => form.resetFields()}>
|
||||
<Form<FormValues> form={form} layout='vertical' onFinish={submit} disabled={submitting}>
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { Modal } from 'antd';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -19,7 +20,8 @@ export const ArchiveCompanyGroupModal: React.FC<Props> = ({ open, onCancel, onOk
|
||||
cancelText='Отмена'
|
||||
okButtonProps={isArchived ? undefined : { danger: true }}
|
||||
confirmLoading={loading}
|
||||
centered>
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon/>}>
|
||||
<p style={{ margin: 0, color: '#595959' }}>
|
||||
{isArchived ? 'Группа компаний вернётся из архива в список действующих.' : 'Группа компаний будет перенесена в архив.'}
|
||||
</p>
|
||||
|
||||
@ -7,6 +7,7 @@ import { fetchOneCompanyGroup } from '../../../services/api/directories/company_
|
||||
import type { CompanyGroupFormProps } from '../../../types/companyGroups/companyGroups';
|
||||
import { useNotificationApi } from '../../../utils/useNotification';
|
||||
import { loadOffices } from '../../Admin/UsersTable';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -109,7 +110,9 @@ export const CompanyGroupForm: React.FC<Props> = ({ open, onCancel, onOk, compan
|
||||
destroyOnHidden
|
||||
loading={initialDataLoading}
|
||||
confirmLoading={confirmLoading}
|
||||
width={720}>
|
||||
width={720}
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon/>}>
|
||||
<Form form={form} layout='vertical'>
|
||||
<Form.Item name='name' label='Название ГК' rules={[{ required: true, message: 'Укажите название ГК' }]}>
|
||||
<Input placeholder='Например: Агроком' />
|
||||
|
||||
@ -9,6 +9,7 @@ import type { RelatedGroupOut } from '../../../types/api';
|
||||
import type { CatalogueJurFormProps } from '../../../types/catalogueJur/catalogueJur';
|
||||
import { useNotificationApi } from '../../../utils/useNotification';
|
||||
import { loadOffices } from '../../Admin/UsersTable';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -163,7 +164,9 @@ export const CatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, jurId
|
||||
destroyOnHidden
|
||||
width={720}
|
||||
confirmLoading={confirmLoading}
|
||||
loading={initialDataLoading}>
|
||||
loading={initialDataLoading}
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon/>}>
|
||||
<Form form={form} layout='vertical'>
|
||||
<Row gutter={16}>
|
||||
<Col span={6}>
|
||||
|
||||
@ -9,6 +9,7 @@ import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/
|
||||
import { useAppDispatch, useAppSelector } from '../../../store/store';
|
||||
import type { MoveCatalogueJurProps } from '../../../types/catalogueJur/catalogueJur';
|
||||
import { useNotificationApi } from '../../../utils/useNotification';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
type FormValues = {
|
||||
name: string;
|
||||
@ -94,7 +95,9 @@ export const MoveCatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk, ju
|
||||
cancelText='Отмена'
|
||||
destroyOnHidden
|
||||
loading={initialDataLoading}
|
||||
confirmLoading={confirmLoading}>
|
||||
confirmLoading={confirmLoading}
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon/>}>
|
||||
<Form form={form} layout='vertical'>
|
||||
<FormItem name='name' label='ЮЛ'>
|
||||
<Input disabled />
|
||||
|
||||
@ -8,6 +8,7 @@ import { ApiError } from '../../../api/client';
|
||||
import { fetchOneCatalogueJur } from '../../../services/api/directories/catalogue_jur';
|
||||
import type { WithdrawCatalogueJurProps } from '../../../types/catalogueJur/catalogueJur';
|
||||
import { useNotificationApi } from '../../../utils/useNotification';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
interface FormValues extends WithdrawCatalogueJurProps {
|
||||
name: string;
|
||||
@ -87,7 +88,8 @@ export const WithdrawCatalogueJurForm: React.FC<Props> = ({ open, onCancel, onOk
|
||||
destroyOnHidden
|
||||
loading={initialDataLoading}
|
||||
confirmLoading={confirmLoading}
|
||||
okButtonProps={{ danger: true }}>
|
||||
okButtonProps={{ danger: true }}
|
||||
centered closeIcon={<CustomModalCloseIcon/>}>
|
||||
<Form form={form} layout='vertical'>
|
||||
<FormItem name='name' label='ЮЛ'>
|
||||
<Input disabled />
|
||||
|
||||
@ -5,6 +5,7 @@ import { ApiError } from '../../api/client';
|
||||
import { getChecklist } from '../../services/api/consolidations';
|
||||
import type { ChecklistBackendShape, IVersionCard } from '../../types/consolidations/version_members';
|
||||
import { buildChecklistColumns, buildChecklistRows, getMarksItems } from './checklist_utils';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type ChecklistProps = {
|
||||
open: boolean;
|
||||
@ -34,11 +35,13 @@ export default function ChecklistModal({ open, onDownload, consolidationData, on
|
||||
onCancel={onClose}
|
||||
title='Чеклист'
|
||||
destroyOnHidden
|
||||
centered
|
||||
onOk={() => {
|
||||
onDownload();
|
||||
onClose();
|
||||
}}
|
||||
okText='Скачать чек-лист'
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
okButtonProps={{ icon: <DownloadOutlined /> }}>
|
||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>
|
||||
{getMarksItems()}
|
||||
|
||||
@ -98,6 +98,7 @@ export function ConsoleLegalEntitiesTable({ onDrawerOpen, reloadKey }: { onDrawe
|
||||
color: '#667085',
|
||||
justifyContent: 'center',
|
||||
borderTop: '1px solid #f1f5f9',
|
||||
borderRadius:12,
|
||||
}}>
|
||||
Выберите консолидацию выше
|
||||
</div>
|
||||
|
||||
@ -112,7 +112,7 @@ export function buildChecklistColumns(checklistData: ChecklistBackendShape): Tab
|
||||
</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: 'osv',
|
||||
|
||||
@ -38,7 +38,7 @@ export const membersConfig: TableConfig<MemberRow> = {
|
||||
|
||||
{
|
||||
key: 'bb_status',
|
||||
title: 'Бух.баланс',
|
||||
title: 'Бух. баланс',
|
||||
features: { multiselect: true },
|
||||
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 { MAX_REASON_LENGTH, endSentence, isValidReason } from '../../utils/consolidations';
|
||||
import { quarterShortLabel } from '../../utils/labels';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type LockModalProps = {
|
||||
versionId: string | null;
|
||||
@ -114,7 +115,8 @@ export default function LockModal({ versionId, open, onOpenChange, currentUserId
|
||||
confirmLoading={submitting}
|
||||
cancelText='Отмена'
|
||||
onOk={handleOk}
|
||||
cancelButtonProps={{ disabled: submitting }}>
|
||||
cancelButtonProps={{ disabled: submitting }}
|
||||
closeIcon={<CustomModalCloseIcon />}>
|
||||
{loading && <Skeleton active paragraph={{ rows: 2 }} />}
|
||||
|
||||
{!loading && loadError && (
|
||||
|
||||
@ -19,6 +19,7 @@ import {
|
||||
mapResultText,
|
||||
pairCandidateRows,
|
||||
} from './counterpartyMapping';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
const SEARCH_DELAY_MS = 300;
|
||||
|
||||
@ -229,6 +230,8 @@ export function CounterpartyMapModal({ versionId, row, onClose, onMapped, pairTa
|
||||
width={1040}
|
||||
footer={null}
|
||||
onCancel={onClose}
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
title={
|
||||
<>
|
||||
Выбор организации для связи с <span style={{ color: TITLE_COLOR }}>{sourceName}</span>
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
resolveLeaveAfterFetch,
|
||||
} from '../../utils/consolidations';
|
||||
import { pairsViewSearch } from './counterPairs';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
const TAB_CONFIG = [
|
||||
{ key: 'osv', label: 'ОСВ' },
|
||||
@ -149,10 +150,11 @@ export function OsvTabs({ summary, versionId, status }: Props) {
|
||||
return (
|
||||
<>
|
||||
<Segmented
|
||||
className='customSegment'
|
||||
value={activeKey}
|
||||
onChange={handleTabChange}
|
||||
disabled={checking}
|
||||
style={{ alignSelf: 'flex-start', maxWidth: '100%', overflowX: 'auto' }}
|
||||
style={{ alignSelf: 'flex-start', maxWidth: '100%', overflowX: 'auto', background: '#f1f3f4' }}
|
||||
options={options}
|
||||
/>
|
||||
<CounterPairsModal
|
||||
@ -200,6 +202,7 @@ export function CounterPairsModal({
|
||||
title='Проверьте встречные записи участников'
|
||||
centered
|
||||
onCancel={onStay}
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
footer={[
|
||||
<Button key='show' onClick={onShow}>
|
||||
Показать пары
|
||||
@ -212,7 +215,9 @@ export function CounterPairsModal({
|
||||
</Button>,
|
||||
]}>
|
||||
<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 style={{ fontWeight: 600 }}>{headline}</div>
|
||||
<div style={{ color: '#667085' }}>{details}</div>
|
||||
|
||||
@ -3,6 +3,7 @@ import { Modal } from 'antd';
|
||||
import type React from 'react';
|
||||
import type { CreateEntityKind } from '../../types/relatedGroup/relatedGroup';
|
||||
import './CreateEntityPickerModal.css';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
type Option = {
|
||||
key: CreateEntityKind;
|
||||
title: string;
|
||||
@ -52,14 +53,7 @@ export const CreateEntityPickerModal: React.FC<Props> = ({ open, onCancel, onSel
|
||||
footer={null}
|
||||
centered
|
||||
destroyOnHidden
|
||||
styles={{
|
||||
header: {
|
||||
borderBottom: '1px solid #f0f0f0',
|
||||
paddingBottom: 16,
|
||||
marginBottom: 0,
|
||||
},
|
||||
body: { paddingTop: 16, paddingBottom: 16 },
|
||||
}}>
|
||||
closeIcon={<CustomModalCloseIcon />}>
|
||||
<div className='options'>
|
||||
{OPTIONS.map((opt) => (
|
||||
<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 type { ChecksOut, FailedCheckOut } from '../../types/api';
|
||||
import { expectedActualText, failureKey, failureText } from './checkText';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
checks: ChecksOut;
|
||||
@ -93,6 +94,9 @@ export function ChecksPanel({ checks, editable, dirty, onAccept, onShow }: Props
|
||||
okText='Принять'
|
||||
cancelText='Отмена'
|
||||
confirmLoading={saving}
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
|
||||
okButtonProps={{ disabled: comment.trim().length === 0 }}
|
||||
onOk={submit}
|
||||
onCancel={() => setOpen(false)}>
|
||||
|
||||
@ -3,6 +3,7 @@ import { type ReactNode, useState } from 'react';
|
||||
import { ApiError } from '../../api/client';
|
||||
import { removeFile } from '../../services/api/files';
|
||||
import type { DocumentRow } from './documentRows';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
const { Text } = Typography;
|
||||
|
||||
@ -56,7 +57,14 @@ export default function DeleteReasonModal({ targetRow, open, onCancel, onDelete,
|
||||
}
|
||||
};
|
||||
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 }}>
|
||||
<p style={{ color: '#667085', margin: 0 }}>Выберите причину удаления документа «{targetRow.name}»</p>
|
||||
<p style={{ color: 'red', fontSize: 11, margin: 0 }}>Будет удален/заменён сам файл и все его документы</p>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { FileAddOutlined, UploadOutlined } from '@ant-design/icons';
|
||||
import { Button, Input, Modal, Upload } from 'antd';
|
||||
import { useEffect, useState } from 'react';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
const { Dragger } = Upload;
|
||||
|
||||
@ -36,6 +37,9 @@ export default function ReplaceDocModal({ open, docName, organizationName, submi
|
||||
icon: <UploadOutlined />,
|
||||
disabled: file === null || reason.trim().length === 0,
|
||||
}}
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
|
||||
centered
|
||||
confirmLoading={submitting}>
|
||||
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>
|
||||
{organizationName && <span>{organizationName}</span>}
|
||||
|
||||
@ -4,6 +4,7 @@ import type { UploadFile } from 'antd/es/upload/interface';
|
||||
import { useState } from 'react';
|
||||
import { ApiError } from '../../api/client';
|
||||
import { summarizeUpload, uploadFiles } from '../../services/api/files';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
legalEntityId: string;
|
||||
@ -59,6 +60,9 @@ export function UploadDocumentsModal({ legalEntityId, consolidationId, organizat
|
||||
disabled: !summary && fileList.length === 0,
|
||||
style: { background: summary || fileList.length > 0 ? '#237804' : undefined },
|
||||
}}
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
|
||||
centered
|
||||
cancelText='Отмена'
|
||||
confirmLoading={uploading}
|
||||
closable={!uploading}
|
||||
|
||||
@ -11,6 +11,7 @@ import type { ConsolidationCreate, LegalEntityBrief, Quarter, RelatedGroupOut }
|
||||
import { MIN_PERIMETER } from '../../utils/consolidations';
|
||||
import { CompanyMultiSelect } from './CompanyOptionRow';
|
||||
import { membersFirst, preselectMembers } from './preselect';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -156,7 +157,10 @@ export const NewConsolidationModal: React.FC<Props> = ({ open, onCancel, onOk })
|
||||
cancelText='Отмена'
|
||||
confirmLoading={submitting}
|
||||
destroyOnHidden
|
||||
width={640}>
|
||||
width={640}
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
>
|
||||
<Form form={form} requiredMark={false} layout='vertical' preserve={false} initialValues={{ legal_entity_ids: [] }}>
|
||||
<Row gutter={16}>
|
||||
<Col span={12}>
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { Modal } from 'antd';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -19,6 +20,8 @@ export const DeleteRelatedGroupModal: React.FC<Props> = ({ open, onCancel, onOk,
|
||||
cancelText='Отмена'
|
||||
okButtonProps={{ danger: true }}
|
||||
confirmLoading={loading}
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
|
||||
centered>
|
||||
<p style={{ margin: 0, color: '#595959' }}>Группа связанных {kind === 'gsk' ? 'компаний' : 'заёмщиков'} будет удалена.</p>
|
||||
</Modal>
|
||||
|
||||
@ -9,6 +9,7 @@ import { getCompanyGroupsThunk } from '../../../store/slices/companyGroupsSlice/
|
||||
import { useAppDispatch, useAppSelector } from '../../../store/store';
|
||||
import type { RelatedGroupFormType } from '../../../types/relatedGroup/relatedGroup';
|
||||
import { useNotificationApi } from '../../../utils/useNotification';
|
||||
import CustomModalCloseIcon from '../../../components/CustomModalCloseIcon';
|
||||
|
||||
type Props = {
|
||||
open: boolean;
|
||||
@ -108,7 +109,11 @@ export const RelatedGroupForm: React.FC<Props> = ({ open, onCancel, onOk, relate
|
||||
cancelText='Отмена'
|
||||
destroyOnHidden
|
||||
loading={initialDataLoading}
|
||||
confirmLoading={confirmLoading}>
|
||||
confirmLoading={confirmLoading}
|
||||
closeIcon={<CustomModalCloseIcon />}
|
||||
|
||||
centered
|
||||
>
|
||||
<Form form={form} layout='vertical'>
|
||||
<FormItem name='crm_id' label='ID в CRM'>
|
||||
<Input />
|
||||
|
||||
@ -9,6 +9,7 @@ import type { ConsStatus } from '../../types/consolidations/common_types';
|
||||
import type { VersionCard } from '../../types/consolidations/version_members';
|
||||
import { CONS_STATUS_LABEL, MAX_REASON_LENGTH, canSubmitStatusChange, manualTransitions } from '../../utils/consolidations';
|
||||
import { statusColorMapping } from '../ConsoleTable/consts';
|
||||
import CustomModalCloseIcon from '../../components/CustomModalCloseIcon';
|
||||
|
||||
type StatusModalProps = {
|
||||
open: boolean;
|
||||
@ -63,7 +64,9 @@ export default function ChangeStatusModal({ open, card, onClose, onSuccess }: St
|
||||
confirmLoading={submitting}
|
||||
onOk={handleOk}
|
||||
onCancel={() => !submitting && onClose()}
|
||||
destroyOnHidden>
|
||||
destroyOnHidden
|
||||
centered
|
||||
closeIcon={<CustomModalCloseIcon/>}>
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>
|
||||
<span style={{ color: '#667085' }}>Текущий этап</span>
|
||||
<TableTag text={currentLabel} {...statusColorMapping[currentLabel]} />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user