hl-core 0.0.8 → 0.0.9-beta.1
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 +142 -101
- package/api/interceptors.ts +17 -13
- package/components/Button/Btn.vue +1 -1
- package/components/Button/ScrollButtons.vue +2 -2
- package/components/Complex/Page.vue +1 -1
- package/components/Dialog/Dialog.vue +9 -39
- package/components/Dialog/FamilyDialog.vue +7 -4
- package/components/Form/FormBlock.vue +90 -42
- package/components/Form/FormSection.vue +4 -1
- package/components/Form/FormToggle.vue +1 -2
- package/components/Form/ManagerAttachment.vue +197 -0
- package/components/Form/ProductConditionsBlock.vue +68 -14
- package/components/Input/Datepicker.vue +45 -0
- package/components/Input/FileInput.vue +2 -2
- package/components/Input/FormInput.vue +31 -7
- package/components/Input/PanelInput.vue +7 -2
- package/components/Input/RoundedInput.vue +2 -2
- package/components/Input/RoundedSelect.vue +137 -0
- package/components/Layout/Drawer.vue +4 -2
- package/components/Layout/Header.vue +40 -4
- package/components/Layout/Loader.vue +1 -1
- package/components/Layout/SettingsPanel.vue +51 -13
- package/components/Menu/MenuHover.vue +30 -0
- package/components/Menu/MenuNav.vue +29 -13
- package/components/Menu/MenuNavItem.vue +6 -3
- package/components/Pages/Anketa.vue +59 -33
- package/components/Pages/Auth.vue +139 -46
- package/components/Pages/Documents.vue +7 -7
- package/components/Pages/InvoiceInfo.vue +30 -0
- package/components/Pages/MemberForm.vue +544 -293
- package/components/Pages/ProductAgreement.vue +4 -2
- package/components/Pages/ProductConditions.vue +673 -75
- package/components/Panel/PanelHandler.vue +304 -0
- package/components/Panel/PanelSelectItem.vue +1 -1
- package/components/Transitions/SlideTransition.vue +5 -0
- package/components/Utilities/Chip.vue +27 -0
- package/components/Utilities/JsonViewer.vue +27 -0
- package/composables/axios.ts +1 -1
- package/composables/classes.ts +223 -101
- package/composables/constants.ts +26 -51
- package/composables/index.ts +80 -2
- package/composables/styles.ts +15 -3
- package/configs/i18n.ts +17 -0
- package/layouts/default.vue +6 -6
- package/locales/kz.json +585 -0
- package/locales/ru.json +587 -0
- package/nuxt.config.ts +13 -1
- package/package.json +43 -11
- package/pages/500.vue +2 -2
- package/pages/Token.vue +51 -0
- package/plugins/helperFunctionsPlugins.ts +6 -0
- package/plugins/storePlugin.ts +0 -1
- package/plugins/vuetifyPlugin.ts +8 -1
- package/store/data.store.ts +2649 -0
- package/store/form.store.ts +1 -1
- package/store/member.store.ts +164 -52
- package/store/{rules.js → rules.ts} +65 -34
- package/types/enum.ts +83 -0
- package/types/env.d.ts +10 -0
- package/types/index.ts +262 -5
- package/store/data.store.js +0 -2482
- package/store/messages.ts +0 -429
|
@@ -1,498 +1,545 @@
|
|
|
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 && 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]"
|
|
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, index) && !memberStore.canMemberCleared(whichForm, index)"
|
|
18
|
+
variant="plain"
|
|
19
|
+
:color="Number(whichIndex) === index ? '#FFF' : '#A0B3D8'"
|
|
20
|
+
@click.prevent="memberStore.canMemberDeleted(whichForm, index) || memberStore.canMemberCleared(whichForm, index) ? deleteMember(index) : null"
|
|
21
|
+
/>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<v-btn class="ml-2" icon="mdi-plus !text-[24px]" @click="memberStore.addMember(whichForm)" size="small" color="#A0B3D8" variant="tonal" />
|
|
25
|
+
</div>
|
|
26
|
+
<base-form-section
|
|
27
|
+
:title="$dataStore.t('form.personalData')"
|
|
28
|
+
:class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
|
|
29
|
+
>
|
|
30
|
+
<base-form-input
|
|
31
|
+
v-model="member.phoneNumber"
|
|
32
|
+
:label="$dataStore.t('form.phoneNumber')"
|
|
33
|
+
:maska="$maska.phone"
|
|
34
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
35
|
+
:clearable="!isDisabled"
|
|
36
|
+
:append-inner-icon="otpCondition ? 'mdi mdi-phone-message' : ''"
|
|
37
|
+
@append="openCustomPanel('otp')"
|
|
38
|
+
@keyup.enter.prevent="otpCondition ? openCustomPanel('otp') : null"
|
|
39
|
+
:rules="phoneRule"
|
|
40
|
+
/>
|
|
5
41
|
<base-form-input
|
|
6
42
|
v-model="member.iin"
|
|
7
|
-
:label="$t('form.iin')"
|
|
43
|
+
:label="$dataStore.t('form.iin')"
|
|
8
44
|
:maska="$maska.iin"
|
|
9
|
-
:readonly="isDisabled || isIinPhoneDisabled"
|
|
45
|
+
:readonly="!!isDisabled || !!isIinPhoneDisabled"
|
|
10
46
|
:clearable="!isDisabled"
|
|
11
47
|
:append-inner-icon="showSaveButton ? 'mdi mdi-magnify' : ''"
|
|
12
48
|
@append="searchMember"
|
|
49
|
+
@input="onIinInput"
|
|
13
50
|
:rules="$rules.required.concat($rules.iinRight)"
|
|
14
|
-
|
|
51
|
+
/>
|
|
15
52
|
<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"
|
|
53
|
+
v-model.trim="member.lastName"
|
|
38
54
|
:readonly="isDisabled || isFromGBD"
|
|
39
55
|
:clearable="!isDisabled"
|
|
40
|
-
:label="$t('form.lastName')"
|
|
56
|
+
:label="$dataStore.t('form.lastName')"
|
|
41
57
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
42
|
-
|
|
58
|
+
/>
|
|
43
59
|
<base-form-input
|
|
44
|
-
v-model="member.firstName"
|
|
60
|
+
v-model.trim="member.firstName"
|
|
45
61
|
:readonly="isDisabled || isFromGBD"
|
|
46
62
|
:clearable="!isDisabled"
|
|
47
|
-
:label="$t('form.firstName')"
|
|
63
|
+
:label="$dataStore.t('form.firstName')"
|
|
48
64
|
:rules="$rules.required.concat($rules.cyrillic)"
|
|
49
|
-
|
|
65
|
+
/>
|
|
50
66
|
<base-form-input
|
|
51
|
-
v-model="member.middleName"
|
|
67
|
+
v-model.trim="member.middleName"
|
|
52
68
|
:readonly="isDisabled || isFromGBD"
|
|
53
69
|
:clearable="!isDisabled"
|
|
54
|
-
:label="$t('form.middleName')"
|
|
55
|
-
:rules="$rules.
|
|
56
|
-
|
|
70
|
+
:label="$dataStore.t('form.middleName')"
|
|
71
|
+
:rules="$rules.cyrillicNonRequired"
|
|
72
|
+
/>
|
|
57
73
|
<base-form-input
|
|
58
74
|
v-model="member.birthDate"
|
|
59
75
|
:readonly="isDisabled || isFromGBD"
|
|
60
76
|
:clearable="!isDisabled"
|
|
61
|
-
:label="$t('form.birthDate')"
|
|
62
|
-
:rules="
|
|
77
|
+
:label="$dataStore.t('form.birthDate')"
|
|
78
|
+
:rules="birthDateRule"
|
|
63
79
|
:maska="$maska.date"
|
|
64
80
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
65
|
-
|
|
66
|
-
<base-form-input v-model="member.age" :label="$t('form.age')" :readonly="
|
|
81
|
+
/>
|
|
82
|
+
<base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
|
|
67
83
|
<base-panel-input
|
|
68
84
|
v-model="member.gender"
|
|
69
85
|
:value="member.gender.nameRu"
|
|
70
86
|
:readonly="isDisabled || isFromGBD"
|
|
71
87
|
:clearable="!isDisabled"
|
|
72
|
-
:label="$t('form.gender')"
|
|
88
|
+
:label="$dataStore.t('form.gender')"
|
|
73
89
|
:rules="$rules.objectRequired"
|
|
74
90
|
append-inner-icon="mdi mdi-chevron-right"
|
|
75
|
-
@append="openPanel($t('form.gender'), $dataStore.gender, 'gender')"
|
|
76
|
-
|
|
91
|
+
@append="openPanel($dataStore.t('form.gender'), $dataStore.gender, 'gender')"
|
|
92
|
+
/>
|
|
77
93
|
<base-panel-input
|
|
94
|
+
v-if="hasFamilyStatus"
|
|
78
95
|
v-model="member.familyStatus"
|
|
79
96
|
:value="member.familyStatus.nameRu"
|
|
80
97
|
:readonly="isDisabled"
|
|
81
98
|
:clearable="!isDisabled"
|
|
82
|
-
:label="$t('form.familyStatus')"
|
|
99
|
+
:label="$dataStore.t('form.familyStatus')"
|
|
83
100
|
:rules="$rules.objectRequired"
|
|
84
101
|
append-inner-icon="mdi mdi-chevron-right"
|
|
85
|
-
@append="openPanel($t('form.familyStatus'), [], 'familyStatus', $dataStore.getFamilyStatuses)"
|
|
86
|
-
|
|
102
|
+
@append="openPanel($dataStore.t('form.familyStatus'), [], 'familyStatus', $dataStore.getFamilyStatuses)"
|
|
103
|
+
/>
|
|
87
104
|
<base-panel-input
|
|
88
105
|
v-if="(whichForm === formStore.beneficiaryFormKey || whichForm === formStore.insuredFormKey) && member.iin !== formStore.policyholderForm.iin"
|
|
89
106
|
v-model="member.relationDegree"
|
|
90
107
|
:value="member.relationDegree.nameRu"
|
|
91
108
|
:readonly="isDisabled"
|
|
92
109
|
:clearable="!isDisabled"
|
|
93
|
-
:label="$t('form.relations')"
|
|
110
|
+
:label="$dataStore.t('form.relations')"
|
|
94
111
|
:rules="$rules.objectRequired"
|
|
95
112
|
append-inner-icon="mdi mdi-chevron-right"
|
|
96
|
-
@append="openPanel($t('form.relations'), [], 'relationDegree', $dataStore.getRelationTypes)"
|
|
97
|
-
|
|
113
|
+
@append="openPanel($dataStore.t('form.relations'), [], 'relationDegree', $dataStore.getRelationTypes)"
|
|
114
|
+
/>
|
|
98
115
|
<base-form-input
|
|
99
116
|
v-if="whichForm === formStore.beneficiaryFormKey"
|
|
100
117
|
v-model="member.percentageOfPayoutAmount"
|
|
101
118
|
:readonly="isDisabled"
|
|
102
119
|
:clearable="!isDisabled"
|
|
103
|
-
:label="$t('form.percentageOfPayoutAmount')"
|
|
120
|
+
:label="$dataStore.t('form.percentageOfPayoutAmount')"
|
|
104
121
|
:rules="$rules.required.concat($rules.numbers)"
|
|
105
|
-
|
|
106
|
-
<base-form-toggle v-if="$dataStore.isGons" :disabled="isDisabled" :has-border="false" v-model="member.isPdl" :title="$dataStore.t('isMemberIPDL')"></base-form-toggle>
|
|
122
|
+
/>
|
|
107
123
|
</base-form-section>
|
|
108
|
-
<base-form-section :title="$t('policyholdersRepresentative.PowerOfAttorney')" v-if="whichForm === formStore.policyholdersRepresentativeFormKey">
|
|
124
|
+
<base-form-section :title="$dataStore.t('policyholdersRepresentative.PowerOfAttorney')" v-if="whichForm === formStore.policyholdersRepresentativeFormKey">
|
|
109
125
|
<base-form-input
|
|
110
|
-
v-model="member.fullNameRod"
|
|
111
|
-
:label="$t('policyholdersRepresentative.NameParentCase')"
|
|
126
|
+
v-model.trim="member.fullNameRod"
|
|
127
|
+
:label="$dataStore.t('policyholdersRepresentative.NameParentCase')"
|
|
112
128
|
:readonly="isDisabled"
|
|
113
129
|
:clearable="!isDisabled"
|
|
114
130
|
:rules="$rules.required"
|
|
115
|
-
|
|
131
|
+
/>
|
|
116
132
|
<base-form-input
|
|
117
|
-
v-model="member.confirmDocTypeKz"
|
|
118
|
-
:label="$t('policyholdersRepresentative.basisDocKz')"
|
|
133
|
+
v-model.trim="member.confirmDocTypeKz"
|
|
134
|
+
:label="$dataStore.t('policyholdersRepresentative.basisDocKz')"
|
|
119
135
|
:readonly="isDisabled"
|
|
120
136
|
:clearable="!isDisabled"
|
|
121
137
|
:rules="$rules.required"
|
|
122
|
-
|
|
138
|
+
/>
|
|
123
139
|
<base-form-input
|
|
124
|
-
v-model="member.confirmDocType"
|
|
125
|
-
:label="$t('policyholdersRepresentative.basisDocRu')"
|
|
140
|
+
v-model.trim="member.confirmDocType"
|
|
141
|
+
:label="$dataStore.t('policyholdersRepresentative.basisDocRu')"
|
|
126
142
|
:readonly="isDisabled"
|
|
127
143
|
:clearable="!isDisabled"
|
|
128
144
|
:rules="$rules.required"
|
|
129
|
-
|
|
145
|
+
/>
|
|
130
146
|
<base-form-input
|
|
131
|
-
v-model="member.confirmDocTypeRod"
|
|
132
|
-
:label="$t('policyholdersRepresentative.basisDocRuParentCase')"
|
|
147
|
+
v-model.trim="member.confirmDocTypeRod"
|
|
148
|
+
:label="$dataStore.t('policyholdersRepresentative.basisDocRuParentCase')"
|
|
133
149
|
:readonly="isDisabled"
|
|
134
150
|
:clearable="!isDisabled"
|
|
135
151
|
:rules="$rules.required"
|
|
136
|
-
|
|
152
|
+
/>
|
|
137
153
|
<base-form-input
|
|
138
|
-
v-model="member.confirmDocNumber"
|
|
139
|
-
:label="$t('policyholdersRepresentative.numberDoc')"
|
|
154
|
+
v-model.trim="member.confirmDocNumber"
|
|
155
|
+
:label="$dataStore.t('policyholdersRepresentative.numberDoc')"
|
|
140
156
|
:readonly="isDisabled"
|
|
141
157
|
:clearable="!isDisabled"
|
|
142
158
|
:rules="$rules.required"
|
|
143
|
-
|
|
159
|
+
/>
|
|
144
160
|
<base-form-input
|
|
145
161
|
v-model="member.confirmDocIssueDate"
|
|
146
|
-
:label="$t('form.documentDate')"
|
|
162
|
+
:label="$dataStore.t('form.documentDate')"
|
|
147
163
|
:readonly="isDisabled"
|
|
148
164
|
:clearable="!isDisabled"
|
|
149
165
|
:rules="$rules.date"
|
|
150
166
|
:maska="$maska.date"
|
|
151
167
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
152
|
-
|
|
168
|
+
/>
|
|
153
169
|
<base-form-input
|
|
154
170
|
v-model="member.confirmDocExpireDate"
|
|
155
|
-
:label="$t('form.documentExpire')"
|
|
171
|
+
:label="$dataStore.t('form.documentExpire')"
|
|
156
172
|
:readonly="isDisabled"
|
|
157
173
|
:clearable="!isDisabled"
|
|
158
174
|
:rules="$rules.date"
|
|
159
175
|
:maska="$maska.date"
|
|
160
176
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
161
|
-
|
|
162
|
-
<base-form-input v-model="member.migrationCard" :label="$t('policyholdersRepresentative.numberVisa')"
|
|
177
|
+
/>
|
|
178
|
+
<base-form-input v-model.trim="member.migrationCard" :label="$dataStore.t('policyholdersRepresentative.numberVisa')" />
|
|
163
179
|
<base-form-input
|
|
164
180
|
v-model="member.migrationCardIssueDate"
|
|
165
|
-
:label="$t('form.documentDate')"
|
|
181
|
+
:label="$dataStore.t('form.documentDate')"
|
|
166
182
|
:readonly="isDisabled"
|
|
167
183
|
:clearable="!isDisabled"
|
|
168
184
|
:rules="$rules.date"
|
|
169
185
|
:maska="$maska.date"
|
|
170
186
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
171
|
-
|
|
187
|
+
/>
|
|
172
188
|
<base-form-input
|
|
173
189
|
v-model="member.migrationCardExpireDate"
|
|
174
|
-
:label="$t('form.documentExpire')"
|
|
190
|
+
:label="$dataStore.t('form.documentExpire')"
|
|
175
191
|
:readonly="isDisabled"
|
|
176
192
|
:clearable="!isDisabled"
|
|
177
193
|
:rules="$rules.date"
|
|
178
194
|
:maska="$maska.date"
|
|
179
195
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
180
|
-
|
|
196
|
+
/>
|
|
181
197
|
<base-form-toggle
|
|
182
198
|
v-model="formStore.policyholdersRepresentativeForm.isNotary"
|
|
183
199
|
:disabled="isDisabled"
|
|
184
200
|
:has-border="false"
|
|
185
|
-
:title="$t('policyholdersRepresentative.confirmAuthority')"
|
|
186
|
-
|
|
201
|
+
:title="$dataStore.t('policyholdersRepresentative.confirmAuthority')"
|
|
202
|
+
/>
|
|
187
203
|
<base-form-input
|
|
188
|
-
v-model="member.notaryLongName"
|
|
189
|
-
:label="$t('policyholdersRepresentative.name')"
|
|
204
|
+
v-model.trim="member.notaryLongName"
|
|
205
|
+
:label="$dataStore.t('policyholdersRepresentative.name')"
|
|
190
206
|
:readonly="isDisabled"
|
|
191
207
|
:clearable="!isDisabled"
|
|
192
208
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required : []"
|
|
193
|
-
|
|
209
|
+
/>
|
|
194
210
|
<base-form-input
|
|
195
|
-
v-model="member.notaryLicenseNumber"
|
|
196
|
-
:label="$t('policyholdersRepresentative.numberLicense')"
|
|
211
|
+
v-model.trim="member.notaryLicenseNumber"
|
|
212
|
+
:label="$dataStore.t('policyholdersRepresentative.numberLicense')"
|
|
197
213
|
:readonly="isDisabled"
|
|
198
214
|
:clearable="!isDisabled"
|
|
199
215
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required : []"
|
|
200
|
-
|
|
216
|
+
/>
|
|
201
217
|
<base-form-input
|
|
202
|
-
v-model="member.notaryLicenseIssuer"
|
|
203
|
-
:label="$t('policyholdersRepresentative.documentIssuers')"
|
|
218
|
+
v-model.trim="member.notaryLicenseIssuer"
|
|
219
|
+
:label="$dataStore.t('policyholdersRepresentative.documentIssuers')"
|
|
204
220
|
:readonly="isDisabled"
|
|
205
221
|
:clearable="!isDisabled"
|
|
206
222
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required : []"
|
|
207
|
-
|
|
223
|
+
/>
|
|
208
224
|
<base-form-input
|
|
209
225
|
v-model="member.notaryLicenseDate"
|
|
210
|
-
:label="$t('form.documentDate')"
|
|
226
|
+
:label="$dataStore.t('form.documentDate')"
|
|
211
227
|
:readonly="isDisabled"
|
|
212
228
|
:clearable="!isDisabled"
|
|
213
229
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required.concat($rules.date) : []"
|
|
214
230
|
:maska="$maska.date"
|
|
215
231
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
216
|
-
|
|
232
|
+
/>
|
|
217
233
|
</base-form-section>
|
|
218
|
-
<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"
|
|
220
|
-
<base-form-input v-model="member.jobPosition" :label="$t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"
|
|
221
|
-
<base-form-input v-model="member.jobPlace" :label="$t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required"
|
|
234
|
+
<base-form-section :title="$dataStore.t('form.jobData')" v-if="$dataStore.hasJobSection(whichForm)">
|
|
235
|
+
<base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
236
|
+
<base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
237
|
+
<base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
|
|
222
238
|
</base-form-section>
|
|
223
|
-
<base-form-section :title="$t('form.placeRegistration')" v-if="$dataStore.hasPlaceSection(whichForm)">
|
|
239
|
+
<base-form-section :title="$dataStore.t('form.placeRegistration')" v-if="$dataStore.hasPlaceSection(whichForm)">
|
|
240
|
+
<base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
|
|
224
241
|
<base-panel-input
|
|
225
242
|
v-model="member.registrationCountry"
|
|
226
243
|
:value="member.registrationCountry.nameRu"
|
|
227
244
|
:readonly="isDisabled"
|
|
228
245
|
:clearable="!isDisabled"
|
|
229
|
-
:label="$t('form.Country')"
|
|
246
|
+
:label="$dataStore.t('form.Country')"
|
|
230
247
|
:rules="$rules.objectRequired"
|
|
231
248
|
append-inner-icon="mdi mdi-chevron-right"
|
|
232
|
-
@append="openPanel($t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
|
|
233
|
-
|
|
249
|
+
@append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
|
|
250
|
+
/>
|
|
234
251
|
<base-fade-transition>
|
|
235
252
|
<div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
|
|
236
253
|
<base-panel-input
|
|
237
254
|
v-model="member.registrationProvince"
|
|
238
255
|
:value="member.registrationProvince.nameRu"
|
|
239
|
-
:label="$t('form.Province')"
|
|
256
|
+
:label="$dataStore.t('form.Province')"
|
|
240
257
|
:readonly="isDisabled"
|
|
241
258
|
:clearable="!isDisabled"
|
|
242
259
|
:rules="$rules.objectRequired"
|
|
243
260
|
append-inner-icon="mdi mdi-chevron-right"
|
|
244
|
-
@append="openPanel($t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
|
|
245
|
-
|
|
261
|
+
@append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
|
|
262
|
+
/>
|
|
246
263
|
<base-panel-input
|
|
247
264
|
v-model="member.registrationRegionType"
|
|
248
265
|
:value="member.registrationRegionType.nameRu"
|
|
249
|
-
:label="$t('form.RegionType')"
|
|
266
|
+
:label="$dataStore.t('form.RegionType')"
|
|
250
267
|
:readonly="isDisabled"
|
|
251
268
|
:clearable="!isDisabled"
|
|
252
269
|
:rules="$rules.objectRequired"
|
|
253
270
|
append-inner-icon="mdi mdi-chevron-right"
|
|
254
|
-
@append="openPanel($t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
|
|
255
|
-
|
|
271
|
+
@append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
|
|
272
|
+
/>
|
|
256
273
|
<base-panel-input
|
|
257
274
|
v-if="member.registrationRegionType.nameRu !== 'город'"
|
|
258
275
|
v-model="member.registrationRegion"
|
|
259
276
|
:value="member.registrationRegion.nameRu"
|
|
260
|
-
:label="$t('form.Region')"
|
|
277
|
+
:label="$dataStore.t('form.Region')"
|
|
261
278
|
:readonly="isDisabled"
|
|
262
279
|
:clearable="!isDisabled"
|
|
263
280
|
:rules="$rules.objectRequired"
|
|
264
281
|
append-inner-icon="mdi mdi-chevron-right"
|
|
265
|
-
@append="openPanel($t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
|
|
266
|
-
|
|
282
|
+
@append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
|
|
283
|
+
/>
|
|
267
284
|
<base-panel-input
|
|
268
285
|
v-model="member.registrationCity"
|
|
269
286
|
:value="member.registrationCity.nameRu"
|
|
270
|
-
:label="$t('form.City')"
|
|
287
|
+
:label="$dataStore.t('form.City')"
|
|
271
288
|
:readonly="isDisabled"
|
|
272
289
|
:clearable="!isDisabled"
|
|
273
290
|
:rules="$rules.objectRequired"
|
|
274
291
|
append-inner-icon="mdi mdi-chevron-right"
|
|
275
|
-
@append="openPanel($t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
276
|
-
|
|
292
|
+
@append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
293
|
+
/>
|
|
277
294
|
<!-- <base-form-input v-if="$dataStore.isGons" v-model="member.postIndex" :readonly="isDisabled"
|
|
278
|
-
:clearable="!isDisabled" :label="$t('form.postIndex')" :maska="$maska.post"
|
|
279
|
-
<base-form-input v-model="member.registrationQuarter" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.Quarter')"
|
|
280
|
-
<base-form-input v-model="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.MicroDistrict')"
|
|
295
|
+
:clearable="!isDisabled" :label="$dataStore.t('form.postIndex')" :maska="$maska.post"/> -->
|
|
296
|
+
<base-form-input v-model.trim="member.registrationQuarter" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.Quarter')" />
|
|
297
|
+
<base-form-input v-model.trim="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.MicroDistrict')" />
|
|
281
298
|
<base-form-input
|
|
282
|
-
v-model="member.registrationStreet"
|
|
299
|
+
v-model.trim="member.registrationStreet"
|
|
283
300
|
:rules="$rules.required"
|
|
284
301
|
:readonly="isDisabled"
|
|
285
302
|
:clearable="!isDisabled"
|
|
286
|
-
:label="$t('form.Street')"
|
|
287
|
-
|
|
303
|
+
:label="$dataStore.t('form.Street')"
|
|
304
|
+
/>
|
|
288
305
|
<base-form-input
|
|
289
|
-
v-model="member.registrationNumberHouse"
|
|
306
|
+
v-model.trim="member.registrationNumberHouse"
|
|
290
307
|
:rules="$rules.required"
|
|
291
308
|
:readonly="isDisabled"
|
|
292
309
|
:clearable="!isDisabled"
|
|
293
|
-
:label="$t('form.NumberHouse')"
|
|
294
|
-
|
|
295
|
-
<base-form-input v-model="member.registrationNumberApartment" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.NumberApartment')"
|
|
310
|
+
:label="$dataStore.t('form.NumberHouse')"
|
|
311
|
+
/>
|
|
312
|
+
<base-form-input v-model.trim="member.registrationNumberApartment" :readonly="isDisabled" :clearable="!isDisabled" :label="$dataStore.t('form.NumberApartment')" />
|
|
296
313
|
</div>
|
|
297
314
|
</base-fade-transition>
|
|
298
315
|
</base-form-section>
|
|
299
|
-
<base-form-section :title="$t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
|
|
316
|
+
<base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
|
|
300
317
|
<base-panel-input
|
|
301
318
|
v-model="member.birthPlace"
|
|
302
319
|
:value="member.birthPlace.nameRu"
|
|
303
|
-
:label="$t('form.Country')"
|
|
320
|
+
:label="$dataStore.t('form.Country')"
|
|
304
321
|
:readonly="isDisabled"
|
|
305
322
|
:clearable="!isDisabled"
|
|
306
323
|
:rules="$rules.objectRequired"
|
|
307
324
|
append-inner-icon="mdi mdi-chevron-right"
|
|
308
|
-
@append="openPanel($t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
|
|
309
|
-
|
|
325
|
+
@append="openPanel($dataStore.t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
|
|
326
|
+
/>
|
|
310
327
|
<!-- TODO -->
|
|
311
328
|
<!-- <base-panel-input
|
|
312
329
|
v-model="member.birthRegion"
|
|
313
330
|
:value="member.birthRegion.nameRu"
|
|
314
|
-
:label="$t('form.Region')"
|
|
331
|
+
:label="$dataStore.t('form.Region')"
|
|
315
332
|
:readonly="isDisabled"
|
|
316
333
|
:clearable="!isDisabled"
|
|
317
334
|
:rules="$rules.objectRequired"
|
|
318
335
|
append-inner-icon="mdi mdi-chevron-right"
|
|
319
|
-
@append="openPanel($t('form.Region'), [], 'birthRegion', $dataStore.getRegions)"
|
|
320
|
-
|
|
336
|
+
@append="openPanel($dataStore.t('form.Region'), [], 'birthRegion', $dataStore.getRegions)"
|
|
337
|
+
/> -->
|
|
321
338
|
</base-form-section>
|
|
322
|
-
<base-form-section :title="$t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
|
|
339
|
+
<base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
|
|
323
340
|
<base-panel-input
|
|
324
341
|
v-model="member.documentType"
|
|
325
342
|
:value="member.documentType.nameRu"
|
|
326
|
-
:label="$t('form.documentType')"
|
|
343
|
+
:label="$dataStore.t('form.documentType')"
|
|
327
344
|
:readonly="isDisabled"
|
|
328
345
|
:clearable="!isDisabled"
|
|
329
346
|
:rules="$rules.objectRequired"
|
|
330
347
|
append-inner-icon="mdi mdi-chevron-right"
|
|
331
|
-
@append="openPanel($t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
|
|
332
|
-
|
|
348
|
+
@append="openPanel($dataStore.t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
|
|
349
|
+
/>
|
|
333
350
|
<base-form-input
|
|
334
|
-
v-model="member.documentNumber"
|
|
335
|
-
:label="$t('form.documentNumber')"
|
|
351
|
+
v-model.trim="member.documentNumber"
|
|
352
|
+
:label="$dataStore.t('form.documentNumber')"
|
|
336
353
|
:readonly="isDisabled"
|
|
337
354
|
:clearable="!isDisabled"
|
|
338
355
|
:rules="$rules.required"
|
|
339
|
-
|
|
340
|
-
<base-file-input v-if="!memberDocument" :disabled="isDisabled" :clearable="!isDisabled" @input="attachFile($event)"
|
|
356
|
+
/>
|
|
357
|
+
<!-- <base-file-input v-if="!memberDocument" :disabled="isDisabled" :clearable="!isDisabled" @input="attachFile($event)" />
|
|
341
358
|
<base-empty-form-field v-if="memberDocument" @click="!isDisabled && openCustomPanel('document')" class="justify-between">
|
|
342
359
|
{{ `${memberDocument.fileTypeName} - ${memberDocument.fileName}` }}
|
|
343
360
|
<i class="cursor-pointer mdi mdi-file-document mr-6 text-[#a0b3d8] text-xl"></i>
|
|
344
|
-
</base-empty-form-field>
|
|
361
|
+
</base-empty-form-field> -->
|
|
345
362
|
<base-panel-input
|
|
346
363
|
v-model="member.documentIssuers"
|
|
347
364
|
:value="member.documentIssuers.nameRu"
|
|
348
|
-
:label="$t('form.documentIssuers')"
|
|
365
|
+
:label="$dataStore.t('form.documentIssuers')"
|
|
349
366
|
:readonly="isDisabled"
|
|
350
367
|
:clearable="!isDisabled"
|
|
351
368
|
:rules="$rules.objectRequired"
|
|
352
369
|
append-inner-icon="mdi mdi-chevron-right"
|
|
353
|
-
@append="openPanel($t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
|
|
354
|
-
|
|
370
|
+
@append="openPanel($dataStore.t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
|
|
371
|
+
/>
|
|
355
372
|
<base-form-input
|
|
356
373
|
v-model="member.documentDate"
|
|
357
|
-
:label="$t('form.documentDate')"
|
|
374
|
+
:label="$dataStore.t('form.documentDate')"
|
|
358
375
|
:readonly="isDisabled"
|
|
359
376
|
:clearable="!isDisabled"
|
|
360
377
|
:rules="$rules.required.concat($rules.date)"
|
|
361
378
|
:maska="$maska.date"
|
|
362
379
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
363
|
-
|
|
380
|
+
/>
|
|
364
381
|
<base-fade-transition>
|
|
365
382
|
<base-form-input
|
|
366
383
|
v-if="member.documentType.ids !== 'SBI' && member.documentType.ids !== 'VNZ'"
|
|
367
384
|
v-model="member.documentExpire"
|
|
368
|
-
:label="$t('form.documentExpire')"
|
|
385
|
+
:label="$dataStore.t('form.documentExpire')"
|
|
369
386
|
:readonly="isDisabled"
|
|
370
387
|
:clearable="!isDisabled"
|
|
371
388
|
:rules="$rules.required.concat($rules.date)"
|
|
372
389
|
:maska="$maska.date"
|
|
373
390
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
374
|
-
|
|
391
|
+
/>
|
|
375
392
|
</base-fade-transition>
|
|
376
393
|
<base-panel-input
|
|
377
394
|
v-model="member.signOfResidency"
|
|
378
395
|
:value="member.signOfResidency.nameRu"
|
|
379
|
-
:label="$t('form.signOfResidency')"
|
|
396
|
+
:label="$dataStore.t('form.signOfResidency')"
|
|
380
397
|
:readonly="isDisabled"
|
|
381
398
|
:clearable="!isDisabled"
|
|
382
|
-
:rules="
|
|
399
|
+
:rules="residencyRule"
|
|
383
400
|
append-inner-icon="mdi mdi-chevron-right"
|
|
384
|
-
@append="openPanel($t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
385
|
-
|
|
401
|
+
@append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
402
|
+
/>
|
|
386
403
|
<base-panel-input
|
|
387
404
|
v-model="member.countryOfTaxResidency"
|
|
388
405
|
:value="member.countryOfTaxResidency.nameRu"
|
|
389
|
-
:label="$t('form.countryOfTaxResidency')"
|
|
406
|
+
:label="$dataStore.t('form.countryOfTaxResidency')"
|
|
390
407
|
:readonly="isDisabled"
|
|
391
408
|
:clearable="!isDisabled"
|
|
392
409
|
:rules="$rules.objectRequired"
|
|
393
410
|
append-inner-icon="mdi mdi-chevron-right"
|
|
394
|
-
@append="openPanel($t('form.countryOfTaxResidency'), [], 'countryOfTaxResidency', $dataStore.getTaxCountries)"
|
|
395
|
-
|
|
411
|
+
@append="openPanel($dataStore.t('form.countryOfTaxResidency'), [], 'countryOfTaxResidency', $dataStore.getTaxCountries)"
|
|
412
|
+
/>
|
|
396
413
|
<base-fade-transition>
|
|
397
414
|
<base-panel-input
|
|
398
415
|
v-if="member.countryOfTaxResidency.ids === '500014.3'"
|
|
399
416
|
v-model="member.addTaxResidency"
|
|
400
417
|
:value="member.addTaxResidency.nameRu"
|
|
401
|
-
:label="$t('form.addTaxResidency')"
|
|
418
|
+
:label="$dataStore.t('form.addTaxResidency')"
|
|
402
419
|
:readonly="isDisabled"
|
|
403
420
|
:clearable="!isDisabled"
|
|
404
421
|
:rules="$rules.objectRequired"
|
|
405
422
|
append-inner-icon="mdi mdi-chevron-right"
|
|
406
|
-
@append="openPanel($t('form.addTaxResidency'), [], 'addTaxResidency', $dataStore.getAdditionalTaxCountries)"
|
|
407
|
-
|
|
423
|
+
@append="openPanel($dataStore.t('form.addTaxResidency'), [], 'addTaxResidency', $dataStore.getAdditionalTaxCountries)"
|
|
424
|
+
/>
|
|
408
425
|
</base-fade-transition>
|
|
409
426
|
<base-panel-input
|
|
427
|
+
v-if="hasSignOfIPDL"
|
|
410
428
|
v-model="member.signOfIPDL"
|
|
411
429
|
:value="member.signOfIPDL.nameRu"
|
|
412
|
-
:label="$t('form.signOfIPDL')"
|
|
430
|
+
:label="$dataStore.t('form.signOfIPDL')"
|
|
413
431
|
:readonly="isDisabled"
|
|
414
432
|
:clearable="!isDisabled"
|
|
415
433
|
:rules="$rules.objectRequired"
|
|
416
434
|
append-inner-icon="mdi mdi-chevron-right"
|
|
417
|
-
@append="openPanel($t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
|
|
418
|
-
|
|
435
|
+
@append="openPanel($dataStore.t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
|
|
436
|
+
/>
|
|
419
437
|
<base-panel-input
|
|
420
438
|
v-model="member.countryOfCitizenship"
|
|
421
439
|
:value="member.countryOfCitizenship.nameRu"
|
|
422
|
-
:label="$t('form.countryOfCitizenship')"
|
|
440
|
+
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
423
441
|
:readonly="isDisabled"
|
|
424
442
|
:clearable="!isDisabled"
|
|
425
443
|
:rules="$rules.objectRequired"
|
|
426
444
|
append-inner-icon="mdi mdi-chevron-right"
|
|
427
|
-
@append="openPanel($t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
|
|
428
|
-
|
|
445
|
+
@append="openPanel($dataStore.t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
|
|
446
|
+
/>
|
|
429
447
|
<base-panel-input
|
|
430
448
|
v-model="member.economySectorCode"
|
|
431
449
|
:value="member.economySectorCode.nameRu"
|
|
432
|
-
:label="$t('form.economySectorCode')"
|
|
450
|
+
:label="$dataStore.t('form.economySectorCode')"
|
|
433
451
|
:readonly="isDisabled"
|
|
434
452
|
:clearable="!isDisabled"
|
|
435
453
|
:rules="$rules.objectRequired"
|
|
436
454
|
append-inner-icon="mdi mdi-chevron-right"
|
|
437
|
-
@append="openPanel($t('form.economySectorCode'), [], 'economySectorCode', $dataStore.getSectorCodeList)"
|
|
438
|
-
|
|
455
|
+
@append="openPanel($dataStore.t('form.economySectorCode'), [], 'economySectorCode', $dataStore.getSectorCodeList)"
|
|
456
|
+
/>
|
|
457
|
+
<base-panel-input
|
|
458
|
+
v-if="hasInsurancePay"
|
|
459
|
+
v-model="member.insurancePay"
|
|
460
|
+
:value="member.insurancePay.nameRu"
|
|
461
|
+
:readonly="isDisabled"
|
|
462
|
+
:clearable="!isDisabled"
|
|
463
|
+
:rules="$rules.objectRequired"
|
|
464
|
+
:label="$dataStore.t('form.insurancePay')"
|
|
465
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
466
|
+
@append="openPanel($dataStore.t('form.insurancePay'), $dataStore.insurancePay, 'insurancePay', $dataStore.getInsurancePay)"
|
|
467
|
+
/>
|
|
439
468
|
</base-form-section>
|
|
440
|
-
<base-form-section :title="$t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
469
|
+
<base-form-section :title="$dataStore.t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
441
470
|
<base-form-input
|
|
442
471
|
v-model="member.homePhone"
|
|
443
472
|
:maska="$maska.phone"
|
|
444
473
|
placeholder="+7 7"
|
|
445
|
-
:label="$t('form.homePhone')"
|
|
474
|
+
:label="$dataStore.t('form.homePhone')"
|
|
446
475
|
:readonly="isDisabled"
|
|
447
476
|
:clearable="!isDisabled"
|
|
448
477
|
:rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
|
|
449
|
-
|
|
450
|
-
<base-form-input v-model.trim="member.email" :label="$t('form.email')" :rules="$rules.email"
|
|
478
|
+
/>
|
|
479
|
+
<base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
|
|
451
480
|
</base-form-section>
|
|
452
481
|
</v-form>
|
|
453
|
-
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$t('buttons.save')" @click="submitForm"
|
|
482
|
+
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
|
|
454
483
|
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
455
484
|
<div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
|
|
456
|
-
<base-rounded-input v-model="searchQuery" :label="$t('labels.search')" class="w-full p-2" :hide-details="true"
|
|
485
|
+
<base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
457
486
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
458
|
-
<base-panel-select-item :text="$t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())"
|
|
487
|
+
<base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
|
|
459
488
|
<base-panel-select-item
|
|
460
489
|
v-for="(item, index) of panelList.filter(i => i.nameRu && (i.nameRu as string).match(new RegExp(searchQuery, 'i')))"
|
|
461
490
|
:key="index"
|
|
462
|
-
:text="item.nameRu as string"
|
|
491
|
+
:text="(item.nameRu as string)"
|
|
463
492
|
:selected="item.nameRu === panelValue.nameRu"
|
|
464
493
|
@click="pickPanelValue(item)"
|
|
465
|
-
|
|
494
|
+
/>
|
|
466
495
|
</div>
|
|
467
|
-
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50"
|
|
496
|
+
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
468
497
|
</div>
|
|
469
498
|
</Teleport>
|
|
470
499
|
<Teleport v-if="isSearchOpen" to="#panel-actions">
|
|
471
500
|
<div :class="[$libStyles.flexColNav]">
|
|
472
|
-
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$t('buttons.fromGBDFL')" @click="getContragentFromGBDFL"
|
|
473
|
-
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$t('buttons.fromInsis')" @click="getContragent"
|
|
474
|
-
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$t('buttons.fromGKB')" @click="getFamilyInfo"
|
|
501
|
+
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
|
|
502
|
+
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
|
|
503
|
+
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
|
|
475
504
|
</div>
|
|
476
505
|
</Teleport>
|
|
477
506
|
<Teleport v-if="isDocumentOpen" to="#panel-actions">
|
|
478
507
|
<div :class="[$libStyles.flexColNav]">
|
|
479
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')"
|
|
480
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')"
|
|
508
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
|
|
509
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
|
|
481
510
|
</div>
|
|
482
511
|
</Teleport>
|
|
483
|
-
<
|
|
512
|
+
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
|
|
513
|
+
<div :class="[$libStyles.flexColNav]">
|
|
514
|
+
<base-fade-transition>
|
|
515
|
+
<base-rounded-input
|
|
516
|
+
v-if="otpCondition && member.otpTokenId"
|
|
517
|
+
v-model="member.otpCode"
|
|
518
|
+
:label="$dataStore.t('form.otpCode')"
|
|
519
|
+
:maska="$maska.otp"
|
|
520
|
+
:append-inner-icon="hasOtp ? 'mdi-cellphone-message text-[17px]' : ''"
|
|
521
|
+
hide-details
|
|
522
|
+
@keyup.enter.prevent="hasOtp ? checkOtp() : null"
|
|
523
|
+
@input="onOtpCodeInput"
|
|
524
|
+
/>
|
|
525
|
+
</base-fade-transition>
|
|
526
|
+
<base-btn v-if="!member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.sendOtp')" @click="sendOtp(false)" />
|
|
527
|
+
<base-btn v-if="member.otpTokenId" :disabled="otpSending" :loading="otpSending" :text="$dataStore.t('buttons.check')" @click="checkOtp()" />
|
|
528
|
+
</div>
|
|
529
|
+
</Teleport>
|
|
530
|
+
<base-dialog v-model="familyDialog" :title="$dataStore.t('dialog.familyMember')" actions="familyDialog">
|
|
484
531
|
<template #actions>
|
|
485
|
-
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)"
|
|
532
|
+
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
|
|
486
533
|
</template>
|
|
487
534
|
</base-dialog>
|
|
488
535
|
</section>
|
|
489
|
-
<base-scroll-buttons @up="scrollForm('up')" @down="scrollForm('down')"
|
|
536
|
+
<base-scroll-buttons @up="scrollForm('up')" @down="scrollForm('down')" />
|
|
490
537
|
</template>
|
|
491
538
|
|
|
492
539
|
<script lang="ts">
|
|
493
|
-
import {
|
|
494
|
-
import { Value, DocumentItem } from '@/composables/classes';
|
|
540
|
+
import { Value, DocumentItem, Member } from '../../composables/classes';
|
|
495
541
|
import { uuid } from 'vue-uuid';
|
|
542
|
+
import { StoreMembers } from '../../types/enum';
|
|
496
543
|
|
|
497
544
|
export default {
|
|
498
545
|
setup() {
|
|
@@ -502,31 +549,35 @@ export default {
|
|
|
502
549
|
const dataStore = useDataStore();
|
|
503
550
|
const formStore = useFormStore();
|
|
504
551
|
const memberStore = useMemberStore();
|
|
505
|
-
const
|
|
506
|
-
|
|
507
|
-
const
|
|
552
|
+
const whichForm = computed(() => route.query.tab as keyof typeof StoreMembers);
|
|
553
|
+
const whichIndex = computed(() => route.query.i as string);
|
|
554
|
+
const getMember = (whichForm: keyof typeof StoreMembers, whichIndex?: string) => memberStore.getMemberFromStore(whichForm, Number((whichIndex ? whichIndex : '0') as string))!;
|
|
555
|
+
const member = ref(getMember(whichForm.value, whichIndex.value));
|
|
508
556
|
const selectedFamilyMember = ref<BirthInfoGKB>({});
|
|
509
557
|
const isPanelOpen = ref<boolean>(false);
|
|
510
558
|
const memberDocument = ref<DocumentItem>();
|
|
511
559
|
const isButtonLoading = ref<boolean>(false);
|
|
512
560
|
const isSubmittingForm = ref<boolean>(false);
|
|
513
561
|
const documentLoading = ref<boolean>(false);
|
|
562
|
+
const otpSending = ref<boolean>(false);
|
|
514
563
|
const isSearchOpen = ref<boolean>(false);
|
|
515
564
|
const isDocumentOpen = ref<boolean>(false);
|
|
565
|
+
const isOtpPanelOpen = ref<boolean>(false);
|
|
516
566
|
const isPanelLoading = ref<boolean>(false);
|
|
567
|
+
const isChangingMember = ref<boolean>(false);
|
|
517
568
|
const familyDialog = ref<boolean>(false);
|
|
569
|
+
const sameAddress = ref<boolean>(false);
|
|
518
570
|
const panelValue = ref<Value>(new Value());
|
|
519
571
|
const panelList = ref<Value[]>([]);
|
|
520
572
|
const currentPanel = ref<keyof typeof member.value>();
|
|
521
573
|
const searchQuery = ref<string>('');
|
|
522
574
|
const fileData = ref<{ file: any }>();
|
|
523
575
|
|
|
524
|
-
const
|
|
525
|
-
const whichIndex = computed(() => route.query.i);
|
|
576
|
+
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
526
577
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
527
|
-
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value
|
|
578
|
+
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value));
|
|
528
579
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
529
|
-
const isIinPhoneDisabled = computed(() =>
|
|
580
|
+
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
530
581
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
531
582
|
const showSaveButton = computed(() => {
|
|
532
583
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
@@ -546,14 +597,39 @@ export default {
|
|
|
546
597
|
return generalCondition && perMemberCondtion();
|
|
547
598
|
});
|
|
548
599
|
|
|
549
|
-
const hasGBDFL = computed(() =>
|
|
600
|
+
const hasGBDFL = computed(() => {
|
|
601
|
+
const perMemberCondition = () => {
|
|
602
|
+
switch (whichForm.value) {
|
|
603
|
+
case formStore.beneficiaryFormKey: {
|
|
604
|
+
if (dataStore.isKazyna || dataStore.isLiferenta) {
|
|
605
|
+
return !!member.value.iin;
|
|
606
|
+
}
|
|
607
|
+
if (dataStore.isBolashak || dataStore.isGons) {
|
|
608
|
+
return false;
|
|
609
|
+
}
|
|
610
|
+
return true;
|
|
611
|
+
}
|
|
612
|
+
case formStore.insuredFormKey:
|
|
613
|
+
case formStore.beneficiaryFormKey:
|
|
614
|
+
case formStore.beneficialOwnerFormKey:
|
|
615
|
+
case formStore.policyholdersRepresentativeFormKey:
|
|
616
|
+
return true;
|
|
617
|
+
default:
|
|
618
|
+
return true;
|
|
619
|
+
}
|
|
620
|
+
};
|
|
621
|
+
return dataStore.controls.hasGBDFL && perMemberCondition();
|
|
622
|
+
});
|
|
550
623
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
551
624
|
const hasGKB = computed(() => {
|
|
552
|
-
const byProductCondition = dataStore.isGons || dataStore.isBolashak;
|
|
553
625
|
const perMemberCondition = () => {
|
|
554
626
|
switch (whichForm.value) {
|
|
555
|
-
case formStore.beneficiaryFormKey:
|
|
627
|
+
case formStore.beneficiaryFormKey: {
|
|
628
|
+
if (dataStore.isKazyna || dataStore.isLiferenta) {
|
|
629
|
+
return !member.value.iin;
|
|
630
|
+
}
|
|
556
631
|
return member.value.id === 0;
|
|
632
|
+
}
|
|
557
633
|
case formStore.policyholderFormKey:
|
|
558
634
|
case formStore.insuredFormKey:
|
|
559
635
|
case formStore.beneficialOwnerFormKey:
|
|
@@ -563,48 +639,91 @@ export default {
|
|
|
563
639
|
return false;
|
|
564
640
|
}
|
|
565
641
|
};
|
|
566
|
-
return dataStore.controls.hasGKB && !!dataStore.isTask() &&
|
|
642
|
+
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
643
|
+
});
|
|
644
|
+
|
|
645
|
+
const hasFamilyStatus = computed(() => {
|
|
646
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
647
|
+
if (dataStore.isBolashak) {
|
|
648
|
+
return false;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
return true;
|
|
652
|
+
});
|
|
653
|
+
const hasInsurancePay = computed(() => {
|
|
654
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
655
|
+
if (dataStore.isBolashak || dataStore.isLiferenta) {
|
|
656
|
+
return true;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
return false;
|
|
567
660
|
});
|
|
661
|
+
const hasSignOfIPDL = computed(() => {
|
|
662
|
+
if (dataStore.isGons) {
|
|
663
|
+
return false;
|
|
664
|
+
}
|
|
665
|
+
return true;
|
|
666
|
+
});
|
|
667
|
+
const hasSameAddressToggle = computed(() => whichForm.value === formStore.beneficiaryFormKey && member.value.iin !== formStore.policyholderForm.iin);
|
|
568
668
|
|
|
669
|
+
const birthDateRule = computed(() => {
|
|
670
|
+
const baseDateRule = dataStore.rules.required.concat(dataStore.rules.birthDate);
|
|
671
|
+
const byMemverAndProductRule = () => {
|
|
672
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
673
|
+
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
674
|
+
return dataStore.rules.age18ByDate;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
678
|
+
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
679
|
+
return dataStore.rules.age18ByDate;
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
return [];
|
|
683
|
+
};
|
|
684
|
+
return baseDateRule.concat(byMemverAndProductRule());
|
|
685
|
+
});
|
|
569
686
|
const ageRule = computed(() => {
|
|
570
|
-
const baseAgeRule = dataStore.rules.
|
|
687
|
+
const baseAgeRule = dataStore.rules.numbers;
|
|
571
688
|
const byMemberAndProductRule = () => {
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
return dataStore.rules.policyholderAgeLimit;
|
|
576
|
-
} else {
|
|
577
|
-
return [];
|
|
578
|
-
}
|
|
689
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
690
|
+
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
691
|
+
return dataStore.rules.age18;
|
|
579
692
|
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
return [];
|
|
585
|
-
}
|
|
693
|
+
}
|
|
694
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
695
|
+
if (dataStore.isBolashak) {
|
|
696
|
+
return dataStore.rules.beneficiaryAgeLimit;
|
|
586
697
|
}
|
|
587
|
-
default:
|
|
588
|
-
return [];
|
|
589
698
|
}
|
|
699
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
700
|
+
if (dataStore.isBaiterek || dataStore.isBolashak) {
|
|
701
|
+
return dataStore.rules.age18;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
return [];
|
|
590
705
|
};
|
|
591
706
|
return baseAgeRule.concat(byMemberAndProductRule());
|
|
592
707
|
});
|
|
593
708
|
|
|
594
709
|
const phoneRule = computed(() => {
|
|
595
710
|
const basePhoneRule = dataStore.rules.required.concat(dataStore.rules.phoneFormat);
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
if (dataStore.isGons || dataStore.isBolashak) {
|
|
600
|
-
return [];
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
default:
|
|
604
|
-
return basePhoneRule;
|
|
711
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
712
|
+
if (dataStore.isGons || dataStore.isBolashak) {
|
|
713
|
+
return [];
|
|
605
714
|
}
|
|
606
|
-
}
|
|
607
|
-
return
|
|
715
|
+
}
|
|
716
|
+
return basePhoneRule;
|
|
717
|
+
});
|
|
718
|
+
|
|
719
|
+
const residencyRule = computed(() => {
|
|
720
|
+
const baseResidencyRule = dataStore.rules.objectRequired;
|
|
721
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
722
|
+
if (dataStore.isBolashak || dataStore.isBaiterek) {
|
|
723
|
+
return baseResidencyRule.concat(dataStore.rules.noResident);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
return baseResidencyRule;
|
|
608
727
|
});
|
|
609
728
|
|
|
610
729
|
const getOtpConditionByMember = () => {
|
|
@@ -628,10 +747,11 @@ export default {
|
|
|
628
747
|
const searchMember = async () => {
|
|
629
748
|
if (!isDisabled.value) {
|
|
630
749
|
dataStore.panelAction = null;
|
|
631
|
-
dataStore.panel.title = 'Поиск
|
|
750
|
+
dataStore.panel.title = 'Поиск контрагента';
|
|
632
751
|
dataStore.panel.open = true;
|
|
633
752
|
isSearchOpen.value = true;
|
|
634
753
|
isDocumentOpen.value = false;
|
|
754
|
+
isOtpPanelOpen.value = false;
|
|
635
755
|
isPanelOpen.value = false;
|
|
636
756
|
} else {
|
|
637
757
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -642,13 +762,21 @@ export default {
|
|
|
642
762
|
vForm.value.scrollTo({ top: direction === 'up' ? 0 : screen.height * 10, behavior: 'smooth' });
|
|
643
763
|
};
|
|
644
764
|
|
|
645
|
-
const openCustomPanel = (type: 'document' = 'document') => {
|
|
765
|
+
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
646
766
|
dataStore.panelAction = null;
|
|
647
767
|
if (type === 'document' && memberDocument.value) {
|
|
648
768
|
dataStore.panel.title = memberDocument.value.fileTypeName!;
|
|
649
769
|
isDocumentOpen.value = true;
|
|
650
770
|
isSearchOpen.value = false;
|
|
651
771
|
isPanelOpen.value = false;
|
|
772
|
+
isOtpPanelOpen.value = false;
|
|
773
|
+
}
|
|
774
|
+
if (type === 'otp') {
|
|
775
|
+
dataStore.panel.title = dataStore.t('form.otpCode');
|
|
776
|
+
isOtpPanelOpen.value = true;
|
|
777
|
+
isDocumentOpen.value = false;
|
|
778
|
+
isSearchOpen.value = false;
|
|
779
|
+
isPanelOpen.value = false;
|
|
652
780
|
}
|
|
653
781
|
dataStore.panel.open = true;
|
|
654
782
|
};
|
|
@@ -657,6 +785,7 @@ export default {
|
|
|
657
785
|
if (!isDisabled.value) {
|
|
658
786
|
isSearchOpen.value = false;
|
|
659
787
|
isDocumentOpen.value = false;
|
|
788
|
+
isOtpPanelOpen.value = false;
|
|
660
789
|
// Feature
|
|
661
790
|
// const notAllowedToChange = ['gender', 'documentType', 'documentIssuers'];
|
|
662
791
|
// if (member.value.gotFromInsis === false && notAllowedToChange.includes(key)) {
|
|
@@ -675,7 +804,7 @@ export default {
|
|
|
675
804
|
isPanelLoading.value = true;
|
|
676
805
|
newList = await asyncFunction(filterKey, member.value);
|
|
677
806
|
}
|
|
678
|
-
panelList.value = newList;
|
|
807
|
+
panelList.value = filterList(newList, key);
|
|
679
808
|
panelValue.value = member.value[currentPanel.value];
|
|
680
809
|
isPanelLoading.value = false;
|
|
681
810
|
} else {
|
|
@@ -683,6 +812,22 @@ export default {
|
|
|
683
812
|
}
|
|
684
813
|
};
|
|
685
814
|
|
|
815
|
+
const filterList = (list: Value[], key: string) => {
|
|
816
|
+
if (dataStore.isBolashak) {
|
|
817
|
+
if (key === 'relationDegree') {
|
|
818
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
819
|
+
const beneficiaryRelations = [12, 13, 14, 15, 20, 21, 22, 23];
|
|
820
|
+
return list.filter(i => beneficiaryRelations.includes(Number(i.ids)));
|
|
821
|
+
}
|
|
822
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
823
|
+
const insuredRelations = [6, 7, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23];
|
|
824
|
+
return list.filter(i => insuredRelations.includes(Number(i.ids)));
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
return list;
|
|
829
|
+
};
|
|
830
|
+
|
|
686
831
|
const pickPanelValue = (item: Value) => {
|
|
687
832
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
688
833
|
dataStore.panel.open = false;
|
|
@@ -737,6 +882,7 @@ export default {
|
|
|
737
882
|
};
|
|
738
883
|
|
|
739
884
|
const getFamilyInfo = async () => {
|
|
885
|
+
if (!formStore.policyholderForm.iin || !formStore.policyholderForm.phoneNumber) return;
|
|
740
886
|
if (formStore.birthInfos.length === 0) {
|
|
741
887
|
isButtonLoading.value = true;
|
|
742
888
|
await dataStore.getFamilyInfo(formStore.policyholderForm.iin, formStore.policyholderForm.phoneNumber);
|
|
@@ -778,59 +924,63 @@ export default {
|
|
|
778
924
|
};
|
|
779
925
|
|
|
780
926
|
const getContragentFromGBDFL = async () => {
|
|
781
|
-
if (member.value.hasAgreement
|
|
927
|
+
if (member.value.hasAgreement !== true) {
|
|
782
928
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
783
929
|
dataStore.panel.open = false;
|
|
784
930
|
isSearchOpen.value = false;
|
|
785
931
|
return;
|
|
786
932
|
}
|
|
787
933
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
788
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
934
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
789
935
|
dataStore.panel.open = false;
|
|
790
936
|
isSearchOpen.value = false;
|
|
791
937
|
return;
|
|
792
938
|
}
|
|
793
939
|
isButtonLoading.value = true;
|
|
794
|
-
await dataStore.getContragentFromGBDFL(member.value
|
|
795
|
-
|
|
940
|
+
const response = await dataStore.getContragentFromGBDFL(member.value);
|
|
941
|
+
if (typeof response === 'boolean') {
|
|
942
|
+
if (response === true) {
|
|
943
|
+
member.value.gotFromInsis = true;
|
|
944
|
+
}
|
|
945
|
+
dataStore.panel.open = false;
|
|
946
|
+
isSearchOpen.value = false;
|
|
947
|
+
}
|
|
796
948
|
isButtonLoading.value = false;
|
|
797
|
-
dataStore.panel.open = false;
|
|
798
|
-
isSearchOpen.value = false;
|
|
799
949
|
};
|
|
800
950
|
|
|
801
951
|
const getContragent = async () => {
|
|
802
|
-
if (member.value.hasAgreement
|
|
952
|
+
if (member.value.hasAgreement !== true) {
|
|
803
953
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
804
954
|
dataStore.panel.open = false;
|
|
805
955
|
isSearchOpen.value = false;
|
|
806
956
|
return;
|
|
807
957
|
}
|
|
808
958
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
809
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
959
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
810
960
|
dataStore.panel.open = false;
|
|
811
961
|
isSearchOpen.value = false;
|
|
812
962
|
return;
|
|
813
963
|
}
|
|
814
964
|
isButtonLoading.value = true;
|
|
815
|
-
await dataStore.getContragent(member.value,
|
|
965
|
+
await dataStore.getContragent(member.value, false);
|
|
816
966
|
isButtonLoading.value = false;
|
|
817
967
|
dataStore.panel.open = false;
|
|
818
968
|
isSearchOpen.value = false;
|
|
819
969
|
};
|
|
820
970
|
|
|
821
971
|
const validateESBD = async (docTypeNumber: number) => {
|
|
822
|
-
const data = {
|
|
972
|
+
const data: ESBDValidationType = {
|
|
823
973
|
personType: 1,
|
|
824
974
|
iin: member.value.iin!.replaceAll('-', ''),
|
|
825
|
-
lastName: member.value.lastName,
|
|
826
|
-
firstName: member.value.firstName,
|
|
827
|
-
middleName: member.value.middleName,
|
|
828
|
-
birthDate: member.value.getDateByKey('birthDate'),
|
|
829
|
-
sex: member.value.gender.id,
|
|
975
|
+
lastName: member.value.lastName ?? '',
|
|
976
|
+
firstName: member.value.firstName ?? '',
|
|
977
|
+
middleName: member.value.middleName ?? '',
|
|
978
|
+
birthDate: member.value.getDateByKey('birthDate') ?? '',
|
|
979
|
+
sex: Number(member.value.gender.id),
|
|
830
980
|
docType: docTypeNumber,
|
|
831
|
-
docNumber: member.value.documentNumber,
|
|
832
|
-
docIssuedDate: member.value.getDateByKey('documentDate'),
|
|
833
|
-
docIssuedBy: member.value.documentIssuers.nameRu,
|
|
981
|
+
docNumber: member.value.documentNumber ?? '',
|
|
982
|
+
docIssuedDate: member.value.getDateByKey('documentDate') ?? '',
|
|
983
|
+
docIssuedBy: member.value.documentIssuers.nameRu ?? '',
|
|
834
984
|
activityKindId: 0,
|
|
835
985
|
economicsSectorId: Number((member.value.economySectorCode.ids! as string).at(-1)),
|
|
836
986
|
resident: member.value.signOfResidency.ids === '500011.2' || member.value.signOfResidency.ids === null ? 0 : 1,
|
|
@@ -840,18 +990,20 @@ export default {
|
|
|
840
990
|
};
|
|
841
991
|
|
|
842
992
|
const saveMember = async () => {
|
|
843
|
-
const hasSaved = await dataStore.saveContragent(member.value, whichForm.value, whichIndex.value, true);
|
|
993
|
+
const hasSaved = await dataStore.saveContragent(member.value, whichForm.value, whichIndex.value ? Number(whichIndex.value) : null, true);
|
|
844
994
|
if (hasSaved === false) {
|
|
845
995
|
dataStore.isLoading = false;
|
|
846
996
|
return false;
|
|
847
997
|
}
|
|
848
998
|
const isInsured = formStore.isPolicyholderInsured;
|
|
999
|
+
const remoteIsInsured = ref<boolean | null>(null);
|
|
849
1000
|
if (whichForm.value == formStore.policyholderFormKey) {
|
|
850
1001
|
if (route.params.taskId === '0') {
|
|
851
1002
|
try {
|
|
852
1003
|
const taskId = await dataStore.startApplication(member.value);
|
|
853
|
-
if (taskId) {
|
|
1004
|
+
if (typeof taskId === 'string') {
|
|
854
1005
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1006
|
+
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
855
1007
|
await router.replace({
|
|
856
1008
|
name: route.name!,
|
|
857
1009
|
params: { taskId: taskId as string },
|
|
@@ -873,23 +1025,33 @@ export default {
|
|
|
873
1025
|
await uploadFile(formStore.applicationData.processInstanceId);
|
|
874
1026
|
}
|
|
875
1027
|
}
|
|
876
|
-
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value
|
|
877
|
-
|
|
1028
|
+
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value, whichIndex.value ? Number(whichIndex.value) : undefined);
|
|
1029
|
+
if (typeof member.value.id !== 'number' || (typeof member.value.id === 'number' && member.value.id > 0 === false)) {
|
|
1030
|
+
return false;
|
|
1031
|
+
}
|
|
1032
|
+
const wasInsuredAction = ref<boolean>(false);
|
|
1033
|
+
const isSaved = await dataStore.saveMember(member.value, memberStore.getMemberCode(whichForm.value)!, memberFromApplicaiton);
|
|
878
1034
|
if (!isSaved) return false;
|
|
879
|
-
if (whichForm.value === formStore.policyholderFormKey
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
1035
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
1036
|
+
if (isInsured === true || remoteIsInsured.value === true) {
|
|
1037
|
+
formStore.insuredForm[0] = formStore.policyholderForm;
|
|
1038
|
+
const isInsuredSaved = await dataStore.saveMember(
|
|
1039
|
+
member.value,
|
|
1040
|
+
memberStore.getMemberCode(formStore.insuredFormKey)!,
|
|
1041
|
+
memberStore.getMemberFromApplication(formStore.insuredFormKey, formStore.insuredFormIndex),
|
|
1042
|
+
);
|
|
1043
|
+
if (!isInsuredSaved) return false;
|
|
1044
|
+
wasInsuredAction.value = true;
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
1048
|
+
wasInsuredAction.value = true;
|
|
887
1049
|
}
|
|
888
1050
|
await router.replace({
|
|
889
1051
|
name: route.name!,
|
|
890
1052
|
query: { ...route.query, id: member.value.id },
|
|
891
1053
|
});
|
|
892
|
-
await dataStore.getApplicationData(route.params.taskId, false, false,
|
|
1054
|
+
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
893
1055
|
if (dataStore.controls.hasCalculator) {
|
|
894
1056
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
895
1057
|
formStore.additionalInsuranceTerms.forEach((term: any) => {
|
|
@@ -913,7 +1075,7 @@ export default {
|
|
|
913
1075
|
return true;
|
|
914
1076
|
}
|
|
915
1077
|
}
|
|
916
|
-
if (member.value.hasAgreement
|
|
1078
|
+
if (member.value.hasAgreement !== true) {
|
|
917
1079
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
918
1080
|
return false;
|
|
919
1081
|
}
|
|
@@ -937,7 +1099,7 @@ export default {
|
|
|
937
1099
|
const initialPoint = `${member.value.iin!.replaceAll('-', '')}.`;
|
|
938
1100
|
const RESPONSE = ESBDMessage(ESBDResponse, initialPoint);
|
|
939
1101
|
let errorMessage = RESPONSE !== false ? RESPONSE : 'Что-то произошло не так';
|
|
940
|
-
if (ESBDResponse.errorCode === 0) {
|
|
1102
|
+
if (typeof ESBDResponse === 'object' && ESBDResponse.errorCode === 0) {
|
|
941
1103
|
member.value.verifyType = 'ESBD';
|
|
942
1104
|
member.value.verifyDate = ESBDResponse.verifiedDate;
|
|
943
1105
|
const hasMemberSaved = await saveMember();
|
|
@@ -955,11 +1117,11 @@ export default {
|
|
|
955
1117
|
if (errors) {
|
|
956
1118
|
const errorText = errors.querySelector('.v-label.v-field-label');
|
|
957
1119
|
if (errorText) {
|
|
958
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1120
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: errorText.innerHTML?.replace(/[-<>!//.]/g, '') }));
|
|
959
1121
|
} else {
|
|
960
1122
|
const errorFieldText = errors.querySelector('.v-input__control');
|
|
961
1123
|
if (errorFieldText) {
|
|
962
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1124
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: errorFieldText.innerHTML?.replace(/[-<>!//.]/g, '') }));
|
|
963
1125
|
}
|
|
964
1126
|
}
|
|
965
1127
|
errors.scrollIntoView({
|
|
@@ -974,67 +1136,133 @@ export default {
|
|
|
974
1136
|
|
|
975
1137
|
const checkOtp = async () => {
|
|
976
1138
|
if (!member.value.otpCode || member.value.iin?.length !== useMask().iin.length || member.value.phoneNumber?.length !== useMask().phone.length) {
|
|
977
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1139
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: dataStore.t('form.otpCode') }), 3000);
|
|
978
1140
|
return;
|
|
979
1141
|
}
|
|
1142
|
+
otpSending.value = true;
|
|
980
1143
|
const checked = await memberStore.checkOtp(member.value);
|
|
981
1144
|
if (typeof checked !== 'undefined') {
|
|
982
1145
|
member.value.hasAgreement = checked;
|
|
983
1146
|
}
|
|
1147
|
+
otpSending.value = false;
|
|
1148
|
+
if (checked === true) {
|
|
1149
|
+
dataStore.panel.open = false;
|
|
1150
|
+
}
|
|
984
1151
|
};
|
|
985
1152
|
|
|
986
1153
|
const sendOtp = async (onInit = false) => {
|
|
1154
|
+
otpSending.value = true;
|
|
987
1155
|
const response = await memberStore.sendOtp(member.value, formStore.applicationData.processInstanceId, onInit);
|
|
988
1156
|
if (response) {
|
|
989
1157
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1158
|
+
if (response.otpStatus === true) {
|
|
1159
|
+
dataStore.panel.open = false;
|
|
1160
|
+
}
|
|
990
1161
|
}
|
|
1162
|
+
otpSending.value = false;
|
|
991
1163
|
};
|
|
992
1164
|
|
|
993
|
-
const
|
|
994
|
-
|
|
995
|
-
|
|
1165
|
+
const setDefaultValues = async () => {
|
|
1166
|
+
const setDefaults = dataStore.controls.setDefaults;
|
|
1167
|
+
if (setDefaults.sectorCode) {
|
|
1168
|
+
await setSectorCode();
|
|
1169
|
+
}
|
|
1170
|
+
if (setDefaults.percentage) {
|
|
1171
|
+
setPercentage();
|
|
996
1172
|
}
|
|
1173
|
+
};
|
|
1174
|
+
|
|
1175
|
+
const setSectorCode = async () => {
|
|
1176
|
+
if (member.value.id === 0 && route.query.id === '0') {
|
|
1177
|
+
const sectorList = await dataStore.getSectorCodeList();
|
|
1178
|
+
const defaultValue = sectorList.find(item => item.ids === '500003.9') as Value;
|
|
1179
|
+
member.value.economySectorCode = defaultValue ? defaultValue : new Value();
|
|
1180
|
+
}
|
|
1181
|
+
};
|
|
1182
|
+
|
|
1183
|
+
const setPercentage = () => {
|
|
1184
|
+
if (whichForm.value === formStore.beneficiaryFormKey && member.value.id === 0 && route.query.id === '0' && member.value.percentageOfPayoutAmount === null) {
|
|
1185
|
+
if (dataStore.members.beneficiaryApp.isMultiple) {
|
|
1186
|
+
const availablePercentage =
|
|
1187
|
+
100 -
|
|
1188
|
+
formStore.beneficiaryForm.reduce((sum: number, member: Member) => {
|
|
1189
|
+
return sum + Number(member.percentageOfPayoutAmount);
|
|
1190
|
+
}, 0);
|
|
1191
|
+
if (availablePercentage >= 0 && availablePercentage <= 100) member.value.percentageOfPayoutAmount = availablePercentage;
|
|
1192
|
+
} else {
|
|
1193
|
+
member.value.percentageOfPayoutAmount = 100;
|
|
1194
|
+
}
|
|
1195
|
+
}
|
|
1196
|
+
};
|
|
1197
|
+
|
|
1198
|
+
const selectMember = async (index: number, update?: boolean) => {
|
|
1199
|
+
dataStore.panel.open = false;
|
|
1200
|
+
isButtonLoading.value = true;
|
|
1201
|
+
isChangingMember.value = true;
|
|
1202
|
+
//@ts-ignore
|
|
1203
|
+
await router.replace({ query: { ...route.query, i: index, id: getMember(route.query.tab, index).id, upd: update } });
|
|
1204
|
+
isChangingMember.value = false;
|
|
1205
|
+
isButtonLoading.value = false;
|
|
1206
|
+
};
|
|
1207
|
+
|
|
1208
|
+
const deleteMember = async (index: number) => {
|
|
1209
|
+
await memberStore.deleteMember(route.params.taskId as string, whichForm.value, index);
|
|
1210
|
+
const currentIndex = Number(whichIndex.value);
|
|
1211
|
+
if (index <= currentIndex) {
|
|
1212
|
+
const newIndex = ref<number>(currentIndex - 1 > 0 ? currentIndex - 1 : 0);
|
|
1213
|
+
await selectMember(newIndex.value, index === currentIndex ? true : undefined);
|
|
1214
|
+
}
|
|
1215
|
+
};
|
|
1216
|
+
|
|
1217
|
+
const onInit = async () => {
|
|
1218
|
+
// if (route.params.taskId === '0' || (route.params.taskId !== '0' && dataStore.isProcessEditable(formStore.applicationData.statusCode))) {
|
|
1219
|
+
// await dataStore.getSignedDocList(formStore.applicationData.processInstanceId);
|
|
1220
|
+
// }
|
|
997
1221
|
if (getOtpConditionByMember()) {
|
|
998
1222
|
await sendOtp(true);
|
|
999
1223
|
} else {
|
|
1000
1224
|
if (member.value.hasAgreement === null) member.value.hasAgreement = true;
|
|
1001
1225
|
}
|
|
1002
|
-
if (
|
|
1003
|
-
await
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
query: { ...route.query, id: member.value.id },
|
|
1009
|
-
});
|
|
1010
|
-
}
|
|
1011
|
-
if (member.value.id) {
|
|
1012
|
-
const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1013
|
-
if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1226
|
+
if (!member.value.id) {
|
|
1227
|
+
await router.replace({ query: { ...route.query, id: 0 } });
|
|
1228
|
+
} else {
|
|
1229
|
+
if (route.query.id !== String(member.value.id)) await router.replace({ query: { ...route.query, id: member.value.id } });
|
|
1230
|
+
// const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1231
|
+
// if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
1014
1232
|
}
|
|
1233
|
+
await setDefaultValues();
|
|
1015
1234
|
};
|
|
1016
1235
|
|
|
1017
1236
|
onMounted(async () => {
|
|
1018
1237
|
await onInit();
|
|
1019
1238
|
});
|
|
1020
1239
|
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1240
|
+
watch(
|
|
1241
|
+
() => sameAddress.value,
|
|
1242
|
+
() => {
|
|
1243
|
+
if (whichForm.value === formStore.beneficiaryFormKey) setAddressBeneficiary(Number(whichIndex.value), sameAddress.value);
|
|
1244
|
+
},
|
|
1245
|
+
);
|
|
1026
1246
|
|
|
1027
1247
|
watch(
|
|
1028
1248
|
() => member.value.percentageOfPayoutAmount,
|
|
1029
1249
|
val => {
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
if (percentage
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1250
|
+
if (whichForm.value === formStore.beneficiaryFormKey && !isDisabled.value) {
|
|
1251
|
+
const percentage = typeof val === 'string' ? Number(val) : val;
|
|
1252
|
+
if (typeof percentage === 'number') {
|
|
1253
|
+
if (memberSetting.value.isMultiple) {
|
|
1254
|
+
if (percentage < 0) {
|
|
1255
|
+
member.value.percentageOfPayoutAmount = 0;
|
|
1256
|
+
dataStore.showToaster('error', dataStore.t('toaster.incorrectInput'), 1000);
|
|
1257
|
+
} else if (percentage > 100) {
|
|
1258
|
+
member.value.percentageOfPayoutAmount = 100;
|
|
1259
|
+
dataStore.showToaster('error', dataStore.t('toaster.incorrectInput'), 1000);
|
|
1260
|
+
}
|
|
1261
|
+
} else {
|
|
1262
|
+
if (member.value.percentageOfPayoutAmount !== 100) {
|
|
1263
|
+
member.value.percentageOfPayoutAmount = 100;
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1038
1266
|
}
|
|
1039
1267
|
}
|
|
1040
1268
|
},
|
|
@@ -1050,14 +1278,21 @@ export default {
|
|
|
1050
1278
|
},
|
|
1051
1279
|
);
|
|
1052
1280
|
|
|
1053
|
-
|
|
1054
|
-
(
|
|
1055
|
-
|
|
1056
|
-
if (
|
|
1057
|
-
|
|
1281
|
+
const onIinInput = () => {
|
|
1282
|
+
if (!!member.value.iin && member.value.iin.length === useMask().iin.length && memberSetting.value.isMultiple === true) {
|
|
1283
|
+
const alreadyInStatement = formStore[whichForm.value as MultipleMember].findIndex((i: Member) => i.iin === member.value.iin);
|
|
1284
|
+
if (alreadyInStatement !== -1 && alreadyInStatement !== Number(whichIndex.value)) {
|
|
1285
|
+
dataStore.showToaster('error', dataStore.t('toaster.hasAlreadyMember'), 3000);
|
|
1286
|
+
member.value.iin = null;
|
|
1058
1287
|
}
|
|
1059
|
-
}
|
|
1060
|
-
|
|
1288
|
+
}
|
|
1289
|
+
};
|
|
1290
|
+
|
|
1291
|
+
const onOtpCodeInput = async () => {
|
|
1292
|
+
if (member.value.otpCode && member.value.otpCode.length === useMask().otp.length) {
|
|
1293
|
+
await checkOtp();
|
|
1294
|
+
}
|
|
1295
|
+
};
|
|
1061
1296
|
|
|
1062
1297
|
watch(
|
|
1063
1298
|
() => dataStore.panel.open,
|
|
@@ -1066,6 +1301,7 @@ export default {
|
|
|
1066
1301
|
isPanelOpen.value = false;
|
|
1067
1302
|
isDocumentOpen.value = false;
|
|
1068
1303
|
isSearchOpen.value = false;
|
|
1304
|
+
isOtpPanelOpen.value = false;
|
|
1069
1305
|
dataStore.panelAction = null;
|
|
1070
1306
|
}
|
|
1071
1307
|
},
|
|
@@ -1087,10 +1323,12 @@ export default {
|
|
|
1087
1323
|
isPanelOpen,
|
|
1088
1324
|
isSearchOpen,
|
|
1089
1325
|
isDocumentOpen,
|
|
1326
|
+
isOtpPanelOpen,
|
|
1090
1327
|
isPanelLoading,
|
|
1091
1328
|
isButtonLoading,
|
|
1092
1329
|
isSubmittingForm,
|
|
1093
1330
|
documentLoading,
|
|
1331
|
+
otpSending,
|
|
1094
1332
|
panelValue,
|
|
1095
1333
|
panelList,
|
|
1096
1334
|
searchQuery,
|
|
@@ -1098,10 +1336,12 @@ export default {
|
|
|
1098
1336
|
memberDocument,
|
|
1099
1337
|
familyDialog,
|
|
1100
1338
|
selectedFamilyMember,
|
|
1339
|
+
sameAddress,
|
|
1101
1340
|
|
|
1102
1341
|
// Computed
|
|
1103
1342
|
whichForm,
|
|
1104
1343
|
whichIndex,
|
|
1344
|
+
memberSetting,
|
|
1105
1345
|
otpCondition,
|
|
1106
1346
|
hasOtp,
|
|
1107
1347
|
isDisabled,
|
|
@@ -1112,9 +1352,16 @@ export default {
|
|
|
1112
1352
|
hasGBDFL,
|
|
1113
1353
|
hasInsis,
|
|
1114
1354
|
hasGKB,
|
|
1355
|
+
hasFamilyStatus,
|
|
1356
|
+
hasInsurancePay,
|
|
1357
|
+
hasSignOfIPDL,
|
|
1358
|
+
hasSameAddressToggle,
|
|
1359
|
+
|
|
1115
1360
|
// Rules
|
|
1116
1361
|
ageRule,
|
|
1117
1362
|
phoneRule,
|
|
1363
|
+
residencyRule,
|
|
1364
|
+
birthDateRule,
|
|
1118
1365
|
|
|
1119
1366
|
// Functions
|
|
1120
1367
|
searchMember,
|
|
@@ -1132,6 +1379,10 @@ export default {
|
|
|
1132
1379
|
selectFamilyMember,
|
|
1133
1380
|
closeFamilyDialog,
|
|
1134
1381
|
scrollForm,
|
|
1382
|
+
onIinInput,
|
|
1383
|
+
onOtpCodeInput,
|
|
1384
|
+
deleteMember,
|
|
1385
|
+
selectMember,
|
|
1135
1386
|
};
|
|
1136
1387
|
},
|
|
1137
1388
|
};
|