hl-core 0.0.9-beta.5 → 0.0.9-beta.50
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 +935 -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 +39 -8
- package/components/Input/DynamicInput.vue +23 -0
- package/components/Input/FileInput.vue +25 -5
- package/components/Input/FormInput.vue +2 -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 +13 -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 +42 -7
- package/components/Pages/ContragentForm.vue +124 -50
- package/components/Pages/Documents.vue +72 -7
- package/components/Pages/InvoiceInfo.vue +1 -1
- package/components/Pages/MemberForm.vue +369 -100
- package/components/Pages/ProductAgreement.vue +1 -8
- package/components/Pages/ProductConditions.vue +888 -181
- package/components/Panel/PanelHandler.vue +414 -45
- 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 +433 -8
- package/composables/constants.ts +102 -2
- package/composables/fields.ts +328 -0
- package/composables/index.ts +257 -12
- package/composables/styles.ts +29 -16
- package/layouts/default.vue +48 -3
- package/locales/ru.json +480 -14
- package/package.json +27 -24
- package/pages/Token.vue +1 -12
- package/plugins/vuetifyPlugin.ts +2 -0
- package/store/data.store.ts +1190 -248
- package/store/extractStore.ts +17 -0
- package/store/form.store.ts +13 -1
- package/store/member.store.ts +1 -1
- package/store/rules.ts +66 -5
- package/types/enum.ts +43 -0
- package/types/env.d.ts +1 -0
- package/types/form.ts +94 -0
- package/types/index.ts +254 -21
|
@@ -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,7 +17,7 @@
|
|
|
17
17
|
:disabled="!memberStore.canMemberDeleted(whichForm, index) && !memberStore.canMemberCleared(whichForm, index)"
|
|
18
18
|
variant="plain"
|
|
19
19
|
:color="Number(whichIndex) === index ? '#FFF' : '#A0B3D8'"
|
|
20
|
-
@click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ?
|
|
20
|
+
@click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? openDeletionDialog(index) : null"
|
|
21
21
|
/>
|
|
22
22
|
</div>
|
|
23
23
|
</div>
|
|
@@ -27,6 +27,23 @@
|
|
|
27
27
|
:title="$dataStore.t('form.personalData')"
|
|
28
28
|
:class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
|
|
29
29
|
>
|
|
30
|
+
<base-panel-input
|
|
31
|
+
v-if="$dataStore.isLifetrip"
|
|
32
|
+
v-model="member.signOfResidency"
|
|
33
|
+
:value="member.signOfResidency?.nameRu"
|
|
34
|
+
:label="$dataStore.t('form.signOfResidency')"
|
|
35
|
+
:readonly="isDisabled"
|
|
36
|
+
:clearable="!isDisabled"
|
|
37
|
+
:rules="residencyRule"
|
|
38
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
39
|
+
@append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
40
|
+
/>
|
|
41
|
+
<base-form-toggle
|
|
42
|
+
v-if="$dataStore.isLifetrip && whichForm === 'insuredForm'"
|
|
43
|
+
v-model="member.isInsuredUnderage"
|
|
44
|
+
:title="$dataStore.t('isInsuredUnderage')"
|
|
45
|
+
:has-border="false"
|
|
46
|
+
/>
|
|
30
47
|
<base-form-input
|
|
31
48
|
v-model="member.phoneNumber"
|
|
32
49
|
:label="$dataStore.t('form.phoneNumber')"
|
|
@@ -42,38 +59,57 @@
|
|
|
42
59
|
v-model="member.iin"
|
|
43
60
|
:label="$dataStore.t('form.iin')"
|
|
44
61
|
:maska="$maska.iin"
|
|
45
|
-
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
62
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled || !!member.parsedDocument?.iin"
|
|
46
63
|
:clearable="!isDisabled"
|
|
47
|
-
:append-inner-icon="
|
|
64
|
+
:append-inner-icon="hasMemberSearch ? (hasDocumentReader ? 'mdi mdi-credit-card-scan-outline' : 'mdi mdi-magnify') : ''"
|
|
48
65
|
@append="searchMember"
|
|
49
66
|
@input="onIinInput"
|
|
50
67
|
:rules="$rules.required.concat($rules.iinRight)"
|
|
51
68
|
/>
|
|
52
69
|
<base-form-input
|
|
53
70
|
v-model.trim="member.lastName"
|
|
54
|
-
:readonly="isDisabled || isFromGBD"
|
|
71
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.lastName"
|
|
55
72
|
:clearable="!isDisabled"
|
|
56
73
|
:label="$dataStore.t('form.lastName')"
|
|
57
74
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
58
75
|
/>
|
|
59
76
|
<base-form-input
|
|
60
77
|
v-model.trim="member.firstName"
|
|
61
|
-
:readonly="isDisabled || isFromGBD"
|
|
78
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.firstName"
|
|
62
79
|
:clearable="!isDisabled"
|
|
63
80
|
:label="$dataStore.t('form.firstName')"
|
|
64
81
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
65
82
|
/>
|
|
66
83
|
<base-form-input
|
|
84
|
+
v-if="hasMiddleName"
|
|
67
85
|
v-model.trim="member.middleName"
|
|
68
|
-
:readonly="isDisabled || isFromGBD"
|
|
86
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.middleName"
|
|
69
87
|
:clearable="!isDisabled"
|
|
70
88
|
:label="$dataStore.t('form.middleName')"
|
|
71
89
|
:rules="$rules.cyrillicNonRequired"
|
|
72
90
|
/>
|
|
73
91
|
<base-form-input
|
|
74
|
-
v-
|
|
92
|
+
v-if="$dataStore.isLifetrip"
|
|
93
|
+
v-model.trim="member.lastNameLat"
|
|
94
|
+
:readonly="isDisabled || isFromGBD"
|
|
95
|
+
:clearable="!isDisabled"
|
|
96
|
+
:label="$dataStore.t('form.lastNameLat')"
|
|
97
|
+
:rules="$rules.required.concat($rules.latin)"
|
|
98
|
+
:hint="$dataStore.t('labels.checkWithDoc')"
|
|
99
|
+
/>
|
|
100
|
+
<base-form-input
|
|
101
|
+
v-if="$dataStore.isLifetrip"
|
|
102
|
+
v-model.trim="member.firstNameLat"
|
|
75
103
|
:readonly="isDisabled || isFromGBD"
|
|
76
104
|
:clearable="!isDisabled"
|
|
105
|
+
:label="$dataStore.t('form.firstNameLat')"
|
|
106
|
+
:rules="$rules.required.concat($rules.latin)"
|
|
107
|
+
:hint="$dataStore.t('labels.checkWithDoc')"
|
|
108
|
+
/>
|
|
109
|
+
<base-form-input
|
|
110
|
+
v-model="member.birthDate"
|
|
111
|
+
:readonly="isDisabled || isFromGBD || !!member.parsedDocument?.birthDate"
|
|
112
|
+
:clearable="!isDisabled"
|
|
77
113
|
:label="$dataStore.t('form.birthDate')"
|
|
78
114
|
:rules="birthDateRule"
|
|
79
115
|
:maska="$maska.date"
|
|
@@ -82,9 +118,9 @@
|
|
|
82
118
|
<base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
|
|
83
119
|
<base-panel-input
|
|
84
120
|
v-model="member.gender"
|
|
85
|
-
:value="member.gender
|
|
121
|
+
:value="member.gender?.nameRu"
|
|
86
122
|
:readonly="isDisabled || isFromGBD"
|
|
87
|
-
:clearable="!isDisabled"
|
|
123
|
+
:clearable="!isDisabled && !isFromGBD"
|
|
88
124
|
:label="$dataStore.t('form.gender')"
|
|
89
125
|
:rules="$rules.objectRequired"
|
|
90
126
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -93,7 +129,7 @@
|
|
|
93
129
|
<base-panel-input
|
|
94
130
|
v-if="hasFamilyStatus"
|
|
95
131
|
v-model="member.familyStatus"
|
|
96
|
-
:value="member.familyStatus
|
|
132
|
+
:value="member.familyStatus?.nameRu"
|
|
97
133
|
:readonly="isDisabled"
|
|
98
134
|
:clearable="!isDisabled"
|
|
99
135
|
:label="$dataStore.t('form.familyStatus')"
|
|
@@ -102,9 +138,9 @@
|
|
|
102
138
|
@append="openPanel($dataStore.t('form.familyStatus'), [], 'familyStatus', $dataStore.getFamilyStatuses)"
|
|
103
139
|
/>
|
|
104
140
|
<base-panel-input
|
|
105
|
-
v-if="
|
|
141
|
+
v-if="hasRelationDegree"
|
|
106
142
|
v-model="member.relationDegree"
|
|
107
|
-
:value="member.relationDegree
|
|
143
|
+
:value="member.relationDegree?.nameRu"
|
|
108
144
|
:readonly="isDisabled"
|
|
109
145
|
:clearable="!isDisabled"
|
|
110
146
|
:label="$dataStore.t('form.relations')"
|
|
@@ -231,7 +267,7 @@
|
|
|
231
267
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
232
268
|
/>
|
|
233
269
|
</base-form-section>
|
|
234
|
-
<base-form-section
|
|
270
|
+
<base-form-section v-if="$dataStore.hasJobSection(whichForm)" :title="$dataStore.t('form.jobData')">
|
|
235
271
|
<base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
236
272
|
<base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
237
273
|
<base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
@@ -240,11 +276,11 @@
|
|
|
240
276
|
<base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
|
|
241
277
|
<base-panel-input
|
|
242
278
|
v-model="member.registrationCountry"
|
|
243
|
-
:value="member.registrationCountry
|
|
279
|
+
:value="member.registrationCountry?.nameRu"
|
|
244
280
|
:readonly="isDisabled"
|
|
245
281
|
:clearable="!isDisabled"
|
|
246
282
|
:label="$dataStore.t('form.Country')"
|
|
247
|
-
:rules="$rules.objectRequired"
|
|
283
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
248
284
|
append-inner-icon="mdi mdi-chevron-right"
|
|
249
285
|
@append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
|
|
250
286
|
/>
|
|
@@ -252,42 +288,42 @@
|
|
|
252
288
|
<div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
|
|
253
289
|
<base-panel-input
|
|
254
290
|
v-model="member.registrationProvince"
|
|
255
|
-
:value="member.registrationProvince
|
|
291
|
+
:value="member.registrationProvince?.nameRu"
|
|
256
292
|
:label="$dataStore.t('form.Province')"
|
|
257
293
|
:readonly="isDisabled"
|
|
258
294
|
:clearable="!isDisabled"
|
|
259
|
-
:rules="$rules.objectRequired"
|
|
295
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
260
296
|
append-inner-icon="mdi mdi-chevron-right"
|
|
261
297
|
@append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
|
|
262
298
|
/>
|
|
263
299
|
<base-panel-input
|
|
264
300
|
v-model="member.registrationRegionType"
|
|
265
|
-
:value="member.registrationRegionType
|
|
301
|
+
:value="member.registrationRegionType?.nameRu"
|
|
266
302
|
:label="$dataStore.t('form.RegionType')"
|
|
267
303
|
:readonly="isDisabled"
|
|
268
304
|
:clearable="!isDisabled"
|
|
269
|
-
:rules="$rules.objectRequired"
|
|
305
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
270
306
|
append-inner-icon="mdi mdi-chevron-right"
|
|
271
307
|
@append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
|
|
272
308
|
/>
|
|
273
309
|
<base-panel-input
|
|
274
310
|
v-if="member.registrationRegionType.nameRu !== 'город'"
|
|
275
311
|
v-model="member.registrationRegion"
|
|
276
|
-
:value="member.registrationRegion
|
|
312
|
+
:value="member.registrationRegion?.nameRu"
|
|
277
313
|
:label="$dataStore.t('form.Region')"
|
|
278
314
|
:readonly="isDisabled"
|
|
279
315
|
:clearable="!isDisabled"
|
|
280
|
-
:rules="$rules.objectRequired"
|
|
316
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
281
317
|
append-inner-icon="mdi mdi-chevron-right"
|
|
282
318
|
@append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
|
|
283
319
|
/>
|
|
284
320
|
<base-panel-input
|
|
285
321
|
v-model="member.registrationCity"
|
|
286
|
-
:value="member.registrationCity
|
|
322
|
+
:value="member.registrationCity?.nameRu"
|
|
287
323
|
:label="$dataStore.t('form.City')"
|
|
288
324
|
:readonly="isDisabled"
|
|
289
325
|
:clearable="!isDisabled"
|
|
290
|
-
:rules="$rules.objectRequired"
|
|
326
|
+
:rules="member.isInsuredUnderage ? [] : $rules.objectRequired"
|
|
291
327
|
append-inner-icon="mdi mdi-chevron-right"
|
|
292
328
|
@append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
293
329
|
/>
|
|
@@ -297,14 +333,14 @@
|
|
|
297
333
|
<base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.MicroDistrict')" />
|
|
298
334
|
<base-form-input
|
|
299
335
|
v-model.trim="member.registrationStreet"
|
|
300
|
-
:rules="$rules.required"
|
|
336
|
+
:rules="member.isInsuredUnderage ? [] : $rules.required"
|
|
301
337
|
:readonly="isDisabled"
|
|
302
338
|
:clearable="!isDisabled"
|
|
303
339
|
:label="$dataStore.t('form.Street')"
|
|
304
340
|
/>
|
|
305
341
|
<base-form-input
|
|
306
342
|
v-model.trim="member.registrationNumberHouse"
|
|
307
|
-
:rules="$rules.required"
|
|
343
|
+
:rules="member.isInsuredUnderage ? [] : $rules.required"
|
|
308
344
|
:readonly="isDisabled"
|
|
309
345
|
:clearable="!isDisabled"
|
|
310
346
|
:label="$dataStore.t('form.NumberHouse')"
|
|
@@ -316,7 +352,7 @@
|
|
|
316
352
|
<base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
|
|
317
353
|
<base-panel-input
|
|
318
354
|
v-model="member.birthPlace"
|
|
319
|
-
:value="member.birthPlace
|
|
355
|
+
:value="member.birthPlace?.nameRu"
|
|
320
356
|
:label="$dataStore.t('form.Country')"
|
|
321
357
|
:readonly="isDisabled"
|
|
322
358
|
:clearable="!isDisabled"
|
|
@@ -327,7 +363,7 @@
|
|
|
327
363
|
<!-- TODO -->
|
|
328
364
|
<!-- <base-panel-input
|
|
329
365
|
v-model="member.birthRegion"
|
|
330
|
-
:value="member.birthRegion
|
|
366
|
+
:value="member.birthRegion?.nameRu"
|
|
331
367
|
:label="$dataStore.t('form.Region')"
|
|
332
368
|
:readonly="isDisabled"
|
|
333
369
|
:clearable="!isDisabled"
|
|
@@ -339,7 +375,7 @@
|
|
|
339
375
|
<base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
|
|
340
376
|
<base-panel-input
|
|
341
377
|
v-model="member.documentType"
|
|
342
|
-
:value="member.documentType
|
|
378
|
+
:value="member.documentType?.nameRu"
|
|
343
379
|
:label="$dataStore.t('form.documentType')"
|
|
344
380
|
:readonly="isDisabled"
|
|
345
381
|
:clearable="!isDisabled"
|
|
@@ -350,7 +386,7 @@
|
|
|
350
386
|
<base-form-input
|
|
351
387
|
v-model.trim="member.documentNumber"
|
|
352
388
|
:label="$dataStore.t('form.documentNumber')"
|
|
353
|
-
:readonly="isDisabled"
|
|
389
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentNumber"
|
|
354
390
|
:clearable="!isDisabled"
|
|
355
391
|
:rules="$rules.required"
|
|
356
392
|
/>
|
|
@@ -361,9 +397,9 @@
|
|
|
361
397
|
</base-empty-form-field> -->
|
|
362
398
|
<base-panel-input
|
|
363
399
|
v-model="member.documentIssuers"
|
|
364
|
-
:value="member.documentIssuers
|
|
400
|
+
:value="member.documentIssuers?.nameRu"
|
|
365
401
|
:label="$dataStore.t('form.documentIssuers')"
|
|
366
|
-
:readonly="isDisabled"
|
|
402
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssuer"
|
|
367
403
|
:clearable="!isDisabled"
|
|
368
404
|
:rules="$rules.objectRequired"
|
|
369
405
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -372,7 +408,7 @@
|
|
|
372
408
|
<base-form-input
|
|
373
409
|
v-model="member.documentDate"
|
|
374
410
|
:label="$dataStore.t('form.documentDate')"
|
|
375
|
-
:readonly="isDisabled"
|
|
411
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssueDate"
|
|
376
412
|
:clearable="!isDisabled"
|
|
377
413
|
:rules="$rules.required.concat($rules.date)"
|
|
378
414
|
:maska="$maska.date"
|
|
@@ -383,7 +419,7 @@
|
|
|
383
419
|
v-if="member.documentType.ids !== 'SBI' && member.documentType.ids !== 'VNZ'"
|
|
384
420
|
v-model="member.documentExpire"
|
|
385
421
|
:label="$dataStore.t('form.documentExpire')"
|
|
386
|
-
:readonly="isDisabled"
|
|
422
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentExpireDate"
|
|
387
423
|
:clearable="!isDisabled"
|
|
388
424
|
:rules="$rules.required.concat($rules.date)"
|
|
389
425
|
:maska="$maska.date"
|
|
@@ -391,8 +427,9 @@
|
|
|
391
427
|
/>
|
|
392
428
|
</base-fade-transition>
|
|
393
429
|
<base-panel-input
|
|
430
|
+
v-if="!$dataStore.isLifetrip"
|
|
394
431
|
v-model="member.signOfResidency"
|
|
395
|
-
:value="member.signOfResidency
|
|
432
|
+
:value="member.signOfResidency?.nameRu"
|
|
396
433
|
:label="$dataStore.t('form.signOfResidency')"
|
|
397
434
|
:readonly="isDisabled"
|
|
398
435
|
:clearable="!isDisabled"
|
|
@@ -402,7 +439,7 @@
|
|
|
402
439
|
/>
|
|
403
440
|
<base-panel-input
|
|
404
441
|
v-model="member.countryOfTaxResidency"
|
|
405
|
-
:value="member.countryOfTaxResidency
|
|
442
|
+
:value="member.countryOfTaxResidency?.nameRu"
|
|
406
443
|
:label="$dataStore.t('form.countryOfTaxResidency')"
|
|
407
444
|
:readonly="isDisabled"
|
|
408
445
|
:clearable="!isDisabled"
|
|
@@ -414,7 +451,7 @@
|
|
|
414
451
|
<base-panel-input
|
|
415
452
|
v-if="member.countryOfTaxResidency.ids === '500014.3'"
|
|
416
453
|
v-model="member.addTaxResidency"
|
|
417
|
-
:value="member.addTaxResidency
|
|
454
|
+
:value="member.addTaxResidency?.nameRu"
|
|
418
455
|
:label="$dataStore.t('form.addTaxResidency')"
|
|
419
456
|
:readonly="isDisabled"
|
|
420
457
|
:clearable="!isDisabled"
|
|
@@ -426,7 +463,7 @@
|
|
|
426
463
|
<base-panel-input
|
|
427
464
|
v-if="hasSignOfIPDL"
|
|
428
465
|
v-model="member.signOfIPDL"
|
|
429
|
-
:value="member.signOfIPDL
|
|
466
|
+
:value="member.signOfIPDL?.nameRu"
|
|
430
467
|
:label="$dataStore.t('form.signOfIPDL')"
|
|
431
468
|
:readonly="isDisabled"
|
|
432
469
|
:clearable="!isDisabled"
|
|
@@ -436,7 +473,7 @@
|
|
|
436
473
|
/>
|
|
437
474
|
<base-panel-input
|
|
438
475
|
v-model="member.countryOfCitizenship"
|
|
439
|
-
:value="member.countryOfCitizenship
|
|
476
|
+
:value="member.countryOfCitizenship?.nameRu"
|
|
440
477
|
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
441
478
|
:readonly="isDisabled"
|
|
442
479
|
:clearable="!isDisabled"
|
|
@@ -446,7 +483,7 @@
|
|
|
446
483
|
/>
|
|
447
484
|
<base-panel-input
|
|
448
485
|
v-model="member.economySectorCode"
|
|
449
|
-
:value="member.economySectorCode
|
|
486
|
+
:value="member.economySectorCode?.nameRu"
|
|
450
487
|
:label="$dataStore.t('form.economySectorCode')"
|
|
451
488
|
:readonly="isDisabled"
|
|
452
489
|
:clearable="!isDisabled"
|
|
@@ -457,7 +494,7 @@
|
|
|
457
494
|
<base-panel-input
|
|
458
495
|
v-if="hasInsurancePay"
|
|
459
496
|
v-model="member.insurancePay"
|
|
460
|
-
:value="member.insurancePay
|
|
497
|
+
:value="member.insurancePay?.nameRu"
|
|
461
498
|
:readonly="isDisabled"
|
|
462
499
|
:clearable="!isDisabled"
|
|
463
500
|
:rules="$rules.objectRequired"
|
|
@@ -474,13 +511,13 @@
|
|
|
474
511
|
:label="$dataStore.t('form.homePhone')"
|
|
475
512
|
:readonly="isDisabled"
|
|
476
513
|
:clearable="!isDisabled"
|
|
477
|
-
:rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
|
|
514
|
+
:rules="whichForm === formStore.beneficiaryFormKey || member.isInsuredUnderage ? [] : $rules.phoneFormat"
|
|
478
515
|
/>
|
|
479
|
-
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
|
|
516
|
+
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.email" />
|
|
480
517
|
</base-form-section>
|
|
481
518
|
</v-form>
|
|
482
519
|
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
|
|
483
|
-
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
520
|
+
<Teleport v-if="isPanelOpen" to="#right-panel-actions">
|
|
484
521
|
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
485
522
|
<base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
486
523
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
@@ -496,20 +533,34 @@
|
|
|
496
533
|
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
497
534
|
</div>
|
|
498
535
|
</Teleport>
|
|
499
|
-
<Teleport v-if="isSearchOpen" to="#panel-actions">
|
|
536
|
+
<Teleport v-if="isSearchOpen" to="#right-panel-actions">
|
|
500
537
|
<div :class="[$styles.flexColNav]">
|
|
501
538
|
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
|
|
502
539
|
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
|
|
503
540
|
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
|
|
541
|
+
<base-form-section v-if="hasDocumentReader" class="!mt-0">
|
|
542
|
+
<base-file-input
|
|
543
|
+
:disabled="isDisabled"
|
|
544
|
+
:clearable="!isDisabled"
|
|
545
|
+
accept="image/*,.pdf"
|
|
546
|
+
append="mdi-credit-card-scan-outline"
|
|
547
|
+
:multiple="true"
|
|
548
|
+
@onClear="imageDataList = []"
|
|
549
|
+
@input="attachDocumentReader($event)"
|
|
550
|
+
/>
|
|
551
|
+
</base-form-section>
|
|
552
|
+
<base-animation>
|
|
553
|
+
<base-btn v-if="hasDocumentReader && imageDataList && !!imageDataList.length" :loading="isButtonLoading" text="Получить данные" @click="getDocumentReader" />
|
|
554
|
+
</base-animation>
|
|
504
555
|
</div>
|
|
505
556
|
</Teleport>
|
|
506
|
-
<Teleport v-if="isDocumentOpen" to="#panel-actions">
|
|
557
|
+
<Teleport v-if="isDocumentOpen" to="#right-panel-actions">
|
|
507
558
|
<div :class="[$styles.flexColNav]">
|
|
508
559
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
|
|
509
560
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
|
|
510
561
|
</div>
|
|
511
562
|
</Teleport>
|
|
512
|
-
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
|
|
563
|
+
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#right-panel-actions">
|
|
513
564
|
<div :class="[$styles.flexColNav]">
|
|
514
565
|
<base-fade-transition>
|
|
515
566
|
<base-rounded-input
|
|
@@ -527,7 +578,16 @@
|
|
|
527
578
|
<base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
|
|
528
579
|
</div>
|
|
529
580
|
</Teleport>
|
|
530
|
-
<base-dialog
|
|
581
|
+
<base-dialog
|
|
582
|
+
v-model="deletionDialog"
|
|
583
|
+
:title="$dataStore.t('dialog.confirmDelete')"
|
|
584
|
+
:subtitle="$dataStore.t('dialog.delete')"
|
|
585
|
+
:confirm="$dataStore.t('confirm.delete')"
|
|
586
|
+
:icon="{ mdi: 'delete-outline', color: '#FD2D39' }"
|
|
587
|
+
@yes="deleteMember"
|
|
588
|
+
@no="deletionDialog = false"
|
|
589
|
+
/>
|
|
590
|
+
<base-dialog v-model="familyDialog" :subtitle="$dataStore.t('dialog.familyMember')" :icon="{ mdi: 'hand-pointing-up' }" actions="familyDialog">
|
|
531
591
|
<template #actions>
|
|
532
592
|
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
|
|
533
593
|
</template>
|
|
@@ -566,12 +626,15 @@ export default {
|
|
|
566
626
|
const isPanelLoading = ref<boolean>(false);
|
|
567
627
|
const isChangingMember = ref<boolean>(false);
|
|
568
628
|
const familyDialog = ref<boolean>(false);
|
|
629
|
+
const deletionDialog = ref<boolean>(false);
|
|
630
|
+
const selectedIndex = ref<number>(0);
|
|
569
631
|
const sameAddress = ref<boolean>(false);
|
|
570
632
|
const panelValue = ref<Value>(new Value());
|
|
571
633
|
const panelList = ref<Value[]>([]);
|
|
572
634
|
const currentPanel = ref<keyof typeof member.value>();
|
|
573
635
|
const searchQuery = ref<string>('');
|
|
574
636
|
const fileData = ref<{ file: any }>();
|
|
637
|
+
const imageDataList = ref<string[]>([]);
|
|
575
638
|
|
|
576
639
|
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
577
640
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
@@ -581,7 +644,7 @@ export default {
|
|
|
581
644
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
582
645
|
const showSaveButton = computed(() => {
|
|
583
646
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
584
|
-
const
|
|
647
|
+
const perMemberCondition = () => {
|
|
585
648
|
switch (whichForm.value) {
|
|
586
649
|
case formStore.policyholderFormKey:
|
|
587
650
|
return true;
|
|
@@ -594,7 +657,7 @@ export default {
|
|
|
594
657
|
return false;
|
|
595
658
|
}
|
|
596
659
|
};
|
|
597
|
-
return generalCondition &&
|
|
660
|
+
return generalCondition && perMemberCondition();
|
|
598
661
|
});
|
|
599
662
|
|
|
600
663
|
const hasGBDFL = computed(() => {
|
|
@@ -607,9 +670,17 @@ export default {
|
|
|
607
670
|
if (dataStore.isBolashak || dataStore.isGons) {
|
|
608
671
|
return false;
|
|
609
672
|
}
|
|
673
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
674
|
+
return false;
|
|
675
|
+
}
|
|
676
|
+
return true;
|
|
677
|
+
}
|
|
678
|
+
case formStore.insuredFormKey: {
|
|
679
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
680
|
+
return false;
|
|
681
|
+
}
|
|
610
682
|
return true;
|
|
611
683
|
}
|
|
612
|
-
case formStore.insuredFormKey:
|
|
613
684
|
case formStore.beneficialOwnerFormKey:
|
|
614
685
|
case formStore.policyholdersRepresentativeFormKey:
|
|
615
686
|
return true;
|
|
@@ -617,7 +688,7 @@ export default {
|
|
|
617
688
|
return true;
|
|
618
689
|
}
|
|
619
690
|
};
|
|
620
|
-
return dataStore.controls.hasGBDFL && perMemberCondition();
|
|
691
|
+
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGBDFL && perMemberCondition();
|
|
621
692
|
});
|
|
622
693
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
623
694
|
const hasGKB = computed(() => {
|
|
@@ -640,8 +711,29 @@ export default {
|
|
|
640
711
|
};
|
|
641
712
|
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
642
713
|
});
|
|
643
|
-
|
|
714
|
+
const hasDocumentReader = computed(() => {
|
|
715
|
+
return !!member.value.hasAgreement && !!isTask.value && (dataStore.isAULETTI || dataStore.isAulettiParent);
|
|
716
|
+
});
|
|
717
|
+
const hasMemberSearch = computed(() => showSaveButton.value && (hasGBDFL.value || hasGKB.value || hasInsis.value || hasDocumentReader.value));
|
|
718
|
+
const hasMiddleName = computed(() => {
|
|
719
|
+
if (dataStore.isLifetrip) {
|
|
720
|
+
return false;
|
|
721
|
+
}
|
|
722
|
+
return true;
|
|
723
|
+
});
|
|
724
|
+
const hasRelationDegree = computed(() => {
|
|
725
|
+
if (dataStore.isLifetrip) {
|
|
726
|
+
return false;
|
|
727
|
+
}
|
|
728
|
+
if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
|
|
729
|
+
return true;
|
|
730
|
+
}
|
|
731
|
+
return false;
|
|
732
|
+
});
|
|
644
733
|
const hasFamilyStatus = computed(() => {
|
|
734
|
+
if (dataStore.isLifetrip) {
|
|
735
|
+
return false;
|
|
736
|
+
}
|
|
645
737
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
646
738
|
if (dataStore.isBolashak) {
|
|
647
739
|
return false;
|
|
@@ -658,7 +750,7 @@ export default {
|
|
|
658
750
|
return false;
|
|
659
751
|
});
|
|
660
752
|
const hasSignOfIPDL = computed(() => {
|
|
661
|
-
if (dataStore.isGons) {
|
|
753
|
+
if (dataStore.isGons || dataStore.isLifetrip) {
|
|
662
754
|
return false;
|
|
663
755
|
}
|
|
664
756
|
return true;
|
|
@@ -667,7 +759,7 @@ export default {
|
|
|
667
759
|
|
|
668
760
|
const birthDateRule = computed(() => {
|
|
669
761
|
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
670
|
-
const
|
|
762
|
+
const byMemberAndProductRule = () => {
|
|
671
763
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
672
764
|
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
673
765
|
return dataStore.rules.age18ByDate;
|
|
@@ -677,10 +769,13 @@ export default {
|
|
|
677
769
|
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
678
770
|
return dataStore.rules.age18ByDate;
|
|
679
771
|
}
|
|
772
|
+
if (dataStore.isLifetrip) {
|
|
773
|
+
return dataStore.rules.ageExceeds80ByDate;
|
|
774
|
+
}
|
|
680
775
|
}
|
|
681
776
|
return [];
|
|
682
777
|
};
|
|
683
|
-
return baseDateRule.concat(
|
|
778
|
+
return baseDateRule.concat(byMemberAndProductRule());
|
|
684
779
|
});
|
|
685
780
|
const ageRule = computed(() => {
|
|
686
781
|
const baseAgeRule = dataStore.rules.numbers;
|
|
@@ -711,10 +806,13 @@ export default {
|
|
|
711
806
|
if (dataStore.isGons || dataStore.isBolashak) {
|
|
712
807
|
return [];
|
|
713
808
|
}
|
|
714
|
-
if (
|
|
809
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
715
810
|
return [];
|
|
716
811
|
}
|
|
717
812
|
}
|
|
813
|
+
if (member.value.isInsuredUnderage) {
|
|
814
|
+
return [];
|
|
815
|
+
}
|
|
718
816
|
return basePhoneRule;
|
|
719
817
|
});
|
|
720
818
|
|
|
@@ -725,6 +823,9 @@ export default {
|
|
|
725
823
|
return baseResidencyRule.concat(dataStore.rules.noResident);
|
|
726
824
|
}
|
|
727
825
|
}
|
|
826
|
+
if (dataStore.isLifetrip) {
|
|
827
|
+
return baseResidencyRule.concat(dataStore.rules.noResidentOffline);
|
|
828
|
+
}
|
|
728
829
|
return baseResidencyRule;
|
|
729
830
|
});
|
|
730
831
|
|
|
@@ -742,6 +843,8 @@ export default {
|
|
|
742
843
|
const otpCondition = computed(() => {
|
|
743
844
|
// Add conditions by product
|
|
744
845
|
if (member.value.hasAgreement) return false;
|
|
846
|
+
if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
|
|
847
|
+
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
|
|
745
848
|
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
|
|
746
849
|
return getOtpConditionByMember();
|
|
747
850
|
});
|
|
@@ -749,8 +852,8 @@ export default {
|
|
|
749
852
|
const searchMember = async () => {
|
|
750
853
|
if (!isDisabled.value) {
|
|
751
854
|
dataStore.panelAction = null;
|
|
752
|
-
dataStore.
|
|
753
|
-
dataStore.
|
|
855
|
+
dataStore.rightPanel.title = hasDocumentReader.value ? 'Получение данных со скана документа' : 'Поиск контрагента';
|
|
856
|
+
dataStore.rightPanel.open = true;
|
|
754
857
|
isSearchOpen.value = true;
|
|
755
858
|
isDocumentOpen.value = false;
|
|
756
859
|
isOtpPanelOpen.value = false;
|
|
@@ -767,20 +870,20 @@ export default {
|
|
|
767
870
|
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
768
871
|
dataStore.panelAction = null;
|
|
769
872
|
if (type === 'document' && memberDocument.value) {
|
|
770
|
-
dataStore.
|
|
873
|
+
dataStore.rightPanel.title = memberDocument.value.fileTypeName!;
|
|
771
874
|
isDocumentOpen.value = true;
|
|
772
875
|
isSearchOpen.value = false;
|
|
773
876
|
isPanelOpen.value = false;
|
|
774
877
|
isOtpPanelOpen.value = false;
|
|
775
878
|
}
|
|
776
879
|
if (type === 'otp') {
|
|
777
|
-
dataStore.
|
|
880
|
+
dataStore.rightPanel.title = dataStore.t('form.otpCode');
|
|
778
881
|
isOtpPanelOpen.value = true;
|
|
779
882
|
isDocumentOpen.value = false;
|
|
780
883
|
isSearchOpen.value = false;
|
|
781
884
|
isPanelOpen.value = false;
|
|
782
885
|
}
|
|
783
|
-
dataStore.
|
|
886
|
+
dataStore.rightPanel.open = true;
|
|
784
887
|
};
|
|
785
888
|
|
|
786
889
|
const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
|
|
@@ -798,8 +901,8 @@ export default {
|
|
|
798
901
|
currentPanel.value = key as keyof typeof member.value;
|
|
799
902
|
isPanelOpen.value = true;
|
|
800
903
|
dataStore.panelAction = null;
|
|
801
|
-
dataStore.
|
|
802
|
-
dataStore.
|
|
904
|
+
dataStore.rightPanel.open = true;
|
|
905
|
+
dataStore.rightPanel.title = title;
|
|
803
906
|
|
|
804
907
|
let newList = list;
|
|
805
908
|
if (asyncFunction) {
|
|
@@ -832,7 +935,7 @@ export default {
|
|
|
832
935
|
|
|
833
936
|
const pickPanelValue = (item: Value) => {
|
|
834
937
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
835
|
-
dataStore.
|
|
938
|
+
dataStore.rightPanel.open = false;
|
|
836
939
|
isPanelOpen.value = false;
|
|
837
940
|
// @ts-ignore
|
|
838
941
|
member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
|
|
@@ -874,6 +977,95 @@ export default {
|
|
|
874
977
|
}
|
|
875
978
|
};
|
|
876
979
|
|
|
980
|
+
const attachDocumentReader = async (event: InputEvent) => {
|
|
981
|
+
if (event.target) {
|
|
982
|
+
const target = event.target as HTMLInputElement;
|
|
983
|
+
if (target.files && !!target.files.length) {
|
|
984
|
+
imageDataList.value = [];
|
|
985
|
+
await Promise.allSettled(
|
|
986
|
+
Object.values(target.files).map(async f => {
|
|
987
|
+
const { execute: getBase64 } = useBase64(f);
|
|
988
|
+
imageDataList.value.push(await getBase64());
|
|
989
|
+
}),
|
|
990
|
+
);
|
|
991
|
+
}
|
|
992
|
+
} else {
|
|
993
|
+
if (event.dataTransfer) {
|
|
994
|
+
const dataTransfer = event.dataTransfer as DataTransfer;
|
|
995
|
+
if (!!dataTransfer.files && !!dataTransfer.files.length) {
|
|
996
|
+
imageDataList.value = [];
|
|
997
|
+
await Promise.allSettled(
|
|
998
|
+
Object.values(dataTransfer.files).map(async f => {
|
|
999
|
+
const { execute: getBase64 } = useBase64(f);
|
|
1000
|
+
imageDataList.value.push(await getBase64());
|
|
1001
|
+
}),
|
|
1002
|
+
);
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
};
|
|
1007
|
+
|
|
1008
|
+
const getDocumentReader = async () => {
|
|
1009
|
+
if (imageDataList.value && !!imageDataList.value.length) {
|
|
1010
|
+
isButtonLoading.value = true;
|
|
1011
|
+
const parsedDocument = await callDocumentReader(imageDataList.value);
|
|
1012
|
+
if (typeof parsedDocument === 'object') {
|
|
1013
|
+
if (
|
|
1014
|
+
member.value.iin &&
|
|
1015
|
+
parsedDocument.iin &&
|
|
1016
|
+
reformatIin(parsedDocument.iin) &&
|
|
1017
|
+
member.value.iin.length === useMask().iin.length &&
|
|
1018
|
+
reformatIin(parsedDocument.iin).length === useMask().iin.length &&
|
|
1019
|
+
member.value.iin !== reformatIin(parsedDocument.iin)
|
|
1020
|
+
) {
|
|
1021
|
+
dataStore.showToaster('error', 'Не совпадают ИИН');
|
|
1022
|
+
isButtonLoading.value = false;
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
formatDateProperty(parsedDocument, 'front');
|
|
1026
|
+
member.value.parsedDocument = parsedDocument;
|
|
1027
|
+
if (parsedDocument.age) member.value.age = parsedDocument.age;
|
|
1028
|
+
if (parsedDocument.iin) member.value.iin = reformatIin(parsedDocument.iin);
|
|
1029
|
+
if (parsedDocument.gender) {
|
|
1030
|
+
if (parsedDocument.gender === 'M' || parsedDocument.gender === 'F') {
|
|
1031
|
+
const gender = dataStore.gender.find((i: Value) => i.id === (parsedDocument.gender === 'M' ? 1 : 2));
|
|
1032
|
+
if (gender) member.value.gender = gender;
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
if (parsedDocument.birthDate) member.value.birthDate = parsedDocument.birthDate;
|
|
1036
|
+
if (parsedDocument.documentIssueDate) member.value.documentDate = parsedDocument.documentIssueDate;
|
|
1037
|
+
if (parsedDocument.documentExpireDate) member.value.documentExpire = parsedDocument.documentExpireDate;
|
|
1038
|
+
if (parsedDocument.documentNumber) member.value.documentNumber = parsedDocument.documentNumber;
|
|
1039
|
+
if (parsedDocument.lastName) member.value.lastName = parsedDocument.lastName;
|
|
1040
|
+
if (parsedDocument.firstName) member.value.firstName = parsedDocument.firstName;
|
|
1041
|
+
if (parsedDocument.middleName) member.value.middleName = parsedDocument.middleName;
|
|
1042
|
+
if (parsedDocument.fullName) member.value.longName = parsedDocument.fullName;
|
|
1043
|
+
if (parsedDocument.documentName && parsedDocument.documentName.startsWith('Kazakhstan - Id Card')) {
|
|
1044
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === '1UDL');
|
|
1045
|
+
if (documentType) member.value.documentType = documentType;
|
|
1046
|
+
}
|
|
1047
|
+
if (!!parsedDocument.documentIssuer) {
|
|
1048
|
+
if (
|
|
1049
|
+
parsedDocument.documentIssuer === 'МИНИСТЕРСТВО ВНУТРЕННИХ ДЕЛ РК' ||
|
|
1050
|
+
parsedDocument.documentIssuer === 'ҚР ІШКІ ІСТЕР МИНИСТРЛІГІ' ||
|
|
1051
|
+
/ҚАЗАҚСТАН/gi.test(parsedDocument.documentIssuer) ||
|
|
1052
|
+
/КАЗАХСТАН/gi.test(parsedDocument.documentIssuer)
|
|
1053
|
+
) {
|
|
1054
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp('МВД РК', 'i')));
|
|
1055
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1056
|
+
} else {
|
|
1057
|
+
const documentIssuer = dataStore.documentIssuers.find(i => (i.nameRu as string).match(new RegExp(`${parsedDocument.documentIssuer}`, 'i')));
|
|
1058
|
+
if (documentIssuer) member.value.documentIssuers = documentIssuer;
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
dataStore.rightPanel.open = false;
|
|
1062
|
+
dataStore.showToaster('success', dataStore.t('toaster.successOperation'));
|
|
1063
|
+
imageDataList.value = [];
|
|
1064
|
+
}
|
|
1065
|
+
isButtonLoading.value = false;
|
|
1066
|
+
}
|
|
1067
|
+
};
|
|
1068
|
+
|
|
877
1069
|
const getFile = async (type: FileActions) => {
|
|
878
1070
|
if (memberDocument.value) {
|
|
879
1071
|
documentLoading.value = true;
|
|
@@ -904,7 +1096,7 @@ export default {
|
|
|
904
1096
|
familyDialog.value = false;
|
|
905
1097
|
selectedFamilyMember.value = {};
|
|
906
1098
|
isButtonLoading.value = false;
|
|
907
|
-
dataStore.
|
|
1099
|
+
dataStore.rightPanel.open = false;
|
|
908
1100
|
isSearchOpen.value = false;
|
|
909
1101
|
};
|
|
910
1102
|
|
|
@@ -921,20 +1113,20 @@ export default {
|
|
|
921
1113
|
}
|
|
922
1114
|
familyDialog.value = false;
|
|
923
1115
|
isButtonLoading.value = false;
|
|
924
|
-
dataStore.
|
|
1116
|
+
dataStore.rightPanel.open = false;
|
|
925
1117
|
isSearchOpen.value = false;
|
|
926
1118
|
};
|
|
927
1119
|
|
|
928
1120
|
const getContragentFromGBDFL = async () => {
|
|
929
1121
|
if (member.value.hasAgreement !== true) {
|
|
930
1122
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
931
|
-
dataStore.
|
|
1123
|
+
dataStore.rightPanel.open = false;
|
|
932
1124
|
isSearchOpen.value = false;
|
|
933
1125
|
return;
|
|
934
1126
|
}
|
|
935
1127
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
936
1128
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
937
|
-
dataStore.
|
|
1129
|
+
dataStore.rightPanel.open = false;
|
|
938
1130
|
isSearchOpen.value = false;
|
|
939
1131
|
return;
|
|
940
1132
|
}
|
|
@@ -944,7 +1136,7 @@ export default {
|
|
|
944
1136
|
if (response === true) {
|
|
945
1137
|
member.value.gotFromInsis = true;
|
|
946
1138
|
}
|
|
947
|
-
dataStore.
|
|
1139
|
+
dataStore.rightPanel.open = false;
|
|
948
1140
|
isSearchOpen.value = false;
|
|
949
1141
|
}
|
|
950
1142
|
isButtonLoading.value = false;
|
|
@@ -953,20 +1145,20 @@ export default {
|
|
|
953
1145
|
const getContragent = async () => {
|
|
954
1146
|
if (member.value.hasAgreement !== true) {
|
|
955
1147
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
956
|
-
dataStore.
|
|
1148
|
+
dataStore.rightPanel.open = false;
|
|
957
1149
|
isSearchOpen.value = false;
|
|
958
1150
|
return;
|
|
959
1151
|
}
|
|
960
1152
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
961
1153
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
962
|
-
dataStore.
|
|
1154
|
+
dataStore.rightPanel.open = false;
|
|
963
1155
|
isSearchOpen.value = false;
|
|
964
1156
|
return;
|
|
965
1157
|
}
|
|
966
1158
|
isButtonLoading.value = true;
|
|
967
1159
|
await dataStore.getContragent(member.value, false);
|
|
968
1160
|
isButtonLoading.value = false;
|
|
969
|
-
dataStore.
|
|
1161
|
+
dataStore.rightPanel.open = false;
|
|
970
1162
|
isSearchOpen.value = false;
|
|
971
1163
|
};
|
|
972
1164
|
|
|
@@ -1036,14 +1228,17 @@ export default {
|
|
|
1036
1228
|
if (!isSaved) return false;
|
|
1037
1229
|
if (whichForm.value === formStore.policyholderFormKey) {
|
|
1038
1230
|
if (isInsured === true || remoteIsInsured.value === true) {
|
|
1039
|
-
formStore.insuredForm
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1231
|
+
const insuredFormIndex = remoteIsInsured.value === true ? 0 : isInsured === true ? formStore.insuredForm.findIndex(i => i.iin === formStore.policyholderForm.iin) : -1;
|
|
1232
|
+
if (insuredFormIndex !== -1) {
|
|
1233
|
+
formStore.insuredForm[insuredFormIndex] = formStore.policyholderForm;
|
|
1234
|
+
const isInsuredSaved = await dataStore.saveMember(
|
|
1235
|
+
member.value,
|
|
1236
|
+
memberStore.getMemberCode(formStore.insuredFormKey)!,
|
|
1237
|
+
memberStore.getMemberFromApplication(formStore.insuredFormKey, insuredFormIndex),
|
|
1238
|
+
);
|
|
1239
|
+
if (!isInsuredSaved) return false;
|
|
1240
|
+
wasInsuredAction.value = true;
|
|
1241
|
+
}
|
|
1047
1242
|
}
|
|
1048
1243
|
}
|
|
1049
1244
|
if (whichForm.value === formStore.insuredFormKey) {
|
|
@@ -1056,8 +1251,8 @@ export default {
|
|
|
1056
1251
|
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
1057
1252
|
if (dataStore.controls.hasCalculator) {
|
|
1058
1253
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
1059
|
-
formStore.additionalInsuranceTerms.forEach(
|
|
1060
|
-
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(
|
|
1254
|
+
formStore.additionalInsuranceTerms.forEach(term => {
|
|
1255
|
+
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
|
|
1061
1256
|
if (defaultTerm) {
|
|
1062
1257
|
term.coverSumName = defaultTerm.coverSumName;
|
|
1063
1258
|
term.coverSumId = defaultTerm.coverSumId;
|
|
@@ -1071,14 +1266,13 @@ export default {
|
|
|
1071
1266
|
};
|
|
1072
1267
|
|
|
1073
1268
|
const validateAgreement = () => {
|
|
1074
|
-
if (
|
|
1075
|
-
if (
|
|
1076
|
-
// TODO уточнить
|
|
1269
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1270
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
1077
1271
|
return true;
|
|
1078
1272
|
}
|
|
1079
1273
|
}
|
|
1080
|
-
if (
|
|
1081
|
-
if (
|
|
1274
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
1275
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
1082
1276
|
return true;
|
|
1083
1277
|
}
|
|
1084
1278
|
}
|
|
@@ -1096,10 +1290,16 @@ export default {
|
|
|
1096
1290
|
if (v.valid) {
|
|
1097
1291
|
isSubmittingForm.value = true;
|
|
1098
1292
|
const docType = member.value.documentType.ids;
|
|
1099
|
-
if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI')) {
|
|
1293
|
+
if (member.value.gotFromInsis === true && (docType === '1UDL' || docType === 'SBI' || docType === 'PS')) {
|
|
1100
1294
|
dataStore.isLoading = true;
|
|
1101
|
-
const
|
|
1295
|
+
const docTypeCodes = {
|
|
1296
|
+
'1UDL': 1,
|
|
1297
|
+
PS: 2,
|
|
1298
|
+
SBI: 3,
|
|
1299
|
+
};
|
|
1300
|
+
const ESBDResponse = await validateESBD(docTypeCodes[docType]);
|
|
1102
1301
|
if (!ESBDResponse) {
|
|
1302
|
+
isSubmittingForm.value = false;
|
|
1103
1303
|
dataStore.isLoading = false;
|
|
1104
1304
|
return;
|
|
1105
1305
|
}
|
|
@@ -1153,7 +1353,7 @@ export default {
|
|
|
1153
1353
|
}
|
|
1154
1354
|
otpSending.value = false;
|
|
1155
1355
|
if (checked === true) {
|
|
1156
|
-
dataStore.
|
|
1356
|
+
dataStore.rightPanel.open = false;
|
|
1157
1357
|
}
|
|
1158
1358
|
};
|
|
1159
1359
|
|
|
@@ -1163,7 +1363,7 @@ export default {
|
|
|
1163
1363
|
if (response) {
|
|
1164
1364
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1165
1365
|
if (response.otpStatus === true) {
|
|
1166
|
-
dataStore.
|
|
1366
|
+
dataStore.rightPanel.open = false;
|
|
1167
1367
|
}
|
|
1168
1368
|
}
|
|
1169
1369
|
otpSending.value = false;
|
|
@@ -1177,6 +1377,15 @@ export default {
|
|
|
1177
1377
|
if (setDefaults.percentage) {
|
|
1178
1378
|
setPercentage();
|
|
1179
1379
|
}
|
|
1380
|
+
if (setDefaults.signOfResidency) {
|
|
1381
|
+
setSignOfResidency();
|
|
1382
|
+
}
|
|
1383
|
+
if (setDefaults.countryOfTaxResidency) {
|
|
1384
|
+
setCountryOfTaxResidency();
|
|
1385
|
+
}
|
|
1386
|
+
if (setDefaults.countryOfCitizenship) {
|
|
1387
|
+
setCountryOfCitizenship();
|
|
1388
|
+
}
|
|
1180
1389
|
};
|
|
1181
1390
|
|
|
1182
1391
|
const setSectorCode = async () => {
|
|
@@ -1186,7 +1395,27 @@ export default {
|
|
|
1186
1395
|
member.value.economySectorCode = defaultValue ? defaultValue : new Value();
|
|
1187
1396
|
}
|
|
1188
1397
|
};
|
|
1189
|
-
|
|
1398
|
+
const setSignOfResidency = async () => {
|
|
1399
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1400
|
+
const residents = await dataStore.getResidents();
|
|
1401
|
+
const defaultValue = residents.find(item => String(item.nameRu).match(new RegExp('Резидент', 'i'))) as Value;
|
|
1402
|
+
member.value.signOfResidency = defaultValue ? defaultValue : new Value();
|
|
1403
|
+
}
|
|
1404
|
+
};
|
|
1405
|
+
const setCountryOfTaxResidency = async () => {
|
|
1406
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1407
|
+
const taxCountries = await dataStore.getTaxCountries();
|
|
1408
|
+
const defaultValue = taxCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1409
|
+
member.value.countryOfTaxResidency = defaultValue ? defaultValue : new Value();
|
|
1410
|
+
}
|
|
1411
|
+
};
|
|
1412
|
+
const setCountryOfCitizenship = async () => {
|
|
1413
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1414
|
+
const citizenshipCountries = await dataStore.getCitizenshipCountries();
|
|
1415
|
+
const defaultValue = citizenshipCountries.find(item => String(item.nameRu).match(new RegExp('Казахстан', 'i'))) as Value;
|
|
1416
|
+
member.value.countryOfCitizenship = defaultValue ? defaultValue : new Value();
|
|
1417
|
+
}
|
|
1418
|
+
};
|
|
1190
1419
|
const setPercentage = () => {
|
|
1191
1420
|
if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
|
|
1192
1421
|
if (dataStore.members.beneficiaryApp.isMultiple) {
|
|
@@ -1203,7 +1432,7 @@ export default {
|
|
|
1203
1432
|
};
|
|
1204
1433
|
|
|
1205
1434
|
const selectMember = async (index: number, update?: boolean) => {
|
|
1206
|
-
dataStore.
|
|
1435
|
+
dataStore.rightPanel.open = false;
|
|
1207
1436
|
isButtonLoading.value = true;
|
|
1208
1437
|
isChangingMember.value = true;
|
|
1209
1438
|
//@ts-ignore
|
|
@@ -1212,13 +1441,19 @@ export default {
|
|
|
1212
1441
|
isButtonLoading.value = false;
|
|
1213
1442
|
};
|
|
1214
1443
|
|
|
1215
|
-
const
|
|
1216
|
-
|
|
1444
|
+
const openDeletionDialog = (index: number) => {
|
|
1445
|
+
deletionDialog.value = true;
|
|
1446
|
+
selectedIndex.value = index;
|
|
1447
|
+
};
|
|
1448
|
+
|
|
1449
|
+
const deleteMember = async () => {
|
|
1450
|
+
await memberStore.deleteMember(route.params.taskId as string, whichForm.value, selectedIndex.value);
|
|
1217
1451
|
const currentIndex = Number(whichIndex.value);
|
|
1218
|
-
if (
|
|
1452
|
+
if (selectedIndex.value <= currentIndex) {
|
|
1219
1453
|
const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
|
|
1220
|
-
await selectMember(newIndex.value,
|
|
1454
|
+
await selectMember(newIndex.value, selectedIndex.value === currentIndex ? true : undefined);
|
|
1221
1455
|
}
|
|
1456
|
+
deletionDialog.value = false;
|
|
1222
1457
|
};
|
|
1223
1458
|
|
|
1224
1459
|
const onInit = async () => {
|
|
@@ -1302,9 +1537,9 @@ export default {
|
|
|
1302
1537
|
};
|
|
1303
1538
|
|
|
1304
1539
|
watch(
|
|
1305
|
-
() => dataStore.
|
|
1540
|
+
() => dataStore.rightPanel.open,
|
|
1306
1541
|
() => {
|
|
1307
|
-
if (dataStore.
|
|
1542
|
+
if (dataStore.rightPanel.open === false) {
|
|
1308
1543
|
isPanelOpen.value = false;
|
|
1309
1544
|
isDocumentOpen.value = false;
|
|
1310
1545
|
isSearchOpen.value = false;
|
|
@@ -1320,6 +1555,30 @@ export default {
|
|
|
1320
1555
|
searchQuery.value = '';
|
|
1321
1556
|
}
|
|
1322
1557
|
});
|
|
1558
|
+
if (dataStore.isLifetrip) {
|
|
1559
|
+
watch(
|
|
1560
|
+
() => member.value.age,
|
|
1561
|
+
val => {
|
|
1562
|
+
if (val && Number(val) >= 18) {
|
|
1563
|
+
if (member.value.hasAgreement !== true) {
|
|
1564
|
+
member.value.hasAgreement = false;
|
|
1565
|
+
}
|
|
1566
|
+
} else {
|
|
1567
|
+
member.value.hasAgreement = true;
|
|
1568
|
+
}
|
|
1569
|
+
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1570
|
+
},
|
|
1571
|
+
);
|
|
1572
|
+
watch(
|
|
1573
|
+
() => member.value.isInsuredUnderage,
|
|
1574
|
+
val => {
|
|
1575
|
+
if (val === true && Number(member.value.age) >= 18) {
|
|
1576
|
+
member.value.isInsuredUnderage = false;
|
|
1577
|
+
return dataStore.showToaster('error', dataStore.t('toaster.underageShouldBeLess18'), 3000);
|
|
1578
|
+
}
|
|
1579
|
+
},
|
|
1580
|
+
);
|
|
1581
|
+
}
|
|
1323
1582
|
|
|
1324
1583
|
return {
|
|
1325
1584
|
// State
|
|
@@ -1342,8 +1601,11 @@ export default {
|
|
|
1342
1601
|
Value,
|
|
1343
1602
|
memberDocument,
|
|
1344
1603
|
familyDialog,
|
|
1604
|
+
deletionDialog,
|
|
1605
|
+
selectedIndex,
|
|
1345
1606
|
selectedFamilyMember,
|
|
1346
1607
|
sameAddress,
|
|
1608
|
+
imageDataList,
|
|
1347
1609
|
|
|
1348
1610
|
// Computed
|
|
1349
1611
|
whichForm,
|
|
@@ -1359,10 +1621,14 @@ export default {
|
|
|
1359
1621
|
hasGBDFL,
|
|
1360
1622
|
hasInsis,
|
|
1361
1623
|
hasGKB,
|
|
1624
|
+
hasDocumentReader,
|
|
1625
|
+
hasMiddleName,
|
|
1626
|
+
hasRelationDegree,
|
|
1362
1627
|
hasFamilyStatus,
|
|
1363
1628
|
hasInsurancePay,
|
|
1364
1629
|
hasSignOfIPDL,
|
|
1365
1630
|
hasSameAddressToggle,
|
|
1631
|
+
hasMemberSearch,
|
|
1366
1632
|
|
|
1367
1633
|
// Rules
|
|
1368
1634
|
ageRule,
|
|
@@ -1382,9 +1648,12 @@ export default {
|
|
|
1382
1648
|
getContragentFromGBDFL,
|
|
1383
1649
|
getContragent,
|
|
1384
1650
|
attachFile,
|
|
1651
|
+
attachDocumentReader,
|
|
1652
|
+
getDocumentReader,
|
|
1385
1653
|
getFile,
|
|
1386
1654
|
selectFamilyMember,
|
|
1387
1655
|
closeFamilyDialog,
|
|
1656
|
+
openDeletionDialog,
|
|
1388
1657
|
scrollForm,
|
|
1389
1658
|
onIinInput,
|
|
1390
1659
|
onOtpCodeInput,
|