hl-core 0.0.9-beta.8 → 0.0.10-beta.1
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 +1109 -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 +23 -0
- package/components/Dialog/Dialog.vue +70 -16
- package/components/Dialog/FamilyDialog.vue +1 -1
- 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/FormTextSection.vue +11 -3
- package/components/Form/FormToggle.vue +25 -5
- package/components/Form/ManagerAttachment.vue +177 -89
- 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/RoundedSelect.vue +7 -2
- 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 +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 +254 -65
- package/components/Pages/Auth.vue +56 -9
- package/components/Pages/ContragentForm.vue +9 -9
- package/components/Pages/Documents.vue +266 -30
- package/components/Pages/InvoiceInfo.vue +1 -1
- package/components/Pages/MemberForm.vue +774 -102
- package/components/Pages/ProductAgreement.vue +1 -8
- package/components/Pages/ProductConditions.vue +1132 -180
- package/components/Panel/PanelHandler.vue +632 -50
- package/components/Panel/PanelSelectItem.vue +17 -2
- package/components/Panel/RightPanelCloser.vue +7 -0
- package/components/Transitions/Animation.vue +28 -0
- package/components/Utilities/JsonViewer.vue +3 -2
- package/components/Utilities/Qr.vue +44 -0
- package/composables/axios.ts +1 -0
- package/composables/classes.ts +501 -14
- package/composables/constants.ts +126 -6
- package/composables/fields.ts +328 -0
- package/composables/index.ts +355 -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 +559 -16
- package/nuxt.config.ts +11 -15
- package/package.json +36 -39
- package/pages/Token.vue +0 -13
- package/plugins/head.ts +26 -0
- package/plugins/vuetifyPlugin.ts +1 -5
- package/store/data.store.ts +1610 -321
- package/store/extractStore.ts +17 -0
- package/store/form.store.ts +13 -1
- package/store/member.store.ts +1 -1
- package/store/rules.ts +97 -3
- package/store/toast.ts +1 -1
- package/types/enum.ts +81 -0
- package/types/env.d.ts +2 -0
- package/types/form.ts +94 -0
- package/types/index.ts +419 -24
|
@@ -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,7 @@
|
|
|
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';
|
|
543
794
|
|
|
544
795
|
export default {
|
|
545
796
|
setup() {
|
|
@@ -553,7 +804,7 @@ export default {
|
|
|
553
804
|
const whichIndex = computed(() => route.query.i as string);
|
|
554
805
|
const getMember = (whichForm: keyof typeof StoreMembers, whichIndex?: string) => memberStore.getMemberFromStore(whichForm, Number((whichIndex ? whichIndex : '0') as string))!;
|
|
555
806
|
const member = ref(getMember(whichForm.value, whichIndex.value));
|
|
556
|
-
const selectedFamilyMember = ref<
|
|
807
|
+
const selectedFamilyMember = ref<Api.GKB.BirthInfo>({});
|
|
557
808
|
const isPanelOpen = ref<boolean>(false);
|
|
558
809
|
const memberDocument = ref<DocumentItem>();
|
|
559
810
|
const isButtonLoading = ref<boolean>(false);
|
|
@@ -563,15 +814,25 @@ export default {
|
|
|
563
814
|
const isSearchOpen = ref<boolean>(false);
|
|
564
815
|
const isDocumentOpen = ref<boolean>(false);
|
|
565
816
|
const isOtpPanelOpen = ref<boolean>(false);
|
|
817
|
+
const isPositionPanelOpen = ref<boolean>(false);
|
|
566
818
|
const isPanelLoading = ref<boolean>(false);
|
|
567
819
|
const isChangingMember = ref<boolean>(false);
|
|
568
820
|
const familyDialog = ref<boolean>(false);
|
|
821
|
+
const deletionDialog = ref<boolean>(false);
|
|
822
|
+
const documentChooseDialog = ref<boolean>(false);
|
|
823
|
+
const selectedIndex = ref<number>(0);
|
|
569
824
|
const sameAddress = ref<boolean>(false);
|
|
570
825
|
const panelValue = ref<Value>(new Value());
|
|
571
826
|
const panelList = ref<Value[]>([]);
|
|
827
|
+
const positionsList = ref<Dicts.WorkPosition[] | null>(null);
|
|
572
828
|
const currentPanel = ref<keyof typeof member.value>();
|
|
573
829
|
const searchQuery = ref<string>('');
|
|
574
830
|
const fileData = ref<{ file: any }>();
|
|
831
|
+
const imageDataList = ref<string[]>([]);
|
|
832
|
+
const isRelative = ref<boolean>(false);
|
|
833
|
+
|
|
834
|
+
const currentPanelDeep = ref<string>();
|
|
835
|
+
const currentPanelSubDeep = ref<string>();
|
|
575
836
|
|
|
576
837
|
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
577
838
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
@@ -579,13 +840,26 @@ export default {
|
|
|
579
840
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
580
841
|
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
581
842
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
843
|
+
const gbdDocuments = computed(() => {
|
|
844
|
+
if (hasGBDFLDocSelection && !!member.value.gosPersonData && !!member.value.gosPersonData.documents) {
|
|
845
|
+
const documents = Array.isArray(member.value.gosPersonData.documents.document)
|
|
846
|
+
? member.value.gosPersonData.documents.document
|
|
847
|
+
: [member.value.gosPersonData.documents.document];
|
|
848
|
+
return documents.filter(i => new Date(i.endDate) > new Date(Date.now()) && i.status.code === '00');
|
|
849
|
+
}
|
|
850
|
+
return null;
|
|
851
|
+
});
|
|
582
852
|
const showSaveButton = computed(() => {
|
|
583
853
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
584
|
-
const
|
|
854
|
+
const perMemberCondition = () => {
|
|
585
855
|
switch (whichForm.value) {
|
|
586
856
|
case formStore.policyholderFormKey:
|
|
587
857
|
return true;
|
|
588
858
|
case formStore.insuredFormKey:
|
|
859
|
+
if (dataStore.isPension) {
|
|
860
|
+
return true;
|
|
861
|
+
}
|
|
862
|
+
return route.params.taskId !== '0';
|
|
589
863
|
case formStore.beneficiaryFormKey:
|
|
590
864
|
case formStore.beneficialOwnerFormKey:
|
|
591
865
|
case formStore.policyholdersRepresentativeFormKey:
|
|
@@ -594,7 +868,7 @@ export default {
|
|
|
594
868
|
return false;
|
|
595
869
|
}
|
|
596
870
|
};
|
|
597
|
-
return generalCondition &&
|
|
871
|
+
return generalCondition && perMemberCondition();
|
|
598
872
|
});
|
|
599
873
|
|
|
600
874
|
const hasGBDFL = computed(() => {
|
|
@@ -607,9 +881,17 @@ export default {
|
|
|
607
881
|
if (dataStore.isBolashak || dataStore.isGons) {
|
|
608
882
|
return false;
|
|
609
883
|
}
|
|
884
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
885
|
+
return false;
|
|
886
|
+
}
|
|
887
|
+
return true;
|
|
888
|
+
}
|
|
889
|
+
case formStore.insuredFormKey: {
|
|
890
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
891
|
+
return false;
|
|
892
|
+
}
|
|
610
893
|
return true;
|
|
611
894
|
}
|
|
612
|
-
case formStore.insuredFormKey:
|
|
613
895
|
case formStore.beneficialOwnerFormKey:
|
|
614
896
|
case formStore.policyholdersRepresentativeFormKey:
|
|
615
897
|
return true;
|
|
@@ -617,8 +899,9 @@ export default {
|
|
|
617
899
|
return true;
|
|
618
900
|
}
|
|
619
901
|
};
|
|
620
|
-
return dataStore.controls.hasGBDFL && perMemberCondition();
|
|
902
|
+
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGBDFL && perMemberCondition();
|
|
621
903
|
});
|
|
904
|
+
const hasGBDFLDocSelection = dataStore.isLifetrip && whichForm.value === formStore.policyholderFormKey;
|
|
622
905
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
623
906
|
const hasGKB = computed(() => {
|
|
624
907
|
const perMemberCondition = () => {
|
|
@@ -638,10 +921,31 @@ export default {
|
|
|
638
921
|
return false;
|
|
639
922
|
}
|
|
640
923
|
};
|
|
641
|
-
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
924
|
+
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
925
|
+
});
|
|
926
|
+
const hasDocumentReader = computed(() => {
|
|
927
|
+
return !!member.value.hasAgreement && !!isTask.value && (dataStore.isAULETTI || dataStore.isAulettiParent);
|
|
928
|
+
});
|
|
929
|
+
const hasMemberSearch = computed(() => showSaveButton.value && (hasGBDFL.value || hasGKB.value || hasInsis.value || hasDocumentReader.value));
|
|
930
|
+
const hasMiddleName = computed(() => {
|
|
931
|
+
if (dataStore.isLifetrip) {
|
|
932
|
+
return false;
|
|
933
|
+
}
|
|
934
|
+
return true;
|
|
935
|
+
});
|
|
936
|
+
const hasRelationDegree = computed(() => {
|
|
937
|
+
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
938
|
+
return false;
|
|
939
|
+
}
|
|
940
|
+
if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
|
|
941
|
+
return true;
|
|
942
|
+
}
|
|
943
|
+
return false;
|
|
642
944
|
});
|
|
643
|
-
|
|
644
945
|
const hasFamilyStatus = computed(() => {
|
|
946
|
+
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
947
|
+
return false;
|
|
948
|
+
}
|
|
645
949
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
646
950
|
if (dataStore.isBolashak) {
|
|
647
951
|
return false;
|
|
@@ -658,16 +962,21 @@ export default {
|
|
|
658
962
|
return false;
|
|
659
963
|
});
|
|
660
964
|
const hasSignOfIPDL = computed(() => {
|
|
661
|
-
if (dataStore.isGons) {
|
|
965
|
+
if (dataStore.isGons || dataStore.isLifetrip) {
|
|
662
966
|
return false;
|
|
663
967
|
}
|
|
664
968
|
return true;
|
|
665
969
|
});
|
|
666
|
-
const hasSameAddressToggle = computed(
|
|
970
|
+
const hasSameAddressToggle = computed(
|
|
971
|
+
() =>
|
|
972
|
+
(whichForm.value === formStore.beneficiaryFormKey && member.value.iin !== formStore.policyholderForm.iin) ||
|
|
973
|
+
(dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage),
|
|
974
|
+
);
|
|
975
|
+
const hasWorkPositionDict = !useEnv().isProduction && dataStore.isBaiterek && dataStore.isEfoParent;
|
|
667
976
|
|
|
668
977
|
const birthDateRule = computed(() => {
|
|
669
978
|
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
670
|
-
const
|
|
979
|
+
const byMemberAndProductRule = () => {
|
|
671
980
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
672
981
|
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
673
982
|
return dataStore.rules.age18ByDate;
|
|
@@ -677,10 +986,13 @@ export default {
|
|
|
677
986
|
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
678
987
|
return dataStore.rules.age18ByDate;
|
|
679
988
|
}
|
|
989
|
+
if (dataStore.isLifetrip) {
|
|
990
|
+
return dataStore.rules.ageExceeds80ByDate;
|
|
991
|
+
}
|
|
680
992
|
}
|
|
681
993
|
return [];
|
|
682
994
|
};
|
|
683
|
-
return baseDateRule.concat(
|
|
995
|
+
return baseDateRule.concat(byMemberAndProductRule());
|
|
684
996
|
});
|
|
685
997
|
const ageRule = computed(() => {
|
|
686
998
|
const baseAgeRule = dataStore.rules.numbers;
|
|
@@ -711,10 +1023,13 @@ export default {
|
|
|
711
1023
|
if (dataStore.isGons || dataStore.isBolashak) {
|
|
712
1024
|
return [];
|
|
713
1025
|
}
|
|
714
|
-
if (
|
|
1026
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
715
1027
|
return [];
|
|
716
1028
|
}
|
|
717
1029
|
}
|
|
1030
|
+
if (member.value.isInsuredUnderage) {
|
|
1031
|
+
return [];
|
|
1032
|
+
}
|
|
718
1033
|
return basePhoneRule;
|
|
719
1034
|
});
|
|
720
1035
|
|
|
@@ -725,6 +1040,9 @@ export default {
|
|
|
725
1040
|
return baseResidencyRule.concat(dataStore.rules.noResident);
|
|
726
1041
|
}
|
|
727
1042
|
}
|
|
1043
|
+
if (dataStore.isLifetrip) {
|
|
1044
|
+
return baseResidencyRule.concat(dataStore.rules.noResidentOffline);
|
|
1045
|
+
}
|
|
728
1046
|
return baseResidencyRule;
|
|
729
1047
|
});
|
|
730
1048
|
|
|
@@ -732,8 +1050,10 @@ export default {
|
|
|
732
1050
|
switch (whichForm.value) {
|
|
733
1051
|
case formStore.policyholderFormKey:
|
|
734
1052
|
return route.params.taskId === '0';
|
|
735
|
-
case formStore.policyholdersRepresentativeFormKey:
|
|
736
1053
|
case formStore.insuredFormKey:
|
|
1054
|
+
if (dataStore.isPension) return route.params.taskId === '0';
|
|
1055
|
+
return route.query.id === '0';
|
|
1056
|
+
case formStore.policyholdersRepresentativeFormKey:
|
|
737
1057
|
case formStore.beneficiaryFormKey:
|
|
738
1058
|
case formStore.beneficialOwnerFormKey:
|
|
739
1059
|
return route.query.id === '0';
|
|
@@ -742,6 +1062,8 @@ export default {
|
|
|
742
1062
|
const otpCondition = computed(() => {
|
|
743
1063
|
// Add conditions by product
|
|
744
1064
|
if (member.value.hasAgreement) return false;
|
|
1065
|
+
if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
|
|
1066
|
+
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
|
|
745
1067
|
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
|
|
746
1068
|
return getOtpConditionByMember();
|
|
747
1069
|
});
|
|
@@ -749,45 +1071,72 @@ export default {
|
|
|
749
1071
|
const searchMember = async () => {
|
|
750
1072
|
if (!isDisabled.value) {
|
|
751
1073
|
dataStore.panelAction = null;
|
|
752
|
-
dataStore.
|
|
753
|
-
dataStore.
|
|
1074
|
+
dataStore.rightPanel.title = hasDocumentReader.value ? 'Получение данных со скана документа' : 'Поиск контрагента';
|
|
1075
|
+
dataStore.rightPanel.open = true;
|
|
754
1076
|
isSearchOpen.value = true;
|
|
755
1077
|
isDocumentOpen.value = false;
|
|
756
1078
|
isOtpPanelOpen.value = false;
|
|
757
1079
|
isPanelOpen.value = false;
|
|
1080
|
+
isPositionPanelOpen.value = false;
|
|
758
1081
|
} else {
|
|
759
1082
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
760
1083
|
}
|
|
761
1084
|
};
|
|
762
1085
|
|
|
1086
|
+
const searchPositions = async () => {
|
|
1087
|
+
if (!isDisabled.value) {
|
|
1088
|
+
isPanelLoading.value = true;
|
|
1089
|
+
positionsList.value = await dataStore.getWorkPosition(searchQuery.value);
|
|
1090
|
+
isPanelLoading.value = false;
|
|
1091
|
+
} else {
|
|
1092
|
+
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
1093
|
+
}
|
|
1094
|
+
};
|
|
1095
|
+
|
|
1096
|
+
const pickPosition = (position: { workPositionName: string | null; workPositionCode: string | null | 'other' }) => {
|
|
1097
|
+
member.value.jobPosition = position.workPositionName;
|
|
1098
|
+
member.value.positionCode = position.workPositionCode;
|
|
1099
|
+
dataStore.rightPanel.open = false;
|
|
1100
|
+
};
|
|
1101
|
+
|
|
763
1102
|
const scrollForm = (direction: 'up' | 'down') => {
|
|
764
1103
|
vForm.value.scrollTo({ top: direction === 'up' ? 0 : screen.height * 10, behavior: 'smooth' });
|
|
765
1104
|
};
|
|
766
1105
|
|
|
767
|
-
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
1106
|
+
const openCustomPanel = (type: 'document' | 'otp' | 'workPosition' = 'document') => {
|
|
768
1107
|
dataStore.panelAction = null;
|
|
769
1108
|
if (type === 'document' && memberDocument.value) {
|
|
770
|
-
dataStore.
|
|
1109
|
+
dataStore.rightPanel.title = memberDocument.value.fileTypeName!;
|
|
771
1110
|
isDocumentOpen.value = true;
|
|
772
1111
|
isSearchOpen.value = false;
|
|
773
1112
|
isPanelOpen.value = false;
|
|
774
1113
|
isOtpPanelOpen.value = false;
|
|
1114
|
+
isPositionPanelOpen.value = false;
|
|
775
1115
|
}
|
|
776
1116
|
if (type === 'otp') {
|
|
777
|
-
dataStore.
|
|
1117
|
+
dataStore.rightPanel.title = dataStore.t('form.otpCode');
|
|
778
1118
|
isOtpPanelOpen.value = true;
|
|
779
1119
|
isDocumentOpen.value = false;
|
|
780
1120
|
isSearchOpen.value = false;
|
|
781
1121
|
isPanelOpen.value = false;
|
|
1122
|
+
isPositionPanelOpen.value = false;
|
|
1123
|
+
}
|
|
1124
|
+
if (type === 'workPosition') {
|
|
1125
|
+
isPositionPanelOpen.value = true;
|
|
1126
|
+
isOtpPanelOpen.value = false;
|
|
1127
|
+
isDocumentOpen.value = false;
|
|
1128
|
+
isSearchOpen.value = false;
|
|
1129
|
+
isPanelOpen.value = false;
|
|
782
1130
|
}
|
|
783
|
-
dataStore.
|
|
1131
|
+
dataStore.rightPanel.open = true;
|
|
784
1132
|
};
|
|
785
1133
|
|
|
786
|
-
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
|
|
1134
|
+
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string, deepKey?: string, subDeepKey?: string) => {
|
|
787
1135
|
if (!isDisabled.value) {
|
|
788
1136
|
isSearchOpen.value = false;
|
|
789
1137
|
isDocumentOpen.value = false;
|
|
790
1138
|
isOtpPanelOpen.value = false;
|
|
1139
|
+
isPositionPanelOpen.value = false;
|
|
791
1140
|
// Feature
|
|
792
1141
|
// const notAllowedToChange = ['gender', 'documentType', 'documentIssuers'];
|
|
793
1142
|
// if (member.value.gotFromInsis === false && notAllowedToChange.includes(key)) {
|
|
@@ -798,16 +1147,41 @@ export default {
|
|
|
798
1147
|
currentPanel.value = key as keyof typeof member.value;
|
|
799
1148
|
isPanelOpen.value = true;
|
|
800
1149
|
dataStore.panelAction = null;
|
|
801
|
-
dataStore.
|
|
802
|
-
dataStore.
|
|
1150
|
+
dataStore.rightPanel.open = true;
|
|
1151
|
+
dataStore.rightPanel.title = title;
|
|
803
1152
|
|
|
804
1153
|
let newList = list;
|
|
805
1154
|
if (asyncFunction) {
|
|
806
1155
|
isPanelLoading.value = true;
|
|
807
|
-
|
|
1156
|
+
const filterKeys: any = {};
|
|
1157
|
+
if (!!subDeepKey) {
|
|
1158
|
+
filterKeys.key = key;
|
|
1159
|
+
filterKeys.deepKey = deepKey;
|
|
1160
|
+
filterKeys.subDeepKey = filterKey;
|
|
1161
|
+
} else {
|
|
1162
|
+
if (!!deepKey) {
|
|
1163
|
+
filterKeys.key = key;
|
|
1164
|
+
filterKeys.deepKey = filterKey;
|
|
1165
|
+
} else {
|
|
1166
|
+
filterKeys.key = filterKey;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
newList = await asyncFunction(filterKey, member.value, filterKeys);
|
|
808
1170
|
}
|
|
809
1171
|
panelList.value = filterList(newList, key);
|
|
810
|
-
panelValue.value =
|
|
1172
|
+
panelValue.value = !!deepKey
|
|
1173
|
+
? !!subDeepKey
|
|
1174
|
+
? //@ts-ignore
|
|
1175
|
+
member.value[currentPanel.value][deepKey as any][subDeepKey as any]
|
|
1176
|
+
: //@ts-ignore
|
|
1177
|
+
member.value[currentPanel.value][deepKey as any]
|
|
1178
|
+
: member.value[currentPanel.value];
|
|
1179
|
+
if (!!deepKey) {
|
|
1180
|
+
currentPanelDeep.value = deepKey;
|
|
1181
|
+
if (!!subDeepKey) {
|
|
1182
|
+
currentPanelSubDeep.value = subDeepKey;
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
811
1185
|
isPanelLoading.value = false;
|
|
812
1186
|
} else {
|
|
813
1187
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -831,11 +1205,24 @@ export default {
|
|
|
831
1205
|
};
|
|
832
1206
|
|
|
833
1207
|
const pickPanelValue = (item: Value) => {
|
|
1208
|
+
if (!currentPanel.value) return;
|
|
834
1209
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
835
|
-
dataStore.
|
|
1210
|
+
dataStore.rightPanel.open = false;
|
|
836
1211
|
isPanelOpen.value = false;
|
|
837
|
-
|
|
838
|
-
|
|
1212
|
+
if (!!currentPanelDeep.value) {
|
|
1213
|
+
if (!!currentPanelSubDeep.value) {
|
|
1214
|
+
//@ts-ignore
|
|
1215
|
+
member.value[currentPanel.value][currentPanelDeep.value][currentPanelSubDeep.value] = item.nameRu === null ? new Value() : item;
|
|
1216
|
+
} else {
|
|
1217
|
+
//@ts-ignore
|
|
1218
|
+
member.value[currentPanel.value][currentPanelDeep.value] = item.nameRu === null ? new Value() : item;
|
|
1219
|
+
}
|
|
1220
|
+
} else {
|
|
1221
|
+
// @ts-ignore
|
|
1222
|
+
member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
|
|
1223
|
+
}
|
|
1224
|
+
currentPanelDeep.value = '';
|
|
1225
|
+
currentPanelSubDeep.value = '';
|
|
839
1226
|
} else {
|
|
840
1227
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
841
1228
|
}
|
|
@@ -864,13 +1251,102 @@ export default {
|
|
|
864
1251
|
}
|
|
865
1252
|
};
|
|
866
1253
|
|
|
867
|
-
const attachFile = (event: InputEvent) => {
|
|
1254
|
+
const attachFile = (event: InputEvent, code?: string) => {
|
|
1255
|
+
if (event.target) {
|
|
1256
|
+
fileData.value = code ? { file: (event.target as HTMLInputElement).files } : { file: (event.target as HTMLInputElement).files };
|
|
1257
|
+
} else {
|
|
1258
|
+
if (event.dataTransfer) {
|
|
1259
|
+
fileData.value = code ? { file: (event.dataTransfer as DataTransfer).files } : { file: (event.dataTransfer as DataTransfer).files };
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
};
|
|
1263
|
+
|
|
1264
|
+
const attachDocumentReader = async (event: InputEvent) => {
|
|
868
1265
|
if (event.target) {
|
|
869
|
-
|
|
1266
|
+
const target = event.target as HTMLInputElement;
|
|
1267
|
+
if (target.files && !!target.files.length) {
|
|
1268
|
+
imageDataList.value = [];
|
|
1269
|
+
await Promise.allSettled(
|
|
1270
|
+
Object.values(target.files).map(async f => {
|
|
1271
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1272
|
+
imageDataList.value.push(await getBase64());
|
|
1273
|
+
}),
|
|
1274
|
+
);
|
|
1275
|
+
}
|
|
870
1276
|
} else {
|
|
871
1277
|
if (event.dataTransfer) {
|
|
872
|
-
|
|
1278
|
+
const dataTransfer = event.dataTransfer as DataTransfer;
|
|
1279
|
+
if (!!dataTransfer.files && !!dataTransfer.files.length) {
|
|
1280
|
+
imageDataList.value = [];
|
|
1281
|
+
await Promise.allSettled(
|
|
1282
|
+
Object.values(dataTransfer.files).map(async f => {
|
|
1283
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1284
|
+
imageDataList.value.push(await getBase64());
|
|
1285
|
+
}),
|
|
1286
|
+
);
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
};
|
|
1291
|
+
|
|
1292
|
+
const getDocumentReader = async () => {
|
|
1293
|
+
if (imageDataList.value && !!imageDataList.value.length) {
|
|
1294
|
+
isButtonLoading.value = true;
|
|
1295
|
+
const parsedDocument = await callDocumentReader(imageDataList.value);
|
|
1296
|
+
if (typeof parsedDocument === 'object') {
|
|
1297
|
+
if (
|
|
1298
|
+
member.value.iin &&
|
|
1299
|
+
parsedDocument.iin &&
|
|
1300
|
+
reformatIin(parsedDocument.iin) &&
|
|
1301
|
+
member.value.iin.length === useMask().iin.length &&
|
|
1302
|
+
reformatIin(parsedDocument.iin).length === useMask().iin.length &&
|
|
1303
|
+
member.value.iin !== reformatIin(parsedDocument.iin)
|
|
1304
|
+
) {
|
|
1305
|
+
dataStore.showToaster('error', 'Не совпадают ИИН');
|
|
1306
|
+
isButtonLoading.value = false;
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1309
|
+
formatDateProperty(parsedDocument, 'front');
|
|
1310
|
+
member.value.parsedDocument = parsedDocument;
|
|
1311
|
+
if (parsedDocument.age) member.value.age = parsedDocument.age;
|
|
1312
|
+
if (parsedDocument.iin) member.value.iin = reformatIin(parsedDocument.iin);
|
|
1313
|
+
if (parsedDocument.gender) {
|
|
1314
|
+
if (parsedDocument.gender === 'M' || parsedDocument.gender === 'F') {
|
|
1315
|
+
const gender = dataStore.gender.find((i: Value) => i.id === (parsedDocument.gender === 'M' ? 1 : 2));
|
|
1316
|
+
if (gender) member.value.gender = gender;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
if (parsedDocument.birthDate) member.value.birthDate = parsedDocument.birthDate;
|
|
1320
|
+
if (parsedDocument.documentIssueDate) member.value.documentDate = parsedDocument.documentIssueDate;
|
|
1321
|
+
if (parsedDocument.documentExpireDate) member.value.documentExpire = parsedDocument.documentExpireDate;
|
|
1322
|
+
if (parsedDocument.documentNumber) member.value.documentNumber = parsedDocument.documentNumber;
|
|
1323
|
+
if (parsedDocument.lastName) member.value.lastName = parsedDocument.lastName;
|
|
1324
|
+
if (parsedDocument.firstName) member.value.firstName = parsedDocument.firstName;
|
|
1325
|
+
if (parsedDocument.middleName) member.value.middleName = parsedDocument.middleName;
|
|
1326
|
+
if (parsedDocument.fullName) member.value.longName = parsedDocument.fullName;
|
|
1327
|
+
if (parsedDocument.documentName && parsedDocument.documentName.startsWith('Kazakhstan - Id Card')) {
|
|
1328
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === Enums.Insis.DocTypes['1UDL']);
|
|
1329
|
+
if (documentType) member.value.documentType = documentType;
|
|
1330
|
+
}
|
|
1331
|
+
if (!!parsedDocument.documentIssuer) {
|
|
1332
|
+
if (
|
|
1333
|
+
/МИНИСТЕРСТВО ВНУТРЕННИХ ДЕЛ( РК| РҚ)?/gi.test(parsedDocument.documentIssuer) ||
|
|
1334
|
+
/(КР |ҚР )?ІШКІ ІСТЕР МИНИСТРЛІГІ/gi.test(parsedDocument.documentIssuer) ||
|
|
1335
|
+
/ҚАЗАҚСТАН/gi.test(parsedDocument.documentIssuer) ||
|
|
1336
|
+
/КАЗАХСТАН/gi.test(parsedDocument.documentIssuer)
|
|
1337
|
+
) {
|
|
1338
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp('МВД РК', 'i')));
|
|
1339
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1340
|
+
} else {
|
|
1341
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp(`${parsedDocument.documentIssuer}`, 'i')));
|
|
1342
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1345
|
+
dataStore.rightPanel.open = false;
|
|
1346
|
+
dataStore.showToaster('success', dataStore.t('toaster.successOperation'));
|
|
1347
|
+
imageDataList.value = [];
|
|
873
1348
|
}
|
|
1349
|
+
isButtonLoading.value = false;
|
|
874
1350
|
}
|
|
875
1351
|
};
|
|
876
1352
|
|
|
@@ -904,11 +1380,11 @@ export default {
|
|
|
904
1380
|
familyDialog.value = false;
|
|
905
1381
|
selectedFamilyMember.value = {};
|
|
906
1382
|
isButtonLoading.value = false;
|
|
907
|
-
dataStore.
|
|
1383
|
+
dataStore.rightPanel.open = false;
|
|
908
1384
|
isSearchOpen.value = false;
|
|
909
1385
|
};
|
|
910
1386
|
|
|
911
|
-
const selectFamilyMember = (familyMember:
|
|
1387
|
+
const selectFamilyMember = (familyMember: Api.GKB.BirthInfo) => {
|
|
912
1388
|
if (selectedFamilyMember.value && selectedFamilyMember.value.childIIN === familyMember.childIIN) {
|
|
913
1389
|
selectedFamilyMember.value = {};
|
|
914
1390
|
} else {
|
|
@@ -921,20 +1397,20 @@ export default {
|
|
|
921
1397
|
}
|
|
922
1398
|
familyDialog.value = false;
|
|
923
1399
|
isButtonLoading.value = false;
|
|
924
|
-
dataStore.
|
|
1400
|
+
dataStore.rightPanel.open = false;
|
|
925
1401
|
isSearchOpen.value = false;
|
|
926
1402
|
};
|
|
927
1403
|
|
|
928
1404
|
const getContragentFromGBDFL = async () => {
|
|
929
1405
|
if (member.value.hasAgreement !== true) {
|
|
930
1406
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
931
|
-
dataStore.
|
|
1407
|
+
dataStore.rightPanel.open = false;
|
|
932
1408
|
isSearchOpen.value = false;
|
|
933
1409
|
return;
|
|
934
1410
|
}
|
|
935
1411
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
936
1412
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
937
|
-
dataStore.
|
|
1413
|
+
dataStore.rightPanel.open = false;
|
|
938
1414
|
isSearchOpen.value = false;
|
|
939
1415
|
return;
|
|
940
1416
|
}
|
|
@@ -943,34 +1419,55 @@ export default {
|
|
|
943
1419
|
if (typeof response === 'boolean') {
|
|
944
1420
|
if (response === true) {
|
|
945
1421
|
member.value.gotFromInsis = true;
|
|
1422
|
+
if (hasGBDFLDocSelection) documentChooseDialog.value = true;
|
|
946
1423
|
}
|
|
947
|
-
dataStore.
|
|
1424
|
+
dataStore.rightPanel.open = false;
|
|
948
1425
|
isSearchOpen.value = false;
|
|
949
1426
|
}
|
|
950
1427
|
isButtonLoading.value = false;
|
|
951
1428
|
};
|
|
952
1429
|
|
|
1430
|
+
const selectGbdDocument = (document: Api.GBD.Document) => {
|
|
1431
|
+
if (document) {
|
|
1432
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === Object.keys(Enums.GBD.DocTypes)[Object.values(Enums.GBD.DocTypes).indexOf(document.type.code)]);
|
|
1433
|
+
if (documentType) member.value.documentType = documentType;
|
|
1434
|
+
const documentNumber = document.number;
|
|
1435
|
+
if (documentNumber) member.value.documentNumber = documentNumber;
|
|
1436
|
+
const documentDate = document.beginDate;
|
|
1437
|
+
if (documentDate) member.value.documentDate = reformatDate(documentDate);
|
|
1438
|
+
const documentExpire = document.endDate;
|
|
1439
|
+
if (documentExpire) member.value.documentExpire = reformatDate(documentExpire);
|
|
1440
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp('МВД РК', 'i')));
|
|
1441
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1442
|
+
}
|
|
1443
|
+
documentChooseDialog.value = false;
|
|
1444
|
+
isButtonLoading.value = false;
|
|
1445
|
+
dataStore.rightPanel.open = false;
|
|
1446
|
+
isSearchOpen.value = false;
|
|
1447
|
+
};
|
|
1448
|
+
|
|
953
1449
|
const getContragent = async () => {
|
|
954
1450
|
if (member.value.hasAgreement !== true) {
|
|
955
1451
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
956
|
-
dataStore.
|
|
1452
|
+
dataStore.rightPanel.open = false;
|
|
957
1453
|
isSearchOpen.value = false;
|
|
958
1454
|
return;
|
|
959
1455
|
}
|
|
960
1456
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
961
1457
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
962
|
-
dataStore.
|
|
1458
|
+
dataStore.rightPanel.open = false;
|
|
963
1459
|
isSearchOpen.value = false;
|
|
964
1460
|
return;
|
|
965
1461
|
}
|
|
966
1462
|
isButtonLoading.value = true;
|
|
967
1463
|
await dataStore.getContragent(member.value, false);
|
|
968
1464
|
isButtonLoading.value = false;
|
|
969
|
-
dataStore.
|
|
1465
|
+
dataStore.rightPanel.open = false;
|
|
970
1466
|
isSearchOpen.value = false;
|
|
971
1467
|
};
|
|
972
1468
|
|
|
973
1469
|
const validateESBD = async (docTypeNumber: number) => {
|
|
1470
|
+
// TODO
|
|
974
1471
|
const data: ESBDValidationType = {
|
|
975
1472
|
personType: 1,
|
|
976
1473
|
iin: member.value.iin!.replaceAll('-', ''),
|
|
@@ -984,9 +1481,9 @@ export default {
|
|
|
984
1481
|
docIssuedDate: member.value.getDateByKey('documentDate') ?? '',
|
|
985
1482
|
docIssuedBy: member.value.documentIssuers.nameRu ?? '',
|
|
986
1483
|
activityKindId: 0,
|
|
987
|
-
economicsSectorId: Number((member.value.economySectorCode.ids
|
|
1484
|
+
economicsSectorId: Number(String(member.value.economySectorCode.ids).at(-1)),
|
|
988
1485
|
resident: member.value.signOfResidency.ids === '500011.2' || member.value.signOfResidency.ids === null ? 0 : 1,
|
|
989
|
-
countryId: Number((member.value.countryOfTaxResidency.ids
|
|
1486
|
+
countryId: member.value.countryOfTaxResidency.ids !== '500014.3' ? Number(String(member.value.countryOfTaxResidency.ids).at(-1)) : 2,
|
|
990
1487
|
};
|
|
991
1488
|
return await dataStore.getValidateClientESBD(data);
|
|
992
1489
|
};
|
|
@@ -999,10 +1496,10 @@ export default {
|
|
|
999
1496
|
}
|
|
1000
1497
|
const isInsured = formStore.isPolicyholderInsured;
|
|
1001
1498
|
const remoteIsInsured = ref<boolean | null>(null);
|
|
1002
|
-
if (whichForm.value == formStore.policyholderFormKey) {
|
|
1499
|
+
if (whichForm.value == formStore.policyholderFormKey || (dataStore.isPension && whichForm.value == formStore.insuredFormKey)) {
|
|
1003
1500
|
if (route.params.taskId === '0') {
|
|
1004
1501
|
try {
|
|
1005
|
-
const taskId = await dataStore.startApplication(member.value);
|
|
1502
|
+
const taskId = await dataStore.startApplication(member.value, dataStore.isPension ? (String(route.query.type) === 'joint' ? 4 : 19) : undefined);
|
|
1006
1503
|
if (typeof taskId === 'string') {
|
|
1007
1504
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1008
1505
|
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
@@ -1036,18 +1533,44 @@ export default {
|
|
|
1036
1533
|
if (!isSaved) return false;
|
|
1037
1534
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
1038
1535
|
if (isInsured === true || remoteIsInsured.value === true) {
|
|
1039
|
-
formStore.insuredForm
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1536
|
+
const insuredFormIndex = remoteIsInsured.value === true ? 0 : isInsured === true ? formStore.insuredForm.findIndex(i => i.iin === formStore.policyholderForm.iin) : -1;
|
|
1537
|
+
if (insuredFormIndex !== -1) {
|
|
1538
|
+
formStore.insuredForm[insuredFormIndex] = formStore.policyholderForm;
|
|
1539
|
+
const isInsuredSaved = await dataStore.saveMember(
|
|
1540
|
+
member.value,
|
|
1541
|
+
memberStore.getMemberCode(formStore.insuredFormKey)!,
|
|
1542
|
+
memberStore.getMemberFromApplication(formStore.insuredFormKey, insuredFormIndex),
|
|
1543
|
+
);
|
|
1544
|
+
if (!isInsuredSaved) return false;
|
|
1545
|
+
wasInsuredAction.value = true;
|
|
1546
|
+
}
|
|
1047
1547
|
}
|
|
1048
1548
|
}
|
|
1049
1549
|
if (whichForm.value === formStore.insuredFormKey) {
|
|
1050
1550
|
wasInsuredAction.value = true;
|
|
1551
|
+
if (dataStore.isPension) {
|
|
1552
|
+
formStore.applicationData.pensionApp = {
|
|
1553
|
+
...formStore.applicationData.pensionApp,
|
|
1554
|
+
account: member.value.bankInfo.iik,
|
|
1555
|
+
bankBik: member.value.bankInfo.bik,
|
|
1556
|
+
bankBin: member.value.bankInfo.bankName.ids,
|
|
1557
|
+
bankId: member.value.bankInfo.bankName.id,
|
|
1558
|
+
bankName: member.value.bankInfo.bankName.nameRu,
|
|
1559
|
+
guaranteedPeriod: 0,
|
|
1560
|
+
amount: 0,
|
|
1561
|
+
compulsoryContractAmount: 0,
|
|
1562
|
+
voluntaryContractAmount: 0,
|
|
1563
|
+
ownFundsRaisAmount: 0,
|
|
1564
|
+
compulsoryProfContractAmount: 0,
|
|
1565
|
+
};
|
|
1566
|
+
const data = {
|
|
1567
|
+
...formStore.applicationData.pensionApp,
|
|
1568
|
+
transferContractCompany: formStore.applicationData.pensionApp.transferContractCompany?.nameRu ?? null,
|
|
1569
|
+
};
|
|
1570
|
+
const isApplicationSaved = await dataStore.setApplication(data);
|
|
1571
|
+
if (isApplicationSaved === false) return;
|
|
1572
|
+
dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
|
|
1573
|
+
}
|
|
1051
1574
|
}
|
|
1052
1575
|
await router.replace({
|
|
1053
1576
|
name: route.name!,
|
|
@@ -1056,8 +1579,8 @@ export default {
|
|
|
1056
1579
|
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
1057
1580
|
if (dataStore.controls.hasCalculator) {
|
|
1058
1581
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
1059
|
-
formStore.additionalInsuranceTerms.forEach(
|
|
1060
|
-
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(
|
|
1582
|
+
formStore.additionalInsuranceTerms.forEach(term => {
|
|
1583
|
+
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
|
|
1061
1584
|
if (defaultTerm) {
|
|
1062
1585
|
term.coverSumName = defaultTerm.coverSumName;
|
|
1063
1586
|
term.coverSumId = defaultTerm.coverSumId;
|
|
@@ -1071,14 +1594,16 @@ export default {
|
|
|
1071
1594
|
};
|
|
1072
1595
|
|
|
1073
1596
|
const validateAgreement = () => {
|
|
1074
|
-
if (dataStore.
|
|
1075
|
-
|
|
1076
|
-
|
|
1597
|
+
if (dataStore.isPension && whichForm.value === formStore.policyholdersRepresentativeFormKey) {
|
|
1598
|
+
return true;
|
|
1599
|
+
}
|
|
1600
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1601
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
1077
1602
|
return true;
|
|
1078
1603
|
}
|
|
1079
1604
|
}
|
|
1080
|
-
if (
|
|
1081
|
-
if (
|
|
1605
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
1606
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
1082
1607
|
return true;
|
|
1083
1608
|
}
|
|
1084
1609
|
}
|
|
@@ -1096,10 +1621,20 @@ export default {
|
|
|
1096
1621
|
if (v.valid) {
|
|
1097
1622
|
isSubmittingForm.value = true;
|
|
1098
1623
|
const docType = member.value.documentType.ids;
|
|
1099
|
-
if (
|
|
1624
|
+
if (
|
|
1625
|
+
member.value.gotFromInsis === true &&
|
|
1626
|
+
(docType === Enums.Insis.DocTypes['1UDL'] || docType === Enums.Insis.DocTypes.SBI || docType === Enums.Insis.DocTypes.PS || docType === Enums.Insis.DocTypes.VNZ)
|
|
1627
|
+
) {
|
|
1100
1628
|
dataStore.isLoading = true;
|
|
1101
|
-
const
|
|
1629
|
+
const docTypeCodes = {
|
|
1630
|
+
'1UDL': 1,
|
|
1631
|
+
PS: 2,
|
|
1632
|
+
SBI: 3,
|
|
1633
|
+
VNZ: 4,
|
|
1634
|
+
};
|
|
1635
|
+
const ESBDResponse = await validateESBD(docTypeCodes[docType]);
|
|
1102
1636
|
if (!ESBDResponse) {
|
|
1637
|
+
isSubmittingForm.value = false;
|
|
1103
1638
|
dataStore.isLoading = false;
|
|
1104
1639
|
return;
|
|
1105
1640
|
}
|
|
@@ -1109,6 +1644,22 @@ export default {
|
|
|
1109
1644
|
if (typeof ESBDResponse === 'object' && ESBDResponse.errorCode === 0) {
|
|
1110
1645
|
member.value.verifyType = 'ESBD';
|
|
1111
1646
|
member.value.verifyDate = ESBDResponse.verifiedDate;
|
|
1647
|
+
|
|
1648
|
+
if (member.value.bankInfo.iik.length === useMask().iik.length) {
|
|
1649
|
+
const isValidIik = await dataStore.checkAccountNumber(member.value.bankInfo.iik);
|
|
1650
|
+
if (isValidIik === false) {
|
|
1651
|
+
dataStore.showToaster('error', dataStore.t('error.notValidIik'));
|
|
1652
|
+
member.value.bankInfo.iik = '';
|
|
1653
|
+
isSubmittingForm.value = false;
|
|
1654
|
+
return;
|
|
1655
|
+
}
|
|
1656
|
+
if (formStore.applicationData.pensionApp) {
|
|
1657
|
+
formStore.applicationData.pensionApp.account = member.value.bankInfo.iik;
|
|
1658
|
+
formStore.applicationData.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1659
|
+
formStore.applicationData.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1660
|
+
formStore.applicationData.pensionApp.bankId = member.value.bankInfo.bankName.id;
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1112
1663
|
const hasMemberSaved = await saveMember();
|
|
1113
1664
|
} else {
|
|
1114
1665
|
dataStore.isLoading = false;
|
|
@@ -1153,7 +1704,7 @@ export default {
|
|
|
1153
1704
|
}
|
|
1154
1705
|
otpSending.value = false;
|
|
1155
1706
|
if (checked === true) {
|
|
1156
|
-
dataStore.
|
|
1707
|
+
dataStore.rightPanel.open = false;
|
|
1157
1708
|
}
|
|
1158
1709
|
};
|
|
1159
1710
|
|
|
@@ -1163,7 +1714,7 @@ export default {
|
|
|
1163
1714
|
if (response) {
|
|
1164
1715
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1165
1716
|
if (response.otpStatus === true) {
|
|
1166
|
-
dataStore.
|
|
1717
|
+
dataStore.rightPanel.open = false;
|
|
1167
1718
|
}
|
|
1168
1719
|
}
|
|
1169
1720
|
otpSending.value = false;
|
|
@@ -1177,6 +1728,15 @@ export default {
|
|
|
1177
1728
|
if (setDefaults.percentage) {
|
|
1178
1729
|
setPercentage();
|
|
1179
1730
|
}
|
|
1731
|
+
if (setDefaults.signOfResidency) {
|
|
1732
|
+
setSignOfResidency();
|
|
1733
|
+
}
|
|
1734
|
+
if (setDefaults.countryOfTaxResidency) {
|
|
1735
|
+
setCountryOfTaxResidency();
|
|
1736
|
+
}
|
|
1737
|
+
if (setDefaults.countryOfCitizenship) {
|
|
1738
|
+
setCountryOfCitizenship();
|
|
1739
|
+
}
|
|
1180
1740
|
};
|
|
1181
1741
|
|
|
1182
1742
|
const setSectorCode = async () => {
|
|
@@ -1186,7 +1746,27 @@ export default {
|
|
|
1186
1746
|
member.value.economySectorCode = defaultValue ? defaultValue : new Value();
|
|
1187
1747
|
}
|
|
1188
1748
|
};
|
|
1189
|
-
|
|
1749
|
+
const setSignOfResidency = async () => {
|
|
1750
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1751
|
+
const residents = await dataStore.getResidents();
|
|
1752
|
+
const defaultValue = residents.find(item => String(item.nameRu).match(new RegExp('Резидент', 'i'))) as Value;
|
|
1753
|
+
member.value.signOfResidency = defaultValue ? defaultValue : new Value();
|
|
1754
|
+
}
|
|
1755
|
+
};
|
|
1756
|
+
const setCountryOfTaxResidency = async () => {
|
|
1757
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1758
|
+
const taxCountries = await dataStore.getTaxCountries();
|
|
1759
|
+
const defaultValue = taxCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1760
|
+
member.value.countryOfTaxResidency = defaultValue ? defaultValue : new Value();
|
|
1761
|
+
}
|
|
1762
|
+
};
|
|
1763
|
+
const setCountryOfCitizenship = async () => {
|
|
1764
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1765
|
+
const citizenshipCountries = await dataStore.getCitizenshipCountries();
|
|
1766
|
+
const defaultValue = citizenshipCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1767
|
+
member.value.countryOfCitizenship = defaultValue ? defaultValue : new Value();
|
|
1768
|
+
}
|
|
1769
|
+
};
|
|
1190
1770
|
const setPercentage = () => {
|
|
1191
1771
|
if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
|
|
1192
1772
|
if (dataStore.members.beneficiaryApp.isMultiple) {
|
|
@@ -1203,7 +1783,7 @@ export default {
|
|
|
1203
1783
|
};
|
|
1204
1784
|
|
|
1205
1785
|
const selectMember = async (index: number, update?: boolean) => {
|
|
1206
|
-
dataStore.
|
|
1786
|
+
dataStore.rightPanel.open = false;
|
|
1207
1787
|
isButtonLoading.value = true;
|
|
1208
1788
|
isChangingMember.value = true;
|
|
1209
1789
|
//@ts-ignore
|
|
@@ -1212,13 +1792,19 @@ export default {
|
|
|
1212
1792
|
isButtonLoading.value = false;
|
|
1213
1793
|
};
|
|
1214
1794
|
|
|
1215
|
-
const
|
|
1216
|
-
|
|
1795
|
+
const openDeletionDialog = (index: number) => {
|
|
1796
|
+
deletionDialog.value = true;
|
|
1797
|
+
selectedIndex.value = index;
|
|
1798
|
+
};
|
|
1799
|
+
|
|
1800
|
+
const deleteMember = async () => {
|
|
1801
|
+
await memberStore.deleteMember(route.params.taskId as string, whichForm.value, selectedIndex.value);
|
|
1217
1802
|
const currentIndex = Number(whichIndex.value);
|
|
1218
|
-
if (
|
|
1803
|
+
if (selectedIndex.value <= currentIndex) {
|
|
1219
1804
|
const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
|
|
1220
|
-
await selectMember(newIndex.value,
|
|
1805
|
+
await selectMember(newIndex.value, selectedIndex.value === currentIndex ? true : undefined);
|
|
1221
1806
|
}
|
|
1807
|
+
deletionDialog.value = false;
|
|
1222
1808
|
};
|
|
1223
1809
|
|
|
1224
1810
|
const onInit = async () => {
|
|
@@ -1234,12 +1820,30 @@ export default {
|
|
|
1234
1820
|
await router.replace({ query: { ...route.query, id: 0 } });
|
|
1235
1821
|
} else {
|
|
1236
1822
|
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1823
|
+
if (dataStore.isLifetrip) {
|
|
1824
|
+
const documentByPriority = (() => {
|
|
1825
|
+
if (whichForm.value !== formStore.policyholderFormKey || formStore.isPolicyholderInsured === true) {
|
|
1826
|
+
return member.value.documentsList.find(i => i.type === Enums.Insis.DocTypes.PS);
|
|
1827
|
+
}
|
|
1828
|
+
return member.value.documentsList.find(i => i.type === Enums.Insis.DocTypes['1UDL']);
|
|
1829
|
+
})();
|
|
1830
|
+
const userDocument = documentByPriority ? documentByPriority : member.value.documentsList[0];
|
|
1831
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === userDocument.type);
|
|
1832
|
+
const documentIssuer = dataStore.documentIssuers.find((i: Value) => i.nameRu === userDocument.issuerNameRu);
|
|
1833
|
+
member.value.documentType = documentType ? documentType : new Value();
|
|
1834
|
+
member.value.documentNumber = userDocument.number;
|
|
1835
|
+
member.value.documentIssuers = documentIssuer ? documentIssuer : new Value();
|
|
1836
|
+
member.value.documentDate = reformatDate(userDocument.issueDate);
|
|
1837
|
+
member.value.documentExpire = reformatDate(userDocument.expireDate);
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1237
1840
|
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1238
1841
|
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1239
1842
|
}
|
|
1240
1843
|
await setDefaultValues();
|
|
1844
|
+
if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
|
|
1845
|
+
if (hasWorkPositionDict && member.value.positionCode === null) member.value.jobPosition = null;
|
|
1241
1846
|
};
|
|
1242
|
-
|
|
1243
1847
|
onMounted(async () => {
|
|
1244
1848
|
await onInit();
|
|
1245
1849
|
});
|
|
@@ -1248,6 +1852,7 @@ export default {
|
|
|
1248
1852
|
() => sameAddress.value,
|
|
1249
1853
|
() => {
|
|
1250
1854
|
if (whichForm.value === formStore.beneficiaryFormKey) setAddressBeneficiary(Number(whichIndex.value), sameAddress.value);
|
|
1855
|
+
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) setAddressInsured(Number(whichIndex.value), sameAddress.value);
|
|
1251
1856
|
},
|
|
1252
1857
|
);
|
|
1253
1858
|
|
|
@@ -1302,14 +1907,17 @@ export default {
|
|
|
1302
1907
|
};
|
|
1303
1908
|
|
|
1304
1909
|
watch(
|
|
1305
|
-
() => dataStore.
|
|
1910
|
+
() => dataStore.rightPanel.open,
|
|
1306
1911
|
() => {
|
|
1307
|
-
if (dataStore.
|
|
1912
|
+
if (dataStore.rightPanel.open === false) {
|
|
1308
1913
|
isPanelOpen.value = false;
|
|
1309
1914
|
isDocumentOpen.value = false;
|
|
1310
1915
|
isSearchOpen.value = false;
|
|
1311
1916
|
isOtpPanelOpen.value = false;
|
|
1917
|
+
isPositionPanelOpen.value = false;
|
|
1312
1918
|
dataStore.panelAction = null;
|
|
1919
|
+
currentPanelDeep.value = '';
|
|
1920
|
+
currentPanelSubDeep.value = '';
|
|
1313
1921
|
}
|
|
1314
1922
|
},
|
|
1315
1923
|
{ immediate: true },
|
|
@@ -1320,6 +1928,51 @@ export default {
|
|
|
1320
1928
|
searchQuery.value = '';
|
|
1321
1929
|
}
|
|
1322
1930
|
});
|
|
1931
|
+
if (dataStore.isLifetrip) {
|
|
1932
|
+
watch(
|
|
1933
|
+
() => member.value.age,
|
|
1934
|
+
val => {
|
|
1935
|
+
if (val && Number(val) >= 18) {
|
|
1936
|
+
if (member.value.hasAgreement !== true) {
|
|
1937
|
+
member.value.hasAgreement = false;
|
|
1938
|
+
}
|
|
1939
|
+
} else {
|
|
1940
|
+
member.value.hasAgreement = true;
|
|
1941
|
+
}
|
|
1942
|
+
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1943
|
+
},
|
|
1944
|
+
{ immediate: true },
|
|
1945
|
+
);
|
|
1946
|
+
watch(
|
|
1947
|
+
() => member.value.isInsuredUnderage,
|
|
1948
|
+
val => {
|
|
1949
|
+
if (val === true && Number(member.value.age) >= 18) {
|
|
1950
|
+
member.value.isInsuredUnderage = false;
|
|
1951
|
+
return dataStore.showToaster('error', dataStore.t('toaster.underageShouldBeLess18'), 3000);
|
|
1952
|
+
}
|
|
1953
|
+
},
|
|
1954
|
+
);
|
|
1955
|
+
}
|
|
1956
|
+
if (dataStore.isPension) {
|
|
1957
|
+
watch(
|
|
1958
|
+
() => member.value.bankInfo.bankName,
|
|
1959
|
+
val => {
|
|
1960
|
+
if (val) {
|
|
1961
|
+
member.value.bankInfo.bik = val.code as string;
|
|
1962
|
+
member.value.bankInfo.bin = reformatIin(val.ids as string);
|
|
1963
|
+
}
|
|
1964
|
+
},
|
|
1965
|
+
);
|
|
1966
|
+
watch(
|
|
1967
|
+
() => member.value.isDisability,
|
|
1968
|
+
val => {
|
|
1969
|
+
if (!val) member.value.disabilityGroup = new Value();
|
|
1970
|
+
},
|
|
1971
|
+
{
|
|
1972
|
+
immediate: true,
|
|
1973
|
+
},
|
|
1974
|
+
);
|
|
1975
|
+
}
|
|
1323
1976
|
|
|
1324
1977
|
return {
|
|
1325
1978
|
// State
|
|
@@ -1331,6 +1984,7 @@ export default {
|
|
|
1331
1984
|
isSearchOpen,
|
|
1332
1985
|
isDocumentOpen,
|
|
1333
1986
|
isOtpPanelOpen,
|
|
1987
|
+
isPositionPanelOpen,
|
|
1334
1988
|
isPanelLoading,
|
|
1335
1989
|
isButtonLoading,
|
|
1336
1990
|
isSubmittingForm,
|
|
@@ -1338,13 +1992,18 @@ export default {
|
|
|
1338
1992
|
otpSending,
|
|
1339
1993
|
panelValue,
|
|
1340
1994
|
panelList,
|
|
1995
|
+
positionsList,
|
|
1341
1996
|
searchQuery,
|
|
1342
1997
|
Value,
|
|
1343
1998
|
memberDocument,
|
|
1344
1999
|
familyDialog,
|
|
2000
|
+
deletionDialog,
|
|
2001
|
+
documentChooseDialog,
|
|
2002
|
+
selectedIndex,
|
|
1345
2003
|
selectedFamilyMember,
|
|
1346
2004
|
sameAddress,
|
|
1347
|
-
|
|
2005
|
+
isRelative,
|
|
2006
|
+
imageDataList,
|
|
1348
2007
|
// Computed
|
|
1349
2008
|
whichForm,
|
|
1350
2009
|
whichIndex,
|
|
@@ -1359,10 +2018,17 @@ export default {
|
|
|
1359
2018
|
hasGBDFL,
|
|
1360
2019
|
hasInsis,
|
|
1361
2020
|
hasGKB,
|
|
2021
|
+
hasDocumentReader,
|
|
2022
|
+
hasMiddleName,
|
|
2023
|
+
hasRelationDegree,
|
|
1362
2024
|
hasFamilyStatus,
|
|
1363
2025
|
hasInsurancePay,
|
|
1364
2026
|
hasSignOfIPDL,
|
|
1365
2027
|
hasSameAddressToggle,
|
|
2028
|
+
hasMemberSearch,
|
|
2029
|
+
hasWorkPositionDict,
|
|
2030
|
+
gbdDocuments,
|
|
2031
|
+
hasGBDFLDocSelection,
|
|
1366
2032
|
|
|
1367
2033
|
// Rules
|
|
1368
2034
|
ageRule,
|
|
@@ -1382,14 +2048,20 @@ export default {
|
|
|
1382
2048
|
getContragentFromGBDFL,
|
|
1383
2049
|
getContragent,
|
|
1384
2050
|
attachFile,
|
|
2051
|
+
attachDocumentReader,
|
|
2052
|
+
getDocumentReader,
|
|
1385
2053
|
getFile,
|
|
1386
2054
|
selectFamilyMember,
|
|
1387
2055
|
closeFamilyDialog,
|
|
2056
|
+
openDeletionDialog,
|
|
1388
2057
|
scrollForm,
|
|
1389
2058
|
onIinInput,
|
|
1390
2059
|
onOtpCodeInput,
|
|
1391
2060
|
deleteMember,
|
|
1392
2061
|
selectMember,
|
|
2062
|
+
searchPositions,
|
|
2063
|
+
selectGbdDocument,
|
|
2064
|
+
pickPosition,
|
|
1393
2065
|
};
|
|
1394
2066
|
},
|
|
1395
2067
|
};
|