hl-core 0.0.10-beta.3 → 0.0.10-beta.31
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 +300 -190
- 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 +17 -8
- 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/TextInput.vue +2 -0
- package/components/Layout/Drawer.vue +2 -0
- package/components/Pages/Anketa.vue +166 -167
- package/components/Pages/Auth.vue +2 -0
- package/components/Pages/ContragentForm.vue +2 -1
- package/components/Pages/Documents.vue +429 -59
- package/components/Pages/MemberForm.vue +327 -159
- package/components/Pages/ProductConditions.vue +681 -150
- package/components/Panel/PanelHandler.vue +261 -114
- 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 +133 -42
- package/composables/constants.ts +41 -0
- package/composables/fields.ts +6 -4
- package/composables/index.ts +246 -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 +44 -14
- package/nuxt.config.ts +10 -13
- package/package.json +13 -12
- package/plugins/head.ts +2 -1
- package/store/data.store.ts +670 -480
- package/store/member.store.ts +18 -6
- package/store/rules.ts +21 -2
- package/tsconfig.json +3 -0
- package/types/enum.ts +20 -2
- package/types/env.d.ts +2 -2
- package/types/form.ts +71 -74
- package/types/index.ts +916 -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,7 +204,10 @@
|
|
|
199
204
|
:rules="$rules.required.concat($rules.numbers)"
|
|
200
205
|
/>
|
|
201
206
|
</base-form-section>
|
|
202
|
-
<base-form-section
|
|
207
|
+
<base-form-section
|
|
208
|
+
v-if="$dataStore.isPension && (whichForm === formStore.insuredFormKey || $route.query.tab === 'slaveInsuredForm')"
|
|
209
|
+
:title="$dataStore.t('pension.disabilityInfo')"
|
|
210
|
+
>
|
|
203
211
|
<base-form-toggle v-model="member.isDisability" :title="$dataStore.t('pension.ifHasDisability')" :disabled="isDisabled" :has-border="false" />
|
|
204
212
|
<base-animation>
|
|
205
213
|
<base-panel-input
|
|
@@ -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,37 @@ export default {
|
|
|
1546
1645
|
}
|
|
1547
1646
|
}
|
|
1548
1647
|
}
|
|
1549
|
-
if (whichForm.value === formStore.insuredFormKey) {
|
|
1648
|
+
if (whichForm.value === formStore.insuredFormKey || memberFromApplicaiton.processInstanceId === formStore.applicationData.slave?.processInstanceId) {
|
|
1550
1649
|
wasInsuredAction.value = true;
|
|
1551
1650
|
if (dataStore.isPension) {
|
|
1552
|
-
|
|
1651
|
+
let data = {
|
|
1553
1652
|
...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,
|
|
1653
|
+
slave: formStore.applicationData.slave?.pensionApp ?? undefined,
|
|
1565
1654
|
};
|
|
1566
|
-
const
|
|
1567
|
-
|
|
1568
|
-
|
|
1655
|
+
const bankinfo = {
|
|
1656
|
+
account: member.value.bankInfo.iik ?? '',
|
|
1657
|
+
bankBik: member.value.bankInfo.bik ?? '',
|
|
1658
|
+
bankBin: member.value.bankInfo.bin ? String(member.value.bankInfo.bin).replaceAll('-', '') : '',
|
|
1659
|
+
bankId: Number(member.value.bankInfo.bankName.id) ?? 0,
|
|
1660
|
+
bankName: member.value.bankInfo.bankName.nameRu ?? '',
|
|
1569
1661
|
};
|
|
1662
|
+
if (route.query.tab === 'slaveInsuredForm') {
|
|
1663
|
+
data.slave = { ...data.slave, ...bankinfo };
|
|
1664
|
+
} else {
|
|
1665
|
+
data = { ...data, ...bankinfo };
|
|
1666
|
+
}
|
|
1667
|
+
const pensionKeysWithSpace = ['compulsoryContractAmount', 'compulsoryProfContractAmount', 'voluntaryContractAmount', 'ownFundsRaisAmount'];
|
|
1668
|
+
pensionKeysWithSpace.forEach(key => {
|
|
1669
|
+
if (/\s/g.test(data[key]) === true) data[key] = formatSpacedNumber(data[key]);
|
|
1670
|
+
});
|
|
1671
|
+
if (data.slave)
|
|
1672
|
+
pensionKeysWithSpace.forEach(key => {
|
|
1673
|
+
if (/\s/g.test(data.slave[key]) === true) data.slave[key] = dataStore.getNumberWithSpaces(data.slave[key]);
|
|
1674
|
+
});
|
|
1570
1675
|
const isApplicationSaved = await dataStore.setApplication(data);
|
|
1676
|
+
if (!isNewApplication) dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
|
|
1571
1677
|
if (isApplicationSaved === false) return;
|
|
1572
|
-
dataStore.
|
|
1678
|
+
await dataStore.saveMember(member.value, 'Client', memberFromApplicaiton);
|
|
1573
1679
|
}
|
|
1574
1680
|
}
|
|
1575
1681
|
await router.replace({
|
|
@@ -1608,6 +1714,7 @@ export default {
|
|
|
1608
1714
|
}
|
|
1609
1715
|
}
|
|
1610
1716
|
if (member.value.hasAgreement !== true) {
|
|
1717
|
+
if (isNonResident.value) return true;
|
|
1611
1718
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
1612
1719
|
return false;
|
|
1613
1720
|
}
|
|
@@ -1622,8 +1729,12 @@ export default {
|
|
|
1622
1729
|
isSubmittingForm.value = true;
|
|
1623
1730
|
const docType = member.value.documentType.ids;
|
|
1624
1731
|
if (
|
|
1732
|
+
!isNonResident.value &&
|
|
1625
1733
|
member.value.gotFromInsis === true &&
|
|
1626
|
-
(docType ===
|
|
1734
|
+
(docType === CoreEnums.Insis.DocTypes['1UDL'] ||
|
|
1735
|
+
docType === CoreEnums.Insis.DocTypes.SBI ||
|
|
1736
|
+
docType === CoreEnums.Insis.DocTypes.PS ||
|
|
1737
|
+
docType === CoreEnums.Insis.DocTypes.VNZ)
|
|
1627
1738
|
) {
|
|
1628
1739
|
dataStore.isLoading = true;
|
|
1629
1740
|
const docTypeCodes = {
|
|
@@ -1653,11 +1764,11 @@ export default {
|
|
|
1653
1764
|
isSubmittingForm.value = false;
|
|
1654
1765
|
return;
|
|
1655
1766
|
}
|
|
1656
|
-
if (formStore.
|
|
1657
|
-
formStore.
|
|
1658
|
-
formStore.
|
|
1659
|
-
formStore.
|
|
1660
|
-
formStore.
|
|
1767
|
+
if (formStore.pensionApp && whichForm.value === 'insuredForm') {
|
|
1768
|
+
formStore.pensionApp.account = member.value.bankInfo.iik;
|
|
1769
|
+
formStore.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1770
|
+
formStore.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1771
|
+
formStore.pensionApp.bankId = Number(member.value.bankInfo.bankName.id);
|
|
1661
1772
|
}
|
|
1662
1773
|
}
|
|
1663
1774
|
const hasMemberSaved = await saveMember();
|
|
@@ -1665,6 +1776,23 @@ export default {
|
|
|
1665
1776
|
dataStore.isLoading = false;
|
|
1666
1777
|
dataStore.showToaster('error', errorMessage, 5000);
|
|
1667
1778
|
}
|
|
1779
|
+
} else if (isNonResident.value) {
|
|
1780
|
+
if (member.value.bankInfo.iik.length === useMask().iik.length) {
|
|
1781
|
+
const isValidIik = await dataStore.checkAccountNumber(member.value.bankInfo.iik);
|
|
1782
|
+
if (isValidIik === false) {
|
|
1783
|
+
dataStore.showToaster('error', dataStore.t('error.notValidIik'));
|
|
1784
|
+
member.value.bankInfo.iik = '';
|
|
1785
|
+
isSubmittingForm.value = false;
|
|
1786
|
+
return;
|
|
1787
|
+
}
|
|
1788
|
+
if (formStore.pensionApp && whichForm.value === 'insuredForm') {
|
|
1789
|
+
formStore.pensionApp.account = member.value.bankInfo.iik;
|
|
1790
|
+
formStore.pensionApp.bankBik = member.value.bankInfo.bik;
|
|
1791
|
+
formStore.pensionApp.bankBin = member.value.bankInfo.bin;
|
|
1792
|
+
formStore.pensionApp.bankId = Number(member.value.bankInfo.bankName.id);
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
const hasMemberSaved = await saveMember();
|
|
1668
1796
|
} else {
|
|
1669
1797
|
member.value.gotFromInsis = true;
|
|
1670
1798
|
const hasMemberSaved = await saveMember();
|
|
@@ -1818,14 +1946,21 @@ export default {
|
|
|
1818
1946
|
}
|
|
1819
1947
|
if (!member.value.id) {
|
|
1820
1948
|
await router.replace({ query: { ...route.query, id: 0 } });
|
|
1949
|
+
if (dataStore.isPension) {
|
|
1950
|
+
switch (whichForm.value) {
|
|
1951
|
+
case formStore.insuredFormKey:
|
|
1952
|
+
setSignOfResidency();
|
|
1953
|
+
break;
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1821
1956
|
} else {
|
|
1822
1957
|
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1823
1958
|
if (dataStore.isLifetrip) {
|
|
1824
1959
|
const documentByPriority = (() => {
|
|
1825
1960
|
if (whichForm.value !== formStore.policyholderFormKey || formStore.isPolicyholderInsured === true) {
|
|
1826
|
-
return member.value.documentsList.find(i => i.type ===
|
|
1961
|
+
return member.value.documentsList.find(i => i.type === CoreEnums.Insis.DocTypes.PS);
|
|
1827
1962
|
}
|
|
1828
|
-
return member.value.documentsList.find(i => i.type ===
|
|
1963
|
+
return member.value.documentsList.find(i => i.type === CoreEnums.Insis.DocTypes['1UDL']);
|
|
1829
1964
|
})();
|
|
1830
1965
|
const userDocument = documentByPriority ? documentByPriority : member.value.documentsList[0];
|
|
1831
1966
|
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === userDocument.type);
|
|
@@ -1836,12 +1971,10 @@ export default {
|
|
|
1836
1971
|
member.value.documentDate = reformatDate(userDocument.issueDate);
|
|
1837
1972
|
member.value.documentExpire = reformatDate(userDocument.expireDate);
|
|
1838
1973
|
}
|
|
1839
|
-
|
|
1840
1974
|
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1841
1975
|
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1842
1976
|
}
|
|
1843
1977
|
await setDefaultValues();
|
|
1844
|
-
if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
|
|
1845
1978
|
if (hasWorkPositionDict && member.value.positionCode === null) member.value.jobPosition = null;
|
|
1846
1979
|
};
|
|
1847
1980
|
onMounted(async () => {
|
|
@@ -1890,8 +2023,17 @@ export default {
|
|
|
1890
2023
|
},
|
|
1891
2024
|
);
|
|
1892
2025
|
|
|
2026
|
+
watch(
|
|
2027
|
+
() => member.value.registrationProvince,
|
|
2028
|
+
(val, oldVal) => {
|
|
2029
|
+
if (val.nameRu !== null && val.nameRu !== oldVal.nameRu && val.ids !== member.value.registrationCity.code) {
|
|
2030
|
+
member.value.registrationCity = new Value();
|
|
2031
|
+
}
|
|
2032
|
+
},
|
|
2033
|
+
);
|
|
2034
|
+
|
|
1893
2035
|
const onIinInput = () => {
|
|
1894
|
-
if (!!member.value.iin && member.value.iin.length === useMask().iin.length && memberSetting.value
|
|
2036
|
+
if (!!member.value.iin && member.value.iin.length === useMask().iin.length && memberSetting.value?.isMultiple === true) {
|
|
1895
2037
|
const alreadyInStatement = formStore[whichForm.value as MultipleMember].findIndex((i: Member) => i.iin === member.value.iin);
|
|
1896
2038
|
if (alreadyInStatement !== -1 && alreadyInStatement !== Number(whichIndex.value)) {
|
|
1897
2039
|
dataStore.showToaster('error', dataStore.t('toaster.hasAlreadyMember'), 3000);
|
|
@@ -1932,13 +2074,14 @@ export default {
|
|
|
1932
2074
|
watch(
|
|
1933
2075
|
() => member.value.age,
|
|
1934
2076
|
val => {
|
|
1935
|
-
if (val
|
|
1936
|
-
if (member.value.hasAgreement !== true) {
|
|
2077
|
+
if (val) {
|
|
2078
|
+
if (Number(val) >= 18 && member.value.hasAgreement !== true) {
|
|
1937
2079
|
member.value.hasAgreement = false;
|
|
2080
|
+
} else {
|
|
2081
|
+
member.value.hasAgreement = true;
|
|
1938
2082
|
}
|
|
1939
|
-
} else {
|
|
1940
|
-
member.value.hasAgreement = true;
|
|
1941
2083
|
}
|
|
2084
|
+
|
|
1942
2085
|
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1943
2086
|
},
|
|
1944
2087
|
{ immediate: true },
|
|
@@ -1954,15 +2097,35 @@ export default {
|
|
|
1954
2097
|
);
|
|
1955
2098
|
}
|
|
1956
2099
|
if (dataStore.isPension) {
|
|
1957
|
-
|
|
1958
|
-
(
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
2100
|
+
if (member.value.bankInfo) {
|
|
2101
|
+
watch(
|
|
2102
|
+
() => member.value.bankInfo.iik,
|
|
2103
|
+
async val => {
|
|
2104
|
+
if (val && val.length === 20) {
|
|
2105
|
+
if (
|
|
2106
|
+
route.query.tab === 'slaveInsuredForm'
|
|
2107
|
+
? formStore.insuredForm.some(i => i.bankInfo.iik === val)
|
|
2108
|
+
: formStore.applicationData.processCode === 25 && val === formStore.slaveInsuredForm.bankInfo.iik
|
|
2109
|
+
) {
|
|
2110
|
+
dataStore.showToaster('error', `ИИК: "${val}" уже имеется в заявке`);
|
|
2111
|
+
member.value.bankInfo = new BankInfoClass();
|
|
2112
|
+
return;
|
|
2113
|
+
}
|
|
2114
|
+
isButtonLoading.value = true;
|
|
2115
|
+
const bank = await dataStore.getBankByAccountNumber(val);
|
|
2116
|
+
if (bank) {
|
|
2117
|
+
member.value.bankInfo.bik = String(bank.code);
|
|
2118
|
+
member.value.bankInfo.bin = member.value.bankInfo.bankName.ids = reformatIin(String(bank.ids));
|
|
2119
|
+
member.value.bankInfo.bankName.nameRu = String(bank.nameRu);
|
|
2120
|
+
member.value.bankInfo.bankName.id = Number(bank.id);
|
|
2121
|
+
} else member.value.bankInfo = new BankInfoClass();
|
|
2122
|
+
isButtonLoading.value = false;
|
|
2123
|
+
} else if (!val) {
|
|
2124
|
+
member.value.bankInfo = new BankInfoClass();
|
|
2125
|
+
}
|
|
2126
|
+
},
|
|
2127
|
+
);
|
|
2128
|
+
}
|
|
1966
2129
|
watch(
|
|
1967
2130
|
() => member.value.isDisability,
|
|
1968
2131
|
val => {
|
|
@@ -1999,11 +2162,13 @@ export default {
|
|
|
1999
2162
|
familyDialog,
|
|
2000
2163
|
deletionDialog,
|
|
2001
2164
|
documentChooseDialog,
|
|
2165
|
+
fioChooseDialog,
|
|
2002
2166
|
selectedIndex,
|
|
2003
2167
|
selectedFamilyMember,
|
|
2004
2168
|
sameAddress,
|
|
2005
2169
|
isRelative,
|
|
2006
2170
|
imageDataList,
|
|
2171
|
+
contragents,
|
|
2007
2172
|
// Computed
|
|
2008
2173
|
whichForm,
|
|
2009
2174
|
whichIndex,
|
|
@@ -2013,7 +2178,6 @@ export default {
|
|
|
2013
2178
|
isDisabled,
|
|
2014
2179
|
isTask,
|
|
2015
2180
|
isIinPhoneDisabled,
|
|
2016
|
-
isFromGBD,
|
|
2017
2181
|
showSaveButton,
|
|
2018
2182
|
hasGBDFL,
|
|
2019
2183
|
hasInsis,
|
|
@@ -2025,10 +2189,13 @@ export default {
|
|
|
2025
2189
|
hasInsurancePay,
|
|
2026
2190
|
hasSignOfIPDL,
|
|
2027
2191
|
hasSameAddressToggle,
|
|
2192
|
+
hasIssuerOther,
|
|
2028
2193
|
hasMemberSearch,
|
|
2029
2194
|
hasWorkPositionDict,
|
|
2030
2195
|
gbdDocuments,
|
|
2031
2196
|
hasGBDFLDocSelection,
|
|
2197
|
+
isNonResident,
|
|
2198
|
+
isDataFromGov,
|
|
2032
2199
|
|
|
2033
2200
|
// Rules
|
|
2034
2201
|
ageRule,
|
|
@@ -2062,6 +2229,7 @@ export default {
|
|
|
2062
2229
|
searchPositions,
|
|
2063
2230
|
selectGbdDocument,
|
|
2064
2231
|
pickPosition,
|
|
2232
|
+
getContragentClick,
|
|
2065
2233
|
};
|
|
2066
2234
|
},
|
|
2067
2235
|
};
|