section five complete

This commit is contained in:
Владислав Чикалкин 2020-09-04 12:31:01 +03:00
parent 080406b167
commit ec5f6be793
9 changed files with 561 additions and 117 deletions

View File

@ -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',
},
},
],
},
{

View File

@ -9,10 +9,10 @@ const Button = ({ type, size, name, text, onClick }) => {
return (
<AntButton
style={{
backgroundColor: colors.primary[0],
borderColor: colors.primary[0],
}}
// style={{
// backgroundColor: colors.primary[0],
// borderColor: colors.primary[0],
// }}
type={type}
size={size}
disabled={status === Status.Disabled}

View File

@ -0,0 +1,23 @@
import React from 'react';
import styled from 'styled-components';
import { useStoreValue } from 'client/hooks/useStoreValue';
import { observer } from 'mobx-react';
const TextWrapper = styled.div``;
const Text = styled.span`
font-size: 0.85rem;
`;
const Label = ({ name, computedValue, valueName }) => {
const { value } = useStoreValue({ computedValue, valueName });
//TODO: Hide if no value
return (
<TextWrapper>
<Text>{value}</Text>
</TextWrapper>
);
};
export default observer(Label);

View File

@ -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 (
<AntRadio.Group
disabled={status === Status.Disabled}
buttonStyle={buttonStyle}
buttonStyle={style === 'button' && 'solid'}
value={value}
onChange={(e) => setCurrentValue(e.target.value)}
onChange={(e) => {
if (e && e.target) setCurrentValue(e.target.value);
}}
>
{options.map((option, i) => (
<AntRadio.Button value={option.value}>{option.name}</AntRadio.Button>
))}
{options.map((option, i) => {
switch (style) {
case 'button': {
if (option) {
return (
<AntRadio.Button value={option.value || ''}>
{option.name}
</AntRadio.Button>
);
}
}
default:
{
if (option)
return (
<AntRadio value={option.value || ''}>{option.name}</AntRadio>
);
}
break;
}
})}
</AntRadio.Group>
);
};

View File

@ -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 (
<AntSelect
disabled={status === Status.Disabled}
disabled={disabled || status === Status.Disabled}
showSearch={showSearch}
optionFilterProp="children"
filterOption={filter}
value={value}
onChange={(value) => setCurrentValue(value)}
onChange={(val) => setCurrentValue(val)}
>
{options.map((option, i) => (
<AntSelect.Option key={i} value={option.value}>
{option.name}
</AntSelect.Option>
))}
{options.map((option, i) => {
if (option)
return (
<AntSelect.Option key={i} value={option.value}>
{option.name}
</AntSelect.Option>
);
})}
</AntSelect>
);
};

View File

@ -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;

View File

@ -4,8 +4,6 @@ interface IInitialStatuses {
[elementName: string]: Status;
}
const initialStatuses: IInitialStatuses = {
};
const initialStatuses: IInitialStatuses = {};
export default initialStatuses;

View File

@ -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;

View File

@ -1,4 +1,6 @@
export enum Status {
Default,
Disabled
Disabled,
Hidden,
Readonly,
}