1751 lines
52 KiB
TypeScript
1751 lines
52 KiB
TypeScript
import Button from 'client/Elements/Button';
|
||
import Checkbox from 'client/Elements/Checkbox';
|
||
import Input from 'client/Elements/Input';
|
||
import InputNumber from 'client/Elements/InputNumber';
|
||
import Label from 'client/Elements/Label';
|
||
import Radio from 'client/Elements/Radio';
|
||
import Select from 'client/Elements/Select';
|
||
import Switch from 'client/Elements/Switch';
|
||
import Table from 'client/Elements/Table';
|
||
import TextArea from 'client/Elements/TextArea';
|
||
import {
|
||
validateEmail,
|
||
validateInn,
|
||
validateKpp,
|
||
validatePhone,
|
||
} from 'client/tools/validate';
|
||
import { ISections } from 'core/types/Calculation/components';
|
||
import { ElementType } from 'core/types/Calculation/Store/elements';
|
||
|
||
const sections: ISections[] = [
|
||
{
|
||
title: 'Интерес/ЛС',
|
||
groups: [
|
||
{
|
||
title: 'Поиск интереса в CRM',
|
||
blocks: [
|
||
{
|
||
// blockTitle: '',
|
||
elements: [
|
||
//TODO Custom search
|
||
{
|
||
title: 'Выбор Интереса',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectLead',
|
||
valueName: 'lead',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
width: '30%',
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
//TODO Custom search
|
||
{
|
||
title: 'Лизинговая сделка',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectOpportunity',
|
||
valueName: 'opportunity',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
width: '30%',
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
//TODO Custom search
|
||
{
|
||
title: 'Выбор Предложения',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectQuote',
|
||
valueName: 'quote',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
width: '30%',
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Пересчет без пересмотра',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxRecalcWithRevision',
|
||
valueName: 'recalcWithRevision',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
|
||
{
|
||
title: 'Создание нового интереса в CRM',
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Канал привлечения',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectChannel',
|
||
valueName: 'channel',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Новый контрагент',
|
||
Component: Input,
|
||
props: {
|
||
name: 'tbxNewClient',
|
||
valueName: 'newClient',
|
||
},
|
||
},
|
||
{
|
||
title: 'Существующий контрагент',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectAccount',
|
||
valueName: 'account',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'ИНН',
|
||
Component: Input,
|
||
props: {
|
||
validation: {
|
||
errorMessage: 'Некорректный ИНН',
|
||
validator: validateInn,
|
||
},
|
||
name: 'tbxINN',
|
||
valueName: 'INN',
|
||
},
|
||
},
|
||
{
|
||
title: 'КПП',
|
||
Component: Input,
|
||
props: {
|
||
validation: {
|
||
errorMessage: 'Некорректный КПП',
|
||
validator: validateKpp,
|
||
},
|
||
name: 'tbxKPP',
|
||
valueName: 'KPP',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Контактное лицо контрагента',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectContactClient',
|
||
valueName: 'contactClient',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Контактное лицо',
|
||
Component: Input,
|
||
props: {
|
||
name: 'tbxContact',
|
||
valueName: 'contact',
|
||
},
|
||
},
|
||
{
|
||
title: 'Пол контактного лица',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioContactGender',
|
||
valueName: 'contactGender',
|
||
style: 'button',
|
||
},
|
||
},
|
||
|
||
{
|
||
title: 'Телефон',
|
||
Component: Input,
|
||
props: {
|
||
type: 'tel',
|
||
name: 'tbxPhoneNumber',
|
||
valueName: 'phoneNumber',
|
||
validation: {
|
||
errorMessage: 'Некорректный номер телефона',
|
||
validator: validatePhone,
|
||
},
|
||
//TODO: mask + 7(999) 999 99 99
|
||
},
|
||
},
|
||
{
|
||
title: 'E-mail',
|
||
Component: Input,
|
||
props: {
|
||
type: 'email',
|
||
name: 'tbxEmailAddress',
|
||
valueName: 'emailAddress',
|
||
//TODO email mask
|
||
validation: {
|
||
errorMessage: 'Некорректный E-mail',
|
||
validator: validateEmail,
|
||
},
|
||
},
|
||
},
|
||
],
|
||
},
|
||
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Поставщик',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectSupplier',
|
||
valueName: 'supplier',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Финотдел',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectFinDepartment',
|
||
valueName: 'finDepartment',
|
||
showSearch: false,
|
||
},
|
||
},
|
||
{
|
||
title: 'Брокер',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectBroker',
|
||
valueName: 'broker',
|
||
showSearch: false,
|
||
},
|
||
},
|
||
|
||
{
|
||
title: 'Агент',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectAgent',
|
||
valueName: 'agent',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Двойной агент',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectDoubleAgent',
|
||
valueName: 'doubleAgent',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Комментарий к интересу',
|
||
Component: TextArea,
|
||
props: {
|
||
name: 'tbxCommentLead',
|
||
valueName: 'commentLead',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
|
||
{
|
||
elements: [
|
||
{
|
||
type: ElementType.Button,
|
||
Component: Button,
|
||
props: {
|
||
type: 'primary',
|
||
size: 'large',
|
||
name: 'btnCreateLead',
|
||
text: 'Создать интерес',
|
||
actionName: 'createLead',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
newLine: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Лизинг',
|
||
groups: [
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Продукт',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectProduct',
|
||
valueName: 'product',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
width: '30%',
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Риск клиента',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectClientRisk',
|
||
valueName: 'clientRisk',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
width: '30%',
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Тип клиента',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectClientType',
|
||
valueName: 'clientType',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
width: '30%',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
blocks: [
|
||
{
|
||
title: 'Стоимость предмета лизинга и доп.оборудование',
|
||
elements: [
|
||
{
|
||
title: 'Валюта поставщика',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectSupplierCurrency',
|
||
valueName: 'supplierCurrency',
|
||
},
|
||
},
|
||
{
|
||
title: 'Стоимость предмета лизинга',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '10000',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxLeaseObjectPrice',
|
||
valueName: 'leaseObjectPrice',
|
||
},
|
||
},
|
||
// TODO formatter + rub, parser
|
||
{
|
||
title: 'Скидка от поставщика',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxSupplierDiscountRub',
|
||
valueName: 'supplierDiscountRub',
|
||
},
|
||
},
|
||
|
||
// TODO formatter + %, parser
|
||
{
|
||
title: 'Скидка от поставщика, %',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '100',
|
||
name: 'tbxSupplierDiscountPerc',
|
||
valueName: 'supplierDiscountPerc',
|
||
},
|
||
},
|
||
// TODO Input x Addon
|
||
// {
|
||
// title: 'Валюта доп.оборудования',
|
||
// Component: Select,
|
||
// props: {
|
||
// name: 'selectAddEquipmentCurrency',
|
||
// valueName: 'addEquipmentCurrency',
|
||
// },
|
||
// },
|
||
// {
|
||
// title: 'Стоимость доп.оборудования',
|
||
// Component: InputNumber,
|
||
// props: {
|
||
// min: '0',
|
||
// max: '1000000000',
|
||
// step: '10000.00',
|
||
// name: 'tbxAddEquipmentPrice',
|
||
// valueName: 'addEquipmentPrice',
|
||
// },
|
||
// },
|
||
// {
|
||
// title: 'Плательщик доп.оборудования',
|
||
// Component: Radio,
|
||
// props: {
|
||
// name: 'radioAddEquipmentPayer',
|
||
// valueName: 'addEquipmentPayer',
|
||
// withSearch: false,
|
||
// style: 'button',
|
||
// },
|
||
// },
|
||
],
|
||
},
|
||
{
|
||
title: 'Параметры договора лизинга',
|
||
elements: [
|
||
// TODO Input x Addon
|
||
{
|
||
title: 'Первый платеж, %',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '100',
|
||
name: 'tbxFirstPaymentPerc',
|
||
valueName: 'firstPaymentPerc',
|
||
},
|
||
},
|
||
{
|
||
title: 'Первый платеж, руб.',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxFirstPaymentRub',
|
||
valueName: 'firstPaymentRub',
|
||
},
|
||
},
|
||
{
|
||
title: 'Последний платеж считается от',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioLastPaymentRule',
|
||
valueName: 'lastPaymentRule',
|
||
style: 'button',
|
||
},
|
||
},
|
||
{
|
||
title: 'Последний платеж, %',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '100',
|
||
step: '1.000000',
|
||
name: 'tbxLastPaymentPerc',
|
||
valueName: 'lastPaymentPerc',
|
||
},
|
||
},
|
||
{
|
||
title: 'Последний платеж, руб.',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxLastPaymentRub',
|
||
valueName: 'lastPaymentRub',
|
||
},
|
||
},
|
||
{
|
||
title: 'Срок лизинга, мес',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '7',
|
||
max: '60',
|
||
name: 'tbxLeasingPeriod',
|
||
valueName: 'leasingPeriod',
|
||
},
|
||
},
|
||
{
|
||
title: 'Балансодержатель',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioBalanceHolder',
|
||
valueName: 'balanceHolder',
|
||
withSearch: false,
|
||
style: 'button',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Параметры графика платежей',
|
||
elements: [
|
||
{
|
||
title: 'Вид графика',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioGraphType',
|
||
valueName: 'graphType',
|
||
withSearch: false,
|
||
},
|
||
},
|
||
|
||
// TODO: formatter, parser: %
|
||
{
|
||
title: 'Процент убывания платежей',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '50',
|
||
max: '99',
|
||
name: 'tbxParmentsDecreasePercent',
|
||
valueName: 'parmentsDecreasePercent',
|
||
},
|
||
},
|
||
{
|
||
title: 'Тип сезонности',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioSeasonType',
|
||
valueName: 'seasonType',
|
||
withSearch: false,
|
||
style: 'button',
|
||
},
|
||
},
|
||
{
|
||
title: 'С какого платежа начинается высокий сезон',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectHighSeasonStart',
|
||
valueName: 'highSeasonStart',
|
||
withSearch: false,
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
newLine: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Параметры расчета',
|
||
elements: [
|
||
{
|
||
title: 'Комиссия, %',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '100',
|
||
name: 'tbxComissionPerc',
|
||
valueName: 'comissionPerc',
|
||
},
|
||
},
|
||
{
|
||
title: 'Комиссия, руб.',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxComissionRub',
|
||
valueName: 'comissionRub',
|
||
},
|
||
},
|
||
{
|
||
title: 'IRR, %',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0000',
|
||
max: '100.0000',
|
||
step: '0.0001',
|
||
name: 'tbxIRR_Perc',
|
||
valueName: 'IRR_Perc',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер бонуса МПЛ',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '100.00',
|
||
step: '1.00',
|
||
name: 'tbxSaleBonus',
|
||
valueName: 'saleBonus',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
type: ElementType.Table,
|
||
Component: Table,
|
||
props: {
|
||
name: 'tablePayments',
|
||
features: {
|
||
canDeleteRow: false,
|
||
numerize: {
|
||
columnTitle: 'Номер платежа',
|
||
},
|
||
},
|
||
columns: [
|
||
{
|
||
name: 'paymentRelation',
|
||
title: 'Соотношение платежа',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.01',
|
||
max: '100.00',
|
||
step: '1.00',
|
||
// TODO: toFixed
|
||
//numeral.js
|
||
},
|
||
},
|
||
],
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
newLine: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
// {
|
||
// title: 'Таблица графика платежей',
|
||
// Component: Table,
|
||
// props: {
|
||
// name: 'tablePaymentGraph',
|
||
// valueName: 'paymentGraph',
|
||
// },
|
||
// },
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'ПЛ',
|
||
groups: [
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Тип предмета лизинга',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectLeaseObjectType',
|
||
valueName: 'leaseObjectType',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Марка',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectBrand',
|
||
valueName: 'brand',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Модель',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectModel',
|
||
valueName: 'model',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Комплектация',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectConfiguration',
|
||
valueName: 'configuration',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: ' ',
|
||
elements: [
|
||
// TODO: Convert to Text
|
||
{
|
||
title: 'Риск ПЛ',
|
||
Component: Label,
|
||
props: {
|
||
name: 'labelLeaseObjectRisk',
|
||
computedValueName: 'leaseObjectRiskName',
|
||
},
|
||
},
|
||
|
||
// TODO: Convert to Text
|
||
{
|
||
title: 'Группа обесценения',
|
||
Component: Label,
|
||
props: {
|
||
name: 'labelDepreciationGroup',
|
||
valueName: 'depreciationGroup',
|
||
},
|
||
},
|
||
|
||
{
|
||
title: 'ПЛ БУ',
|
||
Component: Checkbox,
|
||
props: {
|
||
name: 'cbxLeaseObjectUsed',
|
||
valueName: 'leaseObjectUsed',
|
||
},
|
||
},
|
||
|
||
{
|
||
title: 'Срок поставки',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioDeliveryTime',
|
||
valueName: 'deliveryTime',
|
||
showSearch: false,
|
||
style: 'button',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Кол-во ПЛ в расчете',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '1',
|
||
max: '1000',
|
||
name: 'tbxLeaseObjectCount',
|
||
valueName: 'leaseObjectCount',
|
||
},
|
||
},
|
||
{
|
||
title: 'ПЛ используется для',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectLeaseObjectUseFor',
|
||
valueName: 'leaseObjectUseFor',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Год выпуска',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '1994',
|
||
max: new Date().getUTCFullYear() + 1,
|
||
name: 'tbxLeaseObjectYear',
|
||
valueName: 'leaseObjectYear',
|
||
},
|
||
},
|
||
{
|
||
title: 'Категория ТС',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectLeaseObjectCategory',
|
||
valueName: 'leaseObjectCategory',
|
||
showSearch: false,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Тип двигателя',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectEngineType',
|
||
valueName: 'engineType',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Мощность, л.с.',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '20000.00',
|
||
step: '10.00',
|
||
name: 'tbxLeaseObjectMotorPower',
|
||
valueName: 'leaseObjectMotorPower',
|
||
},
|
||
},
|
||
{
|
||
title: 'Объем двигателя, л',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '20000.00',
|
||
step: '10.00',
|
||
name: 'tbxEngineVolume',
|
||
valueName: 'engineVolume',
|
||
},
|
||
},
|
||
{
|
||
title: 'Разрешенная макс.масса(кг)',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '999999',
|
||
step: '100',
|
||
name: 'tbxMaxMass',
|
||
valueName: 'maxMass',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Количество мест',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '2000',
|
||
name: 'tbxCountSeats',
|
||
valueName: 'countSeats',
|
||
},
|
||
},
|
||
{
|
||
title: 'Макс. конструктивная скорость (при ПСМ)',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '2000',
|
||
name: 'tbxMaxSpeed',
|
||
valueName: 'maxSpeed',
|
||
},
|
||
},
|
||
{
|
||
title: 'Грузоподъемность, т',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '999999999',
|
||
step: '100',
|
||
name: 'tbxTonnage',
|
||
valueName: 'tonnage',
|
||
},
|
||
},
|
||
{
|
||
title: 'ТС с прицепом',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectWithTrailer',
|
||
valueName: 'withTrailer',
|
||
showSearch: false,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Поставщик/агент',
|
||
groups: [
|
||
{
|
||
title: 'Поставщик предмета лизинга',
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Салон приобретения',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectDealer',
|
||
valueName: 'dealer',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'ЮЛ поставщика',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectDealerPerson',
|
||
valueName: 'dealerPerson',
|
||
},
|
||
},
|
||
{
|
||
title: 'Условие АВ ЮЛ поставщика',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectDealerRewardСondition',
|
||
valueName: 'dealerRewardСondition',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер АВ ЮЛ поставщика',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0',
|
||
max: '20.0',
|
||
step: '0.1',
|
||
name: 'tbxDealerRewardSumm',
|
||
valueName: 'dealerRewardSumm',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
newLine: true,
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Брокер поставщика',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectDealerBroker',
|
||
valueName: 'dealerBroker',
|
||
},
|
||
},
|
||
{
|
||
title: 'Условие АВ брокера поставщика',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectDealerBrokerRewardСondition',
|
||
valueName: 'dealerBrokerRewardСondition',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер АВ брокера поставщика',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0',
|
||
max: '20.0',
|
||
step: '0.1',
|
||
name: 'tbxDealerBrokerRewardSumm',
|
||
valueName: 'dealerBrokerRewardSumm',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Агент, передавший контакт',
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Агент ФЛ',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectIndAgent',
|
||
valueName: 'indAgent',
|
||
},
|
||
},
|
||
{
|
||
title: 'Условие АВ агента ФЛ',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectIndAgentRewardCondition',
|
||
valueName: 'indAgentRewardCondition',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер АВ агента ФЛ',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0',
|
||
max: '20.0',
|
||
step: '0.1',
|
||
name: 'tbxIndAgentRewardSumm',
|
||
valueName: 'indAgentRewardSumm',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Двойной агент',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectCalcDoubleAgent',
|
||
valueName: 'calcDoubleAgent',
|
||
},
|
||
},
|
||
{
|
||
title: 'Условия АВ двойного агента',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectCalcDoubleAgentRewardCondition',
|
||
valueName: 'calcDoubleAgentRewardCondition',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер АВ двойного агента',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0',
|
||
max: '20.0',
|
||
step: '0.1',
|
||
name: 'tbxCalcDoubleAgentRewardSumm',
|
||
valueName: 'calcDoubleAgentRewardSumm',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Брокер',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectCalcBroker',
|
||
valueName: 'calcBroker',
|
||
},
|
||
},
|
||
{
|
||
title: 'Условие АВ брокера',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectCalcBrokerRewardCondition',
|
||
valueName: 'calcBrokerRewardCondition',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер АВ брокера',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0',
|
||
max: '20.0',
|
||
step: '0.1',
|
||
name: 'tbxCalcBrokerRewardSum',
|
||
valueName: 'calcBrokerRewardSum',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
newLine: true,
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Финотдел',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectCalcFinDepartment',
|
||
valueName: 'calcFinDepartment',
|
||
},
|
||
},
|
||
{
|
||
title: 'Условие АВ финотдела',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectFinDepartmentRewardCondtion',
|
||
valueName: 'finDepartmentRewardCondtion',
|
||
},
|
||
},
|
||
{
|
||
title: 'Размер АВ финотдела',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.0',
|
||
max: '20.0',
|
||
step: '0.1',
|
||
name: 'tbxFinDepartmentRewardSumm',
|
||
valueName: 'finDepartmentRewardSumm',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Страхование',
|
||
groups: [
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Марка',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectBrand',
|
||
valueName: 'brand',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Модель',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectModel',
|
||
valueName: 'model',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Комплектация',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectConfiguration',
|
||
valueName: 'configuration',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Год выпуска',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '1994',
|
||
max: new Date().getUTCFullYear() + 1,
|
||
name: 'tbxLeaseObjectYear',
|
||
valueName: 'leaseObjectYear',
|
||
},
|
||
},
|
||
{
|
||
title: 'Тип двигателя',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectEngineType',
|
||
valueName: 'engineType',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
{
|
||
title: 'Категория ТС',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectLeaseObjectCategory',
|
||
valueName: 'leaseObjectCategory',
|
||
showSearch: false,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Мощность, л.с.',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '20000.00',
|
||
step: '10.00',
|
||
name: 'tbxLeaseObjectMotorPower',
|
||
valueName: 'leaseObjectMotorPower',
|
||
},
|
||
},
|
||
{
|
||
title: 'Объем двигателя, л',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '20000.00',
|
||
step: '10.00',
|
||
name: 'tbxEngineVolume',
|
||
valueName: 'engineVolume',
|
||
},
|
||
},
|
||
{
|
||
title: 'ПЛ используется для',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectLeaseObjectUseFor',
|
||
valueName: 'leaseObjectUseFor',
|
||
showSearch: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Децентрализованное страхование',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxInsDecentral',
|
||
valueName: 'insDecentral',
|
||
},
|
||
},
|
||
{
|
||
title: 'Тип страхования КАСКО',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioInsKaskoType',
|
||
valueName: 'insKaskoType',
|
||
style: 'button',
|
||
},
|
||
},
|
||
{
|
||
title: 'Франшиза',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '300000',
|
||
step: '10000.00',
|
||
name: 'tbxInsFranchise',
|
||
valueName: 'insFranchise',
|
||
},
|
||
},
|
||
// {
|
||
// Component: Button,
|
||
// props: {
|
||
// type: 'primary',
|
||
// name: 'btnInsCalculation',
|
||
// text: 'Запрос расчета страховки',
|
||
// onClick: undefined,
|
||
// },
|
||
// },
|
||
// {
|
||
// title: 'Срок страхования',
|
||
// Component: Select,
|
||
// props: {
|
||
// name: 'selectInsPeriod',
|
||
// valueName: 'insPeriod',
|
||
// },
|
||
// },
|
||
{
|
||
Component: Button,
|
||
props: {
|
||
type: 'ghost',
|
||
name: 'btnFranschise',
|
||
text: 'Заявление на франшизу',
|
||
onClick: undefined,
|
||
},
|
||
},
|
||
// {
|
||
// title: 'Стоимость страхования доп.оборудования',
|
||
// Component: InputNumber,
|
||
// props: {
|
||
// min: '10000',
|
||
// max: '1000000000',
|
||
// step: '10000.00',
|
||
// name: 'tbxInsAddEquipmentPrice',
|
||
// valueName: 'insAddEquipmentPrice',
|
||
// },
|
||
// },
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Неограниченное число водителей',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxInsUnlimitDrivers',
|
||
valueName: 'insUnlimitDrivers',
|
||
},
|
||
},
|
||
{
|
||
title: 'Наименьший возраст водителей',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '18',
|
||
max: '99',
|
||
name: 'tbxInsAgeDrivers',
|
||
valueName: 'insAgeDrivers',
|
||
},
|
||
},
|
||
{
|
||
title: 'Наименьший стаж водителей',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '99',
|
||
name: 'tbxInsExpDrivers',
|
||
valueName: 'insExpDrivers',
|
||
},
|
||
},
|
||
// {
|
||
// title: 'ИНН контрагента для расчета страховки',
|
||
// Component: InputNumber,
|
||
// props: {
|
||
// name: 'tbxINNForCalc',
|
||
// valueName: 'INNForCalc',
|
||
// },
|
||
// },
|
||
{
|
||
Component: Button,
|
||
props: {
|
||
type: 'ghost',
|
||
name: 'btnDriversApplication',
|
||
text: 'Заявление на ограничения по водителям',
|
||
onClick: undefined,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Марка GPS',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectGPSBrand',
|
||
valueName: 'GPSBrand',
|
||
},
|
||
},
|
||
{
|
||
title: 'Модель GPS',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectGPSModel',
|
||
valueName: 'GPSModel',
|
||
},
|
||
},
|
||
{
|
||
title: 'Регион регистрации',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectRegionRegistration',
|
||
valueName: 'regionRegistration',
|
||
},
|
||
},
|
||
{
|
||
title: 'Город регистрации',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectTownRegistration',
|
||
valueName: 'townRegistration',
|
||
},
|
||
},
|
||
// {
|
||
// title: 'ОПФ для расчета страховки',
|
||
// Component: Select,
|
||
// props: {
|
||
// name: 'selectInfuranceOPF',
|
||
// valueName: 'infuranceOPF',
|
||
// },
|
||
// },
|
||
{
|
||
title: 'Стоимость страховки КАСКО на весь срок',
|
||
Component: InputNumber,
|
||
props: {
|
||
name: 'tbxInsKaskoPriceLeasePeriod',
|
||
computedValueName: 'insKaskoPriceLeasePeriod',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
type: ElementType.Table,
|
||
Component: Table,
|
||
props: {
|
||
name: 'tableInsurance',
|
||
columns: [
|
||
{
|
||
name: 'policyType',
|
||
title: 'Тип полиса',
|
||
Component: Label,
|
||
},
|
||
{
|
||
name: 'insuranceCompany',
|
||
title: 'Страховая компания',
|
||
Component: Select,
|
||
},
|
||
{
|
||
name: 'insured',
|
||
title: 'Плательщик',
|
||
Component: Select,
|
||
},
|
||
{
|
||
name: 'insCost',
|
||
title: 'Стоимость полиса',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '1500000.00',
|
||
step: '1000.00',
|
||
},
|
||
},
|
||
{
|
||
name: 'insTerm',
|
||
title: 'Срок страхования',
|
||
Component: Select,
|
||
},
|
||
],
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Доп. продукты',
|
||
groups: [
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Регистрация',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectRegistration',
|
||
valueName: 'registration',
|
||
},
|
||
},
|
||
{
|
||
title: 'НСИБ',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectInsNSIB',
|
||
valueName: 'insNSIB',
|
||
},
|
||
},
|
||
{
|
||
title: 'Карта техпомощи',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectTechnicalCard',
|
||
valueName: 'technicalCard',
|
||
},
|
||
},
|
||
{
|
||
title: 'Программа средства контроля',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioRequirementTelematic',
|
||
valueName: 'requirementTelematic',
|
||
style: 'button',
|
||
},
|
||
},
|
||
{
|
||
title: 'Телематика',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectTelematics',
|
||
valueName: 'telematics',
|
||
},
|
||
},
|
||
{
|
||
title: 'Маяк',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectTracker',
|
||
valueName: 'tracker',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Создание КП',
|
||
groups: [
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Последний платеж считать выкупным',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxLastPaymentRedemption',
|
||
valueName: 'lastPaymentRedemption',
|
||
},
|
||
},
|
||
{
|
||
title: 'Отображать стоимость ПЛ со скидкой',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxPriceWithDiscount',
|
||
valueName: 'priceWithDiscount',
|
||
},
|
||
},
|
||
{
|
||
title: 'Отображать удорожание',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxCostIncrease',
|
||
valueName: 'costIncrease',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Отображать страхование',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxInsurance',
|
||
valueName: 'insurance',
|
||
},
|
||
},
|
||
{
|
||
title: 'Отображать доп. оборудование',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxAddEquipment',
|
||
valueName: 'addEquipment',
|
||
},
|
||
},
|
||
{
|
||
title: 'Отображать регистрацию',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxRegistrationQuote',
|
||
valueName: 'registrationQuote',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Отображать карту техпомощи',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxTechnicalCardQuote',
|
||
valueName: 'technicalCardQuote',
|
||
},
|
||
},
|
||
{
|
||
title: 'Отображать НСИБ',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxNSIB',
|
||
valueName: 'NSIB',
|
||
},
|
||
},
|
||
{
|
||
title: 'Отображать график досрочного выкупа',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxQuoteRedemptionGraph',
|
||
valueName: 'quoteRedemptionGraph',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Имя',
|
||
Component: Input,
|
||
props: {
|
||
name: 'tbxQuoteName',
|
||
valueName: 'quoteName',
|
||
},
|
||
},
|
||
],
|
||
layout: {
|
||
newLine: true,
|
||
},
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Пол',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioQuoteContactGender',
|
||
valueName: 'quoteContactGender',
|
||
style: 'button',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
Component: Button,
|
||
props: {
|
||
type: 'primary',
|
||
size: 'large',
|
||
name: 'btnCreateKP',
|
||
text: 'Создать КП',
|
||
onClick: undefined,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
title: 'Без ограничений',
|
||
groups: [
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Загрузить сессию пользователя',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectUserSession',
|
||
valueName: 'userSession',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
blocks: [
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Отключить все проверки',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxDisableChecks',
|
||
valueName: 'disableChecks',
|
||
},
|
||
},
|
||
{
|
||
title: 'Тариф',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectTarif',
|
||
valueName: 'Tarif',
|
||
},
|
||
},
|
||
{
|
||
title: 'Ставка привлечения, %',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '99.99',
|
||
step: '0.1',
|
||
name: 'tbxCreditRate',
|
||
valueName: 'creditRate',
|
||
},
|
||
},
|
||
{
|
||
title: 'Ставка привлечения',
|
||
Component: Select,
|
||
props: {
|
||
name: 'selectRate',
|
||
valueName: 'rate',
|
||
},
|
||
},
|
||
{
|
||
title: 'Требование телематики',
|
||
Component: Radio,
|
||
props: {
|
||
name: 'radioRequirementTelematic',
|
||
valueName: 'requirementTelematic',
|
||
style: 'button',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
elements: [
|
||
{
|
||
title: 'Децентрализованное страхование',
|
||
Component: Switch,
|
||
props: {
|
||
name: 'cbxInsuranceDecentral',
|
||
valueName: 'insuranceDecentral',
|
||
},
|
||
},
|
||
{
|
||
title: 'Макс.возможное изменение стоимости ПЛ',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxMaxPriceChange',
|
||
valueName: 'maxPriceChange',
|
||
},
|
||
},
|
||
{
|
||
title: 'АВ импортера,%',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0.00',
|
||
max: '99.99',
|
||
step: '0.1',
|
||
name: 'tbxImporterRewardPerc',
|
||
valueName: 'importerRewardPerc',
|
||
},
|
||
},
|
||
{
|
||
title: 'АВ импортера,руб.',
|
||
Component: InputNumber,
|
||
props: {
|
||
min: '0',
|
||
max: '1000000000',
|
||
step: '10000.00',
|
||
name: 'tbxImporterRewardRub',
|
||
valueName: 'importerRewardRub',
|
||
},
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
];
|
||
|
||
export default sections;
|