hl-core 0.0.8-beta.3 → 0.0.8-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/api/index.ts +77 -21
- package/api/interceptors.ts +17 -13
- package/components/Dialog/Dialog.vue +7 -37
- package/components/Form/FormBlock.vue +65 -28
- package/components/Form/FormSection.vue +4 -1
- package/components/Form/ManagerAttachment.vue +197 -0
- package/components/Form/ProductConditionsBlock.vue +64 -12
- package/components/Input/Datepicker.vue +5 -1
- package/components/Input/FormInput.vue +28 -7
- package/components/Input/PanelInput.vue +5 -0
- package/components/Input/RoundedSelect.vue +137 -0
- package/components/Layout/Drawer.vue +1 -0
- package/components/Layout/Header.vue +40 -4
- package/components/Layout/SettingsPanel.vue +39 -9
- package/components/Menu/MenuHover.vue +30 -0
- package/components/Menu/MenuNav.vue +28 -11
- package/components/Menu/MenuNavItem.vue +5 -2
- package/components/Pages/Anketa.vue +38 -21
- package/components/Pages/Auth.vue +145 -30
- package/components/Pages/InvoiceInfo.vue +30 -0
- package/components/Pages/MemberForm.vue +381 -144
- package/components/Pages/ProductConditions.vue +496 -17
- package/components/Panel/PanelHandler.vue +75 -2
- package/components/Utilities/Chip.vue +27 -0
- package/components/Utilities/JsonViewer.vue +27 -0
- package/composables/classes.ts +165 -25
- package/composables/constants.ts +13 -1
- package/composables/index.ts +58 -2
- package/composables/styles.ts +9 -3
- package/configs/i18n.ts +19 -0
- package/layouts/default.vue +2 -2
- package/locales/en.json +583 -0
- package/locales/kz.json +583 -0
- package/locales/ru.json +585 -0
- package/nuxt.config.ts +8 -0
- package/package.json +15 -9
- package/pages/500.vue +1 -1
- package/pages/Token.vue +51 -0
- package/plugins/helperFunctionsPlugins.ts +3 -0
- package/plugins/storePlugin.ts +0 -1
- package/plugins/vuetifyPlugin.ts +8 -1
- package/store/data.store.js +705 -624
- package/store/member.store.ts +147 -22
- package/store/rules.js +41 -3
- package/types/index.ts +39 -0
- package/store/messages.ts +0 -434
|
@@ -1,65 +1,80 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="flex flex-col gap-4 px-[10px]">
|
|
3
3
|
<v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[82svh] overflow-y-scroll">
|
|
4
|
-
<
|
|
4
|
+
<div v-if="memberSetting.has === true && memberSetting.isMultiple === true" class="flex items-center mt-[14px] min-h-[54px]">
|
|
5
|
+
<div :class="[$libStyles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-1 rounded-t-[8px] h-full">
|
|
6
|
+
<div
|
|
7
|
+
v-for="(each, index) of formStore[whichForm as MemberKeys]"
|
|
8
|
+
:key="index"
|
|
9
|
+
class="pl-3 pr-1 py-1 rounded-[8px] cursor-pointer flex items-center"
|
|
10
|
+
:class="[Number(whichIndex) === index ? `${$libStyles.blueBg} ${$libStyles.whiteText}` : '', $libStyles.textSimple]"
|
|
11
|
+
@click.self="index !== Number(whichIndex) ? selectMember(index) : null"
|
|
12
|
+
>
|
|
13
|
+
{{ `${$dataStore.menu.selectedItem.title} ${index + 1}` }}
|
|
14
|
+
<v-btn
|
|
15
|
+
icon="mdi-close !text-[20px]"
|
|
16
|
+
size="x-small"
|
|
17
|
+
:disabled="!memberStore.canMemberDeleted((whichForm as MemberKeys), index) && !memberStore.canMemberCleared((whichForm as MemberKeys), index)"
|
|
18
|
+
variant="plain"
|
|
19
|
+
:color="Number(whichIndex) === index ? '#FFF' : '#A0B3D8'"
|
|
20
|
+
@click.prevent="
|
|
21
|
+
memberStore.canMemberDeleted(whichForm as MemberKeys, index) || memberStore.canMemberCleared(whichForm as MemberKeys, index) ? deleteMember(index) : null
|
|
22
|
+
"
|
|
23
|
+
></v-btn>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<v-btn class="ml-2" icon="mdi-plus !text-[24px]" @click="memberStore.addMember(whichForm as MemberKeys)" size="small" color="#A0B3D8" variant="tonal"></v-btn>
|
|
27
|
+
</div>
|
|
28
|
+
<base-form-section :title="$t('form.personalData')" :class="[memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']">
|
|
29
|
+
<base-form-input
|
|
30
|
+
v-model="member.phoneNumber"
|
|
31
|
+
:label="$t('form.phoneNumber')"
|
|
32
|
+
:maska="$maska.phone"
|
|
33
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
34
|
+
:clearable="!isDisabled"
|
|
35
|
+
:append-inner-icon="otpCondition ? 'mdi mdi-phone-message' : ''"
|
|
36
|
+
@append="openCustomPanel('otp')"
|
|
37
|
+
@keyup.enter.prevent="otpCondition ? openCustomPanel('otp') : null"
|
|
38
|
+
:rules="phoneRule"
|
|
39
|
+
></base-form-input>
|
|
5
40
|
<base-form-input
|
|
6
41
|
v-model="member.iin"
|
|
7
42
|
:label="$t('form.iin')"
|
|
8
43
|
:maska="$maska.iin"
|
|
9
|
-
:readonly="isDisabled || isIinPhoneDisabled"
|
|
44
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
10
45
|
:clearable="!isDisabled"
|
|
11
46
|
:append-inner-icon="showSaveButton ? 'mdi mdi-magnify' : ''"
|
|
12
47
|
@append="searchMember"
|
|
48
|
+
@input="onIinInput"
|
|
13
49
|
:rules="$rules.required.concat($rules.iinRight)"
|
|
14
50
|
></base-form-input>
|
|
15
51
|
<base-form-input
|
|
16
|
-
v-model="member.
|
|
17
|
-
:label="$t('form.phoneNumber')"
|
|
18
|
-
:maska="$maska.phone"
|
|
19
|
-
:readonly="isDisabled || isIinPhoneDisabled"
|
|
20
|
-
:clearable="!isDisabled"
|
|
21
|
-
:append-inner-icon="otpCondition ? 'mdi mdi-phone-message' : ''"
|
|
22
|
-
@append="sendOtp(false)"
|
|
23
|
-
@keyup.enter.prevent="otpCondition ? sendOtp(false) : null"
|
|
24
|
-
:rules="phoneRule"
|
|
25
|
-
></base-form-input>
|
|
26
|
-
<base-fade-transition>
|
|
27
|
-
<base-form-input
|
|
28
|
-
v-if="otpCondition && member.otpTokenId"
|
|
29
|
-
v-model="member.otpCode"
|
|
30
|
-
:label="$t('form.otpCode')"
|
|
31
|
-
:maska="$maska.otp"
|
|
32
|
-
:append-inner-icon="hasOtp ? 'mdi mdi-check' : ''"
|
|
33
|
-
@keyup.enter.prevent="hasOtp ? checkOtp() : null"
|
|
34
|
-
></base-form-input>
|
|
35
|
-
</base-fade-transition>
|
|
36
|
-
<base-form-input
|
|
37
|
-
v-model="member.lastName"
|
|
52
|
+
v-model.trim="member.lastName"
|
|
38
53
|
:readonly="isDisabled || isFromGBD"
|
|
39
54
|
:clearable="!isDisabled"
|
|
40
55
|
:label="$t('form.lastName')"
|
|
41
56
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
42
57
|
></base-form-input>
|
|
43
58
|
<base-form-input
|
|
44
|
-
v-model="member.firstName"
|
|
59
|
+
v-model.trim="member.firstName"
|
|
45
60
|
:readonly="isDisabled || isFromGBD"
|
|
46
61
|
:clearable="!isDisabled"
|
|
47
62
|
:label="$t('form.firstName')"
|
|
48
63
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
49
64
|
></base-form-input>
|
|
50
65
|
<base-form-input
|
|
51
|
-
v-model="member.middleName"
|
|
66
|
+
v-model.trim="member.middleName"
|
|
52
67
|
:readonly="isDisabled || isFromGBD"
|
|
53
68
|
:clearable="!isDisabled"
|
|
54
69
|
:label="$t('form.middleName')"
|
|
55
|
-
:rules="$rules.
|
|
70
|
+
:rules="$rules.cyrillicNonRequired"
|
|
56
71
|
></base-form-input>
|
|
57
72
|
<base-form-input
|
|
58
73
|
v-model="member.birthDate"
|
|
59
74
|
:readonly="isDisabled || isFromGBD"
|
|
60
75
|
:clearable="!isDisabled"
|
|
61
76
|
:label="$t('form.birthDate')"
|
|
62
|
-
:rules="
|
|
77
|
+
:rules="birthDateRule"
|
|
63
78
|
:maska="$maska.date"
|
|
64
79
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
65
80
|
></base-form-input>
|
|
@@ -75,6 +90,7 @@
|
|
|
75
90
|
@append="openPanel($t('form.gender'), $dataStore.gender, 'gender')"
|
|
76
91
|
></base-panel-input>
|
|
77
92
|
<base-panel-input
|
|
93
|
+
v-if="hasFamilyStatus"
|
|
78
94
|
v-model="member.familyStatus"
|
|
79
95
|
:value="member.familyStatus.nameRu"
|
|
80
96
|
:readonly="isDisabled"
|
|
@@ -98,8 +114,8 @@
|
|
|
98
114
|
<base-form-input
|
|
99
115
|
v-if="whichForm === formStore.beneficiaryFormKey"
|
|
100
116
|
v-model="member.percentageOfPayoutAmount"
|
|
101
|
-
:readonly="isDisabled"
|
|
102
|
-
:clearable="!isDisabled"
|
|
117
|
+
:readonly="memberSetting.isMultiple === false ? true : isDisabled"
|
|
118
|
+
:clearable="memberSetting.isMultiple === false ? false : !isDisabled"
|
|
103
119
|
:label="$t('form.percentageOfPayoutAmount')"
|
|
104
120
|
:rules="$rules.required.concat($rules.numbers)"
|
|
105
121
|
></base-form-input>
|
|
@@ -107,35 +123,35 @@
|
|
|
107
123
|
</base-form-section>
|
|
108
124
|
<base-form-section :title="$t('policyholdersRepresentative.PowerOfAttorney')" v-if="whichForm === formStore.policyholdersRepresentativeFormKey">
|
|
109
125
|
<base-form-input
|
|
110
|
-
v-model="member.fullNameRod"
|
|
126
|
+
v-model.trim="member.fullNameRod"
|
|
111
127
|
:label="$t('policyholdersRepresentative.NameParentCase')"
|
|
112
128
|
:readonly="isDisabled"
|
|
113
129
|
:clearable="!isDisabled"
|
|
114
130
|
:rules="$rules.required"
|
|
115
131
|
></base-form-input>
|
|
116
132
|
<base-form-input
|
|
117
|
-
v-model="member.confirmDocTypeKz"
|
|
133
|
+
v-model.trim="member.confirmDocTypeKz"
|
|
118
134
|
:label="$t('policyholdersRepresentative.basisDocKz')"
|
|
119
135
|
:readonly="isDisabled"
|
|
120
136
|
:clearable="!isDisabled"
|
|
121
137
|
:rules="$rules.required"
|
|
122
138
|
></base-form-input>
|
|
123
139
|
<base-form-input
|
|
124
|
-
v-model="member.confirmDocType"
|
|
140
|
+
v-model.trim="member.confirmDocType"
|
|
125
141
|
:label="$t('policyholdersRepresentative.basisDocRu')"
|
|
126
142
|
:readonly="isDisabled"
|
|
127
143
|
:clearable="!isDisabled"
|
|
128
144
|
:rules="$rules.required"
|
|
129
145
|
></base-form-input>
|
|
130
146
|
<base-form-input
|
|
131
|
-
v-model="member.confirmDocTypeRod"
|
|
147
|
+
v-model.trim="member.confirmDocTypeRod"
|
|
132
148
|
:label="$t('policyholdersRepresentative.basisDocRuParentCase')"
|
|
133
149
|
:readonly="isDisabled"
|
|
134
150
|
:clearable="!isDisabled"
|
|
135
151
|
:rules="$rules.required"
|
|
136
152
|
></base-form-input>
|
|
137
153
|
<base-form-input
|
|
138
|
-
v-model="member.confirmDocNumber"
|
|
154
|
+
v-model.trim="member.confirmDocNumber"
|
|
139
155
|
:label="$t('policyholdersRepresentative.numberDoc')"
|
|
140
156
|
:readonly="isDisabled"
|
|
141
157
|
:clearable="!isDisabled"
|
|
@@ -159,7 +175,7 @@
|
|
|
159
175
|
:maska="$maska.date"
|
|
160
176
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
161
177
|
></base-form-input>
|
|
162
|
-
<base-form-input v-model="member.migrationCard" :label="$t('policyholdersRepresentative.numberVisa')"></base-form-input>
|
|
178
|
+
<base-form-input v-model.trim="member.migrationCard" :label="$t('policyholdersRepresentative.numberVisa')"></base-form-input>
|
|
163
179
|
<base-form-input
|
|
164
180
|
v-model="member.migrationCardIssueDate"
|
|
165
181
|
:label="$t('form.documentDate')"
|
|
@@ -185,21 +201,21 @@
|
|
|
185
201
|
:title="$t('policyholdersRepresentative.confirmAuthority')"
|
|
186
202
|
></base-form-toggle>
|
|
187
203
|
<base-form-input
|
|
188
|
-
v-model="member.notaryLongName"
|
|
204
|
+
v-model.trim="member.notaryLongName"
|
|
189
205
|
:label="$t('policyholdersRepresentative.name')"
|
|
190
206
|
:readonly="isDisabled"
|
|
191
207
|
:clearable="!isDisabled"
|
|
192
208
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required : []"
|
|
193
209
|
></base-form-input>
|
|
194
210
|
<base-form-input
|
|
195
|
-
v-model="member.notaryLicenseNumber"
|
|
211
|
+
v-model.trim="member.notaryLicenseNumber"
|
|
196
212
|
:label="$t('policyholdersRepresentative.numberLicense')"
|
|
197
213
|
:readonly="isDisabled"
|
|
198
214
|
:clearable="!isDisabled"
|
|
199
215
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required : []"
|
|
200
216
|
></base-form-input>
|
|
201
217
|
<base-form-input
|
|
202
|
-
v-model="member.notaryLicenseIssuer"
|
|
218
|
+
v-model.trim="member.notaryLicenseIssuer"
|
|
203
219
|
:label="$t('policyholdersRepresentative.documentIssuers')"
|
|
204
220
|
:readonly="isDisabled"
|
|
205
221
|
:clearable="!isDisabled"
|
|
@@ -216,11 +232,18 @@
|
|
|
216
232
|
></base-form-input>
|
|
217
233
|
</base-form-section>
|
|
218
234
|
<base-form-section :title="$t('form.jobData')" v-if="$dataStore.hasJobSection(whichForm)">
|
|
219
|
-
<base-form-input v-model="member.job" :label="$t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"></base-form-input>
|
|
220
|
-
<base-form-input v-model="member.jobPosition" :label="$t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"></base-form-input>
|
|
221
|
-
<base-form-input v-model="member.jobPlace" :label="$t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"></base-form-input>
|
|
235
|
+
<base-form-input v-model.trim="member.job" :label="$t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"></base-form-input>
|
|
236
|
+
<base-form-input v-model.trim="member.jobPosition" :label="$t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"></base-form-input>
|
|
237
|
+
<base-form-input v-model.trim="member.jobPlace" :label="$t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"></base-form-input>
|
|
222
238
|
</base-form-section>
|
|
223
239
|
<base-form-section :title="$t('form.placeRegistration')" v-if="$dataStore.hasPlaceSection(whichForm)">
|
|
240
|
+
<base-form-toggle
|
|
241
|
+
v-if="whichForm === formStore.beneficiaryFormKey"
|
|
242
|
+
v-model="sameAddress"
|
|
243
|
+
:disabled="isDisabled"
|
|
244
|
+
:has-border="false"
|
|
245
|
+
:title="$t('form.sameAddress')"
|
|
246
|
+
></base-form-toggle>
|
|
224
247
|
<base-panel-input
|
|
225
248
|
v-model="member.registrationCountry"
|
|
226
249
|
:value="member.registrationCountry.nameRu"
|
|
@@ -276,23 +299,23 @@
|
|
|
276
299
|
></base-panel-input>
|
|
277
300
|
<!-- <base-form-input v-if="$dataStore.isGons" v-model="member.postIndex" :readonly="isDisabled"
|
|
278
301
|
:clearable="!isDisabled" :label="$t('form.postIndex')" :maska="$maska.post"></base-form-input> -->
|
|
279
|
-
<base-form-input v-model="member.registrationQuarter" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.Quarter')"></base-form-input>
|
|
280
|
-
<base-form-input v-model="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.MicroDistrict')"></base-form-input>
|
|
302
|
+
<base-form-input v-model.trim="member.registrationQuarter" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.Quarter')"></base-form-input>
|
|
303
|
+
<base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.MicroDistrict')"></base-form-input>
|
|
281
304
|
<base-form-input
|
|
282
|
-
v-model="member.registrationStreet"
|
|
305
|
+
v-model.trim="member.registrationStreet"
|
|
283
306
|
:rules="$rules.required"
|
|
284
307
|
:readonly="isDisabled"
|
|
285
308
|
:clearable="!isDisabled"
|
|
286
309
|
:label="$t('form.Street')"
|
|
287
310
|
></base-form-input>
|
|
288
311
|
<base-form-input
|
|
289
|
-
v-model="member.registrationNumberHouse"
|
|
312
|
+
v-model.trim="member.registrationNumberHouse"
|
|
290
313
|
:rules="$rules.required"
|
|
291
314
|
:readonly="isDisabled"
|
|
292
315
|
:clearable="!isDisabled"
|
|
293
316
|
:label="$t('form.NumberHouse')"
|
|
294
317
|
></base-form-input>
|
|
295
|
-
<base-form-input v-model="member.registrationNumberApartment" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.NumberApartment')"></base-form-input>
|
|
318
|
+
<base-form-input v-model.trim="member.registrationNumberApartment" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.NumberApartment')"></base-form-input>
|
|
296
319
|
</div>
|
|
297
320
|
</base-fade-transition>
|
|
298
321
|
</base-form-section>
|
|
@@ -331,7 +354,7 @@
|
|
|
331
354
|
@append="openPanel($t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
|
|
332
355
|
></base-panel-input>
|
|
333
356
|
<base-form-input
|
|
334
|
-
v-model="member.documentNumber"
|
|
357
|
+
v-model.trim="member.documentNumber"
|
|
335
358
|
:label="$t('form.documentNumber')"
|
|
336
359
|
:readonly="isDisabled"
|
|
337
360
|
:clearable="!isDisabled"
|
|
@@ -436,6 +459,17 @@
|
|
|
436
459
|
append-inner-icon="mdi mdi-chevron-right"
|
|
437
460
|
@append="openPanel($t('form.economySectorCode'), [], 'economySectorCode', $dataStore.getSectorCodeList)"
|
|
438
461
|
></base-panel-input>
|
|
462
|
+
<base-panel-input
|
|
463
|
+
v-if="hasInsurancePay"
|
|
464
|
+
v-model="member.insurancePay"
|
|
465
|
+
:value="member.insurancePay.nameRu"
|
|
466
|
+
:readonly="isDisabled"
|
|
467
|
+
:clearable="!isDisabled"
|
|
468
|
+
:rules="$rules.objectRequired"
|
|
469
|
+
:label="$t('form.insurancePay')"
|
|
470
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
471
|
+
@append="openPanel($t('form.insurancePay'), $dataStore.insurancePay, 'insurancePay', $dataStore.getInsurancePay)"
|
|
472
|
+
></base-panel-input>
|
|
439
473
|
</base-form-section>
|
|
440
474
|
<base-form-section :title="$t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
441
475
|
<base-form-input
|
|
@@ -480,6 +514,24 @@
|
|
|
480
514
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')"></base-btn>
|
|
481
515
|
</div>
|
|
482
516
|
</Teleport>
|
|
517
|
+
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
|
|
518
|
+
<div :class="[$libStyles.flexColNav]">
|
|
519
|
+
<base-fade-transition>
|
|
520
|
+
<base-rounded-input
|
|
521
|
+
v-if="otpCondition && member.otpTokenId"
|
|
522
|
+
v-model="member.otpCode"
|
|
523
|
+
:label="$t('form.otpCode')"
|
|
524
|
+
:maska="$maska.otp"
|
|
525
|
+
:append-inner-icon="hasOtp ? 'mdi-cellphone-message text-[17px]' : ''"
|
|
526
|
+
hide-details
|
|
527
|
+
@keyup.enter.prevent="hasOtp ? checkOtp() : null"
|
|
528
|
+
@input="onOtpCodeInput"
|
|
529
|
+
></base-rounded-input>
|
|
530
|
+
</base-fade-transition>
|
|
531
|
+
<base-btn v-if="!member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$t('buttons.sendOtp')" @click="sendOtp(false)"></base-btn>
|
|
532
|
+
<base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$t('buttons.check')" @click="checkOtp()"></base-btn>
|
|
533
|
+
</div>
|
|
534
|
+
</Teleport>
|
|
483
535
|
<base-dialog v-model="familyDialog" :title="$t('dialog.familyMember')" actions="familyDialog">
|
|
484
536
|
<template #actions>
|
|
485
537
|
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)"></base-family-dialog>
|
|
@@ -491,7 +543,7 @@
|
|
|
491
543
|
|
|
492
544
|
<script lang="ts">
|
|
493
545
|
import { LocationQueryValue } from 'vue-router';
|
|
494
|
-
import { Value, DocumentItem } from '@/composables/classes';
|
|
546
|
+
import { Value, DocumentItem, Member } from '@/composables/classes';
|
|
495
547
|
import { uuid } from 'vue-uuid';
|
|
496
548
|
|
|
497
549
|
export default {
|
|
@@ -511,10 +563,14 @@ export default {
|
|
|
511
563
|
const isButtonLoading = ref<boolean>(false);
|
|
512
564
|
const isSubmittingForm = ref<boolean>(false);
|
|
513
565
|
const documentLoading = ref<boolean>(false);
|
|
566
|
+
const otpSending = ref<boolean>(false);
|
|
514
567
|
const isSearchOpen = ref<boolean>(false);
|
|
515
568
|
const isDocumentOpen = ref<boolean>(false);
|
|
569
|
+
const isOtpPanelOpen = ref<boolean>(false);
|
|
516
570
|
const isPanelLoading = ref<boolean>(false);
|
|
571
|
+
const isChangingMember = ref<boolean>(false);
|
|
517
572
|
const familyDialog = ref<boolean>(false);
|
|
573
|
+
const sameAddress = ref<boolean>(false);
|
|
518
574
|
const panelValue = ref<Value>(new Value());
|
|
519
575
|
const panelList = ref<Value[]>([]);
|
|
520
576
|
const currentPanel = ref<keyof typeof member.value>();
|
|
@@ -523,10 +579,11 @@ export default {
|
|
|
523
579
|
|
|
524
580
|
const whichForm = computed(() => route.query.tab);
|
|
525
581
|
const whichIndex = computed(() => route.query.i);
|
|
582
|
+
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value as MemberKeys) as keyof typeof dataStore.members]);
|
|
526
583
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
527
584
|
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value as string));
|
|
528
585
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
529
|
-
const isIinPhoneDisabled = computed(() =>
|
|
586
|
+
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
530
587
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
531
588
|
const showSaveButton = computed(() => {
|
|
532
589
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
@@ -546,14 +603,39 @@ export default {
|
|
|
546
603
|
return generalCondition && perMemberCondtion();
|
|
547
604
|
});
|
|
548
605
|
|
|
549
|
-
const hasGBDFL = computed(() =>
|
|
606
|
+
const hasGBDFL = computed(() => {
|
|
607
|
+
const perMemberCondition = () => {
|
|
608
|
+
switch (whichForm.value) {
|
|
609
|
+
case formStore.beneficiaryFormKey: {
|
|
610
|
+
if (dataStore.isKazyna || dataStore.isLiferenta) {
|
|
611
|
+
return !!member.value.iin;
|
|
612
|
+
}
|
|
613
|
+
if (dataStore.isBolashak || dataStore.isGons) {
|
|
614
|
+
return false;
|
|
615
|
+
}
|
|
616
|
+
return true;
|
|
617
|
+
}
|
|
618
|
+
case formStore.insuredFormKey:
|
|
619
|
+
case formStore.beneficiaryFormKey:
|
|
620
|
+
case formStore.beneficialOwnerFormKey:
|
|
621
|
+
case formStore.policyholdersRepresentativeFormKey:
|
|
622
|
+
return true;
|
|
623
|
+
default:
|
|
624
|
+
return true;
|
|
625
|
+
}
|
|
626
|
+
};
|
|
627
|
+
return dataStore.controls.hasGBDFL && perMemberCondition();
|
|
628
|
+
});
|
|
550
629
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
551
630
|
const hasGKB = computed(() => {
|
|
552
|
-
const byProductCondition = dataStore.isGons || dataStore.isBolashak;
|
|
553
631
|
const perMemberCondition = () => {
|
|
554
632
|
switch (whichForm.value) {
|
|
555
|
-
case formStore.beneficiaryFormKey:
|
|
633
|
+
case formStore.beneficiaryFormKey: {
|
|
634
|
+
if (dataStore.isKazyna || dataStore.isLiferenta) {
|
|
635
|
+
return !member.value.iin;
|
|
636
|
+
}
|
|
556
637
|
return member.value.id === 0;
|
|
638
|
+
}
|
|
557
639
|
case formStore.policyholderFormKey:
|
|
558
640
|
case formStore.insuredFormKey:
|
|
559
641
|
case formStore.beneficialOwnerFormKey:
|
|
@@ -563,56 +645,84 @@ export default {
|
|
|
563
645
|
return false;
|
|
564
646
|
}
|
|
565
647
|
};
|
|
566
|
-
return dataStore.controls.hasGKB && !!dataStore.isTask() &&
|
|
648
|
+
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
649
|
+
});
|
|
650
|
+
|
|
651
|
+
const hasFamilyStatus = computed(() => {
|
|
652
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
653
|
+
if (dataStore.isBolashak) {
|
|
654
|
+
return false;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
return true;
|
|
658
|
+
});
|
|
659
|
+
const hasInsurancePay = computed(() => {
|
|
660
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
661
|
+
if (dataStore.isBolashak || dataStore.isLiferenta) {
|
|
662
|
+
return true;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
return false;
|
|
567
666
|
});
|
|
568
667
|
|
|
668
|
+
const birthDateRule = computed(() => {
|
|
669
|
+
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
670
|
+
const byMemverAndProductRule = () => {
|
|
671
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
672
|
+
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
673
|
+
return dataStore.rules.age18ByDate;
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
677
|
+
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
678
|
+
return dataStore.rules.age18ByDate;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
return [];
|
|
682
|
+
};
|
|
683
|
+
return baseDateRule.concat(byMemverAndProductRule());
|
|
684
|
+
});
|
|
569
685
|
const ageRule = computed(() => {
|
|
570
|
-
const baseAgeRule = dataStore.rules.
|
|
686
|
+
const baseAgeRule = dataStore.rules.numbers;
|
|
571
687
|
const byMemberAndProductRule = () => {
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
return dataStore.rules.policyholderAgeLimit;
|
|
576
|
-
}
|
|
688
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
689
|
+
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
690
|
+
return dataStore.rules.age18;
|
|
577
691
|
}
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
692
|
+
}
|
|
693
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
694
|
+
if (dataStore.isBolashak) {
|
|
695
|
+
return dataStore.rules.beneficiaryAgeLimit;
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
699
|
+
if (dataStore.isBaiterek || dataStore.isBolashak) {
|
|
700
|
+
return dataStore.rules.age18;
|
|
582
701
|
}
|
|
583
|
-
default:
|
|
584
|
-
return [];
|
|
585
702
|
}
|
|
703
|
+
return [];
|
|
586
704
|
};
|
|
587
705
|
return baseAgeRule.concat(byMemberAndProductRule());
|
|
588
706
|
});
|
|
589
707
|
|
|
590
708
|
const phoneRule = computed(() => {
|
|
591
709
|
const basePhoneRule = dataStore.rules.required.concat(dataStore.rules.phoneFormat);
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
if (dataStore.isGons || dataStore.isBolashak) {
|
|
596
|
-
return [];
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
default:
|
|
600
|
-
return basePhoneRule;
|
|
710
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
711
|
+
if (dataStore.isGons || dataStore.isBolashak) {
|
|
712
|
+
return [];
|
|
601
713
|
}
|
|
602
|
-
}
|
|
603
|
-
return
|
|
714
|
+
}
|
|
715
|
+
return basePhoneRule;
|
|
604
716
|
});
|
|
605
717
|
|
|
606
718
|
const residencyRule = computed(() => {
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
}
|
|
719
|
+
const baseResidencyRule = dataStore.rules.objectRequired;
|
|
720
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
721
|
+
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
722
|
+
return baseResidencyRule.concat(dataStore.rules.noResident);
|
|
612
723
|
}
|
|
613
|
-
default:
|
|
614
|
-
return dataStore.rules.objectRequired;
|
|
615
724
|
}
|
|
725
|
+
return baseResidencyRule;
|
|
616
726
|
});
|
|
617
727
|
|
|
618
728
|
const getOtpConditionByMember = () => {
|
|
@@ -636,10 +746,11 @@ export default {
|
|
|
636
746
|
const searchMember = async () => {
|
|
637
747
|
if (!isDisabled.value) {
|
|
638
748
|
dataStore.panelAction = null;
|
|
639
|
-
dataStore.panel.title = 'Поиск
|
|
749
|
+
dataStore.panel.title = 'Поиск контрагента';
|
|
640
750
|
dataStore.panel.open = true;
|
|
641
751
|
isSearchOpen.value = true;
|
|
642
752
|
isDocumentOpen.value = false;
|
|
753
|
+
isOtpPanelOpen.value = false;
|
|
643
754
|
isPanelOpen.value = false;
|
|
644
755
|
} else {
|
|
645
756
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -650,13 +761,21 @@ export default {
|
|
|
650
761
|
vForm.value.scrollTo({ top: direction === 'up' ? 0 : screen.height * 10, behavior: 'smooth' });
|
|
651
762
|
};
|
|
652
763
|
|
|
653
|
-
const openCustomPanel = (type: 'document' = 'document') => {
|
|
764
|
+
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
654
765
|
dataStore.panelAction = null;
|
|
655
766
|
if (type === 'document' && memberDocument.value) {
|
|
656
767
|
dataStore.panel.title = memberDocument.value.fileTypeName!;
|
|
657
768
|
isDocumentOpen.value = true;
|
|
658
769
|
isSearchOpen.value = false;
|
|
659
770
|
isPanelOpen.value = false;
|
|
771
|
+
isOtpPanelOpen.value = false;
|
|
772
|
+
}
|
|
773
|
+
if (type === 'otp') {
|
|
774
|
+
dataStore.panel.title = dataStore.t('form.otpCode');
|
|
775
|
+
isOtpPanelOpen.value = true;
|
|
776
|
+
isDocumentOpen.value = false;
|
|
777
|
+
isSearchOpen.value = false;
|
|
778
|
+
isPanelOpen.value = false;
|
|
660
779
|
}
|
|
661
780
|
dataStore.panel.open = true;
|
|
662
781
|
};
|
|
@@ -665,6 +784,7 @@ export default {
|
|
|
665
784
|
if (!isDisabled.value) {
|
|
666
785
|
isSearchOpen.value = false;
|
|
667
786
|
isDocumentOpen.value = false;
|
|
787
|
+
isOtpPanelOpen.value = false;
|
|
668
788
|
// Feature
|
|
669
789
|
// const notAllowedToChange = ['gender', 'documentType', 'documentIssuers'];
|
|
670
790
|
// if (member.value.gotFromInsis === false && notAllowedToChange.includes(key)) {
|
|
@@ -683,7 +803,7 @@ export default {
|
|
|
683
803
|
isPanelLoading.value = true;
|
|
684
804
|
newList = await asyncFunction(filterKey, member.value);
|
|
685
805
|
}
|
|
686
|
-
panelList.value = newList;
|
|
806
|
+
panelList.value = filterList(newList, key);
|
|
687
807
|
panelValue.value = member.value[currentPanel.value];
|
|
688
808
|
isPanelLoading.value = false;
|
|
689
809
|
} else {
|
|
@@ -691,6 +811,22 @@ export default {
|
|
|
691
811
|
}
|
|
692
812
|
};
|
|
693
813
|
|
|
814
|
+
const filterList = (list: Value[], key: string) => {
|
|
815
|
+
if (dataStore.isBolashak) {
|
|
816
|
+
if (key === 'relationDegree') {
|
|
817
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
818
|
+
const beneficiaryRelations = [12, 13, 14, 15, 20, 21, 22, 23];
|
|
819
|
+
return list.filter(i => beneficiaryRelations.includes(Number(i.ids)));
|
|
820
|
+
}
|
|
821
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
822
|
+
const insuredRelations = [6, 7, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23];
|
|
823
|
+
return list.filter(i => insuredRelations.includes(Number(i.ids)));
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
return list;
|
|
828
|
+
};
|
|
829
|
+
|
|
694
830
|
const pickPanelValue = (item: Value) => {
|
|
695
831
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
696
832
|
dataStore.panel.open = false;
|
|
@@ -786,41 +922,45 @@ export default {
|
|
|
786
922
|
};
|
|
787
923
|
|
|
788
924
|
const getContragentFromGBDFL = async () => {
|
|
789
|
-
if (member.value.hasAgreement
|
|
925
|
+
if (member.value.hasAgreement !== true) {
|
|
790
926
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
791
927
|
dataStore.panel.open = false;
|
|
792
928
|
isSearchOpen.value = false;
|
|
793
929
|
return;
|
|
794
930
|
}
|
|
795
931
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
796
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
932
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
797
933
|
dataStore.panel.open = false;
|
|
798
934
|
isSearchOpen.value = false;
|
|
799
935
|
return;
|
|
800
936
|
}
|
|
801
937
|
isButtonLoading.value = true;
|
|
802
|
-
await dataStore.getContragentFromGBDFL(member.value
|
|
803
|
-
|
|
938
|
+
const response = await dataStore.getContragentFromGBDFL(member.value);
|
|
939
|
+
if (typeof response === 'boolean') {
|
|
940
|
+
if (response === true) {
|
|
941
|
+
member.value.gotFromInsis = true;
|
|
942
|
+
}
|
|
943
|
+
dataStore.panel.open = false;
|
|
944
|
+
isSearchOpen.value = false;
|
|
945
|
+
}
|
|
804
946
|
isButtonLoading.value = false;
|
|
805
|
-
dataStore.panel.open = false;
|
|
806
|
-
isSearchOpen.value = false;
|
|
807
947
|
};
|
|
808
948
|
|
|
809
949
|
const getContragent = async () => {
|
|
810
|
-
if (member.value.hasAgreement
|
|
950
|
+
if (member.value.hasAgreement !== true) {
|
|
811
951
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
812
952
|
dataStore.panel.open = false;
|
|
813
953
|
isSearchOpen.value = false;
|
|
814
954
|
return;
|
|
815
955
|
}
|
|
816
956
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
817
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
957
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
818
958
|
dataStore.panel.open = false;
|
|
819
959
|
isSearchOpen.value = false;
|
|
820
960
|
return;
|
|
821
961
|
}
|
|
822
962
|
isButtonLoading.value = true;
|
|
823
|
-
await dataStore.getContragent(member.value,
|
|
963
|
+
await dataStore.getContragent(member.value, false);
|
|
824
964
|
isButtonLoading.value = false;
|
|
825
965
|
dataStore.panel.open = false;
|
|
826
966
|
isSearchOpen.value = false;
|
|
@@ -854,12 +994,14 @@ export default {
|
|
|
854
994
|
return false;
|
|
855
995
|
}
|
|
856
996
|
const isInsured = formStore.isPolicyholderInsured;
|
|
997
|
+
const remoteIsInsured = ref<boolean | null>(null);
|
|
857
998
|
if (whichForm.value == formStore.policyholderFormKey) {
|
|
858
999
|
if (route.params.taskId === '0') {
|
|
859
1000
|
try {
|
|
860
1001
|
const taskId = await dataStore.startApplication(member.value);
|
|
861
1002
|
if (taskId) {
|
|
862
1003
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1004
|
+
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
863
1005
|
await router.replace({
|
|
864
1006
|
name: route.name!,
|
|
865
1007
|
params: { taskId: taskId as string },
|
|
@@ -882,22 +1024,32 @@ export default {
|
|
|
882
1024
|
}
|
|
883
1025
|
}
|
|
884
1026
|
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value as MemberKeys, whichIndex.value ? Number(whichIndex.value) : undefined);
|
|
1027
|
+
if (typeof member.value.id !== 'number' || (typeof member.value.id === 'number' && member.value.id > 0 === false)) {
|
|
1028
|
+
return false;
|
|
1029
|
+
}
|
|
1030
|
+
const wasInsuredAction = ref<boolean>(false);
|
|
885
1031
|
const isSaved = await dataStore.saveMember(member.value, memberStore.getMemberCode(whichForm.value as MemberKeys), memberFromApplicaiton);
|
|
886
1032
|
if (!isSaved) return false;
|
|
887
|
-
if (whichForm.value === formStore.policyholderFormKey
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
1033
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
1034
|
+
if (isInsured === true || remoteIsInsured.value === true) {
|
|
1035
|
+
formStore.insuredForm[0] = formStore.policyholderForm;
|
|
1036
|
+
const isInsuredSaved = await dataStore.saveMember(
|
|
1037
|
+
member.value,
|
|
1038
|
+
memberStore.getMemberCode(formStore.insuredFormKey as MemberKeys),
|
|
1039
|
+
memberStore.getMemberFromApplication(formStore.insuredFormKey as MemberKeys, formStore.insuredFormIndex),
|
|
1040
|
+
);
|
|
1041
|
+
if (!isInsuredSaved) return false;
|
|
1042
|
+
wasInsuredAction.value = true;
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
1046
|
+
wasInsuredAction.value = true;
|
|
895
1047
|
}
|
|
896
1048
|
await router.replace({
|
|
897
1049
|
name: route.name!,
|
|
898
1050
|
query: { ...route.query, id: member.value.id },
|
|
899
1051
|
});
|
|
900
|
-
await dataStore.getApplicationData(route.params.taskId, false, false,
|
|
1052
|
+
await dataStore.getApplicationData(route.params.taskId, false, false, true, wasInsuredAction.value);
|
|
901
1053
|
if (dataStore.controls.hasCalculator) {
|
|
902
1054
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
903
1055
|
formStore.additionalInsuranceTerms.forEach((term: any) => {
|
|
@@ -921,7 +1073,7 @@ export default {
|
|
|
921
1073
|
return true;
|
|
922
1074
|
}
|
|
923
1075
|
}
|
|
924
|
-
if (member.value.hasAgreement
|
|
1076
|
+
if (member.value.hasAgreement !== true) {
|
|
925
1077
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
926
1078
|
return false;
|
|
927
1079
|
}
|
|
@@ -963,11 +1115,11 @@ export default {
|
|
|
963
1115
|
if (errors) {
|
|
964
1116
|
const errorText = errors.querySelector('.v-label.v-field-label');
|
|
965
1117
|
if (errorText) {
|
|
966
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1118
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: errorText.innerHTML?.replace(/[-<>!//.]/g, '') }));
|
|
967
1119
|
} else {
|
|
968
1120
|
const errorFieldText = errors.querySelector('.v-input__control');
|
|
969
1121
|
if (errorFieldText) {
|
|
970
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1122
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: errorFieldText.innerHTML?.replace(/[-<>!//.]/g, '') }));
|
|
971
1123
|
}
|
|
972
1124
|
}
|
|
973
1125
|
errors.scrollIntoView({
|
|
@@ -982,67 +1134,133 @@ export default {
|
|
|
982
1134
|
|
|
983
1135
|
const checkOtp = async () => {
|
|
984
1136
|
if (!member.value.otpCode || member.value.iin?.length !== useMask().iin.length || member.value.phoneNumber?.length !== useMask().phone.length) {
|
|
985
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1137
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: dataStore.t('form.otpCode') }), 3000);
|
|
986
1138
|
return;
|
|
987
1139
|
}
|
|
1140
|
+
otpSending.value = true;
|
|
988
1141
|
const checked = await memberStore.checkOtp(member.value);
|
|
989
1142
|
if (typeof checked !== 'undefined') {
|
|
990
1143
|
member.value.hasAgreement = checked;
|
|
991
1144
|
}
|
|
1145
|
+
otpSending.value = false;
|
|
1146
|
+
if (checked === true) {
|
|
1147
|
+
dataStore.panel.open = false;
|
|
1148
|
+
}
|
|
992
1149
|
};
|
|
993
1150
|
|
|
994
1151
|
const sendOtp = async (onInit = false) => {
|
|
1152
|
+
otpSending.value = true;
|
|
995
1153
|
const response = await memberStore.sendOtp(member.value, formStore.applicationData.processInstanceId, onInit);
|
|
996
1154
|
if (response) {
|
|
997
1155
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1156
|
+
if (response.otpStatus === true) {
|
|
1157
|
+
dataStore.panel.open = false;
|
|
1158
|
+
}
|
|
998
1159
|
}
|
|
1160
|
+
otpSending.value = false;
|
|
999
1161
|
};
|
|
1000
1162
|
|
|
1001
|
-
const
|
|
1002
|
-
|
|
1003
|
-
|
|
1163
|
+
const setDefaultValues = async () => {
|
|
1164
|
+
const setDefaults = dataStore.controls.setDefaults;
|
|
1165
|
+
if (setDefaults.sectorCode) {
|
|
1166
|
+
await setSectorCode();
|
|
1167
|
+
}
|
|
1168
|
+
if (setDefaults.percentage) {
|
|
1169
|
+
setPercentage();
|
|
1170
|
+
}
|
|
1171
|
+
};
|
|
1172
|
+
|
|
1173
|
+
const setSectorCode = async () => {
|
|
1174
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1175
|
+
const sectorList = await dataStore.getSectorCodeList();
|
|
1176
|
+
const defaultValue = sectorList.find(item => item.ids === '500003.9') as Value;
|
|
1177
|
+
member.value.economySectorCode = defaultValue ? defaultValue : new Value();
|
|
1178
|
+
}
|
|
1179
|
+
};
|
|
1180
|
+
|
|
1181
|
+
const setPercentage = () => {
|
|
1182
|
+
if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
|
|
1183
|
+
if (dataStore.members.beneficiaryApp.isMultiple) {
|
|
1184
|
+
const availablePercentage =
|
|
1185
|
+
100 -
|
|
1186
|
+
formStore.beneficiaryForm.reduce((sum, member) => {
|
|
1187
|
+
return sum + Number(member.percentageOfPayoutAmount);
|
|
1188
|
+
}, 0);
|
|
1189
|
+
if (availablePercentage >= 0 && availablePercentage <= 100) member.value.percentageOfPayoutAmount = availablePercentage;
|
|
1190
|
+
} else {
|
|
1191
|
+
member.value.percentageOfPayoutAmount = 100;
|
|
1192
|
+
}
|
|
1004
1193
|
}
|
|
1194
|
+
};
|
|
1195
|
+
|
|
1196
|
+
const selectMember = async (index: number, update?: boolean) => {
|
|
1197
|
+
dataStore.panel.open = false;
|
|
1198
|
+
isButtonLoading.value = true;
|
|
1199
|
+
isChangingMember.value = true;
|
|
1200
|
+
//@ts-ignore
|
|
1201
|
+
await router.replace({ query: { ...route.query, i: index, id: getMember(route.query.tab, index).id, upd: update } });
|
|
1202
|
+
isChangingMember.value = false;
|
|
1203
|
+
isButtonLoading.value = false;
|
|
1204
|
+
};
|
|
1205
|
+
|
|
1206
|
+
const deleteMember = async (index: number) => {
|
|
1207
|
+
await memberStore.deleteMember(route.params.taskId as string, whichForm.value as MemberKeys, index);
|
|
1208
|
+
const currentIndex = Number(whichIndex.value);
|
|
1209
|
+
if (index <= currentIndex) {
|
|
1210
|
+
const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
|
|
1211
|
+
await selectMember(newIndex.value, index === currentIndex ? true : undefined);
|
|
1212
|
+
}
|
|
1213
|
+
};
|
|
1214
|
+
|
|
1215
|
+
const onInit = async () => {
|
|
1216
|
+
// if (route.params.taskId === '0' || (route.params.taskId !== '0' && dataStore.isProcessEditable(formStore.applicationData.statusCode))) {
|
|
1217
|
+
// await dataStore.getSignedDocList(formStore.applicationData.processInstanceId);
|
|
1218
|
+
// }
|
|
1005
1219
|
if (getOtpConditionByMember()) {
|
|
1006
1220
|
await sendOtp(true);
|
|
1007
1221
|
} else {
|
|
1008
1222
|
if (member.value.hasAgreement === null) member.value.hasAgreement = true;
|
|
1009
1223
|
}
|
|
1010
|
-
if (
|
|
1011
|
-
await
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
query: { ...route.query, id: member.value.id },
|
|
1017
|
-
});
|
|
1018
|
-
}
|
|
1019
|
-
if (member.value.id) {
|
|
1020
|
-
const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1021
|
-
if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1224
|
+
if (!member.value.id) {
|
|
1225
|
+
await router.replace({ query: { ...route.query, id: 0 } });
|
|
1226
|
+
} else {
|
|
1227
|
+
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1228
|
+
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1229
|
+
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1022
1230
|
}
|
|
1231
|
+
await setDefaultValues();
|
|
1023
1232
|
};
|
|
1024
1233
|
|
|
1025
1234
|
onMounted(async () => {
|
|
1026
1235
|
await onInit();
|
|
1027
1236
|
});
|
|
1028
1237
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1238
|
+
watch(
|
|
1239
|
+
() => sameAddress.value,
|
|
1240
|
+
() => {
|
|
1241
|
+
if (whichForm.value === formStore.beneficiaryFormKey) setAddressBeneficiary(Number(whichIndex.value), sameAddress.value);
|
|
1242
|
+
},
|
|
1243
|
+
);
|
|
1034
1244
|
|
|
1035
1245
|
watch(
|
|
1036
1246
|
() => member.value.percentageOfPayoutAmount,
|
|
1037
1247
|
val => {
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
if (percentage
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1248
|
+
if (whichForm.value === formStore.beneficiaryFormKey && !isDisabled.value) {
|
|
1249
|
+
const percentage = typeof val === 'string' ? Number(val) : val;
|
|
1250
|
+
if (typeof percentage === 'number') {
|
|
1251
|
+
if (memberSetting.value.isMultiple) {
|
|
1252
|
+
if (percentage < 0) {
|
|
1253
|
+
member.value.percentageOfPayoutAmount = 0;
|
|
1254
|
+
dataStore.showToaster('error', dataStore.t('toaster.incorrectInput'), 1000);
|
|
1255
|
+
} else if (percentage > 100) {
|
|
1256
|
+
member.value.percentageOfPayoutAmount = 100;
|
|
1257
|
+
dataStore.showToaster('error', dataStore.t('toaster.incorrectInput'), 1000);
|
|
1258
|
+
}
|
|
1259
|
+
} else {
|
|
1260
|
+
if (member.value.percentageOfPayoutAmount !== 100) {
|
|
1261
|
+
member.value.percentageOfPayoutAmount = 100;
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1046
1264
|
}
|
|
1047
1265
|
}
|
|
1048
1266
|
},
|
|
@@ -1058,14 +1276,21 @@ export default {
|
|
|
1058
1276
|
},
|
|
1059
1277
|
);
|
|
1060
1278
|
|
|
1061
|
-
|
|
1062
|
-
(
|
|
1063
|
-
|
|
1064
|
-
if (
|
|
1065
|
-
|
|
1279
|
+
const onIinInput = () => {
|
|
1280
|
+
if (!!member.value.iin && member.value.iin.length === useMask().iin.length && memberSetting.value.isMultiple === true) {
|
|
1281
|
+
const alreadyInStatement = formStore[whichForm.value as MemberKeys].findIndex((i: Member) => i.iin === member.value.iin);
|
|
1282
|
+
if (alreadyInStatement !== -1 && alreadyInStatement !== Number(whichIndex.value)) {
|
|
1283
|
+
dataStore.showToaster('error', dataStore.t('toaster.hasAlreadyMember'), 3000);
|
|
1284
|
+
member.value.iin = null;
|
|
1066
1285
|
}
|
|
1067
|
-
}
|
|
1068
|
-
|
|
1286
|
+
}
|
|
1287
|
+
};
|
|
1288
|
+
|
|
1289
|
+
const onOtpCodeInput = async () => {
|
|
1290
|
+
if (member.value.otpCode && member.value.otpCode.length === useMask().otp.length) {
|
|
1291
|
+
await checkOtp();
|
|
1292
|
+
}
|
|
1293
|
+
};
|
|
1069
1294
|
|
|
1070
1295
|
watch(
|
|
1071
1296
|
() => dataStore.panel.open,
|
|
@@ -1074,6 +1299,7 @@ export default {
|
|
|
1074
1299
|
isPanelOpen.value = false;
|
|
1075
1300
|
isDocumentOpen.value = false;
|
|
1076
1301
|
isSearchOpen.value = false;
|
|
1302
|
+
isOtpPanelOpen.value = false;
|
|
1077
1303
|
dataStore.panelAction = null;
|
|
1078
1304
|
}
|
|
1079
1305
|
},
|
|
@@ -1095,10 +1321,12 @@ export default {
|
|
|
1095
1321
|
isPanelOpen,
|
|
1096
1322
|
isSearchOpen,
|
|
1097
1323
|
isDocumentOpen,
|
|
1324
|
+
isOtpPanelOpen,
|
|
1098
1325
|
isPanelLoading,
|
|
1099
1326
|
isButtonLoading,
|
|
1100
1327
|
isSubmittingForm,
|
|
1101
1328
|
documentLoading,
|
|
1329
|
+
otpSending,
|
|
1102
1330
|
panelValue,
|
|
1103
1331
|
panelList,
|
|
1104
1332
|
searchQuery,
|
|
@@ -1106,10 +1334,12 @@ export default {
|
|
|
1106
1334
|
memberDocument,
|
|
1107
1335
|
familyDialog,
|
|
1108
1336
|
selectedFamilyMember,
|
|
1337
|
+
sameAddress,
|
|
1109
1338
|
|
|
1110
1339
|
// Computed
|
|
1111
1340
|
whichForm,
|
|
1112
1341
|
whichIndex,
|
|
1342
|
+
memberSetting,
|
|
1113
1343
|
otpCondition,
|
|
1114
1344
|
hasOtp,
|
|
1115
1345
|
isDisabled,
|
|
@@ -1120,11 +1350,14 @@ export default {
|
|
|
1120
1350
|
hasGBDFL,
|
|
1121
1351
|
hasInsis,
|
|
1122
1352
|
hasGKB,
|
|
1353
|
+
hasFamilyStatus,
|
|
1354
|
+
hasInsurancePay,
|
|
1123
1355
|
|
|
1124
1356
|
// Rules
|
|
1125
1357
|
ageRule,
|
|
1126
1358
|
phoneRule,
|
|
1127
1359
|
residencyRule,
|
|
1360
|
+
birthDateRule,
|
|
1128
1361
|
|
|
1129
1362
|
// Functions
|
|
1130
1363
|
searchMember,
|
|
@@ -1142,6 +1375,10 @@ export default {
|
|
|
1142
1375
|
selectFamilyMember,
|
|
1143
1376
|
closeFamilyDialog,
|
|
1144
1377
|
scrollForm,
|
|
1378
|
+
onIinInput,
|
|
1379
|
+
onOtpCodeInput,
|
|
1380
|
+
deleteMember,
|
|
1381
|
+
selectMember,
|
|
1145
1382
|
};
|
|
1146
1383
|
},
|
|
1147
1384
|
};
|