hl-core 0.0.9-beta.2 → 0.0.9-beta.20

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 (63) hide show
  1. package/api/base.api.ts +684 -0
  2. package/api/index.ts +2 -620
  3. package/api/interceptors.ts +52 -14
  4. package/components/Button/Btn.vue +3 -3
  5. package/components/Complex/ContentBlock.vue +1 -1
  6. package/components/Complex/MessageBlock.vue +1 -1
  7. package/components/Complex/Page.vue +7 -1
  8. package/components/Complex/WhiteBlock.vue +7 -0
  9. package/components/Dialog/Dialog.vue +2 -2
  10. package/components/Dialog/FamilyDialog.vue +5 -5
  11. package/components/Form/FormBlock.vue +36 -29
  12. package/components/Form/FormSection.vue +2 -2
  13. package/components/Form/FormTextSection.vue +3 -3
  14. package/components/Form/FormToggle.vue +3 -3
  15. package/components/Form/ManagerAttachment.vue +55 -42
  16. package/components/Form/ProductConditionsBlock.vue +73 -20
  17. package/components/Input/EmptyFormField.vue +1 -1
  18. package/components/Input/FileInput.vue +8 -3
  19. package/components/Input/Monthpicker.vue +33 -0
  20. package/components/Input/PanelInput.vue +5 -1
  21. package/components/Input/RoundedEmptyField.vue +5 -0
  22. package/components/Input/RoundedSelect.vue +13 -0
  23. package/components/Layout/Drawer.vue +2 -1
  24. package/components/Layout/Header.vue +1 -1
  25. package/components/Layout/SettingsPanel.vue +5 -9
  26. package/components/List/ListEmpty.vue +1 -1
  27. package/components/Menu/MenuHover.vue +1 -1
  28. package/components/Menu/MenuNav.vue +1 -1
  29. package/components/Menu/MenuNavItem.vue +4 -4
  30. package/components/Pages/Anketa.vue +88 -47
  31. package/components/Pages/Auth.vue +9 -9
  32. package/components/Pages/ContragentForm.vue +505 -0
  33. package/components/Pages/Documents.vue +5 -5
  34. package/components/Pages/InvoiceInfo.vue +2 -2
  35. package/components/Pages/MemberForm.vue +215 -59
  36. package/components/Pages/ProductAgreement.vue +1 -3
  37. package/components/Pages/ProductConditions.vue +677 -151
  38. package/components/Panel/PanelHandler.vue +86 -21
  39. package/components/Panel/PanelSelectItem.vue +18 -3
  40. package/components/Utilities/IconBorder.vue +17 -0
  41. package/composables/axios.ts +1 -1
  42. package/composables/classes.ts +276 -11
  43. package/composables/constants.ts +43 -0
  44. package/composables/index.ts +40 -4
  45. package/composables/styles.ts +20 -10
  46. package/configs/i18n.ts +0 -2
  47. package/layouts/default.vue +5 -2
  48. package/layouts/full.vue +1 -1
  49. package/locales/ru.json +202 -6
  50. package/nuxt.config.ts +1 -1
  51. package/package.json +30 -39
  52. package/pages/500.vue +2 -2
  53. package/pages/Token.vue +1 -0
  54. package/plugins/helperFunctionsPlugins.ts +6 -7
  55. package/plugins/vuetifyPlugin.ts +2 -0
  56. package/store/data.store.ts +541 -211
  57. package/store/form.store.ts +11 -1
  58. package/store/member.store.ts +1 -1
  59. package/store/rules.ts +37 -2
  60. package/types/enum.ts +6 -0
  61. package/types/index.ts +145 -31
  62. package/components/Button/BtnIcon.vue +0 -47
  63. package/locales/kz.json +0 -585
@@ -1,8 +1,18 @@
1
1
  import { defineStore } from 'pinia';
2
- import { FormStoreClass } from '../composables/classes';
2
+ import { BeneficialOwner, FormStoreClass, PolicyholderActivity } from '../composables/classes';
3
3
 
4
4
  export const useFormStore = defineStore('forms', {
5
5
  state: () => ({
6
6
  ...new FormStoreClass(),
7
7
  }),
8
+ actions: {
9
+ addMember(whichMember: 'policyholder' | 'beneficialOwner') {
10
+ if (whichMember === 'policyholder') {
11
+ this.lfb.policyholderActivities.push(new PolicyholderActivity());
12
+ }
13
+ if (whichMember === 'beneficialOwner') {
14
+ this.lfb.beneficialOwners.push(new BeneficialOwner());
15
+ }
16
+ },
17
+ },
8
18
  });
@@ -13,7 +13,7 @@ export const useMemberStore = defineStore('members', {
13
13
  formStore: useFormStore(),
14
14
  }),
15
15
  actions: {
16
- isStatementEditible(whichForm: keyof typeof StoreMembers | 'productConditionsForm', showToaster: boolean = false) {
16
+ isStatementEditible(whichForm: keyof typeof StoreMembers | 'productConditionsForm' | 'calculatorForm', showToaster: boolean = false) {
17
17
  if (!this.validateInitiator(false)) return false;
18
18
  if (this.formStore.isDisabled[whichForm as keyof typeof this.formStore.isDisabled] === true) {
19
19
  if (showToaster) this.dataStore.showToaster('error', this.dataStore.t('toaster.viewErrorText'), 2000);
package/store/rules.ts CHANGED
@@ -5,6 +5,7 @@ const t = i18n.t;
5
5
 
6
6
  export const rules = {
7
7
  recalculationMultiply: [(v: any) => (v !== null && v !== '' && v >= 100) || t('toaster.valueShouldBeHigher', { text: '100' })],
8
+ recalculationMultiplyBetween: [(v: any) => (v !== null && v !== '' && v >= 100 && v <= 200) || t('toaster.recalculationMultiplyBetween', { floor: '100', ceil: '200' })],
8
9
  recalculationAdditive: [(v: any) => (v !== null && v !== '' && v <= 100 && v >= 0) || t('toaster.valueShouldBeBetween', { floor: '0', ceil: '100' })],
9
10
  required: [(v: any) => !!v || t('rules.required')],
10
11
  objectRequired: [
@@ -15,6 +16,7 @@ export const rules = {
15
16
  return t('rules.required');
16
17
  },
17
18
  ],
19
+ arrayRequired: [(v: any) => (v && v.length > 0) || t('rules.required')],
18
20
  agentDataRequired: [
19
21
  (v: any) => {
20
22
  if (!!v && 'fullName' in v && v.fullName != null) {
@@ -34,7 +36,19 @@ export const rules = {
34
36
  return t('rules.required');
35
37
  },
36
38
  ],
39
+ noResidentOffline: [
40
+ (v: any) => {
41
+ if (!!v && 'nameRu' in v && v.nameRu === 'Нерезидент') {
42
+ return t('rules.noResidentOffline');
43
+ }
44
+ if (!!v && 'nameRu' in v && !!v.nameRu) {
45
+ return true;
46
+ }
47
+ return t('rules.required');
48
+ },
49
+ ],
37
50
  cyrillic: [(v: any) => v === null || /^[\u0400-\u04FF ]+$/.test(v) || t('rules.cyrillic')],
51
+ latin: [(v: any) => v === null || /^[a-zA-Z]+$/.test(v) || t('rules.latin')],
38
52
  cyrillicNonRequired: [
39
53
  (v: any) => {
40
54
  if (!v) return true;
@@ -63,6 +77,8 @@ export const rules = {
63
77
  numbers: [(v: any) => /^[0-9]+$/.test(v) || t('rules.numbers')],
64
78
  numbersSymbols: [(v: any) => /^([0-9])|(\W|_)+$/.test(v) || t('rules.numbersSymbols')],
65
79
  ageExceeds: [(v: any) => v < 50 || t('rules.ageExceeds')],
80
+ ageExceeds80: [(v: any) => v <= 80 || t('rules.ageExceeds80')],
81
+ ageExceeds80ByDate: [(v: any) => Math.abs(new Date(Date.now() - new Date(formatDate(v)!).getTime()).getUTCFullYear() - 1970) <= 80 || t('rules.ageExceeds80')],
66
82
  sums: [
67
83
  (v: any) => {
68
84
  let str = v.replace(/\s/g, '');
@@ -72,6 +88,16 @@ export const rules = {
72
88
  return t('rules.sums');
73
89
  },
74
90
  ],
91
+ planDate: [
92
+ (v: any) => {
93
+ if (new Date(formatDate(v)!) < new Date(Date.now())) return t('rules.planDate');
94
+ 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)) {
95
+ return true;
96
+ } else {
97
+ return t('rules.date');
98
+ }
99
+ },
100
+ ],
75
101
  iinRight: [
76
102
  (v: any) => {
77
103
  if (v.length !== useMask().iin.length) {
@@ -96,7 +122,11 @@ export const rules = {
96
122
  date: [
97
123
  (v: any) => {
98
124
  if (v === null || v == '') return true;
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)) {
125
+ if (
126
+ /^(?:(?:(?:(?:0[1-9]|1[0-9]|2[0-8])[\.](?:0[1-9]|1[012]))|(?:(?:29|30|31)[\.](?:0[13578]|1[02]))|(?:(?:29|30)[\.](?:0[4,6,9]|11)))[\.](?:19|[2-3][0-9])\d\d)|(?:29[\.]02[\.](?:19|[2-3][0-9])(?:00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96))$/.test(
127
+ v,
128
+ )
129
+ ) {
100
130
  return true;
101
131
  } else {
102
132
  return t('rules.date');
@@ -108,8 +138,13 @@ export const rules = {
108
138
  age18ByDate: [(v: any) => Math.abs(new Date(Date.now() - new Date(formatDate(v)!).getTime()).getUTCFullYear() - 1970) >= 18 || t('rules.age18')],
109
139
  birthDate: [
110
140
  (v: any) => {
141
+ if (v === null || v == '') return true;
111
142
  if (new Date(formatDate(v)!) > new Date(Date.now())) return t('rules.exceedDate');
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)) {
143
+ if (
144
+ /^(?:(?:(?:(?:0[1-9]|1[0-9]|2[0-8])[\.](?:0[1-9]|1[012]))|(?:(?:29|30|31)[\.](?:0[13578]|1[02]))|(?:(?:29|30)[\.](?:0[4,6,9]|11)))[\.](?:19|[2-3][0-9])\d\d)|(?:29[\.]02[\.](?:19|[2-3][0-9])(?:00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96))$/.test(
145
+ v,
146
+ )
147
+ ) {
113
148
  return true;
114
149
  } else {
115
150
  return t('rules.date');
package/types/enum.ts CHANGED
@@ -17,6 +17,7 @@ export enum Actions {
17
17
  register = 'register',
18
18
  send = 'send',
19
19
  affiliate = 'affiliate',
20
+ template = 'template',
20
21
  }
21
22
 
22
23
  export enum PostActions {
@@ -81,3 +82,8 @@ export enum MemberAppCodes {
81
82
  beneficialOwnerApp = 'beneficialOwnerApp',
82
83
  spokesmanApp = 'spokesmanApp',
83
84
  }
85
+
86
+ export enum Methods {
87
+ GET = 'GET',
88
+ POST = 'POST',
89
+ }
package/types/index.ts CHANGED
@@ -1,10 +1,28 @@
1
+ import { CountryValue, Value } from '../composables/classes';
1
2
  import { RouteLocationNormalizedLoaded, RouteLocationNormalized } from 'vue-router';
3
+ import { AxiosRequestConfig } from 'axios';
4
+ import { Methods } from './enum';
2
5
 
3
6
  export {};
4
7
 
5
8
  declare global {
6
9
  type EnvModes = 'development' | 'test' | 'vercel' | 'production';
7
- type Projects = 'aml' | 'baiterek' | 'bolashak' | 'calculator' | 'compliance' | 'efo' | 'gons' | 'halykkazyna' | 'liferenta' | 'lifetrip' | 'lka' | 'mycar';
10
+ type Projects =
11
+ | 'aml'
12
+ | 'baiterek'
13
+ | 'bolashak'
14
+ | 'calculator'
15
+ | 'efo'
16
+ | 'gons'
17
+ | 'halykkazyna'
18
+ | 'lifebusiness'
19
+ | 'liferenta'
20
+ | 'lifetrip'
21
+ | 'lka'
22
+ | 'mycar'
23
+ | 'checkcontract'
24
+ | 'checkcontragent'
25
+ | 'daskamkorlyk';
8
26
  type MemberKeys = keyof ReturnType<typeof useFormStore>;
9
27
  type MemberFormTypes = 'policyholderForm' | 'insuredForm' | 'beneficiaryForm' | 'beneficialOwnerForm' | 'policyholdersRepresentativeForm' | 'productConditionsForm';
10
28
  type SingleMember = 'policyholderForm' | 'policyholdersRepresentativeForm';
@@ -36,7 +54,12 @@ declare global {
36
54
  | 'time'
37
55
  | 'url'
38
56
  | 'week';
39
- type TaskListItem = {
57
+
58
+ interface AxiosRequestLocalConfig extends AxiosRequestConfig {
59
+ method: Methods | keyof typeof Methods;
60
+ }
61
+
62
+ interface TaskListItem {
40
63
  addRegNumber: string | number;
41
64
  applicationTaskId: string;
42
65
  dateCreated: string;
@@ -54,7 +77,7 @@ declare global {
54
77
  status: string;
55
78
  userId: string;
56
79
  userName: string;
57
- };
80
+ }
58
81
  type TaskHistory = {
59
82
  appointmentDate: string | null;
60
83
  comment: string | null;
@@ -127,7 +150,7 @@ declare global {
127
150
 
128
151
  type AnketaBody = {
129
152
  first: EachAnketa;
130
- second: any[] | null;
153
+ second: AnketaSecond[] | null;
131
154
  };
132
155
 
133
156
  type EachAnketa = {
@@ -222,29 +245,61 @@ declare global {
222
245
  };
223
246
 
224
247
  type RecalculationDataType = {
225
- signDate: string;
226
- birthDate: string;
248
+ signDate?: string;
249
+ birthDate?: string;
227
250
  gender: number;
228
251
  amount: number | null;
229
252
  premium: number | null;
230
253
  coverPeriod: number;
231
254
  payPeriod: number;
232
- indexRateId?: string | null;
233
- paymentPeriodId: string;
255
+ indexRateId?: string | number | null;
256
+ paymentPeriodId?: string;
234
257
  addCovers: AddCover[];
258
+ insrCount?: number;
259
+ insTermInMonth?: number;
260
+ insSumType?: number;
261
+ insSumMultiplier?: number;
262
+ fixInsSum?: number | null;
263
+ agentCommission?: string | number | null;
264
+ clients?: ClientV2[];
235
265
  };
236
266
 
267
+ interface ClientV2 {
268
+ id: string | number;
269
+ iin: string;
270
+ fullName: string;
271
+ sex: number;
272
+ birthDate: string;
273
+ insSum: number;
274
+ premium?: number;
275
+ position?: string;
276
+ lifeMultiply?: number;
277
+ lifeAdditive?: number;
278
+ disabilityMultiply?: number;
279
+ traumaTableMultiple?: number;
280
+ accidentalLifeMultiply?: number;
281
+ accidentalLifeAdditive?: number;
282
+ criticalMultiply?: string;
283
+ criticalAdditive?: string;
284
+ }
285
+
237
286
  type RecalculationResponseType = {
238
287
  amount: number;
239
288
  premium: number;
289
+ statePremium5?: number;
290
+ statePremium7?: number;
291
+ totalAmount5?: number;
292
+ totalAmount7?: number;
240
293
  mainCoverPremium: number;
241
294
  addCovers: AddCover[];
242
295
  amountInCurrency: number;
243
296
  premiumInCurrency: number;
244
297
  annuityMonthPay: string | number | null;
298
+ mainPremium?: number;
299
+ clients?: ClientV2[];
245
300
  };
246
301
 
247
- type AddCover = {
302
+ interface AddCover {
248
303
  id: string | null;
249
304
  processInstanceId: string;
250
305
  coverTypeId: string;
@@ -256,7 +311,11 @@ declare global {
256
311
  amount: number;
257
312
  premium: number;
258
313
  isMigrate: boolean;
259
- };
314
+ coverPeriodId?: string;
315
+ coverPeriodName?: string;
316
+ coverPeriodCode?: string;
317
+ calculatorValue?: number;
318
+ }
260
319
 
261
320
  type SignUrlType = {
262
321
  uri: string;
@@ -367,14 +426,14 @@ declare global {
367
426
  contragentId: number;
368
427
  questId: string;
369
428
  questName: string;
370
- questAnswer: string | null;
429
+ questAnswer: string | number | null;
371
430
  questAnswerName: string | null;
372
431
  };
373
432
 
374
433
  type ContragentDocuments = {
375
434
  id: number;
376
435
  contragentId: number;
377
- type: string;
436
+ type?: string;
378
437
  typeName: string | null;
379
438
  serial: string | null;
380
439
  number: string | null;
@@ -392,23 +451,23 @@ declare global {
392
451
  type ContragentAddress = {
393
452
  id: number;
394
453
  contragentId: number;
395
- type: string;
396
- address: string;
397
- countryCode: string;
398
- countryName: string;
399
- stateCode: string;
400
- stateName: string;
401
- cityCode: string;
402
- cityName: string;
403
- regionCode: string | null;
404
- regionName: string | null;
405
- streetName: string;
406
- blockNumber: string;
407
- apartmentNumber: string;
408
- cityTypeId: number | null;
409
- cityTypeName: string;
410
- microRaion: string | null;
411
- kvartal: string | null;
454
+ type?: string;
455
+ address?: string;
456
+ countryCode?: string | number;
457
+ countryName?: string;
458
+ stateCode?: string | number;
459
+ stateName?: string;
460
+ cityCode?: string | number;
461
+ cityName?: string;
462
+ regionCode?: string | number | null;
463
+ regionName?: string | null;
464
+ streetName?: string;
465
+ blockNumber?: string;
466
+ apartmentNumber?: string;
467
+ cityTypeId?: number | null;
468
+ cityTypeName?: string;
469
+ microRaion?: string | null;
470
+ kvartal?: string | null;
412
471
  };
413
472
 
414
473
  type ContragentContacts = {
@@ -447,10 +506,10 @@ declare global {
447
506
  isSpokesman?: boolean;
448
507
  coverPeriod?: number | null;
449
508
  payPeriod?: number | null;
450
- indexRateId?: string;
509
+ indexRateId?: string | number;
451
510
  indexRateCode?: string;
452
511
  indexRateName?: string;
453
- paymentPeriodId?: string;
512
+ paymentPeriodId?: string | number;
454
513
  paymentPeriodName?: string;
455
514
  lifeMultiply?: number;
456
515
  lifeAdditive?: number;
@@ -486,6 +545,17 @@ declare global {
486
545
  amountInCurrency?: number | null;
487
546
  premiumInCurrency?: number | null;
488
547
  currencyExchangeRate?: number | null;
548
+ age?: string | number | null;
549
+ lifeTripCountries?: string[] | null;
550
+ tripPurposeId?: string | number | null;
551
+ insuredAmountId?: string | number | null;
552
+ workTypeId?: string | number | null;
553
+ sportsTypeId?: string | number | null;
554
+ singleTripDays?: string | number | null;
555
+ multipleTripMaxDays?: string | number | null;
556
+ tripInsurancePeriod?: string | number | null;
557
+ startDate?: string | null;
558
+ endDate?: string | null;
489
559
  };
490
560
 
491
561
  type InsisWorkDataApp = {
@@ -504,4 +574,48 @@ declare global {
504
574
  managerPolicyName?: string;
505
575
  insuranceProgramType?: string;
506
576
  };
577
+
578
+ type TripInsuranceAmount = {
579
+ amounts: Value[];
580
+ currency: string;
581
+ };
582
+
583
+ type TripInsuranceDaysOptions = {
584
+ period: {
585
+ '90': string[];
586
+ '180': string[];
587
+ '270': string[];
588
+ '365': string[];
589
+ };
590
+ };
591
+ type getTripInsuredAmountRequest = {
592
+ tripTypeID: string | number | null;
593
+ countryID: string[];
594
+ };
595
+
596
+ type SetApplicationRequest = {
597
+ processInstanceId?: string | number | null;
598
+ id?: string | null;
599
+ addCoversDto?: AddCover[];
600
+ insuredAmountId?: string | number | null;
601
+ age?: string | number | null;
602
+ lifeTripCountries?: string[] | null;
603
+ tripPurposeId?: string | number | null;
604
+ workTypeId?: string | number | null;
605
+ sportsTypeId?: string | number | null;
606
+ singleTripDays?: number;
607
+ multipleTripMaxDays?: number;
608
+ tripInsurancePeriod?: number;
609
+ startDate?: string | null;
610
+ endDate?: string | null;
611
+ };
612
+
613
+ type KGDResponse = {
614
+ responseCode: string;
615
+ content: string | null;
616
+ lastName: string;
617
+ firstName: string;
618
+ middleName: string;
619
+ name: string;
620
+ };
507
621
  }
@@ -1,47 +0,0 @@
1
- <template>
2
- <button
3
- type="button"
4
- class="transition-all"
5
- @click="$emit('clicked')"
6
- :disabled="disabled"
7
- :class="[
8
- disabled ? 'disabled' : '',
9
- classes,
10
- btn,
11
- $libStyles[`btnH${$capitalize(size)}` as keyof typeof $libStyles],
12
- ]"
13
- >
14
- <i class="mdi" :class="icon"></i>
15
- </button>
16
- </template>
17
-
18
- <script lang="ts">
19
- export default defineComponent({
20
- name: 'BaseBtnIcon',
21
- props: {
22
- icon: { type: String, default: 'mdi-arrow-right-variant' },
23
- size: {
24
- type: String,
25
- default: 'md',
26
- },
27
- classes: {
28
- type: String,
29
- default: '',
30
- },
31
- disabled: {
32
- type: Boolean,
33
- default: false,
34
- },
35
- btn: {
36
- type: String,
37
- default: new Styles().blueBtn,
38
- },
39
- },
40
- });
41
- </script>
42
-
43
- <style scoped>
44
- .disabled {
45
- opacity: 0.3;
46
- }
47
- </style>