hl-core 0.0.9-beta.3 → 0.0.9-beta.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/base.api.ts +862 -0
- package/api/index.ts +2 -620
- package/api/interceptors.ts +58 -14
- package/components/Button/Btn.vue +3 -3
- package/components/Complex/ContentBlock.vue +1 -1
- package/components/Complex/MessageBlock.vue +2 -2
- package/components/Complex/Page.vue +8 -2
- package/components/Complex/WhiteBlock.vue +7 -0
- package/components/Dialog/Dialog.vue +60 -15
- package/components/Dialog/FamilyDialog.vue +5 -5
- package/components/Form/DynamicForm.vue +99 -0
- package/components/Form/FormBlock.vue +36 -29
- package/components/Form/FormData.vue +48 -0
- package/components/Form/FormSection.vue +2 -2
- package/components/Form/FormTextSection.vue +3 -3
- package/components/Form/FormToggle.vue +3 -3
- package/components/Form/ManagerAttachment.vue +104 -52
- package/components/Form/ProductConditionsBlock.vue +73 -20
- package/components/Input/DynamicInput.vue +23 -0
- package/components/Input/EmptyFormField.vue +1 -1
- package/components/Input/FileInput.vue +15 -4
- package/components/Input/Monthpicker.vue +33 -0
- package/components/Input/PanelInput.vue +5 -1
- package/components/Input/RoundedEmptyField.vue +5 -0
- package/components/Input/RoundedSelect.vue +13 -0
- package/components/Input/SwitchInput.vue +64 -0
- package/components/Input/TextInput.vue +161 -0
- package/components/Layout/Drawer.vue +17 -4
- package/components/Layout/Header.vue +2 -2
- package/components/Layout/SettingsPanel.vue +10 -15
- package/components/List/ListEmpty.vue +1 -1
- package/components/Menu/MenuHover.vue +1 -1
- package/components/Menu/MenuNav.vue +3 -3
- package/components/Menu/MenuNavItem.vue +4 -4
- package/components/Pages/Anketa.vue +144 -65
- package/components/Pages/Auth.vue +21 -10
- package/components/Pages/ContragentForm.vue +505 -0
- package/components/Pages/Documents.vue +57 -11
- package/components/Pages/InvoiceInfo.vue +2 -2
- package/components/Pages/MemberForm.vue +253 -89
- package/components/Pages/ProductAgreement.vue +2 -11
- package/components/Pages/ProductConditions.vue +777 -164
- package/components/Panel/PanelHandler.vue +297 -54
- package/components/Panel/PanelSelectItem.vue +18 -3
- package/components/Panel/RightPanelCloser.vue +7 -0
- package/components/Utilities/IconBorder.vue +17 -0
- package/composables/axios.ts +1 -1
- package/composables/classes.ts +405 -9
- package/composables/constants.ts +40 -0
- package/composables/fields.ts +203 -0
- package/composables/index.ts +48 -0
- package/composables/styles.ts +22 -10
- package/configs/i18n.ts +0 -2
- package/layouts/default.vue +46 -4
- package/layouts/full.vue +1 -1
- package/locales/ru.json +423 -11
- package/nuxt.config.ts +1 -1
- package/package.json +30 -39
- package/pages/500.vue +2 -2
- package/pages/Token.vue +1 -0
- package/plugins/helperFunctionsPlugins.ts +6 -7
- package/plugins/vuetifyPlugin.ts +2 -0
- package/store/data.store.ts +936 -217
- package/store/extractStore.ts +17 -0
- package/store/form.store.ts +13 -1
- package/store/member.store.ts +1 -1
- package/store/rules.ts +38 -2
- package/types/enum.ts +8 -0
- package/types/form.ts +94 -0
- package/types/index.ts +162 -10
- package/components/Button/BtnIcon.vue +0 -47
- package/locales/kz.json +0 -590
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="flex flex-col gap-4 px-[10px]">
|
|
3
|
-
<v-form ref="vForm" @submit="submitForm" class="max-h-[
|
|
4
|
-
<base-
|
|
3
|
+
<v-form ref="vForm" @submit="submitForm" class="overflow-y-scroll" :class="[!$dataStore.isCalculator && isCalculator && hasCalculated ? 'max-h-[73svh]' : 'max-h-[80svh]']">
|
|
4
|
+
<base-message-block
|
|
5
|
+
v-if="isCalculator"
|
|
6
|
+
class="mt-4"
|
|
7
|
+
:color="$styles.blueBgLight"
|
|
8
|
+
:text="$dataStore.t('preliminaryCalculation')"
|
|
9
|
+
icon="mdi-alert text-[#FCB016]"
|
|
10
|
+
></base-message-block>
|
|
11
|
+
<base-form-section v-if="whichProduct === 'gons'" :title="$dataStore.t('productConditionsForm.requestedProductConditions')" :class="[$styles.textSimple]">
|
|
5
12
|
<base-form-text-section
|
|
6
13
|
class="mb-4"
|
|
7
14
|
title="Инвалидность I или II группы по причине несчастного случая, начиная с третьего года по любой причине, с освобождением от уплаты страховых взносов"
|
|
@@ -37,7 +44,7 @@
|
|
|
37
44
|
<base-form-input v-model="formStore.policyholderForm.age" :label="$dataStore.t('form.age')" :readonly="true" />
|
|
38
45
|
<base-form-input v-model="formStore.policyholderForm.gender.nameRu" class="mb-4" :label="$dataStore.t('form.gender')" :readonly="true" />
|
|
39
46
|
</base-form-section>
|
|
40
|
-
<base-form-section v-if="isUnderwriterRole && $dataStore.members.insuredApp.has === true" :title="$dataStore.t('insuredForm')">
|
|
47
|
+
<base-form-section v-if="isUnderwriterRole && $dataStore.members.insuredApp.has === true && whichProduct !== 'lifebusiness'" :title="$dataStore.t('insuredForm')">
|
|
41
48
|
<div v-for="(insured, index) of formStore.insuredForm" :key="index">
|
|
42
49
|
<base-form-input v-model="insured.longName" :label="$dataStore.t('labels.insurerLongName')" :readonly="true" />
|
|
43
50
|
<base-form-input v-model="insured.job" :label="$dataStore.t('form.job')" :readonly="true" />
|
|
@@ -54,14 +61,14 @@
|
|
|
54
61
|
:clearable="isRecalculationDisabled === false"
|
|
55
62
|
:label="$dataStore.t('percent') + `Life Multiply`"
|
|
56
63
|
:readonly="isRecalculationDisabled"
|
|
57
|
-
:rules="$dataStore.rules.recalculationMultiply"
|
|
64
|
+
:rules="whichProduct === 'gons' ? $dataStore.rules.recalculationMultiplyBetween : $dataStore.rules.recalculationMultiply"
|
|
58
65
|
/>
|
|
59
66
|
<base-form-input
|
|
60
67
|
v-model="productConditionsForm.lifeAdditive"
|
|
61
68
|
:maska="$maska.numbers"
|
|
62
69
|
:clearable="isRecalculationDisabled === false"
|
|
63
70
|
:label="$dataStore.t('percent') + `Life Additive`"
|
|
64
|
-
:readonly="
|
|
71
|
+
:readonly="readonlyLifeAdditive"
|
|
65
72
|
:rules="$dataStore.rules.recalculationAdditive"
|
|
66
73
|
/>
|
|
67
74
|
<base-form-input
|
|
@@ -87,21 +94,21 @@
|
|
|
87
94
|
:maska="$maska.numbers"
|
|
88
95
|
:clearable="isRecalculationDisabled === false"
|
|
89
96
|
:label="$dataStore.t('percent') + `Disability Multiply`"
|
|
90
|
-
:readonly="
|
|
91
|
-
:rules="$dataStore.rules.recalculationMultiply"
|
|
97
|
+
:readonly="readonlyDisabilityMultiply"
|
|
98
|
+
:rules="whichProduct === 'gons' ? [] : $dataStore.rules.recalculationMultiply"
|
|
92
99
|
/>
|
|
93
100
|
<base-form-input
|
|
94
101
|
v-model="productConditionsForm.disabilityAdditive"
|
|
95
102
|
:maska="$maska.numbers"
|
|
96
103
|
:clearable="isRecalculationDisabled === false"
|
|
97
104
|
:label="$dataStore.t('percent') + `Disability Additive`"
|
|
98
|
-
:readonly="
|
|
105
|
+
:readonly="readonlyDisabilityAdditive"
|
|
99
106
|
:rules="$dataStore.rules.recalculationAdditive"
|
|
100
107
|
/>
|
|
101
108
|
<base-panel-input
|
|
102
109
|
v-if="hasRiskGroup"
|
|
103
110
|
v-model="productConditionsForm.riskGroup"
|
|
104
|
-
:value="productConditionsForm.riskGroup
|
|
111
|
+
:value="productConditionsForm.riskGroup?.nameRu"
|
|
105
112
|
:label="$dataStore.t('productConditionsForm.riskGroup')"
|
|
106
113
|
:clearable="isRecalculationDisabled === false"
|
|
107
114
|
:readonly="isRecalculationDisabled"
|
|
@@ -109,8 +116,8 @@
|
|
|
109
116
|
@append="openPanel($dataStore.t('productConditionsForm.riskGroup'), $dataStore.riskGroup, 'riskGroup')"
|
|
110
117
|
/>
|
|
111
118
|
</base-form-section>
|
|
112
|
-
<base-form-section :title="$dataStore.t('generalConditions')">
|
|
113
|
-
<div v-if="
|
|
119
|
+
<base-form-section v-if="hasDefault" :title="$dataStore.t('generalConditions')">
|
|
120
|
+
<div v-if="isCalculator && ($route.params.taskId === '0' || $dataStore.isCalculator)">
|
|
114
121
|
<base-form-input
|
|
115
122
|
v-model="productConditionsForm.signDate"
|
|
116
123
|
:maska="$maska.date"
|
|
@@ -120,6 +127,7 @@
|
|
|
120
127
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
121
128
|
/>
|
|
122
129
|
<base-form-input
|
|
130
|
+
v-if="hasBirthDate"
|
|
123
131
|
v-model="productConditionsForm.birthDate"
|
|
124
132
|
:maska="$maska.date"
|
|
125
133
|
:readonly="isDisabled"
|
|
@@ -129,8 +137,9 @@
|
|
|
129
137
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
130
138
|
/>
|
|
131
139
|
<base-panel-input
|
|
140
|
+
v-if="hasGender"
|
|
132
141
|
v-model="productConditionsForm.gender"
|
|
133
|
-
:value="productConditionsForm.gender
|
|
142
|
+
:value="productConditionsForm.gender?.nameRu"
|
|
134
143
|
:readonly="isDisabled"
|
|
135
144
|
:clearable="!isDisabled"
|
|
136
145
|
:label="$dataStore.t('form.gender')"
|
|
@@ -142,15 +151,15 @@
|
|
|
142
151
|
<base-form-input
|
|
143
152
|
v-model="productConditionsForm.coverPeriod"
|
|
144
153
|
:maska="$maska.numbers"
|
|
145
|
-
:readonly="
|
|
154
|
+
:readonly="isDisabledCoverPeriod"
|
|
146
155
|
:clearable="!isDisabled"
|
|
147
156
|
:rules="coverPeriodRule"
|
|
148
|
-
:label="
|
|
157
|
+
:label="coverPeriodLabel"
|
|
149
158
|
/>
|
|
150
159
|
<base-panel-input
|
|
151
160
|
v-if="hasPaymentPeriod"
|
|
152
161
|
v-model="productConditionsForm.paymentPeriod"
|
|
153
|
-
:value="productConditionsForm.paymentPeriod
|
|
162
|
+
:value="productConditionsForm.paymentPeriod?.nameRu"
|
|
154
163
|
:readonly="isDisabled"
|
|
155
164
|
:clearable="!isDisabled"
|
|
156
165
|
:rules="$rules.objectRequired"
|
|
@@ -161,7 +170,7 @@
|
|
|
161
170
|
<base-panel-input
|
|
162
171
|
v-if="hasProcessIndexRate"
|
|
163
172
|
v-model="productConditionsForm.processIndexRate"
|
|
164
|
-
:value="productConditionsForm.processIndexRate
|
|
173
|
+
:value="productConditionsForm.processIndexRate?.nameRu"
|
|
165
174
|
:readonly="isDisabled"
|
|
166
175
|
:clearable="!isDisabled"
|
|
167
176
|
:rules="$rules.objectRequired"
|
|
@@ -172,8 +181,8 @@
|
|
|
172
181
|
<base-form-input
|
|
173
182
|
v-model="productConditionsForm.requestedSumInsured"
|
|
174
183
|
:readonly="isDisabledSum"
|
|
175
|
-
:clearable="!
|
|
176
|
-
:rules="
|
|
184
|
+
:clearable="!isDisabledSum"
|
|
185
|
+
:rules="requestedSumInsuredRule"
|
|
177
186
|
:label="requestedSumInsuredLabel"
|
|
178
187
|
:suffix="$constants.currencySymbols.kzt"
|
|
179
188
|
@input="onInputSum"
|
|
@@ -183,8 +192,8 @@
|
|
|
183
192
|
v-if="hasRequestedSumInsuredInDollar"
|
|
184
193
|
v-model="productConditionsForm.requestedSumInsuredInDollar"
|
|
185
194
|
:readonly="isDisabledSumDollar"
|
|
186
|
-
:clearable="!
|
|
187
|
-
:rules="
|
|
195
|
+
:clearable="!isDisabledSumDollar"
|
|
196
|
+
:rules="requestedSumInsuredRule"
|
|
188
197
|
:label="$dataStore.t('productConditionsForm.requestedSumInsuredInDollar')"
|
|
189
198
|
:suffix="$constants.currencySymbols.usd"
|
|
190
199
|
@input="onInputSumDollar"
|
|
@@ -192,10 +201,10 @@
|
|
|
192
201
|
/>
|
|
193
202
|
<base-form-input
|
|
194
203
|
v-model="productConditionsForm.insurancePremiumPerMonth"
|
|
195
|
-
:readonly="
|
|
196
|
-
:clearable="!
|
|
197
|
-
:rules="
|
|
198
|
-
:label="
|
|
204
|
+
:readonly="insurancePremiumPerMonthDisabled"
|
|
205
|
+
:clearable="!insurancePremiumPerMonthDisabled"
|
|
206
|
+
:rules="insurancePremiumPerMonthRule"
|
|
207
|
+
:label="insurancePremiumPerMonthLabel"
|
|
199
208
|
:suffix="$constants.currencySymbols.kzt"
|
|
200
209
|
@input="onInputInsurancePremiumPerMonth"
|
|
201
210
|
@onClear="onClearPremium"
|
|
@@ -203,9 +212,9 @@
|
|
|
203
212
|
<base-form-input
|
|
204
213
|
v-if="hasInsurancePremiumPerMonthInDollar"
|
|
205
214
|
v-model="productConditionsForm.insurancePremiumPerMonthInDollar"
|
|
206
|
-
:readonly="
|
|
207
|
-
:clearable="!
|
|
208
|
-
:rules="
|
|
215
|
+
:readonly="insurancePremiumPerMonthDisabled"
|
|
216
|
+
:clearable="!insurancePremiumPerMonthDisabled"
|
|
217
|
+
:rules="insurancePremiumPerMonthRule"
|
|
209
218
|
:label="$dataStore.t('productConditionsForm.insurancePremiumAmountInDollar')"
|
|
210
219
|
:suffix="$constants.currencySymbols.usd"
|
|
211
220
|
@input="onInputInsurancePremiumPerMonthInDollar"
|
|
@@ -218,8 +227,57 @@
|
|
|
218
227
|
:label="$dataStore.t('productConditionsForm.dollarExchangeRateNBRK')"
|
|
219
228
|
:suffix="$constants.currencySymbols.kzt"
|
|
220
229
|
/>
|
|
230
|
+
<base-form-input
|
|
231
|
+
v-if="whichProduct === 'gons'"
|
|
232
|
+
v-model="productConditionsForm.totalAmount5"
|
|
233
|
+
:readonly="true"
|
|
234
|
+
:label="$dataStore.t('productConditionsForm.totalAmount5')"
|
|
235
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
236
|
+
/>
|
|
237
|
+
<base-form-input
|
|
238
|
+
v-if="whichProduct === 'gons'"
|
|
239
|
+
v-model="productConditionsForm.statePremium5"
|
|
240
|
+
:readonly="true"
|
|
241
|
+
:label="$dataStore.t('productConditionsForm.statePremium5')"
|
|
242
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
243
|
+
/>
|
|
244
|
+
<base-form-input
|
|
245
|
+
v-if="whichProduct === 'gons'"
|
|
246
|
+
v-model="productConditionsForm.totalAmount7"
|
|
247
|
+
:readonly="true"
|
|
248
|
+
:label="$dataStore.t('productConditionsForm.totalAmount7')"
|
|
249
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
250
|
+
/>
|
|
251
|
+
<base-form-input
|
|
252
|
+
v-if="whichProduct === 'gons'"
|
|
253
|
+
v-model="productConditionsForm.statePremium7"
|
|
254
|
+
:readonly="true"
|
|
255
|
+
:label="$dataStore.t('productConditionsForm.statePremium7')"
|
|
256
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
257
|
+
/>
|
|
258
|
+
<base-panel-input
|
|
259
|
+
v-if="hasAgencyPart"
|
|
260
|
+
v-model="productConditionsForm.processTariff"
|
|
261
|
+
:value="productConditionsForm.processTariff?.nameRu"
|
|
262
|
+
:readonly="isDisabled"
|
|
263
|
+
:clearable="!isDisabled"
|
|
264
|
+
:rules="$rules.objectRequired"
|
|
265
|
+
:label="$dataStore.t('productConditionsForm.agencyPart')"
|
|
266
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
267
|
+
@append="openPanel($dataStore.t('productConditionsForm.agencyPart'), $dataStore.processTariff, 'processTariff', $dataStore.getProcessTariff)"
|
|
268
|
+
/>
|
|
269
|
+
<base-panel-input
|
|
270
|
+
v-if="hasProcessGfot"
|
|
271
|
+
v-model="productConditionsForm.processGfot"
|
|
272
|
+
:value="productConditionsForm.processGfot?.nameRu"
|
|
273
|
+
:readonly="isDisabledProcessGfot"
|
|
274
|
+
:clearable="!isDisabledProcessGfot"
|
|
275
|
+
:label="$dataStore.t('productConditionsForm.processGfot')"
|
|
276
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
277
|
+
@append="openPanel($dataStore.t('productConditionsForm.processGfot'), $dataStore.processGfot, 'processGfot', $dataStore.getProcessGfot)"
|
|
278
|
+
/>
|
|
221
279
|
</base-form-section>
|
|
222
|
-
<base-form-section :title="$dataStore.t('calculationAnnuityPayments')"
|
|
280
|
+
<base-form-section v-if="hasAnnuityPayments" :title="$dataStore.t('calculationAnnuityPayments')">
|
|
223
281
|
<base-form-toggle
|
|
224
282
|
v-model="productConditionsForm.additionalConditionAnnuityPayments"
|
|
225
283
|
:title="$dataStore.t('productConditionsForm.guaranteedTermAnnuityPayments')"
|
|
@@ -240,7 +298,7 @@
|
|
|
240
298
|
/>
|
|
241
299
|
<base-panel-input
|
|
242
300
|
v-model="productConditionsForm.typeAnnuityInsurance"
|
|
243
|
-
:value="productConditionsForm.typeAnnuityInsurance
|
|
301
|
+
:value="productConditionsForm.typeAnnuityInsurance?.nameRu"
|
|
244
302
|
:readonly="isDisabled"
|
|
245
303
|
:clearable="!isDisabled"
|
|
246
304
|
:rules="$rules.objectRequired"
|
|
@@ -258,7 +316,7 @@
|
|
|
258
316
|
/>
|
|
259
317
|
<base-panel-input
|
|
260
318
|
v-model="productConditionsForm.periodAnnuityPayment"
|
|
261
|
-
:value="productConditionsForm.periodAnnuityPayment
|
|
319
|
+
:value="productConditionsForm.periodAnnuityPayment?.nameRu"
|
|
262
320
|
:readonly="isDisabled"
|
|
263
321
|
:clearable="!isDisabled"
|
|
264
322
|
:rules="$rules.objectRequired"
|
|
@@ -281,6 +339,128 @@
|
|
|
281
339
|
:label="$dataStore.t('productConditionsForm.amountAnnuityPayments')"
|
|
282
340
|
/>
|
|
283
341
|
</base-form-section>
|
|
342
|
+
<base-form-section v-if="whichProduct === 'lifetrip'" :title="$dataStore.t('generalConditions')">
|
|
343
|
+
<base-panel-input
|
|
344
|
+
v-model="calculatorForm.type"
|
|
345
|
+
:value="calculatorForm.type.nameRu ?? $dataStore.t('form.notChosen')"
|
|
346
|
+
:readonly="isDisabled"
|
|
347
|
+
:clearable="!isDisabled"
|
|
348
|
+
:rules="$rules.objectRequired"
|
|
349
|
+
:label="$dataStore.t('calculatorForm.type')"
|
|
350
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
351
|
+
@append="openPanel($dataStore.t('calculatorForm.type'), [], 'type', $dataStore.getDicTripType)"
|
|
352
|
+
/>
|
|
353
|
+
<base-panel-input
|
|
354
|
+
v-model="calculatorForm.countries"
|
|
355
|
+
:value="calculatorForm?.countries![0]?.nameRu && calculatorForm.countries.length ? countriesComputed : $dataStore.t('form.notChosen')"
|
|
356
|
+
:readonly="isDisabled"
|
|
357
|
+
:clearable="!isDisabled"
|
|
358
|
+
:clear-value="[]"
|
|
359
|
+
:label="$dataStore.t('calculatorForm.countries')"
|
|
360
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
361
|
+
@append="openMultiplePanel($dataStore.t('calculatorForm.countries'), $dataStore.dicAllCountries, 'countries', $dataStore.getDicCountries)"
|
|
362
|
+
/>
|
|
363
|
+
<base-panel-input
|
|
364
|
+
v-model="calculatorForm.amount"
|
|
365
|
+
:value="calculatorForm.amount.nameRu ? calculatorForm.amount.nameRu + $dataStore.currency : $dataStore.t('form.notChosen')"
|
|
366
|
+
:readonly="isDisabled"
|
|
367
|
+
:clearable="!isDisabled"
|
|
368
|
+
:rules="$rules.objectRequired"
|
|
369
|
+
:label="$dataStore.t('calculatorForm.amount')"
|
|
370
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
371
|
+
@append="openPanel($dataStore.t('calculatorForm.amount'), $dataStore.amountArray, 'amount')"
|
|
372
|
+
/>
|
|
373
|
+
<base-panel-input
|
|
374
|
+
v-model="calculatorForm.purpose"
|
|
375
|
+
:value="calculatorForm.purpose.nameRu ?? $dataStore.t('form.notChosen')"
|
|
376
|
+
:readonly="isDisabled"
|
|
377
|
+
:clearable="!isDisabled"
|
|
378
|
+
:rules="$rules.objectRequired"
|
|
379
|
+
:label="$dataStore.t('calculatorForm.purpose')"
|
|
380
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
381
|
+
@append="openPanel($dataStore.t('calculatorForm.purpose'), [], 'purpose', $dataStore.getDicTripPurpose)"
|
|
382
|
+
/>
|
|
383
|
+
<base-panel-input
|
|
384
|
+
v-if="calculatorForm.purpose.code === 'WorkStudy'"
|
|
385
|
+
v-model="calculatorForm.workType"
|
|
386
|
+
:value="calculatorForm.workType.nameRu ?? $dataStore.t('form.notChosen')"
|
|
387
|
+
:readonly="isDisabled"
|
|
388
|
+
:clearable="!isDisabled"
|
|
389
|
+
:rules="$rules.objectRequired"
|
|
390
|
+
:label="$dataStore.t('calculatorForm.workType')"
|
|
391
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
392
|
+
@append="openPanel($dataStore.t('calculatorForm.workType'), [], 'workType', $dataStore.getDicTripWorkType)"
|
|
393
|
+
/>
|
|
394
|
+
<base-panel-input
|
|
395
|
+
v-if="calculatorForm.purpose.code === 'Sport'"
|
|
396
|
+
v-model="calculatorForm.sportsType"
|
|
397
|
+
:value="calculatorForm.sportsType.nameRu ?? $dataStore.t('form.notChosen')"
|
|
398
|
+
:readonly="isDisabled"
|
|
399
|
+
:clearable="!isDisabled"
|
|
400
|
+
:rules="$rules.objectRequired"
|
|
401
|
+
:label="$dataStore.t('calculatorForm.sportsType')"
|
|
402
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
403
|
+
@append="openPanel($dataStore.t('calculatorForm.sportsType'), [], 'sportsType', $dataStore.getDicSportsType)"
|
|
404
|
+
/>
|
|
405
|
+
<base-panel-input
|
|
406
|
+
v-if="calculatorForm.type.code === 'Multiple'"
|
|
407
|
+
v-model="calculatorForm.period"
|
|
408
|
+
:value="calculatorForm.period && calculatorForm.period.nameRu ? calculatorForm.period.nameRu : $dataStore.t('form.notChosen')"
|
|
409
|
+
:readonly="isDisabled"
|
|
410
|
+
:clearable="!isDisabled"
|
|
411
|
+
:rules="$rules.objectRequired"
|
|
412
|
+
:label="$dataStore.t('calculatorForm.period')"
|
|
413
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
414
|
+
@append="openPanel($dataStore.t('calculatorForm.period'), $dataStore.periodArray, 'period')"
|
|
415
|
+
/>
|
|
416
|
+
<base-panel-input
|
|
417
|
+
v-if="calculatorForm.type.code === 'Multiple'"
|
|
418
|
+
v-model="calculatorForm.maxDays"
|
|
419
|
+
:value="calculatorForm.period && calculatorForm.maxDays.nameRu ? calculatorForm.maxDays.nameRu : $dataStore.t('form.notChosen')"
|
|
420
|
+
:readonly="isDisabled"
|
|
421
|
+
:clearable="!isDisabled"
|
|
422
|
+
:rules="$rules.objectRequired"
|
|
423
|
+
:label="$dataStore.t('calculatorForm.maxDays')"
|
|
424
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
425
|
+
@append="openPanel($dataStore.t('calculatorForm.maxDays'), $dataStore.maxDaysFiltered, 'maxDays')"
|
|
426
|
+
/>
|
|
427
|
+
<base-form-input
|
|
428
|
+
v-if="calculatorForm.type.code === 'Single'"
|
|
429
|
+
v-model="calculatorForm.days"
|
|
430
|
+
:readonly="isDisabled || !isCalculator"
|
|
431
|
+
:label="$dataStore.t('calculatorForm.days')"
|
|
432
|
+
:rules="$rules.required"
|
|
433
|
+
/>
|
|
434
|
+
<base-form-input
|
|
435
|
+
v-if="isCalculator && whichProduct === 'lifetrip'"
|
|
436
|
+
v-model="calculatorForm.age"
|
|
437
|
+
:rules="$rules.required"
|
|
438
|
+
:readonly="isDisabledSum"
|
|
439
|
+
:clearable="!isDisabled"
|
|
440
|
+
:label="$dataStore.t('calculatorForm.age')"
|
|
441
|
+
/>
|
|
442
|
+
<base-form-input
|
|
443
|
+
v-if="!isCalculator && whichProduct === 'lifetrip'"
|
|
444
|
+
v-model="calculatorForm.startDate"
|
|
445
|
+
:readonly="isDisabled"
|
|
446
|
+
:clearable="!isDisabled"
|
|
447
|
+
:label="$dataStore.t('calculatorForm.startDate')"
|
|
448
|
+
:rules="$dataStore.rules.required.concat($dataStore.rules.planDate)"
|
|
449
|
+
:maska="$maska.date"
|
|
450
|
+
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
451
|
+
/>
|
|
452
|
+
<base-form-input
|
|
453
|
+
v-if="!isCalculator && calculatorForm.type.code != 'Multiple'"
|
|
454
|
+
v-model="calculatorForm.endDate"
|
|
455
|
+
:readonly="isDisabled"
|
|
456
|
+
:clearable="!isDisabled"
|
|
457
|
+
:label="$dataStore.t('calculatorForm.endDate')"
|
|
458
|
+
:rules="$dataStore.rules.required"
|
|
459
|
+
:maska="$maska.date"
|
|
460
|
+
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
461
|
+
/>
|
|
462
|
+
<base-form-input v-model="calculatorForm.price" :readonly="true" :label="isCalculator ? $dataStore.t('calculatorForm.premium') : $dataStore.t('calculatorForm.price')" />
|
|
463
|
+
</base-form-section>
|
|
284
464
|
<base-form-section v-if="additionalTerms && additionalTerms.length" :title="$dataStore.t('productConditionsForm.additional')">
|
|
285
465
|
<div v-for="(term, index) of additionalTerms" :key="index">
|
|
286
466
|
<base-panel-input
|
|
@@ -288,7 +468,7 @@
|
|
|
288
468
|
v-model="additionalTerms[index]"
|
|
289
469
|
:value="term.coverSumName"
|
|
290
470
|
:readonly="isTermsDisabled"
|
|
291
|
-
:clearable="
|
|
471
|
+
:clearable="false"
|
|
292
472
|
:label="term.coverTypeName"
|
|
293
473
|
append-inner-icon="mdi mdi-chevron-right"
|
|
294
474
|
:suffix="!!term.amount ? `${formatTermValue(term.amount)} ${currencySymbolsAddTerm}` : ''"
|
|
@@ -297,12 +477,7 @@
|
|
|
297
477
|
</div>
|
|
298
478
|
</base-form-section>
|
|
299
479
|
</v-form>
|
|
300
|
-
<base-btn
|
|
301
|
-
v-if="!$dataStore.isCalculator && isRecalculation && hasCalculated"
|
|
302
|
-
:btn="$libStyles.greenLightBtn"
|
|
303
|
-
:text="$dataStore.t('buttons.toStatement')"
|
|
304
|
-
@click="toStatement"
|
|
305
|
-
/>
|
|
480
|
+
<base-btn v-if="!$dataStore.isCalculator && isCalculator && hasCalculated" :btn="$styles.greenLightBtn" :text="$dataStore.t('buttons.toStatement')" @click="toStatement" />
|
|
306
481
|
<base-btn
|
|
307
482
|
v-if="$dataStore.isCalculator ? true : !isDisabled && isTask && ($dataStore.isInitiator() || $dataStore.isUnderwriter())"
|
|
308
483
|
:loading="isCalculating"
|
|
@@ -313,8 +488,8 @@
|
|
|
313
488
|
<base-btn :text="$dataStore.t('buttons.calcSum')" type="submit" @click.prevent="underwriterCalculate('sum')" :loading="isCalculating" />
|
|
314
489
|
<base-btn :text="$dataStore.t('buttons.calcPremium')" type="submit" @click.prevent="underwriterCalculate('premium')" :loading="isCalculating" />
|
|
315
490
|
</div>
|
|
316
|
-
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
317
|
-
<div :class="[$
|
|
491
|
+
<Teleport v-if="isPanelOpen" to="#right-panel-actions">
|
|
492
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
318
493
|
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
319
494
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
320
495
|
<base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
|
|
@@ -329,8 +504,31 @@
|
|
|
329
504
|
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
330
505
|
</div>
|
|
331
506
|
</Teleport>
|
|
332
|
-
<Teleport v-if="
|
|
333
|
-
<div :class="[$
|
|
507
|
+
<Teleport v-if="isMultiplePanelOpen && calculatorForm.countries !== null" to="#right-panel-actions">
|
|
508
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
509
|
+
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
510
|
+
<v-fade-transition>
|
|
511
|
+
<base-form-section v-if="countriesComputed" class="w-[95%]" :title="$dataStore.t('calculatorForm.selectedCountries')">
|
|
512
|
+
<base-white-block class="text-center" :class="[$styles.textSimple]"> {{ countriesComputed }} </base-white-block>
|
|
513
|
+
</base-form-section>
|
|
514
|
+
</v-fade-transition>
|
|
515
|
+
<div v-if="multiplePanelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
516
|
+
<base-panel-select-item :text="$dataStore.t('buttons.clearOrReset')" @click="calculatorForm.countries = []" false-icon="mdi-close-circle-outline" />
|
|
517
|
+
<base-panel-select-item
|
|
518
|
+
v-for="(item, index) of multiplePanelList.filter(i => i.nameRu && (i.nameRu as string).match(new RegExp(searchQuery, 'i')))"
|
|
519
|
+
:key="index"
|
|
520
|
+
:text="(item.nameRu as string)"
|
|
521
|
+
:selected="calculatorForm.countries && calculatorForm.countries.some(option => option.id === item.id)"
|
|
522
|
+
:disabled="calculatorForm.countries.length >= 3 && !calculatorForm.countries.some(option => option.id === item.id)"
|
|
523
|
+
true-icon="mdi-check-circle-outline"
|
|
524
|
+
@click="selectOption(item)"
|
|
525
|
+
/>
|
|
526
|
+
</div>
|
|
527
|
+
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
528
|
+
</div>
|
|
529
|
+
</Teleport>
|
|
530
|
+
<Teleport v-if="isTermsPanelOpen" to="#right-panel-actions">
|
|
531
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
334
532
|
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
335
533
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
336
534
|
<base-panel-select-item
|
|
@@ -344,20 +542,48 @@
|
|
|
344
542
|
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
345
543
|
</div>
|
|
346
544
|
</Teleport>
|
|
545
|
+
<Teleport v-if="isFixInsAmountPanelOpen" to="#right-panel-actions">
|
|
546
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
547
|
+
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
548
|
+
<div class="w-full flex flex-col gap-2 p-2">
|
|
549
|
+
<base-panel-select-item
|
|
550
|
+
v-for="(item, index) of $constants.fixInsAmount.filter(i => i.nameRu && (i.nameRu as string).match(new RegExp(searchQuery, 'i')))"
|
|
551
|
+
:key="index"
|
|
552
|
+
:text="(item.nameRu as string)"
|
|
553
|
+
:selected="item.code === fixInsValue"
|
|
554
|
+
@click="pickfixInsValue(item)"
|
|
555
|
+
/>
|
|
556
|
+
</div>
|
|
557
|
+
</div>
|
|
558
|
+
</Teleport>
|
|
559
|
+
<Teleport v-if="isCoverPeriodPanelOpen" to="#right-panel-actions">
|
|
560
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
561
|
+
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
562
|
+
<div class="w-full flex flex-col gap-2 p-2">
|
|
563
|
+
<base-panel-select-item
|
|
564
|
+
v-for="(item, index) of panelList.filter(i => i.nameRu && (i.nameRu as string).match(new RegExp(searchQuery, 'i')))"
|
|
565
|
+
:key="index"
|
|
566
|
+
:text="(item.nameRu as string)"
|
|
567
|
+
:selected="item.code === coverPeriodValue"
|
|
568
|
+
@click="pickCoverPeriodValue(item)"
|
|
569
|
+
/>
|
|
570
|
+
</div>
|
|
571
|
+
</div>
|
|
572
|
+
</Teleport>
|
|
347
573
|
</section>
|
|
348
574
|
</template>
|
|
349
575
|
|
|
350
576
|
<script lang="ts">
|
|
351
|
-
import { Member, Value } from '../../composables/classes';
|
|
577
|
+
import { Member, Value, CountryValue, CalculatorForm } from '../../composables/classes';
|
|
352
578
|
|
|
353
579
|
export default defineComponent({
|
|
354
580
|
props: {
|
|
355
|
-
|
|
581
|
+
isCalculator: {
|
|
356
582
|
type: Boolean,
|
|
357
583
|
default: false,
|
|
358
584
|
},
|
|
359
585
|
product: {
|
|
360
|
-
type: String
|
|
586
|
+
type: String as PropType<Projects>,
|
|
361
587
|
default: false,
|
|
362
588
|
},
|
|
363
589
|
},
|
|
@@ -369,11 +595,15 @@ export default defineComponent({
|
|
|
369
595
|
const dataStore = useDataStore();
|
|
370
596
|
const memberStore = useMemberStore();
|
|
371
597
|
|
|
372
|
-
const whichProduct = ref<
|
|
598
|
+
const whichProduct = ref<Projects | null>(dataStore.isCalculator ? props.product : dataStore.product!);
|
|
373
599
|
const isCalculating = ref<boolean>(false);
|
|
374
600
|
const isPanelLoading = ref<boolean>(false);
|
|
375
601
|
const isPanelOpen = ref<boolean>(false);
|
|
376
602
|
const isTermsPanelOpen = ref<boolean>(false);
|
|
603
|
+
const isFixInsAmountPanelOpen = ref<boolean>(false);
|
|
604
|
+
const isCoverPeriodPanelOpen = ref<boolean>(false);
|
|
605
|
+
const fixInsValue = ref<string | number>();
|
|
606
|
+
const coverPeriodValue = ref<string>('');
|
|
377
607
|
const panelValue = ref<Value>(new Value());
|
|
378
608
|
const termValue = ref<AddCover>();
|
|
379
609
|
const panelList = ref<Value[]>([]);
|
|
@@ -384,8 +614,14 @@ export default defineComponent({
|
|
|
384
614
|
const whichSum = ref<'insurancePremiumPerMonth' | 'requestedSumInsured' | ''>('');
|
|
385
615
|
|
|
386
616
|
const additionalTerms = ref<AddCover[]>([]);
|
|
617
|
+
const isMultiplePanelOpen = ref<boolean>(false);
|
|
618
|
+
|
|
619
|
+
const multiplePanelValue = ref<CountryValue>(new CountryValue());
|
|
620
|
+
const multiplePanelList = ref<CountryValue[]>([]);
|
|
621
|
+
const calculatorForm = productConditionsForm.calculatorForm;
|
|
622
|
+
|
|
387
623
|
const isUnderwriterForm = computed(() => {
|
|
388
|
-
if (route.params.taskId === '0 ' || props.
|
|
624
|
+
if (route.params.taskId === '0 ' || props.isCalculator === true) {
|
|
389
625
|
return false;
|
|
390
626
|
} else {
|
|
391
627
|
return formStore.applicationData.statusCode === 'UnderwriterForm';
|
|
@@ -393,20 +629,34 @@ export default defineComponent({
|
|
|
393
629
|
});
|
|
394
630
|
const isDisabled = computed(() => (dataStore.isCalculator ? false : !memberStore.isStatementEditible('productConditionsForm')));
|
|
395
631
|
const isTermsDisabled = computed(() => {
|
|
396
|
-
if (
|
|
632
|
+
if (whichProduct.value === 'gons') {
|
|
397
633
|
return true;
|
|
398
634
|
}
|
|
399
635
|
return isDisabled.value;
|
|
400
636
|
});
|
|
401
|
-
const isTask = computed(() => (route.params.taskId === '0' && props.
|
|
402
|
-
const isRecalculationDisabled = computed(() => formStore.isDisabled.recalculationForm);
|
|
637
|
+
const isTask = computed(() => (route.params.taskId === '0' && props.isCalculator === true) || dataStore.isTask());
|
|
638
|
+
const isRecalculationDisabled = computed(() => formStore.isDisabled.recalculationForm || formStore.canBeClaimed === true);
|
|
403
639
|
const isUnderwriterRole = computed(() => dataStore.isUnderwriter() || dataStore.isAdmin() || dataStore.isSupport());
|
|
404
|
-
const
|
|
405
|
-
const
|
|
406
|
-
|
|
640
|
+
const insurancePremiumPerMonthRule = computed(() => (!!productConditionsForm.insurancePremiumPerMonth ? dataStore.rules.required.concat(dataStore.rules.sums) : []));
|
|
641
|
+
const insurancePremiumPerMonthDisabled = computed(() => {
|
|
642
|
+
if (dataStore.isUnderwriter() && !isRecalculationDisabled.value) {
|
|
643
|
+
return false;
|
|
644
|
+
}
|
|
645
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
646
|
+
return true;
|
|
647
|
+
}
|
|
648
|
+
return isDisabled.value;
|
|
649
|
+
});
|
|
650
|
+
const requestedSumInsuredRule = computed(() => (!!productConditionsForm.requestedSumInsured ? dataStore.rules.required.concat(dataStore.rules.sums) : []));
|
|
407
651
|
const amountAnnuityPayments = computed(() => (!!productConditionsForm.amountAnnuityPayments ? dataStore.rules.required.concat(dataStore.rules.sums) : []));
|
|
652
|
+
const hasCalculated = computed(() => {
|
|
653
|
+
if (whichProduct.value === 'lifebusiness' && productConditionsForm.requestedSumInsured === null) {
|
|
654
|
+
return !!productConditionsForm.insurancePremiumPerMonth;
|
|
655
|
+
}
|
|
656
|
+
return !!productConditionsForm.requestedSumInsured && !!productConditionsForm.insurancePremiumPerMonth;
|
|
657
|
+
});
|
|
408
658
|
const hasProcessIndexRate = computed(() => {
|
|
409
|
-
if (whichProduct.value === 'gons' || whichProduct.value === 'halykkazyna' || whichProduct.value === 'liferenta') {
|
|
659
|
+
if (whichProduct.value === 'gons' || whichProduct.value === 'halykkazyna' || whichProduct.value === 'liferenta' || whichProduct.value === 'lifebusiness') {
|
|
410
660
|
return false;
|
|
411
661
|
}
|
|
412
662
|
return true;
|
|
@@ -441,6 +691,24 @@ export default defineComponent({
|
|
|
441
691
|
}
|
|
442
692
|
return true;
|
|
443
693
|
});
|
|
694
|
+
const readonlyLifeAdditive = computed(() => {
|
|
695
|
+
if (whichProduct.value === 'gons') {
|
|
696
|
+
return true;
|
|
697
|
+
}
|
|
698
|
+
return isRecalculationDisabled.value;
|
|
699
|
+
});
|
|
700
|
+
const readonlyDisabilityMultiply = computed(() => {
|
|
701
|
+
if (whichProduct.value === 'gons') {
|
|
702
|
+
return true;
|
|
703
|
+
}
|
|
704
|
+
return isRecalculationDisabled.value;
|
|
705
|
+
});
|
|
706
|
+
const readonlyDisabilityAdditive = computed(() => {
|
|
707
|
+
if (whichProduct.value === 'gons') {
|
|
708
|
+
return true;
|
|
709
|
+
}
|
|
710
|
+
return isRecalculationDisabled.value;
|
|
711
|
+
});
|
|
444
712
|
const hasAdbAdditive = computed(() => {
|
|
445
713
|
if (whichProduct.value === 'gons') {
|
|
446
714
|
return false;
|
|
@@ -459,6 +727,30 @@ export default defineComponent({
|
|
|
459
727
|
}
|
|
460
728
|
return false;
|
|
461
729
|
});
|
|
730
|
+
const hasBirthDate = computed(() => {
|
|
731
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
732
|
+
return false;
|
|
733
|
+
}
|
|
734
|
+
return true;
|
|
735
|
+
});
|
|
736
|
+
const hasGender = computed(() => {
|
|
737
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
738
|
+
return false;
|
|
739
|
+
}
|
|
740
|
+
return true;
|
|
741
|
+
});
|
|
742
|
+
const hasAgencyPart = computed(() => {
|
|
743
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
744
|
+
return true;
|
|
745
|
+
}
|
|
746
|
+
return false;
|
|
747
|
+
});
|
|
748
|
+
const hasProcessGfot = computed(() => {
|
|
749
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
750
|
+
return true;
|
|
751
|
+
}
|
|
752
|
+
return false;
|
|
753
|
+
});
|
|
462
754
|
const coverPeriodRule = computed(() => {
|
|
463
755
|
const baseCondition = dataStore.rules.required.concat(dataStore.rules.numbers);
|
|
464
756
|
if (whichProduct.value === 'gons') {
|
|
@@ -479,30 +771,86 @@ export default defineComponent({
|
|
|
479
771
|
if (whichProduct.value === 'halykkazyna') {
|
|
480
772
|
return dataStore.t('productConditionsForm.requestedSumInsuredInTenge');
|
|
481
773
|
}
|
|
774
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
775
|
+
return dataStore.t('productConditionsForm.totalRequestedSumInsured');
|
|
776
|
+
}
|
|
482
777
|
return dataStore.t('productConditionsForm.requestedSumInsured');
|
|
483
778
|
});
|
|
779
|
+
const coverPeriodLabel = computed(() => {
|
|
780
|
+
if (whichProduct.value === 'gons') {
|
|
781
|
+
return dataStore.t('productConditionsForm.coverPeriodFrom3to20');
|
|
782
|
+
}
|
|
783
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
784
|
+
return dataStore.t('productConditionsForm.coverPeriodMonth');
|
|
785
|
+
}
|
|
786
|
+
return dataStore.t('productConditionsForm.coverPeriod');
|
|
787
|
+
});
|
|
788
|
+
const insurancePremiumPerMonthLabel = computed(() => {
|
|
789
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
790
|
+
return dataStore.t('productConditionsForm.totalInsurancePremiumAmount');
|
|
791
|
+
}
|
|
792
|
+
return dataStore.t('productConditionsForm.insurancePremiumAmount');
|
|
793
|
+
});
|
|
484
794
|
const isDisabledSum = computed(() => {
|
|
485
795
|
if (whichProduct.value === 'halykkazyna') {
|
|
486
796
|
return true;
|
|
487
797
|
}
|
|
798
|
+
if (dataStore.isUnderwriter() && !isRecalculationDisabled.value) {
|
|
799
|
+
return false;
|
|
800
|
+
}
|
|
801
|
+
if (whichProduct.value === 'lifebusiness' && productConditionsForm.processGfot.id !== null) {
|
|
802
|
+
return true;
|
|
803
|
+
}
|
|
488
804
|
return isDisabled.value;
|
|
489
805
|
});
|
|
490
806
|
const isDisabledSumDollar = computed(() => {
|
|
491
807
|
if (whichProduct.value === 'halykkazyna') {
|
|
492
808
|
return true;
|
|
493
809
|
}
|
|
810
|
+
if (dataStore.isUnderwriter() && !isRecalculationDisabled.value) {
|
|
811
|
+
return false;
|
|
812
|
+
}
|
|
813
|
+
return isDisabled.value;
|
|
814
|
+
});
|
|
815
|
+
const countriesComputed = computed(() => {
|
|
816
|
+
let message = '';
|
|
817
|
+
for (let country in calculatorForm.countries) {
|
|
818
|
+
message += calculatorForm.countries[country as any].nameRu + ', ';
|
|
819
|
+
}
|
|
820
|
+
return message.slice(0, -2);
|
|
821
|
+
});
|
|
822
|
+
const isDisabledCoverPeriod = computed(() => {
|
|
823
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
824
|
+
return true;
|
|
825
|
+
}
|
|
826
|
+
return isDisabled.value;
|
|
827
|
+
});
|
|
828
|
+
const hasDefault = computed(() => {
|
|
829
|
+
if (whichProduct.value === 'lifetrip') {
|
|
830
|
+
return false;
|
|
831
|
+
}
|
|
832
|
+
return true;
|
|
833
|
+
});
|
|
834
|
+
const isDisabledProcessGfot = computed(() => {
|
|
835
|
+
if (whichProduct.value === 'lifebusiness' && !!productConditionsForm.requestedSumInsured) {
|
|
836
|
+
return true;
|
|
837
|
+
}
|
|
494
838
|
return isDisabled.value;
|
|
495
839
|
});
|
|
496
|
-
|
|
497
840
|
const formatTermValue = (term: number) => {
|
|
498
841
|
if (term !== null) {
|
|
499
|
-
|
|
842
|
+
const termNumber = Number(term);
|
|
843
|
+
return Number.isInteger(termNumber) ? dataStore.getNumberWithSpaces(termNumber) : dataStore.getNumberWithDot(termNumber);
|
|
500
844
|
}
|
|
501
845
|
return null;
|
|
502
846
|
};
|
|
503
847
|
|
|
504
848
|
const toStatement = async () => {
|
|
505
849
|
const statementItem = dataStore.menuItems.find(i => i.id === 'statement');
|
|
850
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
851
|
+
await router.push({ name: 'taskId-NewApp', params: route.params, query: { tab: 'statement' } });
|
|
852
|
+
return;
|
|
853
|
+
}
|
|
506
854
|
if (statementItem) {
|
|
507
855
|
dataStore.menu.selectedItem = statementItem;
|
|
508
856
|
await router.replace({
|
|
@@ -516,30 +864,97 @@ export default defineComponent({
|
|
|
516
864
|
};
|
|
517
865
|
|
|
518
866
|
const pickPanelValue = (item: Value) => {
|
|
519
|
-
dataStore.
|
|
867
|
+
dataStore.rightPanel.open = false;
|
|
520
868
|
isPanelOpen.value = false;
|
|
869
|
+
isMultiplePanelOpen.value = false;
|
|
870
|
+
if (item.id === null) {
|
|
871
|
+
calculatorForm.countries = [];
|
|
872
|
+
}
|
|
521
873
|
if (!currentPanel.value) return;
|
|
522
|
-
|
|
523
|
-
|
|
874
|
+
if (whichProduct.value === 'lifetrip') {
|
|
875
|
+
// @ts-ignore
|
|
876
|
+
calculatorForm[currentPanel.value] = item.nameRu === null ? new Value() : item;
|
|
877
|
+
} else {
|
|
878
|
+
// @ts-ignore
|
|
879
|
+
productConditionsForm[currentPanel.value] = item.nameRu === null ? new Value() : item;
|
|
880
|
+
}
|
|
524
881
|
};
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
882
|
+
const selectOption = (value: CountryValue) => {
|
|
883
|
+
if (calculatorForm.countries !== null) {
|
|
884
|
+
if (value.id == 0) {
|
|
885
|
+
calculatorForm.countries = [];
|
|
886
|
+
return (dataStore.dicCountries = dataStore.dicAllCountries);
|
|
887
|
+
}
|
|
888
|
+
if (calculatorForm.countries.some((option: CountryValue) => option.id == value.id)) {
|
|
889
|
+
calculatorForm.countries = calculatorForm.countries.filter((obj: CountryValue) => obj.id !== value.id);
|
|
890
|
+
dataStore.dicCountries = dataStore.dicAllCountries;
|
|
891
|
+
} else {
|
|
892
|
+
dataStore.dicCountries = dataStore.dicAllCountries.filter(i =>
|
|
893
|
+
i.id == 0 || (value.countryTypeCode == '1' && i.countryTypeCode == value.countryTypeCode) || (value.countryTypeCode != '1' && i.countryTypeCode != '1') ? true : false,
|
|
894
|
+
);
|
|
895
|
+
if (value.countryTypeCode == 1) {
|
|
896
|
+
dataStore.showToaster('success', dataStore.t('toaster.shengenZoneCondition'), 3000);
|
|
897
|
+
formStore.insuredForm.length = 1;
|
|
898
|
+
}
|
|
899
|
+
if (calculatorForm.countries.length < 3) {
|
|
900
|
+
calculatorForm.countries.push(value);
|
|
901
|
+
} else if (calculatorForm.countries.length >= 3) {
|
|
902
|
+
closeMultiplePanel();
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
};
|
|
907
|
+
const pickTermValue = async (item: Value) => {
|
|
908
|
+
dataStore.rightPanel.open = false;
|
|
528
909
|
isTermsPanelOpen.value = false;
|
|
529
910
|
if (typeof currentIndex.value !== 'number') return;
|
|
530
911
|
additionalTerms.value[currentIndex.value].coverSumId = item.id as string;
|
|
531
912
|
additionalTerms.value[currentIndex.value].coverSumName = item.nameRu as string;
|
|
913
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
914
|
+
if (item.code === 'fixedinssum') {
|
|
915
|
+
openFixInsPanel(dataStore.t('clients.selectInsSum'), additionalTerms.value[currentIndex.value].amount);
|
|
916
|
+
} else {
|
|
917
|
+
additionalTerms.value[currentIndex.value].amount = 0;
|
|
918
|
+
}
|
|
919
|
+
if (termValue.value && termValue.value.coverTypeCode === 6) {
|
|
920
|
+
const res = await dataStore.getFromApi('DicCoverTypePeriod', 'getArmDicts', 'DicCoverTypePeriod');
|
|
921
|
+
panelList.value = filterList(res, '');
|
|
922
|
+
const coverPeriodName = panelList.value.find(i => i.id === String(termValue.value!.coverPeriodId));
|
|
923
|
+
if (coverPeriodName) coverPeriodValue.value = coverPeriodName.code as string;
|
|
924
|
+
isPanelOpen.value = false;
|
|
925
|
+
isTermsPanelOpen.value = false;
|
|
926
|
+
isFixInsAmountPanelOpen.value = false;
|
|
927
|
+
isCoverPeriodPanelOpen.value = true;
|
|
928
|
+
dataStore.panelAction = null;
|
|
929
|
+
dataStore.rightPanel.open = true;
|
|
930
|
+
isMultiplePanelOpen.value = false;
|
|
931
|
+
dataStore.rightPanel.title = dataStore.t('clients.coveragePeriod');
|
|
932
|
+
}
|
|
933
|
+
}
|
|
532
934
|
};
|
|
533
935
|
|
|
534
936
|
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
|
|
535
937
|
if (!isDisabled.value || (key === 'riskGroup' && !isRecalculationDisabled.value)) {
|
|
938
|
+
if (key === 'amount') {
|
|
939
|
+
if (calculatorForm.type.nameRu === null || !calculatorForm.countries || (calculatorForm.countries && calculatorForm.countries.length === 0)) {
|
|
940
|
+
return dataStore.showToaster('error', dataStore.t('toaster.noAmountBeforeTypeAndCountries'), 2000);
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
if (key === 'maxDays') {
|
|
944
|
+
if (calculatorForm.period.code === null) {
|
|
945
|
+
return dataStore.showToaster('error', dataStore.t('toaster.noMaxDaysBeforePeriod'), 2000);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
536
948
|
searchQuery.value = '';
|
|
537
949
|
currentPanel.value = key as keyof typeof productConditionsForm;
|
|
538
950
|
isPanelOpen.value = true;
|
|
539
951
|
isTermsPanelOpen.value = false;
|
|
952
|
+
isFixInsAmountPanelOpen.value = false;
|
|
953
|
+
isCoverPeriodPanelOpen.value = false;
|
|
540
954
|
dataStore.panelAction = null;
|
|
541
|
-
dataStore.
|
|
542
|
-
dataStore.
|
|
955
|
+
dataStore.rightPanel.open = true;
|
|
956
|
+
dataStore.rightPanel.title = title;
|
|
957
|
+
isMultiplePanelOpen.value = false;
|
|
543
958
|
|
|
544
959
|
let newList = list;
|
|
545
960
|
if (asyncFunction) {
|
|
@@ -547,13 +962,55 @@ export default defineComponent({
|
|
|
547
962
|
newList = await asyncFunction(filterKey, formStore.productConditionsFormKey);
|
|
548
963
|
}
|
|
549
964
|
panelList.value = filterList(newList, key);
|
|
550
|
-
|
|
551
|
-
|
|
965
|
+
if (whichProduct.value === 'lifetrip') {
|
|
966
|
+
// @ts-ignore
|
|
967
|
+
panelValue.value = calculatorForm[currentPanel.value];
|
|
968
|
+
} else {
|
|
969
|
+
// @ts-ignore
|
|
970
|
+
panelValue.value = productConditionsForm[currentPanel.value];
|
|
971
|
+
}
|
|
552
972
|
isPanelLoading.value = false;
|
|
553
973
|
} else {
|
|
554
974
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
555
975
|
}
|
|
556
976
|
};
|
|
977
|
+
const openMultiplePanel = async (title: string, list: CountryValue[], key: string, asyncFunction?: Function, filterKey?: string) => {
|
|
978
|
+
if (!isDisabled.value || !isRecalculationDisabled.value) {
|
|
979
|
+
isPanelOpen.value = false;
|
|
980
|
+
isFixInsAmountPanelOpen.value = false;
|
|
981
|
+
isCoverPeriodPanelOpen.value = false;
|
|
982
|
+
isMultiplePanelOpen.value = true;
|
|
983
|
+
isPanelLoading.value = true;
|
|
984
|
+
let newList = list;
|
|
985
|
+
if (asyncFunction !== null) {
|
|
986
|
+
// @ts-ignore
|
|
987
|
+
newList = await asyncFunction(filterKey, formStore.productConditionsFormKey);
|
|
988
|
+
}
|
|
989
|
+
if (newList[0].nameRu !== null) {
|
|
990
|
+
// @ts-ignore
|
|
991
|
+
newList.unshift(new CountryValue(0, null));
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
dataStore.panelAction = null;
|
|
995
|
+
dataStore.rightPanel.open = true;
|
|
996
|
+
dataStore.rightPanel.title = title;
|
|
997
|
+
|
|
998
|
+
// @ts-ignore
|
|
999
|
+
multiplePanelList.value = filterList(newList, key);
|
|
1000
|
+
// @ts-ignore
|
|
1001
|
+
multiplePanelValue.value = calculatorForm[currentPanel.value];
|
|
1002
|
+
isPanelLoading.value = false;
|
|
1003
|
+
} else {
|
|
1004
|
+
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'), 2000);
|
|
1005
|
+
}
|
|
1006
|
+
};
|
|
1007
|
+
const closeMultiplePanel = (item?: CountryValue) => {
|
|
1008
|
+
dataStore.rightPanel.open = false;
|
|
1009
|
+
isMultiplePanelOpen.value = false;
|
|
1010
|
+
if (!currentPanel.value) return;
|
|
1011
|
+
// @ts-ignore
|
|
1012
|
+
calculatorForm[currentPanel.value] = item?.nameRu === null ? new Value() : item;
|
|
1013
|
+
};
|
|
557
1014
|
|
|
558
1015
|
const filterList = (list: Value[], key: string) => {
|
|
559
1016
|
if (whichProduct.value === 'baiterek') {
|
|
@@ -569,10 +1026,13 @@ export default defineComponent({
|
|
|
569
1026
|
searchQuery.value = '';
|
|
570
1027
|
currentIndex.value = index;
|
|
571
1028
|
isPanelOpen.value = false;
|
|
1029
|
+
isMultiplePanelOpen.value = false;
|
|
1030
|
+
isFixInsAmountPanelOpen.value = false;
|
|
1031
|
+
isCoverPeriodPanelOpen.value = false;
|
|
572
1032
|
isTermsPanelOpen.value = true;
|
|
573
1033
|
dataStore.panelAction = null;
|
|
574
|
-
dataStore.
|
|
575
|
-
dataStore.
|
|
1034
|
+
dataStore.rightPanel.open = true;
|
|
1035
|
+
dataStore.rightPanel.title = title;
|
|
576
1036
|
|
|
577
1037
|
let newList;
|
|
578
1038
|
if (asyncFunction) {
|
|
@@ -588,6 +1048,41 @@ export default defineComponent({
|
|
|
588
1048
|
}
|
|
589
1049
|
};
|
|
590
1050
|
|
|
1051
|
+
const openFixInsPanel = async (title: string, amount: number) => {
|
|
1052
|
+
if (!isDisabled.value) {
|
|
1053
|
+
searchQuery.value = '';
|
|
1054
|
+
isPanelOpen.value = false;
|
|
1055
|
+
isTermsPanelOpen.value = false;
|
|
1056
|
+
isMultiplePanelOpen.value = false;
|
|
1057
|
+
isCoverPeriodPanelOpen.value = false;
|
|
1058
|
+
isFixInsAmountPanelOpen.value = true;
|
|
1059
|
+
dataStore.panelAction = null;
|
|
1060
|
+
dataStore.rightPanel.open = true;
|
|
1061
|
+
dataStore.rightPanel.title = title;
|
|
1062
|
+
panelList.value = constants.fixInsAmount;
|
|
1063
|
+
fixInsValue.value = String(amount);
|
|
1064
|
+
} else {
|
|
1065
|
+
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
1066
|
+
}
|
|
1067
|
+
};
|
|
1068
|
+
|
|
1069
|
+
const pickfixInsValue = (item: Value) => {
|
|
1070
|
+
dataStore.rightPanel.open = false;
|
|
1071
|
+
isFixInsAmountPanelOpen.value = false;
|
|
1072
|
+
if (typeof currentIndex.value !== 'number') return;
|
|
1073
|
+
additionalTerms.value[currentIndex.value].amount = Number(item.code);
|
|
1074
|
+
};
|
|
1075
|
+
|
|
1076
|
+
const pickCoverPeriodValue = (item: Value) => {
|
|
1077
|
+
coverPeriodValue.value = item.code as string;
|
|
1078
|
+
dataStore.rightPanel.open = false;
|
|
1079
|
+
isCoverPeriodPanelOpen.value = false;
|
|
1080
|
+
if (typeof currentIndex.value !== 'number') return;
|
|
1081
|
+
additionalTerms.value[currentIndex.value].coverPeriodCode = item.code as string;
|
|
1082
|
+
additionalTerms.value[currentIndex.value].coverPeriodId = item.id as string;
|
|
1083
|
+
additionalTerms.value[currentIndex.value].coverPeriodName = item.nameRu as string;
|
|
1084
|
+
};
|
|
1085
|
+
|
|
591
1086
|
const underwriterCalculate = async (type: 'sum' | 'premium') => {
|
|
592
1087
|
if (!type) return;
|
|
593
1088
|
if (type === 'sum') {
|
|
@@ -687,6 +1182,12 @@ export default defineComponent({
|
|
|
687
1182
|
productConditionsForm.requestedSumInsuredInDollar = null;
|
|
688
1183
|
productConditionsForm.insurancePremiumPerMonth = null;
|
|
689
1184
|
productConditionsForm.insurancePremiumPerMonthInDollar = null;
|
|
1185
|
+
if (whichProduct.value === 'lifetrip') {
|
|
1186
|
+
Object.keys(calculatorForm).forEach(key => {
|
|
1187
|
+
//@ts-ignore
|
|
1188
|
+
calculatorForm[key] = new CalculatorForm()[key];
|
|
1189
|
+
});
|
|
1190
|
+
}
|
|
690
1191
|
};
|
|
691
1192
|
|
|
692
1193
|
const filterTermConditions = (term: AddCover) => {
|
|
@@ -695,89 +1196,111 @@ export default defineComponent({
|
|
|
695
1196
|
}
|
|
696
1197
|
return true;
|
|
697
1198
|
};
|
|
698
|
-
|
|
699
1199
|
const submitForm = async () => {
|
|
700
1200
|
vForm.value.validate().then(async (v: { valid: Boolean; errors: any }) => {
|
|
701
1201
|
if (v.valid) {
|
|
702
|
-
if (
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
1202
|
+
if (whichProduct.value === 'lifetrip') {
|
|
1203
|
+
if (calculatorForm.type.code === 'Single' && calculatorForm.startDate && calculatorForm.endDate) {
|
|
1204
|
+
const formattedStartDate = formatDate(calculatorForm.startDate);
|
|
1205
|
+
const formattedEndDate = formatDate(calculatorForm.endDate);
|
|
1206
|
+
if (formattedStartDate && formattedEndDate && formattedStartDate.getTime() > formattedEndDate.getTime()) {
|
|
1207
|
+
return dataStore.showToaster('error', dataStore.t('toaster.startMoreEnd'));
|
|
1208
|
+
}
|
|
706
1209
|
}
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
1210
|
+
if (dataStore.isTask()) {
|
|
1211
|
+
await dataStore.calculatePrice(route.params.taskId as string);
|
|
1212
|
+
} else {
|
|
1213
|
+
await dataStore.calculatePrice();
|
|
1214
|
+
}
|
|
1215
|
+
} else {
|
|
1216
|
+
if (whichSum.value === 'requestedSumInsured') {
|
|
1217
|
+
productConditionsForm.insurancePremiumPerMonth = null;
|
|
1218
|
+
if (whichProduct.value === 'halykkazyna') {
|
|
1219
|
+
productConditionsForm.insurancePremiumPerMonthInDollar = null;
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
if (whichSum.value === 'insurancePremiumPerMonth') {
|
|
1223
|
+
productConditionsForm.requestedSumInsured = null;
|
|
1224
|
+
if (whichProduct.value === 'halykkazyna') {
|
|
1225
|
+
productConditionsForm.requestedSumInsuredInDollar = null;
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
if (productConditionsForm.requestedSumInsured !== '' && productConditionsForm.requestedSumInsured != null) {
|
|
1229
|
+
productConditionsForm.insurancePremiumPerMonth = null;
|
|
1230
|
+
if (props.isCalculator) whichSum.value = 'requestedSumInsured';
|
|
1231
|
+
}
|
|
1232
|
+
if (productConditionsForm.insurancePremiumPerMonth !== '' && productConditionsForm.insurancePremiumPerMonth != null) {
|
|
1233
|
+
productConditionsForm.requestedSumInsured = null;
|
|
1234
|
+
if (props.isCalculator) whichSum.value = 'insurancePremiumPerMonth';
|
|
712
1235
|
}
|
|
713
|
-
}
|
|
714
|
-
if (productConditionsForm.requestedSumInsured !== '' && productConditionsForm.requestedSumInsured != null) {
|
|
715
|
-
productConditionsForm.insurancePremiumPerMonth = null;
|
|
716
|
-
if (props.isRecalculation) whichSum.value = 'requestedSumInsured';
|
|
717
|
-
}
|
|
718
|
-
if (productConditionsForm.insurancePremiumPerMonth !== '' && productConditionsForm.insurancePremiumPerMonth != null) {
|
|
719
|
-
productConditionsForm.requestedSumInsured = null;
|
|
720
|
-
if (props.isRecalculation) whichSum.value = 'insurancePremiumPerMonth';
|
|
721
|
-
}
|
|
722
1236
|
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
1237
|
+
if (!whichSum.value && isUnderwriterForm.value === false) {
|
|
1238
|
+
dataStore.showToaster('error', dataStore.t('toaster.emptyProductConditions'));
|
|
1239
|
+
return;
|
|
1240
|
+
}
|
|
727
1241
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
1242
|
+
if (
|
|
1243
|
+
whichProduct.value === 'gons' &&
|
|
1244
|
+
(formStore.applicationData.statusCode === 'EditForm' || formStore.applicationData.statusCode === 'StartForm') &&
|
|
1245
|
+
getNumber(productConditionsForm.requestedSumInsured as string)! >= 10_000_000
|
|
1246
|
+
) {
|
|
1247
|
+
dataStore.showToaster('info', dataStore.t('toaster.calcSumForUnder'), 6000);
|
|
1248
|
+
}
|
|
1249
|
+
if (isUnderwriterForm.value) {
|
|
1250
|
+
type recalculationInfo = {
|
|
1251
|
+
lifeMultiply: string | null | number;
|
|
1252
|
+
lifeAdditive: string | null | number;
|
|
1253
|
+
lifeMultiplyClient?: string | number | null;
|
|
1254
|
+
lifeAdditiveClient?: string | number | null;
|
|
1255
|
+
adbMultiply: string | null | number;
|
|
1256
|
+
adbAdditive: string | null | number;
|
|
1257
|
+
disabilityMultiply: string | null | number;
|
|
1258
|
+
disabilityAdditive: string | null | number;
|
|
1259
|
+
amount?: string | number | null;
|
|
1260
|
+
premium?: string | number | null;
|
|
1261
|
+
riskGroup?: string | string | number | null;
|
|
1262
|
+
};
|
|
1263
|
+
const recalculationData: recalculationInfo = (({ lifeMultiply, lifeAdditive, adbMultiply, adbAdditive, disabilityMultiply, disabilityAdditive }) => ({
|
|
1264
|
+
lifeMultiply,
|
|
1265
|
+
lifeAdditive,
|
|
1266
|
+
adbMultiply,
|
|
1267
|
+
adbAdditive,
|
|
1268
|
+
disabilityMultiply,
|
|
1269
|
+
disabilityAdditive,
|
|
1270
|
+
}))(productConditionsForm);
|
|
1271
|
+
Object.keys(recalculationData).forEach(key => {
|
|
1272
|
+
// @ts-ignore
|
|
1273
|
+
recalculationData[key] = formatProcents(recalculationData[key]);
|
|
1274
|
+
});
|
|
1275
|
+
recalculationData.lifeMultiplyClient = dataStore.isClientAnketaCondition
|
|
1276
|
+
? formStore.productConditionsForm.lifeMultiplyClient === null
|
|
1277
|
+
? null
|
|
1278
|
+
: formatProcents(formStore.productConditionsForm.lifeMultiplyClient)
|
|
1279
|
+
: null;
|
|
1280
|
+
recalculationData.lifeAdditiveClient = dataStore.isClientAnketaCondition
|
|
1281
|
+
? formStore.productConditionsForm.lifeAdditiveClient === null
|
|
1282
|
+
? null
|
|
1283
|
+
: formatProcents(formStore.productConditionsForm.lifeAdditiveClient)
|
|
1284
|
+
: null;
|
|
1285
|
+
recalculationData.amount = Number((productConditionsForm.requestedSumInsured as string)?.replace(/\s/g, ''));
|
|
1286
|
+
recalculationData.premium = Number((productConditionsForm.insurancePremiumPerMonth as string)?.replace(/\s/g, ''));
|
|
1287
|
+
recalculationData.riskGroup = productConditionsForm.riskGroup?.id ? productConditionsForm.riskGroup.id : 1;
|
|
1288
|
+
isCalculating.value = true;
|
|
1289
|
+
await dataStore.reCalculate(formStore.applicationData.processInstanceId, recalculationData, route.params.taskId as string, whichSum.value);
|
|
1290
|
+
}
|
|
767
1291
|
isCalculating.value = true;
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
await dataStore.calculate(route.params.taskId as string);
|
|
778
|
-
additionalTerms.value = formStore.additionalInsuranceTerms;
|
|
1292
|
+
if (props.isCalculator) {
|
|
1293
|
+
//@ts-ignore
|
|
1294
|
+
await dataStore.calculateWithoutApplication(true, whichProduct.value);
|
|
1295
|
+
additionalTerms.value = formStore.additionalInsuranceTermsWithout;
|
|
1296
|
+
} else {
|
|
1297
|
+
if (dataStore.isProcessEditable(formStore.applicationData.statusCode)) {
|
|
1298
|
+
await dataStore.calculate(route.params.taskId as string);
|
|
1299
|
+
additionalTerms.value = formStore.additionalInsuranceTerms;
|
|
1300
|
+
}
|
|
779
1301
|
}
|
|
780
1302
|
}
|
|
1303
|
+
|
|
781
1304
|
isCalculating.value = false;
|
|
782
1305
|
} else {
|
|
783
1306
|
const errors = document.querySelector('.v-input--error');
|
|
@@ -802,38 +1325,50 @@ export default defineComponent({
|
|
|
802
1325
|
};
|
|
803
1326
|
|
|
804
1327
|
onMounted(async () => {
|
|
805
|
-
if (props.
|
|
1328
|
+
if (props.isCalculator === true) {
|
|
806
1329
|
if (dataStore.isCalculator) {
|
|
807
1330
|
clearFields();
|
|
808
1331
|
}
|
|
809
|
-
if (
|
|
810
|
-
(
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
1332
|
+
if (whichProduct.value !== 'lifetrip') {
|
|
1333
|
+
if (
|
|
1334
|
+
(dataStore.isCalculator || route.params.taskId === '0') &&
|
|
1335
|
+
productConditionsForm.requestedSumInsured === null &&
|
|
1336
|
+
productConditionsForm.insurancePremiumPerMonth === null
|
|
1337
|
+
) {
|
|
1338
|
+
// @ts-ignore
|
|
1339
|
+
const defaultData = await dataStore.getDefaultCalculationData(true, whichProduct.value);
|
|
1340
|
+
if (!defaultData) {
|
|
1341
|
+
dataStore.showToaster('error', 'Отсутствуют базовые данные');
|
|
1342
|
+
return;
|
|
1343
|
+
}
|
|
1344
|
+
formStore.additionalInsuranceTermsWithout = defaultData.addCovers;
|
|
1345
|
+
productConditionsForm.requestedSumInsured = defaultData.amount;
|
|
1346
|
+
productConditionsForm.insurancePremiumPerMonth = defaultData.premium;
|
|
1347
|
+
const indexRate = dataStore.processIndexRate.find(i => i.id === defaultData.indexRateId);
|
|
1348
|
+
if (indexRate) productConditionsForm.processIndexRate = indexRate;
|
|
1349
|
+
const paymendPeriod = dataStore.processPaymentPeriod.find(i => i.id === defaultData.paymentPeriodId);
|
|
1350
|
+
if (paymendPeriod) productConditionsForm.paymentPeriod = paymendPeriod;
|
|
1351
|
+
if (defaultData.signDate) {
|
|
1352
|
+
productConditionsForm.signDate = reformatDate(defaultData.signDate);
|
|
1353
|
+
}
|
|
1354
|
+
if (whichProduct.value === 'lifebusiness') {
|
|
1355
|
+
productConditionsForm.coverPeriod = defaultData.insTermInMonth ?? null;
|
|
1356
|
+
productConditionsForm.requestedSumInsured = null;
|
|
1357
|
+
productConditionsForm.insurancePremiumPerMonth = null;
|
|
1358
|
+
}
|
|
819
1359
|
}
|
|
820
|
-
formStore.additionalInsuranceTermsWithout = defaultData.addCovers;
|
|
821
|
-
productConditionsForm.requestedSumInsured = defaultData.amount;
|
|
822
|
-
productConditionsForm.insurancePremiumPerMonth = defaultData.premium;
|
|
823
|
-
const indexRate = dataStore.processIndexRate.find(i => i.id === defaultData.indexRateId);
|
|
824
|
-
if (indexRate) productConditionsForm.processIndexRate = indexRate;
|
|
825
|
-
const paymendPeriod = dataStore.processPaymentPeriod.find(i => i.id == defaultData.paymentPeriodId);
|
|
826
|
-
if (paymendPeriod) productConditionsForm.paymentPeriod = paymendPeriod;
|
|
827
|
-
productConditionsForm.signDate = reformatDate(defaultData.signDate);
|
|
828
1360
|
}
|
|
829
1361
|
}
|
|
830
|
-
additionalTerms.value = props.
|
|
1362
|
+
additionalTerms.value = props.isCalculator ? formStore.additionalInsuranceTermsWithout : formStore.additionalInsuranceTerms;
|
|
831
1363
|
if (!!productConditionsForm.insurancePremiumPerMonth) {
|
|
832
1364
|
whichSum.value = 'insurancePremiumPerMonth';
|
|
833
1365
|
}
|
|
834
1366
|
if (!!productConditionsForm.requestedSumInsured) {
|
|
835
1367
|
whichSum.value = 'requestedSumInsured';
|
|
836
1368
|
}
|
|
1369
|
+
if (whichProduct.value === 'lifebusiness' && !productConditionsForm.requestedSumInsured) {
|
|
1370
|
+
whichSum.value = 'requestedSumInsured';
|
|
1371
|
+
}
|
|
837
1372
|
if (dataStore.isCalculator) {
|
|
838
1373
|
dataStore.processCode = constants.products[whichProduct.value as keyof typeof constants.products];
|
|
839
1374
|
await dataStore.getProcessPaymentPeriod();
|
|
@@ -864,9 +1399,9 @@ export default defineComponent({
|
|
|
864
1399
|
},
|
|
865
1400
|
);
|
|
866
1401
|
watch(
|
|
867
|
-
() => dataStore.
|
|
1402
|
+
() => dataStore.rightPanel.open,
|
|
868
1403
|
() => {
|
|
869
|
-
if (dataStore.
|
|
1404
|
+
if (dataStore.rightPanel.open === false) {
|
|
870
1405
|
isPanelOpen.value = false;
|
|
871
1406
|
isTermsPanelOpen.value = false;
|
|
872
1407
|
dataStore.panelAction = null;
|
|
@@ -875,6 +1410,57 @@ export default defineComponent({
|
|
|
875
1410
|
{ immediate: true },
|
|
876
1411
|
);
|
|
877
1412
|
|
|
1413
|
+
if (whichProduct.value === 'lifetrip') {
|
|
1414
|
+
watch(
|
|
1415
|
+
() => calculatorForm.type,
|
|
1416
|
+
async val => {
|
|
1417
|
+
if (val.code === 'Multiple') {
|
|
1418
|
+
await dataStore.getPeriod();
|
|
1419
|
+
calculatorForm.period = new Value();
|
|
1420
|
+
calculatorForm.endDate = null;
|
|
1421
|
+
}
|
|
1422
|
+
if (calculatorForm.countries?.length != 0) {
|
|
1423
|
+
await dataStore.getTripInsuredAmount();
|
|
1424
|
+
}
|
|
1425
|
+
},
|
|
1426
|
+
);
|
|
1427
|
+
watch(
|
|
1428
|
+
() => calculatorForm.countries,
|
|
1429
|
+
async val => {
|
|
1430
|
+
if (val?.length && val.every(option => option.id != 0) && calculatorForm.type?.nameRu != null) {
|
|
1431
|
+
await dataStore.getTripInsuredAmount();
|
|
1432
|
+
}
|
|
1433
|
+
},
|
|
1434
|
+
{ deep: true },
|
|
1435
|
+
);
|
|
1436
|
+
|
|
1437
|
+
watch(
|
|
1438
|
+
() => calculatorForm.period,
|
|
1439
|
+
val => {
|
|
1440
|
+
if (val) {
|
|
1441
|
+
dataStore.maxDaysFiltered = dataStore.maxDaysAllArray.filter(days => days.code == val.code);
|
|
1442
|
+
calculatorForm.maxDays = new Value();
|
|
1443
|
+
}
|
|
1444
|
+
},
|
|
1445
|
+
);
|
|
1446
|
+
|
|
1447
|
+
watch(
|
|
1448
|
+
() => calculatorForm.startDate,
|
|
1449
|
+
val => {
|
|
1450
|
+
if (val !== null && val.length === 10 && calculatorForm.endDate != null && calculatorForm.endDate.length === 10) {
|
|
1451
|
+
calculatorForm.days = productConditionsForm.getSingleTripDays();
|
|
1452
|
+
}
|
|
1453
|
+
},
|
|
1454
|
+
);
|
|
1455
|
+
watch(
|
|
1456
|
+
() => calculatorForm.endDate,
|
|
1457
|
+
val => {
|
|
1458
|
+
if (val !== null && val.length === 10 && calculatorForm.startDate != null && calculatorForm.startDate.length === 10) {
|
|
1459
|
+
calculatorForm.days = productConditionsForm.getSingleTripDays();
|
|
1460
|
+
}
|
|
1461
|
+
},
|
|
1462
|
+
);
|
|
1463
|
+
}
|
|
878
1464
|
return {
|
|
879
1465
|
// State
|
|
880
1466
|
formStore,
|
|
@@ -885,21 +1471,30 @@ export default defineComponent({
|
|
|
885
1471
|
isCalculating,
|
|
886
1472
|
isPanelLoading,
|
|
887
1473
|
isPanelOpen,
|
|
1474
|
+
isMultiplePanelOpen,
|
|
888
1475
|
isTermsPanelOpen,
|
|
889
1476
|
panelValue,
|
|
890
1477
|
termValue,
|
|
891
1478
|
panelList,
|
|
1479
|
+
multiplePanelList,
|
|
1480
|
+
multiplePanelValue,
|
|
892
1481
|
searchQuery,
|
|
893
1482
|
whichSum,
|
|
894
1483
|
Value,
|
|
1484
|
+
calculatorForm,
|
|
1485
|
+
isFixInsAmountPanelOpen,
|
|
1486
|
+
isCoverPeriodPanelOpen,
|
|
1487
|
+
fixInsValue,
|
|
1488
|
+
coverPeriodValue,
|
|
895
1489
|
|
|
896
1490
|
// Computed
|
|
897
1491
|
isTask,
|
|
898
1492
|
isDisabled,
|
|
899
1493
|
isTermsDisabled,
|
|
900
1494
|
isUnderwriterForm,
|
|
901
|
-
|
|
902
|
-
|
|
1495
|
+
insurancePremiumPerMonthRule,
|
|
1496
|
+
insurancePremiumPerMonthDisabled,
|
|
1497
|
+
requestedSumInsuredRule,
|
|
903
1498
|
isRecalculationDisabled,
|
|
904
1499
|
isUnderwriterRole,
|
|
905
1500
|
hasProcessIndexRate,
|
|
@@ -908,15 +1503,28 @@ export default defineComponent({
|
|
|
908
1503
|
hasInsurancePremiumPerMonthInDollar,
|
|
909
1504
|
hasCurrency,
|
|
910
1505
|
hasAdbMultiply,
|
|
1506
|
+
readonlyLifeAdditive,
|
|
1507
|
+
readonlyDisabilityMultiply,
|
|
1508
|
+
readonlyDisabilityAdditive,
|
|
911
1509
|
hasAdbAdditive,
|
|
912
1510
|
hasRiskGroup,
|
|
913
1511
|
hasCalculated,
|
|
914
1512
|
hasAnnuityPayments,
|
|
1513
|
+
hasAgencyPart,
|
|
1514
|
+
hasProcessGfot,
|
|
915
1515
|
currencySymbolsAddTerm,
|
|
916
1516
|
amountAnnuityPayments,
|
|
917
1517
|
requestedSumInsuredLabel,
|
|
918
1518
|
isDisabledSum,
|
|
919
1519
|
isDisabledSumDollar,
|
|
1520
|
+
countriesComputed,
|
|
1521
|
+
hasBirthDate,
|
|
1522
|
+
hasGender,
|
|
1523
|
+
coverPeriodLabel,
|
|
1524
|
+
insurancePremiumPerMonthLabel,
|
|
1525
|
+
isDisabledCoverPeriod,
|
|
1526
|
+
hasDefault,
|
|
1527
|
+
isDisabledProcessGfot,
|
|
920
1528
|
|
|
921
1529
|
// Rules
|
|
922
1530
|
coverPeriodRule,
|
|
@@ -926,6 +1534,7 @@ export default defineComponent({
|
|
|
926
1534
|
pickPanelValue,
|
|
927
1535
|
pickTermValue,
|
|
928
1536
|
openPanel,
|
|
1537
|
+
openMultiplePanel,
|
|
929
1538
|
openTermPanel,
|
|
930
1539
|
pickCalculation,
|
|
931
1540
|
underwriterCalculate,
|
|
@@ -941,6 +1550,10 @@ export default defineComponent({
|
|
|
941
1550
|
clearFields,
|
|
942
1551
|
formatTermValue,
|
|
943
1552
|
filterTermConditions,
|
|
1553
|
+
selectOption,
|
|
1554
|
+
pickfixInsValue,
|
|
1555
|
+
openFixInsPanel,
|
|
1556
|
+
pickCoverPeriodValue,
|
|
944
1557
|
};
|
|
945
1558
|
},
|
|
946
1559
|
});
|