hl-core 0.0.9-beta.4 → 0.0.9-beta.40

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.
Files changed (61) hide show
  1. package/api/base.api.ts +904 -0
  2. package/api/index.ts +2 -620
  3. package/api/interceptors.ts +58 -14
  4. package/components/Button/Btn.vue +2 -2
  5. package/components/Complex/MessageBlock.vue +2 -2
  6. package/components/Complex/Page.vue +1 -1
  7. package/components/Dialog/Dialog.vue +60 -15
  8. package/components/Form/DynamicForm.vue +100 -0
  9. package/components/Form/FormBlock.vue +12 -3
  10. package/components/Form/FormData.vue +114 -0
  11. package/components/Form/FormToggle.vue +9 -3
  12. package/components/Form/ManagerAttachment.vue +150 -86
  13. package/components/Form/ProductConditionsBlock.vue +59 -6
  14. package/components/Input/Datepicker.vue +1 -8
  15. package/components/Input/DynamicInput.vue +23 -0
  16. package/components/Input/FileInput.vue +16 -4
  17. package/components/Input/FormInput.vue +1 -3
  18. package/components/Input/Monthpicker.vue +33 -0
  19. package/components/Input/PanelInput.vue +5 -1
  20. package/components/Input/RoundedEmptyField.vue +5 -0
  21. package/components/Input/RoundedSelect.vue +13 -0
  22. package/components/Input/SwitchInput.vue +64 -0
  23. package/components/Input/TextInput.vue +161 -0
  24. package/components/Layout/Drawer.vue +17 -4
  25. package/components/Layout/Header.vue +23 -2
  26. package/components/Layout/SettingsPanel.vue +13 -7
  27. package/components/Menu/InfoMenu.vue +35 -0
  28. package/components/Menu/MenuNav.vue +17 -2
  29. package/components/Pages/Anketa.vue +140 -52
  30. package/components/Pages/Auth.vue +12 -1
  31. package/components/Pages/ContragentForm.vue +129 -50
  32. package/components/Pages/Documents.vue +72 -7
  33. package/components/Pages/InvoiceInfo.vue +1 -1
  34. package/components/Pages/MemberForm.vue +269 -96
  35. package/components/Pages/ProductAgreement.vue +1 -8
  36. package/components/Pages/ProductConditions.vue +798 -168
  37. package/components/Panel/PanelHandler.vue +373 -45
  38. package/components/Panel/PanelSelectItem.vue +17 -2
  39. package/components/Panel/RightPanelCloser.vue +7 -0
  40. package/components/Transitions/Animation.vue +28 -0
  41. package/composables/axios.ts +2 -1
  42. package/composables/classes.ts +415 -8
  43. package/composables/constants.ts +65 -2
  44. package/composables/fields.ts +291 -0
  45. package/composables/index.ts +58 -5
  46. package/composables/styles.ts +22 -10
  47. package/layouts/default.vue +48 -3
  48. package/locales/ru.json +460 -12
  49. package/nuxt.config.ts +1 -1
  50. package/package.json +25 -22
  51. package/pages/Token.vue +1 -12
  52. package/plugins/helperFunctionsPlugins.ts +0 -3
  53. package/plugins/vuetifyPlugin.ts +2 -0
  54. package/store/data.store.ts +1031 -224
  55. package/store/extractStore.ts +17 -0
  56. package/store/form.store.ts +13 -1
  57. package/store/member.store.ts +1 -1
  58. package/store/rules.ts +53 -5
  59. package/types/enum.ts +37 -0
  60. package/types/form.ts +94 -0
  61. 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-[82svh] overflow-y-scroll">
4
- <base-form-section v-if="whichProduct === 'gons'" :title="$dataStore.t('productConditionsForm.requestedProductConditions')" :class="[$styles.textSimple]">
5
- <base-form-text-section
6
- class="mb-4"
7
- title="Инвалидность I или II группы по причине несчастного случая, начиная с третьего года по любой причине, с освобождением от уплаты страховых взносов"
8
- subtitle="Равна страховой сумме по основному покрытию"
9
- />
10
- <base-form-text-section
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="isRecalculationDisabled"
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="isRecalculationDisabled"
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="isRecalculationDisabled"
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.nameRu"
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="isRecalculation && ($route.params.taskId === '0' || $dataStore.isCalculator)">
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.nameRu"
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="isDisabled"
142
+ :readonly="isDisabledCoverPeriod"
146
143
  :clearable="!isDisabled"
147
144
  :rules="coverPeriodRule"
148
- :label="$dataStore.t(whichProduct === 'gons' ? 'productConditionsForm.coverPeriodFrom3to20' : 'productConditionsForm.coverPeriod')"
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.nameRu"
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.nameRu"
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="!isDisabled"
176
- :rules="requestedSumInsured"
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="!isDisabled"
187
- :rules="requestedSumInsured"
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="isDisabled"
196
- :clearable="!isDisabled"
197
- :rules="insurancePremiumPerMonth"
198
- :label="$dataStore.t('productConditionsForm.insurancePremiumAmount')"
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="isDisabled"
207
- :clearable="!isDisabled"
208
- :rules="insurancePremiumPerMonth"
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')" v-if="hasAnnuityPayments">
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.nameRu"
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.nameRu"
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="additionalTerms && additionalTerms.length" :title="$dataStore.t('productConditionsForm.additional')">
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.coverTypeName"
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.coverTypeName, $dataStore.getAdditionalInsuranceTermsAnswers, term.coverTypeId, index)"
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 && isRecalculation && hasCalculated" :btn="$styles.greenLightBtn" :text="$dataStore.t('buttons.toStatement')" @click="toStatement" />
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="isTermsPanelOpen" to="#panel-actions">
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
- isRecalculation: {
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.isRecalculation === true) {
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 (dataStore.isGons) {
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.isRecalculation === true) || dataStore.isTask());
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 insurancePremiumPerMonth = computed(() => (!!productConditionsForm.insurancePremiumPerMonth ? dataStore.rules.required.concat(dataStore.rules.sums) : []));
400
- const requestedSumInsured = computed(() => (!!productConditionsForm.requestedSumInsured ? dataStore.rules.required.concat(dataStore.rules.sums) : []));
401
- const hasCalculated = computed(() => !!productConditionsForm.requestedSumInsured && !!productConditionsForm.insurancePremiumPerMonth);
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 (whichProduct.value === 'gons' || whichProduct.value === 'halykkazyna' || whichProduct.value === 'liferenta') {
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
- return Number.isInteger(term) ? dataStore.getNumberWithSpaces(term) : dataStore.getNumberWithDot(term);
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.panel.open = false;
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
- // @ts-ignore
518
- productConditionsForm[currentPanel.value] = item.nameRu === null ? new Value() : item;
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
- const pickTermValue = (item: Value) => {
522
- dataStore.panel.open = false;
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.panel.open = true;
537
- dataStore.panel.title = title;
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
- // @ts-ignore
546
- panelValue.value = productConditionsForm[currentPanel.value];
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.panel.open = true;
570
- dataStore.panel.title = title;
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 (whichSum.value === 'requestedSumInsured') {
698
- productConditionsForm.insurancePremiumPerMonth = null;
699
- if (whichProduct.value === 'halykkazyna') {
700
- productConditionsForm.insurancePremiumPerMonthInDollar = null;
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
- if (whichSum.value === 'insurancePremiumPerMonth') {
704
- productConditionsForm.requestedSumInsured = null;
705
- if (whichProduct.value === 'halykkazyna') {
706
- productConditionsForm.requestedSumInsuredInDollar = null;
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
- if (!whichSum.value && isUnderwriterForm.value === false) {
719
- dataStore.showToaster('error', dataStore.t('toaster.emptyProductConditions'));
720
- return;
721
- }
1247
+ if (!whichSum.value && isUnderwriterForm.value === false) {
1248
+ dataStore.showToaster('error', dataStore.t('toaster.emptyProductConditions'));
1249
+ return;
1250
+ }
722
1251
 
723
- if (isUnderwriterForm.value) {
724
- type recalculationInfo = {
725
- lifeMultiply: string | null | number;
726
- lifeAdditive: string | null | number;
727
- lifeMultiplyClient?: string | number | null;
728
- lifeAdditiveClient?: string | number | null;
729
- adbMultiply: string | null | number;
730
- adbAdditive: string | null | number;
731
- disabilityMultiply: string | null | number;
732
- disabilityAdditive: string | null | number;
733
- amount?: string | number | null;
734
- premium?: string | number | null;
735
- riskGroup?: string | string | number | null;
736
- };
737
- const recalculationData: recalculationInfo = (({ lifeMultiply, lifeAdditive, adbMultiply, adbAdditive, disabilityMultiply, disabilityAdditive }) => ({
738
- lifeMultiply,
739
- lifeAdditive,
740
- adbMultiply,
741
- adbAdditive,
742
- disabilityMultiply,
743
- disabilityAdditive,
744
- }))(productConditionsForm);
745
- Object.keys(recalculationData).forEach(key => {
746
- // @ts-ignore
747
- recalculationData[key] = formatProcents(recalculationData[key]);
748
- });
749
- recalculationData.lifeMultiplyClient = dataStore.isClientAnketaCondition
750
- ? formStore.productConditionsForm.lifeMultiplyClient === null
751
- ? null
752
- : formatProcents(formStore.productConditionsForm.lifeMultiplyClient)
753
- : null;
754
- recalculationData.lifeAdditiveClient = dataStore.isClientAnketaCondition
755
- ? formStore.productConditionsForm.lifeAdditiveClient === null
756
- ? null
757
- : formatProcents(formStore.productConditionsForm.lifeAdditiveClient)
758
- : null;
759
- recalculationData.amount = Number((productConditionsForm.requestedSumInsured as string)?.replace(/\s/g, ''));
760
- recalculationData.premium = Number((productConditionsForm.insurancePremiumPerMonth as string)?.replace(/\s/g, ''));
761
- recalculationData.riskGroup = productConditionsForm.riskGroup?.id ? productConditionsForm.riskGroup.id : 1;
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
- await dataStore.reCalculate(formStore.applicationData.processInstanceId, recalculationData, route.params.taskId as string, whichSum.value);
764
- }
765
- isCalculating.value = true;
766
- if (props.isRecalculation) {
767
- //@ts-ignore
768
- await dataStore.calculateWithoutApplication(true, whichProduct.value);
769
- additionalTerms.value = formStore.additionalInsuranceTermsWithout;
770
- } else {
771
- if (dataStore.isProcessEditable(formStore.applicationData.statusCode)) {
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.isRecalculation === true) {
1338
+ if (props.isCalculator === true) {
801
1339
  if (dataStore.isCalculator) {
802
1340
  clearFields();
803
1341
  }
804
- if (
805
- (dataStore.isCalculator || route.params.taskId === '0') &&
806
- productConditionsForm.requestedSumInsured === null &&
807
- productConditionsForm.insurancePremiumPerMonth === null
808
- ) {
809
- // @ts-ignore
810
- const defaultData = await dataStore.getDefaultCalculationData(true, whichProduct.value);
811
- if (!defaultData) {
812
- dataStore.showToaster('error', 'Отсутствуют базовые данные');
813
- return;
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.isRecalculation ? formStore.additionalInsuranceTermsWithout : formStore.additionalInsuranceTerms;
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.panel.open,
1412
+ () => dataStore.rightPanel.open,
863
1413
  () => {
864
- if (dataStore.panel.open === false) {
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
- insurancePremiumPerMonth,
897
- requestedSumInsured,
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
  });