hl-core 0.0.8-beta.4 → 0.0.8-beta.40
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 +117 -44
- 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 +77 -33
- package/components/Form/FormSection.vue +4 -1
- package/components/Form/FormToggle.vue +2 -3
- package/components/Form/ManagerAttachment.vue +197 -0
- 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 +51 -33
- 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 +533 -292
- package/components/Pages/ProductAgreement.vue +4 -2
- package/components/Pages/ProductConditions.vue +509 -99
- package/components/Panel/PanelHandler.vue +93 -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 +217 -97
- package/composables/constants.ts +26 -52
- package/composables/index.ts +80 -2
- package/composables/styles.ts +8 -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 +9 -1
- package/package.json +41 -11
- package/pages/500.vue +2 -2
- package/pages/Token.vue +51 -0
- package/plugins/helperFunctionsPlugins.ts +3 -0
- package/plugins/storePlugin.ts +0 -1
- package/plugins/vuetifyPlugin.ts +8 -1
- package/store/data.store.ts +2649 -0
- package/store/form.store.ts +1 -1
- package/store/member.store.ts +164 -52
- package/store/{rules.js → rules.ts} +63 -25
- package/types/enum.ts +83 -0
- package/types/env.d.ts +10 -0
- package/types/index.ts +211 -7
- package/store/data.store.js +0 -2508
- package/store/messages.ts +0 -434
|
@@ -1,343 +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)">
|
|
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>
|
|
@@ -345,154 +362,184 @@
|
|
|
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
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
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,56 +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();
|
|
567
643
|
});
|
|
568
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
|
+
});
|
|
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
|
-
}
|
|
689
|
+
if (whichForm.value === formStore.policyholderFormKey) {
|
|
690
|
+
if (dataStore.isGons || dataStore.isBolashak || dataStore.isBaiterek) {
|
|
691
|
+
return dataStore.rules.age18;
|
|
577
692
|
}
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
693
|
+
}
|
|
694
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
695
|
+
if (dataStore.isBolashak) {
|
|
696
|
+
return dataStore.rules.beneficiaryAgeLimit;
|
|
582
697
|
}
|
|
583
|
-
default:
|
|
584
|
-
return [];
|
|
585
698
|
}
|
|
699
|
+
if (whichForm.value === formStore.insuredFormKey) {
|
|
700
|
+
if (dataStore.isBaiterek || dataStore.isBolashak) {
|
|
701
|
+
return dataStore.rules.age18;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
return [];
|
|
586
705
|
};
|
|
587
706
|
return baseAgeRule.concat(byMemberAndProductRule());
|
|
588
707
|
});
|
|
589
708
|
|
|
590
709
|
const phoneRule = computed(() => {
|
|
591
710
|
const basePhoneRule = dataStore.rules.required.concat(dataStore.rules.phoneFormat);
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
if (dataStore.isGons || dataStore.isBolashak) {
|
|
596
|
-
return [];
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
default:
|
|
600
|
-
return basePhoneRule;
|
|
711
|
+
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
712
|
+
if (dataStore.isGons || dataStore.isBolashak) {
|
|
713
|
+
return [];
|
|
601
714
|
}
|
|
602
|
-
}
|
|
603
|
-
return
|
|
715
|
+
}
|
|
716
|
+
return basePhoneRule;
|
|
604
717
|
});
|
|
605
718
|
|
|
606
719
|
const residencyRule = computed(() => {
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
}
|
|
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);
|
|
612
724
|
}
|
|
613
|
-
default:
|
|
614
|
-
return dataStore.rules.objectRequired;
|
|
615
725
|
}
|
|
726
|
+
return baseResidencyRule;
|
|
616
727
|
});
|
|
617
728
|
|
|
618
729
|
const getOtpConditionByMember = () => {
|
|
@@ -636,10 +747,11 @@ export default {
|
|
|
636
747
|
const searchMember = async () => {
|
|
637
748
|
if (!isDisabled.value) {
|
|
638
749
|
dataStore.panelAction = null;
|
|
639
|
-
dataStore.panel.title = 'Поиск
|
|
750
|
+
dataStore.panel.title = 'Поиск контрагента';
|
|
640
751
|
dataStore.panel.open = true;
|
|
641
752
|
isSearchOpen.value = true;
|
|
642
753
|
isDocumentOpen.value = false;
|
|
754
|
+
isOtpPanelOpen.value = false;
|
|
643
755
|
isPanelOpen.value = false;
|
|
644
756
|
} else {
|
|
645
757
|
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
@@ -650,13 +762,21 @@ export default {
|
|
|
650
762
|
vForm.value.scrollTo({ top: direction === 'up' ? 0 : screen.height * 10, behavior: 'smooth' });
|
|
651
763
|
};
|
|
652
764
|
|
|
653
|
-
const openCustomPanel = (type: 'document' = 'document') => {
|
|
765
|
+
const openCustomPanel = (type: 'document' | 'otp' = 'document') => {
|
|
654
766
|
dataStore.panelAction = null;
|
|
655
767
|
if (type === 'document' && memberDocument.value) {
|
|
656
768
|
dataStore.panel.title = memberDocument.value.fileTypeName!;
|
|
657
769
|
isDocumentOpen.value = true;
|
|
658
770
|
isSearchOpen.value = false;
|
|
659
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;
|
|
660
780
|
}
|
|
661
781
|
dataStore.panel.open = true;
|
|
662
782
|
};
|
|
@@ -665,6 +785,7 @@ export default {
|
|
|
665
785
|
if (!isDisabled.value) {
|
|
666
786
|
isSearchOpen.value = false;
|
|
667
787
|
isDocumentOpen.value = false;
|
|
788
|
+
isOtpPanelOpen.value = false;
|
|
668
789
|
// Feature
|
|
669
790
|
// const notAllowedToChange = ['gender', 'documentType', 'documentIssuers'];
|
|
670
791
|
// if (member.value.gotFromInsis === false && notAllowedToChange.includes(key)) {
|
|
@@ -683,7 +804,7 @@ export default {
|
|
|
683
804
|
isPanelLoading.value = true;
|
|
684
805
|
newList = await asyncFunction(filterKey, member.value);
|
|
685
806
|
}
|
|
686
|
-
panelList.value = newList;
|
|
807
|
+
panelList.value = filterList(newList, key);
|
|
687
808
|
panelValue.value = member.value[currentPanel.value];
|
|
688
809
|
isPanelLoading.value = false;
|
|
689
810
|
} else {
|
|
@@ -691,6 +812,22 @@ export default {
|
|
|
691
812
|
}
|
|
692
813
|
};
|
|
693
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
|
+
|
|
694
831
|
const pickPanelValue = (item: Value) => {
|
|
695
832
|
if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
|
|
696
833
|
dataStore.panel.open = false;
|
|
@@ -745,6 +882,7 @@ export default {
|
|
|
745
882
|
};
|
|
746
883
|
|
|
747
884
|
const getFamilyInfo = async () => {
|
|
885
|
+
if (!formStore.policyholderForm.iin || !formStore.policyholderForm.phoneNumber) return;
|
|
748
886
|
if (formStore.birthInfos.length === 0) {
|
|
749
887
|
isButtonLoading.value = true;
|
|
750
888
|
await dataStore.getFamilyInfo(formStore.policyholderForm.iin, formStore.policyholderForm.phoneNumber);
|
|
@@ -786,59 +924,63 @@ export default {
|
|
|
786
924
|
};
|
|
787
925
|
|
|
788
926
|
const getContragentFromGBDFL = async () => {
|
|
789
|
-
if (member.value.hasAgreement
|
|
927
|
+
if (member.value.hasAgreement !== true) {
|
|
790
928
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
791
929
|
dataStore.panel.open = false;
|
|
792
930
|
isSearchOpen.value = false;
|
|
793
931
|
return;
|
|
794
932
|
}
|
|
795
933
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
796
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
934
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'Номер телефона, ИИН' }), 5000);
|
|
797
935
|
dataStore.panel.open = false;
|
|
798
936
|
isSearchOpen.value = false;
|
|
799
937
|
return;
|
|
800
938
|
}
|
|
801
939
|
isButtonLoading.value = true;
|
|
802
|
-
await dataStore.getContragentFromGBDFL(member.value
|
|
803
|
-
|
|
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
|
+
}
|
|
804
948
|
isButtonLoading.value = false;
|
|
805
|
-
dataStore.panel.open = false;
|
|
806
|
-
isSearchOpen.value = false;
|
|
807
949
|
};
|
|
808
950
|
|
|
809
951
|
const getContragent = async () => {
|
|
810
|
-
if (member.value.hasAgreement
|
|
952
|
+
if (member.value.hasAgreement !== true) {
|
|
811
953
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
812
954
|
dataStore.panel.open = false;
|
|
813
955
|
isSearchOpen.value = false;
|
|
814
956
|
return;
|
|
815
957
|
}
|
|
816
958
|
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
817
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
959
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: 'ИИН' }), 5000);
|
|
818
960
|
dataStore.panel.open = false;
|
|
819
961
|
isSearchOpen.value = false;
|
|
820
962
|
return;
|
|
821
963
|
}
|
|
822
964
|
isButtonLoading.value = true;
|
|
823
|
-
await dataStore.getContragent(member.value,
|
|
965
|
+
await dataStore.getContragent(member.value, false);
|
|
824
966
|
isButtonLoading.value = false;
|
|
825
967
|
dataStore.panel.open = false;
|
|
826
968
|
isSearchOpen.value = false;
|
|
827
969
|
};
|
|
828
970
|
|
|
829
971
|
const validateESBD = async (docTypeNumber: number) => {
|
|
830
|
-
const data = {
|
|
972
|
+
const data: ESBDValidationType = {
|
|
831
973
|
personType: 1,
|
|
832
974
|
iin: member.value.iin!.replaceAll('-', ''),
|
|
833
|
-
lastName: member.value.lastName,
|
|
834
|
-
firstName: member.value.firstName,
|
|
835
|
-
middleName: member.value.middleName,
|
|
836
|
-
birthDate: member.value.getDateByKey('birthDate'),
|
|
837
|
-
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),
|
|
838
980
|
docType: docTypeNumber,
|
|
839
|
-
docNumber: member.value.documentNumber,
|
|
840
|
-
docIssuedDate: member.value.getDateByKey('documentDate'),
|
|
841
|
-
docIssuedBy: member.value.documentIssuers.nameRu,
|
|
981
|
+
docNumber: member.value.documentNumber ?? '',
|
|
982
|
+
docIssuedDate: member.value.getDateByKey('documentDate') ?? '',
|
|
983
|
+
docIssuedBy: member.value.documentIssuers.nameRu ?? '',
|
|
842
984
|
activityKindId: 0,
|
|
843
985
|
economicsSectorId: Number((member.value.economySectorCode.ids! as string).at(-1)),
|
|
844
986
|
resident: member.value.signOfResidency.ids === '500011.2' || member.value.signOfResidency.ids === null ? 0 : 1,
|
|
@@ -848,18 +990,20 @@ export default {
|
|
|
848
990
|
};
|
|
849
991
|
|
|
850
992
|
const saveMember = async () => {
|
|
851
|
-
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);
|
|
852
994
|
if (hasSaved === false) {
|
|
853
995
|
dataStore.isLoading = false;
|
|
854
996
|
return false;
|
|
855
997
|
}
|
|
856
998
|
const isInsured = formStore.isPolicyholderInsured;
|
|
999
|
+
const remoteIsInsured = ref<boolean | null>(null);
|
|
857
1000
|
if (whichForm.value == formStore.policyholderFormKey) {
|
|
858
1001
|
if (route.params.taskId === '0') {
|
|
859
1002
|
try {
|
|
860
1003
|
const taskId = await dataStore.startApplication(member.value);
|
|
861
|
-
if (taskId) {
|
|
1004
|
+
if (typeof taskId === 'string') {
|
|
862
1005
|
await dataStore.getApplicationData(taskId, false, false, false, false);
|
|
1006
|
+
remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
|
|
863
1007
|
await router.replace({
|
|
864
1008
|
name: route.name!,
|
|
865
1009
|
params: { taskId: taskId as string },
|
|
@@ -881,23 +1025,33 @@ export default {
|
|
|
881
1025
|
await uploadFile(formStore.applicationData.processInstanceId);
|
|
882
1026
|
}
|
|
883
1027
|
}
|
|
884
|
-
const memberFromApplicaiton = memberStore.getMemberFromApplication(whichForm.value
|
|
885
|
-
|
|
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);
|
|
886
1034
|
if (!isSaved) return false;
|
|
887
|
-
if (whichForm.value === formStore.policyholderFormKey
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
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;
|
|
895
1049
|
}
|
|
896
1050
|
await router.replace({
|
|
897
1051
|
name: route.name!,
|
|
898
1052
|
query: { ...route.query, id: member.value.id },
|
|
899
1053
|
});
|
|
900
|
-
await dataStore.getApplicationData(route.params.taskId, false, false,
|
|
1054
|
+
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
901
1055
|
if (dataStore.controls.hasCalculator) {
|
|
902
1056
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
903
1057
|
formStore.additionalInsuranceTerms.forEach((term: any) => {
|
|
@@ -921,7 +1075,7 @@ export default {
|
|
|
921
1075
|
return true;
|
|
922
1076
|
}
|
|
923
1077
|
}
|
|
924
|
-
if (member.value.hasAgreement
|
|
1078
|
+
if (member.value.hasAgreement !== true) {
|
|
925
1079
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
926
1080
|
return false;
|
|
927
1081
|
}
|
|
@@ -963,11 +1117,11 @@ export default {
|
|
|
963
1117
|
if (errors) {
|
|
964
1118
|
const errorText = errors.querySelector('.v-label.v-field-label');
|
|
965
1119
|
if (errorText) {
|
|
966
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1120
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: errorText.innerHTML?.replace(/[-<>!//.]/g, '') }));
|
|
967
1121
|
} else {
|
|
968
1122
|
const errorFieldText = errors.querySelector('.v-input__control');
|
|
969
1123
|
if (errorFieldText) {
|
|
970
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1124
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: errorFieldText.innerHTML?.replace(/[-<>!//.]/g, '') }));
|
|
971
1125
|
}
|
|
972
1126
|
}
|
|
973
1127
|
errors.scrollIntoView({
|
|
@@ -982,67 +1136,133 @@ export default {
|
|
|
982
1136
|
|
|
983
1137
|
const checkOtp = async () => {
|
|
984
1138
|
if (!member.value.otpCode || member.value.iin?.length !== useMask().iin.length || member.value.phoneNumber?.length !== useMask().phone.length) {
|
|
985
|
-
dataStore.showToaster('error', dataStore.t('toaster.errorFormField'
|
|
1139
|
+
dataStore.showToaster('error', dataStore.t('toaster.errorFormField', { text: dataStore.t('form.otpCode') }), 3000);
|
|
986
1140
|
return;
|
|
987
1141
|
}
|
|
1142
|
+
otpSending.value = true;
|
|
988
1143
|
const checked = await memberStore.checkOtp(member.value);
|
|
989
1144
|
if (typeof checked !== 'undefined') {
|
|
990
1145
|
member.value.hasAgreement = checked;
|
|
991
1146
|
}
|
|
1147
|
+
otpSending.value = false;
|
|
1148
|
+
if (checked === true) {
|
|
1149
|
+
dataStore.panel.open = false;
|
|
1150
|
+
}
|
|
992
1151
|
};
|
|
993
1152
|
|
|
994
1153
|
const sendOtp = async (onInit = false) => {
|
|
1154
|
+
otpSending.value = true;
|
|
995
1155
|
const response = await memberStore.sendOtp(member.value, formStore.applicationData.processInstanceId, onInit);
|
|
996
1156
|
if (response) {
|
|
997
1157
|
if (member.value.hasAgreement === null) member.value.hasAgreement = response.otpStatus;
|
|
1158
|
+
if (response.otpStatus === true) {
|
|
1159
|
+
dataStore.panel.open = false;
|
|
1160
|
+
}
|
|
998
1161
|
}
|
|
1162
|
+
otpSending.value = false;
|
|
999
1163
|
};
|
|
1000
1164
|
|
|
1001
|
-
const
|
|
1002
|
-
|
|
1003
|
-
|
|
1165
|
+
const setDefaultValues = async () => {
|
|
1166
|
+
const setDefaults = dataStore.controls.setDefaults;
|
|
1167
|
+
if (setDefaults.sectorCode) {
|
|
1168
|
+
await setSectorCode();
|
|
1169
|
+
}
|
|
1170
|
+
if (setDefaults.percentage) {
|
|
1171
|
+
setPercentage();
|
|
1004
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
|
+
// }
|
|
1005
1221
|
if (getOtpConditionByMember()) {
|
|
1006
1222
|
await sendOtp(true);
|
|
1007
1223
|
} else {
|
|
1008
1224
|
if (member.value.hasAgreement === null) member.value.hasAgreement = true;
|
|
1009
1225
|
}
|
|
1010
|
-
if (
|
|
1011
|
-
await
|
|
1012
|
-
}
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
query: { ...route.query, id: member.value.id },
|
|
1017
|
-
});
|
|
1018
|
-
}
|
|
1019
|
-
if (member.value.id) {
|
|
1020
|
-
const filteredDocuments: DocumentItem[] = dataStore.getFilesByIIN(member.value.iin!.replace(/-/g, '')) as DocumentItem[];
|
|
1021
|
-
if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
|
|
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];
|
|
1022
1232
|
}
|
|
1233
|
+
await setDefaultValues();
|
|
1023
1234
|
};
|
|
1024
1235
|
|
|
1025
1236
|
onMounted(async () => {
|
|
1026
1237
|
await onInit();
|
|
1027
1238
|
});
|
|
1028
1239
|
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1240
|
+
watch(
|
|
1241
|
+
() => sameAddress.value,
|
|
1242
|
+
() => {
|
|
1243
|
+
if (whichForm.value === formStore.beneficiaryFormKey) setAddressBeneficiary(Number(whichIndex.value), sameAddress.value);
|
|
1244
|
+
},
|
|
1245
|
+
);
|
|
1034
1246
|
|
|
1035
1247
|
watch(
|
|
1036
1248
|
() => member.value.percentageOfPayoutAmount,
|
|
1037
1249
|
val => {
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
if (percentage
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
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
|
+
}
|
|
1046
1266
|
}
|
|
1047
1267
|
}
|
|
1048
1268
|
},
|
|
@@ -1058,14 +1278,21 @@ export default {
|
|
|
1058
1278
|
},
|
|
1059
1279
|
);
|
|
1060
1280
|
|
|
1061
|
-
|
|
1062
|
-
(
|
|
1063
|
-
|
|
1064
|
-
if (
|
|
1065
|
-
|
|
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;
|
|
1066
1287
|
}
|
|
1067
|
-
}
|
|
1068
|
-
|
|
1288
|
+
}
|
|
1289
|
+
};
|
|
1290
|
+
|
|
1291
|
+
const onOtpCodeInput = async () => {
|
|
1292
|
+
if (member.value.otpCode && member.value.otpCode.length === useMask().otp.length) {
|
|
1293
|
+
await checkOtp();
|
|
1294
|
+
}
|
|
1295
|
+
};
|
|
1069
1296
|
|
|
1070
1297
|
watch(
|
|
1071
1298
|
() => dataStore.panel.open,
|
|
@@ -1074,6 +1301,7 @@ export default {
|
|
|
1074
1301
|
isPanelOpen.value = false;
|
|
1075
1302
|
isDocumentOpen.value = false;
|
|
1076
1303
|
isSearchOpen.value = false;
|
|
1304
|
+
isOtpPanelOpen.value = false;
|
|
1077
1305
|
dataStore.panelAction = null;
|
|
1078
1306
|
}
|
|
1079
1307
|
},
|
|
@@ -1095,10 +1323,12 @@ export default {
|
|
|
1095
1323
|
isPanelOpen,
|
|
1096
1324
|
isSearchOpen,
|
|
1097
1325
|
isDocumentOpen,
|
|
1326
|
+
isOtpPanelOpen,
|
|
1098
1327
|
isPanelLoading,
|
|
1099
1328
|
isButtonLoading,
|
|
1100
1329
|
isSubmittingForm,
|
|
1101
1330
|
documentLoading,
|
|
1331
|
+
otpSending,
|
|
1102
1332
|
panelValue,
|
|
1103
1333
|
panelList,
|
|
1104
1334
|
searchQuery,
|
|
@@ -1106,10 +1336,12 @@ export default {
|
|
|
1106
1336
|
memberDocument,
|
|
1107
1337
|
familyDialog,
|
|
1108
1338
|
selectedFamilyMember,
|
|
1339
|
+
sameAddress,
|
|
1109
1340
|
|
|
1110
1341
|
// Computed
|
|
1111
1342
|
whichForm,
|
|
1112
1343
|
whichIndex,
|
|
1344
|
+
memberSetting,
|
|
1113
1345
|
otpCondition,
|
|
1114
1346
|
hasOtp,
|
|
1115
1347
|
isDisabled,
|
|
@@ -1120,11 +1352,16 @@ export default {
|
|
|
1120
1352
|
hasGBDFL,
|
|
1121
1353
|
hasInsis,
|
|
1122
1354
|
hasGKB,
|
|
1355
|
+
hasFamilyStatus,
|
|
1356
|
+
hasInsurancePay,
|
|
1357
|
+
hasSignOfIPDL,
|
|
1358
|
+
hasSameAddressToggle,
|
|
1123
1359
|
|
|
1124
1360
|
// Rules
|
|
1125
1361
|
ageRule,
|
|
1126
1362
|
phoneRule,
|
|
1127
1363
|
residencyRule,
|
|
1364
|
+
birthDateRule,
|
|
1128
1365
|
|
|
1129
1366
|
// Functions
|
|
1130
1367
|
searchMember,
|
|
@@ -1142,6 +1379,10 @@ export default {
|
|
|
1142
1379
|
selectFamilyMember,
|
|
1143
1380
|
closeFamilyDialog,
|
|
1144
1381
|
scrollForm,
|
|
1382
|
+
onIinInput,
|
|
1383
|
+
onOtpCodeInput,
|
|
1384
|
+
deleteMember,
|
|
1385
|
+
selectMember,
|
|
1145
1386
|
};
|
|
1146
1387
|
},
|
|
1147
1388
|
};
|