hl-core 0.0.9-beta.9 → 0.0.10-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.
- package/api/base.api.ts +1110 -0
- package/api/index.ts +2 -620
- package/api/interceptors.ts +38 -1
- package/components/Button/Btn.vue +1 -6
- package/components/Complex/MessageBlock.vue +1 -1
- package/components/Complex/Page.vue +1 -1
- package/components/Complex/TextBlock.vue +25 -0
- package/components/Dialog/Dialog.vue +72 -16
- package/components/Dialog/FamilyDialog.vue +3 -1
- package/components/Form/DynamicForm.vue +101 -0
- package/components/Form/FormBlock.vue +12 -3
- package/components/Form/FormData.vue +111 -0
- package/components/Form/FormSection.vue +3 -3
- package/components/Form/FormTextSection.vue +11 -3
- package/components/Form/FormToggle.vue +25 -5
- package/components/Form/ManagerAttachment.vue +178 -89
- package/components/Form/ProductConditionsBlock.vue +59 -6
- package/components/Input/Datepicker.vue +43 -7
- package/components/Input/DynamicInput.vue +25 -0
- package/components/Input/FileInput.vue +25 -5
- package/components/Input/FormInput.vue +9 -4
- package/components/Input/Monthpicker.vue +34 -0
- package/components/Input/PanelInput.vue +6 -1
- package/components/Input/RoundedInput.vue +2 -0
- package/components/Input/RoundedSelect.vue +9 -2
- package/components/Input/SwitchInput.vue +66 -0
- package/components/Input/TextInput.vue +162 -0
- package/components/Layout/Drawer.vue +18 -4
- package/components/Layout/Header.vue +23 -2
- package/components/Layout/Loader.vue +2 -1
- package/components/Layout/SettingsPanel.vue +24 -11
- package/components/Menu/InfoMenu.vue +35 -0
- package/components/Menu/MenuNav.vue +25 -3
- package/components/Pages/Anketa.vue +255 -65
- package/components/Pages/Auth.vue +58 -9
- package/components/Pages/ContragentForm.vue +10 -9
- package/components/Pages/Documents.vue +267 -30
- package/components/Pages/InvoiceInfo.vue +1 -1
- package/components/Pages/MemberForm.vue +775 -102
- package/components/Pages/ProductAgreement.vue +1 -8
- package/components/Pages/ProductConditions.vue +1133 -180
- package/components/Panel/PanelHandler.vue +627 -49
- package/components/Panel/PanelSelectItem.vue +17 -2
- package/components/Panel/RightPanelCloser.vue +7 -0
- package/components/Transitions/Animation.vue +30 -0
- package/components/Utilities/Chip.vue +2 -0
- package/components/Utilities/JsonViewer.vue +2 -2
- package/components/Utilities/Qr.vue +44 -0
- package/composables/axios.ts +1 -0
- package/composables/classes.ts +550 -44
- package/composables/constants.ts +126 -6
- package/composables/fields.ts +330 -0
- package/composables/index.ts +356 -20
- package/composables/styles.ts +23 -6
- package/configs/pwa.ts +63 -0
- package/layouts/clear.vue +21 -0
- package/layouts/default.vue +62 -3
- package/layouts/full.vue +21 -0
- package/locales/ru.json +558 -16
- package/nuxt.config.ts +6 -15
- package/package.json +38 -39
- package/pages/Token.vue +0 -13
- package/plugins/head.ts +26 -0
- package/plugins/vuetifyPlugin.ts +1 -5
- package/store/data.store.ts +1647 -348
- package/store/extractStore.ts +17 -0
- package/store/form.store.ts +13 -1
- package/store/member.store.ts +2 -1
- package/store/rules.ts +97 -3
- package/store/toast.ts +1 -1
- package/tsconfig.json +3 -0
- package/types/enum.ts +82 -0
- package/types/env.d.ts +2 -0
- package/types/form.ts +90 -0
- package/types/index.ts +847 -506
|
@@ -1,6 +1,6 @@
|
|
|
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-[
|
|
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
5
|
<div :class="[$styles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-1 rounded-t-[8px] h-full">
|
|
6
6
|
<div
|
|
@@ -17,23 +17,60 @@
|
|
|
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) ?
|
|
20
|
+
@click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? openDeletionDialog(index) : null"
|
|
21
21
|
/>
|
|
22
22
|
</div>
|
|
23
23
|
</div>
|
|
24
24
|
<v-btn class="ml-2" icon="mdi-plus !text-[24px]" @click="memberStore.addMember(whichForm)" size="small" color="#A0B3D8" variant="tonal" />
|
|
25
25
|
</div>
|
|
26
|
+
<base-form-section
|
|
27
|
+
v-if="$dataStore.hasFamilyTiesSection(whichForm)"
|
|
28
|
+
:title="$dataStore.t('pension.familyTies')"
|
|
29
|
+
:class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
|
|
30
|
+
>
|
|
31
|
+
<base-form-toggle v-model="isRelative" :disabled="isDisabled" :title="$dataStore.t('pension.ifHasRelationBeneficiary')" :has-border="false" :show-value="false" />
|
|
32
|
+
<base-fade-transition>
|
|
33
|
+
<div class="flex flex-col gap-[1px]" v-if="isRelative">
|
|
34
|
+
<base-panel-input
|
|
35
|
+
v-model="formStore.applicationData.insuredApp.iin"
|
|
36
|
+
:maska="$maska.iin"
|
|
37
|
+
:readonly="isDisabled"
|
|
38
|
+
:clearable="false"
|
|
39
|
+
:label="$dataStore.t('pension.insuredIIN')"
|
|
40
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
41
|
+
@append="searchMember"
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
</base-fade-transition>
|
|
45
|
+
</base-form-section>
|
|
26
46
|
<base-form-section
|
|
27
47
|
:title="$dataStore.t('form.personalData')"
|
|
28
48
|
:class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
|
|
29
49
|
>
|
|
50
|
+
<base-panel-input
|
|
51
|
+
v-if="$dataStore.isLifetrip || $dataStore.isPension"
|
|
52
|
+
v-model="member.signOfResidency"
|
|
53
|
+
:value="member.signOfResidency?.nameRu"
|
|
54
|
+
:label="$dataStore.t('form.signOfResidency')"
|
|
55
|
+
:readonly="isDisabled"
|
|
56
|
+
:clearable="!isDisabled"
|
|
57
|
+
:rules="residencyRule"
|
|
58
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
59
|
+
@append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
60
|
+
/>
|
|
61
|
+
<base-form-toggle
|
|
62
|
+
v-if="$dataStore.isLifetrip && whichForm === 'insuredForm'"
|
|
63
|
+
v-model="member.isInsuredUnderage"
|
|
64
|
+
:title="$dataStore.t('isInsuredUnderage')"
|
|
65
|
+
:has-border="false"
|
|
66
|
+
/>
|
|
30
67
|
<base-form-input
|
|
31
68
|
v-model="member.phoneNumber"
|
|
32
69
|
:label="$dataStore.t('form.phoneNumber')"
|
|
33
70
|
:maska="$maska.phone"
|
|
34
71
|
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
35
72
|
:clearable="!isDisabled"
|
|
36
|
-
:append-inner-icon="otpCondition ? 'mdi mdi-phone-message' : ''"
|
|
73
|
+
:append-inner-icon="otpCondition ? `${$dataStore.isPension ? 'mdi-message-text' : 'mdi mdi-phone-message'}` : ''"
|
|
37
74
|
@append="openCustomPanel('otp')"
|
|
38
75
|
@keyup.enter.prevent="otpCondition ? openCustomPanel('otp') : null"
|
|
39
76
|
:rules="phoneRule"
|
|
@@ -42,49 +79,90 @@
|
|
|
42
79
|
v-model="member.iin"
|
|
43
80
|
:label="$dataStore.t('form.iin')"
|
|
44
81
|
:maska="$maska.iin"
|
|
45
|
-
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
82
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled || !!member.parsedDocument?.iin"
|
|
46
83
|
:clearable="!isDisabled"
|
|
47
|
-
:append-inner-icon="
|
|
84
|
+
:append-inner-icon="hasMemberSearch ? (hasDocumentReader ? 'mdi mdi-credit-card-scan-outline' : 'mdi mdi-magnify') : ''"
|
|
48
85
|
@append="searchMember"
|
|
49
86
|
@input="onIinInput"
|
|
50
87
|
:rules="$rules.required.concat($rules.iinRight)"
|
|
51
88
|
/>
|
|
52
89
|
<base-form-input
|
|
53
90
|
v-model.trim="member.lastName"
|
|
54
|
-
:readonly="isDisabled || isFromGBD"
|
|
91
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.lastName"
|
|
55
92
|
:clearable="!isDisabled"
|
|
56
93
|
:label="$dataStore.t('form.lastName')"
|
|
57
94
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
58
95
|
/>
|
|
59
96
|
<base-form-input
|
|
60
97
|
v-model.trim="member.firstName"
|
|
61
|
-
:readonly="isDisabled || isFromGBD"
|
|
98
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.firstName"
|
|
62
99
|
:clearable="!isDisabled"
|
|
63
100
|
:label="$dataStore.t('form.firstName')"
|
|
64
101
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
65
102
|
/>
|
|
66
103
|
<base-form-input
|
|
104
|
+
v-if="hasMiddleName"
|
|
67
105
|
v-model.trim="member.middleName"
|
|
68
|
-
:readonly="isDisabled || isFromGBD"
|
|
106
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.middleName"
|
|
69
107
|
:clearable="!isDisabled"
|
|
70
108
|
:label="$dataStore.t('form.middleName')"
|
|
71
109
|
:rules="$rules.cyrillicNonRequired"
|
|
72
110
|
/>
|
|
73
111
|
<base-form-input
|
|
74
|
-
v-
|
|
112
|
+
v-if="$dataStore.isLifetrip"
|
|
113
|
+
v-model.trim="member.lastNameLat"
|
|
114
|
+
:readonly="isDisabled || isFromGBD"
|
|
115
|
+
:clearable="!isDisabled"
|
|
116
|
+
:label="$dataStore.t('form.lastNameLat')"
|
|
117
|
+
:rules="$rules.required.concat($rules.latin)"
|
|
118
|
+
:hint="$dataStore.t('labels.checkWithDoc')"
|
|
119
|
+
/>
|
|
120
|
+
<base-form-input
|
|
121
|
+
v-if="$dataStore.isLifetrip"
|
|
122
|
+
v-model.trim="member.firstNameLat"
|
|
75
123
|
:readonly="isDisabled || isFromGBD"
|
|
76
124
|
:clearable="!isDisabled"
|
|
125
|
+
:label="$dataStore.t('form.firstNameLat')"
|
|
126
|
+
:rules="$rules.required.concat($rules.latin)"
|
|
127
|
+
:hint="$dataStore.t('labels.checkWithDoc')"
|
|
128
|
+
/>
|
|
129
|
+
<base-form-input
|
|
130
|
+
v-model="member.birthDate"
|
|
131
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.birthDate"
|
|
132
|
+
:clearable="!isDisabled"
|
|
77
133
|
:label="$dataStore.t('form.birthDate')"
|
|
78
134
|
:rules="birthDateRule"
|
|
79
135
|
:maska="$maska.date"
|
|
80
136
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
81
137
|
/>
|
|
82
|
-
<
|
|
138
|
+
<div v-if="$dataStore.isPension">
|
|
139
|
+
<base-panel-input
|
|
140
|
+
v-model="member.countryOfCitizenship"
|
|
141
|
+
:value="member.countryOfCitizenship?.nameRu"
|
|
142
|
+
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
143
|
+
:readonly="isDisabled"
|
|
144
|
+
:clearable="!isDisabled"
|
|
145
|
+
:rules="$rules.objectRequired"
|
|
146
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
147
|
+
@append="openPanel($dataStore.t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
|
|
148
|
+
/>
|
|
149
|
+
<base-panel-input
|
|
150
|
+
v-model="member.birthPlace"
|
|
151
|
+
:value="member.birthPlace?.nameRu"
|
|
152
|
+
:label="$dataStore.t('form.birthData')"
|
|
153
|
+
:readonly="isDisabled"
|
|
154
|
+
:clearable="!isDisabled"
|
|
155
|
+
:rules="$rules.objectRequired"
|
|
156
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
157
|
+
@append="openPanel($dataStore.t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
|
|
158
|
+
/>
|
|
159
|
+
</div>
|
|
160
|
+
<base-form-input v-if="!$dataStore.isPension" v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
|
|
83
161
|
<base-panel-input
|
|
84
162
|
v-model="member.gender"
|
|
85
163
|
:value="member.gender?.nameRu"
|
|
86
164
|
:readonly="isDisabled || isFromGBD"
|
|
87
|
-
:clearable="!isDisabled"
|
|
165
|
+
:clearable="!isDisabled && !isFromGBD"
|
|
88
166
|
:label="$dataStore.t('form.gender')"
|
|
89
167
|
:rules="$rules.objectRequired"
|
|
90
168
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -102,7 +180,7 @@
|
|
|
102
180
|
@append="openPanel($dataStore.t('form.familyStatus'), [], 'familyStatus', $dataStore.getFamilyStatuses)"
|
|
103
181
|
/>
|
|
104
182
|
<base-panel-input
|
|
105
|
-
v-if="
|
|
183
|
+
v-if="hasRelationDegree"
|
|
106
184
|
v-model="member.relationDegree"
|
|
107
185
|
:value="member.relationDegree?.nameRu"
|
|
108
186
|
:readonly="isDisabled"
|
|
@@ -121,6 +199,22 @@
|
|
|
121
199
|
:rules="$rules.required.concat($rules.numbers)"
|
|
122
200
|
/>
|
|
123
201
|
</base-form-section>
|
|
202
|
+
<base-form-section v-if="$dataStore.isPension && whichForm === formStore.insuredFormKey" :title="$dataStore.t('pension.disabilityInfo')">
|
|
203
|
+
<base-form-toggle v-model="member.isDisability" :title="$dataStore.t('pension.ifHasDisability')" :disabled="isDisabled" :has-border="false" />
|
|
204
|
+
<base-animation>
|
|
205
|
+
<base-panel-input
|
|
206
|
+
v-if="member.isDisability"
|
|
207
|
+
v-model="member.disabilityGroup"
|
|
208
|
+
:value="member.disabilityGroup?.nameRu"
|
|
209
|
+
:readonly="isDisabled"
|
|
210
|
+
:clearable="!isDisabled"
|
|
211
|
+
:label="$dataStore.t('pension.disabilityGroup')"
|
|
212
|
+
:rules="$rules.objectRequired"
|
|
213
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
214
|
+
@append="openPanel($dataStore.t('pension.disabilityGroup'), $dataStore.disabilityGroups, 'disabilityGroup', $dataStore.getDisabilityGroups)"
|
|
215
|
+
/>
|
|
216
|
+
</base-animation>
|
|
217
|
+
</base-form-section>
|
|
124
218
|
<base-form-section :title="$dataStore.t('policyholdersRepresentative.PowerOfAttorney')" v-if="whichForm === formStore.policyholdersRepresentativeFormKey">
|
|
125
219
|
<base-form-input
|
|
126
220
|
v-model.trim="member.fullNameRod"
|
|
@@ -231,9 +325,26 @@
|
|
|
231
325
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
232
326
|
/>
|
|
233
327
|
</base-form-section>
|
|
234
|
-
<base-form-section
|
|
328
|
+
<base-form-section v-if="$dataStore.hasJobSection(whichForm)" :title="$dataStore.t('form.jobData')">
|
|
235
329
|
<base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
236
|
-
<base-form-input
|
|
330
|
+
<base-form-input
|
|
331
|
+
v-if="hasWorkPositionDict"
|
|
332
|
+
v-model.trim="member.jobPosition"
|
|
333
|
+
:label="$dataStore.t('form.jobPosition')"
|
|
334
|
+
:readonly="isDisabled || member.positionCode !== 'other'"
|
|
335
|
+
:clearable="!isDisabled"
|
|
336
|
+
:rules="$rules.required"
|
|
337
|
+
append-inner-icon="mdi-chevron-right"
|
|
338
|
+
@click="openCustomPanel('workPosition')"
|
|
339
|
+
/>
|
|
340
|
+
<base-form-input
|
|
341
|
+
v-else
|
|
342
|
+
v-model.trim="member.jobPosition"
|
|
343
|
+
:label="$dataStore.t('form.jobPosition')"
|
|
344
|
+
:readonly="isDisabled"
|
|
345
|
+
:clearable="!isDisabled"
|
|
346
|
+
:rules="$rules.required"
|
|
347
|
+
/>
|
|
237
348
|
<base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
238
349
|
</base-form-section>
|
|
239
350
|
<base-form-section :title="$dataStore.t('form.placeRegistration')" v-if="$dataStore.hasPlaceSection(whichForm)">
|
|
@@ -284,7 +395,7 @@
|
|
|
284
395
|
<base-panel-input
|
|
285
396
|
v-model="member.registrationCity"
|
|
286
397
|
:value="member.registrationCity?.nameRu"
|
|
287
|
-
:label="$dataStore.t('form.City')"
|
|
398
|
+
:label="member.registrationRegionType.nameRu === 'поселок' ? $dataStore.t('form.village') : $dataStore.t('form.City')"
|
|
288
399
|
:readonly="isDisabled"
|
|
289
400
|
:clearable="!isDisabled"
|
|
290
401
|
:rules="$rules.objectRequired"
|
|
@@ -297,7 +408,7 @@
|
|
|
297
408
|
<base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.MicroDistrict')" />
|
|
298
409
|
<base-form-input
|
|
299
410
|
v-model.trim="member.registrationStreet"
|
|
300
|
-
:rules="$rules.required"
|
|
411
|
+
:rules="member.isInsuredUnderage || $dataStore.isAULETTI || $dataStore.isAulettiParent ? [] : $rules.required"
|
|
301
412
|
:readonly="isDisabled"
|
|
302
413
|
:clearable="!isDisabled"
|
|
303
414
|
:label="$dataStore.t('form.Street')"
|
|
@@ -337,6 +448,15 @@
|
|
|
337
448
|
/> -->
|
|
338
449
|
</base-form-section>
|
|
339
450
|
<base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
|
|
451
|
+
<base-panel-input
|
|
452
|
+
v-if="gbdDocuments && gbdDocuments.length"
|
|
453
|
+
value="Список документов из ГБДФЛ"
|
|
454
|
+
:active="true"
|
|
455
|
+
:readonly="isDisabled"
|
|
456
|
+
:clearable="!isDisabled"
|
|
457
|
+
append-inner-icon="mdi mdi-file-document-outline"
|
|
458
|
+
@append="documentChooseDialog = true"
|
|
459
|
+
/>
|
|
340
460
|
<base-panel-input
|
|
341
461
|
v-model="member.documentType"
|
|
342
462
|
:value="member.documentType?.nameRu"
|
|
@@ -350,7 +470,7 @@
|
|
|
350
470
|
<base-form-input
|
|
351
471
|
v-model.trim="member.documentNumber"
|
|
352
472
|
:label="$dataStore.t('form.documentNumber')"
|
|
353
|
-
:readonly="isDisabled"
|
|
473
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentNumber"
|
|
354
474
|
:clearable="!isDisabled"
|
|
355
475
|
:rules="$rules.required"
|
|
356
476
|
/>
|
|
@@ -363,7 +483,7 @@
|
|
|
363
483
|
v-model="member.documentIssuers"
|
|
364
484
|
:value="member.documentIssuers?.nameRu"
|
|
365
485
|
:label="$dataStore.t('form.documentIssuers')"
|
|
366
|
-
:readonly="isDisabled"
|
|
486
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssuer"
|
|
367
487
|
:clearable="!isDisabled"
|
|
368
488
|
:rules="$rules.objectRequired"
|
|
369
489
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -372,7 +492,7 @@
|
|
|
372
492
|
<base-form-input
|
|
373
493
|
v-model="member.documentDate"
|
|
374
494
|
:label="$dataStore.t('form.documentDate')"
|
|
375
|
-
:readonly="isDisabled"
|
|
495
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssueDate"
|
|
376
496
|
:clearable="!isDisabled"
|
|
377
497
|
:rules="$rules.required.concat($rules.date)"
|
|
378
498
|
:maska="$maska.date"
|
|
@@ -380,10 +500,10 @@
|
|
|
380
500
|
/>
|
|
381
501
|
<base-fade-transition>
|
|
382
502
|
<base-form-input
|
|
383
|
-
v-if="member.documentType.ids !== 'SBI'
|
|
503
|
+
v-if="member.documentType.ids !== 'SBI'"
|
|
384
504
|
v-model="member.documentExpire"
|
|
385
505
|
:label="$dataStore.t('form.documentExpire')"
|
|
386
|
-
:readonly="isDisabled"
|
|
506
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentExpireDate"
|
|
387
507
|
:clearable="!isDisabled"
|
|
388
508
|
:rules="$rules.required.concat($rules.date)"
|
|
389
509
|
:maska="$maska.date"
|
|
@@ -391,6 +511,7 @@
|
|
|
391
511
|
/>
|
|
392
512
|
</base-fade-transition>
|
|
393
513
|
<base-panel-input
|
|
514
|
+
v-if="!$dataStore.isLifetrip && !$dataStore.isPension"
|
|
394
515
|
v-model="member.signOfResidency"
|
|
395
516
|
:value="member.signOfResidency?.nameRu"
|
|
396
517
|
:label="$dataStore.t('form.signOfResidency')"
|
|
@@ -427,7 +548,7 @@
|
|
|
427
548
|
v-if="hasSignOfIPDL"
|
|
428
549
|
v-model="member.signOfIPDL"
|
|
429
550
|
:value="member.signOfIPDL?.nameRu"
|
|
430
|
-
:label="$dataStore.t('form.signOfIPDL')"
|
|
551
|
+
:label="$dataStore.isPension ? $dataStore.t('form.signOfPDL') : $dataStore.t('form.signOfIPDL')"
|
|
431
552
|
:readonly="isDisabled"
|
|
432
553
|
:clearable="!isDisabled"
|
|
433
554
|
:rules="$rules.objectRequired"
|
|
@@ -435,6 +556,7 @@
|
|
|
435
556
|
@append="openPanel($dataStore.t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
|
|
436
557
|
/>
|
|
437
558
|
<base-panel-input
|
|
559
|
+
v-if="!$dataStore.isPension"
|
|
438
560
|
v-model="member.countryOfCitizenship"
|
|
439
561
|
:value="member.countryOfCitizenship?.nameRu"
|
|
440
562
|
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
@@ -466,6 +588,61 @@
|
|
|
466
588
|
@append="openPanel($dataStore.t('form.insurancePay'), $dataStore.insurancePay, 'insurancePay', $dataStore.getInsurancePay)"
|
|
467
589
|
/>
|
|
468
590
|
</base-form-section>
|
|
591
|
+
<base-form-section v-if="$dataStore.hasBankSection(whichForm)" :title="$dataStore.t('bankDetailsForm.title')">
|
|
592
|
+
<base-form-input
|
|
593
|
+
v-model="member.bankInfo.iik"
|
|
594
|
+
:label="$dataStore.t('clients.form.iik')"
|
|
595
|
+
:maska="$maska.iik"
|
|
596
|
+
:readonly="isDisabled"
|
|
597
|
+
:clearable="!isDisabled"
|
|
598
|
+
:rules="$rules.required.concat($rules.iik)"
|
|
599
|
+
/>
|
|
600
|
+
<base-panel-input
|
|
601
|
+
v-model="member.bankInfo.bankName"
|
|
602
|
+
:value="member.bankInfo.bankName.nameRu"
|
|
603
|
+
:label="$dataStore.t('clients.form.nameBank')"
|
|
604
|
+
:readonly="isDisabled"
|
|
605
|
+
:clearable="!isDisabled"
|
|
606
|
+
:rules="$rules.objectRequired"
|
|
607
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
608
|
+
@append="openPanel($dataStore.t('clients.form.nameBank'), [], 'bankInfo', $dataStore.getBanks, '', 'bankName')"
|
|
609
|
+
/>
|
|
610
|
+
<base-form-input
|
|
611
|
+
v-model.trim="member.bankInfo.bin"
|
|
612
|
+
:label="$dataStore.t('form.bin')"
|
|
613
|
+
:maska="$maska.iin"
|
|
614
|
+
:readonly="isDisabled"
|
|
615
|
+
:clearable="!isDisabled"
|
|
616
|
+
:rules="$rules.required.concat($rules.iinRight)"
|
|
617
|
+
/>
|
|
618
|
+
<base-form-input v-model="member.bankInfo.bik" :label="$dataStore.t('clients.form.bik')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
619
|
+
</base-form-section>
|
|
620
|
+
<base-form-section v-if="$dataStore.hasAdditionalDocumentsSection(whichForm)" :title="$dataStore.t('form.phDocuments')">
|
|
621
|
+
<base-file-input
|
|
622
|
+
:label="$dataStore.t('form.identyDocument')"
|
|
623
|
+
:disabled="isDisabled"
|
|
624
|
+
:clearable="!isDisabled"
|
|
625
|
+
icon="mdi-paperclip"
|
|
626
|
+
@input="attachFile($event, '1')"
|
|
627
|
+
:rules="$rules.required"
|
|
628
|
+
/>
|
|
629
|
+
<base-file-input
|
|
630
|
+
:label="$dataStore.t('form.bankStatement')"
|
|
631
|
+
:disabled="isDisabled"
|
|
632
|
+
:clearable="!isDisabled"
|
|
633
|
+
icon="mdi-paperclip"
|
|
634
|
+
@input="attachFile($event, '10')"
|
|
635
|
+
:rules="$rules.required"
|
|
636
|
+
/>
|
|
637
|
+
<base-file-input
|
|
638
|
+
:label="$dataStore.t('pension.ENPFnote')"
|
|
639
|
+
:disabled="isDisabled"
|
|
640
|
+
:clearable="!isDisabled"
|
|
641
|
+
icon="mdi-paperclip"
|
|
642
|
+
@input="attachFile($event, '8')"
|
|
643
|
+
:rules="$rules.required"
|
|
644
|
+
/>
|
|
645
|
+
</base-form-section>
|
|
469
646
|
<base-form-section :title="$dataStore.t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
470
647
|
<base-form-input
|
|
471
648
|
v-model="member.homePhone"
|
|
@@ -476,11 +653,11 @@
|
|
|
476
653
|
:clearable="!isDisabled"
|
|
477
654
|
:rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
|
|
478
655
|
/>
|
|
479
|
-
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
|
|
656
|
+
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.email" />
|
|
480
657
|
</base-form-section>
|
|
481
658
|
</v-form>
|
|
482
659
|
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
|
|
483
|
-
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
660
|
+
<Teleport v-if="isPanelOpen" to="#right-panel-actions">
|
|
484
661
|
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
485
662
|
<base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
486
663
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
@@ -488,7 +665,7 @@
|
|
|
488
665
|
<base-panel-select-item
|
|
489
666
|
v-for="(item, index) of panelList.filter(i => i.nameRu && (i.nameRu as string).match(new RegExp(searchQuery, 'i')))"
|
|
490
667
|
:key="index"
|
|
491
|
-
:text="(item.nameRu
|
|
668
|
+
:text="String(item.nameRu)"
|
|
492
669
|
:selected="item.nameRu === panelValue.nameRu"
|
|
493
670
|
@click="pickPanelValue(item)"
|
|
494
671
|
/>
|
|
@@ -496,20 +673,34 @@
|
|
|
496
673
|
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
497
674
|
</div>
|
|
498
675
|
</Teleport>
|
|
499
|
-
<Teleport v-if="isSearchOpen" to="#panel-actions">
|
|
676
|
+
<Teleport v-if="isSearchOpen" to="#right-panel-actions">
|
|
500
677
|
<div :class="[$styles.flexColNav]">
|
|
501
678
|
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
|
|
502
679
|
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
|
|
503
680
|
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
|
|
681
|
+
<base-form-section v-if="hasDocumentReader" class="!mt-0">
|
|
682
|
+
<base-file-input
|
|
683
|
+
:disabled="isDisabled"
|
|
684
|
+
:clearable="!isDisabled"
|
|
685
|
+
accept="image/*,.pdf"
|
|
686
|
+
append="mdi-credit-card-scan-outline"
|
|
687
|
+
:multiple="true"
|
|
688
|
+
@onClear="imageDataList = []"
|
|
689
|
+
@input="attachDocumentReader($event)"
|
|
690
|
+
/>
|
|
691
|
+
</base-form-section>
|
|
692
|
+
<base-animation>
|
|
693
|
+
<base-btn v-if="hasDocumentReader && imageDataList && !!imageDataList.length" :loading="isButtonLoading" text="Получить данные" @click="getDocumentReader" />
|
|
694
|
+
</base-animation>
|
|
504
695
|
</div>
|
|
505
696
|
</Teleport>
|
|
506
|
-
<Teleport v-if="isDocumentOpen" to="#panel-actions">
|
|
697
|
+
<Teleport v-if="isDocumentOpen" to="#right-panel-actions">
|
|
507
698
|
<div :class="[$styles.flexColNav]">
|
|
508
699
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
|
|
509
700
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
|
|
510
701
|
</div>
|
|
511
702
|
</Teleport>
|
|
512
|
-
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
|
|
703
|
+
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#right-panel-actions">
|
|
513
704
|
<div :class="[$styles.flexColNav]">
|
|
514
705
|
<base-fade-transition>
|
|
515
706
|
<base-rounded-input
|
|
@@ -527,11 +718,71 @@
|
|
|
527
718
|
<base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
|
|
528
719
|
</div>
|
|
529
720
|
</Teleport>
|
|
530
|
-
<
|
|
721
|
+
<Teleport v-if="isPositionPanelOpen" to="#right-panel-actions">
|
|
722
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
723
|
+
<base-rounded-input
|
|
724
|
+
v-model="searchQuery"
|
|
725
|
+
:label="$dataStore.t('labels.search')"
|
|
726
|
+
class="w-full p-2"
|
|
727
|
+
:hide-details="searchQuery.length >= 4"
|
|
728
|
+
:rules="[searchQuery.length < 4 ? $dataStore.t('rules.searchQueryLen', { len: '4' }) : true]"
|
|
729
|
+
:append-inner-icon="searchQuery.length < 4 ? '' : 'mdi mdi-magnify'"
|
|
730
|
+
@append="searchPositions"
|
|
731
|
+
/>
|
|
732
|
+
<base-animation>
|
|
733
|
+
<div v-if="positionsList && positionsList.length && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
734
|
+
<base-panel-select-item
|
|
735
|
+
:text="$dataStore.t('form.notChosen')"
|
|
736
|
+
:selected="member.positionCode === null"
|
|
737
|
+
@click="pickPosition({ workPositionName: null, workPositionCode: null })"
|
|
738
|
+
/>
|
|
739
|
+
<base-panel-select-item
|
|
740
|
+
v-for="(item, index) of positionsList"
|
|
741
|
+
:key="index"
|
|
742
|
+
:text="String(item.workPositionName)"
|
|
743
|
+
:selected="item.workPositionCode === member.positionCode"
|
|
744
|
+
@click="pickPosition({ workPositionName: item.workPositionName, workPositionCode: item.workPositionCode })"
|
|
745
|
+
/>
|
|
746
|
+
</div>
|
|
747
|
+
<div v-if="searchQuery && positionsList !== null && !positionsList.length && isPanelLoading === false" class="w-full flex flex-col items-center gap-2 px-2">
|
|
748
|
+
<base-btn :text="$dataStore.t('buttons.add')" @click="pickPosition({ workPositionName: searchQuery, workPositionCode: 'other' })" />
|
|
749
|
+
<span :class="[$styles.mutedText]">{{ $dataStore.t('toaster.notFound') }}</span>
|
|
750
|
+
</div>
|
|
751
|
+
</base-animation>
|
|
752
|
+
<base-animation>
|
|
753
|
+
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
754
|
+
</base-animation>
|
|
755
|
+
</div>
|
|
756
|
+
</Teleport>
|
|
757
|
+
<base-dialog
|
|
758
|
+
v-model="deletionDialog"
|
|
759
|
+
:title="$dataStore.t('dialog.confirmDelete')"
|
|
760
|
+
:subtitle="$dataStore.t('dialog.delete')"
|
|
761
|
+
:confirm="$dataStore.t('confirm.delete')"
|
|
762
|
+
:icon="{ mdi: 'delete-outline', color: '#FD2D39' }"
|
|
763
|
+
@yes="deleteMember"
|
|
764
|
+
@no="deletionDialog = false"
|
|
765
|
+
/>
|
|
766
|
+
<base-dialog v-model="familyDialog" :subtitle="$dataStore.t('dialog.familyMember')" :icon="{ mdi: 'hand-pointing-up' }" actions="familyDialog">
|
|
531
767
|
<template #actions>
|
|
532
768
|
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
|
|
533
769
|
</template>
|
|
534
770
|
</base-dialog>
|
|
771
|
+
<base-dialog v-model="documentChooseDialog" :subtitle="$dataStore.t('labels.chooseDoc')" :icon="{ mdi: 'file-document-outline' }" actions="documentChooseDialog">
|
|
772
|
+
<template #actions>
|
|
773
|
+
<v-list lines="two" v-if="gbdDocuments && gbdDocuments.length" class="w-full !py-0">
|
|
774
|
+
<v-list-item v-for="document of gbdDocuments" :key="document.number" @click="selectGbdDocument(document)">
|
|
775
|
+
<v-list-item-title :class="[$styles.greenText, $styles.textTitle]">
|
|
776
|
+
{{ `${document.type.nameRu} - ${document.number} ` }}
|
|
777
|
+
</v-list-item-title>
|
|
778
|
+
<v-list-item-subtitle :class="[$styles.textSimple]">
|
|
779
|
+
<span>{{ `${document.issueOrganization.nameRu}` }} </span>{{ `${document.beginDate} - ${document.endDate} ` }}
|
|
780
|
+
</v-list-item-subtitle>
|
|
781
|
+
</v-list-item>
|
|
782
|
+
</v-list>
|
|
783
|
+
<base-list-empty class="w-full" v-else @click="documentChooseDialog = false" />
|
|
784
|
+
</template>
|
|
785
|
+
</base-dialog>
|
|
535
786
|
</section>
|
|
536
787
|
<base-scroll-buttons @up="scrollForm('up')" @down="scrollForm('down')" />
|
|
537
788
|
</template>
|
|
@@ -539,7 +790,8 @@
|
|
|
539
790
|
<script lang="ts">
|
|
540
791
|
import { Value, DocumentItem, Member } from '../../composables/classes';
|
|
541
792
|
import { uuid } from 'vue-uuid';
|
|
542
|
-
import { StoreMembers } from '../../types/enum';
|
|
793
|
+
import { StoreMembers, Enums } from '../../types/enum';
|
|
794
|
+
import type { Api, Dicts, ESBDValidationType, FileActions, MultipleMember } from '../../types';
|
|
543
795
|
|
|
544
796
|
export default {
|
|
545
797
|
setup() {
|
|
@@ -553,7 +805,7 @@ export default {
|
|
|
553
805
|
const whichIndex = computed(() => route.query.i as string);
|
|
554
806
|
const getMember = (whichForm: keyof typeof StoreMembers, whichIndex?: string) => memberStore.getMemberFromStore(whichForm, Number((whichIndex ? whichIndex : '0') as string))!;
|
|
555
807
|
const member = ref(getMember(whichForm.value, whichIndex.value));
|
|
556
|
-
const selectedFamilyMember = ref<
|
|
808
|
+
const selectedFamilyMember = ref<Api.GKB.BirthInfo>({});
|
|
557
809
|
const isPanelOpen = ref<boolean>(false);
|
|
558
810
|
const memberDocument = ref<DocumentItem>();
|
|
559
811
|
const isButtonLoading = ref<boolean>(false);
|
|
@@ -563,15 +815,25 @@ export default {
|
|
|
563
815
|
const isSearchOpen = ref<boolean>(false);
|
|
564
816
|
const isDocumentOpen = ref<boolean>(false);
|
|
565
817
|
const isOtpPanelOpen = ref<boolean>(false);
|
|
818
|
+
const isPositionPanelOpen = ref<boolean>(false);
|
|
566
819
|
const isPanelLoading = ref<boolean>(false);
|
|
567
820
|
const isChangingMember = ref<boolean>(false);
|
|
568
821
|
const familyDialog = ref<boolean>(false);
|
|
822
|
+
const deletionDialog = ref<boolean>(false);
|
|
823
|
+
const documentChooseDialog = ref<boolean>(false);
|
|
824
|
+
const selectedIndex = ref<number>(0);
|
|
569
825
|
const sameAddress = ref<boolean>(false);
|
|
570
826
|
const panelValue = ref<Value>(new Value());
|
|
571
827
|
const panelList = ref<Value[]>([]);
|
|
828
|
+
const positionsList = ref<Dicts.WorkPosition[] | null>(null);
|
|
572
829
|
const currentPanel = ref<keyof typeof member.value>();
|
|
573
830
|
const searchQuery = ref<string>('');
|
|
574
831
|
const fileData = ref<{ file: any }>();
|
|
832
|
+
const imageDataList = ref<string[]>([]);
|
|
833
|
+
const isRelative = ref<boolean>(false);
|
|
834
|
+
|
|
835
|
+
const currentPanelDeep = ref<string>();
|
|
836
|
+
const currentPanelSubDeep = ref<string>();
|
|
575
837
|
|
|
576
838
|
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
577
839
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
@@ -579,13 +841,26 @@ export default {
|
|
|
579
841
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
580
842
|
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
581
843
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
844
|
+
const gbdDocuments = computed(() => {
|
|
845
|
+
if (hasGBDFLDocSelection && !!member.value.gosPersonData && !!member.value.gosPersonData.documents) {
|
|
846
|
+
const documents = Array.isArray(member.value.gosPersonData.documents.document)
|
|
847
|
+
? member.value.gosPersonData.documents.document
|
|
848
|
+
: [member.value.gosPersonData.documents.document];
|
|
849
|
+
return documents.filter(i => new Date(i.endDate) > new Date(Date.now()) && i.status.code === '00');
|
|
850
|
+
}
|
|
851
|
+
return null;
|
|
852
|
+
});
|
|
582
853
|
const showSaveButton = computed(() => {
|
|
583
854
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
584
|
-
const
|
|
855
|
+
const perMemberCondition = () => {
|
|
585
856
|
switch (whichForm.value) {
|
|
586
857
|
case formStore.policyholderFormKey:
|
|
587
858
|
return true;
|
|
588
859
|
case formStore.insuredFormKey:
|
|
860
|
+
if (dataStore.isPension) {
|
|
861
|
+
return true;
|
|
862
|
+
}
|
|
863
|
+
return route.params.taskId !== '0';
|
|
589
864
|
case formStore.beneficiaryFormKey:
|
|
590
865
|
case formStore.beneficialOwnerFormKey:
|
|
591
866
|
case formStore.policyholdersRepresentativeFormKey:
|
|
@@ -594,7 +869,7 @@ export default {
|
|
|
594
869
|
return false;
|
|
595
870
|
}
|
|
596
871
|
};
|
|
597
|
-
return generalCondition &&
|
|
872
|
+
return generalCondition && perMemberCondition();
|
|
598
873
|
});
|
|
599
874
|
|
|
600
875
|
const hasGBDFL = computed(() => {
|
|
@@ -607,9 +882,17 @@ export default {
|
|
|
607
882
|
if (dataStore.isBolashak || dataStore.isGons) {
|
|
608
883
|
return false;
|
|
609
884
|
}
|
|
885
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
886
|
+
return false;
|
|
887
|
+
}
|
|
888
|
+
return true;
|
|
889
|
+
}
|
|
890
|
+
case formStore.insuredFormKey: {
|
|
891
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
892
|
+
return false;
|
|
893
|
+
}
|
|
610
894
|
return true;
|
|
611
895
|
}
|
|
612
|
-
case formStore.insuredFormKey:
|
|
613
896
|
case formStore.beneficialOwnerFormKey:
|
|
614
897
|
case formStore.policyholdersRepresentativeFormKey:
|
|
615
898
|
return true;
|
|
@@ -617,8 +900,9 @@ export default {
|
|
|
617
900
|
return true;
|
|
618
901
|
}
|
|
619
902
|
};
|
|
620
|
-
return dataStore.controls.hasGBDFL && perMemberCondition();
|
|
903
|
+
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGBDFL && perMemberCondition();
|
|
621
904
|
});
|
|
905
|
+
const hasGBDFLDocSelection = dataStore.isLifetrip && whichForm.value === formStore.policyholderFormKey;
|
|
622
906
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
623
907
|
const hasGKB = computed(() => {
|
|
624
908
|
const perMemberCondition = () => {
|
|
@@ -638,10 +922,31 @@ export default {
|
|
|
638
922
|
return false;
|
|
639
923
|
}
|
|
640
924
|
};
|
|
641
|
-
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
925
|
+
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
926
|
+
});
|
|
927
|
+
const hasDocumentReader = computed(() => {
|
|
928
|
+
return !!member.value.hasAgreement && !!isTask.value && (dataStore.isAULETTI || dataStore.isAulettiParent);
|
|
929
|
+
});
|
|
930
|
+
const hasMemberSearch = computed(() => showSaveButton.value && (hasGBDFL.value || hasGKB.value || hasInsis.value || hasDocumentReader.value));
|
|
931
|
+
const hasMiddleName = computed(() => {
|
|
932
|
+
if (dataStore.isLifetrip) {
|
|
933
|
+
return false;
|
|
934
|
+
}
|
|
935
|
+
return true;
|
|
936
|
+
});
|
|
937
|
+
const hasRelationDegree = computed(() => {
|
|
938
|
+
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
939
|
+
return false;
|
|
940
|
+
}
|
|
941
|
+
if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
|
|
942
|
+
return true;
|
|
943
|
+
}
|
|
944
|
+
return false;
|
|
642
945
|
});
|
|
643
|
-
|
|
644
946
|
const hasFamilyStatus = computed(() => {
|
|
947
|
+
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
948
|
+
return false;
|
|
949
|
+
}
|
|
645
950
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
646
951
|
if (dataStore.isBolashak) {
|
|
647
952
|
return false;
|
|
@@ -658,16 +963,21 @@ export default {
|
|
|
658
963
|
return false;
|
|
659
964
|
});
|
|
660
965
|
const hasSignOfIPDL = computed(() => {
|
|
661
|
-
if (dataStore.isGons) {
|
|
966
|
+
if (dataStore.isGons || dataStore.isLifetrip) {
|
|
662
967
|
return false;
|
|
663
968
|
}
|
|
664
969
|
return true;
|
|
665
970
|
});
|
|
666
|
-
const hasSameAddressToggle = computed(
|
|
971
|
+
const hasSameAddressToggle = computed(
|
|
972
|
+
() =>
|
|
973
|
+
(whichForm.value === formStore.beneficiaryFormKey && member.value.iin !== formStore.policyholderForm.iin) ||
|
|
974
|
+
(dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage),
|
|
975
|
+
);
|
|
976
|
+
const hasWorkPositionDict = !useEnv().isProduction && dataStore.isBaiterek && dataStore.isEfoParent;
|
|
667
977
|
|
|
668
978
|
const birthDateRule = computed(() => {
|
|
669
979
|
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
670
|
-
const
|
|
980
|
+
const byMemberAndProductRule = () => {
|
|
671
981
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
672
982
|
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
673
983
|
return dataStore.rules.age18ByDate;
|
|
@@ -677,10 +987,13 @@ export default {
|
|
|
677
987
|
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
678
988
|
return dataStore.rules.age18ByDate;
|
|
679
989
|
}
|
|
990
|
+
if (dataStore.isLifetrip) {
|
|
991
|
+
return dataStore.rules.ageExceeds80ByDate;
|
|
992
|
+
}
|
|
680
993
|
}
|
|
681
994
|
return [];
|
|
682
995
|
};
|
|
683
|
-
return baseDateRule.concat(
|
|
996
|
+
return baseDateRule.concat(byMemberAndProductRule());
|
|
684
997
|
});
|
|
685
998
|
const ageRule = computed(() => {
|
|
686
999
|
const baseAgeRule = dataStore.rules.numbers;
|
|
@@ -711,10 +1024,13 @@ export default {
|
|
|
711
1024
|
if (dataStore.isGons || dataStore.isBolashak) {
|
|
712
1025
|
return [];
|
|
713
1026
|
}
|
|
714
|
-
if (
|
|
1027
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
715
1028
|
return [];
|
|
716
1029
|
}
|
|
717
1030
|
}
|
|
1031
|
+
if (member.value.isInsuredUnderage) {
|
|
1032
|
+
return [];
|
|
1033
|
+
}
|
|
718
1034
|
return basePhoneRule;
|
|
719
1035
|
});
|
|
720
1036
|
|
|
@@ -725,6 +1041,9 @@ export default {
|
|
|
725
1041
|
return baseResidencyRule.concat(dataStore.rules.noResident);
|
|
726
1042
|
}
|
|
727
1043
|
}
|
|
1044
|
+
if (dataStore.isLifetrip) {
|
|
1045
|
+
return baseResidencyRule.concat(dataStore.rules.noResidentOffline);
|
|
1046
|
+
}
|
|
728
1047
|
return baseResidencyRule;
|
|
729
1048
|
});
|
|
730
1049
|
|
|
@@ -732,8 +1051,10 @@ export default {
|
|
|
732
1051
|
switch (whichForm.value) {
|
|
733
1052
|
case formStore.policyholderFormKey:
|
|
734
1053
|
return route.params.taskId === '0';
|
|
735
|
-
case formStore.policyholdersRepresentativeFormKey:
|
|
736
1054
|
case formStore.insuredFormKey:
|
|
1055
|
+
if (dataStore.isPension) return route.params.taskId === '0';
|
|
1056
|
+
return route.query.id === '0';
|
|
1057
|
+
case formStore.policyholdersRepresentativeFormKey:
|
|
737
1058
|
case formStore.beneficiaryFormKey:
|
|
738
1059
|
case formStore.beneficialOwnerFormKey:
|
|
739
1060
|
return route.query.id === '0';
|
|
@@ -742,6 +1063,8 @@ export default {
|
|
|
742
1063
|
const otpCondition = computed(() => {
|
|
743
1064
|
// Add conditions by product
|
|
744
1065
|
if (member.value.hasAgreement) return false;
|
|
1066
|
+
if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
|
|
1067
|
+
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
|
|
745
1068
|
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
|
|
746
1069
|
return getOtpConditionByMember();
|
|
747
1070
|
});
|
|
@@ -749,45 +1072,72 @@ export default {
|
|
|
749
1072
|
const searchMember = async () => {
|
|
750
1073
|
if (!isDisabled.value) {
|
|
751
1074
|
dataStore.panelAction = null;
|
|
752
|
-
dataStore.
|
|
753
|
-
dataStore.
|
|
1075
|
+
dataStore.rightPanel.title = hasDocumentReader.value ? 'Получение данных со скана документа' : 'Поиск контрагента';
|
|
1076
|
+
dataStore.rightPanel.open = true;
|
|
754
1077
|
isSearchOpen.value = true;
|
|
755
1078
|
isDocumentOpen.value = false;
|
|
756
1079
|
isOtpPanelOpen.value = false;
|
|
757
1080
|
isPanelOpen.value = false;
|
|
1081
|
+
isPositionPanelOpen.value = false;
|
|
758
1082
|
} else {
|
|
759
1083
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
760
1084
|
}
|
|
761
1085
|
};
|
|
762
1086
|
|
|
1087
|
+
const searchPositions = async () => {
|
|
1088
|
+
if (!isDisabled.value) {
|
|
1089
|
+
isPanelLoading.value = true;
|
|
1090
|
+
positionsList.value = await dataStore.getWorkPosition(searchQuery.value);
|
|
1091
|
+
isPanelLoading.value = false;
|
|
1092
|
+
} else {
|
|
1093
|
+
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
1094
|
+
}
|
|
1095
|
+
};
|
|
1096
|
+
|
|
1097
|
+
const pickPosition = (position: { workPositionName: string | null; workPositionCode: string | null | 'other' }) => {
|
|
1098
|
+
member.value.jobPosition = position.workPositionName;
|
|
1099
|
+
member.value.positionCode = position.workPositionCode;
|
|
1100
|
+
dataStore.rightPanel.open = false;
|
|
1101
|
+
};
|
|
1102
|
+
|
|
763
1103
|
const scrollForm = (direction: 'up' | 'down') => {
|
|
764
1104
|
vForm.value.scrollTo({ top: direction === 'up' ? 0 : screen.height * 10, behavior: 'smooth' });
|
|
765
1105
|
};
|
|
766
1106
|
|
|
767
|
-
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
1107
|
+
const openCustomPanel = (type: 'document' | 'otp' | 'workPosition' = 'document') => {
|
|
768
1108
|
dataStore.panelAction = null;
|
|
769
1109
|
if (type === 'document' && memberDocument.value) {
|
|
770
|
-
dataStore.
|
|
1110
|
+
dataStore.rightPanel.title = memberDocument.value.fileTypeName!;
|
|
771
1111
|
isDocumentOpen.value = true;
|
|
772
1112
|
isSearchOpen.value = false;
|
|
773
1113
|
isPanelOpen.value = false;
|
|
774
1114
|
isOtpPanelOpen.value = false;
|
|
1115
|
+
isPositionPanelOpen.value = false;
|
|
775
1116
|
}
|
|
776
1117
|
if (type === 'otp') {
|
|
777
|
-
dataStore.
|
|
1118
|
+
dataStore.rightPanel.title = dataStore.t('form.otpCode');
|
|
778
1119
|
isOtpPanelOpen.value = true;
|
|
779
1120
|
isDocumentOpen.value = false;
|
|
780
1121
|
isSearchOpen.value = false;
|
|
781
1122
|
isPanelOpen.value = false;
|
|
1123
|
+
isPositionPanelOpen.value = false;
|
|
1124
|
+
}
|
|
1125
|
+
if (type === 'workPosition') {
|
|
1126
|
+
isPositionPanelOpen.value = true;
|
|
1127
|
+
isOtpPanelOpen.value = false;
|
|
1128
|
+
isDocumentOpen.value = false;
|
|
1129
|
+
isSearchOpen.value = false;
|
|
1130
|
+
isPanelOpen.value = false;
|
|
782
1131
|
}
|
|
783
|
-
dataStore.
|
|
1132
|
+
dataStore.rightPanel.open = true;
|
|
784
1133
|
};
|
|
785
1134
|
|
|
786
|
-
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
|
|
1135
|
+
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string, deepKey?: string, subDeepKey?: string) => {
|
|
787
1136
|
if (!isDisabled.value) {
|
|
788
1137
|
isSearchOpen.value = false;
|
|
789
1138
|
isDocumentOpen.value = false;
|
|
790
1139
|
isOtpPanelOpen.value = false;
|
|
1140
|
+
isPositionPanelOpen.value = false;
|
|
791
1141
|
// Feature
|
|
792
1142
|
// const notAllowedToChange = ['gender', 'documentType', 'documentIssuers'];
|
|
793
1143
|
// if (member.value.gotFromInsis === false && notAllowedToChange.includes(key)) {
|
|
@@ -798,16 +1148,41 @@ export default {
|
|
|
798
1148
|
currentPanel.value = key as keyof typeof member.value;
|
|
799
1149
|
isPanelOpen.value = true;
|
|
800
1150
|
dataStore.panelAction = null;
|
|
801
|
-
dataStore.
|
|
802
|
-
dataStore.
|
|
1151
|
+
dataStore.rightPanel.open = true;
|
|
1152
|
+
dataStore.rightPanel.title = title;
|
|
803
1153
|
|
|
804
1154
|
let newList = list;
|
|
805
1155
|
if (asyncFunction) {
|
|
806
1156
|
isPanelLoading.value = true;
|
|
807
|
-
|
|
1157
|
+
const filterKeys: any = {};
|
|
1158
|
+
if (!!subDeepKey) {
|
|
1159
|
+
filterKeys.key = key;
|
|
1160
|
+
filterKeys.deepKey = deepKey;
|
|
1161
|
+
filterKeys.subDeepKey = filterKey;
|
|
1162
|
+
} else {
|
|
1163
|
+
if (!!deepKey) {
|
|
1164
|
+
filterKeys.key = key;
|
|
1165
|
+
filterKeys.deepKey = filterKey;
|
|
1166
|
+
} else {
|
|
1167
|
+
filterKeys.key = filterKey;
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
newList = await asyncFunction(filterKey, member.value, filterKeys);
|
|
808
1171
|
}
|
|
809
1172
|
panelList.value = filterList(newList, key);
|
|
810
|
-
panelValue.value =
|
|
1173
|
+
panelValue.value = !!deepKey
|
|
1174
|
+
? !!subDeepKey
|
|
1175
|
+
? //@ts-ignore
|
|
1176
|
+
member.value[currentPanel.value][deepKey as any][subDeepKey as any]
|
|
1177
|
+
: //@ts-ignore
|
|
1178
|
+
member.value[currentPanel.value][deepKey as any]
|
|
1179
|
+
: member.value[currentPanel.value];
|
|
1180
|
+
if (!!deepKey) {
|
|
1181
|
+
currentPanelDeep.value = deepKey;
|
|
1182
|
+
if (!!subDeepKey) {
|
|
1183
|
+
currentPanelSubDeep.value = subDeepKey;
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
811
1186
|
isPanelLoading.value = false;
|
|
812
1187
|
} else {
|
|
813
1188
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -831,11 +1206,24 @@ export default {
|
|
|
831
1206
|
};
|
|
832
1207
|
|
|
833
1208
|
const pickPanelValue = (item: Value) => {
|
|
1209
|
+
if (!currentPanel.value) return;
|
|
834
1210
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
835
|
-
dataStore.
|
|
1211
|
+
dataStore.rightPanel.open = false;
|
|
836
1212
|
isPanelOpen.value = false;
|
|
837
|
-
|
|
838
|
-
|
|
1213
|
+
if (!!currentPanelDeep.value) {
|
|
1214
|
+
if (!!currentPanelSubDeep.value) {
|
|
1215
|
+
//@ts-ignore
|
|
1216
|
+
member.value[currentPanel.value][currentPanelDeep.value][currentPanelSubDeep.value] = item.nameRu === null ? new Value() : item;
|
|
1217
|
+
} else {
|
|
1218
|
+
//@ts-ignore
|
|
1219
|
+
member.value[currentPanel.value][currentPanelDeep.value] = item.nameRu === null ? new Value() : item;
|
|
1220
|
+
}
|
|
1221
|
+
} else {
|
|
1222
|
+
// @ts-ignore
|
|
1223
|
+
member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
|
|
1224
|
+
}
|
|
1225
|
+
currentPanelDeep.value = '';
|
|
1226
|
+
currentPanelSubDeep.value = '';
|
|
839
1227
|
} else {
|
|
840
1228
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
841
1229
|
}
|
|
@@ -864,13 +1252,102 @@ export default {
|
|
|
864
1252
|
}
|
|
865
1253
|
};
|
|
866
1254
|
|
|
867
|
-
const attachFile = (event: InputEvent) => {
|
|
1255
|
+
const attachFile = (event: InputEvent, code?: string) => {
|
|
1256
|
+
if (event.target) {
|
|
1257
|
+
fileData.value = code ? { file: (event.target as HTMLInputElement).files } : { file: (event.target as HTMLInputElement).files };
|
|
1258
|
+
} else {
|
|
1259
|
+
if (event.dataTransfer) {
|
|
1260
|
+
fileData.value = code ? { file: (event.dataTransfer as DataTransfer).files } : { file: (event.dataTransfer as DataTransfer).files };
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
};
|
|
1264
|
+
|
|
1265
|
+
const attachDocumentReader = async (event: InputEvent) => {
|
|
868
1266
|
if (event.target) {
|
|
869
|
-
|
|
1267
|
+
const target = event.target as HTMLInputElement;
|
|
1268
|
+
if (target.files && !!target.files.length) {
|
|
1269
|
+
imageDataList.value = [];
|
|
1270
|
+
await Promise.allSettled(
|
|
1271
|
+
Object.values(target.files).map(async f => {
|
|
1272
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1273
|
+
imageDataList.value.push(await getBase64());
|
|
1274
|
+
}),
|
|
1275
|
+
);
|
|
1276
|
+
}
|
|
870
1277
|
} else {
|
|
871
1278
|
if (event.dataTransfer) {
|
|
872
|
-
|
|
1279
|
+
const dataTransfer = event.dataTransfer as DataTransfer;
|
|
1280
|
+
if (!!dataTransfer.files && !!dataTransfer.files.length) {
|
|
1281
|
+
imageDataList.value = [];
|
|
1282
|
+
await Promise.allSettled(
|
|
1283
|
+
Object.values(dataTransfer.files).map(async f => {
|
|
1284
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1285
|
+
imageDataList.value.push(await getBase64());
|
|
1286
|
+
}),
|
|
1287
|
+
);
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
};
|
|
1292
|
+
|
|
1293
|
+
const getDocumentReader = async () => {
|
|
1294
|
+
if (imageDataList.value && !!imageDataList.value.length) {
|
|
1295
|
+
isButtonLoading.value = true;
|
|
1296
|
+
const parsedDocument = await callDocumentReader(imageDataList.value);
|
|
1297
|
+
if (typeof parsedDocument === 'object') {
|
|
1298
|
+
if (
|
|
1299
|
+
member.value.iin &&
|
|
1300
|
+
parsedDocument.iin &&
|
|
1301
|
+
reformatIin(parsedDocument.iin) &&
|
|
1302
|
+
member.value.iin.length === useMask().iin.length &&
|
|
1303
|
+
reformatIin(parsedDocument.iin).length === useMask().iin.length &&
|
|
1304
|
+
member.value.iin !== reformatIin(parsedDocument.iin)
|
|
1305
|
+
) {
|
|
1306
|
+
dataStore.showToaster('error', 'Не совпадают ИИН');
|
|
1307
|
+
isButtonLoading.value = false;
|
|
1308
|
+
return;
|
|
1309
|
+
}
|
|
1310
|
+
formatDateProperty(parsedDocument, 'front');
|
|
1311
|
+
member.value.parsedDocument = parsedDocument;
|
|
1312
|
+
if (parsedDocument.age) member.value.age = parsedDocument.age;
|
|
1313
|
+
if (parsedDocument.iin) member.value.iin = reformatIin(parsedDocument.iin);
|
|
1314
|
+
if (parsedDocument.gender) {
|
|
1315
|
+
if (parsedDocument.gender === 'M' || parsedDocument.gender === 'F') {
|
|
1316
|
+
const gender = dataStore.gender.find((i: Value) => i.id === (parsedDocument.gender === 'M' ? 1 : 2));
|
|
1317
|
+
if (gender) member.value.gender = gender;
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
if (parsedDocument.birthDate) member.value.birthDate = parsedDocument.birthDate;
|
|
1321
|
+
if (parsedDocument.documentIssueDate) member.value.documentDate = parsedDocument.documentIssueDate;
|
|
1322
|
+
if (parsedDocument.documentExpireDate) member.value.documentExpire = parsedDocument.documentExpireDate;
|
|
1323
|
+
if (parsedDocument.documentNumber) member.value.documentNumber = parsedDocument.documentNumber;
|
|
1324
|
+
if (parsedDocument.lastName) member.value.lastName = parsedDocument.lastName;
|
|
1325
|
+
if (parsedDocument.firstName) member.value.firstName = parsedDocument.firstName;
|
|
1326
|
+
if (parsedDocument.middleName) member.value.middleName = parsedDocument.middleName;
|
|
1327
|
+
if (parsedDocument.fullName) member.value.longName = parsedDocument.fullName;
|
|
1328
|
+
if (parsedDocument.documentName && parsedDocument.documentName.startsWith('Kazakhstan - Id Card')) {
|
|
1329
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === Enums.Insis.DocTypes['1UDL']);
|
|
1330
|
+
if (documentType) member.value.documentType = documentType;
|
|
1331
|
+
}
|
|
1332
|
+
if (!!parsedDocument.documentIssuer) {
|
|
1333
|
+
if (
|
|
1334
|
+
/МИНИСТЕРСТВО ВНУТРЕННИХ ДЕЛ( РК| РҚ)?/gi.test(parsedDocument.documentIssuer) ||
|
|
1335
|
+
/(КР |ҚР )?ІШКІ ІСТЕР МИНИСТРЛІГІ/gi.test(parsedDocument.documentIssuer) ||
|
|
1336
|
+
/ҚАЗАҚСТАН/gi.test(parsedDocument.documentIssuer) ||
|
|
1337
|
+
/КАЗАХСТАН/gi.test(parsedDocument.documentIssuer)
|
|
1338
|
+
) {
|
|
1339
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp('МВД РК', 'i')));
|
|
1340
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1341
|
+
} else {
|
|
1342
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp(`${parsedDocument.documentIssuer}`, 'i')));
|
|
1343
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1344
|
+
}
|
|
1345
|
+
}
|
|
1346
|
+
dataStore.rightPanel.open = false;
|
|
1347
|
+
dataStore.showToaster('success', dataStore.t('toaster.successOperation'));
|
|
1348
|
+
imageDataList.value = [];
|
|
873
1349
|
}
|
|
1350
|
+
isButtonLoading.value = false;
|
|
874
1351
|
}
|
|
875
1352
|
};
|
|
876
1353
|
|
|
@@ -904,11 +1381,11 @@ export default {
|
|
|
904
1381
|
familyDialog.value = false;
|
|
905
1382
|
selectedFamilyMember.value = {};
|
|
906
1383
|
isButtonLoading.value = false;
|
|
907
|
-
dataStore.
|
|
1384
|
+
dataStore.rightPanel.open = false;
|
|
908
1385
|
isSearchOpen.value = false;
|
|
909
1386
|
};
|
|
910
1387
|
|
|
911
|
-
const selectFamilyMember = (familyMember:
|
|
1388
|
+
const selectFamilyMember = (familyMember: Api.GKB.BirthInfo) => {
|
|
912
1389
|
if (selectedFamilyMember.value && selectedFamilyMember.value.childIIN === familyMember.childIIN) {
|
|
913
1390
|
selectedFamilyMember.value = {};
|
|
914
1391
|
} else {
|
|
@@ -921,20 +1398,20 @@ export default {
|
|
|
921
1398
|
}
|
|
922
1399
|
familyDialog.value = false;
|
|
923
1400
|
isButtonLoading.value = false;
|
|
924
|
-
dataStore.
|
|
1401
|
+
dataStore.rightPanel.open = false;
|
|
925
1402
|
isSearchOpen.value = false;
|
|
926
1403
|
};
|
|
927
1404
|
|
|
928
1405
|
const getContragentFromGBDFL = async () => {
|
|
929
1406
|
if (member.value.hasAgreement !== true) {
|
|
930
1407
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
931
|
-
dataStore.
|
|
1408
|
+
dataStore.rightPanel.open = false;
|
|
932
1409
|
isSearchOpen.value = false;
|
|
933
1410
|
return;
|
|
934
1411
|
}
|
|
935
1412
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
936
1413
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
937
|
-
dataStore.
|
|
1414
|
+
dataStore.rightPanel.open = false;
|
|
938
1415
|
isSearchOpen.value = false;
|
|
939
1416
|
return;
|
|
940
1417
|
}
|
|
@@ -943,34 +1420,55 @@ export default {
|
|
|
943
1420
|
if (typeof response === 'boolean') {
|
|
944
1421
|
if (response === true) {
|
|
945
1422
|
member.value.gotFromInsis = true;
|
|
1423
|
+
if (hasGBDFLDocSelection) documentChooseDialog.value = true;
|
|
946
1424
|
}
|
|
947
|
-
dataStore.
|
|
1425
|
+
dataStore.rightPanel.open = false;
|
|
948
1426
|
isSearchOpen.value = false;
|
|
949
1427
|
}
|
|
950
1428
|
isButtonLoading.value = false;
|
|
951
1429
|
};
|
|
952
1430
|
|
|
1431
|
+
const selectGbdDocument = (document: Api.GBD.Document) => {
|
|
1432
|
+
if (document) {
|
|
1433
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === Object.keys(Enums.GBD.DocTypes)[Object.values(Enums.GBD.DocTypes).indexOf(document.type.code)]);
|
|
1434
|
+
if (documentType) member.value.documentType = documentType;
|
|
1435
|
+
const documentNumber = document.number;
|
|
1436
|
+
if (documentNumber) member.value.documentNumber = documentNumber;
|
|
1437
|
+
const documentDate = document.beginDate;
|
|
1438
|
+
if (documentDate) member.value.documentDate = reformatDate(documentDate);
|
|
1439
|
+
const documentExpire = document.endDate;
|
|
1440
|
+
if (documentExpire) member.value.documentExpire = reformatDate(documentExpire);
|
|
1441
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp('МВД РК', 'i')));
|
|
1442
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1443
|
+
}
|
|
1444
|
+
documentChooseDialog.value = false;
|
|
1445
|
+
isButtonLoading.value = false;
|
|
1446
|
+
dataStore.rightPanel.open = false;
|
|
1447
|
+
isSearchOpen.value = false;
|
|
1448
|
+
};
|
|
1449
|
+
|
|
953
1450
|
const getContragent = async () => {
|
|
954
1451
|
if (member.value.hasAgreement !== true) {
|
|
955
1452
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
956
|
-
dataStore.
|
|
1453
|
+
dataStore.rightPanel.open = false;
|
|
957
1454
|
isSearchOpen.value = false;
|
|
958
1455
|
return;
|
|
959
1456
|
}
|
|
960
1457
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
961
1458
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
962
|
-
dataStore.
|
|
1459
|
+
dataStore.rightPanel.open = false;
|
|
963
1460
|
isSearchOpen.value = false;
|
|
964
1461
|
return;
|
|
965
1462
|
}
|
|
966
1463
|
isButtonLoading.value = true;
|
|
967
1464
|
await dataStore.getContragent(member.value, false);
|
|
968
1465
|
isButtonLoading.value = false;
|
|
969
|
-
dataStore.
|
|
1466
|
+
dataStore.rightPanel.open = false;
|
|
970
1467
|
isSearchOpen.value = false;
|
|
971
1468
|
};
|
|
972
1469
|
|
|
973
1470
|
const validateESBD = async (docTypeNumber: number) => {
|
|
1471
|
+
// TODO
|
|
974
1472
|
const data: ESBDValidationType = {
|
|
975
1473
|
personType: 1,
|
|
976
1474
|
iin: member.value.iin!.replaceAll('-', ''),
|
|
@@ -984,9 +1482,9 @@ export default {
|
|
|
984
1482
|
docIssuedDate: member.value.getDateByKey('documentDate') ?? '',
|
|
985
1483
|
docIssuedBy: member.value.documentIssuers.nameRu ?? '',
|
|
986
1484
|
activityKindId: 0,
|
|
987
|
-
economicsSectorId: Number((member.value.economySectorCode.ids
|
|
1485
|
+
economicsSectorId: Number(String(member.value.economySectorCode.ids).at(-1)),
|
|
988
1486
|
resident: member.value.signOfResidency.ids === '500011.2' || member.value.signOfResidency.ids === null ? 0 : 1,
|
|
989
|
-
countryId: Number((member.value.countryOfTaxResidency.ids
|
|
1487
|
+
countryId: member.value.countryOfTaxResidency.ids !== '500014.3' ? Number(String(member.value.countryOfTaxResidency.ids).at(-1)) : 2,
|
|
990
1488
|
};
|
|
991
1489
|
return await dataStore.getValidateClientESBD(data);
|
|
992
1490
|
};
|
|
@@ -999,10 +1497,10 @@ export default {
|
|
|
999
1497
|
}
|
|
1000
1498
|
const isInsured = formStore.isPolicyholderInsured;
|
|
1001
1499
|
const remoteIsInsured = ref<boolean | null>(null);
|
|
1002
|
-
if (whichForm.value == formStore.policyholderFormKey) {
|
|
1500
|
+
if (whichForm.value == formStore.policyholderFormKey || (dataStore.isPension && whichForm.value == formStore.insuredFormKey)) {
|
|
1003
1501
|
if (route.params.taskId === '0') {
|
|
1004
1502
|
try {
|
|
1005
|
-
const taskId = await dataStore.startApplication(member.value);
|
|
1503
|
+
const taskId = await dataStore.startApplication(member.value, dataStore.isPension ? (String(route.query.type) === 'joint' ? 4 : 19) : undefined);
|
|
1006
1504
|
if (typeof taskId === 'string') {
|
|
1007
1505
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1008
1506
|
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
@@ -1036,18 +1534,44 @@ export default {
|
|
|
1036
1534
|
if (!isSaved) return false;
|
|
1037
1535
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
1038
1536
|
if (isInsured === true || remoteIsInsured.value === true) {
|
|
1039
|
-
formStore.insuredForm
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1537
|
+
const insuredFormIndex = remoteIsInsured.value === true ? 0 : isInsured === true ? formStore.insuredForm.findIndex(i => i.iin === formStore.policyholderForm.iin) : -1;
|
|
1538
|
+
if (insuredFormIndex !== -1) {
|
|
1539
|
+
formStore.insuredForm[insuredFormIndex] = formStore.policyholderForm;
|
|
1540
|
+
const isInsuredSaved = await dataStore.saveMember(
|
|
1541
|
+
member.value,
|
|
1542
|
+
memberStore.getMemberCode(formStore.insuredFormKey)!,
|
|
1543
|
+
memberStore.getMemberFromApplication(formStore.insuredFormKey, insuredFormIndex),
|
|
1544
|
+
);
|
|
1545
|
+
if (!isInsuredSaved) return false;
|
|
1546
|
+
wasInsuredAction.value = true;
|
|
1547
|
+
}
|
|
1047
1548
|
}
|
|
1048
1549
|
}
|
|
1049
1550
|
if (whichForm.value === formStore.insuredFormKey) {
|
|
1050
1551
|
wasInsuredAction.value = true;
|
|
1552
|
+
if (dataStore.isPension) {
|
|
1553
|
+
formStore.applicationData.pensionApp = {
|
|
1554
|
+
...formStore.applicationData.pensionApp,
|
|
1555
|
+
account: member.value.bankInfo.iik,
|
|
1556
|
+
bankBik: member.value.bankInfo.bik,
|
|
1557
|
+
bankBin: member.value.bankInfo.bankName.ids,
|
|
1558
|
+
bankId: member.value.bankInfo.bankName.id,
|
|
1559
|
+
bankName: member.value.bankInfo.bankName.nameRu,
|
|
1560
|
+
guaranteedPeriod: 0,
|
|
1561
|
+
amount: 0,
|
|
1562
|
+
compulsoryContractAmount: 0,
|
|
1563
|
+
voluntaryContractAmount: 0,
|
|
1564
|
+
ownFundsRaisAmount: 0,
|
|
1565
|
+
compulsoryProfContractAmount: 0,
|
|
1566
|
+
};
|
|
1567
|
+
const data = {
|
|
1568
|
+
...formStore.applicationData.pensionApp,
|
|
1569
|
+
transferContractCompany: formStore.applicationData.pensionApp.transferContractCompany?.nameRu ?? null,
|
|
1570
|
+
};
|
|
1571
|
+
const isApplicationSaved = await dataStore.setApplication(data);
|
|
1572
|
+
if (isApplicationSaved === false) return;
|
|
1573
|
+
dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
|
|
1574
|
+
}
|
|
1051
1575
|
}
|
|
1052
1576
|
await router.replace({
|
|
1053
1577
|
name: route.name!,
|
|
@@ -1056,8 +1580,8 @@ export default {
|
|
|
1056
1580
|
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
1057
1581
|
if (dataStore.controls.hasCalculator) {
|
|
1058
1582
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
1059
|
-
formStore.additionalInsuranceTerms.forEach(
|
|
1060
|
-
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(
|
|
1583
|
+
formStore.additionalInsuranceTerms.forEach(term => {
|
|
1584
|
+
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
|
|
1061
1585
|
if (defaultTerm) {
|
|
1062
1586
|
term.coverSumName = defaultTerm.coverSumName;
|
|
1063
1587
|
term.coverSumId = defaultTerm.coverSumId;
|
|
@@ -1071,14 +1595,16 @@ export default {
|
|
|
1071
1595
|
};
|
|
1072
1596
|
|
|
1073
1597
|
const validateAgreement = () => {
|
|
1074
|
-
if (dataStore.
|
|
1075
|
-
|
|
1076
|
-
|
|
1598
|
+
if (dataStore.isPension && whichForm.value === formStore.policyholdersRepresentativeFormKey) {
|
|
1599
|
+
return true;
|
|
1600
|
+
}
|
|
1601
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1602
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
1077
1603
|
return true;
|
|
1078
1604
|
}
|
|
1079
1605
|
}
|
|
1080
|
-
if (
|
|
1081
|
-
if (
|
|
1606
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
1607
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
1082
1608
|
return true;
|
|
1083
1609
|
}
|
|
1084
1610
|
}
|
|
@@ -1096,10 +1622,20 @@ export default {
|
|
|
1096
1622
|
if (v.valid) {
|
|
1097
1623
|
isSubmittingForm.value = true;
|
|
1098
1624
|
const docType = member.value.documentType.ids;
|
|
1099
|
-
if (
|
|
1625
|
+
if (
|
|
1626
|
+
member.value.gotFromInsis === true &&
|
|
1627
|
+
(docType === Enums.Insis.DocTypes['1UDL'] || docType === Enums.Insis.DocTypes.SBI || docType === Enums.Insis.DocTypes.PS || docType === Enums.Insis.DocTypes.VNZ)
|
|
1628
|
+
) {
|
|
1100
1629
|
dataStore.isLoading = true;
|
|
1101
|
-
const
|
|
1630
|
+
const docTypeCodes = {
|
|
1631
|
+
'1UDL': 1,
|
|
1632
|
+
PS: 2,
|
|
1633
|
+
SBI: 3,
|
|
1634
|
+
VNZ: 4,
|
|
1635
|
+
};
|
|
1636
|
+
const ESBDResponse = await validateESBD(docTypeCodes[docType]);
|
|
1102
1637
|
if (!ESBDResponse) {
|
|
1638
|
+
isSubmittingForm.value = false;
|
|
1103
1639
|
dataStore.isLoading = false;
|
|
1104
1640
|
return;
|
|
1105
1641
|
}
|
|
@@ -1109,6 +1645,22 @@ export default {
|
|
|
1109
1645
|
if (typeof ESBDResponse === 'object' && ESBDResponse.errorCode === 0) {
|
|
1110
1646
|
member.value.verifyType = 'ESBD';
|
|
1111
1647
|
member.value.verifyDate = ESBDResponse.verifiedDate;
|
|
1648
|
+
|
|
1649
|
+
if (member.value.bankInfo.iik.length === useMask().iik.length) {
|
|
1650
|
+
const isValidIik = await dataStore.checkAccountNumber(member.value.bankInfo.iik);
|
|
1651
|
+
if (isValidIik === false) {
|
|
1652
|
+
dataStore.showToaster('error', dataStore.t('error.notValidIik'));
|
|
1653
|
+
member.value.bankInfo.iik = '';
|
|
1654
|
+
isSubmittingForm.value = false;
|
|
1655
|
+
return;
|
|
1656
|
+
}
|
|
1657
|
+
if (formStore.applicationData.pensionApp) {
|
|
1658
|
+
formStore.applicationData.pensionApp.account = member.value.bankInfo.iik;
|
|
1659
|
+
formStore.applicationData.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1660
|
+
formStore.applicationData.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1661
|
+
formStore.applicationData.pensionApp.bankId = member.value.bankInfo.bankName.id;
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1112
1664
|
const hasMemberSaved = await saveMember();
|
|
1113
1665
|
} else {
|
|
1114
1666
|
dataStore.isLoading = false;
|
|
@@ -1153,7 +1705,7 @@ export default {
|
|
|
1153
1705
|
}
|
|
1154
1706
|
otpSending.value = false;
|
|
1155
1707
|
if (checked === true) {
|
|
1156
|
-
dataStore.
|
|
1708
|
+
dataStore.rightPanel.open = false;
|
|
1157
1709
|
}
|
|
1158
1710
|
};
|
|
1159
1711
|
|
|
@@ -1163,7 +1715,7 @@ export default {
|
|
|
1163
1715
|
if (response) {
|
|
1164
1716
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1165
1717
|
if (response.otpStatus === true) {
|
|
1166
|
-
dataStore.
|
|
1718
|
+
dataStore.rightPanel.open = false;
|
|
1167
1719
|
}
|
|
1168
1720
|
}
|
|
1169
1721
|
otpSending.value = false;
|
|
@@ -1177,6 +1729,15 @@ export default {
|
|
|
1177
1729
|
if (setDefaults.percentage) {
|
|
1178
1730
|
setPercentage();
|
|
1179
1731
|
}
|
|
1732
|
+
if (setDefaults.signOfResidency) {
|
|
1733
|
+
setSignOfResidency();
|
|
1734
|
+
}
|
|
1735
|
+
if (setDefaults.countryOfTaxResidency) {
|
|
1736
|
+
setCountryOfTaxResidency();
|
|
1737
|
+
}
|
|
1738
|
+
if (setDefaults.countryOfCitizenship) {
|
|
1739
|
+
setCountryOfCitizenship();
|
|
1740
|
+
}
|
|
1180
1741
|
};
|
|
1181
1742
|
|
|
1182
1743
|
const setSectorCode = async () => {
|
|
@@ -1186,7 +1747,27 @@ export default {
|
|
|
1186
1747
|
member.value.economySectorCode = defaultValue ? defaultValue : new Value();
|
|
1187
1748
|
}
|
|
1188
1749
|
};
|
|
1189
|
-
|
|
1750
|
+
const setSignOfResidency = async () => {
|
|
1751
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1752
|
+
const residents = await dataStore.getResidents();
|
|
1753
|
+
const defaultValue = residents.find(item => String(item.nameRu).match(new RegExp('Резидент', 'i'))) as Value;
|
|
1754
|
+
member.value.signOfResidency = defaultValue ? defaultValue : new Value();
|
|
1755
|
+
}
|
|
1756
|
+
};
|
|
1757
|
+
const setCountryOfTaxResidency = async () => {
|
|
1758
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1759
|
+
const taxCountries = await dataStore.getTaxCountries();
|
|
1760
|
+
const defaultValue = taxCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1761
|
+
member.value.countryOfTaxResidency = defaultValue ? defaultValue : new Value();
|
|
1762
|
+
}
|
|
1763
|
+
};
|
|
1764
|
+
const setCountryOfCitizenship = async () => {
|
|
1765
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1766
|
+
const citizenshipCountries = await dataStore.getCitizenshipCountries();
|
|
1767
|
+
const defaultValue = citizenshipCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1768
|
+
member.value.countryOfCitizenship = defaultValue ? defaultValue : new Value();
|
|
1769
|
+
}
|
|
1770
|
+
};
|
|
1190
1771
|
const setPercentage = () => {
|
|
1191
1772
|
if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
|
|
1192
1773
|
if (dataStore.members.beneficiaryApp.isMultiple) {
|
|
@@ -1203,7 +1784,7 @@ export default {
|
|
|
1203
1784
|
};
|
|
1204
1785
|
|
|
1205
1786
|
const selectMember = async (index: number, update?: boolean) => {
|
|
1206
|
-
dataStore.
|
|
1787
|
+
dataStore.rightPanel.open = false;
|
|
1207
1788
|
isButtonLoading.value = true;
|
|
1208
1789
|
isChangingMember.value = true;
|
|
1209
1790
|
//@ts-ignore
|
|
@@ -1212,13 +1793,19 @@ export default {
|
|
|
1212
1793
|
isButtonLoading.value = false;
|
|
1213
1794
|
};
|
|
1214
1795
|
|
|
1215
|
-
const
|
|
1216
|
-
|
|
1796
|
+
const openDeletionDialog = (index: number) => {
|
|
1797
|
+
deletionDialog.value = true;
|
|
1798
|
+
selectedIndex.value = index;
|
|
1799
|
+
};
|
|
1800
|
+
|
|
1801
|
+
const deleteMember = async () => {
|
|
1802
|
+
await memberStore.deleteMember(route.params.taskId as string, whichForm.value, selectedIndex.value);
|
|
1217
1803
|
const currentIndex = Number(whichIndex.value);
|
|
1218
|
-
if (
|
|
1804
|
+
if (selectedIndex.value <= currentIndex) {
|
|
1219
1805
|
const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
|
|
1220
|
-
await selectMember(newIndex.value,
|
|
1806
|
+
await selectMember(newIndex.value, selectedIndex.value === currentIndex ? true : undefined);
|
|
1221
1807
|
}
|
|
1808
|
+
deletionDialog.value = false;
|
|
1222
1809
|
};
|
|
1223
1810
|
|
|
1224
1811
|
const onInit = async () => {
|
|
@@ -1234,12 +1821,30 @@ export default {
|
|
|
1234
1821
|
await router.replace({ query: { ...route.query, id: 0 } });
|
|
1235
1822
|
} else {
|
|
1236
1823
|
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1824
|
+
if (dataStore.isLifetrip) {
|
|
1825
|
+
const documentByPriority = (() => {
|
|
1826
|
+
if (whichForm.value !== formStore.policyholderFormKey || formStore.isPolicyholderInsured === true) {
|
|
1827
|
+
return member.value.documentsList.find(i => i.type === Enums.Insis.DocTypes.PS);
|
|
1828
|
+
}
|
|
1829
|
+
return member.value.documentsList.find(i => i.type === Enums.Insis.DocTypes['1UDL']);
|
|
1830
|
+
})();
|
|
1831
|
+
const userDocument = documentByPriority ? documentByPriority : member.value.documentsList[0];
|
|
1832
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === userDocument.type);
|
|
1833
|
+
const documentIssuer = dataStore.documentIssuers.find((i: Value) => i.nameRu === userDocument.issuerNameRu);
|
|
1834
|
+
member.value.documentType = documentType ? documentType : new Value();
|
|
1835
|
+
member.value.documentNumber = userDocument.number;
|
|
1836
|
+
member.value.documentIssuers = documentIssuer ? documentIssuer : new Value();
|
|
1837
|
+
member.value.documentDate = reformatDate(userDocument.issueDate);
|
|
1838
|
+
member.value.documentExpire = reformatDate(userDocument.expireDate);
|
|
1839
|
+
}
|
|
1840
|
+
|
|
1237
1841
|
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1238
1842
|
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1239
1843
|
}
|
|
1240
1844
|
await setDefaultValues();
|
|
1845
|
+
if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
|
|
1846
|
+
if (hasWorkPositionDict && member.value.positionCode === null) member.value.jobPosition = null;
|
|
1241
1847
|
};
|
|
1242
|
-
|
|
1243
1848
|
onMounted(async () => {
|
|
1244
1849
|
await onInit();
|
|
1245
1850
|
});
|
|
@@ -1248,6 +1853,7 @@ export default {
|
|
|
1248
1853
|
() => sameAddress.value,
|
|
1249
1854
|
() => {
|
|
1250
1855
|
if (whichForm.value === formStore.beneficiaryFormKey) setAddressBeneficiary(Number(whichIndex.value), sameAddress.value);
|
|
1856
|
+
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) setAddressInsured(Number(whichIndex.value), sameAddress.value);
|
|
1251
1857
|
},
|
|
1252
1858
|
);
|
|
1253
1859
|
|
|
@@ -1302,14 +1908,17 @@ export default {
|
|
|
1302
1908
|
};
|
|
1303
1909
|
|
|
1304
1910
|
watch(
|
|
1305
|
-
() => dataStore.
|
|
1911
|
+
() => dataStore.rightPanel.open,
|
|
1306
1912
|
() => {
|
|
1307
|
-
if (dataStore.
|
|
1913
|
+
if (dataStore.rightPanel.open === false) {
|
|
1308
1914
|
isPanelOpen.value = false;
|
|
1309
1915
|
isDocumentOpen.value = false;
|
|
1310
1916
|
isSearchOpen.value = false;
|
|
1311
1917
|
isOtpPanelOpen.value = false;
|
|
1918
|
+
isPositionPanelOpen.value = false;
|
|
1312
1919
|
dataStore.panelAction = null;
|
|
1920
|
+
currentPanelDeep.value = '';
|
|
1921
|
+
currentPanelSubDeep.value = '';
|
|
1313
1922
|
}
|
|
1314
1923
|
},
|
|
1315
1924
|
{ immediate: true },
|
|
@@ -1320,6 +1929,51 @@ export default {
|
|
|
1320
1929
|
searchQuery.value = '';
|
|
1321
1930
|
}
|
|
1322
1931
|
});
|
|
1932
|
+
if (dataStore.isLifetrip) {
|
|
1933
|
+
watch(
|
|
1934
|
+
() => member.value.age,
|
|
1935
|
+
val => {
|
|
1936
|
+
if (val && Number(val) >= 18) {
|
|
1937
|
+
if (member.value.hasAgreement !== true) {
|
|
1938
|
+
member.value.hasAgreement = false;
|
|
1939
|
+
}
|
|
1940
|
+
} else {
|
|
1941
|
+
member.value.hasAgreement = true;
|
|
1942
|
+
}
|
|
1943
|
+
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1944
|
+
},
|
|
1945
|
+
{ immediate: true },
|
|
1946
|
+
);
|
|
1947
|
+
watch(
|
|
1948
|
+
() => member.value.isInsuredUnderage,
|
|
1949
|
+
val => {
|
|
1950
|
+
if (val === true && Number(member.value.age) >= 18) {
|
|
1951
|
+
member.value.isInsuredUnderage = false;
|
|
1952
|
+
return dataStore.showToaster('error', dataStore.t('toaster.underageShouldBeLess18'), 3000);
|
|
1953
|
+
}
|
|
1954
|
+
},
|
|
1955
|
+
);
|
|
1956
|
+
}
|
|
1957
|
+
if (dataStore.isPension) {
|
|
1958
|
+
watch(
|
|
1959
|
+
() => member.value.bankInfo.bankName,
|
|
1960
|
+
val => {
|
|
1961
|
+
if (val) {
|
|
1962
|
+
member.value.bankInfo.bik = val.code as string;
|
|
1963
|
+
member.value.bankInfo.bin = reformatIin(val.ids as string);
|
|
1964
|
+
}
|
|
1965
|
+
},
|
|
1966
|
+
);
|
|
1967
|
+
watch(
|
|
1968
|
+
() => member.value.isDisability,
|
|
1969
|
+
val => {
|
|
1970
|
+
if (!val) member.value.disabilityGroup = new Value();
|
|
1971
|
+
},
|
|
1972
|
+
{
|
|
1973
|
+
immediate: true,
|
|
1974
|
+
},
|
|
1975
|
+
);
|
|
1976
|
+
}
|
|
1323
1977
|
|
|
1324
1978
|
return {
|
|
1325
1979
|
// State
|
|
@@ -1331,6 +1985,7 @@ export default {
|
|
|
1331
1985
|
isSearchOpen,
|
|
1332
1986
|
isDocumentOpen,
|
|
1333
1987
|
isOtpPanelOpen,
|
|
1988
|
+
isPositionPanelOpen,
|
|
1334
1989
|
isPanelLoading,
|
|
1335
1990
|
isButtonLoading,
|
|
1336
1991
|
isSubmittingForm,
|
|
@@ -1338,13 +1993,18 @@ export default {
|
|
|
1338
1993
|
otpSending,
|
|
1339
1994
|
panelValue,
|
|
1340
1995
|
panelList,
|
|
1996
|
+
positionsList,
|
|
1341
1997
|
searchQuery,
|
|
1342
1998
|
Value,
|
|
1343
1999
|
memberDocument,
|
|
1344
2000
|
familyDialog,
|
|
2001
|
+
deletionDialog,
|
|
2002
|
+
documentChooseDialog,
|
|
2003
|
+
selectedIndex,
|
|
1345
2004
|
selectedFamilyMember,
|
|
1346
2005
|
sameAddress,
|
|
1347
|
-
|
|
2006
|
+
isRelative,
|
|
2007
|
+
imageDataList,
|
|
1348
2008
|
// Computed
|
|
1349
2009
|
whichForm,
|
|
1350
2010
|
whichIndex,
|
|
@@ -1359,10 +2019,17 @@ export default {
|
|
|
1359
2019
|
hasGBDFL,
|
|
1360
2020
|
hasInsis,
|
|
1361
2021
|
hasGKB,
|
|
2022
|
+
hasDocumentReader,
|
|
2023
|
+
hasMiddleName,
|
|
2024
|
+
hasRelationDegree,
|
|
1362
2025
|
hasFamilyStatus,
|
|
1363
2026
|
hasInsurancePay,
|
|
1364
2027
|
hasSignOfIPDL,
|
|
1365
2028
|
hasSameAddressToggle,
|
|
2029
|
+
hasMemberSearch,
|
|
2030
|
+
hasWorkPositionDict,
|
|
2031
|
+
gbdDocuments,
|
|
2032
|
+
hasGBDFLDocSelection,
|
|
1366
2033
|
|
|
1367
2034
|
// Rules
|
|
1368
2035
|
ageRule,
|
|
@@ -1382,14 +2049,20 @@ export default {
|
|
|
1382
2049
|
getContragentFromGBDFL,
|
|
1383
2050
|
getContragent,
|
|
1384
2051
|
attachFile,
|
|
2052
|
+
attachDocumentReader,
|
|
2053
|
+
getDocumentReader,
|
|
1385
2054
|
getFile,
|
|
1386
2055
|
selectFamilyMember,
|
|
1387
2056
|
closeFamilyDialog,
|
|
2057
|
+
openDeletionDialog,
|
|
1388
2058
|
scrollForm,
|
|
1389
2059
|
onIinInput,
|
|
1390
2060
|
onOtpCodeInput,
|
|
1391
2061
|
deleteMember,
|
|
1392
2062
|
selectMember,
|
|
2063
|
+
searchPositions,
|
|
2064
|
+
selectGbdDocument,
|
|
2065
|
+
pickPosition,
|
|
1393
2066
|
};
|
|
1394
2067
|
},
|
|
1395
2068
|
};
|