hl-core 0.0.9-beta.3 → 0.0.9-beta.31

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 (72) hide show
  1. package/api/base.api.ts +862 -0
  2. package/api/index.ts +2 -620
  3. package/api/interceptors.ts +58 -14
  4. package/components/Button/Btn.vue +3 -3
  5. package/components/Complex/ContentBlock.vue +1 -1
  6. package/components/Complex/MessageBlock.vue +2 -2
  7. package/components/Complex/Page.vue +8 -2
  8. package/components/Complex/WhiteBlock.vue +7 -0
  9. package/components/Dialog/Dialog.vue +60 -15
  10. package/components/Dialog/FamilyDialog.vue +5 -5
  11. package/components/Form/DynamicForm.vue +99 -0
  12. package/components/Form/FormBlock.vue +36 -29
  13. package/components/Form/FormData.vue +48 -0
  14. package/components/Form/FormSection.vue +2 -2
  15. package/components/Form/FormTextSection.vue +3 -3
  16. package/components/Form/FormToggle.vue +3 -3
  17. package/components/Form/ManagerAttachment.vue +104 -52
  18. package/components/Form/ProductConditionsBlock.vue +73 -20
  19. package/components/Input/DynamicInput.vue +23 -0
  20. package/components/Input/EmptyFormField.vue +1 -1
  21. package/components/Input/FileInput.vue +15 -4
  22. package/components/Input/Monthpicker.vue +33 -0
  23. package/components/Input/PanelInput.vue +5 -1
  24. package/components/Input/RoundedEmptyField.vue +5 -0
  25. package/components/Input/RoundedSelect.vue +13 -0
  26. package/components/Input/SwitchInput.vue +64 -0
  27. package/components/Input/TextInput.vue +161 -0
  28. package/components/Layout/Drawer.vue +17 -4
  29. package/components/Layout/Header.vue +2 -2
  30. package/components/Layout/SettingsPanel.vue +10 -15
  31. package/components/List/ListEmpty.vue +1 -1
  32. package/components/Menu/MenuHover.vue +1 -1
  33. package/components/Menu/MenuNav.vue +3 -3
  34. package/components/Menu/MenuNavItem.vue +4 -4
  35. package/components/Pages/Anketa.vue +144 -65
  36. package/components/Pages/Auth.vue +21 -10
  37. package/components/Pages/ContragentForm.vue +505 -0
  38. package/components/Pages/Documents.vue +57 -11
  39. package/components/Pages/InvoiceInfo.vue +2 -2
  40. package/components/Pages/MemberForm.vue +253 -89
  41. package/components/Pages/ProductAgreement.vue +2 -11
  42. package/components/Pages/ProductConditions.vue +777 -164
  43. package/components/Panel/PanelHandler.vue +297 -54
  44. package/components/Panel/PanelSelectItem.vue +18 -3
  45. package/components/Panel/RightPanelCloser.vue +7 -0
  46. package/components/Utilities/IconBorder.vue +17 -0
  47. package/composables/axios.ts +1 -1
  48. package/composables/classes.ts +405 -9
  49. package/composables/constants.ts +40 -0
  50. package/composables/fields.ts +203 -0
  51. package/composables/index.ts +48 -0
  52. package/composables/styles.ts +22 -10
  53. package/configs/i18n.ts +0 -2
  54. package/layouts/default.vue +46 -4
  55. package/layouts/full.vue +1 -1
  56. package/locales/ru.json +428 -11
  57. package/nuxt.config.ts +1 -1
  58. package/package.json +30 -39
  59. package/pages/500.vue +2 -2
  60. package/pages/Token.vue +1 -0
  61. package/plugins/helperFunctionsPlugins.ts +6 -7
  62. package/plugins/vuetifyPlugin.ts +2 -0
  63. package/store/data.store.ts +936 -217
  64. package/store/extractStore.ts +17 -0
  65. package/store/form.store.ts +13 -1
  66. package/store/member.store.ts +1 -1
  67. package/store/rules.ts +38 -2
  68. package/types/enum.ts +8 -0
  69. package/types/form.ts +94 -0
  70. package/types/index.ts +162 -10
  71. package/components/Button/BtnIcon.vue +0 -47
  72. package/locales/kz.json +0 -590
@@ -1,13 +1,13 @@
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">
3
+ <v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[80svh] 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}` }}
@@ -17,7 +17,7 @@
17
17
  :disabled="!memberStore.canMemberDeleted(whichForm, index) && !memberStore.canMemberCleared(whichForm, index)"
18
18
  variant="plain"
19
19
  :color="Number(whichIndex) === index ? '#FFF' : '#A0B3D8'"
20
- @click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? deleteMember(index) : null"
20
+ @click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? openDeletionDialog(index) : null"
21
21
  />
22
22
  </div>
23
23
  </div>
@@ -27,6 +27,23 @@
27
27
  :title="$dataStore.t('form.personalData')"
28
28
  :class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
29
29
  >
30
+ <base-panel-input
31
+ v-if="$dataStore.isLifetrip"
32
+ v-model="member.signOfResidency"
33
+ :value="member.signOfResidency?.nameRu"
34
+ :label="$dataStore.t('form.signOfResidency')"
35
+ :readonly="isDisabled"
36
+ :clearable="!isDisabled"
37
+ :rules="residencyRule"
38
+ append-inner-icon="mdi mdi-chevron-right"
39
+ @append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
40
+ />
41
+ <base-form-toggle
42
+ v-if="$dataStore.isLifetrip && whichForm === 'insuredForm'"
43
+ v-model="member.isInsuredUnderage"
44
+ :title="$dataStore.t('isInsuredUnderage')"
45
+ :has-border="false"
46
+ />
30
47
  <base-form-input
31
48
  v-model="member.phoneNumber"
32
49
  :label="$dataStore.t('form.phoneNumber')"
@@ -44,7 +61,7 @@
44
61
  :maska="$maska.iin"
45
62
  :readonly="!!isDisabled || !!isIinPhoneDisabled"
46
63
  :clearable="!isDisabled"
47
- :append-inner-icon="showSaveButton ? 'mdi mdi-magnify' : ''"
64
+ :append-inner-icon="hasMemberSearch ? 'mdi mdi-magnify' : ''"
48
65
  @append="searchMember"
49
66
  @input="onIinInput"
50
67
  :rules="$rules.required.concat($rules.iinRight)"
@@ -64,12 +81,31 @@
64
81
  :rules="$rules.required.concat($rules.cyrillic)"
65
82
  />
66
83
  <base-form-input
84
+ v-if="hasMiddleName"
67
85
  v-model.trim="member.middleName"
68
86
  :readonly="isDisabled || isFromGBD"
69
87
  :clearable="!isDisabled"
70
88
  :label="$dataStore.t('form.middleName')"
71
89
  :rules="$rules.cyrillicNonRequired"
72
90
  />
91
+ <base-form-input
92
+ v-if="$dataStore.isLifetrip"
93
+ v-model.trim="member.lastNameLat"
94
+ :readonly="isDisabled || isFromGBD"
95
+ :clearable="!isDisabled"
96
+ :label="$dataStore.t('form.lastNameLat')"
97
+ :rules="$rules.required.concat($rules.latin)"
98
+ :hint="$dataStore.t('labels.checkWithDoc')"
99
+ />
100
+ <base-form-input
101
+ v-if="$dataStore.isLifetrip"
102
+ v-model.trim="member.firstNameLat"
103
+ :readonly="isDisabled || isFromGBD"
104
+ :clearable="!isDisabled"
105
+ :label="$dataStore.t('form.firstNameLat')"
106
+ :rules="$rules.required.concat($rules.latin)"
107
+ :hint="$dataStore.t('labels.checkWithDoc')"
108
+ />
73
109
  <base-form-input
74
110
  v-model="member.birthDate"
75
111
  :readonly="isDisabled || isFromGBD"
@@ -82,9 +118,9 @@
82
118
  <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
83
119
  <base-panel-input
84
120
  v-model="member.gender"
85
- :value="member.gender.nameRu"
121
+ :value="member.gender?.nameRu"
86
122
  :readonly="isDisabled || isFromGBD"
87
- :clearable="!isDisabled"
123
+ :clearable="!isDisabled && !isFromGBD"
88
124
  :label="$dataStore.t('form.gender')"
89
125
  :rules="$rules.objectRequired"
90
126
  append-inner-icon="mdi mdi-chevron-right"
@@ -93,7 +129,7 @@
93
129
  <base-panel-input
94
130
  v-if="hasFamilyStatus"
95
131
  v-model="member.familyStatus"
96
- :value="member.familyStatus.nameRu"
132
+ :value="member.familyStatus?.nameRu"
97
133
  :readonly="isDisabled"
98
134
  :clearable="!isDisabled"
99
135
  :label="$dataStore.t('form.familyStatus')"
@@ -102,9 +138,9 @@
102
138
  @append="openPanel($dataStore.t('form.familyStatus'), [], 'familyStatus', $dataStore.getFamilyStatuses)"
103
139
  />
104
140
  <base-panel-input
105
- v-if="(whichForm === formStore.beneficiaryFormKey || whichForm === formStore.insuredFormKey) && member.iin !== formStore.policyholderForm.iin"
141
+ v-if="hasRelationDegree"
106
142
  v-model="member.relationDegree"
107
- :value="member.relationDegree.nameRu"
143
+ :value="member.relationDegree?.nameRu"
108
144
  :readonly="isDisabled"
109
145
  :clearable="!isDisabled"
110
146
  :label="$dataStore.t('form.relations')"
@@ -231,7 +267,7 @@
231
267
  append-inner-icon="mdi mdi-calendar-blank-outline"
232
268
  />
233
269
  </base-form-section>
234
- <base-form-section :title="$dataStore.t('form.jobData')" v-if="$dataStore.hasJobSection(whichForm)">
270
+ <base-form-section v-if="$dataStore.hasJobSection(whichForm)" :title="$dataStore.t('form.jobData')">
235
271
  <base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
236
272
  <base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
237
273
  <base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
@@ -240,11 +276,11 @@
240
276
  <base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
241
277
  <base-panel-input
242
278
  v-model="member.registrationCountry"
243
- :value="member.registrationCountry.nameRu"
279
+ :value="member.registrationCountry?.nameRu"
244
280
  :readonly="isDisabled"
245
281
  :clearable="!isDisabled"
246
282
  :label="$dataStore.t('form.Country')"
247
- :rules="$rules.objectRequired"
283
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
248
284
  append-inner-icon="mdi mdi-chevron-right"
249
285
  @append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
250
286
  />
@@ -252,42 +288,42 @@
252
288
  <div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
253
289
  <base-panel-input
254
290
  v-model="member.registrationProvince"
255
- :value="member.registrationProvince.nameRu"
291
+ :value="member.registrationProvince?.nameRu"
256
292
  :label="$dataStore.t('form.Province')"
257
293
  :readonly="isDisabled"
258
294
  :clearable="!isDisabled"
259
- :rules="$rules.objectRequired"
295
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
260
296
  append-inner-icon="mdi mdi-chevron-right"
261
297
  @append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
262
298
  />
263
299
  <base-panel-input
264
300
  v-model="member.registrationRegionType"
265
- :value="member.registrationRegionType.nameRu"
301
+ :value="member.registrationRegionType?.nameRu"
266
302
  :label="$dataStore.t('form.RegionType')"
267
303
  :readonly="isDisabled"
268
304
  :clearable="!isDisabled"
269
- :rules="$rules.objectRequired"
305
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
270
306
  append-inner-icon="mdi mdi-chevron-right"
271
307
  @append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
272
308
  />
273
309
  <base-panel-input
274
310
  v-if="member.registrationRegionType.nameRu !== 'город'"
275
311
  v-model="member.registrationRegion"
276
- :value="member.registrationRegion.nameRu"
312
+ :value="member.registrationRegion?.nameRu"
277
313
  :label="$dataStore.t('form.Region')"
278
314
  :readonly="isDisabled"
279
315
  :clearable="!isDisabled"
280
- :rules="$rules.objectRequired"
316
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
281
317
  append-inner-icon="mdi mdi-chevron-right"
282
318
  @append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
283
319
  />
284
320
  <base-panel-input
285
321
  v-model="member.registrationCity"
286
- :value="member.registrationCity.nameRu"
322
+ :value="member.registrationCity?.nameRu"
287
323
  :label="$dataStore.t('form.City')"
288
324
  :readonly="isDisabled"
289
325
  :clearable="!isDisabled"
290
- :rules="$rules.objectRequired"
326
+ :rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
291
327
  append-inner-icon="mdi mdi-chevron-right"
292
328
  @append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
293
329
  />
@@ -297,14 +333,14 @@
297
333
  <base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.MicroDistrict')" />
298
334
  <base-form-input
299
335
  v-model.trim="member.registrationStreet"
300
- :rules="$rules.required"
336
+ :rules="member.isInsuredUnderage ? [] : $rules.required"
301
337
  :readonly="isDisabled"
302
338
  :clearable="!isDisabled"
303
339
  :label="$dataStore.t('form.Street')"
304
340
  />
305
341
  <base-form-input
306
342
  v-model.trim="member.registrationNumberHouse"
307
- :rules="$rules.required"
343
+ :rules="member.isInsuredUnderage ? [] : $rules.required"
308
344
  :readonly="isDisabled"
309
345
  :clearable="!isDisabled"
310
346
  :label="$dataStore.t('form.NumberHouse')"
@@ -316,7 +352,7 @@
316
352
  <base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
317
353
  <base-panel-input
318
354
  v-model="member.birthPlace"
319
- :value="member.birthPlace.nameRu"
355
+ :value="member.birthPlace?.nameRu"
320
356
  :label="$dataStore.t('form.Country')"
321
357
  :readonly="isDisabled"
322
358
  :clearable="!isDisabled"
@@ -327,7 +363,7 @@
327
363
  <!-- TODO -->
328
364
  <!-- <base-panel-input
329
365
  v-model="member.birthRegion"
330
- :value="member.birthRegion.nameRu"
366
+ :value="member.birthRegion?.nameRu"
331
367
  :label="$dataStore.t('form.Region')"
332
368
  :readonly="isDisabled"
333
369
  :clearable="!isDisabled"
@@ -339,7 +375,7 @@
339
375
  <base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
340
376
  <base-panel-input
341
377
  v-model="member.documentType"
342
- :value="member.documentType.nameRu"
378
+ :value="member.documentType?.nameRu"
343
379
  :label="$dataStore.t('form.documentType')"
344
380
  :readonly="isDisabled"
345
381
  :clearable="!isDisabled"
@@ -361,7 +397,7 @@
361
397
  </base-empty-form-field> -->
362
398
  <base-panel-input
363
399
  v-model="member.documentIssuers"
364
- :value="member.documentIssuers.nameRu"
400
+ :value="member.documentIssuers?.nameRu"
365
401
  :label="$dataStore.t('form.documentIssuers')"
366
402
  :readonly="isDisabled"
367
403
  :clearable="!isDisabled"
@@ -391,8 +427,9 @@
391
427
  />
392
428
  </base-fade-transition>
393
429
  <base-panel-input
430
+ v-if="!$dataStore.isLifetrip"
394
431
  v-model="member.signOfResidency"
395
- :value="member.signOfResidency.nameRu"
432
+ :value="member.signOfResidency?.nameRu"
396
433
  :label="$dataStore.t('form.signOfResidency')"
397
434
  :readonly="isDisabled"
398
435
  :clearable="!isDisabled"
@@ -402,7 +439,7 @@
402
439
  />
403
440
  <base-panel-input
404
441
  v-model="member.countryOfTaxResidency"
405
- :value="member.countryOfTaxResidency.nameRu"
442
+ :value="member.countryOfTaxResidency?.nameRu"
406
443
  :label="$dataStore.t('form.countryOfTaxResidency')"
407
444
  :readonly="isDisabled"
408
445
  :clearable="!isDisabled"
@@ -414,7 +451,7 @@
414
451
  <base-panel-input
415
452
  v-if="member.countryOfTaxResidency.ids === '500014.3'"
416
453
  v-model="member.addTaxResidency"
417
- :value="member.addTaxResidency.nameRu"
454
+ :value="member.addTaxResidency?.nameRu"
418
455
  :label="$dataStore.t('form.addTaxResidency')"
419
456
  :readonly="isDisabled"
420
457
  :clearable="!isDisabled"
@@ -426,7 +463,7 @@
426
463
  <base-panel-input
427
464
  v-if="hasSignOfIPDL"
428
465
  v-model="member.signOfIPDL"
429
- :value="member.signOfIPDL.nameRu"
466
+ :value="member.signOfIPDL?.nameRu"
430
467
  :label="$dataStore.t('form.signOfIPDL')"
431
468
  :readonly="isDisabled"
432
469
  :clearable="!isDisabled"
@@ -436,7 +473,7 @@
436
473
  />
437
474
  <base-panel-input
438
475
  v-model="member.countryOfCitizenship"
439
- :value="member.countryOfCitizenship.nameRu"
476
+ :value="member.countryOfCitizenship?.nameRu"
440
477
  :label="$dataStore.t('form.countryOfCitizenship')"
441
478
  :readonly="isDisabled"
442
479
  :clearable="!isDisabled"
@@ -446,7 +483,7 @@
446
483
  />
447
484
  <base-panel-input
448
485
  v-model="member.economySectorCode"
449
- :value="member.economySectorCode.nameRu"
486
+ :value="member.economySectorCode?.nameRu"
450
487
  :label="$dataStore.t('form.economySectorCode')"
451
488
  :readonly="isDisabled"
452
489
  :clearable="!isDisabled"
@@ -457,7 +494,7 @@
457
494
  <base-panel-input
458
495
  v-if="hasInsurancePay"
459
496
  v-model="member.insurancePay"
460
- :value="member.insurancePay.nameRu"
497
+ :value="member.insurancePay?.nameRu"
461
498
  :readonly="isDisabled"
462
499
  :clearable="!isDisabled"
463
500
  :rules="$rules.objectRequired"
@@ -474,14 +511,14 @@
474
511
  :label="$dataStore.t('form.homePhone')"
475
512
  :readonly="isDisabled"
476
513
  :clearable="!isDisabled"
477
- :rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
514
+ :rules="whichForm === formStore.beneficiaryFormKey || member.isInsuredUnderage ? [] : $rules.phoneFormat"
478
515
  />
479
516
  <base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
480
517
  </base-form-section>
481
518
  </v-form>
482
519
  <base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
483
- <Teleport v-if="isPanelOpen" to="#panel-actions">
484
- <div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
520
+ <Teleport v-if="isPanelOpen" to="#right-panel-actions">
521
+ <div :class="[$styles.scrollPage]" class="flex flex-col items-center">
485
522
  <base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
486
523
  <div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
487
524
  <base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
@@ -496,21 +533,21 @@
496
533
  <base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
497
534
  </div>
498
535
  </Teleport>
499
- <Teleport v-if="isSearchOpen" to="#panel-actions">
500
- <div :class="[$libStyles.flexColNav]">
536
+ <Teleport v-if="isSearchOpen" to="#right-panel-actions">
537
+ <div :class="[$styles.flexColNav]">
501
538
  <base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
502
539
  <base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
503
540
  <base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
504
541
  </div>
505
542
  </Teleport>
506
- <Teleport v-if="isDocumentOpen" to="#panel-actions">
507
- <div :class="[$libStyles.flexColNav]">
543
+ <Teleport v-if="isDocumentOpen" to="#right-panel-actions">
544
+ <div :class="[$styles.flexColNav]">
508
545
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
509
546
  <base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
510
547
  </div>
511
548
  </Teleport>
512
- <Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
513
- <div :class="[$libStyles.flexColNav]">
549
+ <Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#right-panel-actions">
550
+ <div :class="[$styles.flexColNav]">
514
551
  <base-fade-transition>
515
552
  <base-rounded-input
516
553
  v-if="otpCondition && member.otpTokenId"
@@ -527,7 +564,16 @@
527
564
  <base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
528
565
  </div>
529
566
  </Teleport>
530
- <base-dialog v-model="familyDialog" :title="$dataStore.t('dialog.familyMember')" actions="familyDialog">
567
+ <base-dialog
568
+ v-model="deletionDialog"
569
+ :title="$dataStore.t('dialog.confirmDelete')"
570
+ :subtitle="$dataStore.t('dialog.delete')"
571
+ :confirm="$dataStore.t('confirm.delete')"
572
+ :icon="{ mdi: 'delete-outline', color: '#FD2D39' }"
573
+ @yes="deleteMember"
574
+ @no="deletionDialog = false"
575
+ />
576
+ <base-dialog v-model="familyDialog" :subtitle="$dataStore.t('dialog.familyMember')" :icon="{ mdi: 'hand-pointing-up' }" actions="familyDialog">
531
577
  <template #actions>
532
578
  <base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
533
579
  </template>
@@ -566,6 +612,8 @@ export default {
566
612
  const isPanelLoading = ref<boolean>(false);
567
613
  const isChangingMember = ref<boolean>(false);
568
614
  const familyDialog = ref<boolean>(false);
615
+ const deletionDialog = ref<boolean>(false);
616
+ const selectedIndex = ref<number>(0);
569
617
  const sameAddress = ref<boolean>(false);
570
618
  const panelValue = ref<Value>(new Value());
571
619
  const panelList = ref<Value[]>([]);
@@ -581,7 +629,7 @@ export default {
581
629
  const isFromGBD = computed(() => !!member.value.gosPersonData);
582
630
  const showSaveButton = computed(() => {
583
631
  const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
584
- const perMemberCondtion = () => {
632
+ const perMemberCondition = () => {
585
633
  switch (whichForm.value) {
586
634
  case formStore.policyholderFormKey:
587
635
  return true;
@@ -594,7 +642,7 @@ export default {
594
642
  return false;
595
643
  }
596
644
  };
597
- return generalCondition && perMemberCondtion();
645
+ return generalCondition && perMemberCondition();
598
646
  });
599
647
 
600
648
  const hasGBDFL = computed(() => {
@@ -607,10 +655,17 @@ export default {
607
655
  if (dataStore.isBolashak || dataStore.isGons) {
608
656
  return false;
609
657
  }
658
+ if (member.value.age !== null && Number(member.value.age) < 18) {
659
+ return false;
660
+ }
661
+ return true;
662
+ }
663
+ case formStore.insuredFormKey: {
664
+ if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
665
+ return false;
666
+ }
610
667
  return true;
611
668
  }
612
- case formStore.insuredFormKey:
613
- case formStore.beneficiaryFormKey:
614
669
  case formStore.beneficialOwnerFormKey:
615
670
  case formStore.policyholdersRepresentativeFormKey:
616
671
  return true;
@@ -641,8 +696,26 @@ export default {
641
696
  };
642
697
  return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
643
698
  });
644
-
699
+ const hasMemberSearch = computed(() => showSaveButton.value && (hasGBDFL.value || hasGKB.value || hasInsis.value));
700
+ const hasMiddleName = computed(() => {
701
+ if (dataStore.isLifetrip) {
702
+ return false;
703
+ }
704
+ return true;
705
+ });
706
+ const hasRelationDegree = computed(() => {
707
+ if (dataStore.isLifetrip) {
708
+ return false;
709
+ }
710
+ if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
711
+ return true;
712
+ }
713
+ return false;
714
+ });
645
715
  const hasFamilyStatus = computed(() => {
716
+ if (dataStore.isLifetrip) {
717
+ return false;
718
+ }
646
719
  if (whichForm.value === formStore.beneficiaryFormKey) {
647
720
  if (dataStore.isBolashak) {
648
721
  return false;
@@ -659,7 +732,7 @@ export default {
659
732
  return false;
660
733
  });
661
734
  const hasSignOfIPDL = computed(() => {
662
- if (dataStore.isGons) {
735
+ if (dataStore.isGons || dataStore.isLifetrip) {
663
736
  return false;
664
737
  }
665
738
  return true;
@@ -668,7 +741,7 @@ export default {
668
741
 
669
742
  const birthDateRule = computed(() => {
670
743
  const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
671
- const byMemverAndProductRule = () => {
744
+ const byMemberAndProductRule = () => {
672
745
  if (whichForm.value === formStore.policyholderFormKey) {
673
746
  if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
674
747
  return dataStore.rules.age18ByDate;
@@ -678,10 +751,13 @@ export default {
678
751
  if (dataStore.isBolashak || dataStore.isBaiterek) {
679
752
  return dataStore.rules.age18ByDate;
680
753
  }
754
+ if (dataStore.isLifetrip) {
755
+ return dataStore.rules.ageExceeds80ByDate;
756
+ }
681
757
  }
682
758
  return [];
683
759
  };
684
- return baseDateRule.concat(byMemverAndProductRule());
760
+ return baseDateRule.concat(byMemberAndProductRule());
685
761
  });
686
762
  const ageRule = computed(() => {
687
763
  const baseAgeRule = dataStore.rules.numbers;
@@ -712,6 +788,12 @@ export default {
712
788
  if (dataStore.isGons || dataStore.isBolashak) {
713
789
  return [];
714
790
  }
791
+ if (member.value.age !== null && Number(member.value.age) < 18) {
792
+ return [];
793
+ }
794
+ }
795
+ if (member.value.isInsuredUnderage) {
796
+ return [];
715
797
  }
716
798
  return basePhoneRule;
717
799
  });
@@ -723,6 +805,9 @@ export default {
723
805
  return baseResidencyRule.concat(dataStore.rules.noResident);
724
806
  }
725
807
  }
808
+ if (dataStore.isLifetrip) {
809
+ return baseResidencyRule.concat(dataStore.rules.noResidentOffline);
810
+ }
726
811
  return baseResidencyRule;
727
812
  });
728
813
 
@@ -740,6 +825,8 @@ export default {
740
825
  const otpCondition = computed(() => {
741
826
  // Add conditions by product
742
827
  if (member.value.hasAgreement) return false;
828
+ if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
829
+ if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
743
830
  if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
744
831
  return getOtpConditionByMember();
745
832
  });
@@ -747,8 +834,8 @@ export default {
747
834
  const searchMember = async () => {
748
835
  if (!isDisabled.value) {
749
836
  dataStore.panelAction = null;
750
- dataStore.panel.title = 'Поиск контрагента';
751
- dataStore.panel.open = true;
837
+ dataStore.rightPanel.title = 'Поиск контрагента';
838
+ dataStore.rightPanel.open = true;
752
839
  isSearchOpen.value = true;
753
840
  isDocumentOpen.value = false;
754
841
  isOtpPanelOpen.value = false;
@@ -765,20 +852,20 @@ export default {
765
852
  const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
766
853
  dataStore.panelAction = null;
767
854
  if (type === 'document' && memberDocument.value) {
768
- dataStore.panel.title = memberDocument.value.fileTypeName!;
855
+ dataStore.rightPanel.title = memberDocument.value.fileTypeName!;
769
856
  isDocumentOpen.value = true;
770
857
  isSearchOpen.value = false;
771
858
  isPanelOpen.value = false;
772
859
  isOtpPanelOpen.value = false;
773
860
  }
774
861
  if (type === 'otp') {
775
- dataStore.panel.title = dataStore.t('form.otpCode');
862
+ dataStore.rightPanel.title = dataStore.t('form.otpCode');
776
863
  isOtpPanelOpen.value = true;
777
864
  isDocumentOpen.value = false;
778
865
  isSearchOpen.value = false;
779
866
  isPanelOpen.value = false;
780
867
  }
781
- dataStore.panel.open = true;
868
+ dataStore.rightPanel.open = true;
782
869
  };
783
870
 
784
871
  const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
@@ -796,8 +883,8 @@ export default {
796
883
  currentPanel.value = key as keyof typeof member.value;
797
884
  isPanelOpen.value = true;
798
885
  dataStore.panelAction = null;
799
- dataStore.panel.open = true;
800
- dataStore.panel.title = title;
886
+ dataStore.rightPanel.open = true;
887
+ dataStore.rightPanel.title = title;
801
888
 
802
889
  let newList = list;
803
890
  if (asyncFunction) {
@@ -830,7 +917,7 @@ export default {
830
917
 
831
918
  const pickPanelValue = (item: Value) => {
832
919
  if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
833
- dataStore.panel.open = false;
920
+ dataStore.rightPanel.open = false;
834
921
  isPanelOpen.value = false;
835
922
  // @ts-ignore
836
923
  member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
@@ -902,7 +989,7 @@ export default {
902
989
  familyDialog.value = false;
903
990
  selectedFamilyMember.value = {};
904
991
  isButtonLoading.value = false;
905
- dataStore.panel.open = false;
992
+ dataStore.rightPanel.open = false;
906
993
  isSearchOpen.value = false;
907
994
  };
908
995
 
@@ -919,20 +1006,20 @@ export default {
919
1006
  }
920
1007
  familyDialog.value = false;
921
1008
  isButtonLoading.value = false;
922
- dataStore.panel.open = false;
1009
+ dataStore.rightPanel.open = false;
923
1010
  isSearchOpen.value = false;
924
1011
  };
925
1012
 
926
1013
  const getContragentFromGBDFL = async () => {
927
1014
  if (member.value.hasAgreement !== true) {
928
1015
  dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
929
- dataStore.panel.open = false;
1016
+ dataStore.rightPanel.open = false;
930
1017
  isSearchOpen.value = false;
931
1018
  return;
932
1019
  }
933
1020
  if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
934
1021
  dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
935
- dataStore.panel.open = false;
1022
+ dataStore.rightPanel.open = false;
936
1023
  isSearchOpen.value = false;
937
1024
  return;
938
1025
  }
@@ -942,7 +1029,7 @@ export default {
942
1029
  if (response === true) {
943
1030
  member.value.gotFromInsis = true;
944
1031
  }
945
- dataStore.panel.open = false;
1032
+ dataStore.rightPanel.open = false;
946
1033
  isSearchOpen.value = false;
947
1034
  }
948
1035
  isButtonLoading.value = false;
@@ -951,20 +1038,20 @@ export default {
951
1038
  const getContragent = async () => {
952
1039
  if (member.value.hasAgreement !== true) {
953
1040
  dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
954
- dataStore.panel.open = false;
1041
+ dataStore.rightPanel.open = false;
955
1042
  isSearchOpen.value = false;
956
1043
  return;
957
1044
  }
958
1045
  if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
959
1046
  dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
960
- dataStore.panel.open = false;
1047
+ dataStore.rightPanel.open = false;
961
1048
  isSearchOpen.value = false;
962
1049
  return;
963
1050
  }
964
1051
  isButtonLoading.value = true;
965
1052
  await dataStore.getContragent(member.value, false);
966
1053
  isButtonLoading.value = false;
967
- dataStore.panel.open = false;
1054
+ dataStore.rightPanel.open = false;
968
1055
  isSearchOpen.value = false;
969
1056
  };
970
1057
 
@@ -1034,14 +1121,17 @@ export default {
1034
1121
  if (!isSaved) return false;
1035
1122
  if (whichForm.value === formStore.policyholderFormKey) {
1036
1123
  if (isInsured === true || remoteIsInsured.value === true) {
1037
- formStore.insuredForm[0] = formStore.policyholderForm;
1038
- const isInsuredSaved = await dataStore.saveMember(
1039
- member.value,
1040
- memberStore.getMemberCode(formStore.insuredFormKey)!,
1041
- memberStore.getMemberFromApplication(formStore.insuredFormKey, formStore.insuredFormIndex),
1042
- );
1043
- if (!isInsuredSaved) return false;
1044
- wasInsuredAction.value = true;
1124
+ const insuredFormIndex = remoteIsInsured.value === true ? 0 : isInsured === true ? formStore.insuredForm.findIndex(i => i.iin === formStore.policyholderForm.iin) : -1;
1125
+ if (insuredFormIndex !== -1) {
1126
+ formStore.insuredForm[insuredFormIndex] = formStore.policyholderForm;
1127
+ const isInsuredSaved = await dataStore.saveMember(
1128
+ member.value,
1129
+ memberStore.getMemberCode(formStore.insuredFormKey)!,
1130
+ memberStore.getMemberFromApplication(formStore.insuredFormKey, insuredFormIndex),
1131
+ );
1132
+ if (!isInsuredSaved) return false;
1133
+ wasInsuredAction.value = true;
1134
+ }
1045
1135
  }
1046
1136
  }
1047
1137
  if (whichForm.value === formStore.insuredFormKey) {
@@ -1054,8 +1144,8 @@ export default {
1054
1144
  await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
1055
1145
  if (dataStore.controls.hasCalculator) {
1056
1146
  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);
1147
+ formStore.additionalInsuranceTerms.forEach(term => {
1148
+ const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
1059
1149
  if (defaultTerm) {
1060
1150
  term.coverSumName = defaultTerm.coverSumName;
1061
1151
  term.coverSumId = defaultTerm.coverSumId;
@@ -1069,9 +1159,13 @@ export default {
1069
1159
  };
1070
1160
 
1071
1161
  const validateAgreement = () => {
1072
- if (dataStore.isGons || dataStore.isBolashak) {
1073
- if (whichForm.value === formStore.beneficiaryFormKey) {
1074
- // TODO уточнить
1162
+ if (whichForm.value === formStore.beneficiaryFormKey) {
1163
+ if (member.value.age !== null && Number(member.value.age) < 18) {
1164
+ return true;
1165
+ }
1166
+ }
1167
+ if (whichForm.value === formStore.insuredFormKey) {
1168
+ if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
1075
1169
  return true;
1076
1170
  }
1077
1171
  }
@@ -1089,9 +1183,14 @@ export default {
1089
1183
  if (v.valid) {
1090
1184
  isSubmittingForm.value = true;
1091
1185
  const docType = member.value.documentType.ids;
1092
- if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI')) {
1186
+ if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI' || docType === 'PS')) {
1093
1187
  dataStore.isLoading = true;
1094
- const ESBDResponse = await validateESBD(docType === '1UDL' ? 1 : 3);
1188
+ const docTypeCodes = {
1189
+ '1UDL': 1,
1190
+ PS: 2,
1191
+ SBI: 3,
1192
+ };
1193
+ const ESBDResponse = await validateESBD(docTypeCodes[docType]);
1095
1194
  if (!ESBDResponse) {
1096
1195
  dataStore.isLoading = false;
1097
1196
  return;
@@ -1146,7 +1245,7 @@ export default {
1146
1245
  }
1147
1246
  otpSending.value = false;
1148
1247
  if (checked === true) {
1149
- dataStore.panel.open = false;
1248
+ dataStore.rightPanel.open = false;
1150
1249
  }
1151
1250
  };
1152
1251
 
@@ -1156,7 +1255,7 @@ export default {
1156
1255
  if (response) {
1157
1256
  if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
1158
1257
  if (response.otpStatus === true) {
1159
- dataStore.panel.open = false;
1258
+ dataStore.rightPanel.open = false;
1160
1259
  }
1161
1260
  }
1162
1261
  otpSending.value = false;
@@ -1170,6 +1269,15 @@ export default {
1170
1269
  if (setDefaults.percentage) {
1171
1270
  setPercentage();
1172
1271
  }
1272
+ if (setDefaults.signOfResidency) {
1273
+ setSignOfResidency();
1274
+ }
1275
+ if (setDefaults.countryOfTaxResidency) {
1276
+ setCountryOfTaxResidency();
1277
+ }
1278
+ if (setDefaults.countryOfCitizenship) {
1279
+ setCountryOfCitizenship();
1280
+ }
1173
1281
  };
1174
1282
 
1175
1283
  const setSectorCode = async () => {
@@ -1179,7 +1287,27 @@ export default {
1179
1287
  member.value.economySectorCode = defaultValue ? defaultValue : new Value();
1180
1288
  }
1181
1289
  };
1182
-
1290
+ const setSignOfResidency = async () => {
1291
+ if (member.value.id === 0 && route.query.id === '0') {
1292
+ const residents = await dataStore.getResidents();
1293
+ const defaultValue = residents.find(item => String(item.nameRu).match(new RegExp('Резидент', 'i'))) as Value;
1294
+ member.value.signOfResidency = defaultValue ? defaultValue : new Value();
1295
+ }
1296
+ };
1297
+ const setCountryOfTaxResidency = async () => {
1298
+ if (member.value.id === 0 && route.query.id === '0') {
1299
+ const taxCountries = await dataStore.getTaxCountries();
1300
+ const defaultValue = taxCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
1301
+ member.value.countryOfTaxResidency = defaultValue ? defaultValue : new Value();
1302
+ }
1303
+ };
1304
+ const setCountryOfCitizenship = async () => {
1305
+ if (member.value.id === 0 && route.query.id === '0') {
1306
+ const citizenshipCountries = await dataStore.getCitizenshipCountries();
1307
+ const defaultValue = citizenshipCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
1308
+ member.value.countryOfCitizenship = defaultValue ? defaultValue : new Value();
1309
+ }
1310
+ };
1183
1311
  const setPercentage = () => {
1184
1312
  if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
1185
1313
  if (dataStore.members.beneficiaryApp.isMultiple) {
@@ -1196,7 +1324,7 @@ export default {
1196
1324
  };
1197
1325
 
1198
1326
  const selectMember = async (index: number, update?: boolean) => {
1199
- dataStore.panel.open = false;
1327
+ dataStore.rightPanel.open = false;
1200
1328
  isButtonLoading.value = true;
1201
1329
  isChangingMember.value = true;
1202
1330
  //@ts-ignore
@@ -1205,6 +1333,11 @@ export default {
1205
1333
  isButtonLoading.value = false;
1206
1334
  };
1207
1335
 
1336
+ const openDeletionDialog = (index: number) => {
1337
+ deletionDialog.value = true;
1338
+ selectedIndex.value = index;
1339
+ };
1340
+
1208
1341
  const deleteMember = async (index: number) => {
1209
1342
  await memberStore.deleteMember(route.params.taskId as string, whichForm.value, index);
1210
1343
  const currentIndex = Number(whichIndex.value);
@@ -1212,6 +1345,7 @@ export default {
1212
1345
  const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
1213
1346
  await selectMember(newIndex.value, index === currentIndex ? true : undefined);
1214
1347
  }
1348
+ deletionDialog.value = false;
1215
1349
  };
1216
1350
 
1217
1351
  const onInit = async () => {
@@ -1295,9 +1429,9 @@ export default {
1295
1429
  };
1296
1430
 
1297
1431
  watch(
1298
- () => dataStore.panel.open,
1432
+ () => dataStore.rightPanel.open,
1299
1433
  () => {
1300
- if (dataStore.panel.open === false) {
1434
+ if (dataStore.rightPanel.open === false) {
1301
1435
  isPanelOpen.value = false;
1302
1436
  isDocumentOpen.value = false;
1303
1437
  isSearchOpen.value = false;
@@ -1313,6 +1447,30 @@ export default {
1313
1447
  searchQuery.value = '';
1314
1448
  }
1315
1449
  });
1450
+ if (dataStore.isLifetrip) {
1451
+ watch(
1452
+ () => member.value.age,
1453
+ val => {
1454
+ if (val && Number(val) >= 18) {
1455
+ if (member.value.hasAgreement !== true) {
1456
+ member.value.hasAgreement = false;
1457
+ }
1458
+ } else {
1459
+ member.value.hasAgreement = true;
1460
+ }
1461
+ member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
1462
+ },
1463
+ );
1464
+ watch(
1465
+ () => member.value.isInsuredUnderage,
1466
+ val => {
1467
+ if (val === true && Number(member.value.age) >= 18) {
1468
+ member.value.isInsuredUnderage = false;
1469
+ return dataStore.showToaster('error', dataStore.t('toaster.underageShouldBeLess18'), 3000);
1470
+ }
1471
+ },
1472
+ );
1473
+ }
1316
1474
 
1317
1475
  return {
1318
1476
  // State
@@ -1335,6 +1493,8 @@ export default {
1335
1493
  Value,
1336
1494
  memberDocument,
1337
1495
  familyDialog,
1496
+ deletionDialog,
1497
+ selectedIndex,
1338
1498
  selectedFamilyMember,
1339
1499
  sameAddress,
1340
1500
 
@@ -1352,10 +1512,13 @@ export default {
1352
1512
  hasGBDFL,
1353
1513
  hasInsis,
1354
1514
  hasGKB,
1515
+ hasMiddleName,
1516
+ hasRelationDegree,
1355
1517
  hasFamilyStatus,
1356
1518
  hasInsurancePay,
1357
1519
  hasSignOfIPDL,
1358
1520
  hasSameAddressToggle,
1521
+ hasMemberSearch,
1359
1522
 
1360
1523
  // Rules
1361
1524
  ageRule,
@@ -1378,6 +1541,7 @@ export default {
1378
1541
  getFile,
1379
1542
  selectFamilyMember,
1380
1543
  closeFamilyDialog,
1544
+ openDeletionDialog,
1381
1545
  scrollForm,
1382
1546
  onIinInput,
1383
1547
  onOtpCodeInput,