hl-core 0.0.9-beta.1 → 0.0.9-beta.11

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 (57) hide show
  1. package/api/index.ts +147 -147
  2. package/api/interceptors.ts +16 -14
  3. package/components/Button/Btn.vue +3 -3
  4. package/components/Complex/ContentBlock.vue +1 -1
  5. package/components/Complex/MessageBlock.vue +26 -0
  6. package/components/Complex/Page.vue +7 -1
  7. package/components/Complex/WhiteBlock.vue +7 -0
  8. package/components/Dialog/Dialog.vue +2 -2
  9. package/components/Dialog/FamilyDialog.vue +5 -5
  10. package/components/Form/FormBlock.vue +25 -27
  11. package/components/Form/FormSection.vue +2 -2
  12. package/components/Form/FormTextSection.vue +3 -3
  13. package/components/Form/FormToggle.vue +3 -3
  14. package/components/Form/ManagerAttachment.vue +55 -42
  15. package/components/Form/ProductConditionsBlock.vue +16 -16
  16. package/components/Input/EmptyFormField.vue +1 -1
  17. package/components/Input/FileInput.vue +0 -1
  18. package/components/Input/Monthpicker.vue +33 -0
  19. package/components/Input/RoundedEmptyField.vue +5 -0
  20. package/components/Input/RoundedSelect.vue +13 -0
  21. package/components/Layout/Drawer.vue +2 -1
  22. package/components/Layout/Header.vue +1 -1
  23. package/components/Layout/SettingsPanel.vue +5 -9
  24. package/components/List/ListEmpty.vue +1 -1
  25. package/components/Menu/MenuHover.vue +1 -1
  26. package/components/Menu/MenuNav.vue +1 -1
  27. package/components/Menu/MenuNavItem.vue +4 -4
  28. package/components/Pages/Anketa.vue +86 -45
  29. package/components/Pages/Auth.vue +9 -9
  30. package/components/Pages/ContragentForm.vue +505 -0
  31. package/components/Pages/Documents.vue +5 -5
  32. package/components/Pages/InvoiceInfo.vue +1 -1
  33. package/components/Pages/MemberForm.vue +35 -28
  34. package/components/Pages/ProductAgreement.vue +1 -3
  35. package/components/Pages/ProductConditions.vue +58 -21
  36. package/components/Panel/PanelHandler.vue +32 -15
  37. package/components/Panel/PanelSelectItem.vue +3 -3
  38. package/components/Utilities/IconBorder.vue +17 -0
  39. package/composables/axios.ts +1 -1
  40. package/composables/classes.ts +23 -11
  41. package/composables/constants.ts +5 -0
  42. package/composables/index.ts +30 -4
  43. package/composables/styles.ts +19 -9
  44. package/configs/i18n.ts +0 -2
  45. package/layouts/default.vue +5 -2
  46. package/layouts/full.vue +1 -1
  47. package/locales/ru.json +106 -2
  48. package/nuxt.config.ts +1 -1
  49. package/package.json +12 -21
  50. package/pages/500.vue +2 -2
  51. package/pages/Token.vue +1 -0
  52. package/plugins/helperFunctionsPlugins.ts +6 -7
  53. package/store/data.store.ts +111 -100
  54. package/store/rules.ts +12 -2
  55. package/types/index.ts +45 -27
  56. package/components/Button/BtnIcon.vue +0 -47
  57. package/locales/kz.json +0 -585
@@ -2,12 +2,12 @@
2
2
  <section class="flex flex-col gap-4 px-[10px]">
3
3
  <v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[82svh] overflow-y-scroll">
4
4
  <div v-if="memberSetting && memberSetting.has === true && memberSetting.isMultiple === true" class="flex items-center mt-[14px] min-h-[54px]">
5
- <div :class="[$libStyles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-1 rounded-t-[8px] h-full">
5
+ <div :class="[$styles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-1 rounded-t-[8px] h-full">
6
6
  <div
7
7
  v-for="(each, index) of formStore[whichForm]"
8
8
  :key="index"
9
9
  class="pl-3 pr-1 py-1 rounded-[8px] cursor-pointer flex items-center"
10
- :class="[Number(whichIndex) === index ? `${$libStyles.blueBg} ${$libStyles.whiteText}` : '', $libStyles.textSimple]"
10
+ :class="[Number(whichIndex) === index ? `${$styles.blueBg} ${$styles.whiteText}` : '', $styles.textSimple]"
11
11
  @click.self="index !== Number(whichIndex) ? selectMember(index) : null"
12
12
  >
13
13
  {{ `${$dataStore.menu.selectedItem.title} ${index + 1}` }}
@@ -82,7 +82,7 @@
82
82
  <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
83
83
  <base-panel-input
84
84
  v-model="member.gender"
85
- :value="member.gender.nameRu"
85
+ :value="member.gender?.nameRu"
86
86
  :readonly="isDisabled || isFromGBD"
87
87
  :clearable="!isDisabled"
88
88
  :label="$dataStore.t('form.gender')"
@@ -93,7 +93,7 @@
93
93
  <base-panel-input
94
94
  v-if="hasFamilyStatus"
95
95
  v-model="member.familyStatus"
96
- :value="member.familyStatus.nameRu"
96
+ :value="member.familyStatus?.nameRu"
97
97
  :readonly="isDisabled"
98
98
  :clearable="!isDisabled"
99
99
  :label="$dataStore.t('form.familyStatus')"
@@ -104,7 +104,7 @@
104
104
  <base-panel-input
105
105
  v-if="(whichForm === formStore.beneficiaryFormKey || whichForm === formStore.insuredFormKey) && member.iin !== formStore.policyholderForm.iin"
106
106
  v-model="member.relationDegree"
107
- :value="member.relationDegree.nameRu"
107
+ :value="member.relationDegree?.nameRu"
108
108
  :readonly="isDisabled"
109
109
  :clearable="!isDisabled"
110
110
  :label="$dataStore.t('form.relations')"
@@ -240,7 +240,7 @@
240
240
  <base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
241
241
  <base-panel-input
242
242
  v-model="member.registrationCountry"
243
- :value="member.registrationCountry.nameRu"
243
+ :value="member.registrationCountry?.nameRu"
244
244
  :readonly="isDisabled"
245
245
  :clearable="!isDisabled"
246
246
  :label="$dataStore.t('form.Country')"
@@ -252,7 +252,7 @@
252
252
  <div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
253
253
  <base-panel-input
254
254
  v-model="member.registrationProvince"
255
- :value="member.registrationProvince.nameRu"
255
+ :value="member.registrationProvince?.nameRu"
256
256
  :label="$dataStore.t('form.Province')"
257
257
  :readonly="isDisabled"
258
258
  :clearable="!isDisabled"
@@ -262,7 +262,7 @@
262
262
  />
263
263
  <base-panel-input
264
264
  v-model="member.registrationRegionType"
265
- :value="member.registrationRegionType.nameRu"
265
+ :value="member.registrationRegionType?.nameRu"
266
266
  :label="$dataStore.t('form.RegionType')"
267
267
  :readonly="isDisabled"
268
268
  :clearable="!isDisabled"
@@ -273,7 +273,7 @@
273
273
  <base-panel-input
274
274
  v-if="member.registrationRegionType.nameRu !== 'город'"
275
275
  v-model="member.registrationRegion"
276
- :value="member.registrationRegion.nameRu"
276
+ :value="member.registrationRegion?.nameRu"
277
277
  :label="$dataStore.t('form.Region')"
278
278
  :readonly="isDisabled"
279
279
  :clearable="!isDisabled"
@@ -283,7 +283,7 @@
283
283
  />
284
284
  <base-panel-input
285
285
  v-model="member.registrationCity"
286
- :value="member.registrationCity.nameRu"
286
+ :value="member.registrationCity?.nameRu"
287
287
  :label="$dataStore.t('form.City')"
288
288
  :readonly="isDisabled"
289
289
  :clearable="!isDisabled"
@@ -316,7 +316,7 @@
316
316
  <base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
317
317
  <base-panel-input
318
318
  v-model="member.birthPlace"
319
- :value="member.birthPlace.nameRu"
319
+ :value="member.birthPlace?.nameRu"
320
320
  :label="$dataStore.t('form.Country')"
321
321
  :readonly="isDisabled"
322
322
  :clearable="!isDisabled"
@@ -327,7 +327,7 @@
327
327
  <!-- TODO -->
328
328
  <!-- <base-panel-input
329
329
  v-model="member.birthRegion"
330
- :value="member.birthRegion.nameRu"
330
+ :value="member.birthRegion?.nameRu"
331
331
  :label="$dataStore.t('form.Region')"
332
332
  :readonly="isDisabled"
333
333
  :clearable="!isDisabled"
@@ -339,7 +339,7 @@
339
339
  <base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
340
340
  <base-panel-input
341
341
  v-model="member.documentType"
342
- :value="member.documentType.nameRu"
342
+ :value="member.documentType?.nameRu"
343
343
  :label="$dataStore.t('form.documentType')"
344
344
  :readonly="isDisabled"
345
345
  :clearable="!isDisabled"
@@ -361,7 +361,7 @@
361
361
  </base-empty-form-field> -->
362
362
  <base-panel-input
363
363
  v-model="member.documentIssuers"
364
- :value="member.documentIssuers.nameRu"
364
+ :value="member.documentIssuers?.nameRu"
365
365
  :label="$dataStore.t('form.documentIssuers')"
366
366
  :readonly="isDisabled"
367
367
  :clearable="!isDisabled"
@@ -392,7 +392,7 @@
392
392
  </base-fade-transition>
393
393
  <base-panel-input
394
394
  v-model="member.signOfResidency"
395
- :value="member.signOfResidency.nameRu"
395
+ :value="member.signOfResidency?.nameRu"
396
396
  :label="$dataStore.t('form.signOfResidency')"
397
397
  :readonly="isDisabled"
398
398
  :clearable="!isDisabled"
@@ -402,7 +402,7 @@
402
402
  />
403
403
  <base-panel-input
404
404
  v-model="member.countryOfTaxResidency"
405
- :value="member.countryOfTaxResidency.nameRu"
405
+ :value="member.countryOfTaxResidency?.nameRu"
406
406
  :label="$dataStore.t('form.countryOfTaxResidency')"
407
407
  :readonly="isDisabled"
408
408
  :clearable="!isDisabled"
@@ -414,7 +414,7 @@
414
414
  <base-panel-input
415
415
  v-if="member.countryOfTaxResidency.ids === '500014.3'"
416
416
  v-model="member.addTaxResidency"
417
- :value="member.addTaxResidency.nameRu"
417
+ :value="member.addTaxResidency?.nameRu"
418
418
  :label="$dataStore.t('form.addTaxResidency')"
419
419
  :readonly="isDisabled"
420
420
  :clearable="!isDisabled"
@@ -426,7 +426,7 @@
426
426
  <base-panel-input
427
427
  v-if="hasSignOfIPDL"
428
428
  v-model="member.signOfIPDL"
429
- :value="member.signOfIPDL.nameRu"
429
+ :value="member.signOfIPDL?.nameRu"
430
430
  :label="$dataStore.t('form.signOfIPDL')"
431
431
  :readonly="isDisabled"
432
432
  :clearable="!isDisabled"
@@ -436,7 +436,7 @@
436
436
  />
437
437
  <base-panel-input
438
438
  v-model="member.countryOfCitizenship"
439
- :value="member.countryOfCitizenship.nameRu"
439
+ :value="member.countryOfCitizenship?.nameRu"
440
440
  :label="$dataStore.t('form.countryOfCitizenship')"
441
441
  :readonly="isDisabled"
442
442
  :clearable="!isDisabled"
@@ -446,7 +446,7 @@
446
446
  />
447
447
  <base-panel-input
448
448
  v-model="member.economySectorCode"
449
- :value="member.economySectorCode.nameRu"
449
+ :value="member.economySectorCode?.nameRu"
450
450
  :label="$dataStore.t('form.economySectorCode')"
451
451
  :readonly="isDisabled"
452
452
  :clearable="!isDisabled"
@@ -457,7 +457,7 @@
457
457
  <base-panel-input
458
458
  v-if="hasInsurancePay"
459
459
  v-model="member.insurancePay"
460
- :value="member.insurancePay.nameRu"
460
+ :value="member.insurancePay?.nameRu"
461
461
  :readonly="isDisabled"
462
462
  :clearable="!isDisabled"
463
463
  :rules="$rules.objectRequired"
@@ -481,7 +481,7 @@
481
481
  </v-form>
482
482
  <base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
483
483
  <Teleport v-if="isPanelOpen" to="#panel-actions">
484
- <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
484
+ <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
485
485
  <base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
486
486
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
487
487
  <base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
@@ -497,20 +497,20 @@
497
497
  </div>
498
498
  </Teleport>
499
499
  <Teleport v-if="isSearchOpen" to="#panel-actions">
500
- <div :class="[$libStyles.flexColNav]">
500
+ <div :class="[$styles.flexColNav]">
501
501
  <base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
502
502
  <base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
503
503
  <base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
504
504
  </div>
505
505
  </Teleport>
506
506
  <Teleport v-if="isDocumentOpen" to="#panel-actions">
507
- <div :class="[$libStyles.flexColNav]">
507
+ <div :class="[$styles.flexColNav]">
508
508
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
509
509
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
510
510
  </div>
511
511
  </Teleport>
512
512
  <Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
513
- <div :class="[$libStyles.flexColNav]">
513
+ <div :class="[$styles.flexColNav]">
514
514
  <base-fade-transition>
515
515
  <base-rounded-input
516
516
  v-if="otpCondition && member.otpTokenId"
@@ -610,7 +610,6 @@ export default {
610
610
  return true;
611
611
  }
612
612
  case formStore.insuredFormKey:
613
- case formStore.beneficiaryFormKey:
614
613
  case formStore.beneficialOwnerFormKey:
615
614
  case formStore.policyholdersRepresentativeFormKey:
616
615
  return true;
@@ -712,6 +711,9 @@ export default {
712
711
  if (dataStore.isGons || dataStore.isBolashak) {
713
712
  return [];
714
713
  }
714
+ if ((dataStore.isKazyna || dataStore.isLiferenta) && Number(member.value.age) < 18) {
715
+ return [];
716
+ }
715
717
  }
716
718
  return basePhoneRule;
717
719
  });
@@ -1054,8 +1056,8 @@ export default {
1054
1056
  await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
1055
1057
  if (dataStore.controls.hasCalculator) {
1056
1058
  if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
1057
- formStore.additionalInsuranceTerms.forEach((term: any) => {
1058
- const defaultTerm = formStore.additionalInsuranceTermsWithout.find((i: any) => i.coverTypeId === term.coverTypeId);
1059
+ formStore.additionalInsuranceTerms.forEach(term => {
1060
+ const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
1059
1061
  if (defaultTerm) {
1060
1062
  term.coverSumName = defaultTerm.coverSumName;
1061
1063
  term.coverSumId = defaultTerm.coverSumId;
@@ -1075,6 +1077,11 @@ export default {
1075
1077
  return true;
1076
1078
  }
1077
1079
  }
1080
+ if (dataStore.isKazyna || dataStore.isLiferenta) {
1081
+ if (whichForm.value === formStore.beneficiaryFormKey && Number(member.value.age) < 18) {
1082
+ return true;
1083
+ }
1084
+ }
1078
1085
  if (member.value.hasAgreement !== true) {
1079
1086
  dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
1080
1087
  return false;
@@ -1,8 +1,6 @@
1
1
  <template>
2
2
  <base-content :title="$dataStore.t('agreementBlock.title')" class="!w-full">
3
- <p class="h-full p-4 lg:p-8 leading-8 font-medium" :class="[$libStyles.scrollPage, $libStyles.textSimple]">
4
- &nbsp;&nbsp;&nbsp;&nbsp; {{ $dataStore.t('agreementBlock.text') }}
5
- </p>
3
+ <p class="h-full p-4 lg:p-8 leading-8 font-medium" :class="[$styles.scrollPage, $styles.textSimple]">&nbsp;&nbsp;&nbsp;&nbsp; {{ $dataStore.t('agreementBlock.text') }}</p>
6
4
  </base-content>
7
5
  </template>
8
6
 
@@ -1,7 +1,14 @@
1
1
  <template>
2
2
  <section class="flex flex-col gap-4 px-[10px]">
3
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="[$libStyles.textSimple]">
4
+ <base-message-block
5
+ v-if="isRecalculation"
6
+ class="mt-4"
7
+ :color="$styles.blueBgLight"
8
+ :text="$dataStore.t('preliminaryCalculation')"
9
+ icon="mdi-alert text-[#FCB016]"
10
+ ></base-message-block>
11
+ <base-form-section v-if="whichProduct === 'gons'" :title="$dataStore.t('productConditionsForm.requestedProductConditions')" :class="[$styles.textSimple]">
5
12
  <base-form-text-section
6
13
  class="mb-4"
7
14
  title="Инвалидность I или II группы по причине несчастного случая, начиная с третьего года по любой причине, с освобождением от уплаты страховых взносов"
@@ -54,7 +61,7 @@
54
61
  :clearable="isRecalculationDisabled === false"
55
62
  :label="$dataStore.t('percent') + `Life Multiply`"
56
63
  :readonly="isRecalculationDisabled"
57
- :rules="$dataStore.rules.recalculationMultiply"
64
+ :rules="whichProduct === 'gons' ? $dataStore.rules.recalculationMultiplyBetween : $dataStore.rules.recalculationMultiply"
58
65
  />
59
66
  <base-form-input
60
67
  v-model="productConditionsForm.lifeAdditive"
@@ -88,7 +95,7 @@
88
95
  :clearable="isRecalculationDisabled === false"
89
96
  :label="$dataStore.t('percent') + `Disability Multiply`"
90
97
  :readonly="isRecalculationDisabled"
91
- :rules="$dataStore.rules.recalculationMultiply"
98
+ :rules="whichProduct === 'gons' ? [] : $dataStore.rules.recalculationMultiply"
92
99
  />
93
100
  <base-form-input
94
101
  v-model="productConditionsForm.disabilityAdditive"
@@ -101,7 +108,7 @@
101
108
  <base-panel-input
102
109
  v-if="hasRiskGroup"
103
110
  v-model="productConditionsForm.riskGroup"
104
- :value="productConditionsForm.riskGroup.nameRu"
111
+ :value="productConditionsForm.riskGroup?.nameRu"
105
112
  :label="$dataStore.t('productConditionsForm.riskGroup')"
106
113
  :clearable="isRecalculationDisabled === false"
107
114
  :readonly="isRecalculationDisabled"
@@ -130,7 +137,7 @@
130
137
  />
131
138
  <base-panel-input
132
139
  v-model="productConditionsForm.gender"
133
- :value="productConditionsForm.gender.nameRu"
140
+ :value="productConditionsForm.gender?.nameRu"
134
141
  :readonly="isDisabled"
135
142
  :clearable="!isDisabled"
136
143
  :label="$dataStore.t('form.gender')"
@@ -150,7 +157,7 @@
150
157
  <base-panel-input
151
158
  v-if="hasPaymentPeriod"
152
159
  v-model="productConditionsForm.paymentPeriod"
153
- :value="productConditionsForm.paymentPeriod.nameRu"
160
+ :value="productConditionsForm.paymentPeriod?.nameRu"
154
161
  :readonly="isDisabled"
155
162
  :clearable="!isDisabled"
156
163
  :rules="$rules.objectRequired"
@@ -161,7 +168,7 @@
161
168
  <base-panel-input
162
169
  v-if="hasProcessIndexRate"
163
170
  v-model="productConditionsForm.processIndexRate"
164
- :value="productConditionsForm.processIndexRate.nameRu"
171
+ :value="productConditionsForm.processIndexRate?.nameRu"
165
172
  :readonly="isDisabled"
166
173
  :clearable="!isDisabled"
167
174
  :rules="$rules.objectRequired"
@@ -200,6 +207,34 @@
200
207
  @input="onInputInsurancePremiumPerMonth"
201
208
  @onClear="onClearPremium"
202
209
  />
210
+ <base-form-input
211
+ v-if="whichProduct === 'gons' && isRecalculation"
212
+ v-model="productConditionsForm.totalAmount5"
213
+ :readonly="true"
214
+ :label="$dataStore.t('productConditionsForm.totalAmount5')"
215
+ :suffix="$constants.currencySymbols.kzt"
216
+ />
217
+ <base-form-input
218
+ v-if="whichProduct === 'gons' && isRecalculation"
219
+ v-model="productConditionsForm.statePremium5"
220
+ :readonly="true"
221
+ :label="$dataStore.t('productConditionsForm.statePremium5')"
222
+ :suffix="$constants.currencySymbols.kzt"
223
+ />
224
+ <base-form-input
225
+ v-if="whichProduct === 'gons' && isRecalculation"
226
+ v-model="productConditionsForm.totalAmount7"
227
+ :readonly="true"
228
+ :label="$dataStore.t('productConditionsForm.totalAmount7')"
229
+ :suffix="$constants.currencySymbols.kzt"
230
+ />
231
+ <base-form-input
232
+ v-if="whichProduct === 'gons' && isRecalculation"
233
+ v-model="productConditionsForm.statePremium7"
234
+ :readonly="true"
235
+ :label="$dataStore.t('productConditionsForm.statePremium7')"
236
+ :suffix="$constants.currencySymbols.kzt"
237
+ />
203
238
  <base-form-input
204
239
  v-if="hasInsurancePremiumPerMonthInDollar"
205
240
  v-model="productConditionsForm.insurancePremiumPerMonthInDollar"
@@ -240,7 +275,7 @@
240
275
  />
241
276
  <base-panel-input
242
277
  v-model="productConditionsForm.typeAnnuityInsurance"
243
- :value="productConditionsForm.typeAnnuityInsurance.nameRu"
278
+ :value="productConditionsForm.typeAnnuityInsurance?.nameRu"
244
279
  :readonly="isDisabled"
245
280
  :clearable="!isDisabled"
246
281
  :rules="$rules.objectRequired"
@@ -258,7 +293,7 @@
258
293
  />
259
294
  <base-panel-input
260
295
  v-model="productConditionsForm.periodAnnuityPayment"
261
- :value="productConditionsForm.periodAnnuityPayment.nameRu"
296
+ :value="productConditionsForm.periodAnnuityPayment?.nameRu"
262
297
  :readonly="isDisabled"
263
298
  :clearable="!isDisabled"
264
299
  :rules="$rules.objectRequired"
@@ -288,7 +323,7 @@
288
323
  v-model="additionalTerms[index]"
289
324
  :value="term.coverSumName"
290
325
  :readonly="isTermsDisabled"
291
- :clearable="!isTermsDisabled"
326
+ :clearable="false"
292
327
  :label="term.coverTypeName"
293
328
  append-inner-icon="mdi mdi-chevron-right"
294
329
  :suffix="!!term.amount ? `${formatTermValue(term.amount)} ${currencySymbolsAddTerm}` : ''"
@@ -297,12 +332,7 @@
297
332
  </div>
298
333
  </base-form-section>
299
334
  </v-form>
300
- <base-btn
301
- v-if="!$dataStore.isCalculator && isRecalculation && hasCalculated"
302
- :btn="$libStyles.greenLightBtn"
303
- :text="$dataStore.t('buttons.toStatement')"
304
- @click="toStatement"
305
- />
335
+ <base-btn v-if="!$dataStore.isCalculator && isRecalculation && hasCalculated" :btn="$styles.greenLightBtn" :text="$dataStore.t('buttons.toStatement')" @click="toStatement" />
306
336
  <base-btn
307
337
  v-if="$dataStore.isCalculator ? true : !isDisabled && isTask && ($dataStore.isInitiator() || $dataStore.isUnderwriter())"
308
338
  :loading="isCalculating"
@@ -314,7 +344,7 @@
314
344
  <base-btn :text="$dataStore.t('buttons.calcPremium')" type="submit" @click.prevent="underwriterCalculate('premium')" :loading="isCalculating" />
315
345
  </div>
316
346
  <Teleport v-if="isPanelOpen" to="#panel-actions">
317
- <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
347
+ <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
318
348
  <base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
319
349
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
320
350
  <base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
@@ -330,7 +360,7 @@
330
360
  </div>
331
361
  </Teleport>
332
362
  <Teleport v-if="isTermsPanelOpen" to="#panel-actions">
333
- <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
363
+ <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
334
364
  <base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
335
365
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
336
366
  <base-panel-select-item
@@ -357,7 +387,7 @@ export default defineComponent({
357
387
  default: false,
358
388
  },
359
389
  product: {
360
- type: String,
390
+ type: String as PropType<Projects>,
361
391
  default: false,
362
392
  },
363
393
  },
@@ -369,7 +399,7 @@ export default defineComponent({
369
399
  const dataStore = useDataStore();
370
400
  const memberStore = useMemberStore();
371
401
 
372
- const whichProduct = ref<string>(dataStore.isCalculator ? props.product : dataStore.product!);
402
+ const whichProduct = ref<Projects | null>(dataStore.isCalculator ? props.product : dataStore.product!);
373
403
  const isCalculating = ref<boolean>(false);
374
404
  const isPanelLoading = ref<boolean>(false);
375
405
  const isPanelOpen = ref<boolean>(false);
@@ -393,7 +423,7 @@ export default defineComponent({
393
423
  });
394
424
  const isDisabled = computed(() => (dataStore.isCalculator ? false : !memberStore.isStatementEditible('productConditionsForm')));
395
425
  const isTermsDisabled = computed(() => {
396
- if (dataStore.isGons) {
426
+ if (dataStore.isGons || whichProduct.value === 'gons') {
397
427
  return true;
398
428
  }
399
429
  return isDisabled.value;
@@ -725,6 +755,13 @@ export default defineComponent({
725
755
  return;
726
756
  }
727
757
 
758
+ if (
759
+ whichProduct.value === 'gons' &&
760
+ (formStore.applicationData.statusCode === 'EditForm' || formStore.applicationData.statusCode === 'StartForm') &&
761
+ getNumber(productConditionsForm.requestedSumInsured as string)! >= 10_000_000
762
+ ) {
763
+ dataStore.showToaster('info', dataStore.t('toaster.calcSumForUnder'), 6000);
764
+ }
728
765
  if (isUnderwriterForm.value) {
729
766
  type recalculationInfo = {
730
767
  lifeMultiply: string | null | number;
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <section v-if="sendingActions">
3
- <div :class="[$libStyles.flexColNav]">
3
+ <div :class="[$styles.flexColNav]">
4
4
  <v-form ref="vForm">
5
5
  <base-rounded-input v-model.trim="actionCause" placeholder="Причина" :rules="$rules.required" />
6
6
  </v-form>
@@ -8,7 +8,7 @@
8
8
  </div>
9
9
  </section>
10
10
  <section v-if="acceptAction">
11
- <div :class="[$libStyles.flexColNav]">
11
+ <div :class="[$styles.flexColNav]">
12
12
  <base-content-block v-if="hasConditionsInfo" class="flex flex-col gap-3">
13
13
  <span
14
14
  >{{ `Сумма страховой премии ${paymentPeriod}:` }} <b>{{ `${insurancePremiumPerMonth}₸` }}</b></span
@@ -18,21 +18,21 @@
18
18
  </span>
19
19
  </base-content-block>
20
20
  <base-btn :text="$dataStore.t('confirm.yes')" @click="handleTask" />
21
- <base-btn :btn="$libStyles.blueLightBtn" :text="$dataStore.t('confirm.no')" @click="closePanel" />
21
+ <base-btn :btn="$styles.blueLightBtn" :text="$dataStore.t('confirm.no')" @click="closePanel" />
22
22
  </div>
23
23
  </section>
24
24
  <section v-if="signingActions" class="relative">
25
25
  <div>
26
26
  <base-fade-transition>
27
- <div v-if="!isSendNumberOpen" :class="[$libStyles.flexColNav]">
28
- <div :class="[$libStyles.blueBgLight]" class="rounded-lg p-4">
27
+ <div v-if="!isSendNumberOpen" :class="[$styles.flexColNav]">
28
+ <div :class="[$styles.blueBgLight]" class="rounded-lg p-4">
29
29
  <v-expansion-panels v-if="formStore.signUrls && formStore.signUrls.length" variant="accordion" multiple>
30
30
  <v-expansion-panel v-for="signUrl of formStore.signUrls" :key="signUrl.iin!" class="border-[1px]" elevation="0" bg-color="#FFF">
31
- <v-expansion-panel-title class="h-[80px]" :class="$libStyles.textTitle">{{ `${signUrl.longName} - ${signUrl.iin}` }}</v-expansion-panel-title>
31
+ <v-expansion-panel-title class="h-[80px]" :class="$styles.textTitle">{{ `${signUrl.longName} - ${signUrl.iin}` }}</v-expansion-panel-title>
32
32
  <v-expansion-panel-text class="border-t-[1px]">
33
- <section class="flex flex-col gap-4 py-3" :class="$libStyles.textSimple">
33
+ <section class="flex flex-col gap-4 py-3" :class="$styles.textSimple">
34
34
  <base-btn :loading="loading" :text="$dataStore.t('sign.copyCloud')" @click="$dataStore.copyToClipboard(signUrl.uri)" />
35
- <base-btn :loading="loading" :btn="$libStyles.blueLightBtn" :text="$dataStore.t('sign.recipientNumber')" @click="openSmsPanel(signUrl)" />
35
+ <base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('sign.recipientNumber')" @click="openSmsPanel(signUrl)" />
36
36
  </section>
37
37
  </v-expansion-panel-text>
38
38
  </v-expansion-panel>
@@ -40,7 +40,7 @@
40
40
  <base-list-empty v-else />
41
41
  </div>
42
42
  </div>
43
- <div v-if="isSendNumberOpen" :class="[$libStyles.flexColNav]">
43
+ <div v-if="isSendNumberOpen" :class="[$styles.flexColNav]">
44
44
  <i
45
45
  class="mdi mdi-arrow-left cursor-pointer absolute text-xl left-0 top-0 rounded-br-full bg-white border-[1px] pb-3 pt-1 pl-1 pr-3"
46
46
  @click="isSendNumberOpen = false"
@@ -64,11 +64,11 @@
64
64
  <section v-if="payingActions" class="relative">
65
65
  <div>
66
66
  <base-fade-transition>
67
- <div v-if="!isSendNumberOpen" :class="[$libStyles.flexColNav]">
67
+ <div v-if="!isSendNumberOpen" :class="[$styles.flexColNav]">
68
68
  <base-btn :loading="loading" :text="$dataStore.t('payment.copyUrl')" @click="$dataStore.copyToClipboard(formStore.epayLink)" />
69
- <base-btn :loading="loading" :btn="$libStyles.blueLightBtn" :text="$dataStore.t('payment.recipientNumber')" @click="openEpayPanel" />
69
+ <base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('payment.recipientNumber')" @click="openEpayPanel" />
70
70
  </div>
71
- <div v-if="isSendNumberOpen" :class="[$libStyles.flexColNav]">
71
+ <div v-if="isSendNumberOpen" :class="[$styles.flexColNav]">
72
72
  <i
73
73
  class="mdi mdi-arrow-left cursor-pointer absolute text-xl left-0 top-0 rounded-br-full bg-white border-[1px] pb-3 pt-1 pl-1 pr-3"
74
74
  @click="isSendNumberOpen = false"
@@ -90,7 +90,7 @@
90
90
  </div>
91
91
  </section>
92
92
  <section v-if="affiliateActions">
93
- <div :class="[$libStyles.flexColNav]">
93
+ <div :class="[$styles.flexColNav]">
94
94
  <v-form ref="vForm">
95
95
  <base-content-block class="flex flex-col gap-3">
96
96
  <base-form-input v-model.trim="formStore.affilationResolution.number" :rules="$rules.required" :label="$dataStore.t('form.documentNumber')" />
@@ -114,7 +114,8 @@
114
114
  <script lang="ts">
115
115
  import { DocumentItem } from '../../composables/classes';
116
116
  export default defineComponent({
117
- setup() {
117
+ emits: ['task'],
118
+ setup(props, { emit }) {
118
119
  const route = useRoute();
119
120
  const dataStore = useDataStore();
120
121
  const formStore = useFormStore();
@@ -198,7 +199,16 @@ export default defineComponent({
198
199
 
199
200
  const handleTask = async () => {
200
201
  loading.value = true;
201
- await dataStore.handleTask(dataStore.panelAction, route.params.taskId as string, actionCause.value);
202
+ if (needRecalculation.value) {
203
+ dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'));
204
+ loading.value = false;
205
+ return;
206
+ }
207
+ if (dataStore.isAML || dataStore.isCheckContract || dataStore.isCheckContragent) {
208
+ emit('task', [dataStore.panelAction, route.params.taskId as string, actionCause.value]);
209
+ } else {
210
+ await dataStore.handleTask(dataStore.panelAction, route.params.taskId as string, actionCause.value);
211
+ }
202
212
  loading.value = false;
203
213
  };
204
214
 
@@ -232,6 +242,13 @@ export default defineComponent({
232
242
  },
233
243
  { immediate: true },
234
244
  );
245
+ const needRecalculation = computed(
246
+ () =>
247
+ dataStore.isGons &&
248
+ formStore.applicationData.statusCode === 'UnderwriterForm' &&
249
+ dataStore.panelAction === constants.actions.accept &&
250
+ formStore.productConditionsForm.isRecalculated === false,
251
+ );
235
252
  const sendingActions = computed(
236
253
  () => dataStore.panelAction === constants.actions.reject || dataStore.panelAction === constants.actions.return || dataStore.panelAction === constants.actions.rejectclient,
237
254
  );
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div class="flex justify-between p-4 items-center cursor-pointer" :class="[$libStyles.rounded, $libStyles.blueBgLight, $libStyles.blueBgLightHover]">
3
- <span :class="[$libStyles.textSimple]">{{ text }}</span>
4
- <i class="mdi text-xl" :class="[selected ? `mdi-radiobox-marked ${$libStyles.greenText}` : 'mdi-radiobox-blank text-[#636363]']"></i>
2
+ <div class="flex justify-between p-4 items-center cursor-pointer" :class="[$styles.rounded, $styles.blueBgLight, $styles.blueBgLightHover]">
3
+ <span :class="[$styles.textSimple]">{{ text }}</span>
4
+ <i class="mdi text-xl" :class="[selected ? `mdi-radiobox-marked ${$styles.greenText}` : 'mdi-radiobox-blank text-[#636363]']"></i>
5
5
  </div>
6
6
  </template>
7
7
 
@@ -0,0 +1,17 @@
1
+ <template>
2
+ <div class="border-[1px] border-[#F1F2F6] rounded-[12px] p-[10px]">
3
+ <slot v-if="!icon"></slot>
4
+ <i v-else :class="icon"></i>
5
+ </div>
6
+ </template>
7
+
8
+ <script lang="ts">
9
+ export default defineComponent({
10
+ props: {
11
+ icon: {
12
+ type: String,
13
+ default: '',
14
+ },
15
+ },
16
+ });
17
+ </script>
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
  import interceptors from '../api/interceptors';
3
3
 
4
- export const useAxios = (baseURL: string) => {
4
+ export const useAxiosInstance = (baseURL: string) => {
5
5
  const axiosInstance = axios.create({
6
6
  baseURL: baseURL,
7
7
  });