hl-core 0.0.10-beta.5 → 0.0.10-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/api/base.api.ts +327 -137
- package/api/interceptors.ts +3 -5
- package/components/Dialog/Dialog.vue +5 -1
- package/components/Form/DigitalDocument.vue +52 -0
- package/components/Form/FormSource.vue +30 -0
- package/components/Form/ManagerAttachment.vue +60 -11
- package/components/Form/ProductConditionsBlock.vue +12 -6
- package/components/Input/Datepicker.vue +5 -0
- package/components/Input/FileInput.vue +1 -1
- package/components/Input/FormInput.vue +5 -0
- package/components/Input/OtpInput.vue +25 -0
- package/components/Input/RoundedInput.vue +2 -0
- package/components/Input/RoundedSelect.vue +2 -0
- package/components/Input/TextAreaField.vue +71 -0
- package/components/Menu/MenuNav.vue +1 -1
- package/components/Pages/Anketa.vue +207 -176
- package/components/Pages/ContragentForm.vue +1 -1
- package/components/Pages/Documents.vue +436 -64
- package/components/Pages/MemberForm.vue +343 -170
- package/components/Pages/ProductConditions.vue +895 -241
- package/components/Panel/PanelHandler.vue +282 -124
- package/components/Utilities/Chip.vue +1 -1
- package/components/Utilities/JsonViewer.vue +1 -2
- package/composables/classes.ts +121 -20
- package/composables/constants.ts +45 -1
- package/composables/index.ts +333 -8
- 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 +82 -19
- package/nuxt.config.ts +10 -12
- package/package.json +12 -12
- package/plugins/head.ts +7 -1
- package/store/data.store.ts +867 -525
- package/store/member.store.ts +17 -6
- package/store/rules.ts +23 -3
- package/types/enum.ts +40 -2
- package/types/index.ts +110 -56
|
@@ -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"
|
|
@@ -331,10 +339,10 @@
|
|
|
331
339
|
v-if="hasWorkPositionDict"
|
|
332
340
|
v-model.trim="member.jobPosition"
|
|
333
341
|
:label="$dataStore.t('form.jobPosition')"
|
|
334
|
-
:readonly="isDisabled || member.positionCode !== 'other'"
|
|
335
342
|
:clearable="!isDisabled"
|
|
336
343
|
:rules="$rules.required"
|
|
337
344
|
append-inner-icon="mdi-chevron-right"
|
|
345
|
+
readonly
|
|
338
346
|
@click="openCustomPanel('workPosition')"
|
|
339
347
|
/>
|
|
340
348
|
<base-form-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"
|
|
@@ -696,24 +702,22 @@
|
|
|
696
702
|
</Teleport>
|
|
697
703
|
<Teleport v-if="isDocumentOpen" to="#right-panel-actions">
|
|
698
704
|
<div :class="[$styles.flexColNav]">
|
|
699
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="
|
|
700
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="
|
|
705
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getDoc('view')" />
|
|
706
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getDoc('download')" />
|
|
701
707
|
</div>
|
|
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>
|
|
@@ -745,7 +749,7 @@
|
|
|
745
749
|
/>
|
|
746
750
|
</div>
|
|
747
751
|
<div v-if="searchQuery && positionsList !== null && !positionsList.length && isPanelLoading === false" class="w-full flex flex-col items-center gap-2 px-2">
|
|
748
|
-
<base-btn :text="$dataStore.t('buttons.add')" @click="pickPosition({ workPositionName: searchQuery, workPositionCode: 'other' })" />
|
|
752
|
+
<!-- <base-btn :text="$dataStore.t('buttons.add')" @click="pickPosition({ workPositionName: searchQuery, workPositionCode: 'other' })" /> -->
|
|
749
753
|
<span :class="[$styles.mutedText]">{{ $dataStore.t('toaster.notFound') }}</span>
|
|
750
754
|
</div>
|
|
751
755
|
</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,8 +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,
|
|
794
|
-
import type { Api, Dicts, ESBDValidationType, FileActions, MultipleMember } from '../../types';
|
|
818
|
+
import { StoreMembers, CoreEnums } from '../../types/enum';
|
|
819
|
+
import type { Api, ContragentType, Dicts, ESBDValidationType, FileActions, MultipleMember } from '../../types';
|
|
795
820
|
|
|
796
821
|
export default {
|
|
797
822
|
setup() {
|
|
@@ -803,7 +828,8 @@ export default {
|
|
|
803
828
|
const memberStore = useMemberStore();
|
|
804
829
|
const whichForm = computed(() => route.query.tab as keyof typeof StoreMembers);
|
|
805
830
|
const whichIndex = computed(() => route.query.i as string);
|
|
806
|
-
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))!;
|
|
807
833
|
const member = ref(getMember(whichForm.value, whichIndex.value));
|
|
808
834
|
const selectedFamilyMember = ref<Api.GKB.BirthInfo>({});
|
|
809
835
|
const isPanelOpen = ref<boolean>(false);
|
|
@@ -818,9 +844,12 @@ export default {
|
|
|
818
844
|
const isPositionPanelOpen = ref<boolean>(false);
|
|
819
845
|
const isPanelLoading = ref<boolean>(false);
|
|
820
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);
|
|
821
849
|
const familyDialog = ref<boolean>(false);
|
|
822
850
|
const deletionDialog = ref<boolean>(false);
|
|
823
851
|
const documentChooseDialog = ref<boolean>(false);
|
|
852
|
+
const fioChooseDialog = ref<boolean>(false);
|
|
824
853
|
const selectedIndex = ref<number>(0);
|
|
825
854
|
const sameAddress = ref<boolean>(false);
|
|
826
855
|
const panelValue = ref<Value>(new Value());
|
|
@@ -831,6 +860,8 @@ export default {
|
|
|
831
860
|
const fileData = ref<{ file: any }>();
|
|
832
861
|
const imageDataList = ref<string[]>([]);
|
|
833
862
|
const isRelative = ref<boolean>(false);
|
|
863
|
+
const additionalDocuments = ref<any[]>([]);
|
|
864
|
+
const contragents = ref<ContragentType[]>([]);
|
|
834
865
|
|
|
835
866
|
const currentPanelDeep = ref<string>();
|
|
836
867
|
const currentPanelSubDeep = ref<string>();
|
|
@@ -840,7 +871,6 @@ export default {
|
|
|
840
871
|
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value));
|
|
841
872
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
842
873
|
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
843
|
-
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
844
874
|
const gbdDocuments = computed(() => {
|
|
845
875
|
if (hasGBDFLDocSelection && !!member.value.gosPersonData && !!member.value.gosPersonData.documents) {
|
|
846
876
|
const documents = Array.isArray(member.value.gosPersonData.documents.document)
|
|
@@ -866,6 +896,7 @@ export default {
|
|
|
866
896
|
case formStore.policyholdersRepresentativeFormKey:
|
|
867
897
|
return route.params.taskId !== '0';
|
|
868
898
|
default:
|
|
899
|
+
if (route.query.tab === 'slaveInsuredForm') return true;
|
|
869
900
|
return false;
|
|
870
901
|
}
|
|
871
902
|
};
|
|
@@ -902,7 +933,7 @@ export default {
|
|
|
902
933
|
};
|
|
903
934
|
return dataStore.isAULETTI || dataStore.isAulettiParent ? false : dataStore.controls.hasGBDFL && perMemberCondition();
|
|
904
935
|
});
|
|
905
|
-
const hasGBDFLDocSelection = dataStore.isLifetrip
|
|
936
|
+
const hasGBDFLDocSelection = dataStore.isLifetrip;
|
|
906
937
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
907
938
|
const hasGKB = computed(() => {
|
|
908
939
|
const perMemberCondition = () => {
|
|
@@ -973,7 +1004,8 @@ export default {
|
|
|
973
1004
|
(whichForm.value === formStore.beneficiaryFormKey && member.value.iin !== formStore.policyholderForm.iin) ||
|
|
974
1005
|
(dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage),
|
|
975
1006
|
);
|
|
976
|
-
const hasWorkPositionDict =
|
|
1007
|
+
const hasWorkPositionDict = dataStore.isBaiterek;
|
|
1008
|
+
const hasIssuerOther = computed(() => (useEnv().isProduction ? dataStore.isPension : true) && member.value.documentIssuers && member.value.documentIssuers.nameRu === 'Другое');
|
|
977
1009
|
|
|
978
1010
|
const birthDateRule = computed(() => {
|
|
979
1011
|
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
@@ -1048,16 +1080,18 @@ export default {
|
|
|
1048
1080
|
});
|
|
1049
1081
|
|
|
1050
1082
|
const getOtpConditionByMember = () => {
|
|
1051
|
-
|
|
1083
|
+
const which = whichForm.value as keyof typeof StoreMembers | 'slaveInsuredForm';
|
|
1084
|
+
switch (which) {
|
|
1052
1085
|
case formStore.policyholderFormKey:
|
|
1053
1086
|
return route.params.taskId === '0';
|
|
1054
1087
|
case formStore.insuredFormKey:
|
|
1055
|
-
|
|
1056
|
-
return route.query.id === '0';
|
|
1088
|
+
case 'slaveInsuredForm':
|
|
1057
1089
|
case formStore.policyholdersRepresentativeFormKey:
|
|
1058
1090
|
case formStore.beneficiaryFormKey:
|
|
1059
1091
|
case formStore.beneficialOwnerFormKey:
|
|
1060
1092
|
return route.query.id === '0';
|
|
1093
|
+
default:
|
|
1094
|
+
return dataStore.isPension && route.query.id === '0' && formStore.applicationData.processCode === 24;
|
|
1061
1095
|
}
|
|
1062
1096
|
};
|
|
1063
1097
|
const otpCondition = computed(() => {
|
|
@@ -1066,6 +1100,7 @@ export default {
|
|
|
1066
1100
|
if (whichForm.value === formStore.beneficiaryFormKey && member.value.age !== null && Number(member.value.age) < 18) return false;
|
|
1067
1101
|
if (dataStore.isLifetrip && whichForm.value === formStore.insuredFormKey && member.value.isInsuredUnderage) return false;
|
|
1068
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;
|
|
1069
1104
|
return getOtpConditionByMember();
|
|
1070
1105
|
});
|
|
1071
1106
|
|
|
@@ -1085,6 +1120,10 @@ export default {
|
|
|
1085
1120
|
};
|
|
1086
1121
|
|
|
1087
1122
|
const searchPositions = async () => {
|
|
1123
|
+
if (searchQuery.value.length < 4) {
|
|
1124
|
+
dataStore.showToaster('error', dataStore.t('rules.searchQueryLen', { len: 4 }));
|
|
1125
|
+
return;
|
|
1126
|
+
}
|
|
1088
1127
|
if (!isDisabled.value) {
|
|
1089
1128
|
isPanelLoading.value = true;
|
|
1090
1129
|
positionsList.value = await dataStore.getWorkPosition(searchQuery.value);
|
|
@@ -1123,6 +1162,7 @@ export default {
|
|
|
1123
1162
|
isPositionPanelOpen.value = false;
|
|
1124
1163
|
}
|
|
1125
1164
|
if (type === 'workPosition') {
|
|
1165
|
+
dataStore.rightPanel.title = dataStore.t('form.jobPosition');
|
|
1126
1166
|
isPositionPanelOpen.value = true;
|
|
1127
1167
|
isOtpPanelOpen.value = false;
|
|
1128
1168
|
isDocumentOpen.value = false;
|
|
@@ -1252,12 +1292,35 @@ export default {
|
|
|
1252
1292
|
}
|
|
1253
1293
|
};
|
|
1254
1294
|
|
|
1255
|
-
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) => {
|
|
1256
1319
|
if (event.target) {
|
|
1257
|
-
fileData.value =
|
|
1320
|
+
fileData.value = { file: (event.target as HTMLInputElement).files };
|
|
1258
1321
|
} else {
|
|
1259
1322
|
if (event.dataTransfer) {
|
|
1260
|
-
fileData.value =
|
|
1323
|
+
fileData.value = { file: (event.dataTransfer as DataTransfer).files };
|
|
1261
1324
|
}
|
|
1262
1325
|
}
|
|
1263
1326
|
};
|
|
@@ -1326,7 +1389,7 @@ export default {
|
|
|
1326
1389
|
if (parsedDocument.middleName) member.value.middleName = parsedDocument.middleName;
|
|
1327
1390
|
if (parsedDocument.fullName) member.value.longName = parsedDocument.fullName;
|
|
1328
1391
|
if (parsedDocument.documentName && parsedDocument.documentName.startsWith('Kazakhstan - Id Card')) {
|
|
1329
|
-
const documentType = dataStore.documentTypes.find((i: Value) => i.ids ===
|
|
1392
|
+
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === CoreEnums.Insis.DocTypes['1UDL']);
|
|
1330
1393
|
if (documentType) member.value.documentType = documentType;
|
|
1331
1394
|
}
|
|
1332
1395
|
if (!!parsedDocument.documentIssuer) {
|
|
@@ -1351,11 +1414,11 @@ export default {
|
|
|
1351
1414
|
}
|
|
1352
1415
|
};
|
|
1353
1416
|
|
|
1354
|
-
const
|
|
1417
|
+
const getDoc = async (type: FileActions) => {
|
|
1355
1418
|
if (memberDocument.value) {
|
|
1356
1419
|
documentLoading.value = true;
|
|
1357
1420
|
const fileExtension = memberDocument.value.fileName!.match(/\.([0-9a-z]+)(?:[\?#]|$)/i)![1];
|
|
1358
|
-
await dataStore.
|
|
1421
|
+
await dataStore.getDoc(memberDocument.value, type, fileExtension);
|
|
1359
1422
|
documentLoading.value = false;
|
|
1360
1423
|
}
|
|
1361
1424
|
};
|
|
@@ -1430,7 +1493,9 @@ export default {
|
|
|
1430
1493
|
|
|
1431
1494
|
const selectGbdDocument = (document: Api.GBD.Document) => {
|
|
1432
1495
|
if (document) {
|
|
1433
|
-
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
|
+
);
|
|
1434
1499
|
if (documentType) member.value.documentType = documentType;
|
|
1435
1500
|
const documentNumber = document.number;
|
|
1436
1501
|
if (documentNumber) member.value.documentNumber = documentNumber;
|
|
@@ -1447,21 +1512,46 @@ export default {
|
|
|
1447
1512
|
isSearchOpen.value = false;
|
|
1448
1513
|
};
|
|
1449
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
|
+
|
|
1450
1524
|
const getContragent = async () => {
|
|
1451
|
-
if (
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
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
|
+
}
|
|
1462
1545
|
}
|
|
1463
1546
|
isButtonLoading.value = true;
|
|
1464
|
-
|
|
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
|
+
}
|
|
1465
1555
|
isButtonLoading.value = false;
|
|
1466
1556
|
dataStore.rightPanel.open = false;
|
|
1467
1557
|
isSearchOpen.value = false;
|
|
@@ -1497,10 +1587,11 @@ export default {
|
|
|
1497
1587
|
}
|
|
1498
1588
|
const isInsured = formStore.isPolicyholderInsured;
|
|
1499
1589
|
const remoteIsInsured = ref<boolean | null>(null);
|
|
1590
|
+
const isNewApplication = route.params.taskId === '0';
|
|
1500
1591
|
if (whichForm.value == formStore.policyholderFormKey || (dataStore.isPension && whichForm.value == formStore.insuredFormKey)) {
|
|
1501
1592
|
if (route.params.taskId === '0') {
|
|
1502
1593
|
try {
|
|
1503
|
-
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);
|
|
1504
1595
|
if (typeof taskId === 'string') {
|
|
1505
1596
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1506
1597
|
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
@@ -1524,6 +1615,13 @@ export default {
|
|
|
1524
1615
|
if (fileData.value && fileData.value.file) {
|
|
1525
1616
|
await uploadFile(formStore.applicationData.processInstanceId);
|
|
1526
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
|
+
}
|
|
1527
1625
|
}
|
|
1528
1626
|
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value, whichIndex.value ? Number(whichIndex.value) : undefined);
|
|
1529
1627
|
if (typeof member.value.id !== 'number' || (typeof member.value.id === 'number' && member.value.id > 0 === false)) {
|
|
@@ -1547,30 +1645,43 @@ export default {
|
|
|
1547
1645
|
}
|
|
1548
1646
|
}
|
|
1549
1647
|
}
|
|
1550
|
-
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
|
+
) {
|
|
1551
1655
|
wasInsuredAction.value = true;
|
|
1552
1656
|
if (dataStore.isPension) {
|
|
1553
|
-
|
|
1657
|
+
let data = {
|
|
1554
1658
|
...formStore.applicationData.pensionApp,
|
|
1555
|
-
|
|
1556
|
-
bankBik: member.value.bankInfo.bik,
|
|
1557
|
-
bankBin: member.value.bankInfo.bankName.ids,
|
|
1558
|
-
bankId: member.value.bankInfo.bankName.id,
|
|
1559
|
-
bankName: member.value.bankInfo.bankName.nameRu,
|
|
1560
|
-
guaranteedPeriod: 0,
|
|
1561
|
-
amount: 0,
|
|
1562
|
-
compulsoryContractAmount: 0,
|
|
1563
|
-
voluntaryContractAmount: 0,
|
|
1564
|
-
ownFundsRaisAmount: 0,
|
|
1565
|
-
compulsoryProfContractAmount: 0,
|
|
1659
|
+
slave: formStore.applicationData.slave?.pensionApp ?? undefined,
|
|
1566
1660
|
};
|
|
1567
|
-
const
|
|
1568
|
-
|
|
1569
|
-
|
|
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 ?? '',
|
|
1570
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
|
+
});
|
|
1571
1681
|
const isApplicationSaved = await dataStore.setApplication(data);
|
|
1682
|
+
if (!isNewApplication) dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
|
|
1572
1683
|
if (isApplicationSaved === false) return;
|
|
1573
|
-
dataStore.
|
|
1684
|
+
await dataStore.saveMember(member.value, 'Client', memberFromApplicaiton);
|
|
1574
1685
|
}
|
|
1575
1686
|
}
|
|
1576
1687
|
await router.replace({
|
|
@@ -1609,6 +1720,7 @@ export default {
|
|
|
1609
1720
|
}
|
|
1610
1721
|
}
|
|
1611
1722
|
if (member.value.hasAgreement !== true) {
|
|
1723
|
+
if (isNonResident.value) return true;
|
|
1612
1724
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
1613
1725
|
return false;
|
|
1614
1726
|
}
|
|
@@ -1623,13 +1735,17 @@ export default {
|
|
|
1623
1735
|
isSubmittingForm.value = true;
|
|
1624
1736
|
const docType = member.value.documentType.ids;
|
|
1625
1737
|
if (
|
|
1738
|
+
!isNonResident.value &&
|
|
1626
1739
|
member.value.gotFromInsis === true &&
|
|
1627
|
-
(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)
|
|
1628
1744
|
) {
|
|
1629
1745
|
dataStore.isLoading = true;
|
|
1630
1746
|
const docTypeCodes = {
|
|
1631
1747
|
'1UDL': 1,
|
|
1632
|
-
PS:
|
|
1748
|
+
PS: 11,
|
|
1633
1749
|
SBI: 3,
|
|
1634
1750
|
VNZ: 4,
|
|
1635
1751
|
};
|
|
@@ -1654,11 +1770,11 @@ export default {
|
|
|
1654
1770
|
isSubmittingForm.value = false;
|
|
1655
1771
|
return;
|
|
1656
1772
|
}
|
|
1657
|
-
if (formStore.
|
|
1658
|
-
formStore.
|
|
1659
|
-
formStore.
|
|
1660
|
-
formStore.
|
|
1661
|
-
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);
|
|
1662
1778
|
}
|
|
1663
1779
|
}
|
|
1664
1780
|
const hasMemberSaved = await saveMember();
|
|
@@ -1666,6 +1782,23 @@ export default {
|
|
|
1666
1782
|
dataStore.isLoading = false;
|
|
1667
1783
|
dataStore.showToaster('error', errorMessage, 5000);
|
|
1668
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();
|
|
1669
1802
|
} else {
|
|
1670
1803
|
member.value.gotFromInsis = true;
|
|
1671
1804
|
const hasMemberSaved = await saveMember();
|
|
@@ -1819,14 +1952,21 @@ export default {
|
|
|
1819
1952
|
}
|
|
1820
1953
|
if (!member.value.id) {
|
|
1821
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
|
+
}
|
|
1822
1962
|
} else {
|
|
1823
1963
|
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1824
1964
|
if (dataStore.isLifetrip) {
|
|
1825
1965
|
const documentByPriority = (() => {
|
|
1826
1966
|
if (whichForm.value !== formStore.policyholderFormKey || formStore.isPolicyholderInsured === true) {
|
|
1827
|
-
return member.value.documentsList.find(i => i.type ===
|
|
1967
|
+
return member.value.documentsList.find(i => i.type === CoreEnums.Insis.DocTypes.PS);
|
|
1828
1968
|
}
|
|
1829
|
-
return member.value.documentsList.find(i => i.type ===
|
|
1969
|
+
return member.value.documentsList.find(i => i.type === CoreEnums.Insis.DocTypes['1UDL']);
|
|
1830
1970
|
})();
|
|
1831
1971
|
const userDocument = documentByPriority ? documentByPriority : member.value.documentsList[0];
|
|
1832
1972
|
const documentType = dataStore.documentTypes.find((i: Value) => i.ids === userDocument.type);
|
|
@@ -1837,12 +1977,10 @@ export default {
|
|
|
1837
1977
|
member.value.documentDate = reformatDate(userDocument.issueDate);
|
|
1838
1978
|
member.value.documentExpire = reformatDate(userDocument.expireDate);
|
|
1839
1979
|
}
|
|
1840
|
-
|
|
1841
|
-
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1980
|
+
// const filteredDocuments: DocumentItem[] = dataStore.getDocsByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1842
1981
|
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1843
1982
|
}
|
|
1844
1983
|
await setDefaultValues();
|
|
1845
|
-
if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
|
|
1846
1984
|
if (hasWorkPositionDict && member.value.positionCode === null) member.value.jobPosition = null;
|
|
1847
1985
|
};
|
|
1848
1986
|
onMounted(async () => {
|
|
@@ -1891,8 +2029,17 @@ export default {
|
|
|
1891
2029
|
},
|
|
1892
2030
|
);
|
|
1893
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
|
+
|
|
1894
2041
|
const onIinInput = () => {
|
|
1895
|
-
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) {
|
|
1896
2043
|
const alreadyInStatement = formStore[whichForm.value as MultipleMember].findIndex((i: Member) => i.iin === member.value.iin);
|
|
1897
2044
|
if (alreadyInStatement !== -1 && alreadyInStatement !== Number(whichIndex.value)) {
|
|
1898
2045
|
dataStore.showToaster('error', dataStore.t('toaster.hasAlreadyMember'), 3000);
|
|
@@ -1933,13 +2080,14 @@ export default {
|
|
|
1933
2080
|
watch(
|
|
1934
2081
|
() => member.value.age,
|
|
1935
2082
|
val => {
|
|
1936
|
-
if (val
|
|
1937
|
-
if (member.value.hasAgreement !== true) {
|
|
2083
|
+
if (val) {
|
|
2084
|
+
if (Number(val) >= 18 && member.value.hasAgreement !== true) {
|
|
1938
2085
|
member.value.hasAgreement = false;
|
|
2086
|
+
} else {
|
|
2087
|
+
member.value.hasAgreement = true;
|
|
1939
2088
|
}
|
|
1940
|
-
} else {
|
|
1941
|
-
member.value.hasAgreement = true;
|
|
1942
2089
|
}
|
|
2090
|
+
|
|
1943
2091
|
member.value.isInsuredUnderage = Number(val) >= 18 ? false : true;
|
|
1944
2092
|
},
|
|
1945
2093
|
{ immediate: true },
|
|
@@ -1955,15 +2103,35 @@ export default {
|
|
|
1955
2103
|
);
|
|
1956
2104
|
}
|
|
1957
2105
|
if (dataStore.isPension) {
|
|
1958
|
-
|
|
1959
|
-
(
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
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
|
+
}
|
|
1967
2135
|
watch(
|
|
1968
2136
|
() => member.value.isDisability,
|
|
1969
2137
|
val => {
|
|
@@ -2000,11 +2168,13 @@ export default {
|
|
|
2000
2168
|
familyDialog,
|
|
2001
2169
|
deletionDialog,
|
|
2002
2170
|
documentChooseDialog,
|
|
2171
|
+
fioChooseDialog,
|
|
2003
2172
|
selectedIndex,
|
|
2004
2173
|
selectedFamilyMember,
|
|
2005
2174
|
sameAddress,
|
|
2006
2175
|
isRelative,
|
|
2007
2176
|
imageDataList,
|
|
2177
|
+
contragents,
|
|
2008
2178
|
// Computed
|
|
2009
2179
|
whichForm,
|
|
2010
2180
|
whichIndex,
|
|
@@ -2014,7 +2184,6 @@ export default {
|
|
|
2014
2184
|
isDisabled,
|
|
2015
2185
|
isTask,
|
|
2016
2186
|
isIinPhoneDisabled,
|
|
2017
|
-
isFromGBD,
|
|
2018
2187
|
showSaveButton,
|
|
2019
2188
|
hasGBDFL,
|
|
2020
2189
|
hasInsis,
|
|
@@ -2026,10 +2195,13 @@ export default {
|
|
|
2026
2195
|
hasInsurancePay,
|
|
2027
2196
|
hasSignOfIPDL,
|
|
2028
2197
|
hasSameAddressToggle,
|
|
2198
|
+
hasIssuerOther,
|
|
2029
2199
|
hasMemberSearch,
|
|
2030
2200
|
hasWorkPositionDict,
|
|
2031
2201
|
gbdDocuments,
|
|
2032
2202
|
hasGBDFLDocSelection,
|
|
2203
|
+
isNonResident,
|
|
2204
|
+
isDataFromGov,
|
|
2033
2205
|
|
|
2034
2206
|
// Rules
|
|
2035
2207
|
ageRule,
|
|
@@ -2051,7 +2223,7 @@ export default {
|
|
|
2051
2223
|
attachFile,
|
|
2052
2224
|
attachDocumentReader,
|
|
2053
2225
|
getDocumentReader,
|
|
2054
|
-
|
|
2226
|
+
getDoc,
|
|
2055
2227
|
selectFamilyMember,
|
|
2056
2228
|
closeFamilyDialog,
|
|
2057
2229
|
openDeletionDialog,
|
|
@@ -2063,6 +2235,7 @@ export default {
|
|
|
2063
2235
|
searchPositions,
|
|
2064
2236
|
selectGbdDocument,
|
|
2065
2237
|
pickPosition,
|
|
2238
|
+
getContragentClick,
|
|
2066
2239
|
};
|
|
2067
2240
|
},
|
|
2068
2241
|
};
|