This repository has been archived on 2025-05-09. You can view files and clone it, but cannot push or open issues or pull requests.
Владислав Чикалкин 75aebb97e3 2nd section complete
2020-09-03 18:53:11 +03:00

1357 lines
30 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Input from 'client/Elements/Input';
import Checkbox from 'client/Elements/Checkbox';
import InputNumber from 'client/Elements/InputNumber';
import TextArea from 'client/Elements/TextArea';
import Switch from 'client/Elements/Switch';
import Select from 'client/Elements/Select';
import Button from 'client/Elements/Button';
import { Divider } from 'antd';
export default [
{
title: 'Интерес/ЛС',
elements: [
{
divider: { title: 'Поиск интереса в CRM' },
},
{
title: 'Выбор Интереса/ЛС',
Component: Select,
props: {
name: 'selectSource',
valueName: 'source',
showSearch: true,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Выбор Предложения',
Component: Select,
props: {
name: 'selectQuote',
valueName: 'quote',
showSearch: true,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Пересчет без пересмотра',
Component: Switch,
props: {
name: 'cbxRecalcWthtRevision',
valueName: 'recalcWthtRevision',
},
layout: {
size: 'min',
flexDirection: 'row',
},
},
// {
// title: 'Выбор шаблона',
// Component: Select,
// props: {
// name: 'selectTemplate',
// valueName: 'template',
// },
// },
/** */
{
divider: { title: 'Создание нового интереса в CRM' },
},
/** */
{
title: 'Канал привлечения',
Component: Select,
props: {
name: 'selectChannel',
valueName: 'channel',
showSearch: true,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Новый контрагент',
Component: Input,
props: {
name: 'tbxNewClient',
valueName: 'newClient',
},
},
{
title: 'Существующий контрагент',
Component: Select,
props: {
name: 'selectAccount',
valueName: 'account',
showSearch: true,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'ИНН',
Component: Input,
props: {
// TODO regular min: 10, max: 12
name: 'tbxINN',
valueName: 'INN',
},
},
{
title: 'КПП',
Component: Input,
props: {
// TODO regular min: 9, max: 9
name: 'tbxKPP',
valueName: 'KPP',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Контактное лицо контрагента',
Component: Select,
props: {
name: 'selectContactClient',
valueName: 'contactClient',
showSearch: true,
},
},
{
title: 'Контактное лицо',
Component: Input,
props: {
name: 'tbxContact',
valueName: 'contact',
},
},
{
title: 'Пол контактного лица',
Component: Select,
props: {
name: 'selectContactGender',
valueName: 'contactGender',
showSearch: false,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Телефон',
Component: Input,
props: {
type: 'tel',
name: 'tbxPhoneNumber',
valueName: 'phoneNumber',
pattern: undefined,
//TODO: mask + 7(999) 999 99 99
},
},
{
title: 'E-mail',
Component: Input,
props: {
type: 'email',
name: 'tbxEmailAddress',
valueName: 'emailAddress',
pattern: undefined,
//TODO check email valid
},
},
/** */
{
divider: { empty: true },
},
/** */
{
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,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Агент',
Component: Select,
props: {
name: 'selectAgent',
valueName: 'agent',
showSearch: true,
},
},
{
title: 'Двойной агент',
Component: Select,
props: {
name: 'selectDoubleAgent',
valueName: 'doubleAgentgent',
showSearch: true,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Комментарий к интересу',
Component: TextArea,
props: {
name: 'tbxCommentLead',
valueName: 'commentLead',
},
layout: {
size: 'max',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
Component: Button,
props: {
type: 'primary',
size: 'large',
name: 'btnCreateLead',
text: 'Создать интерес',
onClick: undefined,
},
},
],
},
{
title: 'Лизинг',
elements: [
{
title: 'Продукт',
Component: Select,
props: {
name: 'selectProduct',
valueName: 'product',
},
},
{
title: 'Риск клиента',
Component: Select,
props: {
name: 'selectClientRisk',
valueName: 'clientRisk',
},
},
{
title: 'Тип клиента',
Component: Select,
props: {
name: 'selectClientType',
valueName: 'clientType',
},
},
/** */
{
divider: { empty: true },
},
/** */
// TODO Input x Addon
{
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',
},
},
/** */
{
divider: { empty: true },
},
/** */
// 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: Select,
props: {
name: 'selectAddEquipmentPayer',
valueName: 'addEquipmentPayer',
withSearch: false,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
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',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Последний платеж считается от',
Component: Select,
props: {
name: 'cbxLastPaymentRule',
valueName: 'lastPaymentRule',
},
},
{
title: 'Последний платеж, %',
Component: InputNumber,
props: {
min: '0',
max: '100',
name: 'tbxLastPaymentPerc',
valueName: 'lastPaymentPerc',
},
},
{
title: 'Последний платеж, руб.',
Component: InputNumber,
props: {
min: '0',
max: '1000000000',
step: '10000.00',
name: 'tbxLastPaymentRub',
valueName: 'lastPaymentRub',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Срок лизинга, мес',
Component: InputNumber,
props: {
min: '7',
max: '60',
name: 'tbxLeasingPeriod',
valueName: 'leasingPeriod',
},
},
{
title: 'Балансодержатель',
Component: Select,
props: {
name: 'selectBalanceHolder',
valueName: 'balanceHolder',
withSearch: false,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Вид графика',
Component: Select,
props: {
name: 'selectGraphType',
valueName: 'graphType',
withSearch: false,
},
},
// TODO: formatter, parser: %
{
title: 'Процент убывания платежей',
Component: InputNumber,
props: {
min: '50',
max: '99',
name: 'tbxParmentsDecreasePercent',
valueName: 'parmentsDecreasePercent',
},
},
{
title: 'Тип сезонности',
Component: Select,
props: {
name: 'selectSeasonType',
valueName: 'seasonType',
withSearch: false,
},
},
{
title: 'С какого платежа начинается высокий сезон',
Component: Select,
props: {
name: 'selectHighSeasonStart',
valueName: 'highSeasonStart',
withSearch: false,
},
},
/** */
{
divider: { empty: true },
},
/** */
{
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',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
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',
},
},
// {
// title: 'Таблица графика платежей',
// Component: Table,
// props: {
// name: 'tablePaymentGraph',
// valueName: 'paymentGraph',
// },
// },
],
},
{
title: 'Предмет лизинга',
elements: [
{
title: 'Тип предмета лизинга',
Component: Select,
props: {
name: 'selectLeaseObjectType',
valueName: 'leaseObjectType',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Марка',
Component: Select,
props: {
name: 'selectBrand',
valueName: 'brand',
},
},
{
title: 'Модель',
Component: Select,
props: {
name: 'selectModel',
valueName: 'model',
},
},
{
title: 'Комплектация',
Component: Select,
props: {
name: 'selectConfiguration',
valueName: 'configuration',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Риск ПЛ',
Component: Select,
props: {
name: 'selectLeaseObjectRisk',
valueName: 'leaseObjectRisk',
},
},
{
title: 'Группа обесценения',
Component: Select,
props: {
name: 'selectDepreciationGroup',
valueName: 'depreciationGroup',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Кол-во ПЛ в расчете',
Component: InputNumber,
props: {
name: 'tbxLeaseObjectCount',
valueName: 'leaseObjectCount',
},
},
{
title: 'ПЛ БУ',
Component: Switch,
props: {
name: 'cbxLeaseObjectUsed',
valueName: 'leaseObjectUsed',
},
layout: {
size: 'min',
// flexDirection: 'row',
},
},
{
title: 'ТС с прицепом',
Component: Select,
props: {
name: 'cbxWithTrailer',
valueName: 'withTrailer',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Год выпуска',
Component: InputNumber,
props: {
name: 'tbxLeaseObjectYear',
valueName: 'leaseObjectYear',
},
},
{
title: 'Категория ТС',
Component: Select,
props: {
name: 'selectLeaseObjectCategory',
valueName: 'leaseObjectCategory',
},
},
{
title: 'Срок поставки',
Component: Select,
props: {
name: 'selectDeliveryTime',
valueName: 'deliveryTime',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Тип двигателя',
Component: Select,
props: {
name: 'selectEngineType',
valueName: 'engineType',
},
},
{
title: 'Мощность, л.с.',
Component: InputNumber,
props: {
name: 'tbxLeaseObjectMotorPower',
valueName: 'leaseObjectMotorPower',
},
},
{
title: 'Объем двигателя, л',
Component: InputNumber,
props: {
name: 'tbxEngineVolume',
valueName: 'engineVolume',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Разрешенная макс.масса(кг)',
Component: InputNumber,
props: {
name: 'tbxMaxMass',
valueName: 'maxMass',
},
},
{
title: 'Количество мест',
Component: InputNumber,
props: {
name: 'tbxCountSeats',
valueName: 'countSeats',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Максимальная конструктивная скорость (при ПСМ)',
Component: InputNumber,
props: {
name: 'tbxMaxSpeed',
valueName: 'maxSpeed',
},
},
{
title: 'Грузоподъемность, т',
Component: InputNumber,
props: {
name: 'tbxTonnage',
valueName: 'tonnage',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'ПЛ используется для',
Component: Select,
props: {
name: 'selectLeaseObjectUseFor',
valueName: 'leaseObjectUseFor',
},
},
],
},
{
title: 'Поставщик/агент',
elements: [
/** */
{
divider: { title: 'Поставщик предмета лизинга' },
},
/** */
{
title: 'Салон приобретения',
Component: Select,
props: {
name: 'selectDealer',
valueName: 'dealer',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'ЮЛ поставщика',
Component: Select,
props: {
name: 'selectDealerPerson',
valueName: 'dealerPerson',
},
},
{
title: 'Условие АВ ЮЛ поставщика',
Component: Select,
props: {
name: 'selectDealerRewardСondition',
valueName: 'dealerRewardСondition',
},
},
{
title: 'Размер АВ ЮЛ поставщика',
Component: InputNumber,
props: {
name: 'tbxDealerRewardSumm',
valueName: 'dealerRewardSumm',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Брокер поставщика',
Component: Select,
props: {
name: 'selectDealerBroker',
valueName: 'dealerBroker',
},
},
{
title: 'Брокер поставщика',
Component: Select,
props: {
name: 'selectDealerBroker',
valueName: 'dealerBroker',
},
},
{
title: 'Условие АВ брокера поставщика',
Component: Select,
props: {
name: 'selectDealerBrokerRewardСondition',
valueName: 'dealerBrokerRewardСondition',
},
},
{
title: 'Размер АВ брокера поставщика',
Component: InputNumber,
props: {
name: 'tbxDealerBrokerRewardSumm',
valueName: 'dealerBrokerRewardSumm',
},
},
/** */
{
divider: { title: 'Агент, передавший контакт' },
},
/** */
{
title: 'Агент ФЛ',
Component: Select,
props: {
name: 'selectIndAgent',
valueName: 'indAgent',
},
},
{
title: 'Условие АВ агента ФЛ',
Component: Select,
props: {
name: 'SelectIndAgentRewardCondition',
valueName: 'indAgentRewardCondition',
},
},
{
title: 'Размер АВ агента ФЛ',
Component: InputNumber,
props: {
name: 'tbxIndAgentRewardSumm',
valueName: 'indAgentRewardSumm',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Двойной агент',
Component: Select,
props: {
name: 'selectCalcDoubleAgent',
valueName: 'calcDoubleAgent',
},
},
{
title: 'Условия АВ двойного агента',
Component: Select,
props: {
name: 'selectCalcDoubleAgentRewardCondition',
valueName: 'calcDoubleAgentRewardCondition',
},
},
{
title: 'Размер АВ двойного агента',
Component: InputNumber,
props: {
name: 'tbxCalcDoubleAgentRewardSumm',
valueName: 'calcDoubleAgentRewardSumm',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Брокер',
Component: Select,
props: {
name: 'selectCalcBroker',
valueName: 'calcBroker',
},
},
{
title: 'Условие АВ брокера',
Component: Select,
props: {
name: 'selectCalcBrokerRewardCondition',
valueName: 'calcBrokerRewardCondition',
},
},
{
title: 'Размер АВ брокера',
Component: InputNumber,
props: {
name: 'tbxCalcBrokerRewardSum',
valueName: 'calcBrokerRewardSum',
},
},
/** */
{
divider: { empty: true },
},
/** */
{
title: 'Финотдел',
Component: Select,
props: {
name: 'selectFinDepartment',
valueName: 'finDepartment',
},
},
{
title: 'Условие АВ финотдела',
Component: Select,
props: {
name: 'selectFinDepartmentRewardCondtion',
valueName: 'finDepartmentRewardCondtion',
},
},
{
title: 'Размер АВ финотдела',
Component: InputNumber,
props: {
name: 'tbxFinDepartmentRewardSumm',
valueName: 'finDepartmentRewardSumm',
},
},
],
},
{
title: 'Страхование',
elements: [
{
title: 'Марка',
Component: Select,
props: {
name: 'selectBrand',
valueName: 'brand',
},
},
{
title: 'Модель',
Component: Select,
props: {
name: 'selectModel',
valueName: 'model',
},
},
{
title: 'Комплектация',
Component: Select,
props: {
name: 'selectConfiguration',
valueName: 'configuration',
},
},
{
title: 'Год выпуска',
Component: InputNumber,
props: {
name: 'tbxLeaseObjectYear',
valueName: 'leaseObjectYear',
},
},
{
title: 'Тип двигателя',
Component: Select,
props: {
name: 'selectEngineType',
valueName: 'engineType',
},
},
{
title: 'Категория ТС',
Component: Select,
props: {
name: 'selectLeaseObjectCategory',
valueName: 'leaseObjectCategory',
},
},
{
title: 'Мощность, л.с.',
Component: InputNumber,
props: {
name: 'tbxLeaseObjectMotorPower',
valueName: 'leaseObjectMotorPower',
},
},
{
title: 'Объем двигателя, л',
Component: InputNumber,
props: {
name: 'tbxEngineVolume',
valueName: 'engineVolume',
},
},
{
title: 'ПЛ используется для',
Component: Select,
props: {
name: 'selectLeaseObjectUseFor',
valueName: 'leaseObjectUseFor',
},
},
{
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: Select,
props: {
name: 'selectInsKaskoType',
valueName: 'insKaskoType',
},
},
{
title: 'Стоимость страховки КАСКО на весь срок',
Component: InputNumber,
props: {
name: 'tbxInsKaskoPriceLeasePeriod',
valueName: 'insKaskoPriceLeasePeriod',
},
},
{
title: 'Децентрализованное страхование',
Component: Switch,
props: {
name: 'cbxInsDecentral',
valueName: 'insDecentral',
},
},
{
Component: Button,
props: {
type: 'primary',
name: 'btnInsCalculation',
text: 'Запрос расчета страховки',
onClick: undefined,
},
},
{
title: 'Срок страхования',
Component: Select,
props: {
name: 'selectInsPeriod',
valueName: 'insPeriod',
},
},
{
title: 'Франшиза',
Component: InputNumber,
props: {
name: 'tbxInsFranchise',
valueName: 'insFranchise',
},
},
{
title: 'Стоимость страхования доп.оборудования',
Component: InputNumber,
props: {
name: 'tbxInsAddEquipmentPrice',
valueName: 'insAddEquipmentPrice',
},
},
{
title: 'Неограниченное число водителей',
Component: Switch,
props: {
name: 'cbxInsUnlimitDrivers',
valueName: 'insUnlimitDrivers',
},
},
{
title: 'Наименьший возраст водителей',
Component: InputNumber,
props: {
name: 'tbxInsAgeDrivers',
valueName: 'insAgeDrivers',
},
},
{
title: 'Наименьший стаж водителей',
Component: InputNumber,
props: {
name: 'tbxInsExpDrivers',
valueName: 'insExpDrivers',
},
},
{
title: 'ИНН контрагента для расчета страховки',
Component: InputNumber,
props: {
name: 'tbxINN',
valueName: 'INN',
},
},
{
Component: Button,
props: {
type: 'primary',
name: 'btnDriversApplication',
text: 'Заявление на ограничения по водителям',
onClick: undefined,
},
},
],
},
{
title: 'Без ограничений',
elements: [
{
title: 'Тариф',
Component: Select,
props: {
name: 'selectTarif',
valueName: 'Tarif',
},
},
{
title: 'Ставка привлечения, %',
Component: InputNumber,
props: {
name: 'tbxCreditRate',
valueName: 'creditRate',
},
},
{
title: 'Ставка привлечения, %',
Component: InputNumber,
props: {
name: 'tbxCreditRate',
valueName: 'creditRate',
},
},
{
title: 'Ставка привлечения',
Component: Select,
props: {
name: 'selectRate',
valueName: 'rate',
},
},
{
title: 'Загрузить сессию пользователя',
Component: Select,
props: {
name: 'selectUserSession',
valueName: 'userSession',
},
},
{
title: 'Требование телематики',
Component: Select,
props: {
name: 'selectRequirementTelematic',
valueName: 'requirementTelematic',
},
},
{
title: 'Децентрализованное страхование',
Component: Switch,
props: {
name: 'cbxInsuranceDecentral',
valueName: 'insuranceDecentral',
},
},
{
title: 'Макс.возможное изменение стоимости ПЛ',
Component: InputNumber,
props: {
name: 'tbxMaxPriceChange',
valueName: 'maxPriceChange',
},
},
{
title: 'АВ импортера,%',
Component: InputNumber,
props: {
name: 'tbxImporterRewardPerc',
valueName: 'importerRewardPerc',
},
},
{
title: 'АВ импортера,руб.',
Component: InputNumber,
props: {
name: 'tbxImporterRewardRub',
valueName: 'tbxImporterRewardRub',
},
},
{
title: 'Отключить все проверки',
Component: Switch,
props: {
name: 'cbxDisableChecks',
valueName: 'disableChecks',
},
},
],
},
];