hl-core 0.0.8-beta.9 → 0.0.9-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/api/index.ts +100 -34
  2. package/api/interceptors.ts +17 -13
  3. package/components/Button/Btn.vue +1 -1
  4. package/components/Button/ScrollButtons.vue +2 -2
  5. package/components/Complex/Page.vue +1 -1
  6. package/components/Dialog/Dialog.vue +9 -39
  7. package/components/Dialog/FamilyDialog.vue +7 -4
  8. package/components/Form/FormBlock.vue +51 -28
  9. package/components/Form/FormSection.vue +4 -1
  10. package/components/Form/FormToggle.vue +2 -3
  11. package/components/Form/ManagerAttachment.vue +21 -20
  12. package/components/Form/ProductConditionsBlock.vue +60 -10
  13. package/components/Input/Datepicker.vue +6 -2
  14. package/components/Input/FileInput.vue +2 -2
  15. package/components/Input/FormInput.vue +29 -7
  16. package/components/Input/PanelInput.vue +7 -2
  17. package/components/Input/RoundedInput.vue +2 -2
  18. package/components/Input/RoundedSelect.vue +137 -0
  19. package/components/Layout/Drawer.vue +3 -2
  20. package/components/Layout/Header.vue +40 -4
  21. package/components/Layout/Loader.vue +1 -1
  22. package/components/Layout/SettingsPanel.vue +51 -13
  23. package/components/Menu/MenuHover.vue +30 -0
  24. package/components/Menu/MenuNav.vue +29 -13
  25. package/components/Menu/MenuNavItem.vue +6 -3
  26. package/components/Pages/Anketa.vue +49 -31
  27. package/components/Pages/Auth.vue +139 -46
  28. package/components/Pages/Documents.vue +6 -6
  29. package/components/Pages/InvoiceInfo.vue +30 -0
  30. package/components/Pages/MemberForm.vue +503 -343
  31. package/components/Pages/ProductAgreement.vue +4 -2
  32. package/components/Pages/ProductConditions.vue +494 -95
  33. package/components/Panel/PanelHandler.vue +91 -20
  34. package/components/Panel/PanelSelectItem.vue +1 -1
  35. package/components/Utilities/Chip.vue +27 -0
  36. package/components/Utilities/JsonViewer.vue +27 -0
  37. package/composables/axios.ts +1 -1
  38. package/composables/classes.ts +165 -81
  39. package/composables/constants.ts +25 -52
  40. package/composables/index.ts +80 -2
  41. package/composables/styles.ts +8 -3
  42. package/configs/i18n.ts +2 -4
  43. package/layouts/default.vue +6 -6
  44. package/locales/kz.json +532 -346
  45. package/locales/ru.json +210 -22
  46. package/nuxt.config.ts +1 -1
  47. package/package.json +38 -12
  48. package/pages/500.vue +2 -2
  49. package/pages/Token.vue +51 -0
  50. package/plugins/helperFunctionsPlugins.ts +2 -1
  51. package/plugins/vuetifyPlugin.ts +3 -1
  52. package/store/{data.store.js → data.store.ts} +1116 -752
  53. package/store/form.store.ts +1 -1
  54. package/store/member.store.ts +94 -72
  55. package/store/{rules.js → rules.ts} +54 -26
  56. package/types/enum.ts +83 -0
  57. package/types/env.d.ts +10 -0
  58. package/types/index.ts +197 -7
  59. package/locales/en.json +0 -399
@@ -1,5 +1,5 @@
1
1
  import { defineStore } from 'pinia';
2
- import { FormStoreClass } from '@/composables/classes';
2
+ import { FormStoreClass } from '../composables/classes';
3
3
 
4
4
  export const useFormStore = defineStore('forms', {
5
5
  state: () => ({
@@ -4,6 +4,7 @@ import { useFormStore } from './form.store';
4
4
  import { ErrorHandler } from '../composables';
5
5
  import { AxiosError } from 'axios';
6
6
  import { Member } from '../composables/classes';
7
+ import { MemberAppCodes, MemberCodes, StoreMembers } from '../types/enum';
7
8
 
8
9
  export const useMemberStore = defineStore('members', {
9
10
  state: () => ({
@@ -12,7 +13,8 @@ export const useMemberStore = defineStore('members', {
12
13
  formStore: useFormStore(),
13
14
  }),
14
15
  actions: {
15
- isStatementEditible(whichForm: string, showToaster: boolean = false) {
16
+ isStatementEditible(whichForm: keyof typeof StoreMembers | 'productConditionsForm', showToaster: boolean = false) {
17
+ if (!this.validateInitiator(false)) return false;
16
18
  if (this.formStore.isDisabled[whichForm as keyof typeof this.formStore.isDisabled] === true) {
17
19
  if (showToaster) this.dataStore.showToaster('error', this.dataStore.t('toaster.viewErrorText'), 2000);
18
20
  return false;
@@ -26,17 +28,31 @@ export const useMemberStore = defineStore('members', {
26
28
  }
27
29
  return true;
28
30
  },
29
- hasMemberData(whichForm: MemberKeys, whichIndex?: number, key: string = 'id', emptyValue: any = 0) {
30
- if (!this.validateInitiator(false)) return false;
31
+ hasMemberData(whichForm: keyof typeof StoreMembers, whichIndex?: number, key: keyof typeof this.formStore.policyholderForm = 'id', emptyValue: any = 0) {
31
32
  if (!this.isStatementEditible(whichForm)) return false;
32
- return typeof whichIndex === 'number' ? this.formStore[whichForm][whichIndex][key] != emptyValue : this.formStore[whichForm][key] != emptyValue;
33
+ return whichForm !== 'policyholderForm' && whichForm !== 'policyholdersRepresentativeForm'
34
+ ? this.formStore[whichForm][whichIndex!][key] != emptyValue
35
+ : this.formStore[whichForm][key] != emptyValue;
33
36
  },
34
- canMemberDeleted(whichForm: MemberKeys, whichIndex?: number) {
37
+ canMemberCleared(whichForm: keyof typeof StoreMembers, whichIndex?: number) {
35
38
  if (!whichForm) return false;
36
39
  if (!this.isStatementEditible(whichForm)) return false;
37
- if (!this.validateInitiator(false)) return false;
38
- if (typeof whichIndex === 'number' && whichIndex > 0) {
39
- return true;
40
+ if (whichForm !== 'policyholderForm' && whichForm !== 'policyholdersRepresentativeForm') {
41
+ return this.formStore[whichForm][whichIndex!].id === 0 && (!!this.formStore[whichForm][whichIndex!].iin || !!this.formStore[whichForm][whichIndex!].phoneNumber);
42
+ } else {
43
+ return this.formStore[whichForm].id === 0 && (!!this.formStore[whichForm].iin || !!this.formStore[whichForm].phoneNumber);
44
+ }
45
+ },
46
+ canMemberDeleted(whichForm: keyof typeof StoreMembers, whichIndex?: number) {
47
+ if (!whichForm) return false;
48
+ if (!this.isStatementEditible(whichForm)) return false;
49
+ if (typeof whichIndex === 'number') {
50
+ if (whichIndex > 0) {
51
+ return true;
52
+ }
53
+ if (whichIndex === 0) {
54
+ return this.hasMemberData(whichForm, whichIndex);
55
+ }
40
56
  }
41
57
  if (this.dataStore.isTask() && this.dataStore.isProcessEditable(this.formStore.applicationData.statusCode)) {
42
58
  if (whichForm !== this.formStore.policyholderFormKey) {
@@ -45,7 +61,7 @@ export const useMemberStore = defineStore('members', {
45
61
  }
46
62
  return false;
47
63
  },
48
- getMemberFromStore(whichForm: MemberKeys, whichIndex?: number): Member | null {
64
+ getMemberFromStore(whichForm: keyof typeof StoreMembers, whichIndex?: number): Member | null {
49
65
  switch (whichForm) {
50
66
  case this.formStore.policyholderFormKey:
51
67
  return this.formStore.policyholderForm;
@@ -61,8 +77,8 @@ export const useMemberStore = defineStore('members', {
61
77
  return null;
62
78
  }
63
79
  },
64
- getMemberFromApplication(whichForm: MemberKeys, whichIndex?: number) {
65
- const id = typeof whichIndex === 'number' ? this.formStore[whichForm][whichIndex].id : this.formStore[whichForm].id;
80
+ getMemberFromApplication(whichForm: keyof typeof StoreMembers, whichIndex?: number) {
81
+ const id = whichForm !== 'policyholderForm' && whichForm !== 'policyholdersRepresentativeForm' ? this.formStore[whichForm][whichIndex!].id : this.formStore[whichForm].id;
66
82
  switch (whichForm) {
67
83
  case this.formStore.policyholderFormKey:
68
84
  return this.formStore.applicationData.clientApp;
@@ -82,72 +98,53 @@ export const useMemberStore = defineStore('members', {
82
98
  }
83
99
  }
84
100
  },
85
- getMemberClass(whichForm: MemberKeys) {
86
- if (!whichForm) return false;
101
+ getMemberCode(whichForm: keyof typeof StoreMembers) {
87
102
  switch (whichForm) {
88
103
  case this.formStore.policyholderFormKey:
89
- return new PolicyholderForm();
104
+ return MemberCodes.Client;
90
105
  case this.formStore.insuredFormKey:
91
- return new InsuredForm();
106
+ return MemberCodes.Insured;
92
107
  case this.formStore.beneficiaryFormKey:
93
- return new BeneficiaryForm();
108
+ return MemberCodes.Beneficiary;
94
109
  case this.formStore.beneficialOwnerFormKey:
95
- return new BeneficialOwnerForm();
110
+ return MemberCodes.BeneficialOwner;
96
111
  case this.formStore.policyholdersRepresentativeFormKey:
97
- return new PolicyholdersRepresentativeForm();
98
- default:
99
- return false;
112
+ return MemberCodes.Spokesman;
100
113
  }
101
114
  },
102
- getMemberCode(whichForm: MemberKeys) {
115
+ getMemberApplicationCode(whichForm: keyof typeof StoreMembers) {
103
116
  switch (whichForm) {
104
117
  case this.formStore.policyholderFormKey:
105
- return 'Client';
118
+ return MemberAppCodes.clientApp;
106
119
  case this.formStore.insuredFormKey:
107
- return 'Insured';
120
+ return MemberAppCodes.insuredApp;
108
121
  case this.formStore.beneficiaryFormKey:
109
- return 'Beneficiary';
122
+ return MemberAppCodes.beneficiaryApp;
110
123
  case this.formStore.beneficialOwnerFormKey:
111
- return 'BeneficialOwner';
124
+ return MemberAppCodes.beneficialOwnerApp;
112
125
  case this.formStore.policyholdersRepresentativeFormKey:
113
- return 'Spokesman';
126
+ return MemberAppCodes.spokesmanApp;
114
127
  }
115
128
  },
116
- getMemberApplicationCode(whichForm: MemberKeys) {
117
- switch (whichForm) {
118
- case this.formStore.policyholderFormKey:
119
- return 'clientApp';
120
- case this.formStore.insuredFormKey:
121
- return 'insuredApp';
122
- case this.formStore.beneficiaryFormKey:
123
- return 'beneficiaryApp';
124
- case this.formStore.beneficialOwnerFormKey:
125
- return 'beneficialOwnerApp';
126
- case this.formStore.policyholdersRepresentativeFormKey:
127
- return 'spokesmanApp';
128
- }
129
- },
130
- clearMember(whichForm: MemberKeys, whichIndex?: number) {
129
+ clearMember(whichForm: keyof typeof StoreMembers, whichIndex?: number) {
131
130
  if (!whichForm) return false;
132
131
  if (!this.isStatementEditible(whichForm)) return false;
133
- if (!this.validateInitiator()) return false;
134
132
  if (whichForm === this.formStore.policyholderFormKey || whichForm === this.formStore.policyholdersRepresentativeFormKey) {
135
133
  //@ts-ignore
136
- this.formStore[whichForm] = this.getMemberClass(whichForm);
134
+ this.formStore[whichForm] = new Member();
137
135
  }
138
- if (typeof whichIndex === 'number') {
136
+ if (whichForm !== 'policyholderForm' && whichForm !== 'policyholdersRepresentativeForm') {
139
137
  if (this.formStore[whichForm].length === 1) {
140
- this.formStore[whichForm][whichIndex] = this.getMemberClass(whichForm);
138
+ this.formStore[whichForm][whichIndex!] = new Member();
141
139
  } else {
142
- this.formStore[whichForm].splice(whichIndex, 1);
140
+ this.formStore[whichForm].splice(whichIndex!, 1);
143
141
  }
144
142
  }
145
143
  return true;
146
144
  },
147
- async deleteMember(taskId: string, whichForm: MemberKeys, whichIndex?: number, refetch: boolean = true) {
145
+ async deleteMember(taskId: string, whichForm: keyof typeof StoreMembers, whichIndex?: number, refetch: boolean = true) {
148
146
  if (!whichForm) return false;
149
147
  if (!this.isStatementEditible(whichForm)) return false;
150
- if (!this.validateInitiator()) return false;
151
148
  try {
152
149
  const memberCode = this.getMemberCode(whichForm);
153
150
  const memberData = this.getMemberFromApplication(whichForm, whichIndex);
@@ -157,26 +154,33 @@ export const useMemberStore = defineStore('members', {
157
154
  await this.dataStore.api.deleteMember(memberCode, this.formStore.applicationData.processInstanceId);
158
155
  }
159
156
  } else {
160
- if (memberData) await this.dataStore.api.deleteMember(memberCode, memberData.id as number);
157
+ if (memberData) {
158
+ if (whichForm === this.formStore.insuredFormKey) {
159
+ await this.dataStore.deleteInsuredLogic();
160
+ }
161
+ await this.dataStore.api.deleteMember(memberCode, memberData.id as number);
162
+ }
161
163
  }
162
- if (memberData && refetch) await this.dataStore.getApplicationData(taskId, true, true, true, false);
163
- return this.clearMember(whichForm, whichIndex);
164
+ const cleared = this.clearMember(whichForm, whichIndex);
165
+ if (memberData && refetch) await this.dataStore.getApplicationData(taskId, true, true, true, true);
166
+ return cleared;
164
167
  } catch (err) {
165
168
  console.log(err);
166
169
  return ErrorHandler(err);
167
170
  }
168
171
  },
169
- async transferPolicyholder(to: MemberKeys) {
172
+ async transferPolicyholder(to: MultipleMember) {
170
173
  if (!to) return false;
171
174
  if (!this.validateInitiator()) return false;
172
175
  const fromMember = this.formStore.policyholderForm;
173
176
  const successTranser = ref<boolean>(false);
174
177
  const toIndex = ref<number | null>(null);
175
178
  const taskId = useRoute().params.taskId as string;
179
+ const deletedBefore = ref<boolean>(false);
176
180
 
177
181
  if (this.dataStore.members[this.getMemberApplicationCode(to)!].isMultiple === false) {
178
182
  if (this.formStore[to][0].id !== 0 && this.formStore[to][0].iin !== fromMember.iin) {
179
- await this.deleteMember(taskId, to, 0, false);
183
+ deletedBefore.value = await this.deleteMember(taskId, to, 0, false);
180
184
  }
181
185
  this.formStore[to][0] = fromMember;
182
186
  toIndex.value = 0;
@@ -202,11 +206,17 @@ export const useMemberStore = defineStore('members', {
202
206
 
203
207
  if (successTranser.value === true) {
204
208
  if (toIndex.value !== null && taskId !== '0' && this.formStore.applicationData.processInstanceId !== 0) {
205
- const hasSaved = await this.dataStore.saveMember(this.formStore[to][toIndex.value], this.getMemberCode(to), this.getMemberFromApplication(to, toIndex.value));
209
+ if (
210
+ typeof this.formStore[to][toIndex.value].id !== 'number' ||
211
+ (typeof this.formStore[to][toIndex.value].id === 'number' && Number(this.formStore[to][toIndex.value].id) > 0 === false)
212
+ ) {
213
+ return false;
214
+ }
215
+ const hasSaved = await this.dataStore.saveMember(this.formStore[to][toIndex.value], this.getMemberCode(to)!, this.getMemberFromApplication(to, toIndex.value));
206
216
  if (hasSaved) {
207
- await this.dataStore.getApplicationData(taskId, false, true, true, false);
217
+ await this.dataStore.getApplicationData(taskId, false, true, true, deletedBefore.value);
218
+ this.dataStore.showToaster('warning', this.dataStore.t('toaster.formFieldEmptyWarning'));
208
219
  this.dataStore.showToaster('success', this.dataStore.t('toaster.successSaved'));
209
- this.dataStore.showToaster('warning', this.dataStore.t('toaster.formFieldEmptyWarning'), 3000);
210
220
  return true;
211
221
  } else {
212
222
  this.dataStore.showToaster('error', this.dataStore.t('error.memberSave'));
@@ -220,7 +230,7 @@ export const useMemberStore = defineStore('members', {
220
230
  return false;
221
231
  }
222
232
  },
223
- async retransferPolicyholder(from: MemberKeys) {
233
+ async retransferPolicyholder(from: MultipleMember) {
224
234
  if (!from) return false;
225
235
  if (!this.validateInitiator()) return false;
226
236
  const client = this.formStore.policyholderForm;
@@ -238,14 +248,23 @@ export const useMemberStore = defineStore('members', {
238
248
  }
239
249
  } else {
240
250
  // @ts-ignore
241
- this.formStore[from] = [this.getMemberClass(from)];
251
+ this.formStore[from] = [new Member()];
242
252
  }
243
253
  },
244
- addMember(whichForm: MemberKeys) {
254
+ addMember(whichForm: keyof typeof StoreMembers) {
245
255
  if (!whichForm) return false;
246
256
  if (!this.isStatementEditible(whichForm)) return false;
247
- if (!this.validateInitiator()) return false;
248
- this.formStore[whichForm].push(this.getMemberClass(whichForm));
257
+ if (whichForm === 'policyholderForm' || whichForm === 'policyholdersRepresentativeForm') return false;
258
+ const limit = this.dataStore.members[this.getMemberApplicationCode(whichForm)!].limit;
259
+ if (typeof limit === 'number') {
260
+ if (this.formStore[whichForm].length < limit) {
261
+ this.formStore[whichForm].push(new Member());
262
+ } else {
263
+ this.dataStore.showToaster('error', this.dataStore.t('toaster.membersLimit', { text: limit }));
264
+ }
265
+ } else {
266
+ this.formStore[whichForm].push(new Member());
267
+ }
249
268
  },
250
269
  async getOtpStatus(iin: string, phone: string, processInstanceId: string | number | null = null) {
251
270
  try {
@@ -280,16 +299,22 @@ export const useMemberStore = defineStore('members', {
280
299
  };
281
300
  const otpResponse = await this.dataStore.api.checkOtp(otpData);
282
301
  if (otpResponse !== null) {
283
- if ('errMessage' in otpResponse && otpResponse.errMessage !== null) {
302
+ if ('errMessage' in otpResponse && otpResponse.errMessage) {
284
303
  this.dataStore.showToaster('error', otpResponse.errMessage, 3000);
285
304
  return false;
286
305
  }
287
- if ('status' in otpResponse && !!otpResponse.status) {
306
+ if ('status' in otpResponse && !!otpResponse.status && otpResponse.statusName) {
288
307
  // TODO Доработать и менять значение hasAgreement.value => true
289
308
  this.dataStore.showToaster(otpResponse.status !== 2 ? 'error' : 'success', otpResponse.statusName, 3000);
290
309
  if (otpResponse.status === 2) {
310
+ member.otpCode = null;
291
311
  return true;
292
312
  }
313
+ if (otpResponse.status === 4 || otpResponse.status === 5) {
314
+ member.otpCode = null;
315
+ member.otpTokenId = null;
316
+ return false;
317
+ }
293
318
  }
294
319
  }
295
320
  return false;
@@ -303,7 +328,7 @@ export const useMemberStore = defineStore('members', {
303
328
  async sendOtp(member: Member, processInstanceId: string | number | null = null, onInit: boolean = false) {
304
329
  if (!this.validateInitiator()) return null;
305
330
  this.dataStore.isLoading = true;
306
- let otpStatus: boolean = false;
331
+ let otpStatus: boolean | null = null;
307
332
  let otpResponse: SendOtpResponse = {};
308
333
  try {
309
334
  if (member.iin && member.phoneNumber && member.iin.length === useMask().iin.length && member.phoneNumber.length === useMask().phone.length) {
@@ -329,27 +354,24 @@ export const useMemberStore = defineStore('members', {
329
354
  );
330
355
  this.dataStore.isLoading = false;
331
356
  if (!!otpResponse) {
332
- if ('errMessage' in otpResponse && otpResponse.errMessage !== null) {
357
+ if ('errMessage' in otpResponse && otpResponse.errMessage) {
333
358
  this.dataStore.showToaster('error', otpResponse.errMessage, 3000);
334
- return { otpStatus };
359
+ return { otpStatus: false };
335
360
  }
336
361
  if ('result' in otpResponse && otpResponse.result === null) {
337
362
  if ('statusName' in otpResponse && !!otpResponse.statusName) {
338
363
  this.dataStore.showToaster('error', otpResponse.statusName, 3000);
339
- return { otpStatus };
364
+ return { otpStatus: false };
340
365
  }
341
366
  if ('status' in otpResponse && !!otpResponse.status) {
342
- this.dataStore.showToaster('error', otpResponse.status, 3000);
343
- return { otpStatus };
367
+ this.dataStore.showToaster('error', String(otpResponse.status), 3000);
368
+ return { otpStatus: false };
344
369
  }
345
370
  }
346
371
  if ('tokenId' in otpResponse && otpResponse.tokenId) {
347
372
  member.otpTokenId = otpResponse.tokenId;
348
373
  this.dataStore.showToaster('success', this.dataStore.t('toaster.successOtp'), 3000);
349
374
  }
350
- } else {
351
- this.dataStore.showToaster('error', this.dataStore.t('error.noOtpResponse'), 3000);
352
- return { otpStatus };
353
375
  }
354
376
  }
355
377
  } else {
@@ -1,14 +1,14 @@
1
- import { i18n } from '@/configs/i18n';
1
+ import { i18n } from '../configs/i18n';
2
2
  import { formatDate } from '../composables';
3
3
 
4
4
  const t = i18n.t;
5
5
 
6
6
  export const rules = {
7
- recalculationMultiply: [v => (v !== null && v !== '' && v >= 100) || t('toaster.valueShouldBeHigher', { text: '100' })],
8
- recalculationAdditive: [v => (v !== null && v !== '' && v <= 100 && v >= 0) || t('toaster.valueShouldBeBetween', { floor: '0', ceil: '100' })],
9
- required: [v => !!v || t('rules.required')],
7
+ recalculationMultiply: [(v: any) => (v !== null && v !== '' && v >= 100) || t('toaster.valueShouldBeHigher', { text: '100' })],
8
+ recalculationAdditive: [(v: any) => (v !== null && v !== '' && v <= 100 && v >= 0) || t('toaster.valueShouldBeBetween', { floor: '0', ceil: '100' })],
9
+ required: [(v: any) => !!v || t('rules.required')],
10
10
  objectRequired: [
11
- v => {
11
+ (v: any) => {
12
12
  if (!!v && 'nameRu' in v && v.nameRu != null) {
13
13
  return true;
14
14
  }
@@ -16,7 +16,7 @@ export const rules = {
16
16
  },
17
17
  ],
18
18
  agentDataRequired: [
19
- v => {
19
+ (v: any) => {
20
20
  if (!!v && 'fullName' in v && v.fullName != null) {
21
21
  return true;
22
22
  }
@@ -24,7 +24,7 @@ export const rules = {
24
24
  },
25
25
  ],
26
26
  noResident: [
27
- v => {
27
+ (v: any) => {
28
28
  if (!!v && 'nameRu' in v && v.nameRu === 'Нерезидент') {
29
29
  return t('rules.noResident');
30
30
  }
@@ -34,9 +34,17 @@ export const rules = {
34
34
  return t('rules.required');
35
35
  },
36
36
  ],
37
- cyrillic: [v => v === null || /^[\u0400-\u04FF ]+$/.test(v) || t('rules.cyrillic')],
37
+ cyrillic: [(v: any) => v === null || /^[\u0400-\u04FF ]+$/.test(v) || t('rules.cyrillic')],
38
+ cyrillicNonRequired: [
39
+ (v: any) => {
40
+ if (!v) return true;
41
+ else {
42
+ return /^[\u0400-\u04FF ]+$/.test(v) || t('rules.cyrillic');
43
+ }
44
+ },
45
+ ],
38
46
  email: [
39
- v => {
47
+ (v: any) => {
40
48
  if (v === '' || v === null) {
41
49
  return true;
42
50
  } else {
@@ -52,11 +60,11 @@ export const rules = {
52
60
  }
53
61
  },
54
62
  ],
55
- numbers: [v => /^[0-9]+$/.test(v) || t('rules.numbers')],
56
- numbersSymbols: [v => /^([0-9])|(\W|_)+$/.test(v) || t('rules.numbersSymbols')],
57
- ageExceeds: [v => v < 50 || t('rules.ageExceeds')],
63
+ numbers: [(v: any) => /^[0-9]+$/.test(v) || t('rules.numbers')],
64
+ numbersSymbols: [(v: any) => /^([0-9])|(\W|_)+$/.test(v) || t('rules.numbersSymbols')],
65
+ ageExceeds: [(v: any) => v < 50 || t('rules.ageExceeds')],
58
66
  sums: [
59
- v => {
67
+ (v: any) => {
60
68
  let str = v.replace(/\s/g, '');
61
69
  if (/^[0-9]+$/.test(str)) {
62
70
  return true;
@@ -65,16 +73,16 @@ export const rules = {
65
73
  },
66
74
  ],
67
75
  iinRight: [
68
- v => {
76
+ (v: any) => {
69
77
  if (v.length !== useMask().iin.length) {
70
78
  return t('rules.iinRight');
71
79
  }
72
80
  return true;
73
81
  },
74
82
  ],
75
- onlySymbols: [v => !/^\d+$/.test(v) || t('rules.onlySymbols')],
83
+ onlySymbols: [(v: any) => !/^\d+$/.test(v) || t('rules.onlySymbols')],
76
84
  phoneFormat: [
77
- v => {
85
+ (v: any) => {
78
86
  if (v === null || v == '') {
79
87
  return true;
80
88
  }
@@ -86,7 +94,7 @@ export const rules = {
86
94
  },
87
95
  ],
88
96
  date: [
89
- v => {
97
+ (v: any) => {
90
98
  if (v === null || v == '') return true;
91
99
  if (/^(0[1-9]|1[0-9]|2[0-9]|3[0-1])(-|\.)(0[1-9]|1[0-2])(-|\.)(19[0-9]{2}|20[0-9][0-9])$/.test(v)) {
92
100
  return true;
@@ -95,10 +103,12 @@ export const rules = {
95
103
  }
96
104
  },
97
105
  ],
98
- age: [v => /^\d+$/.test(v) || t('rules.age')],
106
+ age: [(v: any) => /^\d+$/.test(v) || t('rules.age')],
107
+ age18: [(v: any) => v >= 18 || t('rules.age18')],
108
+ age18ByDate: [(v: any) => Math.abs(new Date(Date.now() - new Date(formatDate(v)!).getTime()).getUTCFullYear() - 1970) >= 18 || t('rules.age18')],
99
109
  birthDate: [
100
- v => {
101
- if (new Date(formatDate(v)) > new Date(Date.now())) return t('rules.exceedDate');
110
+ (v: any) => {
111
+ if (new Date(formatDate(v)!) > new Date(Date.now())) return t('rules.exceedDate');
102
112
  if (/^(0[1-9]|1[0-9]|2[0-9]|3[0-1])(-|\.)(0[1-9]|1[0-2])(-|\.)(19[0-9]{2}|20[0-9][0-9])$/.test(v)) {
103
113
  return true;
104
114
  } else {
@@ -107,7 +117,7 @@ export const rules = {
107
117
  },
108
118
  ],
109
119
  coverPeriod: [
110
- v => {
120
+ (v: any) => {
111
121
  if (v !== null) {
112
122
  if (v < 5) {
113
123
  return t('rules.coverPeriod');
@@ -118,8 +128,20 @@ export const rules = {
118
128
  }
119
129
  },
120
130
  ],
131
+ coverPeriodFrom2to20: [
132
+ (v: any) => {
133
+ if (v !== null) {
134
+ if (v < 2 || v > 20) {
135
+ return t('productConditionsForm.coverPeriodFrom2to20');
136
+ }
137
+ return true;
138
+ } else {
139
+ return t('productConditionsForm.coverPeriodFrom2to20');
140
+ }
141
+ },
142
+ ],
121
143
  coverPeriodFrom3to20: [
122
- v => {
144
+ (v: any) => {
123
145
  if (v !== null) {
124
146
  if (v < 3 || v > 20) {
125
147
  return t('productConditionsForm.coverPeriodFrom3to20');
@@ -131,7 +153,7 @@ export const rules = {
131
153
  },
132
154
  ],
133
155
  requestedSumInsuredMycar: [
134
- v => {
156
+ (v: any) => {
135
157
  if (v !== null) {
136
158
  if (v.replace(/\s/g, '') > 60000000) {
137
159
  return t('rules.requestedSumInsuredMycar');
@@ -141,7 +163,7 @@ export const rules = {
141
163
  },
142
164
  ],
143
165
  ageMycar: [
144
- v => {
166
+ (v: any) => {
145
167
  if (v !== null) {
146
168
  let n = Number(v);
147
169
  if (n <= 21 || n >= 65) {
@@ -151,6 +173,12 @@ export const rules = {
151
173
  }
152
174
  },
153
175
  ],
154
- policyholderAgeLimit: [v => v >= 18 || t('rules.policyholderAgeLimit')],
155
- beneficiaryAgeLimit: [v => v <= 15 || t('rules.beneficiaryAgeLimit')],
176
+ policyholderAgeLimit: [(v: any) => v >= 18 || t('rules.policyholderAgeLimit')],
177
+ beneficiaryAgeLimit: [(v: any) => v <= 15 || t('rules.beneficiaryAgeLimit')],
178
+ guaranteedPeriodLimit(v: any, termAnnuityPayments: any) {
179
+ if (Number(v) > Number(termAnnuityPayments)) {
180
+ return t('rules.guaranteedPeriodLimit');
181
+ }
182
+ return true;
183
+ },
156
184
  };
package/types/enum.ts ADDED
@@ -0,0 +1,83 @@
1
+ export enum StoreMembers {
2
+ policyholderForm = 'policyholderForm',
3
+ insuredForm = 'insuredForm',
4
+ beneficiaryForm = 'beneficiaryForm',
5
+ beneficialOwnerForm = 'beneficialOwnerForm',
6
+ policyholdersRepresentativeForm = 'policyholdersRepresentativeForm',
7
+ }
8
+
9
+ export enum Actions {
10
+ accept = 'accept',
11
+ rejectclient = 'rejectclient',
12
+ reject = 'reject',
13
+ return = 'return',
14
+ claim = 'claim',
15
+ sign = 'sign',
16
+ pay = 'pay',
17
+ register = 'register',
18
+ send = 'send',
19
+ affiliate = 'affiliate',
20
+ }
21
+
22
+ export enum PostActions {
23
+ font = 'font',
24
+ route = 'route',
25
+ onRouteChange = 'onRouteChange',
26
+ applicationCreated = 'applicationCreated',
27
+ clipboard = 'clipboard',
28
+ toHomePage = 'toHomePage',
29
+ toStatementHistory = 'toStatementHistory',
30
+ toAuth = 'toAuth',
31
+ DOMevent = 'DOMevent',
32
+ Error401 = 'Error401',
33
+ Error500 = 'Error500',
34
+ iframeLoaded = 'iframeLoaded',
35
+ }
36
+
37
+ export enum Roles {
38
+ Manager = 'Manager',
39
+ Admin = 'Admin',
40
+ Underwriter = 'Underwriter',
41
+ Agent = 'Agent',
42
+ Compliance = 'Compliance',
43
+ AgentMycar = 'AgentMycar',
44
+ Analyst = 'Analyst',
45
+ UPK = 'UPK',
46
+ FinCenter = 'FinCenter',
47
+ Supervisor = 'Supervisor',
48
+ Support = 'Support',
49
+ ManagerHalykBank = 'ManagerHalykBank',
50
+ ServiceManager = 'ServiceManager',
51
+ DRNSJ = 'DRNSJ',
52
+ }
53
+
54
+ export enum Statuses {
55
+ StartForm = 'StartForm',
56
+ EditForm = 'EditForm',
57
+ EditBeneficiaryForm = 'EditBeneficiaryForm',
58
+ DocumentsSignedFrom = 'DocumentsSignedFrom',
59
+ UnderwriterForm = 'UnderwriterForm',
60
+ AffilationResolutionForm = 'AffilationResolutionForm',
61
+ Completed = 'Completed',
62
+ InsurancePremiumOnlinePaid = 'InsurancePremiumOnlinePaid',
63
+ ContractSignedFrom = 'ContractSignedFrom',
64
+ WaitingInsurancePremiumForm = 'WaitingInsurancePremiumForm',
65
+ CheckFinCenterForm = 'CheckFinCenterForm',
66
+ RegistryFinCenterForm = 'RegistryFinCenterForm',
67
+ }
68
+
69
+ export enum MemberCodes {
70
+ Client = 'Client',
71
+ Insured = 'Insured',
72
+ Beneficiary = 'Beneficiary',
73
+ BeneficialOwner = 'BeneficialOwner',
74
+ Spokesman = 'Spokesman',
75
+ }
76
+
77
+ export enum MemberAppCodes {
78
+ clientApp = 'clientApp',
79
+ insuredApp = 'insuredApp',
80
+ beneficiaryApp = 'beneficiaryApp',
81
+ beneficialOwnerApp = 'beneficialOwnerApp',
82
+ spokesmanApp = 'spokesmanApp',
83
+ }
package/types/env.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ /// <reference types="vite/client" />
2
+
3
+ interface ImportMetaEnv {
4
+ readonly VITE_MODE: EnvModes;
5
+ readonly VITE_PRODUCT?: Projects;
6
+ }
7
+
8
+ interface ImportMeta {
9
+ readonly env: ImportMetaEnv;
10
+ }