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,32 +1,65 @@
1
1
  <template>
2
2
  <section class="flex flex-col gap-4 px-[10px]">
3
- <v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[82svh] overflow-y-scroll">
4
- <div v-if="memberSetting && memberSetting.has === true && memberSetting.isMultiple === true" class="flex items-center mt-[14px] min-h-[54px]">
5
- <div :class="[$styles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-1 rounded-t-[8px] h-full">
3
+ <v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[80svh] overflow-y-scroll">
4
+ <div
5
+ v-if="memberSetting && memberSetting.has === true && whichForm !== 'policyholderForm' && whichForm !== 'policyholdersRepresentativeForm'"
6
+ class="flex items-center mt-[14px] min-h-[54px]"
7
+ >
8
+ <div :class="[$styles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-2 rounded-t-[8px] h-full">
6
9
  <div
7
10
  v-for="(each, index) of formStore[whichForm]"
8
11
  :key="index"
9
- class="pl-3 pr-1 py-1 rounded-[8px] cursor-pointer flex items-center"
10
- :class="[Number(whichIndex) === index ? `${$styles.blueBg} ${$styles.whiteText}` : '', $styles.textSimple]"
12
+ class="rounded-[8px] cursor-pointer flex items-center"
13
+ :class="[Number(whichIndex) === index ? `${$styles.blueBg} ${$styles.whiteText}` : '', $styles.textSimple, isDisabled ? 'py-2 px-3' : 'py-1 pr-1 pl-3']"
11
14
  @click.self="index !== Number(whichIndex) ? selectMember(index) : null"
12
15
  >
13
16
  {{ `${$dataStore.menu.selectedItem.title} ${index + 1}` }}
14
17
  <v-btn
18
+ v-if="!isDisabled"
15
19
  icon="mdi-close !text-[20px]"
16
20
  size="x-small"
17
21
  :disabled="!memberStore.canMemberDeleted(whichForm, index) && !memberStore.canMemberCleared(whichForm, index)"
18
22
  variant="plain"
19
23
  :color="Number(whichIndex) === index ? '#FFF' : '#A0B3D8'"
20
- @click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? deleteMember(index) : null"
24
+ @click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? openDeletionDialog(index) : null"
21
25
  />
22
26
  </div>
23
27
  </div>
24
- <v-btn class="ml-2" icon="mdi-plus !text-[24px]" @click="memberStore.addMember(whichForm)" size="small" color="#A0B3D8" variant="tonal" />
28
+ <v-btn
29
+ v-if="!isDisabled && memberSetting.isMultiple === true"
30
+ class="ml-2"
31
+ icon="mdi-plus !text-[24px]"
32
+ @click="memberStore.addMember(whichForm)"
33
+ size="small"
34
+ color="#A0B3D8"
35
+ variant="tonal"
36
+ />
25
37
  </div>
26
38
  <base-form-section
27
39
  :title="$dataStore.t('form.personalData')"
28
- :class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
40
+ :class="[
41
+ memberSetting && memberSetting.has === true && whichForm !== 'policyholderForm' && whichForm !== 'policyholdersRepresentativeForm'
42
+ ? 'rounded-t-0 !mt-[-5px]'
43
+ : 'mt-[14px]',
44
+ ]"
29
45
  >
46
+ <base-panel-input
47
+ v-if="$dataStore.isLifetrip"
48
+ v-model="member.signOfResidency"
49
+ :value="member.signOfResidency?.nameRu"
50
+ :label="$dataStore.t('form.signOfResidency')"
51
+ :readonly="isDisabled"
52
+ :clearable="!isDisabled"
53
+ :rules="residencyRule"
54
+ append-inner-icon="mdi mdi-chevron-right"
55
+ @append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
56
+ />
57
+ <base-form-toggle
58
+ v-if="$dataStore.isLifetrip && whichForm === 'insuredForm'"
59
+ v-model="member.isInsuredUnderage"
60
+ :title="$dataStore.t('isInsuredUnderage')"
61
+ :has-border="false"
62
+ />
30
63
  <base-form-input
31
64
  v-model="member.phoneNumber"
32
65
  :label="$dataStore.t('form.phoneNumber')"
@@ -44,7 +77,7 @@
44
77
  :maska="$maska.iin"
45
78
  :readonly="!!isDisabled || !!isIinPhoneDisabled"
46
79
  :clearable="!isDisabled"
47
- :append-inner-icon="showSaveButton ? 'mdi mdi-magnify' : ''"
80
+ :append-inner-icon="hasMemberSearch ? 'mdi mdi-magnify' : ''"
48
81
  @append="searchMember"
49
82
  @input="onIinInput"
50
83
  :rules="$rules.required.concat($rules.iinRight)"
@@ -64,12 +97,31 @@
64
97
  :rules="$rules.required.concat($rules.cyrillic)"
65
98
  />
66
99
  <base-form-input
100
+ v-if="hasMiddleName"
67
101
  v-model.trim="member.middleName"
68
102
  :readonly="isDisabled || isFromGBD"
69
103
  :clearable="!isDisabled"
70
104
  :label="$dataStore.t('form.middleName')"
71
105
  :rules="$rules.cyrillicNonRequired"
72
106
  />
107
+ <base-form-input
108
+ v-if="$dataStore.isLifetrip"
109
+ v-model.trim="member.lastNameLat"
110
+ :readonly="isDisabled || isFromGBD"
111
+ :clearable="!isDisabled"
112
+ :label="$dataStore.t('form.lastNameLat')"
113
+ :rules="$rules.required.concat($rules.latin)"
114
+ :hint="$dataStore.t('labels.checkWithDoc')"
115
+ />
116
+ <base-form-input
117
+ v-if="$dataStore.isLifetrip"
118
+ v-model.trim="member.firstNameLat"
119
+ :readonly="isDisabled || isFromGBD"
120
+ :clearable="!isDisabled"
121
+ :label="$dataStore.t('form.firstNameLat')"
122
+ :rules="$rules.required.concat($rules.latin)"
123
+ :hint="$dataStore.t('labels.checkWithDoc')"
124
+ />
73
125
  <base-form-input
74
126
  v-model="member.birthDate"
75
127
  :readonly="isDisabled || isFromGBD"
@@ -82,9 +134,9 @@
82
134
  <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
83
135
  <base-panel-input
84
136
  v-model="member.gender"
85
- :value="member.gender.nameRu"
137
+ :value="member.gender?.nameRu"
86
138
  :readonly="isDisabled || isFromGBD"
87
- :clearable="!isDisabled"
139
+ :clearable="!isDisabled && !isFromGBD"
88
140
  :label="$dataStore.t('form.gender')"
89
141
  :rules="$rules.objectRequired"
90
142
  append-inner-icon="mdi mdi-chevron-right"
@@ -93,7 +145,7 @@
93
145
  <base-panel-input
94
146
  v-if="hasFamilyStatus"
95
147
  v-model="member.familyStatus"
96
- :value="member.familyStatus.nameRu"
148
+ :value="member.familyStatus?.nameRu"
97
149
  :readonly="isDisabled"
98
150
  :clearable="!isDisabled"
99
151
  :label="$dataStore.t('form.familyStatus')"
@@ -102,9 +154,9 @@
102
154
  @append="openPanel($dataStore.t('form.familyStatus'), [], 'familyStatus', $dataStore.getFamilyStatuses)"
103
155
  />
104
156
  <base-panel-input
105
- v-if="(whichForm === formStore.beneficiaryFormKey || whichForm === formStore.insuredFormKey) && member.iin !== formStore.policyholderForm.iin"
157
+ v-if="hasRelationDegree"
106
158
  v-model="member.relationDegree"
107
- :value="member.relationDegree.nameRu"
159
+ :value="member.relationDegree?.nameRu"
108
160
  :readonly="isDisabled"
109
161
  :clearable="!isDisabled"
110
162
  :label="$dataStore.t('form.relations')"
@@ -231,7 +283,7 @@
231
283
  append-inner-icon="mdi mdi-calendar-blank-outline"
232
284
  />
233
285
  </base-form-section>
234
- <base-form-section :title="$dataStore.t('form.jobData')" v-if="$dataStore.hasJobSection(whichForm)">
286
+ <base-form-section v-if="$dataStore.hasJobSection(whichForm)" :title="$dataStore.t('form.jobData')">
235
287
  <base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
236
288
  <base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
237
289
  <base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
@@ -240,11 +292,11 @@
240
292
  <base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
241
293
  <base-panel-input
242
294
  v-model="member.registrationCountry"
243
- :value="member.registrationCountry.nameRu"
295
+ :value="member.registrationCountry?.nameRu"
244
296
  :readonly="isDisabled"
245
297
  :clearable="!isDisabled"
246
298
  :label="$dataStore.t('form.Country')"
247
- :rules="$rules.objectRequired"
299
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
248
300
  append-inner-icon="mdi mdi-chevron-right"
249
301
  @append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
250
302
  />
@@ -252,42 +304,42 @@
252
304
  <div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
253
305
  <base-panel-input
254
306
  v-model="member.registrationProvince"
255
- :value="member.registrationProvince.nameRu"
307
+ :value="member.registrationProvince?.nameRu"
256
308
  :label="$dataStore.t('form.Province')"
257
309
  :readonly="isDisabled"
258
310
  :clearable="!isDisabled"
259
- :rules="$rules.objectRequired"
311
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
260
312
  append-inner-icon="mdi mdi-chevron-right"
261
313
  @append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
262
314
  />
263
315
  <base-panel-input
264
316
  v-model="member.registrationRegionType"
265
- :value="member.registrationRegionType.nameRu"
317
+ :value="member.registrationRegionType?.nameRu"
266
318
  :label="$dataStore.t('form.RegionType')"
267
319
  :readonly="isDisabled"
268
320
  :clearable="!isDisabled"
269
- :rules="$rules.objectRequired"
321
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
270
322
  append-inner-icon="mdi mdi-chevron-right"
271
323
  @append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
272
324
  />
273
325
  <base-panel-input
274
326
  v-if="member.registrationRegionType.nameRu !== 'город'"
275
327
  v-model="member.registrationRegion"
276
- :value="member.registrationRegion.nameRu"
328
+ :value="member.registrationRegion?.nameRu"
277
329
  :label="$dataStore.t('form.Region')"
278
330
  :readonly="isDisabled"
279
331
  :clearable="!isDisabled"
280
- :rules="$rules.objectRequired"
332
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
281
333
  append-inner-icon="mdi mdi-chevron-right"
282
334
  @append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
283
335
  />
284
336
  <base-panel-input
285
337
  v-model="member.registrationCity"
286
- :value="member.registrationCity.nameRu"
338
+ :value="member.registrationCity?.nameRu"
287
339
  :label="$dataStore.t('form.City')"
288
340
  :readonly="isDisabled"
289
341
  :clearable="!isDisabled"
290
- :rules="$rules.objectRequired"
342
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
291
343
  append-inner-icon="mdi mdi-chevron-right"
292
344
  @append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
293
345
  />
@@ -297,14 +349,14 @@
297
349
  <base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.MicroDistrict')" />
298
350
  <base-form-input
299
351
  v-model.trim="member.registrationStreet"
300
- :rules="$rules.required"
352
+ :rules="member.isInsuredUnderage ? [] : $rules.required"
301
353
  :readonly="isDisabled"
302
354
  :clearable="!isDisabled"
303
355
  :label="$dataStore.t('form.Street')"
304
356
  />
305
357
  <base-form-input
306
358
  v-model.trim="member.registrationNumberHouse"
307
- :rules="$rules.required"
359
+ :rules="member.isInsuredUnderage ? [] : $rules.required"
308
360
  :readonly="isDisabled"
309
361
  :clearable="!isDisabled"
310
362
  :label="$dataStore.t('form.NumberHouse')"
@@ -316,7 +368,7 @@
316
368
  <base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
317
369
  <base-panel-input
318
370
  v-model="member.birthPlace"
319
- :value="member.birthPlace.nameRu"
371
+ :value="member.birthPlace?.nameRu"
320
372
  :label="$dataStore.t('form.Country')"
321
373
  :readonly="isDisabled"
322
374
  :clearable="!isDisabled"
@@ -327,7 +379,7 @@
327
379
  <!-- TODO -->
328
380
  <!-- <base-panel-input
329
381
  v-model="member.birthRegion"
330
- :value="member.birthRegion.nameRu"
382
+ :value="member.birthRegion?.nameRu"
331
383
  :label="$dataStore.t('form.Region')"
332
384
  :readonly="isDisabled"
333
385
  :clearable="!isDisabled"
@@ -339,7 +391,7 @@
339
391
  <base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
340
392
  <base-panel-input
341
393
  v-model="member.documentType"
342
- :value="member.documentType.nameRu"
394
+ :value="member.documentType?.nameRu"
343
395
  :label="$dataStore.t('form.documentType')"
344
396
  :readonly="isDisabled"
345
397
  :clearable="!isDisabled"
@@ -361,7 +413,7 @@
361
413
  </base-empty-form-field> -->
362
414
  <base-panel-input
363
415
  v-model="member.documentIssuers"
364
- :value="member.documentIssuers.nameRu"
416
+ :value="member.documentIssuers?.nameRu"
365
417
  :label="$dataStore.t('form.documentIssuers')"
366
418
  :readonly="isDisabled"
367
419
  :clearable="!isDisabled"
@@ -391,8 +443,9 @@
391
443
  />
392
444
  </base-fade-transition>
393
445
  <base-panel-input
446
+ v-if="!$dataStore.isLifetrip"
394
447
  v-model="member.signOfResidency"
395
- :value="member.signOfResidency.nameRu"
448
+ :value="member.signOfResidency?.nameRu"
396
449
  :label="$dataStore.t('form.signOfResidency')"
397
450
  :readonly="isDisabled"
398
451
  :clearable="!isDisabled"
@@ -402,7 +455,7 @@
402
455
  />
403
456
  <base-panel-input
404
457
  v-model="member.countryOfTaxResidency"
405
- :value="member.countryOfTaxResidency.nameRu"
458
+ :value="member.countryOfTaxResidency?.nameRu"
406
459
  :label="$dataStore.t('form.countryOfTaxResidency')"
407
460
  :readonly="isDisabled"
408
461
  :clearable="!isDisabled"
@@ -414,7 +467,7 @@
414
467
  <base-panel-input
415
468
  v-if="member.countryOfTaxResidency.ids === '500014.3'"
416
469
  v-model="member.addTaxResidency"
417
- :value="member.addTaxResidency.nameRu"
470
+ :value="member.addTaxResidency?.nameRu"
418
471
  :label="$dataStore.t('form.addTaxResidency')"
419
472
  :readonly="isDisabled"
420
473
  :clearable="!isDisabled"
@@ -426,7 +479,7 @@
426
479
  <base-panel-input
427
480
  v-if="hasSignOfIPDL"
428
481
  v-model="member.signOfIPDL"
429
- :value="member.signOfIPDL.nameRu"
482
+ :value="member.signOfIPDL?.nameRu"
430
483
  :label="$dataStore.t('form.signOfIPDL')"
431
484
  :readonly="isDisabled"
432
485
  :clearable="!isDisabled"
@@ -436,7 +489,7 @@
436
489
  />
437
490
  <base-panel-input
438
491
  v-model="member.countryOfCitizenship"
439
- :value="member.countryOfCitizenship.nameRu"
492
+ :value="member.countryOfCitizenship?.nameRu"
440
493
  :label="$dataStore.t('form.countryOfCitizenship')"
441
494
  :readonly="isDisabled"
442
495
  :clearable="!isDisabled"
@@ -446,7 +499,7 @@
446
499
  />
447
500
  <base-panel-input
448
501
  v-model="member.economySectorCode"
449
- :value="member.economySectorCode.nameRu"
502
+ :value="member.economySectorCode?.nameRu"
450
503
  :label="$dataStore.t('form.economySectorCode')"
451
504
  :readonly="isDisabled"
452
505
  :clearable="!isDisabled"
@@ -457,7 +510,7 @@
457
510
  <base-panel-input
458
511
  v-if="hasInsurancePay"
459
512
  v-model="member.insurancePay"
460
- :value="member.insurancePay.nameRu"
513
+ :value="member.insurancePay?.nameRu"
461
514
  :readonly="isDisabled"
462
515
  :clearable="!isDisabled"
463
516
  :rules="$rules.objectRequired"
@@ -474,13 +527,13 @@
474
527
  :label="$dataStore.t('form.homePhone')"
475
528
  :readonly="isDisabled"
476
529
  :clearable="!isDisabled"
477
- :rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
530
+ :rules="whichForm === formStore.beneficiaryFormKey || member.isInsuredUnderage ? [] : $rules.phoneFormat"
478
531
  />
479
- <base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
532
+ <base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.email" />
480
533
  </base-form-section>
481
534
  </v-form>
482
535
  <base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
483
- <Teleport v-if="isPanelOpen" to="#panel-actions">
536
+ <Teleport v-if="isPanelOpen" to="#right-panel-actions">
484
537
  <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
485
538
  <base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
486
539
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
@@ -496,20 +549,20 @@
496
549
  <base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
497
550
  </div>
498
551
  </Teleport>
499
- <Teleport v-if="isSearchOpen" to="#panel-actions">
552
+ <Teleport v-if="isSearchOpen" to="#right-panel-actions">
500
553
  <div :class="[$styles.flexColNav]">
501
554
  <base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
502
555
  <base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
503
556
  <base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
504
557
  </div>
505
558
  </Teleport>
506
- <Teleport v-if="isDocumentOpen" to="#panel-actions">
559
+ <Teleport v-if="isDocumentOpen" to="#right-panel-actions">
507
560
  <div :class="[$styles.flexColNav]">
508
561
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
509
562
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
510
563
  </div>
511
564
  </Teleport>
512
- <Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
565
+ <Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#right-panel-actions">
513
566
  <div :class="[$styles.flexColNav]">
514
567
  <base-fade-transition>
515
568
  <base-rounded-input
@@ -527,7 +580,16 @@
527
580
  <base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
528
581
  </div>
529
582
  </Teleport>
530
- <base-dialog v-model="familyDialog" :title="$dataStore.t('dialog.familyMember')" actions="familyDialog">
583
+ <base-dialog
584
+ v-model="deletionDialog"
585
+ :title="$dataStore.t('dialog.confirmDelete')"
586
+ :subtitle="$dataStore.t('dialog.delete')"
587
+ :confirm="$dataStore.t('confirm.delete')"
588
+ :icon="{ mdi: 'delete-outline', color: '#FD2D39' }"
589
+ @yes="deleteMember"
590
+ @no="deletionDialog = false"
591
+ />
592
+ <base-dialog v-model="familyDialog" :subtitle="$dataStore.t('dialog.familyMember')" :icon="{ mdi: 'hand-pointing-up' }" actions="familyDialog">
531
593
  <template #actions>
532
594
  <base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
533
595
  </template>
@@ -566,6 +628,8 @@ export default {
566
628
  const isPanelLoading = ref<boolean>(false);
567
629
  const isChangingMember = ref<boolean>(false);
568
630
  const familyDialog = ref<boolean>(false);
631
+ const deletionDialog = ref<boolean>(false);
632
+ const selectedIndex = ref<number>(0);
569
633
  const sameAddress = ref<boolean>(false);
570
634
  const panelValue = ref<Value>(new Value());
571
635
  const panelList = ref<Value[]>([]);
@@ -581,7 +645,7 @@ export default {
581
645
  const isFromGBD = computed(() => !!member.value.gosPersonData);
582
646
  const showSaveButton = computed(() => {
583
647
  const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
584
- const perMemberCondtion = () => {
648
+ const perMemberCondition = () => {
585
649
  switch (whichForm.value) {
586
650
  case formStore.policyholderFormKey:
587
651
  return true;
@@ -594,7 +658,7 @@ export default {
594
658
  return false;
595
659
  }
596
660
  };
597
- return generalCondition && perMemberCondtion();
661
+ return generalCondition && perMemberCondition();
598
662
  });
599
663
 
600
664
  const hasGBDFL = computed(() => {
@@ -607,9 +671,17 @@ export default {
607
671
  if (dataStore.isBolashak || dataStore.isGons) {
608
672
  return false;
609
673
  }
674
+ if (member.value.age !== null && Number(member.value.age) < 18) {
675
+ return false;
676
+ }
677
+ return true;
678
+ }
679
+ case formStore.insuredFormKey: {
680
+ if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
681
+ return false;
682
+ }
610
683
  return true;
611
684
  }
612
- case formStore.insuredFormKey:
613
685
  case formStore.beneficialOwnerFormKey:
614
686
  case formStore.policyholdersRepresentativeFormKey:
615
687
  return true;
@@ -640,8 +712,26 @@ export default {
640
712
  };
641
713
  return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
642
714
  });
643
-
715
+ const hasMemberSearch = computed(() => showSaveButton.value && (hasGBDFL.value || hasGKB.value || hasInsis.value));
716
+ const hasMiddleName = computed(() => {
717
+ if (dataStore.isLifetrip) {
718
+ return false;
719
+ }
720
+ return true;
721
+ });
722
+ const hasRelationDegree = computed(() => {
723
+ if (dataStore.isLifetrip) {
724
+ return false;
725
+ }
726
+ if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
727
+ return true;
728
+ }
729
+ return false;
730
+ });
644
731
  const hasFamilyStatus = computed(() => {
732
+ if (dataStore.isLifetrip) {
733
+ return false;
734
+ }
645
735
  if (whichForm.value === formStore.beneficiaryFormKey) {
646
736
  if (dataStore.isBolashak) {
647
737
  return false;
@@ -658,7 +748,7 @@ export default {
658
748
  return false;
659
749
  });
660
750
  const hasSignOfIPDL = computed(() => {
661
- if (dataStore.isGons) {
751
+ if (dataStore.isGons || dataStore.isLifetrip) {
662
752
  return false;
663
753
  }
664
754
  return true;
@@ -667,7 +757,7 @@ export default {
667
757
 
668
758
  const birthDateRule = computed(() => {
669
759
  const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
670
- const byMemverAndProductRule = () => {
760
+ const byMemberAndProductRule = () => {
671
761
  if (whichForm.value === formStore.policyholderFormKey) {
672
762
  if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
673
763
  return dataStore.rules.age18ByDate;
@@ -677,10 +767,13 @@ export default {
677
767
  if (dataStore.isBolashak || dataStore.isBaiterek) {
678
768
  return dataStore.rules.age18ByDate;
679
769
  }
770
+ if (dataStore.isLifetrip) {
771
+ return dataStore.rules.ageExceeds80ByDate;
772
+ }
680
773
  }
681
774
  return [];
682
775
  };
683
- return baseDateRule.concat(byMemverAndProductRule());
776
+ return baseDateRule.concat(byMemberAndProductRule());
684
777
  });
685
778
  const ageRule = computed(() => {
686
779
  const baseAgeRule = dataStore.rules.numbers;
@@ -711,10 +804,13 @@ export default {
711
804
  if (dataStore.isGons || dataStore.isBolashak) {
712
805
  return [];
713
806
  }
714
- if ((dataStore.isKazyna || dataStore.isLiferenta) && member.value.age < 18) {
807
+ if (member.value.age !== null && Number(member.value.age) < 18) {
715
808
  return [];
716
809
  }
717
810
  }
811
+ if (member.value.isInsuredUnderage) {
812
+ return [];
813
+ }
718
814
  return basePhoneRule;
719
815
  });
720
816
 
@@ -725,6 +821,9 @@ export default {
725
821
  return baseResidencyRule.concat(dataStore.rules.noResident);
726
822
  }
727
823
  }
824
+ if (dataStore.isLifetrip) {
825
+ return baseResidencyRule.concat(dataStore.rules.noResidentOffline);
826
+ }
728
827
  return baseResidencyRule;
729
828
  });
730
829
 
@@ -742,6 +841,8 @@ export default {
742
841
  const otpCondition = computed(() => {
743
842
  // Add conditions by product
744
843
  if (member.value.hasAgreement) return false;
844
+ if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
845
+ if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
745
846
  if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
746
847
  return getOtpConditionByMember();
747
848
  });
@@ -749,8 +850,8 @@ export default {
749
850
  const searchMember = async () => {
750
851
  if (!isDisabled.value) {
751
852
  dataStore.panelAction = null;
752
- dataStore.panel.title = 'Поиск контрагента';
753
- dataStore.panel.open = true;
853
+ dataStore.rightPanel.title = 'Поиск контрагента';
854
+ dataStore.rightPanel.open = true;
754
855
  isSearchOpen.value = true;
755
856
  isDocumentOpen.value = false;
756
857
  isOtpPanelOpen.value = false;
@@ -767,20 +868,20 @@ export default {
767
868
  const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
768
869
  dataStore.panelAction = null;
769
870
  if (type === 'document' && memberDocument.value) {
770
- dataStore.panel.title = memberDocument.value.fileTypeName!;
871
+ dataStore.rightPanel.title = memberDocument.value.fileTypeName!;
771
872
  isDocumentOpen.value = true;
772
873
  isSearchOpen.value = false;
773
874
  isPanelOpen.value = false;
774
875
  isOtpPanelOpen.value = false;
775
876
  }
776
877
  if (type === 'otp') {
777
- dataStore.panel.title = dataStore.t('form.otpCode');
878
+ dataStore.rightPanel.title = dataStore.t('form.otpCode');
778
879
  isOtpPanelOpen.value = true;
779
880
  isDocumentOpen.value = false;
780
881
  isSearchOpen.value = false;
781
882
  isPanelOpen.value = false;
782
883
  }
783
- dataStore.panel.open = true;
884
+ dataStore.rightPanel.open = true;
784
885
  };
785
886
 
786
887
  const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
@@ -798,8 +899,8 @@ export default {
798
899
  currentPanel.value = key as keyof typeof member.value;
799
900
  isPanelOpen.value = true;
800
901
  dataStore.panelAction = null;
801
- dataStore.panel.open = true;
802
- dataStore.panel.title = title;
902
+ dataStore.rightPanel.open = true;
903
+ dataStore.rightPanel.title = title;
803
904
 
804
905
  let newList = list;
805
906
  if (asyncFunction) {
@@ -832,7 +933,7 @@ export default {
832
933
 
833
934
  const pickPanelValue = (item: Value) => {
834
935
  if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
835
- dataStore.panel.open = false;
936
+ dataStore.rightPanel.open = false;
836
937
  isPanelOpen.value = false;
837
938
  // @ts-ignore
838
939
  member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
@@ -904,7 +1005,7 @@ export default {
904
1005
  familyDialog.value = false;
905
1006
  selectedFamilyMember.value = {};
906
1007
  isButtonLoading.value = false;
907
- dataStore.panel.open = false;
1008
+ dataStore.rightPanel.open = false;
908
1009
  isSearchOpen.value = false;
909
1010
  };
910
1011
 
@@ -921,20 +1022,20 @@ export default {
921
1022
  }
922
1023
  familyDialog.value = false;
923
1024
  isButtonLoading.value = false;
924
- dataStore.panel.open = false;
1025
+ dataStore.rightPanel.open = false;
925
1026
  isSearchOpen.value = false;
926
1027
  };
927
1028
 
928
1029
  const getContragentFromGBDFL = async () => {
929
1030
  if (member.value.hasAgreement !== true) {
930
1031
  dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
931
- dataStore.panel.open = false;
1032
+ dataStore.rightPanel.open = false;
932
1033
  isSearchOpen.value = false;
933
1034
  return;
934
1035
  }
935
1036
  if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
936
1037
  dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
937
- dataStore.panel.open = false;
1038
+ dataStore.rightPanel.open = false;
938
1039
  isSearchOpen.value = false;
939
1040
  return;
940
1041
  }
@@ -944,7 +1045,7 @@ export default {
944
1045
  if (response === true) {
945
1046
  member.value.gotFromInsis = true;
946
1047
  }
947
- dataStore.panel.open = false;
1048
+ dataStore.rightPanel.open = false;
948
1049
  isSearchOpen.value = false;
949
1050
  }
950
1051
  isButtonLoading.value = false;
@@ -953,20 +1054,20 @@ export default {
953
1054
  const getContragent = async () => {
954
1055
  if (member.value.hasAgreement !== true) {
955
1056
  dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
956
- dataStore.panel.open = false;
1057
+ dataStore.rightPanel.open = false;
957
1058
  isSearchOpen.value = false;
958
1059
  return;
959
1060
  }
960
1061
  if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
961
1062
  dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
962
- dataStore.panel.open = false;
1063
+ dataStore.rightPanel.open = false;
963
1064
  isSearchOpen.value = false;
964
1065
  return;
965
1066
  }
966
1067
  isButtonLoading.value = true;
967
1068
  await dataStore.getContragent(member.value, false);
968
1069
  isButtonLoading.value = false;
969
- dataStore.panel.open = false;
1070
+ dataStore.rightPanel.open = false;
970
1071
  isSearchOpen.value = false;
971
1072
  };
972
1073
 
@@ -1036,14 +1137,17 @@ export default {
1036
1137
  if (!isSaved) return false;
1037
1138
  if (whichForm.value === formStore.policyholderFormKey) {
1038
1139
  if (isInsured === true || remoteIsInsured.value === true) {
1039
- formStore.insuredForm[0] = formStore.policyholderForm;
1040
- const isInsuredSaved = await dataStore.saveMember(
1041
- member.value,
1042
- memberStore.getMemberCode(formStore.insuredFormKey)!,
1043
- memberStore.getMemberFromApplication(formStore.insuredFormKey, formStore.insuredFormIndex),
1044
- );
1045
- if (!isInsuredSaved) return false;
1046
- wasInsuredAction.value = true;
1140
+ const insuredFormIndex = remoteIsInsured.value === true ? 0 : isInsured === true ? formStore.insuredForm.findIndex(i => i.iin === formStore.policyholderForm.iin) : -1;
1141
+ if (insuredFormIndex !== -1) {
1142
+ formStore.insuredForm[insuredFormIndex] = formStore.policyholderForm;
1143
+ const isInsuredSaved = await dataStore.saveMember(
1144
+ member.value,
1145
+ memberStore.getMemberCode(formStore.insuredFormKey)!,
1146
+ memberStore.getMemberFromApplication(formStore.insuredFormKey, insuredFormIndex),
1147
+ );
1148
+ if (!isInsuredSaved) return false;
1149
+ wasInsuredAction.value = true;
1150
+ }
1047
1151
  }
1048
1152
  }
1049
1153
  if (whichForm.value === formStore.insuredFormKey) {
@@ -1056,8 +1160,8 @@ export default {
1056
1160
  await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
1057
1161
  if (dataStore.controls.hasCalculator) {
1058
1162
  if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
1059
- formStore.additionalInsuranceTerms.forEach((term: any) => {
1060
- const defaultTerm = formStore.additionalInsuranceTermsWithout.find((i: any) => i.coverTypeId === term.coverTypeId);
1163
+ formStore.additionalInsuranceTerms.forEach(term => {
1164
+ const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
1061
1165
  if (defaultTerm) {
1062
1166
  term.coverSumName = defaultTerm.coverSumName;
1063
1167
  term.coverSumId = defaultTerm.coverSumId;
@@ -1071,14 +1175,13 @@ export default {
1071
1175
  };
1072
1176
 
1073
1177
  const validateAgreement = () => {
1074
- if (dataStore.isGons || dataStore.isBolashak) {
1075
- if (whichForm.value === formStore.beneficiaryFormKey) {
1076
- // TODO уточнить
1178
+ if (whichForm.value === formStore.beneficiaryFormKey) {
1179
+ if (member.value.age !== null && Number(member.value.age) < 18) {
1077
1180
  return true;
1078
1181
  }
1079
1182
  }
1080
- if (dataStore.isKazyna || dataStore.isLiferenta) {
1081
- if (whichForm.value === formStore.beneficiaryFormKey && member.value.age < 18) {
1183
+ if (whichForm.value === formStore.insuredFormKey) {
1184
+ if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
1082
1185
  return true;
1083
1186
  }
1084
1187
  }
@@ -1096,9 +1199,14 @@ export default {
1096
1199
  if (v.valid) {
1097
1200
  isSubmittingForm.value = true;
1098
1201
  const docType = member.value.documentType.ids;
1099
- if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI')) {
1202
+ if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI' || docType === 'PS')) {
1100
1203
  dataStore.isLoading = true;
1101
- const ESBDResponse = await validateESBD(docType === '1UDL' ? 1 : 3);
1204
+ const docTypeCodes = {
1205
+ '1UDL': 1,
1206
+ PS: 2,
1207
+ SBI: 3,
1208
+ };
1209
+ const ESBDResponse = await validateESBD(docTypeCodes[docType]);
1102
1210
  if (!ESBDResponse) {
1103
1211
  dataStore.isLoading = false;
1104
1212
  return;
@@ -1153,7 +1261,7 @@ export default {
1153
1261
  }
1154
1262
  otpSending.value = false;
1155
1263
  if (checked === true) {
1156
- dataStore.panel.open = false;
1264
+ dataStore.rightPanel.open = false;
1157
1265
  }
1158
1266
  };
1159
1267
 
@@ -1163,7 +1271,7 @@ export default {
1163
1271
  if (response) {
1164
1272
  if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
1165
1273
  if (response.otpStatus === true) {
1166
- dataStore.panel.open = false;
1274
+ dataStore.rightPanel.open = false;
1167
1275
  }
1168
1276
  }
1169
1277
  otpSending.value = false;
@@ -1177,6 +1285,15 @@ export default {
1177
1285
  if (setDefaults.percentage) {
1178
1286
  setPercentage();
1179
1287
  }
1288
+ if (setDefaults.signOfResidency) {
1289
+ setSignOfResidency();
1290
+ }
1291
+ if (setDefaults.countryOfTaxResidency) {
1292
+ setCountryOfTaxResidency();
1293
+ }
1294
+ if (setDefaults.countryOfCitizenship) {
1295
+ setCountryOfCitizenship();
1296
+ }
1180
1297
  };
1181
1298
 
1182
1299
  const setSectorCode = async () => {
@@ -1186,7 +1303,27 @@ export default {
1186
1303
  member.value.economySectorCode = defaultValue ? defaultValue : new Value();
1187
1304
  }
1188
1305
  };
1189
-
1306
+ const setSignOfResidency = async () => {
1307
+ if (member.value.id === 0 && route.query.id === '0') {
1308
+ const residents = await dataStore.getResidents();
1309
+ const defaultValue = residents.find(item => String(item.nameRu).match(new RegExp('Резидент', 'i'))) as Value;
1310
+ member.value.signOfResidency = defaultValue ? defaultValue : new Value();
1311
+ }
1312
+ };
1313
+ const setCountryOfTaxResidency = async () => {
1314
+ if (member.value.id === 0 && route.query.id === '0') {
1315
+ const taxCountries = await dataStore.getTaxCountries();
1316
+ const defaultValue = taxCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
1317
+ member.value.countryOfTaxResidency = defaultValue ? defaultValue : new Value();
1318
+ }
1319
+ };
1320
+ const setCountryOfCitizenship = async () => {
1321
+ if (member.value.id === 0 && route.query.id === '0') {
1322
+ const citizenshipCountries = await dataStore.getCitizenshipCountries();
1323
+ const defaultValue = citizenshipCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
1324
+ member.value.countryOfCitizenship = defaultValue ? defaultValue : new Value();
1325
+ }
1326
+ };
1190
1327
  const setPercentage = () => {
1191
1328
  if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
1192
1329
  if (dataStore.members.beneficiaryApp.isMultiple) {
@@ -1203,7 +1340,7 @@ export default {
1203
1340
  };
1204
1341
 
1205
1342
  const selectMember = async (index: number, update?: boolean) => {
1206
- dataStore.panel.open = false;
1343
+ dataStore.rightPanel.open = false;
1207
1344
  isButtonLoading.value = true;
1208
1345
  isChangingMember.value = true;
1209
1346
  //@ts-ignore
@@ -1212,13 +1349,19 @@ export default {
1212
1349
  isButtonLoading.value = false;
1213
1350
  };
1214
1351
 
1215
- const deleteMember = async (index: number) => {
1216
- await memberStore.deleteMember(route.params.taskId as string, whichForm.value, index);
1352
+ const openDeletionDialog = (index: number) => {
1353
+ deletionDialog.value = true;
1354
+ selectedIndex.value = index;
1355
+ };
1356
+
1357
+ const deleteMember = async () => {
1358
+ await memberStore.deleteMember(route.params.taskId as string, whichForm.value, selectedIndex.value);
1217
1359
  const currentIndex = Number(whichIndex.value);
1218
- if (index <= currentIndex) {
1360
+ if (selectedIndex.value <= currentIndex) {
1219
1361
  const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
1220
- await selectMember(newIndex.value, index === currentIndex ? true : undefined);
1362
+ await selectMember(newIndex.value, selectedIndex.value === currentIndex ? true : undefined);
1221
1363
  }
1364
+ deletionDialog.value = false;
1222
1365
  };
1223
1366
 
1224
1367
  const onInit = async () => {
@@ -1302,9 +1445,9 @@ export default {
1302
1445
  };
1303
1446
 
1304
1447
  watch(
1305
- () => dataStore.panel.open,
1448
+ () => dataStore.rightPanel.open,
1306
1449
  () => {
1307
- if (dataStore.panel.open === false) {
1450
+ if (dataStore.rightPanel.open === false) {
1308
1451
  isPanelOpen.value = false;
1309
1452
  isDocumentOpen.value = false;
1310
1453
  isSearchOpen.value = false;
@@ -1320,6 +1463,30 @@ export default {
1320
1463
  searchQuery.value = '';
1321
1464
  }
1322
1465
  });
1466
+ if (dataStore.isLifetrip) {
1467
+ watch(
1468
+ () => member.value.age,
1469
+ val => {
1470
+ if (val && Number(val) >= 18) {
1471
+ if (member.value.hasAgreement !== true) {
1472
+ member.value.hasAgreement = false;
1473
+ }
1474
+ } else {
1475
+ member.value.hasAgreement = true;
1476
+ }
1477
+ member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
1478
+ },
1479
+ );
1480
+ watch(
1481
+ () => member.value.isInsuredUnderage,
1482
+ val => {
1483
+ if (val === true && Number(member.value.age) >= 18) {
1484
+ member.value.isInsuredUnderage = false;
1485
+ return dataStore.showToaster('error', dataStore.t('toaster.underageShouldBeLess18'), 3000);
1486
+ }
1487
+ },
1488
+ );
1489
+ }
1323
1490
 
1324
1491
  return {
1325
1492
  // State
@@ -1342,6 +1509,8 @@ export default {
1342
1509
  Value,
1343
1510
  memberDocument,
1344
1511
  familyDialog,
1512
+ deletionDialog,
1513
+ selectedIndex,
1345
1514
  selectedFamilyMember,
1346
1515
  sameAddress,
1347
1516
 
@@ -1359,10 +1528,13 @@ export default {
1359
1528
  hasGBDFL,
1360
1529
  hasInsis,
1361
1530
  hasGKB,
1531
+ hasMiddleName,
1532
+ hasRelationDegree,
1362
1533
  hasFamilyStatus,
1363
1534
  hasInsurancePay,
1364
1535
  hasSignOfIPDL,
1365
1536
  hasSameAddressToggle,
1537
+ hasMemberSearch,
1366
1538
 
1367
1539
  // Rules
1368
1540
  ageRule,
@@ -1385,6 +1557,7 @@ export default {
1385
1557
  getFile,
1386
1558
  selectFamilyMember,
1387
1559
  closeFamilyDialog,
1560
+ openDeletionDialog,
1388
1561
  scrollForm,
1389
1562
  onIinInput,
1390
1563
  onOtpCodeInput,