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