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

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 (56) 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/RoundedEmptyField.vue +5 -0
  19. package/components/Input/RoundedSelect.vue +13 -0
  20. package/components/Layout/Drawer.vue +2 -1
  21. package/components/Layout/Header.vue +1 -1
  22. package/components/Layout/SettingsPanel.vue +5 -9
  23. package/components/List/ListEmpty.vue +1 -1
  24. package/components/Menu/MenuHover.vue +1 -1
  25. package/components/Menu/MenuNav.vue +1 -1
  26. package/components/Menu/MenuNavItem.vue +4 -4
  27. package/components/Pages/Anketa.vue +12 -17
  28. package/components/Pages/Auth.vue +9 -9
  29. package/components/Pages/ContragentForm.vue +505 -0
  30. package/components/Pages/Documents.vue +5 -5
  31. package/components/Pages/InvoiceInfo.vue +1 -1
  32. package/components/Pages/MemberForm.vue +35 -28
  33. package/components/Pages/ProductAgreement.vue +1 -3
  34. package/components/Pages/ProductConditions.vue +13 -18
  35. package/components/Panel/PanelHandler.vue +20 -15
  36. package/components/Panel/PanelSelectItem.vue +3 -3
  37. package/components/Utilities/IconBorder.vue +17 -0
  38. package/composables/axios.ts +1 -1
  39. package/composables/classes.ts +5 -7
  40. package/composables/constants.ts +5 -0
  41. package/composables/index.ts +30 -4
  42. package/composables/styles.ts +19 -9
  43. package/configs/i18n.ts +0 -2
  44. package/layouts/default.vue +5 -2
  45. package/layouts/full.vue +1 -1
  46. package/locales/ru.json +62 -2
  47. package/nuxt.config.ts +1 -1
  48. package/package.json +12 -21
  49. package/pages/500.vue +2 -2
  50. package/pages/Token.vue +1 -0
  51. package/plugins/helperFunctionsPlugins.ts +6 -7
  52. package/store/data.store.ts +54 -37
  53. package/store/rules.ts +11 -2
  54. package/types/index.ts +40 -26
  55. package/components/Button/BtnIcon.vue +0 -47
  56. 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,7 @@
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-form-section v-if="whichProduct === 'gons'" :title="$dataStore.t('productConditionsForm.requestedProductConditions')" :class="[$styles.textSimple]">
5
5
  <base-form-text-section
6
6
  class="mb-4"
7
7
  title="Инвалидность I или II группы по причине несчастного случая, начиная с третьего года по любой причине, с освобождением от уплаты страховых взносов"
@@ -101,7 +101,7 @@
101
101
  <base-panel-input
102
102
  v-if="hasRiskGroup"
103
103
  v-model="productConditionsForm.riskGroup"
104
- :value="productConditionsForm.riskGroup.nameRu"
104
+ :value="productConditionsForm.riskGroup?.nameRu"
105
105
  :label="$dataStore.t('productConditionsForm.riskGroup')"
106
106
  :clearable="isRecalculationDisabled === false"
107
107
  :readonly="isRecalculationDisabled"
@@ -130,7 +130,7 @@
130
130
  />
131
131
  <base-panel-input
132
132
  v-model="productConditionsForm.gender"
133
- :value="productConditionsForm.gender.nameRu"
133
+ :value="productConditionsForm.gender?.nameRu"
134
134
  :readonly="isDisabled"
135
135
  :clearable="!isDisabled"
136
136
  :label="$dataStore.t('form.gender')"
@@ -150,7 +150,7 @@
150
150
  <base-panel-input
151
151
  v-if="hasPaymentPeriod"
152
152
  v-model="productConditionsForm.paymentPeriod"
153
- :value="productConditionsForm.paymentPeriod.nameRu"
153
+ :value="productConditionsForm.paymentPeriod?.nameRu"
154
154
  :readonly="isDisabled"
155
155
  :clearable="!isDisabled"
156
156
  :rules="$rules.objectRequired"
@@ -161,7 +161,7 @@
161
161
  <base-panel-input
162
162
  v-if="hasProcessIndexRate"
163
163
  v-model="productConditionsForm.processIndexRate"
164
- :value="productConditionsForm.processIndexRate.nameRu"
164
+ :value="productConditionsForm.processIndexRate?.nameRu"
165
165
  :readonly="isDisabled"
166
166
  :clearable="!isDisabled"
167
167
  :rules="$rules.objectRequired"
@@ -240,7 +240,7 @@
240
240
  />
241
241
  <base-panel-input
242
242
  v-model="productConditionsForm.typeAnnuityInsurance"
243
- :value="productConditionsForm.typeAnnuityInsurance.nameRu"
243
+ :value="productConditionsForm.typeAnnuityInsurance?.nameRu"
244
244
  :readonly="isDisabled"
245
245
  :clearable="!isDisabled"
246
246
  :rules="$rules.objectRequired"
@@ -258,7 +258,7 @@
258
258
  />
259
259
  <base-panel-input
260
260
  v-model="productConditionsForm.periodAnnuityPayment"
261
- :value="productConditionsForm.periodAnnuityPayment.nameRu"
261
+ :value="productConditionsForm.periodAnnuityPayment?.nameRu"
262
262
  :readonly="isDisabled"
263
263
  :clearable="!isDisabled"
264
264
  :rules="$rules.objectRequired"
@@ -288,7 +288,7 @@
288
288
  v-model="additionalTerms[index]"
289
289
  :value="term.coverSumName"
290
290
  :readonly="isTermsDisabled"
291
- :clearable="!isTermsDisabled"
291
+ :clearable="false"
292
292
  :label="term.coverTypeName"
293
293
  append-inner-icon="mdi mdi-chevron-right"
294
294
  :suffix="!!term.amount ? `${formatTermValue(term.amount)} ${currencySymbolsAddTerm}` : ''"
@@ -297,12 +297,7 @@
297
297
  </div>
298
298
  </base-form-section>
299
299
  </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
- />
300
+ <base-btn v-if="!$dataStore.isCalculator && isRecalculation && hasCalculated" :btn="$styles.greenLightBtn" :text="$dataStore.t('buttons.toStatement')" @click="toStatement" />
306
301
  <base-btn
307
302
  v-if="$dataStore.isCalculator ? true : !isDisabled && isTask && ($dataStore.isInitiator() || $dataStore.isUnderwriter())"
308
303
  :loading="isCalculating"
@@ -314,7 +309,7 @@
314
309
  <base-btn :text="$dataStore.t('buttons.calcPremium')" type="submit" @click.prevent="underwriterCalculate('premium')" :loading="isCalculating" />
315
310
  </div>
316
311
  <Teleport v-if="isPanelOpen" to="#panel-actions">
317
- <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
312
+ <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
318
313
  <base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
319
314
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
320
315
  <base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
@@ -330,7 +325,7 @@
330
325
  </div>
331
326
  </Teleport>
332
327
  <Teleport v-if="isTermsPanelOpen" to="#panel-actions">
333
- <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
328
+ <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
334
329
  <base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
335
330
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
336
331
  <base-panel-select-item
@@ -357,7 +352,7 @@ export default defineComponent({
357
352
  default: false,
358
353
  },
359
354
  product: {
360
- type: String,
355
+ type: String as PropType<Projects>,
361
356
  default: false,
362
357
  },
363
358
  },
@@ -369,7 +364,7 @@ export default defineComponent({
369
364
  const dataStore = useDataStore();
370
365
  const memberStore = useMemberStore();
371
366
 
372
- const whichProduct = ref<string>(dataStore.isCalculator ? props.product : dataStore.product!);
367
+ const whichProduct = ref<Projects | null>(dataStore.isCalculator ? props.product : dataStore.product!);
373
368
  const isCalculating = ref<boolean>(false);
374
369
  const isPanelLoading = ref<boolean>(false);
375
370
  const isPanelOpen = ref<boolean>(false);
@@ -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,11 @@ 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 (dataStore.isAML || dataStore.isCheckContract || dataStore.isCheckContragent) {
203
+ emit('task', [dataStore.panelAction, route.params.taskId as string, actionCause.value]);
204
+ } else {
205
+ await dataStore.handleTask(dataStore.panelAction, route.params.taskId as string, actionCause.value);
206
+ }
202
207
  loading.value = false;
203
208
  };
204
209
 
@@ -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
  });
@@ -405,11 +405,11 @@ export class Member extends Person {
405
405
  registrationRegion: Value;
406
406
  registrationRegionType: Value;
407
407
  registrationCity: Value;
408
- registrationQuarter: string | null;
409
- registrationMicroDistrict: string | null;
410
- registrationStreet: string | null;
411
- registrationNumberHouse: string | null;
412
- registrationNumberApartment: string | null;
408
+ registrationQuarter?: string | null;
409
+ registrationMicroDistrict?: string | null;
410
+ registrationStreet?: string | null;
411
+ registrationNumberHouse?: string | null;
412
+ registrationNumberApartment?: string | null;
413
413
  birthRegion: Value;
414
414
  documentType: Value;
415
415
  documentNumber: string | null;
@@ -891,7 +891,6 @@ export class DataStoreClass {
891
891
  user: User;
892
892
  accessToken: string | null = null;
893
893
  refreshToken: string | null = null;
894
- processCoverTypeSum: Value[];
895
894
  processIndexRate: Value[];
896
895
  processPaymentPeriod: Value[];
897
896
  dicAnnuityTypeList: Value[];
@@ -1031,7 +1030,6 @@ export class DataStoreClass {
1031
1030
  this.user = new User();
1032
1031
  this.accessToken = null;
1033
1032
  this.refreshToken = null;
1034
- this.processCoverTypeSum = [];
1035
1033
  this.taskList = [];
1036
1034
  this.processHistory = [];
1037
1035
  this.contragentList = [];
@@ -9,6 +9,11 @@ export const constants = Object.freeze({
9
9
  liferenta: 9,
10
10
  gons: 10,
11
11
  halykkazyna: 11,
12
+ lifebusiness: 14,
13
+ },
14
+ amlProducts: {
15
+ checkcontragent: 1,
16
+ checkcontract: 2,
12
17
  },
13
18
  editableStatuses: [Statuses.StartForm, Statuses.EditBeneficiaryForm, Statuses.EditForm],
14
19
  documentsLinkVisibleStatuses: [
@@ -229,13 +229,19 @@ export const setAddressBeneficiary = (whichIndex: number, sameAddress: boolean)
229
229
  } else {
230
230
  if (beneficiary.response && beneficiary.response.addresses && beneficiary.response.addresses.length) {
231
231
  const benAddress = beneficiary.response.addresses;
232
- const country = dataStore.countries.find(i => (i.nameRu as string).match(new RegExp(benAddress[0].countryName, 'i')));
233
- const city = dataStore.cities.find(i => i.nameRu === benAddress[0].cityName.replace('г.', ''));
232
+ const countryName = benAddress[0].countryName;
233
+ const cityName = benAddress[0].cityName;
234
+ if (countryName) {
235
+ const country = dataStore.countries.find(i => (i.nameRu as string).match(new RegExp(countryName, 'i')));
236
+ beneficiary.registrationCountry = country ?? new Value();
237
+ }
238
+ if (cityName) {
239
+ const city = dataStore.cities.find(i => i.nameRu === cityName.replace('г.', ''));
240
+ beneficiary.registrationCity = city ?? new Value();
241
+ }
234
242
  const province = dataStore.states.find(i => i.ids === benAddress[0].stateCode);
235
243
  const localityType = dataStore.localityTypes.find(i => i.nameRu === benAddress[0].cityTypeName);
236
244
  const region = dataStore.regions.find(i => i.ids == benAddress[0].regionCode);
237
- beneficiary.registrationCountry = country ?? new Value();
238
- beneficiary.registrationCity = city ?? new Value();
239
245
  beneficiary.registrationMicroDistrict = beneficiary.response?.addresses[0].microRaion ?? '';
240
246
  beneficiary.registrationNumberApartment = beneficiary.response?.addresses[0].apartmentNumber ?? '';
241
247
  beneficiary.registrationNumberHouse = beneficiary.response?.addresses[0].blockNumber ?? '';
@@ -248,3 +254,23 @@ export const setAddressBeneficiary = (whichIndex: number, sameAddress: boolean)
248
254
  }
249
255
  }
250
256
  };
257
+
258
+ export const changeBridge = async (toBridge: 'efo' | 'lka', token: string) => {
259
+ const bridgeUrl = import.meta.env[`VITE_${toBridge.toUpperCase()}_URL`] as string;
260
+ if (!toBridge) return;
261
+ if (!bridgeUrl || !token) {
262
+ useDataStore().showToaster('error', `${useDataStore().t('toaster.noUrl')} [import.meta.env.VITE_${toBridge.toUpperCase()}_URL]`);
263
+ return;
264
+ }
265
+ window.open(`${bridgeUrl}/#/Token?token=${token}`, '_blank');
266
+ };
267
+
268
+ export const getFirstDayOfMonth = (year: number, month: number) => {
269
+ const date = new Date();
270
+ return new Date(year, month, 1, (date.getTimezoneOffset() / 60) * -1).toISOString();
271
+ };
272
+
273
+ export const getLastDayOfMonth = (year: number, month: number) => {
274
+ const date = new Date();
275
+ return new Date(year, month + 1, 0, (date.getTimezoneOffset() / 60) * -1).toISOString();
276
+ };