hl-core 0.0.8-beta.9 → 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 +100 -34
- 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 +51 -28
- package/components/Form/FormSection.vue +4 -1
- package/components/Form/FormToggle.vue +2 -3
- package/components/Form/ManagerAttachment.vue +21 -20
- package/components/Form/ProductConditionsBlock.vue +60 -10
- package/components/Input/Datepicker.vue +6 -2
- package/components/Input/FileInput.vue +2 -2
- package/components/Input/FormInput.vue +29 -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 +3 -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 +49 -31
- package/components/Pages/Auth.vue +139 -46
- package/components/Pages/Documents.vue +6 -6
- package/components/Pages/InvoiceInfo.vue +30 -0
- package/components/Pages/MemberForm.vue +503 -343
- package/components/Pages/ProductAgreement.vue +4 -2
- package/components/Pages/ProductConditions.vue +494 -95
- package/components/Panel/PanelHandler.vue +91 -20
- package/components/Panel/PanelSelectItem.vue +1 -1
- package/components/Utilities/Chip.vue +27 -0
- package/components/Utilities/JsonViewer.vue +27 -0
- package/composables/axios.ts +1 -1
- package/composables/classes.ts +165 -81
- package/composables/constants.ts +25 -52
- package/composables/index.ts +80 -2
- package/composables/styles.ts +8 -3
- package/configs/i18n.ts +2 -4
- package/layouts/default.vue +6 -6
- package/locales/kz.json +532 -346
- package/locales/ru.json +210 -22
- package/nuxt.config.ts +1 -1
- package/package.json +38 -12
- package/pages/500.vue +2 -2
- package/pages/Token.vue +51 -0
- package/plugins/helperFunctionsPlugins.ts +2 -1
- package/plugins/vuetifyPlugin.ts +3 -1
- package/store/{data.store.js → data.store.ts} +1116 -752
- package/store/form.store.ts +1 -1
- package/store/member.store.ts +94 -72
- package/store/{rules.js → rules.ts} +54 -26
- package/types/enum.ts +83 -0
- package/types/env.d.ts +10 -0
- package/types/index.ts +197 -7
- package/locales/en.json +0 -399
|
@@ -1,350 +1,360 @@
|
|
|
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
|
-
|
|
15
|
-
<base-form-input
|
|
16
|
-
v-model="member.phoneNumber"
|
|
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>
|
|
51
|
+
/>
|
|
36
52
|
<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="true" :clearable="!isDisabled" :rules="ageRule"
|
|
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="$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)">
|
|
224
|
-
<base-form-toggle
|
|
225
|
-
v-if="whichForm === formStore.beneficiaryFormKey"
|
|
226
|
-
v-model="sameAddress"
|
|
227
|
-
:disabled="isDisabled"
|
|
228
|
-
:has-border="false"
|
|
229
|
-
:title="$t('form.sameAddress')"
|
|
230
|
-
></base-form-toggle>
|
|
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')" />
|
|
231
241
|
<base-panel-input
|
|
232
242
|
v-model="member.registrationCountry"
|
|
233
243
|
:value="member.registrationCountry.nameRu"
|
|
234
244
|
:readonly="isDisabled"
|
|
235
245
|
:clearable="!isDisabled"
|
|
236
|
-
:label="$t('form.Country')"
|
|
246
|
+
:label="$dataStore.t('form.Country')"
|
|
237
247
|
:rules="$rules.objectRequired"
|
|
238
248
|
append-inner-icon="mdi mdi-chevron-right"
|
|
239
|
-
@append="openPanel($t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
|
|
240
|
-
|
|
249
|
+
@append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
|
|
250
|
+
/>
|
|
241
251
|
<base-fade-transition>
|
|
242
252
|
<div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
|
|
243
253
|
<base-panel-input
|
|
244
254
|
v-model="member.registrationProvince"
|
|
245
255
|
:value="member.registrationProvince.nameRu"
|
|
246
|
-
:label="$t('form.Province')"
|
|
256
|
+
:label="$dataStore.t('form.Province')"
|
|
247
257
|
:readonly="isDisabled"
|
|
248
258
|
:clearable="!isDisabled"
|
|
249
259
|
:rules="$rules.objectRequired"
|
|
250
260
|
append-inner-icon="mdi mdi-chevron-right"
|
|
251
|
-
@append="openPanel($t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
|
|
252
|
-
|
|
261
|
+
@append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
|
|
262
|
+
/>
|
|
253
263
|
<base-panel-input
|
|
254
264
|
v-model="member.registrationRegionType"
|
|
255
265
|
:value="member.registrationRegionType.nameRu"
|
|
256
|
-
:label="$t('form.RegionType')"
|
|
266
|
+
:label="$dataStore.t('form.RegionType')"
|
|
257
267
|
:readonly="isDisabled"
|
|
258
268
|
:clearable="!isDisabled"
|
|
259
269
|
:rules="$rules.objectRequired"
|
|
260
270
|
append-inner-icon="mdi mdi-chevron-right"
|
|
261
|
-
@append="openPanel($t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
|
|
262
|
-
|
|
271
|
+
@append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
|
|
272
|
+
/>
|
|
263
273
|
<base-panel-input
|
|
264
274
|
v-if="member.registrationRegionType.nameRu !== 'город'"
|
|
265
275
|
v-model="member.registrationRegion"
|
|
266
276
|
:value="member.registrationRegion.nameRu"
|
|
267
|
-
:label="$t('form.Region')"
|
|
277
|
+
:label="$dataStore.t('form.Region')"
|
|
268
278
|
:readonly="isDisabled"
|
|
269
279
|
:clearable="!isDisabled"
|
|
270
280
|
:rules="$rules.objectRequired"
|
|
271
281
|
append-inner-icon="mdi mdi-chevron-right"
|
|
272
|
-
@append="openPanel($t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
|
|
273
|
-
|
|
282
|
+
@append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
|
|
283
|
+
/>
|
|
274
284
|
<base-panel-input
|
|
275
285
|
v-model="member.registrationCity"
|
|
276
286
|
:value="member.registrationCity.nameRu"
|
|
277
|
-
:label="$t('form.City')"
|
|
287
|
+
:label="$dataStore.t('form.City')"
|
|
278
288
|
:readonly="isDisabled"
|
|
279
289
|
:clearable="!isDisabled"
|
|
280
290
|
:rules="$rules.objectRequired"
|
|
281
291
|
append-inner-icon="mdi mdi-chevron-right"
|
|
282
|
-
@append="openPanel($t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
283
|
-
|
|
292
|
+
@append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
293
|
+
/>
|
|
284
294
|
<!-- <base-form-input v-if="$dataStore.isGons" v-model="member.postIndex" :readonly="isDisabled"
|
|
285
|
-
:clearable="!isDisabled" :label="$t('form.postIndex')" :maska="$maska.post"
|
|
286
|
-
<base-form-input v-model="member.registrationQuarter" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.Quarter')"
|
|
287
|
-
<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')" />
|
|
288
298
|
<base-form-input
|
|
289
|
-
v-model="member.registrationStreet"
|
|
299
|
+
v-model.trim="member.registrationStreet"
|
|
290
300
|
:rules="$rules.required"
|
|
291
301
|
:readonly="isDisabled"
|
|
292
302
|
:clearable="!isDisabled"
|
|
293
|
-
:label="$t('form.Street')"
|
|
294
|
-
|
|
303
|
+
:label="$dataStore.t('form.Street')"
|
|
304
|
+
/>
|
|
295
305
|
<base-form-input
|
|
296
|
-
v-model="member.registrationNumberHouse"
|
|
306
|
+
v-model.trim="member.registrationNumberHouse"
|
|
297
307
|
:rules="$rules.required"
|
|
298
308
|
:readonly="isDisabled"
|
|
299
309
|
:clearable="!isDisabled"
|
|
300
|
-
:label="$t('form.NumberHouse')"
|
|
301
|
-
|
|
302
|
-
<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')" />
|
|
303
313
|
</div>
|
|
304
314
|
</base-fade-transition>
|
|
305
315
|
</base-form-section>
|
|
306
|
-
<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)">
|
|
307
317
|
<base-panel-input
|
|
308
318
|
v-model="member.birthPlace"
|
|
309
319
|
:value="member.birthPlace.nameRu"
|
|
310
|
-
:label="$t('form.Country')"
|
|
320
|
+
:label="$dataStore.t('form.Country')"
|
|
311
321
|
:readonly="isDisabled"
|
|
312
322
|
:clearable="!isDisabled"
|
|
313
323
|
:rules="$rules.objectRequired"
|
|
314
324
|
append-inner-icon="mdi mdi-chevron-right"
|
|
315
|
-
@append="openPanel($t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
|
|
316
|
-
|
|
325
|
+
@append="openPanel($dataStore.t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
|
|
326
|
+
/>
|
|
317
327
|
<!-- TODO -->
|
|
318
328
|
<!-- <base-panel-input
|
|
319
329
|
v-model="member.birthRegion"
|
|
320
330
|
:value="member.birthRegion.nameRu"
|
|
321
|
-
:label="$t('form.Region')"
|
|
331
|
+
:label="$dataStore.t('form.Region')"
|
|
322
332
|
:readonly="isDisabled"
|
|
323
333
|
:clearable="!isDisabled"
|
|
324
334
|
:rules="$rules.objectRequired"
|
|
325
335
|
append-inner-icon="mdi mdi-chevron-right"
|
|
326
|
-
@append="openPanel($t('form.Region'), [], 'birthRegion', $dataStore.getRegions)"
|
|
327
|
-
|
|
336
|
+
@append="openPanel($dataStore.t('form.Region'), [], 'birthRegion', $dataStore.getRegions)"
|
|
337
|
+
/> -->
|
|
328
338
|
</base-form-section>
|
|
329
|
-
<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)">
|
|
330
340
|
<base-panel-input
|
|
331
341
|
v-model="member.documentType"
|
|
332
342
|
:value="member.documentType.nameRu"
|
|
333
|
-
:label="$t('form.documentType')"
|
|
343
|
+
:label="$dataStore.t('form.documentType')"
|
|
334
344
|
:readonly="isDisabled"
|
|
335
345
|
:clearable="!isDisabled"
|
|
336
346
|
:rules="$rules.objectRequired"
|
|
337
347
|
append-inner-icon="mdi mdi-chevron-right"
|
|
338
|
-
@append="openPanel($t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
|
|
339
|
-
|
|
348
|
+
@append="openPanel($dataStore.t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
|
|
349
|
+
/>
|
|
340
350
|
<base-form-input
|
|
341
|
-
v-model="member.documentNumber"
|
|
342
|
-
:label="$t('form.documentNumber')"
|
|
351
|
+
v-model.trim="member.documentNumber"
|
|
352
|
+
:label="$dataStore.t('form.documentNumber')"
|
|
343
353
|
:readonly="isDisabled"
|
|
344
354
|
:clearable="!isDisabled"
|
|
345
355
|
:rules="$rules.required"
|
|
346
|
-
|
|
347
|
-
<!-- <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)" />
|
|
348
358
|
<base-empty-form-field v-if="memberDocument" @click="!isDisabled && openCustomPanel('document')" class="justify-between">
|
|
349
359
|
{{ `${memberDocument.fileTypeName} - ${memberDocument.fileName}` }}
|
|
350
360
|
<i class="cursor-pointer mdi mdi-file-document mr-6 text-[#a0b3d8] text-xl"></i>
|
|
@@ -352,154 +362,184 @@
|
|
|
352
362
|
<base-panel-input
|
|
353
363
|
v-model="member.documentIssuers"
|
|
354
364
|
:value="member.documentIssuers.nameRu"
|
|
355
|
-
:label="$t('form.documentIssuers')"
|
|
365
|
+
:label="$dataStore.t('form.documentIssuers')"
|
|
356
366
|
:readonly="isDisabled"
|
|
357
367
|
:clearable="!isDisabled"
|
|
358
368
|
:rules="$rules.objectRequired"
|
|
359
369
|
append-inner-icon="mdi mdi-chevron-right"
|
|
360
|
-
@append="openPanel($t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
|
|
361
|
-
|
|
370
|
+
@append="openPanel($dataStore.t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
|
|
371
|
+
/>
|
|
362
372
|
<base-form-input
|
|
363
373
|
v-model="member.documentDate"
|
|
364
|
-
:label="$t('form.documentDate')"
|
|
374
|
+
:label="$dataStore.t('form.documentDate')"
|
|
365
375
|
:readonly="isDisabled"
|
|
366
376
|
:clearable="!isDisabled"
|
|
367
377
|
:rules="$rules.required.concat($rules.date)"
|
|
368
378
|
:maska="$maska.date"
|
|
369
379
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
370
|
-
|
|
380
|
+
/>
|
|
371
381
|
<base-fade-transition>
|
|
372
382
|
<base-form-input
|
|
373
383
|
v-if="member.documentType.ids !== 'SBI' && member.documentType.ids !== 'VNZ'"
|
|
374
384
|
v-model="member.documentExpire"
|
|
375
|
-
:label="$t('form.documentExpire')"
|
|
385
|
+
:label="$dataStore.t('form.documentExpire')"
|
|
376
386
|
:readonly="isDisabled"
|
|
377
387
|
:clearable="!isDisabled"
|
|
378
388
|
:rules="$rules.required.concat($rules.date)"
|
|
379
389
|
:maska="$maska.date"
|
|
380
390
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
381
|
-
|
|
391
|
+
/>
|
|
382
392
|
</base-fade-transition>
|
|
383
393
|
<base-panel-input
|
|
384
394
|
v-model="member.signOfResidency"
|
|
385
395
|
:value="member.signOfResidency.nameRu"
|
|
386
|
-
:label="$t('form.signOfResidency')"
|
|
396
|
+
:label="$dataStore.t('form.signOfResidency')"
|
|
387
397
|
:readonly="isDisabled"
|
|
388
398
|
:clearable="!isDisabled"
|
|
389
399
|
:rules="residencyRule"
|
|
390
400
|
append-inner-icon="mdi mdi-chevron-right"
|
|
391
|
-
@append="openPanel($t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
392
|
-
|
|
401
|
+
@append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
402
|
+
/>
|
|
393
403
|
<base-panel-input
|
|
394
404
|
v-model="member.countryOfTaxResidency"
|
|
395
405
|
:value="member.countryOfTaxResidency.nameRu"
|
|
396
|
-
:label="$t('form.countryOfTaxResidency')"
|
|
406
|
+
:label="$dataStore.t('form.countryOfTaxResidency')"
|
|
397
407
|
:readonly="isDisabled"
|
|
398
408
|
:clearable="!isDisabled"
|
|
399
409
|
:rules="$rules.objectRequired"
|
|
400
410
|
append-inner-icon="mdi mdi-chevron-right"
|
|
401
|
-
@append="openPanel($t('form.countryOfTaxResidency'), [], 'countryOfTaxResidency', $dataStore.getTaxCountries)"
|
|
402
|
-
|
|
411
|
+
@append="openPanel($dataStore.t('form.countryOfTaxResidency'), [], 'countryOfTaxResidency', $dataStore.getTaxCountries)"
|
|
412
|
+
/>
|
|
403
413
|
<base-fade-transition>
|
|
404
414
|
<base-panel-input
|
|
405
415
|
v-if="member.countryOfTaxResidency.ids === '500014.3'"
|
|
406
416
|
v-model="member.addTaxResidency"
|
|
407
417
|
:value="member.addTaxResidency.nameRu"
|
|
408
|
-
:label="$t('form.addTaxResidency')"
|
|
418
|
+
:label="$dataStore.t('form.addTaxResidency')"
|
|
409
419
|
:readonly="isDisabled"
|
|
410
420
|
:clearable="!isDisabled"
|
|
411
421
|
:rules="$rules.objectRequired"
|
|
412
422
|
append-inner-icon="mdi mdi-chevron-right"
|
|
413
|
-
@append="openPanel($t('form.addTaxResidency'), [], 'addTaxResidency', $dataStore.getAdditionalTaxCountries)"
|
|
414
|
-
|
|
423
|
+
@append="openPanel($dataStore.t('form.addTaxResidency'), [], 'addTaxResidency', $dataStore.getAdditionalTaxCountries)"
|
|
424
|
+
/>
|
|
415
425
|
</base-fade-transition>
|
|
416
426
|
<base-panel-input
|
|
427
|
+
v-if="hasSignOfIPDL"
|
|
417
428
|
v-model="member.signOfIPDL"
|
|
418
429
|
:value="member.signOfIPDL.nameRu"
|
|
419
|
-
:label="$t('form.signOfIPDL')"
|
|
430
|
+
:label="$dataStore.t('form.signOfIPDL')"
|
|
420
431
|
:readonly="isDisabled"
|
|
421
432
|
:clearable="!isDisabled"
|
|
422
433
|
:rules="$rules.objectRequired"
|
|
423
434
|
append-inner-icon="mdi mdi-chevron-right"
|
|
424
|
-
@append="openPanel($t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
|
|
425
|
-
|
|
435
|
+
@append="openPanel($dataStore.t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
|
|
436
|
+
/>
|
|
426
437
|
<base-panel-input
|
|
427
438
|
v-model="member.countryOfCitizenship"
|
|
428
439
|
:value="member.countryOfCitizenship.nameRu"
|
|
429
|
-
:label="$t('form.countryOfCitizenship')"
|
|
440
|
+
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
430
441
|
:readonly="isDisabled"
|
|
431
442
|
:clearable="!isDisabled"
|
|
432
443
|
:rules="$rules.objectRequired"
|
|
433
444
|
append-inner-icon="mdi mdi-chevron-right"
|
|
434
|
-
@append="openPanel($t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
|
|
435
|
-
|
|
445
|
+
@append="openPanel($dataStore.t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
|
|
446
|
+
/>
|
|
436
447
|
<base-panel-input
|
|
437
448
|
v-model="member.economySectorCode"
|
|
438
449
|
:value="member.economySectorCode.nameRu"
|
|
439
|
-
:label="$t('form.economySectorCode')"
|
|
450
|
+
:label="$dataStore.t('form.economySectorCode')"
|
|
440
451
|
:readonly="isDisabled"
|
|
441
452
|
:clearable="!isDisabled"
|
|
442
453
|
:rules="$rules.objectRequired"
|
|
443
454
|
append-inner-icon="mdi mdi-chevron-right"
|
|
444
|
-
@append="openPanel($t('form.economySectorCode'), [], 'economySectorCode', $dataStore.getSectorCodeList)"
|
|
445
|
-
|
|
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
|
+
/>
|
|
446
468
|
</base-form-section>
|
|
447
|
-
<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)">
|
|
448
470
|
<base-form-input
|
|
449
471
|
v-model="member.homePhone"
|
|
450
472
|
:maska="$maska.phone"
|
|
451
473
|
placeholder="+7 7"
|
|
452
|
-
:label="$t('form.homePhone')"
|
|
474
|
+
:label="$dataStore.t('form.homePhone')"
|
|
453
475
|
:readonly="isDisabled"
|
|
454
476
|
:clearable="!isDisabled"
|
|
455
477
|
:rules="whichForm === formStore.beneficiaryFormKey ? [] : $rules.phoneFormat"
|
|
456
|
-
|
|
457
|
-
<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" />
|
|
458
480
|
</base-form-section>
|
|
459
481
|
</v-form>
|
|
460
|
-
<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" />
|
|
461
483
|
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
462
484
|
<div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
|
|
463
|
-
<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" />
|
|
464
486
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
465
|
-
<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())" />
|
|
466
488
|
<base-panel-select-item
|
|
467
489
|
v-for="(item, index) of panelList.filter(i => i.nameRu && (i.nameRu as string).match(new RegExp(searchQuery, 'i')))"
|
|
468
490
|
:key="index"
|
|
469
491
|
:text="(item.nameRu as string)"
|
|
470
492
|
:selected="item.nameRu === panelValue.nameRu"
|
|
471
493
|
@click="pickPanelValue(item)"
|
|
472
|
-
|
|
494
|
+
/>
|
|
473
495
|
</div>
|
|
474
|
-
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50"
|
|
496
|
+
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
475
497
|
</div>
|
|
476
498
|
</Teleport>
|
|
477
499
|
<Teleport v-if="isSearchOpen" to="#panel-actions">
|
|
478
500
|
<div :class="[$libStyles.flexColNav]">
|
|
479
|
-
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$t('buttons.fromGBDFL')" @click="getContragentFromGBDFL"
|
|
480
|
-
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$t('buttons.fromInsis')" @click="getContragent"
|
|
481
|
-
<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" />
|
|
482
504
|
</div>
|
|
483
505
|
</Teleport>
|
|
484
506
|
<Teleport v-if="isDocumentOpen" to="#panel-actions">
|
|
485
507
|
<div :class="[$libStyles.flexColNav]">
|
|
486
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')"
|
|
487
|
-
<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')" />
|
|
510
|
+
</div>
|
|
511
|
+
</Teleport>
|
|
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()" />
|
|
488
528
|
</div>
|
|
489
529
|
</Teleport>
|
|
490
|
-
<base-dialog v-model="familyDialog" :title="$t('dialog.familyMember')" actions="familyDialog">
|
|
530
|
+
<base-dialog v-model="familyDialog" :title="$dataStore.t('dialog.familyMember')" actions="familyDialog">
|
|
491
531
|
<template #actions>
|
|
492
|
-
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)"
|
|
532
|
+
<base-family-dialog :selected="selectedFamilyMember" @selectFamilyMember="selectFamilyMember" @reset="closeFamilyDialog(true)" />
|
|
493
533
|
</template>
|
|
494
534
|
</base-dialog>
|
|
495
535
|
</section>
|
|
496
|
-
<base-scroll-buttons @up="scrollForm('up')" @down="scrollForm('down')"
|
|
536
|
+
<base-scroll-buttons @up="scrollForm('up')" @down="scrollForm('down')" />
|
|
497
537
|
</template>
|
|
498
538
|
|
|
499
539
|
<script lang="ts">
|
|
500
|
-
import {
|
|
501
|
-
import { Value, DocumentItem } from '@/composables/classes';
|
|
540
|
+
import { Value, DocumentItem, Member } from '../../composables/classes';
|
|
502
541
|
import { uuid } from 'vue-uuid';
|
|
542
|
+
import { StoreMembers } from '../../types/enum';
|
|
503
543
|
|
|
504
544
|
export default {
|
|
505
545
|
setup() {
|
|
@@ -509,18 +549,22 @@ export default {
|
|
|
509
549
|
const dataStore = useDataStore();
|
|
510
550
|
const formStore = useFormStore();
|
|
511
551
|
const memberStore = useMemberStore();
|
|
512
|
-
const
|
|
513
|
-
|
|
514
|
-
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));
|
|
515
556
|
const selectedFamilyMember = ref<BirthInfoGKB>({});
|
|
516
557
|
const isPanelOpen = ref<boolean>(false);
|
|
517
558
|
const memberDocument = ref<DocumentItem>();
|
|
518
559
|
const isButtonLoading = ref<boolean>(false);
|
|
519
560
|
const isSubmittingForm = ref<boolean>(false);
|
|
520
561
|
const documentLoading = ref<boolean>(false);
|
|
562
|
+
const otpSending = ref<boolean>(false);
|
|
521
563
|
const isSearchOpen = ref<boolean>(false);
|
|
522
564
|
const isDocumentOpen = ref<boolean>(false);
|
|
565
|
+
const isOtpPanelOpen = ref<boolean>(false);
|
|
523
566
|
const isPanelLoading = ref<boolean>(false);
|
|
567
|
+
const isChangingMember = ref<boolean>(false);
|
|
524
568
|
const familyDialog = ref<boolean>(false);
|
|
525
569
|
const sameAddress = ref<boolean>(false);
|
|
526
570
|
const panelValue = ref<Value>(new Value());
|
|
@@ -529,12 +573,11 @@ export default {
|
|
|
529
573
|
const searchQuery = ref<string>('');
|
|
530
574
|
const fileData = ref<{ file: any }>();
|
|
531
575
|
|
|
532
|
-
const
|
|
533
|
-
const whichIndex = computed(() => route.query.i);
|
|
576
|
+
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
534
577
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
535
|
-
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value
|
|
578
|
+
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value));
|
|
536
579
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
537
|
-
const isIinPhoneDisabled = computed(() =>
|
|
580
|
+
const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
|
|
538
581
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
539
582
|
const showSaveButton = computed(() => {
|
|
540
583
|
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
@@ -554,14 +597,39 @@ export default {
|
|
|
554
597
|
return generalCondition && perMemberCondtion();
|
|
555
598
|
});
|
|
556
599
|
|
|
557
|
-
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
|
+
});
|
|
558
623
|
const hasInsis = computed(() => dataStore.controls.hasInsis);
|
|
559
624
|
const hasGKB = computed(() => {
|
|
560
|
-
const byProductCondition = dataStore.isGons || dataStore.isBolashak;
|
|
561
625
|
const perMemberCondition = () => {
|
|
562
626
|
switch (whichForm.value) {
|
|
563
|
-
case formStore.beneficiaryFormKey:
|
|
627
|
+
case formStore.beneficiaryFormKey: {
|
|
628
|
+
if (dataStore.isKazyna || dataStore.isLiferenta) {
|
|
629
|
+
return !member.value.iin;
|
|
630
|
+
}
|
|
564
631
|
return member.value.id === 0;
|
|
632
|
+
}
|
|
565
633
|
case formStore.policyholderFormKey:
|
|
566
634
|
case formStore.insuredFormKey:
|
|
567
635
|
case formStore.beneficialOwnerFormKey:
|
|
@@ -571,56 +639,91 @@ export default {
|
|
|
571
639
|
return false;
|
|
572
640
|
}
|
|
573
641
|
};
|
|
574
|
-
return dataStore.controls.hasGKB && !!dataStore.isTask() &&
|
|
642
|
+
return dataStore.controls.hasGKB && !!dataStore.isTask() && perMemberCondition();
|
|
575
643
|
});
|
|
576
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;
|
|
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);
|
|
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
|
+
});
|
|
577
686
|
const ageRule = computed(() => {
|
|
578
|
-
const baseAgeRule = dataStore.rules.
|
|
687
|
+
const baseAgeRule = dataStore.rules.numbers;
|
|
579
688
|
const byMemberAndProductRule = () => {
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
return dataStore.rules.policyholderAgeLimit;
|
|
584
|
-
}
|
|
689
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
690
|
+
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
691
|
+
return dataStore.rules.age18;
|
|
585
692
|
}
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
693
|
+
}
|
|
694
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
695
|
+
if (dataStore.isBolashak) {
|
|
696
|
+
return dataStore.rules.beneficiaryAgeLimit;
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
700
|
+
if (dataStore.isBaiterek || dataStore.isBolashak) {
|
|
701
|
+
return dataStore.rules.age18;
|
|
590
702
|
}
|
|
591
|
-
default:
|
|
592
|
-
return [];
|
|
593
703
|
}
|
|
704
|
+
return [];
|
|
594
705
|
};
|
|
595
706
|
return baseAgeRule.concat(byMemberAndProductRule());
|
|
596
707
|
});
|
|
597
708
|
|
|
598
709
|
const phoneRule = computed(() => {
|
|
599
710
|
const basePhoneRule = dataStore.rules.required.concat(dataStore.rules.phoneFormat);
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
if (dataStore.isGons || dataStore.isBolashak) {
|
|
604
|
-
return [];
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
default:
|
|
608
|
-
return basePhoneRule;
|
|
711
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
712
|
+
if (dataStore.isGons || dataStore.isBolashak) {
|
|
713
|
+
return [];
|
|
609
714
|
}
|
|
610
|
-
}
|
|
611
|
-
return
|
|
715
|
+
}
|
|
716
|
+
return basePhoneRule;
|
|
612
717
|
});
|
|
613
718
|
|
|
614
719
|
const residencyRule = computed(() => {
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
}
|
|
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);
|
|
620
724
|
}
|
|
621
|
-
default:
|
|
622
|
-
return dataStore.rules.objectRequired;
|
|
623
725
|
}
|
|
726
|
+
return baseResidencyRule;
|
|
624
727
|
});
|
|
625
728
|
|
|
626
729
|
const getOtpConditionByMember = () => {
|
|
@@ -644,10 +747,11 @@ export default {
|
|
|
644
747
|
const searchMember = async () => {
|
|
645
748
|
if (!isDisabled.value) {
|
|
646
749
|
dataStore.panelAction = null;
|
|
647
|
-
dataStore.panel.title = 'Поиск
|
|
750
|
+
dataStore.panel.title = 'Поиск контрагента';
|
|
648
751
|
dataStore.panel.open = true;
|
|
649
752
|
isSearchOpen.value = true;
|
|
650
753
|
isDocumentOpen.value = false;
|
|
754
|
+
isOtpPanelOpen.value = false;
|
|
651
755
|
isPanelOpen.value = false;
|
|
652
756
|
} else {
|
|
653
757
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -658,13 +762,21 @@ export default {
|
|
|
658
762
|
vForm.value.scrollTo({ top: direction === 'up' ? 0 : screen.height * 10, behavior: 'smooth' });
|
|
659
763
|
};
|
|
660
764
|
|
|
661
|
-
const openCustomPanel = (type: 'document' = 'document') => {
|
|
765
|
+
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
662
766
|
dataStore.panelAction = null;
|
|
663
767
|
if (type === 'document' && memberDocument.value) {
|
|
664
768
|
dataStore.panel.title = memberDocument.value.fileTypeName!;
|
|
665
769
|
isDocumentOpen.value = true;
|
|
666
770
|
isSearchOpen.value = false;
|
|
667
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;
|
|
668
780
|
}
|
|
669
781
|
dataStore.panel.open = true;
|
|
670
782
|
};
|
|
@@ -673,6 +785,7 @@ export default {
|
|
|
673
785
|
if (!isDisabled.value) {
|
|
674
786
|
isSearchOpen.value = false;
|
|
675
787
|
isDocumentOpen.value = false;
|
|
788
|
+
isOtpPanelOpen.value = false;
|
|
676
789
|
// Feature
|
|
677
790
|
// const notAllowedToChange = ['gender', 'documentType', 'documentIssuers'];
|
|
678
791
|
// if (member.value.gotFromInsis === false && notAllowedToChange.includes(key)) {
|
|
@@ -726,55 +839,6 @@ export default {
|
|
|
726
839
|
}
|
|
727
840
|
};
|
|
728
841
|
|
|
729
|
-
const setAddress = () => {
|
|
730
|
-
const beneficiary = formStore.beneficiaryForm[Number(whichIndex.value)];
|
|
731
|
-
const policyholder = formStore.policyholderForm;
|
|
732
|
-
if (sameAddress.value === true) {
|
|
733
|
-
beneficiary.registrationCity = policyholder.registrationCity;
|
|
734
|
-
beneficiary.registrationCountry = policyholder.registrationCountry;
|
|
735
|
-
beneficiary.birthPlace = policyholder.birthPlace;
|
|
736
|
-
beneficiary.registrationMicroDistrict = policyholder.registrationMicroDistrict;
|
|
737
|
-
beneficiary.registrationNumberApartment = policyholder.registrationNumberApartment;
|
|
738
|
-
beneficiary.registrationNumberApartment = policyholder.registrationNumberApartment;
|
|
739
|
-
beneficiary.registrationNumberHouse = policyholder.registrationNumberHouse;
|
|
740
|
-
beneficiary.registrationProvince = policyholder.registrationProvince;
|
|
741
|
-
beneficiary.registrationQuarter = policyholder.registrationQuarter;
|
|
742
|
-
beneficiary.registrationRegion = policyholder.registrationRegion;
|
|
743
|
-
beneficiary.registrationRegionType = policyholder.registrationRegionType;
|
|
744
|
-
beneficiary.registrationStreet = policyholder.registrationStreet;
|
|
745
|
-
} else {
|
|
746
|
-
if (beneficiary.id === 0) {
|
|
747
|
-
beneficiary.registrationCity = new Value();
|
|
748
|
-
beneficiary.registrationCountry = new Value();
|
|
749
|
-
beneficiary.registrationMicroDistrict = '';
|
|
750
|
-
beneficiary.registrationNumberApartment = '';
|
|
751
|
-
beneficiary.registrationNumberApartment = '';
|
|
752
|
-
beneficiary.registrationNumberHouse = '';
|
|
753
|
-
beneficiary.registrationProvince = new Value();
|
|
754
|
-
beneficiary.registrationQuarter = '';
|
|
755
|
-
beneficiary.registrationRegion = new Value();
|
|
756
|
-
beneficiary.registrationRegionType = new Value();
|
|
757
|
-
beneficiary.registrationStreet = '';
|
|
758
|
-
} else {
|
|
759
|
-
const country = dataStore.countries.find(i => (i.nameRu as string).match(new RegExp(beneficiary.response?.addresses[0].countryName, 'i')));
|
|
760
|
-
const city = dataStore.cities.find(i => i.nameRu === beneficiary.response?.addresses[0].cityName.replace('г.', ''));
|
|
761
|
-
const province = dataStore.states.find(i => i.ids === beneficiary.response?.addresses[0].stateCode);
|
|
762
|
-
const localityType = dataStore.localityTypes.find(i => i.nameRu === beneficiary.response?.addresses[0].cityTypeName);
|
|
763
|
-
const region = dataStore.regions.find(i => i.ids == beneficiary.response?.addresses[0].regionCode);
|
|
764
|
-
beneficiary.registrationCountry = country ?? new Value();
|
|
765
|
-
beneficiary.registrationCity = city ?? new Value();
|
|
766
|
-
beneficiary.registrationMicroDistrict = beneficiary.response?.addresses[0].microRaion ?? '';
|
|
767
|
-
beneficiary.registrationNumberApartment = beneficiary.response?.addresses[0].apartmentNumber ?? '';
|
|
768
|
-
beneficiary.registrationNumberHouse = beneficiary.response?.addresses[0].blockNumber ?? '';
|
|
769
|
-
beneficiary.registrationProvince = province ?? new Value();
|
|
770
|
-
beneficiary.registrationQuarter = beneficiary.response?.addresses[0].kvartal ?? '';
|
|
771
|
-
beneficiary.registrationRegion = region ?? new Value();
|
|
772
|
-
beneficiary.registrationRegionType = localityType ?? new Value();
|
|
773
|
-
beneficiary.registrationStreet = beneficiary.response?.addresses[0].streetName ?? '';
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
};
|
|
777
|
-
|
|
778
842
|
const uploadFile = async (processInstanceId: string | number) => {
|
|
779
843
|
const selectedDocument = dataStore.dicFileTypeList.find((i: Value) => i.nameRu === member.value.documentType.nameRu);
|
|
780
844
|
const formData = new FormData();
|
|
@@ -818,6 +882,7 @@ export default {
|
|
|
818
882
|
};
|
|
819
883
|
|
|
820
884
|
const getFamilyInfo = async () => {
|
|
885
|
+
if (!formStore.policyholderForm.iin || !formStore.policyholderForm.phoneNumber) return;
|
|
821
886
|
if (formStore.birthInfos.length === 0) {
|
|
822
887
|
isButtonLoading.value = true;
|
|
823
888
|
await dataStore.getFamilyInfo(formStore.policyholderForm.iin, formStore.policyholderForm.phoneNumber);
|
|
@@ -859,7 +924,7 @@ export default {
|
|
|
859
924
|
};
|
|
860
925
|
|
|
861
926
|
const getContragentFromGBDFL = async () => {
|
|
862
|
-
if (member.value.hasAgreement
|
|
927
|
+
if (member.value.hasAgreement !== true) {
|
|
863
928
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
864
929
|
dataStore.panel.open = false;
|
|
865
930
|
isSearchOpen.value = false;
|
|
@@ -872,15 +937,19 @@ export default {
|
|
|
872
937
|
return;
|
|
873
938
|
}
|
|
874
939
|
isButtonLoading.value = true;
|
|
875
|
-
await dataStore.getContragentFromGBDFL(member.value);
|
|
876
|
-
|
|
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
|
+
}
|
|
877
948
|
isButtonLoading.value = false;
|
|
878
|
-
dataStore.panel.open = false;
|
|
879
|
-
isSearchOpen.value = false;
|
|
880
949
|
};
|
|
881
950
|
|
|
882
951
|
const getContragent = async () => {
|
|
883
|
-
if (member.value.hasAgreement
|
|
952
|
+
if (member.value.hasAgreement !== true) {
|
|
884
953
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
885
954
|
dataStore.panel.open = false;
|
|
886
955
|
isSearchOpen.value = false;
|
|
@@ -900,18 +969,18 @@ export default {
|
|
|
900
969
|
};
|
|
901
970
|
|
|
902
971
|
const validateESBD = async (docTypeNumber: number) => {
|
|
903
|
-
const data = {
|
|
972
|
+
const data: ESBDValidationType = {
|
|
904
973
|
personType: 1,
|
|
905
974
|
iin: member.value.iin!.replaceAll('-', ''),
|
|
906
|
-
lastName: member.value.lastName,
|
|
907
|
-
firstName: member.value.firstName,
|
|
908
|
-
middleName: member.value.middleName,
|
|
909
|
-
birthDate: member.value.getDateByKey('birthDate'),
|
|
910
|
-
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),
|
|
911
980
|
docType: docTypeNumber,
|
|
912
|
-
docNumber: member.value.documentNumber,
|
|
913
|
-
docIssuedDate: member.value.getDateByKey('documentDate'),
|
|
914
|
-
docIssuedBy: member.value.documentIssuers.nameRu,
|
|
981
|
+
docNumber: member.value.documentNumber ?? '',
|
|
982
|
+
docIssuedDate: member.value.getDateByKey('documentDate') ?? '',
|
|
983
|
+
docIssuedBy: member.value.documentIssuers.nameRu ?? '',
|
|
915
984
|
activityKindId: 0,
|
|
916
985
|
economicsSectorId: Number((member.value.economySectorCode.ids! as string).at(-1)),
|
|
917
986
|
resident: member.value.signOfResidency.ids === '500011.2' || member.value.signOfResidency.ids === null ? 0 : 1,
|
|
@@ -921,18 +990,20 @@ export default {
|
|
|
921
990
|
};
|
|
922
991
|
|
|
923
992
|
const saveMember = async () => {
|
|
924
|
-
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);
|
|
925
994
|
if (hasSaved === false) {
|
|
926
995
|
dataStore.isLoading = false;
|
|
927
996
|
return false;
|
|
928
997
|
}
|
|
929
998
|
const isInsured = formStore.isPolicyholderInsured;
|
|
999
|
+
const remoteIsInsured = ref<boolean | null>(null);
|
|
930
1000
|
if (whichForm.value == formStore.policyholderFormKey) {
|
|
931
1001
|
if (route.params.taskId === '0') {
|
|
932
1002
|
try {
|
|
933
1003
|
const taskId = await dataStore.startApplication(member.value);
|
|
934
|
-
if (taskId) {
|
|
1004
|
+
if (typeof taskId === 'string') {
|
|
935
1005
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1006
|
+
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
936
1007
|
await router.replace({
|
|
937
1008
|
name: route.name!,
|
|
938
1009
|
params: { taskId: taskId as string },
|
|
@@ -954,23 +1025,33 @@ export default {
|
|
|
954
1025
|
await uploadFile(formStore.applicationData.processInstanceId);
|
|
955
1026
|
}
|
|
956
1027
|
}
|
|
957
|
-
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value
|
|
958
|
-
|
|
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);
|
|
959
1034
|
if (!isSaved) return false;
|
|
960
|
-
if (whichForm.value === formStore.policyholderFormKey
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
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;
|
|
968
1049
|
}
|
|
969
1050
|
await router.replace({
|
|
970
1051
|
name: route.name!,
|
|
971
1052
|
query: { ...route.query, id: member.value.id },
|
|
972
1053
|
});
|
|
973
|
-
await dataStore.getApplicationData(route.params.taskId, false, false,
|
|
1054
|
+
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
974
1055
|
if (dataStore.controls.hasCalculator) {
|
|
975
1056
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
976
1057
|
formStore.additionalInsuranceTerms.forEach((term: any) => {
|
|
@@ -994,7 +1075,7 @@ export default {
|
|
|
994
1075
|
return true;
|
|
995
1076
|
}
|
|
996
1077
|
}
|
|
997
|
-
if (member.value.hasAgreement
|
|
1078
|
+
if (member.value.hasAgreement !== true) {
|
|
998
1079
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
999
1080
|
return false;
|
|
1000
1081
|
}
|
|
@@ -1058,71 +1139,130 @@ export default {
|
|
|
1058
1139
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: dataStore.t('form.otpCode') }), 3000);
|
|
1059
1140
|
return;
|
|
1060
1141
|
}
|
|
1142
|
+
otpSending.value = true;
|
|
1061
1143
|
const checked = await memberStore.checkOtp(member.value);
|
|
1062
1144
|
if (typeof checked !== 'undefined') {
|
|
1063
1145
|
member.value.hasAgreement = checked;
|
|
1064
1146
|
}
|
|
1147
|
+
otpSending.value = false;
|
|
1148
|
+
if (checked === true) {
|
|
1149
|
+
dataStore.panel.open = false;
|
|
1150
|
+
}
|
|
1065
1151
|
};
|
|
1066
1152
|
|
|
1067
1153
|
const sendOtp = async (onInit = false) => {
|
|
1154
|
+
otpSending.value = true;
|
|
1068
1155
|
const response = await memberStore.sendOtp(member.value, formStore.applicationData.processInstanceId, onInit);
|
|
1069
1156
|
if (response) {
|
|
1070
1157
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1158
|
+
if (response.otpStatus === true) {
|
|
1159
|
+
dataStore.panel.open = false;
|
|
1160
|
+
}
|
|
1071
1161
|
}
|
|
1162
|
+
otpSending.value = false;
|
|
1072
1163
|
};
|
|
1073
1164
|
|
|
1074
|
-
const
|
|
1075
|
-
|
|
1076
|
-
|
|
1165
|
+
const setDefaultValues = async () => {
|
|
1166
|
+
const setDefaults = dataStore.controls.setDefaults;
|
|
1167
|
+
if (setDefaults.sectorCode) {
|
|
1168
|
+
await setSectorCode();
|
|
1169
|
+
}
|
|
1170
|
+
if (setDefaults.percentage) {
|
|
1171
|
+
setPercentage();
|
|
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
|
+
}
|
|
1077
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
|
+
// }
|
|
1078
1221
|
if (getOtpConditionByMember()) {
|
|
1079
1222
|
await sendOtp(true);
|
|
1080
1223
|
} else {
|
|
1081
1224
|
if (member.value.hasAgreement === null) member.value.hasAgreement = true;
|
|
1082
1225
|
}
|
|
1083
|
-
if (
|
|
1084
|
-
await
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
query: { ...route.query, id: member.value.id },
|
|
1090
|
-
});
|
|
1091
|
-
}
|
|
1092
|
-
if (member.value.id) {
|
|
1093
|
-
const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1094
|
-
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];
|
|
1095
1232
|
}
|
|
1233
|
+
await setDefaultValues();
|
|
1096
1234
|
};
|
|
1097
1235
|
|
|
1098
1236
|
onMounted(async () => {
|
|
1099
1237
|
await onInit();
|
|
1100
1238
|
});
|
|
1101
1239
|
|
|
1102
|
-
onBeforeRouteUpdate(to => {
|
|
1103
|
-
if ('tab' in to.query && to.query.tab !== 'productConditions') {
|
|
1104
|
-
member.value = getMember(to.query.tab, to.query.i);
|
|
1105
|
-
}
|
|
1106
|
-
});
|
|
1107
|
-
|
|
1108
1240
|
watch(
|
|
1109
1241
|
() => sameAddress.value,
|
|
1110
1242
|
() => {
|
|
1111
|
-
if (whichForm.value === formStore.beneficiaryFormKey)
|
|
1243
|
+
if (whichForm.value === formStore.beneficiaryFormKey) setAddressBeneficiary(Number(whichIndex.value), sameAddress.value);
|
|
1112
1244
|
},
|
|
1113
1245
|
);
|
|
1114
1246
|
|
|
1115
1247
|
watch(
|
|
1116
1248
|
() => member.value.percentageOfPayoutAmount,
|
|
1117
1249
|
val => {
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
if (percentage
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
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
|
+
}
|
|
1126
1266
|
}
|
|
1127
1267
|
}
|
|
1128
1268
|
},
|
|
@@ -1138,14 +1278,21 @@ export default {
|
|
|
1138
1278
|
},
|
|
1139
1279
|
);
|
|
1140
1280
|
|
|
1141
|
-
|
|
1142
|
-
(
|
|
1143
|
-
|
|
1144
|
-
if (
|
|
1145
|
-
|
|
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;
|
|
1146
1287
|
}
|
|
1147
|
-
}
|
|
1148
|
-
|
|
1288
|
+
}
|
|
1289
|
+
};
|
|
1290
|
+
|
|
1291
|
+
const onOtpCodeInput = async () => {
|
|
1292
|
+
if (member.value.otpCode && member.value.otpCode.length === useMask().otp.length) {
|
|
1293
|
+
await checkOtp();
|
|
1294
|
+
}
|
|
1295
|
+
};
|
|
1149
1296
|
|
|
1150
1297
|
watch(
|
|
1151
1298
|
() => dataStore.panel.open,
|
|
@@ -1154,6 +1301,7 @@ export default {
|
|
|
1154
1301
|
isPanelOpen.value = false;
|
|
1155
1302
|
isDocumentOpen.value = false;
|
|
1156
1303
|
isSearchOpen.value = false;
|
|
1304
|
+
isOtpPanelOpen.value = false;
|
|
1157
1305
|
dataStore.panelAction = null;
|
|
1158
1306
|
}
|
|
1159
1307
|
},
|
|
@@ -1175,10 +1323,12 @@ export default {
|
|
|
1175
1323
|
isPanelOpen,
|
|
1176
1324
|
isSearchOpen,
|
|
1177
1325
|
isDocumentOpen,
|
|
1326
|
+
isOtpPanelOpen,
|
|
1178
1327
|
isPanelLoading,
|
|
1179
1328
|
isButtonLoading,
|
|
1180
1329
|
isSubmittingForm,
|
|
1181
1330
|
documentLoading,
|
|
1331
|
+
otpSending,
|
|
1182
1332
|
panelValue,
|
|
1183
1333
|
panelList,
|
|
1184
1334
|
searchQuery,
|
|
@@ -1191,6 +1341,7 @@ export default {
|
|
|
1191
1341
|
// Computed
|
|
1192
1342
|
whichForm,
|
|
1193
1343
|
whichIndex,
|
|
1344
|
+
memberSetting,
|
|
1194
1345
|
otpCondition,
|
|
1195
1346
|
hasOtp,
|
|
1196
1347
|
isDisabled,
|
|
@@ -1201,11 +1352,16 @@ export default {
|
|
|
1201
1352
|
hasGBDFL,
|
|
1202
1353
|
hasInsis,
|
|
1203
1354
|
hasGKB,
|
|
1355
|
+
hasFamilyStatus,
|
|
1356
|
+
hasInsurancePay,
|
|
1357
|
+
hasSignOfIPDL,
|
|
1358
|
+
hasSameAddressToggle,
|
|
1204
1359
|
|
|
1205
1360
|
// Rules
|
|
1206
1361
|
ageRule,
|
|
1207
1362
|
phoneRule,
|
|
1208
1363
|
residencyRule,
|
|
1364
|
+
birthDateRule,
|
|
1209
1365
|
|
|
1210
1366
|
// Functions
|
|
1211
1367
|
searchMember,
|
|
@@ -1223,6 +1379,10 @@ export default {
|
|
|
1223
1379
|
selectFamilyMember,
|
|
1224
1380
|
closeFamilyDialog,
|
|
1225
1381
|
scrollForm,
|
|
1382
|
+
onIinInput,
|
|
1383
|
+
onOtpCodeInput,
|
|
1384
|
+
deleteMember,
|
|
1385
|
+
selectMember,
|
|
1226
1386
|
};
|
|
1227
1387
|
},
|
|
1228
1388
|
};
|