hl-core 0.0.9-beta.5 → 0.0.9-beta.51
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 +1042 -0
- package/api/index.ts +2 -620
- package/api/interceptors.ts +53 -14
- package/components/Button/Btn.vue +2 -2
- package/components/Complex/MessageBlock.vue +2 -2
- package/components/Complex/Page.vue +1 -1
- package/components/Dialog/Dialog.vue +60 -15
- package/components/Form/DynamicForm.vue +100 -0
- package/components/Form/FormBlock.vue +12 -3
- package/components/Form/FormData.vue +110 -0
- package/components/Form/FormSection.vue +3 -3
- package/components/Form/FormToggle.vue +25 -5
- package/components/Form/ManagerAttachment.vue +150 -86
- package/components/Form/ProductConditionsBlock.vue +59 -6
- package/components/Input/Datepicker.vue +43 -7
- package/components/Input/DynamicInput.vue +23 -0
- package/components/Input/FileInput.vue +25 -5
- package/components/Input/FormInput.vue +7 -4
- package/components/Input/Monthpicker.vue +34 -0
- package/components/Input/PanelInput.vue +5 -1
- package/components/Input/RoundedEmptyField.vue +5 -0
- package/components/Input/RoundedSelect.vue +18 -0
- package/components/Input/SwitchInput.vue +64 -0
- package/components/Input/TextInput.vue +160 -0
- package/components/Layout/Drawer.vue +17 -4
- package/components/Layout/Header.vue +23 -2
- package/components/Layout/Loader.vue +1 -1
- package/components/Layout/SettingsPanel.vue +13 -7
- package/components/Menu/InfoMenu.vue +35 -0
- package/components/Menu/MenuNav.vue +17 -2
- package/components/Pages/Anketa.vue +140 -52
- package/components/Pages/Auth.vue +50 -9
- package/components/Pages/ContragentForm.vue +124 -50
- package/components/Pages/Documents.vue +179 -29
- package/components/Pages/InvoiceInfo.vue +1 -1
- package/components/Pages/MemberForm.vue +605 -116
- package/components/Pages/ProductAgreement.vue +1 -8
- package/components/Pages/ProductConditions.vue +1055 -183
- package/components/Panel/PanelHandler.vue +583 -46
- package/components/Panel/PanelSelectItem.vue +17 -2
- package/components/Panel/RightPanelCloser.vue +7 -0
- package/components/Transitions/Animation.vue +28 -0
- package/components/Utilities/Qr.vue +44 -0
- package/composables/axios.ts +1 -0
- package/composables/classes.ts +456 -8
- package/composables/constants.ts +114 -2
- package/composables/fields.ts +328 -0
- package/composables/index.ts +270 -19
- package/composables/styles.ts +29 -16
- package/layouts/default.vue +48 -3
- package/locales/ru.json +547 -14
- package/package.json +28 -24
- package/pages/Token.vue +1 -12
- package/plugins/vuetifyPlugin.ts +2 -0
- package/store/data.store.ts +1463 -275
- package/store/extractStore.ts +17 -0
- package/store/form.store.ts +13 -1
- package/store/member.store.ts +1 -1
- package/store/rules.ts +83 -5
- package/types/enum.ts +61 -0
- package/types/env.d.ts +1 -0
- package/types/form.ts +94 -0
- package/types/index.ts +259 -23
|
@@ -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
|
-
:value="member.gender
|
|
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"
|
|
@@ -93,7 +171,7 @@
|
|
|
93
171
|
<base-panel-input
|
|
94
172
|
v-if="hasFamilyStatus"
|
|
95
173
|
v-model="member.familyStatus"
|
|
96
|
-
:value="member.familyStatus
|
|
174
|
+
:value="member.familyStatus?.nameRu"
|
|
97
175
|
:readonly="isDisabled"
|
|
98
176
|
:clearable="!isDisabled"
|
|
99
177
|
:label="$dataStore.t('form.familyStatus')"
|
|
@@ -102,9 +180,9 @@
|
|
|
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
|
-
:value="member.relationDegree
|
|
185
|
+
:value="member.relationDegree?.nameRu"
|
|
108
186
|
:readonly="isDisabled"
|
|
109
187
|
:clearable="!isDisabled"
|
|
110
188
|
:label="$dataStore.t('form.relations')"
|
|
@@ -121,6 +199,27 @@
|
|
|
121
199
|
:rules="$rules.required.concat($rules.numbers)"
|
|
122
200
|
/>
|
|
123
201
|
</base-form-section>
|
|
202
|
+
|
|
203
|
+
<base-form-section
|
|
204
|
+
v-if="$dataStore.isPension && (whichForm === formStore.insuredFormKey || whichForm === formStore.beneficiaryFormKey)"
|
|
205
|
+
:title="$dataStore.t('pension.disabilityInfo')"
|
|
206
|
+
>
|
|
207
|
+
<base-form-toggle v-model="hasDisability" :title="$dataStore.t('pension.ifHasDisability')" :disabled="isDisabled" :has-border="false" />
|
|
208
|
+
<base-animation>
|
|
209
|
+
<div class="flex flex-col gap-[1px]" v-if="hasDisability">
|
|
210
|
+
<base-panel-input
|
|
211
|
+
v-model="member.disabilityGroup"
|
|
212
|
+
:value="member.disabilityGroup?.nameRu"
|
|
213
|
+
:readonly="isDisabled"
|
|
214
|
+
:clearable="!isDisabled"
|
|
215
|
+
:label="$dataStore.t('pension.disabilityGroup')"
|
|
216
|
+
:rules="$rules.objectRequired"
|
|
217
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
218
|
+
@append="openPanel($dataStore.t('pension.disabilityGroup'), $dataStore.disabilityGroups, 'disabilityGroup', $dataStore.getDisabilityGroups)"
|
|
219
|
+
/>
|
|
220
|
+
</div>
|
|
221
|
+
</base-animation>
|
|
222
|
+
</base-form-section>
|
|
124
223
|
<base-form-section :title="$dataStore.t('policyholdersRepresentative.PowerOfAttorney')" v-if="whichForm === formStore.policyholdersRepresentativeFormKey">
|
|
125
224
|
<base-form-input
|
|
126
225
|
v-model.trim="member.fullNameRod"
|
|
@@ -231,7 +330,7 @@
|
|
|
231
330
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
232
331
|
/>
|
|
233
332
|
</base-form-section>
|
|
234
|
-
<base-form-section
|
|
333
|
+
<base-form-section v-if="$dataStore.hasJobSection(whichForm)" :title="$dataStore.t('form.jobData')">
|
|
235
334
|
<base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
236
335
|
<base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
237
336
|
<base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
@@ -240,11 +339,11 @@
|
|
|
240
339
|
<base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
|
|
241
340
|
<base-panel-input
|
|
242
341
|
v-model="member.registrationCountry"
|
|
243
|
-
:value="member.registrationCountry
|
|
342
|
+
:value="member.registrationCountry?.nameRu"
|
|
244
343
|
:readonly="isDisabled"
|
|
245
344
|
:clearable="!isDisabled"
|
|
246
345
|
:label="$dataStore.t('form.Country')"
|
|
247
|
-
:rules="$rules.objectRequired"
|
|
346
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
248
347
|
append-inner-icon="mdi mdi-chevron-right"
|
|
249
348
|
@append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
|
|
250
349
|
/>
|
|
@@ -252,42 +351,42 @@
|
|
|
252
351
|
<div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
|
|
253
352
|
<base-panel-input
|
|
254
353
|
v-model="member.registrationProvince"
|
|
255
|
-
:value="member.registrationProvince
|
|
354
|
+
:value="member.registrationProvince?.nameRu"
|
|
256
355
|
:label="$dataStore.t('form.Province')"
|
|
257
356
|
:readonly="isDisabled"
|
|
258
357
|
:clearable="!isDisabled"
|
|
259
|
-
:rules="$rules.objectRequired"
|
|
358
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
260
359
|
append-inner-icon="mdi mdi-chevron-right"
|
|
261
360
|
@append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
|
|
262
361
|
/>
|
|
263
362
|
<base-panel-input
|
|
264
363
|
v-model="member.registrationRegionType"
|
|
265
|
-
:value="member.registrationRegionType
|
|
364
|
+
:value="member.registrationRegionType?.nameRu"
|
|
266
365
|
:label="$dataStore.t('form.RegionType')"
|
|
267
366
|
:readonly="isDisabled"
|
|
268
367
|
:clearable="!isDisabled"
|
|
269
|
-
:rules="$rules.objectRequired"
|
|
368
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
270
369
|
append-inner-icon="mdi mdi-chevron-right"
|
|
271
370
|
@append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
|
|
272
371
|
/>
|
|
273
372
|
<base-panel-input
|
|
274
373
|
v-if="member.registrationRegionType.nameRu !== 'город'"
|
|
275
374
|
v-model="member.registrationRegion"
|
|
276
|
-
:value="member.registrationRegion
|
|
375
|
+
:value="member.registrationRegion?.nameRu"
|
|
277
376
|
:label="$dataStore.t('form.Region')"
|
|
278
377
|
:readonly="isDisabled"
|
|
279
378
|
:clearable="!isDisabled"
|
|
280
|
-
:rules="$rules.objectRequired"
|
|
379
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
281
380
|
append-inner-icon="mdi mdi-chevron-right"
|
|
282
381
|
@append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
|
|
283
382
|
/>
|
|
284
383
|
<base-panel-input
|
|
285
384
|
v-model="member.registrationCity"
|
|
286
|
-
:value="member.registrationCity
|
|
385
|
+
:value="member.registrationCity?.nameRu"
|
|
287
386
|
:label="$dataStore.t('form.City')"
|
|
288
387
|
:readonly="isDisabled"
|
|
289
388
|
:clearable="!isDisabled"
|
|
290
|
-
:rules="$rules.objectRequired"
|
|
389
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
291
390
|
append-inner-icon="mdi mdi-chevron-right"
|
|
292
391
|
@append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
293
392
|
/>
|
|
@@ -297,14 +396,14 @@
|
|
|
297
396
|
<base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.MicroDistrict')" />
|
|
298
397
|
<base-form-input
|
|
299
398
|
v-model.trim="member.registrationStreet"
|
|
300
|
-
:rules="$rules.required"
|
|
399
|
+
:rules="member.isInsuredUnderage ? [] : $rules.required"
|
|
301
400
|
:readonly="isDisabled"
|
|
302
401
|
:clearable="!isDisabled"
|
|
303
402
|
:label="$dataStore.t('form.Street')"
|
|
304
403
|
/>
|
|
305
404
|
<base-form-input
|
|
306
405
|
v-model.trim="member.registrationNumberHouse"
|
|
307
|
-
:rules="$rules.required"
|
|
406
|
+
:rules="member.isInsuredUnderage ? [] : $rules.required"
|
|
308
407
|
:readonly="isDisabled"
|
|
309
408
|
:clearable="!isDisabled"
|
|
310
409
|
:label="$dataStore.t('form.NumberHouse')"
|
|
@@ -316,7 +415,7 @@
|
|
|
316
415
|
<base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
|
|
317
416
|
<base-panel-input
|
|
318
417
|
v-model="member.birthPlace"
|
|
319
|
-
:value="member.birthPlace
|
|
418
|
+
:value="member.birthPlace?.nameRu"
|
|
320
419
|
:label="$dataStore.t('form.Country')"
|
|
321
420
|
:readonly="isDisabled"
|
|
322
421
|
:clearable="!isDisabled"
|
|
@@ -327,7 +426,7 @@
|
|
|
327
426
|
<!-- TODO -->
|
|
328
427
|
<!-- <base-panel-input
|
|
329
428
|
v-model="member.birthRegion"
|
|
330
|
-
:value="member.birthRegion
|
|
429
|
+
:value="member.birthRegion?.nameRu"
|
|
331
430
|
:label="$dataStore.t('form.Region')"
|
|
332
431
|
:readonly="isDisabled"
|
|
333
432
|
:clearable="!isDisabled"
|
|
@@ -339,7 +438,7 @@
|
|
|
339
438
|
<base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
|
|
340
439
|
<base-panel-input
|
|
341
440
|
v-model="member.documentType"
|
|
342
|
-
:value="member.documentType
|
|
441
|
+
:value="member.documentType?.nameRu"
|
|
343
442
|
:label="$dataStore.t('form.documentType')"
|
|
344
443
|
:readonly="isDisabled"
|
|
345
444
|
:clearable="!isDisabled"
|
|
@@ -350,7 +449,7 @@
|
|
|
350
449
|
<base-form-input
|
|
351
450
|
v-model.trim="member.documentNumber"
|
|
352
451
|
:label="$dataStore.t('form.documentNumber')"
|
|
353
|
-
:readonly="isDisabled"
|
|
452
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentNumber"
|
|
354
453
|
:clearable="!isDisabled"
|
|
355
454
|
:rules="$rules.required"
|
|
356
455
|
/>
|
|
@@ -361,9 +460,9 @@
|
|
|
361
460
|
</base-empty-form-field> -->
|
|
362
461
|
<base-panel-input
|
|
363
462
|
v-model="member.documentIssuers"
|
|
364
|
-
:value="member.documentIssuers
|
|
463
|
+
:value="member.documentIssuers?.nameRu"
|
|
365
464
|
:label="$dataStore.t('form.documentIssuers')"
|
|
366
|
-
:readonly="isDisabled"
|
|
465
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssuer"
|
|
367
466
|
:clearable="!isDisabled"
|
|
368
467
|
:rules="$rules.objectRequired"
|
|
369
468
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -372,7 +471,7 @@
|
|
|
372
471
|
<base-form-input
|
|
373
472
|
v-model="member.documentDate"
|
|
374
473
|
:label="$dataStore.t('form.documentDate')"
|
|
375
|
-
:readonly="isDisabled"
|
|
474
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssueDate"
|
|
376
475
|
:clearable="!isDisabled"
|
|
377
476
|
:rules="$rules.required.concat($rules.date)"
|
|
378
477
|
:maska="$maska.date"
|
|
@@ -383,7 +482,7 @@
|
|
|
383
482
|
v-if="member.documentType.ids !== 'SBI' && member.documentType.ids !== 'VNZ'"
|
|
384
483
|
v-model="member.documentExpire"
|
|
385
484
|
:label="$dataStore.t('form.documentExpire')"
|
|
386
|
-
:readonly="isDisabled"
|
|
485
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentExpireDate"
|
|
387
486
|
:clearable="!isDisabled"
|
|
388
487
|
:rules="$rules.required.concat($rules.date)"
|
|
389
488
|
:maska="$maska.date"
|
|
@@ -391,8 +490,9 @@
|
|
|
391
490
|
/>
|
|
392
491
|
</base-fade-transition>
|
|
393
492
|
<base-panel-input
|
|
493
|
+
v-if="!$dataStore.isLifetrip && !$dataStore.isPension"
|
|
394
494
|
v-model="member.signOfResidency"
|
|
395
|
-
:value="member.signOfResidency
|
|
495
|
+
:value="member.signOfResidency?.nameRu"
|
|
396
496
|
:label="$dataStore.t('form.signOfResidency')"
|
|
397
497
|
:readonly="isDisabled"
|
|
398
498
|
:clearable="!isDisabled"
|
|
@@ -402,7 +502,7 @@
|
|
|
402
502
|
/>
|
|
403
503
|
<base-panel-input
|
|
404
504
|
v-model="member.countryOfTaxResidency"
|
|
405
|
-
:value="member.countryOfTaxResidency
|
|
505
|
+
:value="member.countryOfTaxResidency?.nameRu"
|
|
406
506
|
:label="$dataStore.t('form.countryOfTaxResidency')"
|
|
407
507
|
:readonly="isDisabled"
|
|
408
508
|
:clearable="!isDisabled"
|
|
@@ -414,7 +514,7 @@
|
|
|
414
514
|
<base-panel-input
|
|
415
515
|
v-if="member.countryOfTaxResidency.ids === '500014.3'"
|
|
416
516
|
v-model="member.addTaxResidency"
|
|
417
|
-
:value="member.addTaxResidency
|
|
517
|
+
:value="member.addTaxResidency?.nameRu"
|
|
418
518
|
:label="$dataStore.t('form.addTaxResidency')"
|
|
419
519
|
:readonly="isDisabled"
|
|
420
520
|
:clearable="!isDisabled"
|
|
@@ -426,8 +526,8 @@
|
|
|
426
526
|
<base-panel-input
|
|
427
527
|
v-if="hasSignOfIPDL"
|
|
428
528
|
v-model="member.signOfIPDL"
|
|
429
|
-
:value="member.signOfIPDL
|
|
430
|
-
:label="$dataStore.t('form.signOfIPDL')"
|
|
529
|
+
:value="member.signOfIPDL?.nameRu"
|
|
530
|
+
:label="$dataStore.isPension ? $dataStore.t('form.signOfPDL') : $dataStore.t('form.signOfIPDL')"
|
|
431
531
|
:readonly="isDisabled"
|
|
432
532
|
:clearable="!isDisabled"
|
|
433
533
|
:rules="$rules.objectRequired"
|
|
@@ -435,8 +535,9 @@
|
|
|
435
535
|
@append="openPanel($dataStore.t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
|
|
436
536
|
/>
|
|
437
537
|
<base-panel-input
|
|
538
|
+
v-if="!$dataStore.isPension"
|
|
438
539
|
v-model="member.countryOfCitizenship"
|
|
439
|
-
:value="member.countryOfCitizenship
|
|
540
|
+
:value="member.countryOfCitizenship?.nameRu"
|
|
440
541
|
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
441
542
|
:readonly="isDisabled"
|
|
442
543
|
:clearable="!isDisabled"
|
|
@@ -446,7 +547,7 @@
|
|
|
446
547
|
/>
|
|
447
548
|
<base-panel-input
|
|
448
549
|
v-model="member.economySectorCode"
|
|
449
|
-
:value="member.economySectorCode
|
|
550
|
+
:value="member.economySectorCode?.nameRu"
|
|
450
551
|
:label="$dataStore.t('form.economySectorCode')"
|
|
451
552
|
:readonly="isDisabled"
|
|
452
553
|
:clearable="!isDisabled"
|
|
@@ -457,7 +558,7 @@
|
|
|
457
558
|
<base-panel-input
|
|
458
559
|
v-if="hasInsurancePay"
|
|
459
560
|
v-model="member.insurancePay"
|
|
460
|
-
:value="member.insurancePay
|
|
561
|
+
:value="member.insurancePay?.nameRu"
|
|
461
562
|
:readonly="isDisabled"
|
|
462
563
|
:clearable="!isDisabled"
|
|
463
564
|
:rules="$rules.objectRequired"
|
|
@@ -466,6 +567,61 @@
|
|
|
466
567
|
@append="openPanel($dataStore.t('form.insurancePay'), $dataStore.insurancePay, 'insurancePay', $dataStore.getInsurancePay)"
|
|
467
568
|
/>
|
|
468
569
|
</base-form-section>
|
|
570
|
+
<base-form-section v-if="$dataStore.hasBankSection(whichForm)" :title="$dataStore.t('bankDetailsForm.title')">
|
|
571
|
+
<base-form-input
|
|
572
|
+
v-model="member.bankInfo.iik"
|
|
573
|
+
:label="$dataStore.t('clients.form.iik')"
|
|
574
|
+
:maska="$maska.iik"
|
|
575
|
+
:readonly="isDisabled"
|
|
576
|
+
:clearable="!isDisabled"
|
|
577
|
+
:rules="$rules.required.concat($rules.iik)"
|
|
578
|
+
/>
|
|
579
|
+
<base-panel-input
|
|
580
|
+
v-model="member.bankInfo.bankName"
|
|
581
|
+
:value="member.bankInfo.bankName.nameRu"
|
|
582
|
+
:label="$dataStore.t('clients.form.nameBank')"
|
|
583
|
+
:readonly="isDisabled"
|
|
584
|
+
:clearable="!isDisabled"
|
|
585
|
+
:rules="$rules.objectRequired"
|
|
586
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
587
|
+
@append="openPanel($dataStore.t('clients.form.nameBank'), [], 'bankInfo', $dataStore.getBanks, '', 'bankName')"
|
|
588
|
+
/>
|
|
589
|
+
<base-form-input
|
|
590
|
+
v-model.trim="member.bankInfo.bin"
|
|
591
|
+
:label="$dataStore.t('form.bin')"
|
|
592
|
+
:maska="$maska.iin"
|
|
593
|
+
:readonly="isDisabled"
|
|
594
|
+
:clearable="!isDisabled"
|
|
595
|
+
:rules="$rules.required.concat($rules.iinRight)"
|
|
596
|
+
/>
|
|
597
|
+
<base-form-input v-model="member.bankInfo.bik" :label="$dataStore.t('clients.form.bik')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
598
|
+
</base-form-section>
|
|
599
|
+
<base-form-section v-if="$dataStore.hasAdditionalDocumentsSection(whichForm)" :title="$dataStore.t('form.phDocuments')">
|
|
600
|
+
<base-file-input
|
|
601
|
+
:label="$dataStore.t('form.identyDocument')"
|
|
602
|
+
:disabled="isDisabled"
|
|
603
|
+
:clearable="!isDisabled"
|
|
604
|
+
icon="mdi-paperclip"
|
|
605
|
+
@input="attachFile($event, '1')"
|
|
606
|
+
:rules="$rules.required"
|
|
607
|
+
/>
|
|
608
|
+
<base-file-input
|
|
609
|
+
:label="$dataStore.t('form.bankStatement')"
|
|
610
|
+
:disabled="isDisabled"
|
|
611
|
+
:clearable="!isDisabled"
|
|
612
|
+
icon="mdi-paperclip"
|
|
613
|
+
@input="attachFile($event, '10')"
|
|
614
|
+
:rules="$rules.required"
|
|
615
|
+
/>
|
|
616
|
+
<base-file-input
|
|
617
|
+
:label="$dataStore.t('pension.ENPFnote')"
|
|
618
|
+
:disabled="isDisabled"
|
|
619
|
+
:clearable="!isDisabled"
|
|
620
|
+
icon="mdi-paperclip"
|
|
621
|
+
@input="attachFile($event, '8')"
|
|
622
|
+
:rules="$rules.required"
|
|
623
|
+
/>
|
|
624
|
+
</base-form-section>
|
|
469
625
|
<base-form-section :title="$dataStore.t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
470
626
|
<base-form-input
|
|
471
627
|
v-model="member.homePhone"
|
|
@@ -474,13 +630,13 @@
|
|
|
474
630
|
:label="$dataStore.t('form.homePhone')"
|
|
475
631
|
:readonly="isDisabled"
|
|
476
632
|
:clearable="!isDisabled"
|
|
477
|
-
:rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
|
|
633
|
+
:rules="whichForm === formStore.beneficiaryFormKey || member.isInsuredUnderage ? [] : $rules.phoneFormat"
|
|
478
634
|
/>
|
|
479
|
-
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
|
|
635
|
+
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.email" />
|
|
480
636
|
</base-form-section>
|
|
481
637
|
</v-form>
|
|
482
638
|
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
|
|
483
|
-
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
639
|
+
<Teleport v-if="isPanelOpen" to="#right-panel-actions">
|
|
484
640
|
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
485
641
|
<base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
486
642
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
@@ -496,20 +652,34 @@
|
|
|
496
652
|
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
497
653
|
</div>
|
|
498
654
|
</Teleport>
|
|
499
|
-
<Teleport v-if="isSearchOpen" to="#panel-actions">
|
|
655
|
+
<Teleport v-if="isSearchOpen" to="#right-panel-actions">
|
|
500
656
|
<div :class="[$styles.flexColNav]">
|
|
501
657
|
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
|
|
502
658
|
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
|
|
503
659
|
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
|
|
660
|
+
<base-form-section v-if="hasDocumentReader" class="!mt-0">
|
|
661
|
+
<base-file-input
|
|
662
|
+
:disabled="isDisabled"
|
|
663
|
+
:clearable="!isDisabled"
|
|
664
|
+
accept="image/*,.pdf"
|
|
665
|
+
append="mdi-credit-card-scan-outline"
|
|
666
|
+
:multiple="true"
|
|
667
|
+
@onClear="imageDataList = []"
|
|
668
|
+
@input="attachDocumentReader($event)"
|
|
669
|
+
/>
|
|
670
|
+
</base-form-section>
|
|
671
|
+
<base-animation>
|
|
672
|
+
<base-btn v-if="hasDocumentReader && imageDataList && !!imageDataList.length" :loading="isButtonLoading" text="Получить данные" @click="getDocumentReader" />
|
|
673
|
+
</base-animation>
|
|
504
674
|
</div>
|
|
505
675
|
</Teleport>
|
|
506
|
-
<Teleport v-if="isDocumentOpen" to="#panel-actions">
|
|
676
|
+
<Teleport v-if="isDocumentOpen" to="#right-panel-actions">
|
|
507
677
|
<div :class="[$styles.flexColNav]">
|
|
508
678
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
|
|
509
679
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
|
|
510
680
|
</div>
|
|
511
681
|
</Teleport>
|
|
512
|
-
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
|
|
682
|
+
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#right-panel-actions">
|
|
513
683
|
<div :class="[$styles.flexColNav]">
|
|
514
684
|
<base-fade-transition>
|
|
515
685
|
<base-rounded-input
|
|
@@ -527,7 +697,16 @@
|
|
|
527
697
|
<base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
|
|
528
698
|
</div>
|
|
529
699
|
</Teleport>
|
|
530
|
-
<base-dialog
|
|
700
|
+
<base-dialog
|
|
701
|
+
v-model="deletionDialog"
|
|
702
|
+
:title="$dataStore.t('dialog.confirmDelete')"
|
|
703
|
+
:subtitle="$dataStore.t('dialog.delete')"
|
|
704
|
+
:confirm="$dataStore.t('confirm.delete')"
|
|
705
|
+
:icon="{ mdi: 'delete-outline', color: '#FD2D39' }"
|
|
706
|
+
@yes="deleteMember"
|
|
707
|
+
@no="deletionDialog = false"
|
|
708
|
+
/>
|
|
709
|
+
<base-dialog v-model="familyDialog" :subtitle="$dataStore.t('dialog.familyMember')" :icon="{ mdi: 'hand-pointing-up' }" actions="familyDialog">
|
|
531
710
|
<template #actions>
|
|
532
711
|
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
|
|
533
712
|
</template>
|
|
@@ -566,12 +745,20 @@ export default {
|
|
|
566
745
|
const isPanelLoading = ref<boolean>(false);
|
|
567
746
|
const isChangingMember = ref<boolean>(false);
|
|
568
747
|
const familyDialog = ref<boolean>(false);
|
|
748
|
+
const deletionDialog = ref<boolean>(false);
|
|
749
|
+
const selectedIndex = ref<number>(0);
|
|
569
750
|
const sameAddress = ref<boolean>(false);
|
|
570
751
|
const panelValue = ref<Value>(new Value());
|
|
571
752
|
const panelList = ref<Value[]>([]);
|
|
572
753
|
const currentPanel = ref<keyof typeof member.value>();
|
|
573
754
|
const searchQuery = ref<string>('');
|
|
574
755
|
const fileData = ref<{ file: any }>();
|
|
756
|
+
const imageDataList = ref<string[]>([]);
|
|
757
|
+
const isRelative = ref<boolean>(false);
|
|
758
|
+
|
|
759
|
+
const currentPanelDeep = ref<string>();
|
|
760
|
+
const currentPanelSubDeep = ref<string>();
|
|
761
|
+
const hasDisability = ref<boolean>(false);
|
|
575
762
|
|
|
576
763
|
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
577
764
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
@@ -581,11 +768,15 @@ export default {
|
|
|
581
768
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
582
769
|
const showSaveButton = computed(() => {
|
|
583
770
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
584
|
-
const
|
|
771
|
+
const perMemberCondition = () => {
|
|
585
772
|
switch (whichForm.value) {
|
|
586
773
|
case formStore.policyholderFormKey:
|
|
587
774
|
return true;
|
|
588
775
|
case formStore.insuredFormKey:
|
|
776
|
+
if (dataStore.isPension) {
|
|
777
|
+
return true;
|
|
778
|
+
}
|
|
779
|
+
return route.params.taskId !== '0';
|
|
589
780
|
case formStore.beneficiaryFormKey:
|
|
590
781
|
case formStore.beneficialOwnerFormKey:
|
|
591
782
|
case formStore.policyholdersRepresentativeFormKey:
|
|
@@ -594,7 +785,7 @@ export default {
|
|
|
594
785
|
return false;
|
|
595
786
|
}
|
|
596
787
|
};
|
|
597
|
-
return generalCondition &&
|
|
788
|
+
return generalCondition && perMemberCondition();
|
|
598
789
|
});
|
|
599
790
|
|
|
600
791
|
const hasGBDFL = computed(() => {
|
|
@@ -607,9 +798,17 @@ export default {
|
|
|
607
798
|
if (dataStore.isBolashak || dataStore.isGons) {
|
|
608
799
|
return false;
|
|
609
800
|
}
|
|
801
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
802
|
+
return false;
|
|
803
|
+
}
|
|
804
|
+
return true;
|
|
805
|
+
}
|
|
806
|
+
case formStore.insuredFormKey: {
|
|
807
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
808
|
+
return false;
|
|
809
|
+
}
|
|
610
810
|
return true;
|
|
611
811
|
}
|
|
612
|
-
case formStore.insuredFormKey:
|
|
613
812
|
case formStore.beneficialOwnerFormKey:
|
|
614
813
|
case formStore.policyholdersRepresentativeFormKey:
|
|
615
814
|
return true;
|
|
@@ -617,7 +816,7 @@ export default {
|
|
|
617
816
|
return true;
|
|
618
817
|
}
|
|
619
818
|
};
|
|
620
|
-
return dataStore.controls.hasGBDFL && perMemberCondition();
|
|
819
|
+
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGBDFL && perMemberCondition();
|
|
621
820
|
});
|
|
622
821
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
623
822
|
const hasGKB = computed(() => {
|
|
@@ -640,8 +839,29 @@ export default {
|
|
|
640
839
|
};
|
|
641
840
|
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
642
841
|
});
|
|
643
|
-
|
|
842
|
+
const hasDocumentReader = computed(() => {
|
|
843
|
+
return !!member.value.hasAgreement && !!isTask.value && (dataStore.isAULETTI || dataStore.isAulettiParent);
|
|
844
|
+
});
|
|
845
|
+
const hasMemberSearch = computed(() => showSaveButton.value && (hasGBDFL.value || hasGKB.value || hasInsis.value || hasDocumentReader.value));
|
|
846
|
+
const hasMiddleName = computed(() => {
|
|
847
|
+
if (dataStore.isLifetrip) {
|
|
848
|
+
return false;
|
|
849
|
+
}
|
|
850
|
+
return true;
|
|
851
|
+
});
|
|
852
|
+
const hasRelationDegree = computed(() => {
|
|
853
|
+
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
854
|
+
return false;
|
|
855
|
+
}
|
|
856
|
+
if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
|
|
857
|
+
return true;
|
|
858
|
+
}
|
|
859
|
+
return false;
|
|
860
|
+
});
|
|
644
861
|
const hasFamilyStatus = computed(() => {
|
|
862
|
+
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
863
|
+
return false;
|
|
864
|
+
}
|
|
645
865
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
646
866
|
if (dataStore.isBolashak) {
|
|
647
867
|
return false;
|
|
@@ -658,7 +878,7 @@ export default {
|
|
|
658
878
|
return false;
|
|
659
879
|
});
|
|
660
880
|
const hasSignOfIPDL = computed(() => {
|
|
661
|
-
if (dataStore.isGons) {
|
|
881
|
+
if (dataStore.isGons || dataStore.isLifetrip) {
|
|
662
882
|
return false;
|
|
663
883
|
}
|
|
664
884
|
return true;
|
|
@@ -667,7 +887,7 @@ export default {
|
|
|
667
887
|
|
|
668
888
|
const birthDateRule = computed(() => {
|
|
669
889
|
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
670
|
-
const
|
|
890
|
+
const byMemberAndProductRule = () => {
|
|
671
891
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
672
892
|
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
673
893
|
return dataStore.rules.age18ByDate;
|
|
@@ -677,10 +897,13 @@ export default {
|
|
|
677
897
|
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
678
898
|
return dataStore.rules.age18ByDate;
|
|
679
899
|
}
|
|
900
|
+
if (dataStore.isLifetrip) {
|
|
901
|
+
return dataStore.rules.ageExceeds80ByDate;
|
|
902
|
+
}
|
|
680
903
|
}
|
|
681
904
|
return [];
|
|
682
905
|
};
|
|
683
|
-
return baseDateRule.concat(
|
|
906
|
+
return baseDateRule.concat(byMemberAndProductRule());
|
|
684
907
|
});
|
|
685
908
|
const ageRule = computed(() => {
|
|
686
909
|
const baseAgeRule = dataStore.rules.numbers;
|
|
@@ -711,10 +934,13 @@ export default {
|
|
|
711
934
|
if (dataStore.isGons || dataStore.isBolashak) {
|
|
712
935
|
return [];
|
|
713
936
|
}
|
|
714
|
-
if (
|
|
937
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
715
938
|
return [];
|
|
716
939
|
}
|
|
717
940
|
}
|
|
941
|
+
if (member.value.isInsuredUnderage) {
|
|
942
|
+
return [];
|
|
943
|
+
}
|
|
718
944
|
return basePhoneRule;
|
|
719
945
|
});
|
|
720
946
|
|
|
@@ -725,6 +951,9 @@ export default {
|
|
|
725
951
|
return baseResidencyRule.concat(dataStore.rules.noResident);
|
|
726
952
|
}
|
|
727
953
|
}
|
|
954
|
+
if (dataStore.isLifetrip) {
|
|
955
|
+
return baseResidencyRule.concat(dataStore.rules.noResidentOffline);
|
|
956
|
+
}
|
|
728
957
|
return baseResidencyRule;
|
|
729
958
|
});
|
|
730
959
|
|
|
@@ -732,8 +961,10 @@ export default {
|
|
|
732
961
|
switch (whichForm.value) {
|
|
733
962
|
case formStore.policyholderFormKey:
|
|
734
963
|
return route.params.taskId === '0';
|
|
735
|
-
case formStore.policyholdersRepresentativeFormKey:
|
|
736
964
|
case formStore.insuredFormKey:
|
|
965
|
+
if (dataStore.isPension) return route.params.taskId === '0';
|
|
966
|
+
return route.query.id === '0';
|
|
967
|
+
case formStore.policyholdersRepresentativeFormKey:
|
|
737
968
|
case formStore.beneficiaryFormKey:
|
|
738
969
|
case formStore.beneficialOwnerFormKey:
|
|
739
970
|
return route.query.id === '0';
|
|
@@ -742,6 +973,8 @@ export default {
|
|
|
742
973
|
const otpCondition = computed(() => {
|
|
743
974
|
// Add conditions by product
|
|
744
975
|
if (member.value.hasAgreement) return false;
|
|
976
|
+
if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
|
|
977
|
+
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
|
|
745
978
|
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
|
|
746
979
|
return getOtpConditionByMember();
|
|
747
980
|
});
|
|
@@ -749,8 +982,8 @@ export default {
|
|
|
749
982
|
const searchMember = async () => {
|
|
750
983
|
if (!isDisabled.value) {
|
|
751
984
|
dataStore.panelAction = null;
|
|
752
|
-
dataStore.
|
|
753
|
-
dataStore.
|
|
985
|
+
dataStore.rightPanel.title = hasDocumentReader.value ? 'Получение данных со скана документа' : 'Поиск контрагента';
|
|
986
|
+
dataStore.rightPanel.open = true;
|
|
754
987
|
isSearchOpen.value = true;
|
|
755
988
|
isDocumentOpen.value = false;
|
|
756
989
|
isOtpPanelOpen.value = false;
|
|
@@ -767,23 +1000,23 @@ export default {
|
|
|
767
1000
|
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
768
1001
|
dataStore.panelAction = null;
|
|
769
1002
|
if (type === 'document' && memberDocument.value) {
|
|
770
|
-
dataStore.
|
|
1003
|
+
dataStore.rightPanel.title = memberDocument.value.fileTypeName!;
|
|
771
1004
|
isDocumentOpen.value = true;
|
|
772
1005
|
isSearchOpen.value = false;
|
|
773
1006
|
isPanelOpen.value = false;
|
|
774
1007
|
isOtpPanelOpen.value = false;
|
|
775
1008
|
}
|
|
776
1009
|
if (type === 'otp') {
|
|
777
|
-
dataStore.
|
|
1010
|
+
dataStore.rightPanel.title = dataStore.t('form.otpCode');
|
|
778
1011
|
isOtpPanelOpen.value = true;
|
|
779
1012
|
isDocumentOpen.value = false;
|
|
780
1013
|
isSearchOpen.value = false;
|
|
781
1014
|
isPanelOpen.value = false;
|
|
782
1015
|
}
|
|
783
|
-
dataStore.
|
|
1016
|
+
dataStore.rightPanel.open = true;
|
|
784
1017
|
};
|
|
785
1018
|
|
|
786
|
-
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
|
|
1019
|
+
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string, deepKey?: string, subDeepKey?: string) => {
|
|
787
1020
|
if (!isDisabled.value) {
|
|
788
1021
|
isSearchOpen.value = false;
|
|
789
1022
|
isDocumentOpen.value = false;
|
|
@@ -798,16 +1031,41 @@ export default {
|
|
|
798
1031
|
currentPanel.value = key as keyof typeof member.value;
|
|
799
1032
|
isPanelOpen.value = true;
|
|
800
1033
|
dataStore.panelAction = null;
|
|
801
|
-
dataStore.
|
|
802
|
-
dataStore.
|
|
1034
|
+
dataStore.rightPanel.open = true;
|
|
1035
|
+
dataStore.rightPanel.title = title;
|
|
803
1036
|
|
|
804
1037
|
let newList = list;
|
|
805
1038
|
if (asyncFunction) {
|
|
806
1039
|
isPanelLoading.value = true;
|
|
807
|
-
|
|
1040
|
+
const filterKeys: any = {};
|
|
1041
|
+
if (!!subDeepKey) {
|
|
1042
|
+
filterKeys.key = key;
|
|
1043
|
+
filterKeys.deepKey = deepKey;
|
|
1044
|
+
filterKeys.subDeepKey = filterKey;
|
|
1045
|
+
} else {
|
|
1046
|
+
if (!!deepKey) {
|
|
1047
|
+
filterKeys.key = key;
|
|
1048
|
+
filterKeys.deepKey = filterKey;
|
|
1049
|
+
} else {
|
|
1050
|
+
filterKeys.key = filterKey;
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
newList = await asyncFunction(filterKey, member.value, filterKeys);
|
|
808
1054
|
}
|
|
809
1055
|
panelList.value = filterList(newList, key);
|
|
810
|
-
panelValue.value =
|
|
1056
|
+
panelValue.value = !!deepKey
|
|
1057
|
+
? !!subDeepKey
|
|
1058
|
+
? //@ts-ignore
|
|
1059
|
+
member.value[currentPanel.value][deepKey as any][subDeepKey as any]
|
|
1060
|
+
: //@ts-ignore
|
|
1061
|
+
member.value[currentPanel.value][deepKey as any]
|
|
1062
|
+
: member.value[currentPanel.value];
|
|
1063
|
+
if (!!deepKey) {
|
|
1064
|
+
currentPanelDeep.value = deepKey;
|
|
1065
|
+
if (!!subDeepKey) {
|
|
1066
|
+
currentPanelSubDeep.value = subDeepKey;
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
811
1069
|
isPanelLoading.value = false;
|
|
812
1070
|
} else {
|
|
813
1071
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -831,11 +1089,24 @@ export default {
|
|
|
831
1089
|
};
|
|
832
1090
|
|
|
833
1091
|
const pickPanelValue = (item: Value) => {
|
|
1092
|
+
if (!currentPanel.value) return;
|
|
834
1093
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
835
|
-
dataStore.
|
|
1094
|
+
dataStore.rightPanel.open = false;
|
|
836
1095
|
isPanelOpen.value = false;
|
|
837
|
-
|
|
838
|
-
|
|
1096
|
+
if (!!currentPanelDeep.value) {
|
|
1097
|
+
if (!!currentPanelSubDeep.value) {
|
|
1098
|
+
//@ts-ignore
|
|
1099
|
+
member.value[currentPanel.value][currentPanelDeep.value][currentPanelSubDeep.value] = item.nameRu === null ? new Value() : item;
|
|
1100
|
+
} else {
|
|
1101
|
+
//@ts-ignore
|
|
1102
|
+
member.value[currentPanel.value][currentPanelDeep.value] = item.nameRu === null ? new Value() : item;
|
|
1103
|
+
}
|
|
1104
|
+
} else {
|
|
1105
|
+
// @ts-ignore
|
|
1106
|
+
member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
|
|
1107
|
+
}
|
|
1108
|
+
currentPanelDeep.value = '';
|
|
1109
|
+
currentPanelSubDeep.value = '';
|
|
839
1110
|
} else {
|
|
840
1111
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
841
1112
|
}
|
|
@@ -864,16 +1135,105 @@ export default {
|
|
|
864
1135
|
}
|
|
865
1136
|
};
|
|
866
1137
|
|
|
867
|
-
const attachFile = (event: InputEvent) => {
|
|
1138
|
+
const attachFile = (event: InputEvent, code?: string) => {
|
|
868
1139
|
if (event.target) {
|
|
869
|
-
fileData.value = { file: (event.target as HTMLInputElement).files };
|
|
1140
|
+
fileData.value = code ? { file: (event.target as HTMLInputElement).files } : { file: (event.target as HTMLInputElement).files };
|
|
870
1141
|
} else {
|
|
871
1142
|
if (event.dataTransfer) {
|
|
872
|
-
fileData.value = { file: (event.dataTransfer as DataTransfer).files };
|
|
1143
|
+
fileData.value = code ? { file: (event.dataTransfer as DataTransfer).files } : { file: (event.dataTransfer as DataTransfer).files };
|
|
873
1144
|
}
|
|
874
1145
|
}
|
|
875
1146
|
};
|
|
876
1147
|
|
|
1148
|
+
const attachDocumentReader = async (event: InputEvent) => {
|
|
1149
|
+
if (event.target) {
|
|
1150
|
+
const target = event.target as HTMLInputElement;
|
|
1151
|
+
if (target.files && !!target.files.length) {
|
|
1152
|
+
imageDataList.value = [];
|
|
1153
|
+
await Promise.allSettled(
|
|
1154
|
+
Object.values(target.files).map(async f => {
|
|
1155
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1156
|
+
imageDataList.value.push(await getBase64());
|
|
1157
|
+
}),
|
|
1158
|
+
);
|
|
1159
|
+
}
|
|
1160
|
+
} else {
|
|
1161
|
+
if (event.dataTransfer) {
|
|
1162
|
+
const dataTransfer = event.dataTransfer as DataTransfer;
|
|
1163
|
+
if (!!dataTransfer.files && !!dataTransfer.files.length) {
|
|
1164
|
+
imageDataList.value = [];
|
|
1165
|
+
await Promise.allSettled(
|
|
1166
|
+
Object.values(dataTransfer.files).map(async f => {
|
|
1167
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1168
|
+
imageDataList.value.push(await getBase64());
|
|
1169
|
+
}),
|
|
1170
|
+
);
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1174
|
+
};
|
|
1175
|
+
|
|
1176
|
+
const getDocumentReader = async () => {
|
|
1177
|
+
if (imageDataList.value && !!imageDataList.value.length) {
|
|
1178
|
+
isButtonLoading.value = true;
|
|
1179
|
+
const parsedDocument = await callDocumentReader(imageDataList.value);
|
|
1180
|
+
if (typeof parsedDocument === 'object') {
|
|
1181
|
+
if (
|
|
1182
|
+
member.value.iin &&
|
|
1183
|
+
parsedDocument.iin &&
|
|
1184
|
+
reformatIin(parsedDocument.iin) &&
|
|
1185
|
+
member.value.iin.length === useMask().iin.length &&
|
|
1186
|
+
reformatIin(parsedDocument.iin).length === useMask().iin.length &&
|
|
1187
|
+
member.value.iin !== reformatIin(parsedDocument.iin)
|
|
1188
|
+
) {
|
|
1189
|
+
dataStore.showToaster('error', 'Не совпадают ИИН');
|
|
1190
|
+
isButtonLoading.value = false;
|
|
1191
|
+
return;
|
|
1192
|
+
}
|
|
1193
|
+
formatDateProperty(parsedDocument, 'front');
|
|
1194
|
+
member.value.parsedDocument = parsedDocument;
|
|
1195
|
+
if (parsedDocument.age) member.value.age = parsedDocument.age;
|
|
1196
|
+
if (parsedDocument.iin) member.value.iin = reformatIin(parsedDocument.iin);
|
|
1197
|
+
if (parsedDocument.gender) {
|
|
1198
|
+
if (parsedDocument.gender === 'M' || parsedDocument.gender === 'F') {
|
|
1199
|
+
const gender = dataStore.gender.find((i: Value) => i.id === (parsedDocument.gender === 'M' ? 1 : 2));
|
|
1200
|
+
if (gender) member.value.gender = gender;
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
if (parsedDocument.birthDate) member.value.birthDate = parsedDocument.birthDate;
|
|
1204
|
+
if (parsedDocument.documentIssueDate) member.value.documentDate = parsedDocument.documentIssueDate;
|
|
1205
|
+
if (parsedDocument.documentExpireDate) member.value.documentExpire = parsedDocument.documentExpireDate;
|
|
1206
|
+
if (parsedDocument.documentNumber) member.value.documentNumber = parsedDocument.documentNumber;
|
|
1207
|
+
if (parsedDocument.lastName) member.value.lastName = parsedDocument.lastName;
|
|
1208
|
+
if (parsedDocument.firstName) member.value.firstName = parsedDocument.firstName;
|
|
1209
|
+
if (parsedDocument.middleName) member.value.middleName = parsedDocument.middleName;
|
|
1210
|
+
if (parsedDocument.fullName) member.value.longName = parsedDocument.fullName;
|
|
1211
|
+
if (parsedDocument.documentName && parsedDocument.documentName.startsWith('Kazakhstan - Id Card')) {
|
|
1212
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === '1UDL');
|
|
1213
|
+
if (documentType) member.value.documentType = documentType;
|
|
1214
|
+
}
|
|
1215
|
+
if (!!parsedDocument.documentIssuer) {
|
|
1216
|
+
if (
|
|
1217
|
+
parsedDocument.documentIssuer === 'МИНИСТЕРСТВО ВНУТРЕННИХ ДЕЛ РК' ||
|
|
1218
|
+
parsedDocument.documentIssuer === 'ҚР ІШКІ ІСТЕР МИНИСТРЛІГІ' ||
|
|
1219
|
+
/ҚАЗАҚСТАН/gi.test(parsedDocument.documentIssuer) ||
|
|
1220
|
+
/КАЗАХСТАН/gi.test(parsedDocument.documentIssuer)
|
|
1221
|
+
) {
|
|
1222
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp('МВД РК', 'i')));
|
|
1223
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1224
|
+
} else {
|
|
1225
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp(`${parsedDocument.documentIssuer}`, 'i')));
|
|
1226
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
dataStore.rightPanel.open = false;
|
|
1230
|
+
dataStore.showToaster('success', dataStore.t('toaster.successOperation'));
|
|
1231
|
+
imageDataList.value = [];
|
|
1232
|
+
}
|
|
1233
|
+
isButtonLoading.value = false;
|
|
1234
|
+
}
|
|
1235
|
+
};
|
|
1236
|
+
|
|
877
1237
|
const getFile = async (type: FileActions) => {
|
|
878
1238
|
if (memberDocument.value) {
|
|
879
1239
|
documentLoading.value = true;
|
|
@@ -904,7 +1264,7 @@ export default {
|
|
|
904
1264
|
familyDialog.value = false;
|
|
905
1265
|
selectedFamilyMember.value = {};
|
|
906
1266
|
isButtonLoading.value = false;
|
|
907
|
-
dataStore.
|
|
1267
|
+
dataStore.rightPanel.open = false;
|
|
908
1268
|
isSearchOpen.value = false;
|
|
909
1269
|
};
|
|
910
1270
|
|
|
@@ -921,20 +1281,20 @@ export default {
|
|
|
921
1281
|
}
|
|
922
1282
|
familyDialog.value = false;
|
|
923
1283
|
isButtonLoading.value = false;
|
|
924
|
-
dataStore.
|
|
1284
|
+
dataStore.rightPanel.open = false;
|
|
925
1285
|
isSearchOpen.value = false;
|
|
926
1286
|
};
|
|
927
1287
|
|
|
928
1288
|
const getContragentFromGBDFL = async () => {
|
|
929
1289
|
if (member.value.hasAgreement !== true) {
|
|
930
1290
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
931
|
-
dataStore.
|
|
1291
|
+
dataStore.rightPanel.open = false;
|
|
932
1292
|
isSearchOpen.value = false;
|
|
933
1293
|
return;
|
|
934
1294
|
}
|
|
935
1295
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
936
1296
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
937
|
-
dataStore.
|
|
1297
|
+
dataStore.rightPanel.open = false;
|
|
938
1298
|
isSearchOpen.value = false;
|
|
939
1299
|
return;
|
|
940
1300
|
}
|
|
@@ -944,7 +1304,7 @@ export default {
|
|
|
944
1304
|
if (response === true) {
|
|
945
1305
|
member.value.gotFromInsis = true;
|
|
946
1306
|
}
|
|
947
|
-
dataStore.
|
|
1307
|
+
dataStore.rightPanel.open = false;
|
|
948
1308
|
isSearchOpen.value = false;
|
|
949
1309
|
}
|
|
950
1310
|
isButtonLoading.value = false;
|
|
@@ -953,20 +1313,20 @@ export default {
|
|
|
953
1313
|
const getContragent = async () => {
|
|
954
1314
|
if (member.value.hasAgreement !== true) {
|
|
955
1315
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
956
|
-
dataStore.
|
|
1316
|
+
dataStore.rightPanel.open = false;
|
|
957
1317
|
isSearchOpen.value = false;
|
|
958
1318
|
return;
|
|
959
1319
|
}
|
|
960
1320
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
961
1321
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
962
|
-
dataStore.
|
|
1322
|
+
dataStore.rightPanel.open = false;
|
|
963
1323
|
isSearchOpen.value = false;
|
|
964
1324
|
return;
|
|
965
1325
|
}
|
|
966
1326
|
isButtonLoading.value = true;
|
|
967
1327
|
await dataStore.getContragent(member.value, false);
|
|
968
1328
|
isButtonLoading.value = false;
|
|
969
|
-
dataStore.
|
|
1329
|
+
dataStore.rightPanel.open = false;
|
|
970
1330
|
isSearchOpen.value = false;
|
|
971
1331
|
};
|
|
972
1332
|
|
|
@@ -999,10 +1359,10 @@ export default {
|
|
|
999
1359
|
}
|
|
1000
1360
|
const isInsured = formStore.isPolicyholderInsured;
|
|
1001
1361
|
const remoteIsInsured = ref<boolean | null>(null);
|
|
1002
|
-
if (whichForm.value == formStore.policyholderFormKey) {
|
|
1362
|
+
if (whichForm.value == formStore.policyholderFormKey || (dataStore.isPension && whichForm.value == formStore.insuredFormKey)) {
|
|
1003
1363
|
if (route.params.taskId === '0') {
|
|
1004
1364
|
try {
|
|
1005
|
-
const taskId = await dataStore.startApplication(member.value);
|
|
1365
|
+
const taskId = await dataStore.startApplication(member.value, dataStore.isPension ? (String(route.query.type) === 'joint' ? 4 : 1) : undefined);
|
|
1006
1366
|
if (typeof taskId === 'string') {
|
|
1007
1367
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1008
1368
|
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
@@ -1036,18 +1396,40 @@ export default {
|
|
|
1036
1396
|
if (!isSaved) return false;
|
|
1037
1397
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
1038
1398
|
if (isInsured === true || remoteIsInsured.value === true) {
|
|
1039
|
-
formStore.insuredForm
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1399
|
+
const insuredFormIndex = remoteIsInsured.value === true ? 0 : isInsured === true ? formStore.insuredForm.findIndex(i => i.iin === formStore.policyholderForm.iin) : -1;
|
|
1400
|
+
if (insuredFormIndex !== -1) {
|
|
1401
|
+
formStore.insuredForm[insuredFormIndex] = formStore.policyholderForm;
|
|
1402
|
+
const isInsuredSaved = await dataStore.saveMember(
|
|
1403
|
+
member.value,
|
|
1404
|
+
memberStore.getMemberCode(formStore.insuredFormKey)!,
|
|
1405
|
+
memberStore.getMemberFromApplication(formStore.insuredFormKey, insuredFormIndex),
|
|
1406
|
+
);
|
|
1407
|
+
if (!isInsuredSaved) return false;
|
|
1408
|
+
wasInsuredAction.value = true;
|
|
1409
|
+
}
|
|
1047
1410
|
}
|
|
1048
1411
|
}
|
|
1049
1412
|
if (whichForm.value === formStore.insuredFormKey) {
|
|
1050
1413
|
wasInsuredAction.value = true;
|
|
1414
|
+
if (dataStore.isPension) {
|
|
1415
|
+
formStore.applicationData.pensionApp = {
|
|
1416
|
+
...formStore.applicationData.pensionApp,
|
|
1417
|
+
account: member.value.bankInfo.iik,
|
|
1418
|
+
bankBik: member.value.bankInfo.bik,
|
|
1419
|
+
bankBin: member.value.bankInfo.bankName.ids,
|
|
1420
|
+
bankId: member.value.bankInfo.bankName.id,
|
|
1421
|
+
bankName: member.value.bankInfo.bankName.nameRu,
|
|
1422
|
+
guaranteedPeriod: 0,
|
|
1423
|
+
amount: 0,
|
|
1424
|
+
compulsoryContractAmount: 0,
|
|
1425
|
+
voluntaryContractAmount: 0,
|
|
1426
|
+
ownFundsRaisAmount: 0,
|
|
1427
|
+
compulsoryProfContractAmount: 0,
|
|
1428
|
+
};
|
|
1429
|
+
const isApplicationSaved = await dataStore.setApplication();
|
|
1430
|
+
if (isApplicationSaved === false) return;
|
|
1431
|
+
dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
|
|
1432
|
+
}
|
|
1051
1433
|
}
|
|
1052
1434
|
await router.replace({
|
|
1053
1435
|
name: route.name!,
|
|
@@ -1056,8 +1438,8 @@ export default {
|
|
|
1056
1438
|
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
1057
1439
|
if (dataStore.controls.hasCalculator) {
|
|
1058
1440
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
1059
|
-
formStore.additionalInsuranceTerms.forEach(
|
|
1060
|
-
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(
|
|
1441
|
+
formStore.additionalInsuranceTerms.forEach(term => {
|
|
1442
|
+
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
|
|
1061
1443
|
if (defaultTerm) {
|
|
1062
1444
|
term.coverSumName = defaultTerm.coverSumName;
|
|
1063
1445
|
term.coverSumId = defaultTerm.coverSumId;
|
|
@@ -1071,14 +1453,16 @@ export default {
|
|
|
1071
1453
|
};
|
|
1072
1454
|
|
|
1073
1455
|
const validateAgreement = () => {
|
|
1074
|
-
if (dataStore.
|
|
1075
|
-
|
|
1076
|
-
|
|
1456
|
+
if (dataStore.isPension && whichForm.value === formStore.policyholdersRepresentativeFormKey) {
|
|
1457
|
+
return true;
|
|
1458
|
+
}
|
|
1459
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1460
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
1077
1461
|
return true;
|
|
1078
1462
|
}
|
|
1079
1463
|
}
|
|
1080
|
-
if (
|
|
1081
|
-
if (
|
|
1464
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
1465
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
1082
1466
|
return true;
|
|
1083
1467
|
}
|
|
1084
1468
|
}
|
|
@@ -1096,10 +1480,16 @@ export default {
|
|
|
1096
1480
|
if (v.valid) {
|
|
1097
1481
|
isSubmittingForm.value = true;
|
|
1098
1482
|
const docType = member.value.documentType.ids;
|
|
1099
|
-
if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI')) {
|
|
1483
|
+
if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI' || docType === 'PS')) {
|
|
1100
1484
|
dataStore.isLoading = true;
|
|
1101
|
-
const
|
|
1485
|
+
const docTypeCodes = {
|
|
1486
|
+
'1UDL': 1,
|
|
1487
|
+
PS: 2,
|
|
1488
|
+
SBI: 3,
|
|
1489
|
+
};
|
|
1490
|
+
const ESBDResponse = await validateESBD(docTypeCodes[docType]);
|
|
1102
1491
|
if (!ESBDResponse) {
|
|
1492
|
+
isSubmittingForm.value = false;
|
|
1103
1493
|
dataStore.isLoading = false;
|
|
1104
1494
|
return;
|
|
1105
1495
|
}
|
|
@@ -1109,6 +1499,22 @@ export default {
|
|
|
1109
1499
|
if (typeof ESBDResponse === 'object' && ESBDResponse.errorCode === 0) {
|
|
1110
1500
|
member.value.verifyType = 'ESBD';
|
|
1111
1501
|
member.value.verifyDate = ESBDResponse.verifiedDate;
|
|
1502
|
+
|
|
1503
|
+
if (member.value.bankInfo.iik.length === useMask().iik.length) {
|
|
1504
|
+
const isValidIik = await dataStore.checkAccountNumber(member.value.bankInfo.iik);
|
|
1505
|
+
if (isValidIik === false) {
|
|
1506
|
+
dataStore.showToaster('error', dataStore.t('error.notValidIik'));
|
|
1507
|
+
member.value.bankInfo.iik = '';
|
|
1508
|
+
isSubmittingForm.value = false;
|
|
1509
|
+
return;
|
|
1510
|
+
}
|
|
1511
|
+
if (formStore.applicationData.pensionApp) {
|
|
1512
|
+
formStore.applicationData.pensionApp.account = member.value.bankInfo.iik;
|
|
1513
|
+
formStore.applicationData.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1514
|
+
formStore.applicationData.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1515
|
+
formStore.applicationData.pensionApp.bankId = member.value.bankInfo.bankName.id;
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1112
1518
|
const hasMemberSaved = await saveMember();
|
|
1113
1519
|
} else {
|
|
1114
1520
|
dataStore.isLoading = false;
|
|
@@ -1153,7 +1559,7 @@ export default {
|
|
|
1153
1559
|
}
|
|
1154
1560
|
otpSending.value = false;
|
|
1155
1561
|
if (checked === true) {
|
|
1156
|
-
dataStore.
|
|
1562
|
+
dataStore.rightPanel.open = false;
|
|
1157
1563
|
}
|
|
1158
1564
|
};
|
|
1159
1565
|
|
|
@@ -1163,7 +1569,7 @@ export default {
|
|
|
1163
1569
|
if (response) {
|
|
1164
1570
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1165
1571
|
if (response.otpStatus === true) {
|
|
1166
|
-
dataStore.
|
|
1572
|
+
dataStore.rightPanel.open = false;
|
|
1167
1573
|
}
|
|
1168
1574
|
}
|
|
1169
1575
|
otpSending.value = false;
|
|
@@ -1177,6 +1583,15 @@ export default {
|
|
|
1177
1583
|
if (setDefaults.percentage) {
|
|
1178
1584
|
setPercentage();
|
|
1179
1585
|
}
|
|
1586
|
+
if (setDefaults.signOfResidency) {
|
|
1587
|
+
setSignOfResidency();
|
|
1588
|
+
}
|
|
1589
|
+
if (setDefaults.countryOfTaxResidency) {
|
|
1590
|
+
setCountryOfTaxResidency();
|
|
1591
|
+
}
|
|
1592
|
+
if (setDefaults.countryOfCitizenship) {
|
|
1593
|
+
setCountryOfCitizenship();
|
|
1594
|
+
}
|
|
1180
1595
|
};
|
|
1181
1596
|
|
|
1182
1597
|
const setSectorCode = async () => {
|
|
@@ -1186,7 +1601,27 @@ export default {
|
|
|
1186
1601
|
member.value.economySectorCode = defaultValue ? defaultValue : new Value();
|
|
1187
1602
|
}
|
|
1188
1603
|
};
|
|
1189
|
-
|
|
1604
|
+
const setSignOfResidency = async () => {
|
|
1605
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1606
|
+
const residents = await dataStore.getResidents();
|
|
1607
|
+
const defaultValue = residents.find(item => String(item.nameRu).match(new RegExp('Резидент', 'i'))) as Value;
|
|
1608
|
+
member.value.signOfResidency = defaultValue ? defaultValue : new Value();
|
|
1609
|
+
}
|
|
1610
|
+
};
|
|
1611
|
+
const setCountryOfTaxResidency = async () => {
|
|
1612
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1613
|
+
const taxCountries = await dataStore.getTaxCountries();
|
|
1614
|
+
const defaultValue = taxCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1615
|
+
member.value.countryOfTaxResidency = defaultValue ? defaultValue : new Value();
|
|
1616
|
+
}
|
|
1617
|
+
};
|
|
1618
|
+
const setCountryOfCitizenship = async () => {
|
|
1619
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1620
|
+
const citizenshipCountries = await dataStore.getCitizenshipCountries();
|
|
1621
|
+
const defaultValue = citizenshipCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1622
|
+
member.value.countryOfCitizenship = defaultValue ? defaultValue : new Value();
|
|
1623
|
+
}
|
|
1624
|
+
};
|
|
1190
1625
|
const setPercentage = () => {
|
|
1191
1626
|
if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
|
|
1192
1627
|
if (dataStore.members.beneficiaryApp.isMultiple) {
|
|
@@ -1203,7 +1638,7 @@ export default {
|
|
|
1203
1638
|
};
|
|
1204
1639
|
|
|
1205
1640
|
const selectMember = async (index: number, update?: boolean) => {
|
|
1206
|
-
dataStore.
|
|
1641
|
+
dataStore.rightPanel.open = false;
|
|
1207
1642
|
isButtonLoading.value = true;
|
|
1208
1643
|
isChangingMember.value = true;
|
|
1209
1644
|
//@ts-ignore
|
|
@@ -1212,13 +1647,19 @@ export default {
|
|
|
1212
1647
|
isButtonLoading.value = false;
|
|
1213
1648
|
};
|
|
1214
1649
|
|
|
1215
|
-
const
|
|
1216
|
-
|
|
1650
|
+
const openDeletionDialog = (index: number) => {
|
|
1651
|
+
deletionDialog.value = true;
|
|
1652
|
+
selectedIndex.value = index;
|
|
1653
|
+
};
|
|
1654
|
+
|
|
1655
|
+
const deleteMember = async () => {
|
|
1656
|
+
await memberStore.deleteMember(route.params.taskId as string, whichForm.value, selectedIndex.value);
|
|
1217
1657
|
const currentIndex = Number(whichIndex.value);
|
|
1218
|
-
if (
|
|
1658
|
+
if (selectedIndex.value <= currentIndex) {
|
|
1219
1659
|
const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
|
|
1220
|
-
await selectMember(newIndex.value,
|
|
1660
|
+
await selectMember(newIndex.value, selectedIndex.value === currentIndex ? true : undefined);
|
|
1221
1661
|
}
|
|
1662
|
+
deletionDialog.value = false;
|
|
1222
1663
|
};
|
|
1223
1664
|
|
|
1224
1665
|
const onInit = async () => {
|
|
@@ -1238,8 +1679,8 @@ export default {
|
|
|
1238
1679
|
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1239
1680
|
}
|
|
1240
1681
|
await setDefaultValues();
|
|
1682
|
+
if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
|
|
1241
1683
|
};
|
|
1242
|
-
|
|
1243
1684
|
onMounted(async () => {
|
|
1244
1685
|
await onInit();
|
|
1245
1686
|
});
|
|
@@ -1302,14 +1743,16 @@ export default {
|
|
|
1302
1743
|
};
|
|
1303
1744
|
|
|
1304
1745
|
watch(
|
|
1305
|
-
() => dataStore.
|
|
1746
|
+
() => dataStore.rightPanel.open,
|
|
1306
1747
|
() => {
|
|
1307
|
-
if (dataStore.
|
|
1748
|
+
if (dataStore.rightPanel.open === false) {
|
|
1308
1749
|
isPanelOpen.value = false;
|
|
1309
1750
|
isDocumentOpen.value = false;
|
|
1310
1751
|
isSearchOpen.value = false;
|
|
1311
1752
|
isOtpPanelOpen.value = false;
|
|
1312
1753
|
dataStore.panelAction = null;
|
|
1754
|
+
currentPanelDeep.value = '';
|
|
1755
|
+
currentPanelSubDeep.value = '';
|
|
1313
1756
|
}
|
|
1314
1757
|
},
|
|
1315
1758
|
{ immediate: true },
|
|
@@ -1320,6 +1763,41 @@ export default {
|
|
|
1320
1763
|
searchQuery.value = '';
|
|
1321
1764
|
}
|
|
1322
1765
|
});
|
|
1766
|
+
if (dataStore.isLifetrip) {
|
|
1767
|
+
watch(
|
|
1768
|
+
() => member.value.age,
|
|
1769
|
+
val => {
|
|
1770
|
+
if (val && Number(val) >= 18) {
|
|
1771
|
+
if (member.value.hasAgreement !== true) {
|
|
1772
|
+
member.value.hasAgreement = false;
|
|
1773
|
+
}
|
|
1774
|
+
} else {
|
|
1775
|
+
member.value.hasAgreement = true;
|
|
1776
|
+
}
|
|
1777
|
+
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1778
|
+
},
|
|
1779
|
+
);
|
|
1780
|
+
watch(
|
|
1781
|
+
() => member.value.isInsuredUnderage,
|
|
1782
|
+
val => {
|
|
1783
|
+
if (val === true && Number(member.value.age) >= 18) {
|
|
1784
|
+
member.value.isInsuredUnderage = false;
|
|
1785
|
+
return dataStore.showToaster('error', dataStore.t('toaster.underageShouldBeLess18'), 3000);
|
|
1786
|
+
}
|
|
1787
|
+
},
|
|
1788
|
+
);
|
|
1789
|
+
}
|
|
1790
|
+
if (dataStore.isPension) {
|
|
1791
|
+
watch(
|
|
1792
|
+
() => member.value.bankInfo.bankName,
|
|
1793
|
+
val => {
|
|
1794
|
+
if (val) {
|
|
1795
|
+
member.value.bankInfo.bik = val.code as string;
|
|
1796
|
+
member.value.bankInfo.bin = reformatIin(val.ids as string);
|
|
1797
|
+
}
|
|
1798
|
+
},
|
|
1799
|
+
);
|
|
1800
|
+
}
|
|
1323
1801
|
|
|
1324
1802
|
return {
|
|
1325
1803
|
// State
|
|
@@ -1342,9 +1820,13 @@ export default {
|
|
|
1342
1820
|
Value,
|
|
1343
1821
|
memberDocument,
|
|
1344
1822
|
familyDialog,
|
|
1823
|
+
deletionDialog,
|
|
1824
|
+
selectedIndex,
|
|
1345
1825
|
selectedFamilyMember,
|
|
1346
1826
|
sameAddress,
|
|
1347
|
-
|
|
1827
|
+
hasDisability,
|
|
1828
|
+
isRelative,
|
|
1829
|
+
imageDataList,
|
|
1348
1830
|
// Computed
|
|
1349
1831
|
whichForm,
|
|
1350
1832
|
whichIndex,
|
|
@@ -1359,10 +1841,14 @@ export default {
|
|
|
1359
1841
|
hasGBDFL,
|
|
1360
1842
|
hasInsis,
|
|
1361
1843
|
hasGKB,
|
|
1844
|
+
hasDocumentReader,
|
|
1845
|
+
hasMiddleName,
|
|
1846
|
+
hasRelationDegree,
|
|
1362
1847
|
hasFamilyStatus,
|
|
1363
1848
|
hasInsurancePay,
|
|
1364
1849
|
hasSignOfIPDL,
|
|
1365
1850
|
hasSameAddressToggle,
|
|
1851
|
+
hasMemberSearch,
|
|
1366
1852
|
|
|
1367
1853
|
// Rules
|
|
1368
1854
|
ageRule,
|
|
@@ -1382,9 +1868,12 @@ export default {
|
|
|
1382
1868
|
getContragentFromGBDFL,
|
|
1383
1869
|
getContragent,
|
|
1384
1870
|
attachFile,
|
|
1871
|
+
attachDocumentReader,
|
|
1872
|
+
getDocumentReader,
|
|
1385
1873
|
getFile,
|
|
1386
1874
|
selectFamilyMember,
|
|
1387
1875
|
closeFamilyDialog,
|
|
1876
|
+
openDeletionDialog,
|
|
1388
1877
|
scrollForm,
|
|
1389
1878
|
onIinInput,
|
|
1390
1879
|
onOtpCodeInput,
|