diff --git a/Elements/types.ts b/Elements/types.ts index fce032b..cbffe17 100644 --- a/Elements/types.ts +++ b/Elements/types.ts @@ -9,7 +9,6 @@ export type BaseElementProps = { }; export type BaseOption = { - name: string; label: string; value: any; }; diff --git a/config/default-options.ts b/config/default-options.ts new file mode 100644 index 0000000..73b6c22 --- /dev/null +++ b/config/default-options.ts @@ -0,0 +1,393 @@ +import { orderBy } from 'lodash'; +import type { CalculationOptions } from 'stores/calculation/options/types'; + +const defaultOptions: Partial = { + radioLastPaymentRule: [ + { + label: 'равен платежу', + value: 100000002, + }, + { + label: 'в рублях', + value: 100000000, + }, + { + label: 'в %', + value: 100000001, + }, + ], + + radioBalanceHolder: [ + { + label: 'Лизингополучатель', + value: 100000000, + }, + { + label: 'Лизингодатель', + value: 100000001, + }, + ], + + radioGraphType: [ + { + label: 'аннуитет', + value: 100000000, + }, + { + label: 'дегрессия (ступенчатая)', + value: 100000001, + }, + { + label: 'равноубывающий', + value: 100000002, + }, + { + label: 'сезонный', + value: 100000003, + }, + { + label: 'легкий старт', + value: 100000004, + }, + ], + + selectSeasonType: [ + { + label: '6/6', + value: 100000000, + }, + { + label: '8/4', + value: 100000001, + }, + { + label: '4/4/4', + value: 100000002, + }, + { + label: 'Гибкая дегрессия', + value: 100000007, + }, + { + label: '100.50.25', + value: 100000003, + }, + { + label: '100.30.10', + value: 100000004, + }, + { + label: '100.70.40', + value: 100000005, + }, + { + label: '100.7.3', + value: 100000006, + }, + ], + + selectHighSeasonStart: Array.from( + { + length: 12, + }, + (_, i) => ({ + label: `${i + 2}`, + value: 100000000 + i, + }) + ), + + radioDeliveryTime: [ + { + label: 'В наличии', + value: 100000000, + }, + { + label: 'В поставке', + value: 100000001, + }, + ], + + selectEngineType: [ + { + label: 'Бензин', + value: 100000000, + }, + { + label: 'Дизель', + value: 100000001, + }, + { + label: 'Газ', + value: 100000002, + }, + { + label: 'Электрический', + value: 100000003, + }, + { + label: 'Гибрид', + value: 100000004, + }, + ], + + selectLeaseObjectCategory: [ + { + label: 'A', + value: 100000000, + }, + { + label: 'B', + value: 100000001, + }, + { + label: 'C', + value: 100000002, + }, + { + label: 'D', + value: 100000003, + }, + { + label: 'Прицеп', + value: 100000004, + }, + ], + + selectLeaseObjectUseFor: orderBy( + [ + { + label: 'Для представительских целей', + value: 100000000, + }, + { + label: 'Для использования в качестве «такси»', + value: 100000001, + }, + { + label: 'Для передачи третьим лицам (прокат; аренда)', + value: 100000002, + }, + { + label: 'Каршеринг', + value: 100000003, + }, + { + label: 'Тест-драйв', + value: 100000004, + }, + { + label: 'Для доставки продуктов конечному потребителю', + value: 100000005, + }, + { + label: 'Для обучения вождению', + value: 100000006, + }, + { + label: 'Маршрутные такси / Рейсовые автобусы', + value: 100000007, + }, + { + label: 'Междугородние перевозки', + value: 100000008, + }, + { + label: 'Для перевозки крупногабаритных грузов', + value: 100000009, + }, + { + label: 'Для перевозки малогабаритных грузов', + value: 100000010, + }, + { + label: 'Для перевозки сотрудников других организаций (водитель ЛП)', + value: 100000011, + }, + { + label: 'Для перевозки сотрудников ЛП', + value: 100000012, + }, + { + label: 'Для экскурсионных перевозок в т.ч. на торжества; трансфер в аэропорт и пр.', + value: 100000013, + }, + { + label: 'Дорожно-строительная техника', + value: 100000014, + }, + { + label: 'Жилищно-коммунальное хозяйство', + value: 100000015, + }, + { + label: 'Лесное хозяйство', + value: 100000016, + }, + { + label: 'Подъёмно-транспортная отрасль', + value: 100000017, + }, + { + label: 'Сельское хозяйство', + value: 100000018, + }, + { + label: 'Строительство', + value: 100000019, + }, + ], + (objectUseFor) => objectUseFor.label.toLowerCase(), + ['asc'] + ), + + radioInfuranceOPF: [ + { + label: 'ЮЛ', + value: 100000000, + }, + { + label: 'ИП', + value: 100000001, + }, + ], + + radioInsKaskoType: [ + { + label: 'Полное', + value: 100000000, + }, + { + label: 'Усеченное', + value: 100000001, + }, + ], + + radioQuoteContactGender: [ + { + label: 'Мужской', + value: 100000000, + }, + { + label: 'Женский', + value: 100000001, + }, + ], + + radioRequirementTelematic: [ + { + label: 'Не требуется', + value: 100000004, + }, + { + label: 'START', + value: 100000000, + }, + { + label: 'START+', + value: 100000001, + }, + { + label: 'COMFORT', + value: 100000002, + }, + { + label: 'COMFORT+', + value: 100000003, + }, + { + label: 'Omnicomm_1', + value: 100000005, + }, + { + label: 'Omnicomm_2', + value: 100000006, + }, + { + label: 'Omnicomm_3', + value: 100000007, + }, + ], + radioCalcType: [ + { + label: 'IRR', + value: 100000000, + }, + { + label: 'Суммы', + value: 100000001, + }, + ], + radioObjectRegistration: [ + { + label: 'Лизингополучатель', + value: 100000000, + }, + { + label: 'Лизингодатель', + value: 100000001, + }, + ], + radioTypePTS: [ + { + label: 'Бумажный', + value: 100000000, + }, + { + label: 'Электронный', + value: 100000001, + }, + ], + selectObjectCategoryTax: [ + 'M1', + 'M2', + 'M3', + 'M1G', + 'M2G', + 'M3G', + 'N1', + 'N2', + 'N3', + 'N1G', + 'N2G', + 'N3G', + 'O1', + 'O2', + 'O3', + 'O4', + 'L1', + 'L2', + 'L3', + 'L4', + 'L5', + ].map((label, i) => ({ + label, + value: 100000000 + i, + })), + selectObjectTypeTax: [ + { + label: 'Автобус', + type: 'D', + }, + { + label: 'Легковой', + type: 'B', + }, + { + label: 'Грузовой', + type: 'C', + }, + { + label: 'Спецтехника', + type: 'T', + }, + { + label: 'Мотоцикл', + type: 'A', + }, + ].map((v, i) => ({ + ...v, + value: 100000000 + i, + })), +}; + +export default defaultOptions; diff --git a/stores/calculation/options/index.ts b/stores/calculation/options/index.ts index e6628a2..58ad86d 100644 --- a/stores/calculation/options/index.ts +++ b/stores/calculation/options/index.ts @@ -4,6 +4,7 @@ /* eslint-disable object-curly-newline */ /* eslint-disable import/no-cycle */ import type { Elements } from 'Components/Calculation/config/map-values'; +import defaultOptions from 'config/default-options'; import type { BaseOption } from 'Elements/types'; import { mergeWith } from 'lodash'; import { makeAutoObservable } from 'mobx'; @@ -28,7 +29,7 @@ const AUTO_SET_VALUE_ELEMENTS: Elements[] = [ export default class OptionsStore { root: RootStore; - options: Partial = {}; + options = defaultOptions; filters: Partial = {}; constructor(rootStore: RootStore) { @@ -36,7 +37,7 @@ export default class OptionsStore { this.root = rootStore; } - hydrate = (initialOptions: Partial) => { + hydrate = (initialOptions: CalculationOptions) => { this.options = initialOptions; };