hl-core 0.0.7-beta.9 → 0.0.8-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/.prettierrc +2 -1
- package/api/index.ts +94 -107
- package/api/interceptors.ts +4 -4
- package/components/Button/Btn.vue +7 -2
- package/components/Button/ScrollButtons.vue +6 -0
- package/components/Complex/ContentBlock.vue +5 -0
- package/components/{Layout → Dialog}/Dialog.vue +3 -27
- package/components/Dialog/FamilyDialog.vue +39 -0
- package/components/Form/FormBlock.vue +114 -0
- package/components/Form/FormSection.vue +18 -0
- package/components/Form/FormTextSection.vue +20 -0
- package/components/Form/FormToggle.vue +52 -0
- package/components/Form/ProductConditionsBlock.vue +68 -0
- package/components/Input/EmptyFormField.vue +5 -0
- package/components/Input/FileInput.vue +71 -0
- package/components/Input/FormInput.vue +171 -0
- package/components/Input/PanelInput.vue +133 -0
- package/components/Input/RoundedInput.vue +35 -36
- package/components/Layout/Drawer.vue +19 -16
- package/components/Layout/Header.vue +4 -18
- package/components/Layout/Loader.vue +1 -7
- package/components/Layout/SettingsPanel.vue +17 -37
- package/components/List/ListEmpty.vue +22 -0
- package/components/Menu/MenuNav.vue +22 -20
- package/components/Menu/MenuNavItem.vue +6 -6
- package/components/Pages/Anketa.vue +333 -0
- package/components/Pages/Auth.vue +91 -0
- package/components/Pages/Documents.vue +108 -0
- package/components/Pages/MemberForm.vue +1134 -0
- package/components/Pages/ProductAgreement.vue +18 -0
- package/components/Pages/ProductConditions.vue +360 -0
- package/components/Panel/PanelHandler.vue +231 -0
- package/components/Panel/PanelItem.vue +2 -4
- package/components/Panel/PanelSelectItem.vue +20 -0
- package/components/Transitions/FadeTransition.vue +5 -0
- package/components/Transitions/SlideTransition.vue +5 -0
- package/composables/classes.ts +301 -255
- package/composables/constants.ts +16 -9
- package/composables/index.ts +55 -60
- package/composables/styles.ts +33 -7
- package/layouts/default.vue +46 -26
- package/layouts/full.vue +2 -12
- package/nuxt.config.ts +3 -0
- package/package.json +13 -10
- package/pages/500.vue +40 -12
- package/plugins/helperFunctionsPlugins.ts +6 -2
- package/plugins/storePlugin.ts +6 -5
- package/store/data.store.js +865 -1942
- package/store/member.store.ts +291 -0
- package/store/messages.ts +70 -51
- package/store/rules.js +26 -28
- package/types/index.ts +303 -0
- package/composables/models.ts +0 -43
- /package/store/{form.store.js → form.store.ts} +0 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { defineStore } from 'pinia';
|
|
2
|
+
import { useDataStore } from './data.store';
|
|
3
|
+
import { useFormStore } from './form.store';
|
|
4
|
+
import { ErrorHandler } from '../composables';
|
|
5
|
+
import { AxiosError } from 'axios';
|
|
6
|
+
import { Member } from '../composables/classes';
|
|
7
|
+
|
|
8
|
+
export const useMemberStore = defineStore('members', {
|
|
9
|
+
state: () => ({
|
|
10
|
+
router: useRouter(),
|
|
11
|
+
dataStore: useDataStore(),
|
|
12
|
+
formStore: useFormStore(),
|
|
13
|
+
}),
|
|
14
|
+
actions: {
|
|
15
|
+
isStatementEditible(whichForm: string, showToaster: boolean = false) {
|
|
16
|
+
if (this.formStore.isDisabled[whichForm as keyof typeof this.formStore.isDisabled] === true) {
|
|
17
|
+
if (showToaster) this.dataStore.showToaster('error', this.dataStore.t('toaster.viewErrorText'), 2000);
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
},
|
|
22
|
+
validateInitiator(showToaster: boolean = true) {
|
|
23
|
+
if (!this.dataStore.isInitiator()) {
|
|
24
|
+
if (showToaster) this.dataStore.showToaster('error', this.dataStore.t('toaster.viewErrorText'));
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
},
|
|
29
|
+
hasMemberData(whichForm: MemberKeys, whichIndex?: number, key: string = 'id', emptyValue: any = 0) {
|
|
30
|
+
if (!this.validateInitiator(false)) return false;
|
|
31
|
+
if (!this.isStatementEditible(whichForm)) return false;
|
|
32
|
+
return typeof whichIndex === 'number' ? this.formStore[whichForm][whichIndex][key] != emptyValue : this.formStore[whichForm][key] != emptyValue;
|
|
33
|
+
},
|
|
34
|
+
canMemberDeleted(whichForm: MemberKeys, whichIndex?: number) {
|
|
35
|
+
if (!whichForm) return false;
|
|
36
|
+
if (!this.isStatementEditible(whichForm)) return false;
|
|
37
|
+
if (!this.validateInitiator(false)) return false;
|
|
38
|
+
if (typeof whichIndex === 'number' && whichIndex > 0) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
if (this.dataStore.isTask() && this.dataStore.isProcessEditable(this.formStore.applicationData.statusCode)) {
|
|
42
|
+
if (whichForm !== this.formStore.policyholderFormKey) {
|
|
43
|
+
return this.hasMemberData(whichForm, whichIndex);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
},
|
|
48
|
+
getMemberFromStore(whichForm: MemberKeys, whichIndex?: number): Member | null {
|
|
49
|
+
switch (whichForm) {
|
|
50
|
+
case this.formStore.policyholderFormKey:
|
|
51
|
+
return this.formStore.policyholderForm;
|
|
52
|
+
case this.formStore.policyholdersRepresentativeFormKey:
|
|
53
|
+
return this.formStore.policyholdersRepresentativeForm;
|
|
54
|
+
case this.formStore.insuredFormKey:
|
|
55
|
+
return this.formStore.insuredForm[whichIndex!];
|
|
56
|
+
case this.formStore.beneficiaryFormKey:
|
|
57
|
+
return this.formStore.beneficiaryForm[whichIndex!];
|
|
58
|
+
case this.formStore.beneficialOwnerFormKey:
|
|
59
|
+
return this.formStore.beneficialOwnerForm[whichIndex!];
|
|
60
|
+
default:
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
getMemberFromApplication(whichForm: MemberKeys, whichIndex?: number) {
|
|
65
|
+
const id = typeof whichIndex === 'number' ? this.formStore[whichForm][whichIndex].id : this.formStore[whichForm].id;
|
|
66
|
+
switch (whichForm) {
|
|
67
|
+
case this.formStore.policyholderFormKey:
|
|
68
|
+
return this.formStore.applicationData.clientApp;
|
|
69
|
+
case this.formStore.policyholdersRepresentativeFormKey:
|
|
70
|
+
return this.formStore.applicationData.spokesmanApp;
|
|
71
|
+
case this.formStore.insuredFormKey: {
|
|
72
|
+
const inStore = this.formStore.applicationData.insuredApp.find((member: any) => member.insisId === id);
|
|
73
|
+
return !!inStore ? inStore : false;
|
|
74
|
+
}
|
|
75
|
+
case this.formStore.beneficiaryFormKey: {
|
|
76
|
+
const inStore = this.formStore.applicationData.beneficiaryApp.find((member: any) => member.insisId === id);
|
|
77
|
+
return !!inStore ? inStore : false;
|
|
78
|
+
}
|
|
79
|
+
case this.formStore.beneficialOwnerFormKey: {
|
|
80
|
+
const inStore = this.formStore.applicationData.beneficialOwnerApp.find((member: any) => member.insisId === id);
|
|
81
|
+
return !!inStore ? inStore : false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
getMemberClass(whichForm: MemberKeys) {
|
|
86
|
+
if (!whichForm) return false;
|
|
87
|
+
switch (whichForm) {
|
|
88
|
+
case this.formStore.policyholderFormKey:
|
|
89
|
+
return new PolicyholderForm();
|
|
90
|
+
case this.formStore.insuredFormKey:
|
|
91
|
+
return new InsuredForm();
|
|
92
|
+
case this.formStore.beneficiaryFormKey:
|
|
93
|
+
return new BeneficiaryForm();
|
|
94
|
+
case this.formStore.beneficialOwnerFormKey:
|
|
95
|
+
return new BeneficialOwnerForm();
|
|
96
|
+
case this.formStore.policyholdersRepresentativeFormKey:
|
|
97
|
+
return new PolicyholdersRepresentativeForm();
|
|
98
|
+
default:
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
getMemberCode(whichForm: MemberKeys) {
|
|
103
|
+
switch (whichForm) {
|
|
104
|
+
case this.formStore.policyholderFormKey:
|
|
105
|
+
return 'Client';
|
|
106
|
+
case this.formStore.insuredFormKey:
|
|
107
|
+
return 'Insured';
|
|
108
|
+
case this.formStore.beneficiaryFormKey:
|
|
109
|
+
return 'Beneficiary';
|
|
110
|
+
case this.formStore.beneficialOwnerFormKey:
|
|
111
|
+
return 'BeneficialOwner';
|
|
112
|
+
case this.formStore.policyholdersRepresentativeFormKey:
|
|
113
|
+
return 'Spokesman';
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
clearMember(whichForm: MemberKeys, whichIndex?: number) {
|
|
117
|
+
if (!whichForm) return false;
|
|
118
|
+
if (!this.isStatementEditible(whichForm)) return false;
|
|
119
|
+
if (!this.validateInitiator()) return false;
|
|
120
|
+
if (whichForm === this.formStore.policyholderFormKey || whichForm === this.formStore.policyholdersRepresentativeFormKey) {
|
|
121
|
+
this.formStore[whichForm].resetMember();
|
|
122
|
+
}
|
|
123
|
+
if (typeof whichIndex === 'number') {
|
|
124
|
+
if (this.formStore[whichForm].length === 1) {
|
|
125
|
+
this.formStore[whichForm][whichIndex].resetMember();
|
|
126
|
+
} else {
|
|
127
|
+
this.formStore[whichForm].splice(whichIndex, 1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
},
|
|
132
|
+
async deleteMember(taskId: string, whichForm: MemberKeys, whichIndex?: number) {
|
|
133
|
+
if (!whichForm) return false;
|
|
134
|
+
if (!this.isStatementEditible(whichForm)) return false;
|
|
135
|
+
if (!this.validateInitiator()) return false;
|
|
136
|
+
try {
|
|
137
|
+
const memberCode = this.getMemberCode(whichForm);
|
|
138
|
+
const memberData = this.getMemberFromApplication(whichForm, whichIndex);
|
|
139
|
+
if (!memberCode) return false;
|
|
140
|
+
if (typeof whichIndex !== 'number') {
|
|
141
|
+
if (whichForm === this.formStore.policyholdersRepresentativeFormKey) {
|
|
142
|
+
await this.dataStore.api.deleteMember(memberCode, this.formStore.applicationData.processInstanceId);
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
if (memberData) await this.dataStore.api.deleteMember(memberCode, memberData.id as number);
|
|
146
|
+
}
|
|
147
|
+
if (memberData) await this.dataStore.getApplicationData(taskId, true, true, true, false);
|
|
148
|
+
return this.clearMember(whichForm, whichIndex);
|
|
149
|
+
} catch (err) {
|
|
150
|
+
console.log(err);
|
|
151
|
+
return ErrorHandler(err);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
addMember(whichForm: MemberKeys) {
|
|
155
|
+
if (!whichForm) return false;
|
|
156
|
+
if (!this.isStatementEditible(whichForm)) return false;
|
|
157
|
+
if (!this.validateInitiator()) return false;
|
|
158
|
+
this.formStore[whichForm].push(this.getMemberClass(whichForm));
|
|
159
|
+
},
|
|
160
|
+
async getOtpStatus(iin: string, phone: string, processInstanceId: string | number | null = null) {
|
|
161
|
+
try {
|
|
162
|
+
const otpData = {
|
|
163
|
+
iin: iin.replace(/-/g, ''),
|
|
164
|
+
phoneNumber: formatPhone(phone),
|
|
165
|
+
type: 'AgreementOtp',
|
|
166
|
+
};
|
|
167
|
+
return await this.dataStore.api.getOtpStatus(
|
|
168
|
+
processInstanceId !== null && processInstanceId !== 0
|
|
169
|
+
? {
|
|
170
|
+
...otpData,
|
|
171
|
+
processInstanceId: processInstanceId,
|
|
172
|
+
}
|
|
173
|
+
: otpData,
|
|
174
|
+
);
|
|
175
|
+
} catch (err) {
|
|
176
|
+
return ErrorHandler(err);
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
async checkOtp(member: Member) {
|
|
180
|
+
if (!member.otpTokenId || !member.otpCode || !member.phoneNumber) {
|
|
181
|
+
this.dataStore.showToaster('error', this.dataStore.t('error.noOtpCode'));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
this.dataStore.isLoading = true;
|
|
186
|
+
const otpData = {
|
|
187
|
+
tokenId: member.otpTokenId,
|
|
188
|
+
phoneNumber: formatPhone(member.phoneNumber),
|
|
189
|
+
code: member.otpCode.replace(/\s/g, ''),
|
|
190
|
+
};
|
|
191
|
+
const otpResponse = await this.dataStore.api.checkOtp(otpData);
|
|
192
|
+
if (otpResponse !== null) {
|
|
193
|
+
if ('errMessage' in otpResponse && otpResponse.errMessage !== null) {
|
|
194
|
+
this.dataStore.showToaster('error', otpResponse.errMessage, 3000);
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
if ('status' in otpResponse && !!otpResponse.status) {
|
|
198
|
+
// TODO Доработать и менять значение hasAgreement.value => true
|
|
199
|
+
this.dataStore.showToaster(otpResponse.status !== 2 ? 'error' : 'success', otpResponse.statusName, 3000);
|
|
200
|
+
if (otpResponse.status === 2) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
} catch (err) {
|
|
207
|
+
ErrorHandler(err);
|
|
208
|
+
} finally {
|
|
209
|
+
this.dataStore.isLoading = false;
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
},
|
|
213
|
+
async sendOtp(member: Member, processInstanceId: string | number | null = null, onInit: boolean = false) {
|
|
214
|
+
if (!this.validateInitiator()) return null;
|
|
215
|
+
this.dataStore.isLoading = true;
|
|
216
|
+
let otpStatus: boolean = false;
|
|
217
|
+
let otpResponse: SendOtpResponse = {};
|
|
218
|
+
try {
|
|
219
|
+
if (member.iin && member.phoneNumber && member.iin.length === useMask().iin.length && member.phoneNumber.length === useMask().phone.length) {
|
|
220
|
+
const status = await this.getOtpStatus(member.iin, member.phoneNumber, processInstanceId);
|
|
221
|
+
if (status === true) {
|
|
222
|
+
this.dataStore.showToaster('success', this.dataStore.t('toaster.hasSuccessOtp'), 3000);
|
|
223
|
+
otpStatus = true;
|
|
224
|
+
this.dataStore.isLoading = false;
|
|
225
|
+
return { otpStatus, otpResponse };
|
|
226
|
+
} else if (status === false && onInit === false) {
|
|
227
|
+
const otpData = {
|
|
228
|
+
iin: member.iin.replace(/-/g, ''),
|
|
229
|
+
phoneNumber: formatPhone(member.phoneNumber),
|
|
230
|
+
type: 'AgreementOtp',
|
|
231
|
+
};
|
|
232
|
+
otpResponse = await this.dataStore.api.sendOtp(
|
|
233
|
+
processInstanceId !== null && processInstanceId !== 0
|
|
234
|
+
? {
|
|
235
|
+
...otpData,
|
|
236
|
+
processInstanceId: processInstanceId,
|
|
237
|
+
}
|
|
238
|
+
: otpData,
|
|
239
|
+
);
|
|
240
|
+
this.dataStore.isLoading = false;
|
|
241
|
+
if (!!otpResponse) {
|
|
242
|
+
if ('errMessage' in otpResponse && otpResponse.errMessage !== null) {
|
|
243
|
+
this.dataStore.showToaster('error', otpResponse.errMessage, 3000);
|
|
244
|
+
return { otpStatus };
|
|
245
|
+
}
|
|
246
|
+
if ('result' in otpResponse && otpResponse.result === null) {
|
|
247
|
+
if ('statusName' in otpResponse && !!otpResponse.statusName) {
|
|
248
|
+
this.dataStore.showToaster('error', otpResponse.statusName, 3000);
|
|
249
|
+
return { otpStatus };
|
|
250
|
+
}
|
|
251
|
+
if ('status' in otpResponse && !!otpResponse.status) {
|
|
252
|
+
this.dataStore.showToaster('error', otpResponse.status, 3000);
|
|
253
|
+
return { otpStatus };
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
if ('tokenId' in otpResponse && otpResponse.tokenId) {
|
|
257
|
+
member.otpTokenId = otpResponse.tokenId;
|
|
258
|
+
this.dataStore.showToaster('success', this.dataStore.t('toaster.successOtp'), 3000);
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
this.dataStore.showToaster('error', this.dataStore.t('error.noOtpResponse'), 3000);
|
|
262
|
+
return { otpStatus };
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
} else {
|
|
266
|
+
if (onInit === false) {
|
|
267
|
+
this.dataStore.showToaster('error', this.dataStore.t('toaster.errorFormField').replace('{text}', 'Номер телефона, ИИН'));
|
|
268
|
+
this.dataStore.isLoading = false;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return { otpStatus, otpResponse };
|
|
272
|
+
} catch (err) {
|
|
273
|
+
this.dataStore.isLoading = false;
|
|
274
|
+
if (err instanceof AxiosError)
|
|
275
|
+
if ('response' in err && err.response && err.response.data) {
|
|
276
|
+
if ('statusName' in err.response.data && !!err.response.data.statusName) {
|
|
277
|
+
this.dataStore.showToaster('error', this.dataStore.t('toaster.phoneNotFoundInBMG'), 3000);
|
|
278
|
+
return { otpStatus };
|
|
279
|
+
}
|
|
280
|
+
if ('status' in err.response.data && !!err.response.data.status) {
|
|
281
|
+
this.dataStore.showToaster('error', err.response.data.status, 3000);
|
|
282
|
+
return { otpStatus };
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
} finally {
|
|
286
|
+
this.dataStore.isLoading = false;
|
|
287
|
+
}
|
|
288
|
+
return { otpStatus, otpResponse };
|
|
289
|
+
},
|
|
290
|
+
},
|
|
291
|
+
});
|
package/store/messages.ts
CHANGED
|
@@ -28,16 +28,22 @@ export const messages = {
|
|
|
28
28
|
rejectCause: 'Причина отказа',
|
|
29
29
|
returnCause: 'Причина возврата на доработку',
|
|
30
30
|
},
|
|
31
|
+
error: {
|
|
32
|
+
title: 'Ошибка 404',
|
|
33
|
+
description: 'Страница, которую вы запрашиваете, не существует либо устарела.',
|
|
34
|
+
connectionLost: 'Нет подключения к Интернету',
|
|
35
|
+
checkConnection: 'Проверьте ваше подключение',
|
|
36
|
+
noOtpResponse: 'Отсутствует ответ при отправке OTP кода',
|
|
37
|
+
noOtpCode: 'Заполните поля: ИИН, Номер телефона, Код подтверждения',
|
|
38
|
+
},
|
|
31
39
|
toaster: {
|
|
40
|
+
noIinOrPhone: 'Отсутствуют данные для отправки СМС',
|
|
32
41
|
ESBDErrorMessage: 'Введены не корректные данные по этому ИИН',
|
|
33
|
-
phoneNotFoundInBMG:
|
|
34
|
-
|
|
35
|
-
errorSumOrPercentage:
|
|
36
|
-
'Процент от суммы выплат не может быть меньше или больше 100',
|
|
42
|
+
phoneNotFoundInBMG: 'Введите номер зарегистрированный в БМГ или зарегистрируйте клиента в БМГ',
|
|
43
|
+
errorSumOrPercentage: 'Процент от суммы выплат не может быть меньше или больше 100',
|
|
37
44
|
fileWasDeleted: 'Файл успешно удален',
|
|
38
45
|
attachManagerError: 'Прикрепите заявку менеджеру',
|
|
39
|
-
viewErrorText:
|
|
40
|
-
'Вы сейчас находитесь в режиме просмотра или у вас нет доступа',
|
|
46
|
+
viewErrorText: 'Вы сейчас находитесь в режиме просмотра или у вас нет доступа',
|
|
41
47
|
editModeText: 'Вы перешли в режим редактирования',
|
|
42
48
|
viewModeText: 'Вы перешли в режим просмотра',
|
|
43
49
|
noEditText: 'У вас нет доступа на редактирование',
|
|
@@ -51,8 +57,7 @@ export const messages = {
|
|
|
51
57
|
undefinedError: 'Что-то произошло не так',
|
|
52
58
|
noProductPermission: 'У вас нет доступа к данному продукту',
|
|
53
59
|
noStatementPermission: 'У вас нет доступа к данной заявке',
|
|
54
|
-
formFieldEmptyWarning:
|
|
55
|
-
'Вам нужно заполнить некоторые поля и сохранить участника',
|
|
60
|
+
formFieldEmptyWarning: 'Вам нужно заполнить некоторые поля и сохранить участника',
|
|
56
61
|
needToRunStatement: 'Нужно создать заявку',
|
|
57
62
|
shouldBeOneInsured: 'Нельзя удалить единственного застрахованного',
|
|
58
63
|
readyStatementMembers: 'Данные всех участников успешно сохранены',
|
|
@@ -71,11 +76,10 @@ export const messages = {
|
|
|
71
76
|
incorrectInput: 'Значение введено некорректно',
|
|
72
77
|
error: 'Произошла ошибка ',
|
|
73
78
|
applicationDeleted: 'Заявка удалена',
|
|
74
|
-
emptyProductConditions:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
emptyCriticalAnketa:
|
|
78
|
-
'Не заполнены данные анкеты по критическому заболеванию застрахованного',
|
|
79
|
+
emptyProductConditions: 'Не заполнены данные условия продуктов и расчетов',
|
|
80
|
+
emptyHealthAnketa: 'Не заполнены данные анкеты по здоровью Застрахованного',
|
|
81
|
+
emptyHealthAnketaPolicyholder: 'Не заполнены данные анкеты по здоровью Страхователя',
|
|
82
|
+
emptyCriticalAnketa: 'Не заполнены данные анкеты по критическому заболеванию Застрахованного',
|
|
79
83
|
successOperation: 'Операция прошла успешно',
|
|
80
84
|
noAssignee: 'Нужно взять задачу в работу',
|
|
81
85
|
canDoOnlyAssignee: 'Задача в работе и у вас нету доступа',
|
|
@@ -83,22 +87,28 @@ export const messages = {
|
|
|
83
87
|
noTasksForYou: 'Список, назначенных задач на вашу роль, пустой',
|
|
84
88
|
youCanNotStartApplication: 'У вас нет доступа на запуск заявки',
|
|
85
89
|
hasNewApplicationState: 'Неактуальная заявка',
|
|
86
|
-
reloadEverySeconds: 'Обновление можно делать каждые {
|
|
90
|
+
reloadEverySeconds: 'Обновление можно делать каждые {text} секунд',
|
|
87
91
|
successReload: 'Обновлено',
|
|
88
|
-
sendEverySeconds: 'СМС можно отправлять каждые {
|
|
92
|
+
sendEverySeconds: 'СМС можно отправлять каждые {text} секунд ',
|
|
89
93
|
waitForClient: 'Ожидайте подтверждения клиента',
|
|
90
94
|
noSuchProduct: 'Ошибка при переходе: неправильная ссылка',
|
|
91
|
-
affiliationDocumentNotUploaded:
|
|
92
|
-
'Не прикреплен файл в решении андеррайтингового совета',
|
|
95
|
+
affiliationDocumentNotUploaded: 'Не прикреплен файл в решении андеррайтингового совета',
|
|
93
96
|
documentNumberWasNotFilled: 'Номер документа и дата не были заполнены',
|
|
94
|
-
valueShouldBeHigher: `Значение должно быть больше {
|
|
97
|
+
valueShouldBeHigher: `Значение должно быть больше {text} процентов`,
|
|
95
98
|
valueShouldBeBetween: `Значение должно быть в промежутке от { floor } до { ceil } процентов`,
|
|
96
99
|
needAgreement: 'Нужно получить согласие клиента',
|
|
97
100
|
successOtp: 'Код подтверждения отправлен успешно',
|
|
98
101
|
hasSuccessOtp: 'По клиенту уже имеется согласие',
|
|
99
102
|
tokenExpire: 'Истекло время ожидания',
|
|
103
|
+
requiredBeneficiary: 'Необходимо указать данные выгодоприобретателя',
|
|
104
|
+
requiredInsured: 'Необходимо указать данные застрахованного',
|
|
105
|
+
needToRecalculate: 'Необходимо пересчитать условия продукта',
|
|
106
|
+
noUrl: 'Отсутствует ссылка',
|
|
107
|
+
pickFamilyMember: 'Выберите члена семьи',
|
|
100
108
|
},
|
|
101
109
|
buttons: {
|
|
110
|
+
createStatement: 'Создать заявку',
|
|
111
|
+
add: 'Добавить',
|
|
102
112
|
userLogin: 'Логин',
|
|
103
113
|
password: 'Пароль',
|
|
104
114
|
login: 'Вход в систему',
|
|
@@ -111,6 +121,7 @@ export const messages = {
|
|
|
111
121
|
create: 'Создать',
|
|
112
122
|
becomeAgent: 'Стать агентом',
|
|
113
123
|
close: 'Закрыть',
|
|
124
|
+
reload: 'Обновить',
|
|
114
125
|
makeIssueInvoice: 'Создать Счет на оплату',
|
|
115
126
|
open: 'Открыть',
|
|
116
127
|
edit: 'Редактировать',
|
|
@@ -133,17 +144,14 @@ export const messages = {
|
|
|
133
144
|
createInvoice: 'Создать Счет на оплату',
|
|
134
145
|
fromInsis: 'Информационная система INSIS',
|
|
135
146
|
fromGBDFL: 'Государственная база данных физических лиц',
|
|
147
|
+
fromGKB: 'Государственное кредитное бюро',
|
|
136
148
|
sendSMS: 'Отправить СМС',
|
|
137
149
|
toPayment: 'Перейти к оплате',
|
|
138
150
|
calcSum: 'Рассчитать сумму',
|
|
139
151
|
calcPremium: 'Рассчитать премию',
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
description:
|
|
144
|
-
'Страница, которую вы запрашиваете, не существует либо устарела.',
|
|
145
|
-
connectionLost: 'Нет подключения к Интернету',
|
|
146
|
-
checkConnection: 'Проверьте ваше подключение',
|
|
152
|
+
accept: 'Одобрить',
|
|
153
|
+
reject: 'Отказать',
|
|
154
|
+
pay: 'Оплатить',
|
|
147
155
|
},
|
|
148
156
|
dialog: {
|
|
149
157
|
title: 'Подтверждение',
|
|
@@ -154,14 +162,15 @@ export const messages = {
|
|
|
154
162
|
clear: 'Вы действительно хотите очистить данные участника?',
|
|
155
163
|
delete: 'Вы действительно хотите удалить участника?',
|
|
156
164
|
sent: 'Ссылка была отправлена',
|
|
157
|
-
sentText:
|
|
158
|
-
'Ссылка была отправлена на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
165
|
+
sentText: 'Ссылка была отправлена на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
159
166
|
sentSMS: 'СМС был отправлен',
|
|
160
|
-
sentTextSMS:
|
|
161
|
-
'СМС был отправлен на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
167
|
+
sentTextSMS: 'СМС был отправлен на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
162
168
|
deleteFile: 'Вы уверены что хотите удалить файл',
|
|
163
169
|
continue: 'Продолжить',
|
|
164
170
|
correctSum: 'Корректна ли сумма страховой премии?',
|
|
171
|
+
sign: 'Подтверждение подписания',
|
|
172
|
+
pay: 'Подтверждение оплаты',
|
|
173
|
+
familyMember: 'Выберите члена семьи',
|
|
165
174
|
},
|
|
166
175
|
sign: {
|
|
167
176
|
chooseDoc: 'Выберите документы для подписание',
|
|
@@ -177,34 +186,38 @@ export const messages = {
|
|
|
177
186
|
codeFromSMS: 'Код из СМС',
|
|
178
187
|
signEgov: 'Подписать с помощью eGov mobile',
|
|
179
188
|
showQR: 'Показать QR-код',
|
|
180
|
-
timer:
|
|
181
|
-
'Вы создали счет на оплату, через 00:59 сек счет станет не активным',
|
|
189
|
+
timer: 'Вы создали счет на оплату, через 00:59 сек счет станет не активным',
|
|
182
190
|
},
|
|
183
191
|
questionnaireType: {
|
|
184
192
|
byHealth: 'Анкета по здоровью застрахованного',
|
|
185
193
|
byCritical: 'Анкета по критической болезни Застрахованного',
|
|
186
|
-
answerAllNo: 'Ответить везде Нет',
|
|
187
|
-
pleaseAnswer: 'Пожалуйста ответьте на {
|
|
194
|
+
answerAllNo: 'Ответить везде "Нет"',
|
|
195
|
+
pleaseAnswer: 'Пожалуйста ответьте на {text} вопросов',
|
|
188
196
|
},
|
|
189
197
|
questionnaireHealth: 'Анкета по здоровью Застрахованного',
|
|
190
198
|
chooseAll: 'Выбрать все',
|
|
191
199
|
statement: 'Заявление',
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
200
|
+
policyholderForm: 'Страхователь',
|
|
201
|
+
policyholderAndInsured: 'Застрахованный / Страхователь',
|
|
202
|
+
policyholderAndInsuredSame: 'Застрахованный / Страхователь является одним лицом',
|
|
203
|
+
insuredForm: 'Застрахованный',
|
|
204
|
+
beneficiaryForm: 'Выгодоприобретатель',
|
|
205
|
+
beneficialOwnerForm: 'Бенефициарный собственник',
|
|
206
|
+
policyholdersRepresentativeForm: 'Представитель страхователя',
|
|
197
207
|
productConditions: 'Условия продукта и расчеты',
|
|
198
208
|
underwriterDecision: 'Решение андеррайтингового совета',
|
|
199
209
|
recalculationInfo: 'Данные для перерасчета',
|
|
200
210
|
generalConditions: 'Основные условия страхования',
|
|
201
211
|
isPolicyholderInsured: 'Является ли страхователь застрахованным?',
|
|
212
|
+
isPolicyholderIPDL: 'Принадлежит ли и/или причастен ли Застрахованный / Страхователь или его члены семьи и близкие родственники к иностранному публичному должностному лицу?',
|
|
213
|
+
isMemberIPDL: 'Отметка о принадлежности и/или причастности к публичному должностному лицу, его супруге (супругу) и близким родственникам?',
|
|
202
214
|
isPolicyholderBeneficiary: 'Является ли страхователь выгодоприобретателем?',
|
|
203
215
|
hasRepresentative: 'Подписантом договора выступает представитель? ',
|
|
204
216
|
isActOwnBehalf: ' Клиент действует от своего имени и в своих интересах?',
|
|
205
217
|
coverPeriod: 'Срок',
|
|
206
218
|
requestedSumInsured: 'Запрашиваемая сумма',
|
|
207
219
|
insurancePremiumPerMonth: 'Премия в месяц',
|
|
220
|
+
noStatementCalculator: 'Калькулятор стоимости без ввода данных',
|
|
208
221
|
agreement: 'Согласие',
|
|
209
222
|
clientsStatement: 'Заявление клиента',
|
|
210
223
|
document: 'Документ',
|
|
@@ -224,20 +237,22 @@ export const messages = {
|
|
|
224
237
|
recalculation: 'Перерасчет',
|
|
225
238
|
survey: 'Анкета',
|
|
226
239
|
productConditionsForm: {
|
|
227
|
-
coverPeriod: 'Срок страхования
|
|
240
|
+
coverPeriod: 'Срок страхования',
|
|
228
241
|
payPeriod: 'Период оплаты страховой премии',
|
|
229
|
-
processIndexRate:
|
|
230
|
-
'Запрашиваемый размер коэффициента индексации (от 3% до 7%)',
|
|
242
|
+
processIndexRate: 'Запрашиваемый размер коэффициента индексации (от 3% до 7%)',
|
|
231
243
|
processPaymentPeriod: 'Периодичность оплаты страховой премии:',
|
|
232
|
-
requestedSumInsured: '
|
|
233
|
-
|
|
244
|
+
requestedSumInsured: 'Страховая сумма',
|
|
245
|
+
sumInsured: 'Страховая сумма',
|
|
246
|
+
insurancePremiumPerMonth: 'Страховая премия',
|
|
234
247
|
hint: 'Сумма рассчитывается автоматически',
|
|
235
248
|
additional: 'Дополнительные условия страхования',
|
|
236
|
-
possibilityToChange:
|
|
237
|
-
'Возможность изменения страховой суммы и страховых взносов (индексация)',
|
|
249
|
+
possibilityToChange: 'Возможность изменения страховой суммы и страховых взносов (индексация)',
|
|
238
250
|
conditions: 'Условия оплаты страховой премии',
|
|
239
251
|
processTariff: 'Тариф',
|
|
240
252
|
riskGroup: 'Группа риска',
|
|
253
|
+
requestedProductConditions: 'Запрашиваемые условия страхования',
|
|
254
|
+
coverPeriodFrom3to20: 'Срок страхования (от 3-х до 20 лет)',
|
|
255
|
+
insurancePremiumAmount: 'Размер Страховой премии (страховой взнос)',
|
|
241
256
|
},
|
|
242
257
|
history: {
|
|
243
258
|
addRegNumber: 'Номер',
|
|
@@ -297,8 +312,10 @@ export const messages = {
|
|
|
297
312
|
requestedSumInsuredMycar: 'Максимальная сумма не должна превышать 60 млн',
|
|
298
313
|
ageMycar: 'Пороговое значение по возрасту с 21 по 65',
|
|
299
314
|
noResident: 'Нерезидентам отказано',
|
|
315
|
+
policyholderAgeLimit: 'Возраст Застрахованного должен быть не менее 18-ти лет',
|
|
316
|
+
beneficiaryAgeLimit: 'На дату подписания полиса возраст Выгодоприобретателя должен быть не более 15 лет',
|
|
300
317
|
},
|
|
301
|
-
code: '
|
|
318
|
+
code: 'КЭС',
|
|
302
319
|
fontSize: 'Размер шрифта',
|
|
303
320
|
policyholdersRepresentative: {
|
|
304
321
|
name: 'ФИО',
|
|
@@ -306,13 +323,11 @@ export const messages = {
|
|
|
306
323
|
NameParentCase: 'ФИО представителя в родительском падеже',
|
|
307
324
|
basisDocKz: 'Действует на основании документа (каз)',
|
|
308
325
|
basisDocRu: 'Действует на основании документа (рус)',
|
|
309
|
-
basisDocRuParentCase:
|
|
310
|
-
'Действует на основании документа в родительском падеже (рус)',
|
|
326
|
+
basisDocRuParentCase: 'Действует на основании документа в родительском падеже (рус)',
|
|
311
327
|
numberDoc: 'Номер документа подтверждающий полномочия',
|
|
312
|
-
numberVisa: 'Номер
|
|
328
|
+
numberVisa: 'Номер миграционный карточки',
|
|
313
329
|
numberLicense: 'Номер лицензии',
|
|
314
|
-
confirmAuthority:
|
|
315
|
-
'Лицо, подписавшего документ, подтверждающий полномочия, -Нотариус?',
|
|
330
|
+
confirmAuthority: 'Лицо, подписавшего документ, подтверждающий полномочия, -Нотариус?',
|
|
316
331
|
documentIssuers: 'Наименование органа, выдавшего документ',
|
|
317
332
|
},
|
|
318
333
|
payment: {
|
|
@@ -320,6 +335,7 @@ export const messages = {
|
|
|
320
335
|
chooseMethod: 'Выберите способ оплаты',
|
|
321
336
|
payConditions: 'Условия оплаты',
|
|
322
337
|
issueInvoice: 'Выставить счет на оплату',
|
|
338
|
+
copyUrl: 'Скопировать ссылку на оплату',
|
|
323
339
|
copyBill: 'Скопировать счет на оплату',
|
|
324
340
|
sendBill: 'Отправить счет на оплату через СМС',
|
|
325
341
|
anyCard: 'Онлайн картой любого банка',
|
|
@@ -331,6 +347,8 @@ export const messages = {
|
|
|
331
347
|
recipientNumber: 'Номер получателя СМС',
|
|
332
348
|
},
|
|
333
349
|
form: {
|
|
350
|
+
migrationCard: '',
|
|
351
|
+
postIndex: 'Почтовый индекс',
|
|
334
352
|
name: 'Наименование',
|
|
335
353
|
bin: 'БИН',
|
|
336
354
|
fullName: 'ФИО',
|
|
@@ -341,6 +359,7 @@ export const messages = {
|
|
|
341
359
|
firstName: 'Имя',
|
|
342
360
|
middleName: 'Отчество',
|
|
343
361
|
birthDate: 'Дата рождения',
|
|
362
|
+
signDate: 'Дата расчета',
|
|
344
363
|
age: 'Возраст',
|
|
345
364
|
gender: 'Пол',
|
|
346
365
|
familyStatus: 'Семейное положение',
|