diff --git a/apps/web/config/process/default.ts b/apps/web/config/process/default.ts index 6284afa..8ea6f8f 100644 --- a/apps/web/config/process/default.ts +++ b/apps/web/config/process/default.ts @@ -1,40 +1,40 @@ -// import * as addProduct from '@/process/add-product'; +import * as addProduct from '@/process/add-product'; import * as bonuses from '@/process/bonuses'; -// import * as calculate from '@/process/calculate'; +import * as calculate from '@/process/calculate'; import * as configurator from '@/process/configurator'; -// import * as createKP from '@/process/create-kp'; +import * as createKP from '@/process/create-kp'; import * as fingap from '@/process/fingap'; import * as gibdd from '@/process/gibdd'; import { useProcess } from '@/process/hooks'; import * as insurance from '@/process/insurance'; -// import * as leadOpportunity from '@/process/lead-opportunity'; +import * as leadOpportunity from '@/process/lead-opportunity'; // import * as leasingObject from '@/process/leasing-object'; -// import * as leasingWithoutKasko from '@/process/leasing-without-kasko'; -// import * as loadKP from '@/process/load-kp'; +import * as leasingWithoutKasko from '@/process/leasing-without-kasko'; +import * as loadKP from '@/process/load-kp'; import * as payments from '@/process/payments'; // import * as price from '@/process/price'; -// import * as subsidy from '@/process/subsidy'; -// import * as subsidyImportProgram from '@/process/subsidy-import-program'; +import * as subsidy from '@/process/subsidy'; +import * as subsidyImportProgram from '@/process/subsidy-import-program'; // import * as supplierAgent from '@/process/supplier-agent'; // import * as usedPl from '@/process/used-pl'; export default function useReactions() { - // useProcess(leadOpportunity); - // useProcess(loadKP); - // useProcess(calculate); + useProcess(leadOpportunity); + useProcess(loadKP); + useProcess(calculate); // useProcess(supplierAgent); // useProcess(price); useProcess(fingap); - // useProcess(leasingWithoutKasko); - // useProcess(subsidy); + useProcess(leasingWithoutKasko); + useProcess(subsidy); // useProcess(leasingObject); useProcess(configurator); - // useProcess(createKP); + useProcess(createKP); useProcess(bonuses); // useProcess(usedPl); - // useProcess(subsidyImportProgram); + useProcess(subsidyImportProgram); useProcess(payments); useProcess(gibdd); - // useProcess(addProduct); + useProcess(addProduct); useProcess(insurance); } diff --git a/apps/web/process/calculate/reactions/validation.ts b/apps/web/process/calculate/reactions/validation.ts index 6de15b4..18c95ae 100644 --- a/apps/web/process/calculate/reactions/validation.ts +++ b/apps/web/process/calculate/reactions/validation.ts @@ -2,7 +2,9 @@ import types from '@/Components/Calculation/config/elements-types'; import type * as Values from '@/Components/Calculation/config/map/values'; import type * as Insurance from '@/Components/Calculation/Form/Insurance/InsuranceTable/types'; import type { ProcessContext } from '@/process/types'; +import ValidationHelper from '@/stores/validation/helper'; import { reaction } from 'mobx'; +import { uid } from 'radash'; import type { BaseOption } from 'ui/elements/types'; function hasInvalidValueOrOptions(value: unknown, options: Array>) { @@ -45,6 +47,10 @@ export default function reactions({ store }: ProcessContext) { /** * Проверяем, что выбранное значение элемента есть в списке */ + + const key = uid(7); + const message = 'Выбранное значение отсутствует в списке'; + function validateOptionsElement(elementName: Values.Elements) { const type = types[elementName]; if (type().typeName !== 'Options') { @@ -53,6 +59,8 @@ export default function reactions({ store }: ProcessContext) { const element = $calculation.element(elementName); + const validationHelper = new ValidationHelper(); + reaction( () => { const options = element.getOptions(); @@ -64,11 +72,16 @@ export default function reactions({ store }: ProcessContext) { }; }, ({ value, options }) => { - element.validate({ - invalid: hasInvalidValueOrOptions(value, options), - message: 'Выбранное значение отсутствует в списке', - silent: true, - }); + if (hasInvalidValueOrOptions(value, options)) { + const removeError = element.setError({ + key, + message, + silent: true, + }); + if (removeError) validationHelper.add(removeError); + } else { + validationHelper.removeErrors(); + } }, { delay: 100, @@ -96,6 +109,8 @@ export default function reactions({ store }: ProcessContext) { function validateInsuranceCompany(rowKey: Insurance.Keys) { const row = $tables.insurance.row(rowKey); + const validationHelper = new ValidationHelper(); + reaction( () => { const options = row.getOptions('insuranceCompany'); @@ -107,11 +122,16 @@ export default function reactions({ store }: ProcessContext) { }; }, ({ value, options }) => { - $tables.insurance.validate({ - invalid: hasInvalidValueOrOptions(value, options), - message: 'Выбранное значение отсутствует в списке', - silent: true, - }); + if (hasInvalidValueOrOptions(value, options)) { + const removeError = $tables.insurance.setError({ + key, + message, + silent: true, + }); + validationHelper.add(removeError); + } else { + validationHelper.removeErrors(); + } }, { delay: 100,