diff --git a/src/client/Containers/Calculation/Sections/list.js b/src/client/Containers/Calculation/Sections/list.js index 5310b52..49378c8 100644 --- a/src/client/Containers/Calculation/Sections/list.js +++ b/src/client/Containers/Calculation/Sections/list.js @@ -1,11 +1,12 @@ -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'; +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 TextArea from 'client/Elements/TextArea'; export default [ { @@ -158,11 +159,11 @@ export default [ }, { title: 'Пол контактного лица', - Component: Select, + Component: Radio, props: { - name: 'selectContactGender', + name: 'radioContactGender', valueName: 'contactGender', - showSearch: false, + style: 'button', }, }, @@ -397,11 +398,12 @@ export default [ }, { title: 'Плательщик доп.оборудования', - Component: Select, + Component: Radio, props: { - name: 'selectAddEquipmentPayer', + name: 'radioAddEquipmentPayer', valueName: 'addEquipmentPayer', withSearch: false, + style: 'button', }, }, @@ -441,10 +443,11 @@ export default [ { title: 'Последний платеж считается от', - Component: Select, + Component: Radio, props: { - name: 'cbxLastPaymentRule', + name: 'radioLastPaymentRule', valueName: 'lastPaymentRule', + style: 'button', }, }, { @@ -487,11 +490,12 @@ export default [ }, { title: 'Балансодержатель', - Component: Select, + Component: Radio, props: { - name: 'selectBalanceHolder', + name: 'radioBalanceHolder', valueName: 'balanceHolder', withSearch: false, + style: 'button', }, }, @@ -503,9 +507,9 @@ export default [ { title: 'Вид графика', - Component: Select, + Component: Radio, props: { - name: 'selectGraphType', + name: 'radioGraphType', valueName: 'graphType', withSearch: false, }, @@ -524,11 +528,12 @@ export default [ }, { title: 'Тип сезонности', - Component: Select, + Component: Radio, props: { - name: 'selectSeasonType', + name: 'radioSeasonType', valueName: 'seasonType', withSearch: false, + style: 'button', }, }, { @@ -663,9 +668,9 @@ export default [ // TODO: Convert to Text { title: 'Риск ПЛ', - Component: Select, + Component: Label, props: { - name: 'selectLeaseObjectRisk', + name: 'labelLeaseObjectRisk', valueName: 'leaseObjectRisk', }, }, @@ -673,9 +678,9 @@ export default [ // TODO: Convert to Text { title: 'Группа обесценения', - Component: Select, + Component: Label, props: { - name: 'selectDepreciationGroup', + name: 'labelDepreciationGroup', valueName: 'depreciationGroup', }, }, @@ -744,11 +749,12 @@ export default [ { title: 'Срок поставки', - Component: Select, + Component: Radio, props: { - name: 'selectDeliveryTime', + name: 'radioDeliveryTime', valueName: 'deliveryTime', showSearch: false, + style: 'button', }, }, { @@ -844,7 +850,7 @@ export default [ title: 'ТС с прицепом', Component: Select, props: { - name: 'cbxWithTrailer', + name: 'selectWithTrailer', valueName: 'withTrailer', showSearch: false, }, @@ -895,6 +901,9 @@ export default [ title: 'Размер АВ ЮЛ поставщика', Component: InputNumber, props: { + min: '0.0', + max: '20.0', + step: '0.1', name: 'tbxDealerRewardSumm', valueName: 'dealerRewardSumm', }, @@ -906,14 +915,6 @@ export default [ }, /** */ - { - title: 'Брокер поставщика', - Component: Select, - props: { - name: 'selectDealerBroker', - valueName: 'dealerBroker', - }, - }, { title: 'Брокер поставщика', Component: Select, @@ -934,6 +935,9 @@ export default [ title: 'Размер АВ брокера поставщика', Component: InputNumber, props: { + min: '0.0', + max: '20.0', + step: '0.1', name: 'tbxDealerBrokerRewardSumm', valueName: 'dealerBrokerRewardSumm', }, @@ -949,6 +953,7 @@ export default [ title: 'Агент ФЛ', Component: Select, props: { + disabled: true, name: 'selectIndAgent', valueName: 'indAgent', }, @@ -965,6 +970,9 @@ export default [ title: 'Размер АВ агента ФЛ', Component: InputNumber, props: { + min: '0.0', + max: '20.0', + step: '0.1', name: 'tbxIndAgentRewardSumm', valueName: 'indAgentRewardSumm', }, @@ -996,6 +1004,9 @@ export default [ title: 'Размер АВ двойного агента', Component: InputNumber, props: { + min: '0.0', + max: '20.0', + step: '0.1', name: 'tbxCalcDoubleAgentRewardSumm', valueName: 'calcDoubleAgentRewardSumm', }, @@ -1027,6 +1038,9 @@ export default [ title: 'Размер АВ брокера', Component: InputNumber, props: { + min: '0.0', + max: '20.0', + step: '0.1', name: 'tbxCalcBrokerRewardSum', valueName: 'calcBrokerRewardSum', }, @@ -1044,6 +1058,7 @@ export default [ props: { name: 'selectFinDepartment', valueName: 'finDepartment', + disabled: true, }, }, { @@ -1058,6 +1073,9 @@ export default [ title: 'Размер АВ финотдела', Component: InputNumber, props: { + min: '0.0', + max: '20.0', + step: '0.1', name: 'tbxFinDepartmentRewardSumm', valueName: 'finDepartmentRewardSumm', }, @@ -1067,12 +1085,17 @@ export default [ { title: 'Страхование', elements: [ + { + divider: { title: 'Параметры предмета лизинга' }, + }, + { title: 'Марка', Component: Select, props: { name: 'selectBrand', valueName: 'brand', + showSearch: true, }, }, { @@ -1081,6 +1104,7 @@ export default [ props: { name: 'selectModel', valueName: 'model', + showSearch: true, }, }, { @@ -1089,12 +1113,22 @@ export default [ props: { name: 'selectConfiguration', valueName: 'configuration', + showSearch: true, }, }, + + /** */ + { + divider: { empty: true }, + }, + /** */ + { title: 'Год выпуска', Component: InputNumber, props: { + min: '1994', + max: new Date().getUTCFullYear() + 1, name: 'tbxLeaseObjectYear', valueName: 'leaseObjectYear', }, @@ -1105,6 +1139,7 @@ export default [ props: { name: 'selectEngineType', valueName: 'engineType', + showSearch: true, }, }, { @@ -1113,12 +1148,23 @@ export default [ props: { name: 'selectLeaseObjectCategory', valueName: 'leaseObjectCategory', + showSearch: false, }, }, + + /** */ + { + divider: { empty: true }, + }, + /** */ + { title: 'Мощность, л.с.', Component: InputNumber, props: { + min: '0.00', + max: '20000.00', + step: '10.00', name: 'tbxLeaseObjectMotorPower', valueName: 'leaseObjectMotorPower', }, @@ -1127,6 +1173,9 @@ export default [ title: 'Объем двигателя, л', Component: InputNumber, props: { + min: '0.00', + max: '20000.00', + step: '10.00', name: 'tbxEngineVolume', valueName: 'engineVolume', }, @@ -1137,24 +1186,37 @@ export default [ props: { name: 'selectLeaseObjectUseFor', valueName: 'leaseObjectUseFor', + showSearch: true, }, }, + + /** */ { - title: 'Марка GPS', - Component: Select, - props: { - name: 'selectGPSBrand', - valueName: 'GPSBrand', - }, + divider: { empty: true }, }, + /** */ + + // { + // title: 'Марка GPS', + // Component: Select, + // props: { + // name: 'selectGPSBrand', + // valueName: 'GPSBrand', + // }, + // }, + // { + // title: 'Модель GPS', + // Component: Select, + // props: { + // name: 'selectGPSModel', + // valueName: 'GPSModel', + // }, + // }, + { - title: 'Модель GPS', - Component: Select, - props: { - name: 'selectGPSModel', - valueName: 'GPSModel', - }, + divider: { title: 'Условия страхования' }, }, + { title: 'Регион регистрации', Component: Select, @@ -1171,28 +1233,39 @@ export default [ valueName: 'townRegistration', }, }, + // { + // title: 'ОПФ для расчета страховки', + // Component: Select, + // props: { + // name: 'selectInfuranceOPF', + // valueName: 'infuranceOPF', + // }, + // }, + + /** */ { - title: 'ОПФ для расчета страховки', - Component: Select, - props: { - name: 'selectInfuranceOPF', - valueName: 'infuranceOPF', - }, + divider: { empty: true }, }, + /** */ + { title: 'Тип страхования КАСКО', - Component: Select, + Component: Radio, props: { - name: 'selectInsKaskoType', + name: 'radioInsKaskoType', valueName: 'insKaskoType', + style: 'button', }, }, { - title: 'Стоимость страховки КАСКО на весь срок', + title: 'Франшиза', Component: InputNumber, props: { - name: 'tbxInsKaskoPriceLeasePeriod', - valueName: 'insKaskoPriceLeasePeriod', + min: '10000', + max: '300000', + step: '10000.00', + name: 'tbxInsFranchise', + valueName: 'insFranchise', }, }, { @@ -1203,35 +1276,46 @@ export default [ valueName: 'insDecentral', }, }, + // { + // Component: Button, + // props: { + // type: 'primary', + // name: 'btnInsCalculation', + // text: 'Запрос расчета страховки', + // onClick: undefined, + // }, + // }, + // { + // title: 'Срок страхования', + // Component: Select, + // props: { + // name: 'selectInsPeriod', + // valueName: 'insPeriod', + // }, + // }, { Component: Button, props: { - type: 'primary', - name: 'btnInsCalculation', - text: 'Запрос расчета страховки', + type: 'ghost', + name: 'btn', + text: 'Заявление на франшизу', onClick: undefined, }, }, + + /** */ { - title: 'Срок страхования', - Component: Select, - props: { - name: 'selectInsPeriod', - valueName: 'insPeriod', - }, - }, - { - title: 'Франшиза', - Component: InputNumber, - props: { - name: 'tbxInsFranchise', - valueName: 'insFranchise', - }, + divider: { empty: true }, }, + /** */ + { title: 'Стоимость страхования доп.оборудования', Component: InputNumber, props: { + min: '10000', + max: '1000000000', + step: '10000.00', name: 'tbxInsAddEquipmentPrice', valueName: 'insAddEquipmentPrice', }, @@ -1248,6 +1332,8 @@ export default [ title: 'Наименьший возраст водителей', Component: InputNumber, props: { + min: '18', + max: '99', name: 'tbxInsAgeDrivers', valueName: 'insAgeDrivers', }, @@ -1256,18 +1342,20 @@ export default [ title: 'Наименьший стаж водителей', Component: InputNumber, props: { + min: '0', + max: '99', name: 'tbxInsExpDrivers', valueName: 'insExpDrivers', }, }, - { - title: 'ИНН контрагента для расчета страховки', - Component: InputNumber, - props: { - name: 'tbxINN', - valueName: 'INN', - }, - }, + // { + // title: 'ИНН контрагента для расчета страховки', + // Component: InputNumber, + // props: { + // name: 'tbxINN', + // valueName: 'INN', + // }, + // }, { Component: Button, props: { @@ -1277,6 +1365,17 @@ export default [ onClick: undefined, }, }, + { + title: 'Стоимость страховки КАСКО на весь срок', + Component: InputNumber, + props: { + min: '10000', + max: '1000000000', + step: '10000.00', + name: 'tbxInsKaskoPriceLeasePeriod', + valueName: 'insKaskoPriceLeasePeriod', + }, + }, ], }, { diff --git a/src/client/Elements/Button.jsx b/src/client/Elements/Button.jsx index 88526b6..7d48fa6 100644 --- a/src/client/Elements/Button.jsx +++ b/src/client/Elements/Button.jsx @@ -9,10 +9,10 @@ const Button = ({ type, size, name, text, onClick }) => { return ( { + const { value } = useStoreValue({ computedValue, valueName }); + + //TODO: Hide if no value + + return ( + + {value} + + ); +}; + +export default observer(Label); diff --git a/src/client/Elements/Radio.jsx b/src/client/Elements/Radio.jsx index b60013f..d1427ee 100644 --- a/src/client/Elements/Radio.jsx +++ b/src/client/Elements/Radio.jsx @@ -6,7 +6,7 @@ import { Status } from 'core/types/elements'; import { observer } from 'mobx-react'; import React from 'react'; -const Radio = ({ name, buttonStyle, computedValue, valueName }) => { +const Radio = ({ name, style, computedValue, valueName }) => { const { value, setCurrentValue } = useStoreValue({ computedValue, valueName, @@ -14,16 +14,42 @@ const Radio = ({ name, buttonStyle, computedValue, valueName }) => { const { status } = useStatus(name); const { options } = useOptions(name); + /** + * TODO: style type in core + * TODO: column + */ + return ( setCurrentValue(e.target.value)} + onChange={(e) => { + if (e && e.target) setCurrentValue(e.target.value); + }} > - {options.map((option, i) => ( - {option.name} - ))} + {options.map((option, i) => { + switch (style) { + case 'button': { + if (option) { + return ( + + {option.name} + + ); + } + } + + default: + { + if (option) + return ( + {option.name} + ); + } + break; + } + })} ); }; diff --git a/src/client/Elements/Select.jsx b/src/client/Elements/Select.jsx index ba946ac..929ff3a 100644 --- a/src/client/Elements/Select.jsx +++ b/src/client/Elements/Select.jsx @@ -6,7 +6,7 @@ import { observer } from 'mobx-react'; import React from 'react'; import { useOptions } from 'client/hooks/useOptions'; -const Select = ({ name, showSearch, computedValue, valueName }) => { +const Select = ({ disabled, name, showSearch, computedValue, valueName }) => { const { value, setCurrentValue } = useStoreValue({ computedValue, valueName, @@ -14,21 +14,23 @@ const Select = ({ name, showSearch, computedValue, valueName }) => { const { status } = useStatus(name); const { options, filter } = useOptions(name); - console.log('Select -> showSearch', showSearch); return ( setCurrentValue(value)} + onChange={(val) => setCurrentValue(val)} > - {options.map((option, i) => ( - - {option.name} - - ))} + {options.map((option, i) => { + if (option) + return ( + + {option.name} + + ); + })} ); }; diff --git a/src/core/config/initialOptions.ts b/src/core/config/initialOptions.ts index 1e0f4c7..1d3350f 100644 --- a/src/core/config/initialOptions.ts +++ b/src/core/config/initialOptions.ts @@ -1,14 +1,312 @@ const initialOptions: any = { selectChannel: [ { - name: 'Audi', - value: '11111', + name: 'От агента-ФЛ-сотрудника поставщика', + value: '100000000', + }, + , + { + name: 'Поставщик (финотдел)', + value: '100000001', }, { - name: 'BMW', - value: 55555 - } - ] + name: 'От агента-ФЛ (не сотрудник поставщика)', + value: '100000002', + }, + { + name: 'Брокер (ЮЛ/ИП не связан с поставщиком)', + value: '100000003', + }, + { + name: 'Прочее', + value: '100000004', + }, + ], + + radioContactGender: [ + { + name: 'Мужской', + value: '100000000', + }, + , + { + name: 'Женский', + value: '100000001', + }, + ], + + radioAddEquipmentPayer: [ + { + name: 'Лизингополучатель', + value: '100000000', + }, + , + { + name: 'Лизингодатель', + value: '100000001', + }, + ], + + radioLastPaymentRule: [ + { + name: 'рублей', + value: '100000000', + }, + , + { + name: '%', + value: '100000001', + }, + ], + + radioBalanceHolder: [ + { + name: 'Лизингополучатель', + value: '100000000', + }, + , + { + name: 'Лизингодатель', + value: '100000001', + }, + ], + + radioGraphType: [ + { + name: 'аннуитет', + value: '100000000', + }, + , + { + name: 'дегрессия (ступенчатая)', + value: '100000001', + }, + { + name: 'равноубывающий', + value: '100000002', + }, + { + name: 'сезонный', + value: '100000003', + }, + { + name: 'легкий старт', + value: '100000004', + }, + ], + + radioSeasonType: [ + { + name: '6/6', + value: '100000000', + }, + , + { + name: '8/4', + value: '100000001', + }, + { + name: '4/4/4', + value: '100000002', + }, + ], + + selectHighSeasonStart: [ + { + name: '2', + value: '100000000', + }, + , + { + name: '3', + value: '100000001', + }, + { + name: '4', + value: '100000002', + }, + { + name: '5', + value: '100000003', + }, + { + name: '6', + value: '100000004', + }, + { + name: '7', + value: '100000005', + }, + { + name: '8', + value: '100000006', + }, + ], + + radioDeliveryTime: [ + { + name: 'В наличии', + value: '100000000', + }, + , + { + name: 'В поставке', + value: '100000001', + }, + ], + + selectWithTrailer: [ + { + name: 'пусто', + value: '100000000', + }, + , + { + name: 'Да', + value: '100000001', + }, + { + name: 'Нет', + value: '100000002', + }, + ], + + selectEngineType: [ + { + name: 'Бензин', + value: '100000000', + }, + , + { + name: 'Дизель', + value: '100000001', + }, + { + name: 'Газ', + value: '100000002', + }, + { + name: 'Электрический', + value: '100000003', + }, + { + name: 'Гибрид', + value: '100000004', + }, + ], + + selectLeaseObjectCategory: [ + { + name: 'A', + value: '100000000', + }, + , + { + name: 'B', + value: '100000001', + }, + , + { + name: 'C', + value: '100000002', + }, + , + { + name: 'D', + value: '100000003', + }, + , + { + name: 'Прицеп', + value: '100000004', + }, + ], + selectLeaseObjectUseFor: [ + { + name: '', + value: '100000000', + }, + { + name: '', + value: '100000001', + }, + { + name: '', + value: '100000002', + }, + { + name: '', + value: '100000003', + }, + { + name: '', + value: '100000004', + }, + { + name: '', + value: '100000005', + }, + { + name: '', + value: '100000006', + }, + { + name: '', + value: '100000007', + }, + { + name: '', + value: '100000008', + }, + { + name: '', + value: '100000009', + }, + ], + + radioInsuranceOPF: [ + { + name: 'ЮЛ', + value: '100000000', + }, + { + name: 'ИП', + value: '100000001', + }, + ], + + radioInsKaskoType: [ + { + name: 'Полное', + value: '100000000', + }, + { + name: 'Усеченное', + value: '100000001', + }, + ], + + radioQuoteContactGender: [ + { + name: 'Мужской', + value: '100000000', + }, + { + name: 'Женский', + value: '100000001', + }, + ], + + selectRquirementTelematic: [ + { + name: 'Обязательна', + value: '100000000', + }, + { + name: 'Не требуется', + value: '100000001', + }, + ], }; export default initialOptions; diff --git a/src/core/config/initialStatuses.ts b/src/core/config/initialStatuses.ts index 006f702..e09edde 100644 --- a/src/core/config/initialStatuses.ts +++ b/src/core/config/initialStatuses.ts @@ -4,8 +4,6 @@ interface IInitialStatuses { [elementName: string]: Status; } -const initialStatuses: IInitialStatuses = { - -}; +const initialStatuses: IInitialStatuses = {}; export default initialStatuses; diff --git a/src/core/config/initialValues.ts b/src/core/config/initialValues.ts index 12a034b..acf82c4 100644 --- a/src/core/config/initialValues.ts +++ b/src/core/config/initialValues.ts @@ -1,9 +1,5 @@ import { ValuesMap } from 'core/types/values'; -const initialValues: ValuesMap = { - price: 10000, - cbx: false - // one: 0, -}; +const initialValues: any = {}; export default initialValues; diff --git a/src/core/types/elements.ts b/src/core/types/elements.ts index aaa55c0..3aac50d 100644 --- a/src/core/types/elements.ts +++ b/src/core/types/elements.ts @@ -1,4 +1,6 @@ export enum Status { Default, - Disabled + Disabled, + Hidden, + Readonly, }