From 876838e685b0e706cc517723f22055cf29176d3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81=D0=BB=D0=B0=D0=B2=20?= =?UTF-8?q?=D0=A7=D0=B8=D0=BA=D0=B0=D0=BB=D0=BA=D0=B8=D0=BD?= Date: Thu, 3 Sep 2020 17:34:05 +0300 Subject: [PATCH] move elements --- .../Containers/Calculation/Sections/list.js | 733 +++++++++++------- src/client/Elements/Input.jsx | 10 +- src/client/Elements/Select.jsx | 7 +- src/core/config/initialOptions.ts | 3 +- 4 files changed, 451 insertions(+), 302 deletions(-) diff --git a/src/client/Containers/Calculation/Sections/list.js b/src/client/Containers/Calculation/Sections/list.js index c19a605..d8ff89c 100644 --- a/src/client/Containers/Calculation/Sections/list.js +++ b/src/client/Containers/Calculation/Sections/list.js @@ -19,26 +19,28 @@ export default [ title: 'Выбор Интереса/ЛС', Component: Select, props: { - name: 'searchSource', + name: 'selectSource', valueName: 'source', + showSearch: true, }, }, { title: 'Выбор Предложения', Component: Select, props: { - name: 'searchQuote', + name: 'selectQuote', valueName: 'quote', + showSearch: true, }, }, - { - title: 'Выбор шаблона', - Component: Select, - props: { - name: 'searchTemplate', - valueName: 'template', - }, - }, + // { + // title: 'Выбор шаблона', + // Component: Select, + // props: { + // name: 'selectTemplate', + // valueName: 'template', + // }, + // }, /** */ { @@ -52,8 +54,16 @@ export default [ props: { name: 'selectChannel', valueName: 'channel', + showSearch: true, }, }, + + /** */ + { + divider: { empty: true }, + }, + /** */ + { title: 'Новый контрагент', Component: Input, @@ -66,8 +76,9 @@ export default [ title: 'Существующий контрагент', Component: Select, props: { - name: 'searchAccount', + name: 'selectAccount', valueName: 'account', + showSearch: true, }, }, @@ -81,6 +92,7 @@ export default [ title: 'ИНН', Component: Input, props: { + // TODO regular min: 10, max: 12 name: 'tbxINN', valueName: 'INN', }, @@ -89,18 +101,11 @@ export default [ title: 'КПП', Component: Input, props: { + // TODO regular min: 9, max: 9 name: 'tbxKPP', valueName: 'KPP', }, }, - { - title: 'Контактное лицо контрагента', - Component: Select, - props: { - name: 'searchContact', - valueName: 'contact', - }, - }, /** */ { @@ -109,13 +114,38 @@ export default [ /** */ { - title: 'Контактное лицо', + 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, @@ -124,6 +154,7 @@ export default [ name: 'tbxPhoneNumber', valueName: 'phoneNumber', pattern: undefined, + //TODO: mask + 7(999) 999 99 99 }, }, { @@ -134,14 +165,7 @@ export default [ name: 'tbxEmailAddress', valueName: 'emailAddress', pattern: undefined, - }, - }, - { - title: 'Пол контактного лица', - Component: Select, - props: { - name: 'selectContactGender', - valueName: 'contactGender', + //TODO check email valid }, }, @@ -155,24 +179,27 @@ export default [ title: 'Поставщик', Component: Select, props: { - name: 'searchSupplier', + name: 'selectSupplier', valueName: 'supplier', + showSearch: true, }, }, { title: 'Финотдел', Component: Select, props: { - name: 'searchFinDepartment', + name: 'selectFinDepartment', valueName: 'finDepartment', + showSearch: false, }, }, { title: 'Брокер', Component: Select, props: { - name: 'SearchBroker', + name: 'selectBroker', valueName: 'broker', + showSearch: false, }, }, @@ -186,16 +213,18 @@ export default [ title: 'Агент', Component: Select, props: { - name: 'SearchAgent', + name: 'selectAgent', valueName: 'agent', + showSearch: true, }, }, { title: 'Двойной агент', Component: Select, props: { - name: 'SearchDoubleAgent', + name: 'selectDoubleAgent', valueName: 'doubleAgentgent', + showSearch: true, }, }, @@ -232,8 +261,16 @@ export default [ }, layout: { size: 'min', + flexDirection: 'row', }, }, + + /** */ + { + divider: { empty: true }, + }, + /** */ + { Component: Button, props: { @@ -296,7 +333,7 @@ export default [ valueName: 'supplierCurrency', }, }, - + /** */ { divider: { empty: true }, @@ -319,7 +356,7 @@ export default [ valueName: 'supplierDiscountPerc', }, }, - + /** */ { divider: { empty: true }, @@ -350,7 +387,7 @@ export default [ valueName: 'addEquipmentPayer', }, }, - + /** */ { divider: { empty: true }, @@ -381,7 +418,7 @@ export default [ valueName: 'firstPaymentRub', }, }, - + /** */ { divider: { empty: true }, @@ -412,7 +449,7 @@ export default [ valueName: 'lastPaymentRub', }, }, - + /** */ { divider: { empty: true }, @@ -435,7 +472,7 @@ export default [ valueName: 'graphType', }, }, - + /** */ { divider: { empty: true }, @@ -458,7 +495,7 @@ export default [ valueName: 'comissionRub', }, }, - + /** */ { divider: { empty: true }, @@ -502,86 +539,13 @@ export default [ valueName: 'leaseObjectType', }, }, + + /** */ { - title: 'Срок поставки', - Component: Select, - props: { - name: 'selectDeliveryTime', - valueName: 'deliveryTime', - }, - }, - { - title: 'Риск ПЛ', - Component: Select, - props: { - name: 'selectLeaseObjectRisk', - valueName: 'leaseObjectRisk', - }, - }, - { - title: 'Группа обесценения', - Component: Select, - props: { - name: 'selectDepreciationGroup', - valueName: 'depreciationGroup', - }, - }, - { - title: 'Кол-во ПЛ в расчете', - Component: InputNumber, - props: { - name: 'tbxLeaseObjectCount', - valueName: 'leaseObjectCount', - }, - }, - { - title: 'ТС с прицепом', - Component: Select, - props: { - name: 'cbxWithTrailer', - valueName: 'withTrailer', - }, - }, - { - title: 'ПЛ БУ', - Component: Switch, - props: { - name: 'cbxLeaseObjectUsed', - valueName: 'leaseObjectUsed', - }, - }, - { - title: 'Разрешенная макс.масса(кг)', - Component: InputNumber, - props: { - name: 'tbxMaxMass', - valueName: 'maxMass', - }, - }, - { - title: 'Количество мест', - Component: InputNumber, - props: { - name: 'tbxCountSeats', - valueName: 'countSeats', - }, - }, - { - title: 'Максимальная конструктивная скорость (при ПСМ)', - Component: InputNumber, - props: { - name: 'tbxMaxSpeed', - valueName: 'maxSpeed', - }, - }, - { - title: 'Грузоподъемность, т', - Component: InputNumber, - props: { - name: 'tbxTonnage', - valueName: 'tonnage', - }, + divider: { empty: true }, }, + /** */ + { title: 'Марка', Component: Select, @@ -606,6 +570,71 @@ export default [ 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, @@ -614,14 +643,6 @@ export default [ valueName: 'leaseObjectYear', }, }, - { - title: 'Тип двигателя', - Component: Select, - props: { - name: 'selectEngineType', - valueName: 'engineType', - }, - }, { title: 'Категория ТС', Component: Select, @@ -630,6 +651,29 @@ export default [ valueName: 'leaseObjectCategory', }, }, + { + title: 'Срок поставки', + Component: Select, + props: { + name: 'selectDeliveryTime', + valueName: 'deliveryTime', + }, + }, + + /** */ + { + divider: { empty: true }, + }, + /** */ + + { + title: 'Тип двигателя', + Component: Select, + props: { + name: 'selectEngineType', + valueName: 'engineType', + }, + }, { title: 'Мощность, л.с.', Component: InputNumber, @@ -646,6 +690,59 @@ export default [ 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, @@ -656,6 +753,219 @@ export default [ }, ], }, + { + 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: [ @@ -871,171 +1181,6 @@ export default [ }, ], }, - { - title: 'Поставщик/агент', - elements: [ - { - title: 'Салон приобретения', - Component: Select, - props: { - name: 'SearchDealer', - valueName: 'dealer', - }, - }, - { - title: 'ЮЛ поставщика', - Component: Select, - props: { - name: 'SearchDealerPerson', - valueName: 'dealerPerson', - }, - }, - { - title: 'Условие АВ ЮЛ поставщика', - Component: Select, - props: { - name: 'searchDealerRewardСondition', - valueName: 'dealerRewardСondition', - }, - }, - { - title: 'Размер АВ ЮЛ поставщика', - Component: InputNumber, - props: { - name: 'tbxDealerRewardSumm', - valueName: 'dealerRewardSumm', - }, - }, - { - title: 'Брокер поставщика', - Component: Select, - props: { - name: 'SearchDealerBroker', - valueName: 'dealerBroker', - }, - }, - { - title: 'Брокер поставщика', - Component: Select, - props: { - name: 'SearchDealerBroker', - valueName: 'dealerBroker', - }, - }, - { - title: 'Условие АВ брокера поставщика', - Component: Select, - props: { - name: 'searchDealerBrokerRewardСondition', - valueName: 'dealerBrokerRewardСondition', - }, - }, - { - title: 'Размер АВ брокера поставщика', - Component: InputNumber, - props: { - name: 'tbxDealerBrokerRewardSumm', - valueName: 'dealerBrokerRewardSumm', - }, - }, - { - title: 'Агент ФЛ', - Component: Select, - props: { - name: 'searchIndAgent', - valueName: 'indAgent', - }, - }, - { - title: 'Условие АВ агента ФЛ', - Component: Select, - props: { - name: 'SelectIndAgentRewardCondition', - valueName: 'indAgentRewardCondition', - }, - }, - { - title: 'Размер АВ агента ФЛ', - Component: InputNumber, - props: { - name: 'tbxIndAgentRewardSumm', - valueName: 'indAgentRewardSumm', - }, - }, - { - title: 'Двойной агент', - Component: Select, - props: { - name: 'searchCalcDoubleAgent', - valueName: 'calcDoubleAgent', - }, - }, - { - title: 'Условия АВ двойного агента', - Component: Select, - props: { - name: 'searchCalcDoubleAgentRewardCondition', - valueName: 'calcDoubleAgentRewardCondition', - }, - }, - { - title: 'Размер АВ двойного агента', - Component: InputNumber, - props: { - name: 'tbxCalcDoubleAgentRewardSumm', - valueName: 'calcDoubleAgentRewardSumm', - }, - }, - { - title: 'Брокер', - Component: Select, - props: { - name: 'searchCalcBroker', - valueName: 'calcBroker', - }, - }, - { - title: 'Условие АВ брокера', - Component: Select, - props: { - name: 'searchCalcBrokerRewardCondition', - valueName: 'calcBrokerRewardCondition', - }, - }, - { - title: 'Размер АВ брокера', - Component: InputNumber, - props: { - name: 'tbxCalcBrokerRewardSum', - valueName: 'calcBrokerRewardSum', - }, - }, - { - title: 'Финотдел', - Component: Select, - props: { - name: 'searchFinDepartment', - valueName: 'finDepartment', - }, - }, - { - title: 'Условие АВ финотдела', - Component: Select, - props: { - name: 'searchFinDepartmentRewardCondtion', - valueName: 'finDepartmentRewardCondtion', - }, - }, - { - title: 'Размер АВ финотдела', - Component: InputNumber, - props: { - name: 'tbxFinDepartmentRewardSumm', - valueName: 'finDepartmentRewardSumm', - }, - }, - ], - }, { title: 'Без ограничений', elements: [ @@ -1043,7 +1188,7 @@ export default [ title: 'Тариф', Component: Select, props: { - name: 'searchTarif', + name: 'selectTarif', valueName: 'Tarif', }, }, @@ -1067,7 +1212,7 @@ export default [ title: 'Ставка привлечения', Component: Select, props: { - name: 'searchRate', + name: 'selectRate', valueName: 'rate', }, }, @@ -1075,7 +1220,7 @@ export default [ title: 'Загрузить сессию пользователя', Component: Select, props: { - name: 'searchUserSession', + name: 'selectUserSession', valueName: 'userSession', }, }, diff --git a/src/client/Elements/Input.jsx b/src/client/Elements/Input.jsx index 6c53f78..29dec06 100644 --- a/src/client/Elements/Input.jsx +++ b/src/client/Elements/Input.jsx @@ -10,20 +10,24 @@ const Input = ({ readonly, type, pattern, + prefix, + suffix, placeholder, addonBefore, addonAfter, valueName, - computedValue + computedValue, }) => { const { value, setCurrentValue } = useStoreValue({ computedValue, - valueName + valueName, }); const { status } = useStatus(name); return ( setCurrentValue(e.target.value)} + onChange={(e) => setCurrentValue(e.target.value)} /> ); }; diff --git a/src/client/Elements/Select.jsx b/src/client/Elements/Select.jsx index 377e8c1..ba946ac 100644 --- a/src/client/Elements/Select.jsx +++ b/src/client/Elements/Select.jsx @@ -9,19 +9,20 @@ import { useOptions } from 'client/hooks/useOptions'; const Select = ({ name, showSearch, computedValue, valueName }) => { const { value, setCurrentValue } = useStoreValue({ computedValue, - valueName + valueName, }); const { status } = useStatus(name); const { options, filter } = useOptions(name); + console.log('Select -> showSearch', showSearch); return ( setCurrentValue(value)} + onChange={(value) => setCurrentValue(value)} > {options.map((option, i) => ( diff --git a/src/core/config/initialOptions.ts b/src/core/config/initialOptions.ts index b31de16..1e0f4c7 100644 --- a/src/core/config/initialOptions.ts +++ b/src/core/config/initialOptions.ts @@ -1,9 +1,8 @@ const initialOptions: any = { - cars: [ + selectChannel: [ { name: 'Audi', value: '11111', - otherData: 'jldfksjodfj' }, { name: 'BMW',