hl-core 0.0.10-beta.4 → 0.0.10-beta.41
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/README.md +0 -2
- package/api/base.api.ts +338 -191
- package/api/interceptors.ts +3 -5
- package/components/Complex/TextBlock.vue +2 -0
- package/components/Dialog/Dialog.vue +7 -1
- package/components/Dialog/FamilyDialog.vue +2 -0
- package/components/Form/DigitalDocument.vue +52 -0
- package/components/Form/DynamicForm.vue +1 -0
- package/components/Form/FormData.vue +1 -0
- package/components/Form/ManagerAttachment.vue +48 -10
- package/components/Form/ProductConditionsBlock.vue +12 -6
- package/components/Input/Datepicker.vue +5 -0
- package/components/Input/DynamicInput.vue +2 -0
- package/components/Input/FormInput.vue +7 -0
- package/components/Input/OtpInput.vue +25 -0
- package/components/Input/PanelInput.vue +1 -0
- package/components/Input/RoundedInput.vue +4 -0
- package/components/Input/RoundedSelect.vue +4 -0
- package/components/Input/SwitchInput.vue +2 -0
- package/components/Input/TextAreaField.vue +71 -0
- package/components/Input/TextInput.vue +2 -0
- package/components/Layout/Drawer.vue +2 -0
- package/components/Menu/MenuNav.vue +1 -1
- package/components/Pages/Anketa.vue +168 -169
- package/components/Pages/Auth.vue +2 -0
- package/components/Pages/ContragentForm.vue +2 -1
- package/components/Pages/Documents.vue +432 -59
- package/components/Pages/MemberForm.vue +334 -160
- package/components/Pages/ProductConditions.vue +838 -226
- package/components/Panel/PanelHandler.vue +280 -121
- package/components/Transitions/Animation.vue +2 -0
- package/components/Utilities/Chip.vue +3 -1
- package/components/Utilities/JsonViewer.vue +1 -2
- package/composables/classes.ts +143 -49
- package/composables/constants.ts +44 -0
- package/composables/fields.ts +6 -4
- package/composables/index.ts +298 -7
- package/composables/styles.ts +8 -24
- package/configs/pwa.ts +1 -7
- package/layouts/clear.vue +1 -1
- package/layouts/default.vue +1 -1
- package/layouts/full.vue +1 -1
- package/locales/ru.json +80 -19
- package/nuxt.config.ts +10 -13
- package/package.json +12 -12
- package/plugins/head.ts +2 -1
- package/store/data.store.ts +802 -531
- package/store/member.store.ts +18 -6
- package/store/rules.ts +22 -2
- package/types/enum.ts +33 -2
- package/types/env.d.ts +2 -2
- package/types/form.ts +71 -74
- package/types/index.ts +924 -873
|
@@ -68,51 +68,56 @@
|
|
|
68
68
|
v-model="member.phoneNumber"
|
|
69
69
|
:label="$dataStore.t('form.phoneNumber')"
|
|
70
70
|
:maska="$maska.phone"
|
|
71
|
-
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
72
|
-
:clearable="!isDisabled"
|
|
71
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled || !!isDataFromGov"
|
|
72
|
+
:clearable="!isDisabled && !isIinPhoneDisabled && !isDataFromGov"
|
|
73
73
|
:append-inner-icon="otpCondition ? `${$dataStore.isPension ? 'mdi-message-text' : 'mdi mdi-phone-message'}` : ''"
|
|
74
74
|
@append="openCustomPanel('otp')"
|
|
75
75
|
@keyup.enter.prevent="otpCondition ? openCustomPanel('otp') : null"
|
|
76
76
|
:rules="phoneRule"
|
|
77
77
|
/>
|
|
78
|
-
<base-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
78
|
+
<base-animation>
|
|
79
|
+
<base-form-input
|
|
80
|
+
v-if="!isNonResident"
|
|
81
|
+
v-model="member.iin"
|
|
82
|
+
:label="$dataStore.t('form.iin')"
|
|
83
|
+
:maska="$maska.iin"
|
|
84
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled || !!member.parsedDocument?.iin || !!isDataFromGov"
|
|
85
|
+
:clearable="!isDisabled && !isIinPhoneDisabled && !member.parsedDocument?.iin && !isDataFromGov"
|
|
86
|
+
:append-inner-icon="hasMemberSearch || !isNonResident ? (hasDocumentReader ? 'mdi mdi-credit-card-scan-outline' : 'mdi mdi-magnify') : ''"
|
|
87
|
+
@append="searchMember"
|
|
88
|
+
@input="onIinInput"
|
|
89
|
+
:rules="isNonResident ? [] : $rules.required.concat($rules.iinRight)"
|
|
90
|
+
/>
|
|
91
|
+
</base-animation>
|
|
89
92
|
<base-form-input
|
|
90
93
|
v-model.trim="member.lastName"
|
|
91
|
-
:readonly="isDisabled ||
|
|
92
|
-
:clearable="!isDisabled"
|
|
94
|
+
:readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.lastName"
|
|
95
|
+
:clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.lastName"
|
|
93
96
|
:label="$dataStore.t('form.lastName')"
|
|
94
97
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
95
98
|
/>
|
|
96
99
|
<base-form-input
|
|
97
100
|
v-model.trim="member.firstName"
|
|
98
|
-
:readonly="isDisabled ||
|
|
99
|
-
:clearable="!isDisabled"
|
|
101
|
+
:readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.firstName"
|
|
102
|
+
:clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.firstName"
|
|
100
103
|
:label="$dataStore.t('form.firstName')"
|
|
101
104
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
105
|
+
:append-inner-icon="isNonResident ? 'mdi mdi-magnify' : ''"
|
|
106
|
+
@append="searchMember"
|
|
102
107
|
/>
|
|
103
108
|
<base-form-input
|
|
104
109
|
v-if="hasMiddleName"
|
|
105
110
|
v-model.trim="member.middleName"
|
|
106
|
-
:readonly="isDisabled ||
|
|
107
|
-
:clearable="!isDisabled"
|
|
111
|
+
:readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.middleName"
|
|
112
|
+
:clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.middleName"
|
|
108
113
|
:label="$dataStore.t('form.middleName')"
|
|
109
114
|
:rules="$rules.cyrillicNonRequired"
|
|
110
115
|
/>
|
|
111
116
|
<base-form-input
|
|
112
117
|
v-if="$dataStore.isLifetrip"
|
|
113
118
|
v-model.trim="member.lastNameLat"
|
|
114
|
-
:readonly="isDisabled ||
|
|
115
|
-
:clearable="!isDisabled"
|
|
119
|
+
:readonly="isDisabled || isDataFromGov"
|
|
120
|
+
:clearable="!isDisabled && !isDataFromGov"
|
|
116
121
|
:label="$dataStore.t('form.lastNameLat')"
|
|
117
122
|
:rules="$rules.required.concat($rules.latin)"
|
|
118
123
|
:hint="$dataStore.t('labels.checkWithDoc')"
|
|
@@ -120,16 +125,16 @@
|
|
|
120
125
|
<base-form-input
|
|
121
126
|
v-if="$dataStore.isLifetrip"
|
|
122
127
|
v-model.trim="member.firstNameLat"
|
|
123
|
-
:readonly="isDisabled ||
|
|
124
|
-
:clearable="!isDisabled"
|
|
128
|
+
:readonly="isDisabled || isDataFromGov"
|
|
129
|
+
:clearable="!isDisabled && !isDataFromGov"
|
|
125
130
|
:label="$dataStore.t('form.firstNameLat')"
|
|
126
131
|
:rules="$rules.required.concat($rules.latin)"
|
|
127
132
|
:hint="$dataStore.t('labels.checkWithDoc')"
|
|
128
133
|
/>
|
|
129
134
|
<base-form-input
|
|
130
135
|
v-model="member.birthDate"
|
|
131
|
-
:readonly="isDisabled ||
|
|
132
|
-
:clearable="!isDisabled"
|
|
136
|
+
:readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.birthDate"
|
|
137
|
+
:clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.birthDate"
|
|
133
138
|
:label="$dataStore.t('form.birthDate')"
|
|
134
139
|
:rules="birthDateRule"
|
|
135
140
|
:maska="$maska.date"
|
|
@@ -161,8 +166,8 @@
|
|
|
161
166
|
<base-panel-input
|
|
162
167
|
v-model="member.gender"
|
|
163
168
|
:value="member.gender?.nameRu"
|
|
164
|
-
:readonly="isDisabled ||
|
|
165
|
-
:clearable="!isDisabled && !
|
|
169
|
+
:readonly="isDisabled || isDataFromGov"
|
|
170
|
+
:clearable="!isDisabled && !isDataFromGov"
|
|
166
171
|
:label="$dataStore.t('form.gender')"
|
|
167
172
|
:rules="$rules.objectRequired"
|
|
168
173
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -199,8 +204,11 @@
|
|
|
199
204
|
:rules="$rules.required.concat($rules.numbers)"
|
|
200
205
|
/>
|
|
201
206
|
</base-form-section>
|
|
202
|
-
<base-form-section
|
|
203
|
-
|
|
207
|
+
<base-form-section
|
|
208
|
+
v-if="$dataStore.isPension && (whichForm === formStore.insuredFormKey || $route.query.tab === 'slaveInsuredForm')"
|
|
209
|
+
:title="$dataStore.t('pension.disabilityInfo')"
|
|
210
|
+
>
|
|
211
|
+
<base-form-toggle v-model="member.isDisability" :title="$dataStore.t('pension.ifHasDisabilityAlways')" :disabled="isDisabled" :has-border="false" />
|
|
204
212
|
<base-animation>
|
|
205
213
|
<base-panel-input
|
|
206
214
|
v-if="member.isDisability"
|
|
@@ -347,7 +355,7 @@
|
|
|
347
355
|
/>
|
|
348
356
|
<base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
349
357
|
</base-form-section>
|
|
350
|
-
<base-form-section :title="$dataStore.t('form.placeRegistration')"
|
|
358
|
+
<base-form-section :title="$dataStore.t('form.placeRegistration')">
|
|
351
359
|
<base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
|
|
352
360
|
<base-panel-input
|
|
353
361
|
v-model="member.registrationCountry"
|
|
@@ -415,7 +423,7 @@
|
|
|
415
423
|
/>
|
|
416
424
|
<base-form-input
|
|
417
425
|
v-model.trim="member.registrationNumberHouse"
|
|
418
|
-
:rules="$rules.
|
|
426
|
+
:rules="[...$rules.required, $rules.lengthLimit(member.registrationNumberHouse, 10)]"
|
|
419
427
|
:readonly="isDisabled"
|
|
420
428
|
:clearable="!isDisabled"
|
|
421
429
|
:label="$dataStore.t('form.NumberHouse')"
|
|
@@ -447,7 +455,7 @@
|
|
|
447
455
|
@append="openPanel($dataStore.t('form.Region'), [], 'birthRegion', $dataStore.getRegions)"
|
|
448
456
|
/> -->
|
|
449
457
|
</base-form-section>
|
|
450
|
-
<base-form-section :title="$dataStore.t('form.documentData')"
|
|
458
|
+
<base-form-section :title="$dataStore.t('form.documentData')">
|
|
451
459
|
<base-panel-input
|
|
452
460
|
v-if="gbdDocuments && gbdDocuments.length"
|
|
453
461
|
value="Список документов из ГБДФЛ"
|
|
@@ -461,8 +469,8 @@
|
|
|
461
469
|
v-model="member.documentType"
|
|
462
470
|
:value="member.documentType?.nameRu"
|
|
463
471
|
:label="$dataStore.t('form.documentType')"
|
|
464
|
-
:readonly="isDisabled"
|
|
465
|
-
:clearable="!isDisabled"
|
|
472
|
+
:readonly="isDisabled || isDataFromGov"
|
|
473
|
+
:clearable="!isDisabled && !isDataFromGov"
|
|
466
474
|
:rules="$rules.objectRequired"
|
|
467
475
|
append-inner-icon="mdi mdi-chevron-right"
|
|
468
476
|
@append="openPanel($dataStore.t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
|
|
@@ -470,8 +478,8 @@
|
|
|
470
478
|
<base-form-input
|
|
471
479
|
v-model.trim="member.documentNumber"
|
|
472
480
|
:label="$dataStore.t('form.documentNumber')"
|
|
473
|
-
:readonly="isDisabled || !!member.parsedDocument?.documentNumber"
|
|
474
|
-
:clearable="!isDisabled"
|
|
481
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentNumber || isDataFromGov"
|
|
482
|
+
:clearable="!isDisabled && !member.parsedDocument?.documentNumber && !isDataFromGov"
|
|
475
483
|
:rules="$rules.required"
|
|
476
484
|
/>
|
|
477
485
|
<!-- <base-file-input v-if="!memberDocument" :disabled="isDisabled" :clearable="!isDisabled" @input="attachFile($event)" />
|
|
@@ -483,17 +491,42 @@
|
|
|
483
491
|
v-model="member.documentIssuers"
|
|
484
492
|
:value="member.documentIssuers?.nameRu"
|
|
485
493
|
:label="$dataStore.t('form.documentIssuers')"
|
|
486
|
-
:readonly="isDisabled || !!member.parsedDocument?.documentIssuer"
|
|
487
|
-
:clearable="!isDisabled"
|
|
494
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssuer || isDataFromGov"
|
|
495
|
+
:clearable="!isDisabled && !member.parsedDocument?.documentIssuer && !isDataFromGov"
|
|
488
496
|
:rules="$rules.objectRequired"
|
|
489
497
|
append-inner-icon="mdi mdi-chevron-right"
|
|
490
498
|
@append="openPanel($dataStore.t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
|
|
491
499
|
/>
|
|
500
|
+
<base-animation>
|
|
501
|
+
<div v-if="hasIssuerOther" class="flex flex-col gap-[1px]">
|
|
502
|
+
<base-form-input
|
|
503
|
+
v-model="member.documentIssuers.issuerOtherName"
|
|
504
|
+
:label="$dataStore.t('form.issuerOtherName')"
|
|
505
|
+
:readonly="isDisabled"
|
|
506
|
+
:clearable="!isDisabled"
|
|
507
|
+
:rules="$rules.required.concat($rules.onlySymbols)"
|
|
508
|
+
/>
|
|
509
|
+
<base-form-input
|
|
510
|
+
v-model="member.documentIssuers.issuerOtherNameOrig"
|
|
511
|
+
:label="$dataStore.t('form.issuerOtherNameOrig')"
|
|
512
|
+
:readonly="isDisabled"
|
|
513
|
+
:clearable="!isDisabled"
|
|
514
|
+
:rules="$rules.required"
|
|
515
|
+
/>
|
|
516
|
+
<base-form-input
|
|
517
|
+
v-model="member.documentIssuers.issuerOtherNameRu"
|
|
518
|
+
:label="$dataStore.t('form.issuerOtherNameRu')"
|
|
519
|
+
:readonly="isDisabled"
|
|
520
|
+
:clearable="!isDisabled"
|
|
521
|
+
:rules="$rules.required.concat($rules.cyrillic)"
|
|
522
|
+
/>
|
|
523
|
+
</div>
|
|
524
|
+
</base-animation>
|
|
492
525
|
<base-form-input
|
|
493
526
|
v-model="member.documentDate"
|
|
494
527
|
:label="$dataStore.t('form.documentDate')"
|
|
495
|
-
:readonly="isDisabled || !!member.parsedDocument?.documentIssueDate"
|
|
496
|
-
:clearable="!isDisabled"
|
|
528
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentIssueDate || isDataFromGov"
|
|
529
|
+
:clearable="!isDisabled && !member.parsedDocument?.documentIssueDate && !isDataFromGov"
|
|
497
530
|
:rules="$rules.required.concat($rules.date)"
|
|
498
531
|
:maska="$maska.date"
|
|
499
532
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
@@ -503,8 +536,8 @@
|
|
|
503
536
|
v-if="member.documentType.ids !== 'SBI'"
|
|
504
537
|
v-model="member.documentExpire"
|
|
505
538
|
:label="$dataStore.t('form.documentExpire')"
|
|
506
|
-
:readonly="isDisabled || !!member.parsedDocument?.documentExpireDate"
|
|
507
|
-
:clearable="!isDisabled"
|
|
539
|
+
:readonly="isDisabled || !!member.parsedDocument?.documentExpireDate || isDataFromGov"
|
|
540
|
+
:clearable="!isDisabled && !member.parsedDocument?.documentExpireDate && !isDataFromGov"
|
|
508
541
|
:rules="$rules.required.concat($rules.date)"
|
|
509
542
|
:maska="$maska.date"
|
|
510
543
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
@@ -601,47 +634,19 @@
|
|
|
601
634
|
v-model="member.bankInfo.bankName"
|
|
602
635
|
:value="member.bankInfo.bankName.nameRu"
|
|
603
636
|
:label="$dataStore.t('clients.form.nameBank')"
|
|
604
|
-
:readonly="
|
|
605
|
-
:clearable="
|
|
637
|
+
:readonly="true"
|
|
638
|
+
:clearable="false"
|
|
606
639
|
:rules="$rules.objectRequired"
|
|
607
|
-
append-inner-icon="mdi mdi-chevron-right"
|
|
608
|
-
@append="openPanel($dataStore.t('clients.form.nameBank'), [], 'bankInfo', $dataStore.getBanks, '', 'bankName')"
|
|
609
640
|
/>
|
|
610
641
|
<base-form-input
|
|
611
642
|
v-model.trim="member.bankInfo.bin"
|
|
612
|
-
:label="$dataStore.t('form.bin')"
|
|
613
643
|
:maska="$maska.iin"
|
|
614
|
-
:
|
|
615
|
-
:
|
|
644
|
+
:label="$dataStore.t('form.bin')"
|
|
645
|
+
:readonly="true"
|
|
646
|
+
:clearable="false"
|
|
616
647
|
:rules="$rules.required.concat($rules.iinRight)"
|
|
617
648
|
/>
|
|
618
|
-
<base-form-input v-model="member.bankInfo.bik" :label="$dataStore.t('clients.form.bik')" :readonly="
|
|
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
|
-
/>
|
|
649
|
+
<base-form-input v-model="member.bankInfo.bik" :label="$dataStore.t('clients.form.bik')" :readonly="true" :clearable="false" :rules="$rules.required" />
|
|
645
650
|
</base-form-section>
|
|
646
651
|
<base-form-section :title="$dataStore.t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
647
652
|
<base-form-input
|
|
@@ -678,6 +683,7 @@
|
|
|
678
683
|
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
|
|
679
684
|
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
|
|
680
685
|
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
|
|
686
|
+
<base-btn v-if="isNonResident" :loading="isButtonLoading" :text="$dataStore.t('buttons.searchByFio')" @click="getContragent" />
|
|
681
687
|
<base-form-section v-if="hasDocumentReader" class="!mt-0">
|
|
682
688
|
<base-file-input
|
|
683
689
|
:disabled="isDisabled"
|
|
@@ -702,18 +708,16 @@
|
|
|
702
708
|
</Teleport>
|
|
703
709
|
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#right-panel-actions">
|
|
704
710
|
<div :class="[$styles.flexColNav]">
|
|
705
|
-
<base-
|
|
706
|
-
<
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
:
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
/>
|
|
716
|
-
</base-fade-transition>
|
|
711
|
+
<base-animation>
|
|
712
|
+
<div v-if="otpCondition && member.otpTokenId" class="flex flex-col">
|
|
713
|
+
<base-form-section class="mt-0 py-2">
|
|
714
|
+
<base-otp-input v-model="member.otpCode" :length="4" @keyup.enter.prevent="hasOtp && checkOtp()" @input="onOtpCodeInput" />
|
|
715
|
+
</base-form-section>
|
|
716
|
+
<span class="text-center cursor-pointer mt-2" :class="[$styles.mutedText]" @click="sendOtp(false)"
|
|
717
|
+
>Не получили код? <span class="underline underline-offset-2">Отправить код заново</span></span
|
|
718
|
+
>
|
|
719
|
+
</div>
|
|
720
|
+
</base-animation>
|
|
717
721
|
<base-btn v-if="!member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.sendOtp')" @click="sendOtp(false)" />
|
|
718
722
|
<base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
|
|
719
723
|
</div>
|
|
@@ -721,12 +725,12 @@
|
|
|
721
725
|
<Teleport v-if="isPositionPanelOpen" to="#right-panel-actions">
|
|
722
726
|
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
723
727
|
<base-rounded-input
|
|
724
|
-
v-model="searchQuery"
|
|
725
|
-
|
|
728
|
+
v-model.trim="searchQuery"
|
|
729
|
+
label="Выполните поиск должностей"
|
|
726
730
|
class="w-full p-2"
|
|
727
731
|
:hide-details="searchQuery.length >= 4"
|
|
728
|
-
:rules="[searchQuery.length < 4 ? $dataStore.t('rules.searchQueryLen', { len:
|
|
729
|
-
|
|
732
|
+
:rules="[searchQuery.length < 4 ? $dataStore.t('rules.searchQueryLen', { len: 4 }) : true]"
|
|
733
|
+
append-inner-icon="mdi mdi-magnify"
|
|
730
734
|
@append="searchPositions"
|
|
731
735
|
/>
|
|
732
736
|
<base-animation>
|
|
@@ -783,6 +787,27 @@
|
|
|
783
787
|
<base-list-empty class="w-full" v-else @click="documentChooseDialog = false" />
|
|
784
788
|
</template>
|
|
785
789
|
</base-dialog>
|
|
790
|
+
<base-dialog
|
|
791
|
+
v-model="fioChooseDialog"
|
|
792
|
+
:title="$dataStore.t('pension.contragentSelect')"
|
|
793
|
+
:icon="{ mdi: 'format-list-bulleted-type', color: '#A0B3D8' }"
|
|
794
|
+
actions="fioChooseDialog"
|
|
795
|
+
:persistent="false"
|
|
796
|
+
>
|
|
797
|
+
<template #actions>
|
|
798
|
+
<v-list lines="two" v-if="contragents && contragents.length" class="w-full !py-0">
|
|
799
|
+
<v-list-item v-for="person of contragents" :key="person.id" @click="getContragentClick(person)">
|
|
800
|
+
<v-list-item-title :class="[$styles.greenText, $styles.textTitle]">
|
|
801
|
+
{{ person.longName }}
|
|
802
|
+
</v-list-item-title>
|
|
803
|
+
<v-list-item-subtitle :class="[$styles.textSimple]">
|
|
804
|
+
{{ reformatDate(person.birthDate) }} - {{ person.genderName }} - Рег: {{ reformatDate(person.registrationDate) }}
|
|
805
|
+
</v-list-item-subtitle>
|
|
806
|
+
</v-list-item>
|
|
807
|
+
</v-list>
|
|
808
|
+
<base-list-empty class="w-full" v-else @click="fioChooseDialog = false" />
|
|
809
|
+
</template>
|
|
810
|
+
</base-dialog>
|
|
786
811
|
</section>
|
|
787
812
|
<base-scroll-buttons @up="scrollForm('up')" @down="scrollForm('down')" />
|
|
788
813
|
</template>
|
|
@@ -790,7 +815,8 @@
|
|
|
790
815
|
<script lang="ts">
|
|
791
816
|
import { Value, DocumentItem, Member } from '../../composables/classes';
|
|
792
817
|
import { uuid } from 'vue-uuid';
|
|
793
|
-
import { StoreMembers,
|
|
818
|
+
import { StoreMembers, CoreEnums } from '../../types/enum';
|
|
819
|
+
import type { Api, ContragentType, Dicts, ESBDValidationType, FileActions, MultipleMember } from '../../types';
|
|
794
820
|
|
|
795
821
|
export default {
|
|
796
822
|
setup() {
|
|
@@ -802,7 +828,8 @@ export default {
|
|
|
802
828
|
const memberStore = useMemberStore();
|
|
803
829
|
const whichForm = computed(() => route.query.tab as keyof typeof StoreMembers);
|
|
804
830
|
const whichIndex = computed(() => route.query.i as string);
|
|
805
|
-
const getMember = (whichForm: keyof typeof StoreMembers, whichIndex?: string) =>
|
|
831
|
+
const getMember = (whichForm: keyof typeof StoreMembers | 'slaveInsuredForm', whichIndex?: string) =>
|
|
832
|
+
memberStore.getMemberFromStore(whichForm, Number((whichIndex ? whichIndex : '0') as string))!;
|
|
806
833
|
const member = ref(getMember(whichForm.value, whichIndex.value));
|
|
807
834
|
const selectedFamilyMember = ref<Api.GKB.BirthInfo>({});
|
|
808
835
|
const isPanelOpen = ref<boolean>(false);
|
|
@@ -817,9 +844,12 @@ export default {
|
|
|
817
844
|
const isPositionPanelOpen = ref<boolean>(false);
|
|
818
845
|
const isPanelLoading = ref<boolean>(false);
|
|
819
846
|
const isChangingMember = ref<boolean>(false);
|
|
847
|
+
const isNonResident = computed(() => dataStore.isPension && member.value.signOfResidency.ids === '500011.2');
|
|
848
|
+
const isDataFromGov = computed(() => member.value.verifyType === 'GBDFL' || member.value.verifyType === 'ESBD' || !!member.value.gosPersonData);
|
|
820
849
|
const familyDialog = ref<boolean>(false);
|
|
821
850
|
const deletionDialog = ref<boolean>(false);
|
|
822
851
|
const documentChooseDialog = ref<boolean>(false);
|
|
852
|
+
const fioChooseDialog = ref<boolean>(false);
|
|
823
853
|
const selectedIndex = ref<number>(0);
|
|
824
854
|
const sameAddress = ref<boolean>(false);
|
|
825
855
|
const panelValue = ref<Value>(new Value());
|
|
@@ -830,6 +860,8 @@ export default {
|
|
|
830
860
|
const fileData = ref<{ file: any }>();
|
|
831
861
|
const imageDataList = ref<string[]>([]);
|
|
832
862
|
const isRelative = ref<boolean>(false);
|
|
863
|
+
const additionalDocuments = ref<any[]>([]);
|
|
864
|
+
const contragents = ref<ContragentType[]>([]);
|
|
833
865
|
|
|
834
866
|
const currentPanelDeep = ref<string>();
|
|
835
867
|
const currentPanelSubDeep = ref<string>();
|
|
@@ -839,7 +871,6 @@ export default {
|
|
|
839
871
|
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value));
|
|
840
872
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
841
873
|
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
842
|
-
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
843
874
|
const gbdDocuments = computed(() => {
|
|
844
875
|
if (hasGBDFLDocSelection && !!member.value.gosPersonData && !!member.value.gosPersonData.documents) {
|
|
845
876
|
const documents = Array.isArray(member.value.gosPersonData.documents.document)
|
|
@@ -865,6 +896,7 @@ export default {
|
|
|
865
896
|
case formStore.policyholdersRepresentativeFormKey:
|
|
866
897
|
return route.params.taskId !== '0';
|
|
867
898
|
default:
|
|
899
|
+
if (route.query.tab === 'slaveInsuredForm') return true;
|
|
868
900
|
return false;
|
|
869
901
|
}
|
|
870
902
|
};
|
|
@@ -901,7 +933,7 @@ export default {
|
|
|
901
933
|
};
|
|
902
934
|
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGBDFL && perMemberCondition();
|
|
903
935
|
});
|
|
904
|
-
const hasGBDFLDocSelection = dataStore.isLifetrip
|
|
936
|
+
const hasGBDFLDocSelection = dataStore.isLifetrip;
|
|
905
937
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
906
938
|
const hasGKB = computed(() => {
|
|
907
939
|
const perMemberCondition = () => {
|
|
@@ -972,7 +1004,8 @@ export default {
|
|
|
972
1004
|
(whichForm.value === formStore.beneficiaryFormKey && member.value.iin !== formStore.policyholderForm.iin) ||
|
|
973
1005
|
(dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage),
|
|
974
1006
|
);
|
|
975
|
-
const hasWorkPositionDict =
|
|
1007
|
+
const hasWorkPositionDict = dataStore.isBaiterek;
|
|
1008
|
+
const hasIssuerOther = computed(() => (useEnv().isProduction ? dataStore.isPension : true) && member.value.documentIssuers && member.value.documentIssuers.nameRu === 'Другое');
|
|
976
1009
|
|
|
977
1010
|
const birthDateRule = computed(() => {
|
|
978
1011
|
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
@@ -1047,16 +1080,18 @@ export default {
|
|
|
1047
1080
|
});
|
|
1048
1081
|
|
|
1049
1082
|
const getOtpConditionByMember = () => {
|
|
1050
|
-
|
|
1083
|
+
const which = whichForm.value as keyof typeof StoreMembers | 'slaveInsuredForm';
|
|
1084
|
+
switch (which) {
|
|
1051
1085
|
case formStore.policyholderFormKey:
|
|
1052
1086
|
return route.params.taskId === '0';
|
|
1053
1087
|
case formStore.insuredFormKey:
|
|
1054
|
-
|
|
1055
|
-
return route.query.id === '0';
|
|
1088
|
+
case 'slaveInsuredForm':
|
|
1056
1089
|
case formStore.policyholdersRepresentativeFormKey:
|
|
1057
1090
|
case formStore.beneficiaryFormKey:
|
|
1058
1091
|
case formStore.beneficialOwnerFormKey:
|
|
1059
1092
|
return route.query.id === '0';
|
|
1093
|
+
default:
|
|
1094
|
+
return dataStore.isPension && route.query.id === '0' && formStore.applicationData.processCode === 24;
|
|
1060
1095
|
}
|
|
1061
1096
|
};
|
|
1062
1097
|
const otpCondition = computed(() => {
|
|
@@ -1065,6 +1100,7 @@ export default {
|
|
|
1065
1100
|
if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
|
|
1066
1101
|
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
|
|
1067
1102
|
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
|
|
1103
|
+
if (route.query.tab === 'slaveInsuredForm' && route.query.id === '0') return true;
|
|
1068
1104
|
return getOtpConditionByMember();
|
|
1069
1105
|
});
|
|
1070
1106
|
|
|
@@ -1084,6 +1120,10 @@ export default {
|
|
|
1084
1120
|
};
|
|
1085
1121
|
|
|
1086
1122
|
const searchPositions = async () => {
|
|
1123
|
+
if (searchQuery.value.length < 4) {
|
|
1124
|
+
dataStore.showToaster('error', dataStore.t('rules.searchQueryLen', { len: 4 }));
|
|
1125
|
+
return;
|
|
1126
|
+
}
|
|
1087
1127
|
if (!isDisabled.value) {
|
|
1088
1128
|
isPanelLoading.value = true;
|
|
1089
1129
|
positionsList.value = await dataStore.getWorkPosition(searchQuery.value);
|
|
@@ -1122,6 +1162,7 @@ export default {
|
|
|
1122
1162
|
isPositionPanelOpen.value = false;
|
|
1123
1163
|
}
|
|
1124
1164
|
if (type === 'workPosition') {
|
|
1165
|
+
dataStore.rightPanel.title = dataStore.t('form.jobPosition');
|
|
1125
1166
|
isPositionPanelOpen.value = true;
|
|
1126
1167
|
isOtpPanelOpen.value = false;
|
|
1127
1168
|
isDocumentOpen.value = false;
|
|
@@ -1251,12 +1292,35 @@ export default {
|
|
|
1251
1292
|
}
|
|
1252
1293
|
};
|
|
1253
1294
|
|
|
1254
|
-
const
|
|
1295
|
+
const uploadAdditionalFiles = async (processInstanceId: string | number) => {
|
|
1296
|
+
const formData = new FormData();
|
|
1297
|
+
const information: any = [];
|
|
1298
|
+
const uuidV4 = uuid.v4();
|
|
1299
|
+
if (additionalDocuments.value) {
|
|
1300
|
+
Object.values(additionalDocuments.value).map((value: any) => {
|
|
1301
|
+
formData.append('file', value);
|
|
1302
|
+
const ext = value.name.substring(value.name.lastIndexOf('.'));
|
|
1303
|
+
const selectedDocument = dataStore.dicFileTypeList.find((i: Value) => i.code === value.code);
|
|
1304
|
+
information.push({
|
|
1305
|
+
identifier: `${uuidV4}${ext}`,
|
|
1306
|
+
iin: member.value.iin ? member.value.iin.replaceAll('-', '') : null,
|
|
1307
|
+
processInstanceId: processInstanceId,
|
|
1308
|
+
fileTypeCode: selectedDocument ? selectedDocument.code : null,
|
|
1309
|
+
fileTypeId: selectedDocument ? selectedDocument.id : null,
|
|
1310
|
+
fileName: value.name,
|
|
1311
|
+
});
|
|
1312
|
+
});
|
|
1313
|
+
formData.append('fileData', JSON.stringify(information));
|
|
1314
|
+
await dataStore.uploadFiles(formData, false);
|
|
1315
|
+
}
|
|
1316
|
+
};
|
|
1317
|
+
|
|
1318
|
+
const attachFile = (event: InputEvent) => {
|
|
1255
1319
|
if (event.target) {
|
|
1256
|
-
fileData.value =
|
|
1320
|
+
fileData.value = { file: (event.target as HTMLInputElement).files };
|
|
1257
1321
|
} else {
|
|
1258
1322
|
if (event.dataTransfer) {
|
|
1259
|
-
fileData.value =
|
|
1323
|
+
fileData.value = { file: (event.dataTransfer as DataTransfer).files };
|
|
1260
1324
|
}
|
|
1261
1325
|
}
|
|
1262
1326
|
};
|
|
@@ -1325,7 +1389,7 @@ export default {
|
|
|
1325
1389
|
if (parsedDocument.middleName) member.value.middleName = parsedDocument.middleName;
|
|
1326
1390
|
if (parsedDocument.fullName) member.value.longName = parsedDocument.fullName;
|
|
1327
1391
|
if (parsedDocument.documentName && parsedDocument.documentName.startsWith('Kazakhstan - Id Card')) {
|
|
1328
|
-
const documentType = dataStore.documentTypes.find((i: Value) => i.ids ===
|
|
1392
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === CoreEnums.Insis.DocTypes['1UDL']);
|
|
1329
1393
|
if (documentType) member.value.documentType = documentType;
|
|
1330
1394
|
}
|
|
1331
1395
|
if (!!parsedDocument.documentIssuer) {
|
|
@@ -1429,7 +1493,9 @@ export default {
|
|
|
1429
1493
|
|
|
1430
1494
|
const selectGbdDocument = (document: Api.GBD.Document) => {
|
|
1431
1495
|
if (document) {
|
|
1432
|
-
const documentType = dataStore.documentTypes.find(
|
|
1496
|
+
const documentType = dataStore.documentTypes.find(
|
|
1497
|
+
(i: Value) => i.ids === Object.keys(CoreEnums.GBD.DocTypes)[Object.values(CoreEnums.GBD.DocTypes).indexOf(document.type.code)],
|
|
1498
|
+
);
|
|
1433
1499
|
if (documentType) member.value.documentType = documentType;
|
|
1434
1500
|
const documentNumber = document.number;
|
|
1435
1501
|
if (documentNumber) member.value.documentNumber = documentNumber;
|
|
@@ -1446,21 +1512,46 @@ export default {
|
|
|
1446
1512
|
isSearchOpen.value = false;
|
|
1447
1513
|
};
|
|
1448
1514
|
|
|
1515
|
+
const getContragentClick = async (contragent: ContragentType) => {
|
|
1516
|
+
isButtonLoading.value = true;
|
|
1517
|
+
await dataStore.serializeContragentData(member.value, contragent);
|
|
1518
|
+
fioChooseDialog.value = false;
|
|
1519
|
+
isButtonLoading.value = false;
|
|
1520
|
+
dataStore.rightPanel.open = false;
|
|
1521
|
+
isSearchOpen.value = false;
|
|
1522
|
+
};
|
|
1523
|
+
|
|
1449
1524
|
const getContragent = async () => {
|
|
1450
|
-
if (
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1525
|
+
if (isNonResident.value) {
|
|
1526
|
+
if (!member.value.lastName || !member.value.firstName) {
|
|
1527
|
+
dataStore.showToaster('error', 'Заполните поля Имя и Фамилия', 3000);
|
|
1528
|
+
dataStore.rightPanel.open = false;
|
|
1529
|
+
isSearchOpen.value = false;
|
|
1530
|
+
return;
|
|
1531
|
+
}
|
|
1532
|
+
} else {
|
|
1533
|
+
if (member.value.hasAgreement !== true) {
|
|
1534
|
+
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
1535
|
+
dataStore.rightPanel.open = false;
|
|
1536
|
+
isSearchOpen.value = false;
|
|
1537
|
+
return;
|
|
1538
|
+
}
|
|
1539
|
+
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
1540
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
1541
|
+
dataStore.rightPanel.open = false;
|
|
1542
|
+
isSearchOpen.value = false;
|
|
1543
|
+
return;
|
|
1544
|
+
}
|
|
1461
1545
|
}
|
|
1462
1546
|
isButtonLoading.value = true;
|
|
1463
|
-
|
|
1547
|
+
if (isNonResident.value) {
|
|
1548
|
+
const response = await dataStore.getContragent(member.value, false);
|
|
1549
|
+
if (response) contragents.value = response.items;
|
|
1550
|
+
else dataStore.showToaster('error', 'Не найдено совпадений', 3000);
|
|
1551
|
+
fioChooseDialog.value = true;
|
|
1552
|
+
} else {
|
|
1553
|
+
await dataStore.getContragent(member.value, false);
|
|
1554
|
+
}
|
|
1464
1555
|
isButtonLoading.value = false;
|
|
1465
1556
|
dataStore.rightPanel.open = false;
|
|
1466
1557
|
isSearchOpen.value = false;
|
|
@@ -1496,10 +1587,11 @@ export default {
|
|
|
1496
1587
|
}
|
|
1497
1588
|
const isInsured = formStore.isPolicyholderInsured;
|
|
1498
1589
|
const remoteIsInsured = ref<boolean | null>(null);
|
|
1590
|
+
const isNewApplication = route.params.taskId === '0';
|
|
1499
1591
|
if (whichForm.value == formStore.policyholderFormKey || (dataStore.isPension && whichForm.value == formStore.insuredFormKey)) {
|
|
1500
1592
|
if (route.params.taskId === '0') {
|
|
1501
1593
|
try {
|
|
1502
|
-
const taskId = await dataStore.startApplication(member.value, dataStore.isPension ? (String(route.query.type) === 'joint' ?
|
|
1594
|
+
const taskId = await dataStore.startApplication(member.value, dataStore.isPension ? (String(route.query.type) === 'joint' ? 25 : 19) : undefined);
|
|
1503
1595
|
if (typeof taskId === 'string') {
|
|
1504
1596
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1505
1597
|
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
@@ -1523,6 +1615,13 @@ export default {
|
|
|
1523
1615
|
if (fileData.value && fileData.value.file) {
|
|
1524
1616
|
await uploadFile(formStore.applicationData.processInstanceId);
|
|
1525
1617
|
}
|
|
1618
|
+
if (additionalDocuments.value && additionalDocuments.value.length) {
|
|
1619
|
+
if (
|
|
1620
|
+
(!formStore.applicationData.isEnpfSum && formStore.applicationData?.pensionApp.transferContracts && formStore.applicationData?.pensionApp.transferContracts.length) ||
|
|
1621
|
+
(formStore.applicationData?.pensionApp.compulsoryProfMonthCount && formStore.applicationData?.pensionApp.compulsoryProfMonthCount >= 60)
|
|
1622
|
+
)
|
|
1623
|
+
await uploadAdditionalFiles(formStore.applicationData.processInstanceId);
|
|
1624
|
+
}
|
|
1526
1625
|
}
|
|
1527
1626
|
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value, whichIndex.value ? Number(whichIndex.value) : undefined);
|
|
1528
1627
|
if (typeof member.value.id !== 'number' || (typeof member.value.id === 'number' && member.value.id > 0 === false)) {
|
|
@@ -1546,30 +1645,43 @@ export default {
|
|
|
1546
1645
|
}
|
|
1547
1646
|
}
|
|
1548
1647
|
}
|
|
1549
|
-
if (
|
|
1648
|
+
if (
|
|
1649
|
+
whichForm.value === formStore.insuredFormKey ||
|
|
1650
|
+
(memberFromApplicaiton &&
|
|
1651
|
+
memberFromApplicaiton.processInstanceId &&
|
|
1652
|
+
formStore.applicationData.slave &&
|
|
1653
|
+
memberFromApplicaiton.processInstanceId === formStore.applicationData.slave.processInstanceId)
|
|
1654
|
+
) {
|
|
1550
1655
|
wasInsuredAction.value = true;
|
|
1551
1656
|
if (dataStore.isPension) {
|
|
1552
|
-
|
|
1657
|
+
let data = {
|
|
1553
1658
|
...formStore.applicationData.pensionApp,
|
|
1554
|
-
|
|
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,
|
|
1659
|
+
slave: formStore.applicationData.slave?.pensionApp ?? undefined,
|
|
1565
1660
|
};
|
|
1566
|
-
const
|
|
1567
|
-
|
|
1568
|
-
|
|
1661
|
+
const bankinfo = {
|
|
1662
|
+
account: member.value.bankInfo.iik ?? '',
|
|
1663
|
+
bankBik: member.value.bankInfo.bik ?? '',
|
|
1664
|
+
bankBin: member.value.bankInfo.bin ? String(member.value.bankInfo.bin).replaceAll('-', '') : '',
|
|
1665
|
+
bankId: Number(member.value.bankInfo.bankName.id) ?? 0,
|
|
1666
|
+
bankName: member.value.bankInfo.bankName.nameRu ?? '',
|
|
1569
1667
|
};
|
|
1668
|
+
if (route.query.tab === 'slaveInsuredForm') {
|
|
1669
|
+
data.slave = { ...data.slave, ...bankinfo };
|
|
1670
|
+
} else {
|
|
1671
|
+
data = { ...data, ...bankinfo };
|
|
1672
|
+
}
|
|
1673
|
+
const pensionKeysWithSpace = ['compulsoryContractAmount', 'compulsoryProfContractAmount', 'voluntaryContractAmount', 'ownFundsRaisAmount'];
|
|
1674
|
+
pensionKeysWithSpace.forEach(key => {
|
|
1675
|
+
if (/\s/g.test(data[key]) === true) data[key] = formatSpacedNumber(data[key]);
|
|
1676
|
+
});
|
|
1677
|
+
if (data.slave)
|
|
1678
|
+
pensionKeysWithSpace.forEach(key => {
|
|
1679
|
+
if (/\s/g.test(data.slave[key]) === true) data.slave[key] = formatSpacedNumber(data.slave[key]);
|
|
1680
|
+
});
|
|
1570
1681
|
const isApplicationSaved = await dataStore.setApplication(data);
|
|
1682
|
+
if (!isNewApplication) dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
|
|
1571
1683
|
if (isApplicationSaved === false) return;
|
|
1572
|
-
dataStore.
|
|
1684
|
+
await dataStore.saveMember(member.value, 'Client', memberFromApplicaiton);
|
|
1573
1685
|
}
|
|
1574
1686
|
}
|
|
1575
1687
|
await router.replace({
|
|
@@ -1608,6 +1720,7 @@ export default {
|
|
|
1608
1720
|
}
|
|
1609
1721
|
}
|
|
1610
1722
|
if (member.value.hasAgreement !== true) {
|
|
1723
|
+
if (isNonResident.value) return true;
|
|
1611
1724
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
1612
1725
|
return false;
|
|
1613
1726
|
}
|
|
@@ -1622,8 +1735,12 @@ export default {
|
|
|
1622
1735
|
isSubmittingForm.value = true;
|
|
1623
1736
|
const docType = member.value.documentType.ids;
|
|
1624
1737
|
if (
|
|
1738
|
+
!isNonResident.value &&
|
|
1625
1739
|
member.value.gotFromInsis === true &&
|
|
1626
|
-
(docType ===
|
|
1740
|
+
(docType === CoreEnums.Insis.DocTypes['1UDL'] ||
|
|
1741
|
+
docType === CoreEnums.Insis.DocTypes.SBI ||
|
|
1742
|
+
docType === CoreEnums.Insis.DocTypes.PS ||
|
|
1743
|
+
docType === CoreEnums.Insis.DocTypes.VNZ)
|
|
1627
1744
|
) {
|
|
1628
1745
|
dataStore.isLoading = true;
|
|
1629
1746
|
const docTypeCodes = {
|
|
@@ -1653,11 +1770,11 @@ export default {
|
|
|
1653
1770
|
isSubmittingForm.value = false;
|
|
1654
1771
|
return;
|
|
1655
1772
|
}
|
|
1656
|
-
if (formStore.
|
|
1657
|
-
formStore.
|
|
1658
|
-
formStore.
|
|
1659
|
-
formStore.
|
|
1660
|
-
formStore.
|
|
1773
|
+
if (formStore.pensionApp && whichForm.value === 'insuredForm') {
|
|
1774
|
+
formStore.pensionApp.account = member.value.bankInfo.iik;
|
|
1775
|
+
formStore.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1776
|
+
formStore.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1777
|
+
formStore.pensionApp.bankId = Number(member.value.bankInfo.bankName.id);
|
|
1661
1778
|
}
|
|
1662
1779
|
}
|
|
1663
1780
|
const hasMemberSaved = await saveMember();
|
|
@@ -1665,6 +1782,23 @@ export default {
|
|
|
1665
1782
|
dataStore.isLoading = false;
|
|
1666
1783
|
dataStore.showToaster('error', errorMessage, 5000);
|
|
1667
1784
|
}
|
|
1785
|
+
} else if (isNonResident.value) {
|
|
1786
|
+
if (member.value.bankInfo.iik.length === useMask().iik.length) {
|
|
1787
|
+
const isValidIik = await dataStore.checkAccountNumber(member.value.bankInfo.iik);
|
|
1788
|
+
if (isValidIik === false) {
|
|
1789
|
+
dataStore.showToaster('error', dataStore.t('error.notValidIik'));
|
|
1790
|
+
member.value.bankInfo.iik = '';
|
|
1791
|
+
isSubmittingForm.value = false;
|
|
1792
|
+
return;
|
|
1793
|
+
}
|
|
1794
|
+
if (formStore.pensionApp && whichForm.value === 'insuredForm') {
|
|
1795
|
+
formStore.pensionApp.account = member.value.bankInfo.iik;
|
|
1796
|
+
formStore.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1797
|
+
formStore.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1798
|
+
formStore.pensionApp.bankId = Number(member.value.bankInfo.bankName.id);
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
const hasMemberSaved = await saveMember();
|
|
1668
1802
|
} else {
|
|
1669
1803
|
member.value.gotFromInsis = true;
|
|
1670
1804
|
const hasMemberSaved = await saveMember();
|
|
@@ -1818,14 +1952,21 @@ export default {
|
|
|
1818
1952
|
}
|
|
1819
1953
|
if (!member.value.id) {
|
|
1820
1954
|
await router.replace({ query: { ...route.query, id: 0 } });
|
|
1955
|
+
if (dataStore.isPension) {
|
|
1956
|
+
switch (whichForm.value) {
|
|
1957
|
+
case formStore.insuredFormKey:
|
|
1958
|
+
setSignOfResidency();
|
|
1959
|
+
break;
|
|
1960
|
+
}
|
|
1961
|
+
}
|
|
1821
1962
|
} else {
|
|
1822
1963
|
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1823
1964
|
if (dataStore.isLifetrip) {
|
|
1824
1965
|
const documentByPriority = (() => {
|
|
1825
1966
|
if (whichForm.value !== formStore.policyholderFormKey || formStore.isPolicyholderInsured === true) {
|
|
1826
|
-
return member.value.documentsList.find(i => i.type ===
|
|
1967
|
+
return member.value.documentsList.find(i => i.type === CoreEnums.Insis.DocTypes.PS);
|
|
1827
1968
|
}
|
|
1828
|
-
return member.value.documentsList.find(i => i.type ===
|
|
1969
|
+
return member.value.documentsList.find(i => i.type === CoreEnums.Insis.DocTypes['1UDL']);
|
|
1829
1970
|
})();
|
|
1830
1971
|
const userDocument = documentByPriority ? documentByPriority : member.value.documentsList[0];
|
|
1831
1972
|
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === userDocument.type);
|
|
@@ -1836,12 +1977,10 @@ export default {
|
|
|
1836
1977
|
member.value.documentDate = reformatDate(userDocument.issueDate);
|
|
1837
1978
|
member.value.documentExpire = reformatDate(userDocument.expireDate);
|
|
1838
1979
|
}
|
|
1839
|
-
|
|
1840
1980
|
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1841
1981
|
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1842
1982
|
}
|
|
1843
1983
|
await setDefaultValues();
|
|
1844
|
-
if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
|
|
1845
1984
|
if (hasWorkPositionDict && member.value.positionCode === null) member.value.jobPosition = null;
|
|
1846
1985
|
};
|
|
1847
1986
|
onMounted(async () => {
|
|
@@ -1890,8 +2029,17 @@ export default {
|
|
|
1890
2029
|
},
|
|
1891
2030
|
);
|
|
1892
2031
|
|
|
2032
|
+
watch(
|
|
2033
|
+
() => member.value.registrationProvince,
|
|
2034
|
+
(val, oldVal) => {
|
|
2035
|
+
if (val.nameRu !== null && val.nameRu !== oldVal.nameRu && val.ids !== member.value.registrationCity.code) {
|
|
2036
|
+
member.value.registrationCity = new Value();
|
|
2037
|
+
}
|
|
2038
|
+
},
|
|
2039
|
+
);
|
|
2040
|
+
|
|
1893
2041
|
const onIinInput = () => {
|
|
1894
|
-
if (!!member.value.iin && member.value.iin.length === useMask().iin.length && memberSetting.value
|
|
2042
|
+
if (!!member.value.iin && member.value.iin.length === useMask().iin.length && memberSetting.value?.isMultiple === true) {
|
|
1895
2043
|
const alreadyInStatement = formStore[whichForm.value as MultipleMember].findIndex((i: Member) => i.iin === member.value.iin);
|
|
1896
2044
|
if (alreadyInStatement !== -1 && alreadyInStatement !== Number(whichIndex.value)) {
|
|
1897
2045
|
dataStore.showToaster('error', dataStore.t('toaster.hasAlreadyMember'), 3000);
|
|
@@ -1932,13 +2080,14 @@ export default {
|
|
|
1932
2080
|
watch(
|
|
1933
2081
|
() => member.value.age,
|
|
1934
2082
|
val => {
|
|
1935
|
-
if (val
|
|
1936
|
-
if (member.value.hasAgreement !== true) {
|
|
2083
|
+
if (val) {
|
|
2084
|
+
if (Number(val) >= 18 && member.value.hasAgreement !== true) {
|
|
1937
2085
|
member.value.hasAgreement = false;
|
|
2086
|
+
} else {
|
|
2087
|
+
member.value.hasAgreement = true;
|
|
1938
2088
|
}
|
|
1939
|
-
} else {
|
|
1940
|
-
member.value.hasAgreement = true;
|
|
1941
2089
|
}
|
|
2090
|
+
|
|
1942
2091
|
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1943
2092
|
},
|
|
1944
2093
|
{ immediate: true },
|
|
@@ -1954,15 +2103,35 @@ export default {
|
|
|
1954
2103
|
);
|
|
1955
2104
|
}
|
|
1956
2105
|
if (dataStore.isPension) {
|
|
1957
|
-
|
|
1958
|
-
(
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
2106
|
+
if (member.value.bankInfo) {
|
|
2107
|
+
watch(
|
|
2108
|
+
() => member.value.bankInfo.iik,
|
|
2109
|
+
async val => {
|
|
2110
|
+
if (val && val.length === 20) {
|
|
2111
|
+
if (
|
|
2112
|
+
route.query.tab === 'slaveInsuredForm'
|
|
2113
|
+
? formStore.insuredForm.some(i => i.bankInfo.iik === val)
|
|
2114
|
+
: formStore.applicationData.processCode === 25 && val === formStore.slaveInsuredForm.bankInfo.iik
|
|
2115
|
+
) {
|
|
2116
|
+
dataStore.showToaster('error', `ИИК: "${val}" уже имеется в заявке`);
|
|
2117
|
+
member.value.bankInfo = new BankInfoClass();
|
|
2118
|
+
return;
|
|
2119
|
+
}
|
|
2120
|
+
isButtonLoading.value = true;
|
|
2121
|
+
const bank = await dataStore.getBankByAccountNumber(val);
|
|
2122
|
+
if (bank) {
|
|
2123
|
+
member.value.bankInfo.bik = String(bank.code);
|
|
2124
|
+
member.value.bankInfo.bin = member.value.bankInfo.bankName.ids = reformatIin(String(bank.ids));
|
|
2125
|
+
member.value.bankInfo.bankName.nameRu = String(bank.nameRu);
|
|
2126
|
+
member.value.bankInfo.bankName.id = Number(bank.id);
|
|
2127
|
+
} else member.value.bankInfo = new BankInfoClass();
|
|
2128
|
+
isButtonLoading.value = false;
|
|
2129
|
+
} else if (!val) {
|
|
2130
|
+
member.value.bankInfo = new BankInfoClass();
|
|
2131
|
+
}
|
|
2132
|
+
},
|
|
2133
|
+
);
|
|
2134
|
+
}
|
|
1966
2135
|
watch(
|
|
1967
2136
|
() => member.value.isDisability,
|
|
1968
2137
|
val => {
|
|
@@ -1999,11 +2168,13 @@ export default {
|
|
|
1999
2168
|
familyDialog,
|
|
2000
2169
|
deletionDialog,
|
|
2001
2170
|
documentChooseDialog,
|
|
2171
|
+
fioChooseDialog,
|
|
2002
2172
|
selectedIndex,
|
|
2003
2173
|
selectedFamilyMember,
|
|
2004
2174
|
sameAddress,
|
|
2005
2175
|
isRelative,
|
|
2006
2176
|
imageDataList,
|
|
2177
|
+
contragents,
|
|
2007
2178
|
// Computed
|
|
2008
2179
|
whichForm,
|
|
2009
2180
|
whichIndex,
|
|
@@ -2013,7 +2184,6 @@ export default {
|
|
|
2013
2184
|
isDisabled,
|
|
2014
2185
|
isTask,
|
|
2015
2186
|
isIinPhoneDisabled,
|
|
2016
|
-
isFromGBD,
|
|
2017
2187
|
showSaveButton,
|
|
2018
2188
|
hasGBDFL,
|
|
2019
2189
|
hasInsis,
|
|
@@ -2025,10 +2195,13 @@ export default {
|
|
|
2025
2195
|
hasInsurancePay,
|
|
2026
2196
|
hasSignOfIPDL,
|
|
2027
2197
|
hasSameAddressToggle,
|
|
2198
|
+
hasIssuerOther,
|
|
2028
2199
|
hasMemberSearch,
|
|
2029
2200
|
hasWorkPositionDict,
|
|
2030
2201
|
gbdDocuments,
|
|
2031
2202
|
hasGBDFLDocSelection,
|
|
2203
|
+
isNonResident,
|
|
2204
|
+
isDataFromGov,
|
|
2032
2205
|
|
|
2033
2206
|
// Rules
|
|
2034
2207
|
ageRule,
|
|
@@ -2062,6 +2235,7 @@ export default {
|
|
|
2062
2235
|
searchPositions,
|
|
2063
2236
|
selectGbdDocument,
|
|
2064
2237
|
pickPosition,
|
|
2238
|
+
getContragentClick,
|
|
2065
2239
|
};
|
|
2066
2240
|
},
|
|
2067
2241
|
};
|