hl-core 0.0.9-beta.9 → 0.0.10-beta.10

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 (75) hide show
  1. package/api/base.api.ts +1110 -0
  2. package/api/index.ts +2 -620
  3. package/api/interceptors.ts +38 -1
  4. package/components/Button/Btn.vue +1 -6
  5. package/components/Complex/MessageBlock.vue +1 -1
  6. package/components/Complex/Page.vue +1 -1
  7. package/components/Complex/TextBlock.vue +25 -0
  8. package/components/Dialog/Dialog.vue +72 -16
  9. package/components/Dialog/FamilyDialog.vue +3 -1
  10. package/components/Form/DynamicForm.vue +101 -0
  11. package/components/Form/FormBlock.vue +12 -3
  12. package/components/Form/FormData.vue +111 -0
  13. package/components/Form/FormSection.vue +3 -3
  14. package/components/Form/FormTextSection.vue +11 -3
  15. package/components/Form/FormToggle.vue +25 -5
  16. package/components/Form/ManagerAttachment.vue +178 -89
  17. package/components/Form/ProductConditionsBlock.vue +59 -6
  18. package/components/Input/Datepicker.vue +43 -7
  19. package/components/Input/DynamicInput.vue +25 -0
  20. package/components/Input/FileInput.vue +25 -5
  21. package/components/Input/FormInput.vue +9 -4
  22. package/components/Input/Monthpicker.vue +34 -0
  23. package/components/Input/PanelInput.vue +6 -1
  24. package/components/Input/RoundedInput.vue +2 -0
  25. package/components/Input/RoundedSelect.vue +9 -2
  26. package/components/Input/SwitchInput.vue +66 -0
  27. package/components/Input/TextInput.vue +162 -0
  28. package/components/Layout/Drawer.vue +18 -4
  29. package/components/Layout/Header.vue +23 -2
  30. package/components/Layout/Loader.vue +2 -1
  31. package/components/Layout/SettingsPanel.vue +24 -11
  32. package/components/Menu/InfoMenu.vue +35 -0
  33. package/components/Menu/MenuNav.vue +25 -3
  34. package/components/Pages/Anketa.vue +255 -65
  35. package/components/Pages/Auth.vue +58 -9
  36. package/components/Pages/ContragentForm.vue +10 -9
  37. package/components/Pages/Documents.vue +267 -30
  38. package/components/Pages/InvoiceInfo.vue +1 -1
  39. package/components/Pages/MemberForm.vue +775 -102
  40. package/components/Pages/ProductAgreement.vue +1 -8
  41. package/components/Pages/ProductConditions.vue +1133 -180
  42. package/components/Panel/PanelHandler.vue +627 -49
  43. package/components/Panel/PanelSelectItem.vue +17 -2
  44. package/components/Panel/RightPanelCloser.vue +7 -0
  45. package/components/Transitions/Animation.vue +30 -0
  46. package/components/Utilities/Chip.vue +2 -0
  47. package/components/Utilities/JsonViewer.vue +2 -2
  48. package/components/Utilities/Qr.vue +44 -0
  49. package/composables/axios.ts +1 -0
  50. package/composables/classes.ts +550 -44
  51. package/composables/constants.ts +126 -6
  52. package/composables/fields.ts +330 -0
  53. package/composables/index.ts +356 -20
  54. package/composables/styles.ts +23 -6
  55. package/configs/pwa.ts +63 -0
  56. package/layouts/clear.vue +21 -0
  57. package/layouts/default.vue +62 -3
  58. package/layouts/full.vue +21 -0
  59. package/locales/ru.json +558 -16
  60. package/nuxt.config.ts +6 -15
  61. package/package.json +38 -39
  62. package/pages/Token.vue +0 -13
  63. package/plugins/head.ts +26 -0
  64. package/plugins/vuetifyPlugin.ts +1 -5
  65. package/store/data.store.ts +1647 -348
  66. package/store/extractStore.ts +17 -0
  67. package/store/form.store.ts +13 -1
  68. package/store/member.store.ts +2 -1
  69. package/store/rules.ts +97 -3
  70. package/store/toast.ts +1 -1
  71. package/tsconfig.json +3 -0
  72. package/types/enum.ts +82 -0
  73. package/types/env.d.ts +2 -0
  74. package/types/form.ts +90 -0
  75. package/types/index.ts +847 -506
@@ -1,6 +1,7 @@
1
1
  import { Statuses, StoreMembers, MemberAppCodes } from '../types/enum';
2
2
  import { formatDate } from '.';
3
- import { RouteLocationNormalized, RouteLocationNormalizedLoaded } from 'vue-router';
3
+ import type { RouteLocationNormalized, RouteLocationNormalizedLoaded } from 'vue-router';
4
+ import type * as Types from '../types';
4
5
 
5
6
  type LinkType = Partial<RouteLocationNormalized> | Partial<RouteLocationNormalizedLoaded> | string | null | boolean;
6
7
 
@@ -17,7 +18,7 @@ class MenuItemConfig {
17
18
  disabled?: ComputedRef;
18
19
  color?: string;
19
20
  show?: ComputedRef;
20
- chip?: ChipComponent;
21
+ chip?: Types.ChipComponent;
21
22
 
22
23
  constructor(
23
24
  id: any = null,
@@ -32,7 +33,7 @@ class MenuItemConfig {
32
33
  disabled?: ComputedRef,
33
34
  color?: string,
34
35
  show?: ComputedRef,
35
- chip?: ChipComponent,
36
+ chip?: Types.ChipComponent,
36
37
  ) {
37
38
  this.id = id;
38
39
  this.title = title;
@@ -72,12 +73,22 @@ export class Value {
72
73
  }
73
74
  }
74
75
 
76
+ export class CountryValue extends Value {
77
+ countryTypeCode: string | number | null;
78
+
79
+ constructor(countryTypeCode = null, ...args: any) {
80
+ super(...args);
81
+ this.countryTypeCode = countryTypeCode;
82
+ }
83
+ }
84
+
75
85
  export class IDocument {
76
86
  id?: string;
77
87
  processInstanceId?: string;
78
88
  iin?: string;
79
89
  fileTypeId?: string;
80
90
  fileTypeName?: string;
91
+ fileTypeNameRu?: string;
81
92
  fileId?: string;
82
93
  page?: number;
83
94
  fileName?: string;
@@ -86,12 +97,14 @@ export class IDocument {
86
97
  signed?: boolean | null;
87
98
  signId?: string | null;
88
99
  certificateDate?: string | null;
100
+
89
101
  constructor(
90
102
  id?: string,
91
103
  processInstanceId?: string,
92
104
  iin?: string,
93
105
  fileTypeId?: string,
94
106
  fileTypeName?: string,
107
+ fileTypeNameRu?: string,
95
108
  fileId?: string,
96
109
  page?: number,
97
110
  fileName?: string,
@@ -106,6 +119,7 @@ export class IDocument {
106
119
  this.iin = iin;
107
120
  this.fileTypeId = fileTypeId;
108
121
  this.fileTypeName = fileTypeName;
122
+ this.fileTypeNameRu = fileTypeNameRu;
109
123
  this.fileId = fileId;
110
124
  this.page = page;
111
125
  this.fileName = fileName;
@@ -119,9 +133,24 @@ export class IDocument {
119
133
 
120
134
  export class DocumentItem extends IDocument {
121
135
  constructor(
122
- { id, processInstanceId, iin, fileTypeId, fileTypeName, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate }: IDocument = new IDocument(),
136
+ {
137
+ id,
138
+ processInstanceId,
139
+ iin,
140
+ fileTypeId,
141
+ fileTypeName,
142
+ fileTypeNameRu,
143
+ fileId,
144
+ page,
145
+ fileName,
146
+ fileTypeCode,
147
+ sharedId,
148
+ signed,
149
+ signId,
150
+ certificateDate,
151
+ }: IDocument = new IDocument(),
123
152
  ) {
124
- super(id, processInstanceId, iin, fileTypeId, fileTypeName, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate);
153
+ super(id, processInstanceId, iin, fileTypeId, fileTypeName, fileTypeNameRu, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate);
125
154
  }
126
155
  }
127
156
 
@@ -194,6 +223,8 @@ class Person {
194
223
  longName: string | null;
195
224
  lastName: string | null;
196
225
  firstName: string | null;
226
+ firstNameLat?: string | null;
227
+ lastNameLat?: string | null;
197
228
  middleName: string | null;
198
229
  birthDate: string | null;
199
230
  gender: Value;
@@ -314,6 +345,7 @@ export class Contragent extends Person {
314
345
  verifyDate: string | null;
315
346
  verifyType: string | null;
316
347
  otpTokenId: string | null;
348
+
317
349
  constructor(
318
350
  economySectorCode = new Value(),
319
351
  countryOfCitizenship = new Value(),
@@ -370,11 +402,11 @@ export class Contragent extends Person {
370
402
 
371
403
  export class Member extends Person {
372
404
  response?: {
373
- contragent?: ContragentType;
374
- questionnaires?: ContragentQuestionaries[];
375
- contacts?: ContragentContacts[];
376
- documents?: ContragentDocuments[];
377
- addresses?: ContragentAddress[];
405
+ contragent?: Types.ContragentType;
406
+ questionnaires?: Types.ContragentQuestionaries[];
407
+ contacts?: Types.ContragentContacts[];
408
+ documents?: Types.ContragentDocuments[];
409
+ addresses?: Types.ContragentAddress[];
378
410
  };
379
411
  verifyType: any;
380
412
  verifyDate: any;
@@ -400,6 +432,7 @@ export class Member extends Person {
400
432
  job: string | null;
401
433
  jobPosition: string | null;
402
434
  jobPlace: string | null;
435
+ positionCode: string | null;
403
436
  registrationCountry: Value;
404
437
  registrationProvince: Value;
405
438
  registrationRegion: Value;
@@ -429,7 +462,7 @@ export class Member extends Person {
429
462
  familyStatus: Value;
430
463
  isTerror: null;
431
464
  relationDegree: Value;
432
- isDisability: Value;
465
+ isDisability: boolean;
433
466
  disabilityGroup: Value | null;
434
467
  percentageOfPayoutAmount: string | number | null;
435
468
  _cyrPattern: RegExp;
@@ -437,11 +470,23 @@ export class Member extends Person {
437
470
  _phonePattern: RegExp;
438
471
  _emailPattern: RegExp;
439
472
  gotFromInsis: boolean | null;
440
- gosPersonData: any;
473
+ gosPersonData: Types.Api.GBD.Person | null;
474
+ parsedDocument: any;
441
475
  hasAgreement: boolean | null;
442
476
  otpTokenId: string | null;
443
477
  otpCode: string | null;
444
- documentsList: ContragentDocuments[];
478
+ documentsList: Types.ContragentDocuments[];
479
+ isInsuredUnderage?: boolean = false;
480
+ bankInfo: BankInfoClass;
481
+ transferContractCompany: Value;
482
+ identityDocument: {
483
+ documentType: Value;
484
+ documentNumber: string | null;
485
+ issuedOn: string | null;
486
+ issuedBy: Value;
487
+ validUntil: string | null;
488
+ };
489
+
445
490
  constructor(
446
491
  id = 0,
447
492
  type = 1,
@@ -460,6 +505,7 @@ export class Member extends Person {
460
505
  job = null,
461
506
  jobPosition = null,
462
507
  jobPlace = null,
508
+ positionCode = null,
463
509
  registrationCountry = new Value(),
464
510
  registrationProvince = new Value(),
465
511
  registrationRegion = new Value(),
@@ -488,7 +534,7 @@ export class Member extends Person {
488
534
  address = null,
489
535
  familyStatus = new Value(),
490
536
  relationDegree = new Value(),
491
- isDisability = new Value(),
537
+ isDisability = false,
492
538
  disabilityGroupId = new Value(),
493
539
  percentageOfPayoutAmount = null,
494
540
  migrationCard = null,
@@ -532,6 +578,7 @@ export class Member extends Person {
532
578
  this.job = job;
533
579
  this.jobPosition = jobPosition;
534
580
  this.jobPlace = jobPlace;
581
+ this.positionCode = positionCode;
535
582
  this.registrationCountry = registrationCountry;
536
583
  this.registrationProvince = registrationProvince;
537
584
  this.registrationRegion = registrationRegion;
@@ -566,13 +613,23 @@ export class Member extends Person {
566
613
  this.isDisability = isDisability;
567
614
  this.disabilityGroup = disabilityGroupId;
568
615
  this.percentageOfPayoutAmount = percentageOfPayoutAmount;
569
- this._cyrPattern = /[\u0400-\u04FF]+/;
616
+ this._cyrPattern = /[\u0400-\u04FF -]+/;
570
617
  this._numPattern = /[0-9]+/;
571
618
  this._phonePattern = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/;
572
619
  this._emailPattern = /.+@.+\..+/;
573
620
  this.gotFromInsis = true;
574
621
  this.gosPersonData = null;
622
+ this.parsedDocument = null;
575
623
  this.hasAgreement = null;
624
+ this.bankInfo = new BankInfoClass();
625
+ this.transferContractCompany = new Value();
626
+ this.identityDocument = {
627
+ documentType: new Value(),
628
+ documentNumber: null,
629
+ issuedOn: null,
630
+ issuedBy: new Value(),
631
+ validUntil: null,
632
+ };
576
633
  }
577
634
 
578
635
  resetMember(clearIinAndPhone: boolean = true) {
@@ -580,6 +637,7 @@ export class Member extends Person {
580
637
  this.job = null;
581
638
  this.jobPosition = null;
582
639
  this.jobPlace = null;
640
+ this.positionCode = null;
583
641
  this.registrationCountry = new Value();
584
642
  this.registrationProvince = new Value();
585
643
  this.registrationRegion = new Value();
@@ -610,11 +668,12 @@ export class Member extends Person {
610
668
  this.familyStatus = new Value();
611
669
  this.isTerror = null;
612
670
  this.relationDegree = new Value();
613
- this.isDisability = new Value();
671
+ this.isDisability = false;
614
672
  this.disabilityGroup = null;
615
673
  this.percentageOfPayoutAmount = null;
616
674
  this.gotFromInsis = true;
617
675
  this.gosPersonData = null;
676
+ this.parsedDocument = null;
618
677
  this.hasAgreement = null;
619
678
  this.insurancePay = new Value();
620
679
  this.migrationCard = null;
@@ -660,6 +719,44 @@ export class Member extends Person {
660
719
  }
661
720
  }
662
721
 
722
+ export class CalculatorForm {
723
+ country: Value;
724
+ countries: CountryValue[] | null;
725
+ purpose: Value;
726
+ workType: Value;
727
+ sportsType: Value;
728
+ type: Value;
729
+ days: string | number | null;
730
+ maxDays: Value;
731
+ age: string | null;
732
+ price: string | null;
733
+ professionType: Value;
734
+ amount: Value;
735
+ startDate: string | null;
736
+ endDate: string | null;
737
+ period: Value;
738
+ currency: string | null;
739
+
740
+ constructor() {
741
+ this.country = new Value();
742
+ this.countries = [];
743
+ this.purpose = new Value();
744
+ this.workType = new Value();
745
+ this.sportsType = new Value();
746
+ this.type = new Value();
747
+ this.days = null;
748
+ this.maxDays = new Value();
749
+ this.age = null;
750
+ this.price = null;
751
+ this.professionType = new Value();
752
+ this.amount = new Value();
753
+ this.startDate = null;
754
+ this.endDate = null;
755
+ this.period = new Value();
756
+ this.currency = null;
757
+ }
758
+ }
759
+
663
760
  export class ProductConditions {
664
761
  signDate: string | null;
665
762
  birthDate: string | null;
@@ -670,6 +767,8 @@ export class ProductConditions {
670
767
  termsOfInsurance: string | null;
671
768
  annualIncome: string | null;
672
769
  processIndexRate: Value;
770
+ processGfot: Value;
771
+ transferContractCompany: Value;
673
772
  requestedSumInsured: number | string | null;
674
773
  requestedSumInsuredInDollar: number | string | null;
675
774
  insurancePremiumPerMonth: number | string | null;
@@ -700,6 +799,17 @@ export class ProductConditions {
700
799
  termAnnuityPayments: number | string | null;
701
800
  periodAnnuityPayment: Value;
702
801
  amountAnnuityPayments: number | string | null;
802
+ isRecalculated: boolean;
803
+ totalAmount5: number | string | null;
804
+ totalAmount7: number | string | null;
805
+ statePremium5: number | string | null;
806
+ statePremium7: number | string | null;
807
+ calculatorForm: CalculatorForm;
808
+ agentCommission: number | null;
809
+ fixInsSum: number | string | null;
810
+ calcDate: string | null;
811
+ contractEndDate: string | null;
812
+
703
813
  constructor(
704
814
  insuranceCase = null,
705
815
  coverPeriod = null,
@@ -707,6 +817,8 @@ export class ProductConditions {
707
817
  termsOfInsurance = null,
708
818
  annualIncome = null,
709
819
  processIndexRate = new Value(),
820
+ processGfot = new Value(),
821
+ transferContractCompany = new Value(),
710
822
  requestedSumInsured = null,
711
823
  insurancePremiumPerMonth = null,
712
824
  establishingGroupDisabilityFromThirdYear = null,
@@ -735,6 +847,16 @@ export class ProductConditions {
735
847
  termAnnuityPayments = null,
736
848
  periodAnnuityPayment = new Value(),
737
849
  amountAnnuityPayments = null,
850
+ isRecalculated = false,
851
+ totalAmount5 = null,
852
+ totalAmount7 = null,
853
+ statePremium5 = null,
854
+ statePremium7 = null,
855
+ calculatorForm = new CalculatorForm(),
856
+ agentCommission = null,
857
+ fixInsSum = null,
858
+ calcDate = null,
859
+ contractEndDate = null,
738
860
  ) {
739
861
  this.requestedSumInsuredInDollar = null;
740
862
  this.insurancePremiumPerMonthInDollar = null;
@@ -747,6 +869,8 @@ export class ProductConditions {
747
869
  this.termsOfInsurance = termsOfInsurance;
748
870
  this.annualIncome = annualIncome;
749
871
  this.processIndexRate = processIndexRate;
872
+ this.processGfot = processGfot;
873
+ this.transferContractCompany = transferContractCompany;
750
874
  this.requestedSumInsured = requestedSumInsured;
751
875
  this.insurancePremiumPerMonth = insurancePremiumPerMonth;
752
876
  this.establishingGroupDisabilityFromThirdYear = establishingGroupDisabilityFromThirdYear;
@@ -775,6 +899,30 @@ export class ProductConditions {
775
899
  this.termAnnuityPayments = termAnnuityPayments;
776
900
  this.periodAnnuityPayment = periodAnnuityPayment;
777
901
  this.amountAnnuityPayments = amountAnnuityPayments;
902
+ this.isRecalculated = isRecalculated;
903
+ this.totalAmount5 = totalAmount5;
904
+ this.totalAmount7 = totalAmount7;
905
+ this.statePremium5 = statePremium5;
906
+ this.statePremium7 = statePremium7;
907
+ this.calculatorForm = calculatorForm;
908
+ this.agentCommission = agentCommission;
909
+ this.fixInsSum = fixInsSum;
910
+ this.calcDate = calcDate;
911
+ this.contractEndDate = contractEndDate;
912
+ }
913
+
914
+ getSingleTripDays() {
915
+ if (this.calculatorForm.startDate && this.calculatorForm.endDate) {
916
+ const date1 = formatDate(this.calculatorForm.startDate);
917
+ const date2 = formatDate(this.calculatorForm.endDate);
918
+ if (date1 && date2) {
919
+ const days = Math.ceil((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)) + 1;
920
+ if (days > 0) {
921
+ return days;
922
+ }
923
+ }
924
+ }
925
+ return null;
778
926
  }
779
927
  }
780
928
 
@@ -783,6 +931,7 @@ export class MemberSettings {
783
931
  isMultiple?: boolean;
784
932
  required?: boolean;
785
933
  limit?: number;
934
+
786
935
  constructor(options?: { has?: boolean; isMultiple?: boolean; required?: boolean; limit?: number }) {
787
936
  if (options) {
788
937
  this.has = options.has;
@@ -798,12 +947,16 @@ export class MemberSettings {
798
947
  }
799
948
 
800
949
  export class DataStoreClass {
950
+ projectConfig: Types.Utils.ProjectConfig | null;
801
951
  // IMP Контроллер фич
802
952
  controls: {
803
953
  // Cтавит значения по дефолту полям
804
954
  setDefaults: {
805
955
  sectorCode: boolean;
806
956
  percentage: boolean;
957
+ signOfResidency: boolean;
958
+ countryOfTaxResidency: boolean;
959
+ countryOfCitizenship: boolean;
807
960
  };
808
961
  // Проверка на роль при авторизации
809
962
  onAuth: boolean;
@@ -811,6 +964,8 @@ export class DataStoreClass {
811
964
  hasAgreement: boolean;
812
965
  // Наличие анкеты
813
966
  hasAnketa: boolean;
967
+ // Обязательность доп анкеты
968
+ isSecondAnketaRequired: boolean;
814
969
  // Подтягивание с ГБДФЛ
815
970
  hasGBDFL: boolean;
816
971
  // Подтягивание с ГКБ
@@ -823,6 +978,10 @@ export class DataStoreClass {
823
978
  hasAttachment: boolean;
824
979
  // Решение АС
825
980
  hasAffiliation: boolean;
981
+ // Выбор метода подписания
982
+ hasChooseSign: boolean;
983
+ // Выбор метода оплаты
984
+ hasChoosePay: boolean;
826
985
  };
827
986
  members: {
828
987
  clientApp: MemberSettings;
@@ -833,8 +992,10 @@ export class DataStoreClass {
833
992
  };
834
993
  iframeLoading: boolean;
835
994
  hasLayoutMargins: boolean;
836
- readonly product: Projects | null;
995
+ readonly product: Types.Projects | null;
996
+ readonly parentProduct: 'efo' | 'auletti';
837
997
  showNav: boolean;
998
+ showDisabledMessage: boolean;
838
999
  menuItems: MenuItem[];
839
1000
  menu: {
840
1001
  title: string;
@@ -842,6 +1003,9 @@ export class DataStoreClass {
842
1003
  loading: boolean;
843
1004
  backIcon: string;
844
1005
  moreIcon: string;
1006
+ hasInfo: boolean;
1007
+ infoIcon: string;
1008
+ infoItems: MenuItem[];
845
1009
  onBack: any;
846
1010
  onLink: any;
847
1011
  selectedItem: MenuItem;
@@ -858,14 +1022,20 @@ export class DataStoreClass {
858
1022
  open: boolean;
859
1023
  overlay: boolean;
860
1024
  title: string;
861
- clear: Function | void;
1025
+ clear: () => void;
1026
+ };
1027
+ rightPanel: {
1028
+ open: boolean;
1029
+ overlay: boolean;
1030
+ title: string;
1031
+ clear: () => void;
862
1032
  };
863
1033
  historyPageIndex: number;
864
1034
  historyPageSize: number;
865
1035
  historyTotalItems: number;
866
1036
  isColumnAsc = { ...InitialColumns() };
867
1037
  idleKey: number;
868
- processList: Item[] | null;
1038
+ processList: Types.Item[] | null;
869
1039
  countries: Value[];
870
1040
  citizenshipCountries: Value[];
871
1041
  taxCountries: Value[];
@@ -878,13 +1048,19 @@ export class DataStoreClass {
878
1048
  documentTypes: Value[];
879
1049
  documentIssuers: Value[];
880
1050
  familyStatuses: Value[];
1051
+ disabilityGroups: Value[];
881
1052
  relations: Value[];
1053
+ banks: Value[];
1054
+ transferContractCompanies: Value[];
1055
+ processTariff: Value[];
882
1056
  insurancePay: Value[];
883
1057
  questionRefs: Value[];
884
1058
  residents: Value[];
885
1059
  ipdl: Value[];
886
1060
  economySectorCode: Value[];
1061
+ economicActivityType: Value[];
887
1062
  gender: Value[];
1063
+ authorityBasis: Value[];
888
1064
  fontSize: number;
889
1065
  isFontChangerOpen: boolean = false;
890
1066
  isLoading: boolean = false;
@@ -892,22 +1068,24 @@ export class DataStoreClass {
892
1068
  accessToken: string | null = null;
893
1069
  refreshToken: string | null = null;
894
1070
  processIndexRate: Value[];
1071
+ processGfot: Value[];
895
1072
  processPaymentPeriod: Value[];
896
1073
  dicAnnuityTypeList: Value[];
897
1074
  processAnnuityPaymentPeriod: Value[];
898
- taskList: TaskListItem[];
899
- processHistory: TaskHistory[];
900
- contragentList: ContragentType[];
1075
+ taskList: Types.TaskListItem[];
1076
+ processHistory: Types.TaskHistory[];
1077
+ contragentList: Types.ContragentType[];
901
1078
  contragentFormKey: string;
902
1079
  processCode: number | null;
903
1080
  groupCode: string;
904
- userGroups: Item[];
1081
+ userGroups: Types.Item[];
905
1082
  onMainPage: boolean;
906
1083
  SaleChanellPolicy: Value[];
907
1084
  RegionPolicy: Value[];
908
1085
  ManagerPolicy: Value[];
909
- AgentData: AgentData[];
1086
+ AgentData: Types.AgentData[];
910
1087
  riskGroup: Value[];
1088
+ DicCoverTypePeriod: Value[];
911
1089
  currencies: {
912
1090
  eur: number | null;
913
1091
  usd: number | null;
@@ -916,7 +1094,20 @@ export class DataStoreClass {
916
1094
  show: (item: MenuItem) => boolean;
917
1095
  disabled: (item: MenuItem) => boolean;
918
1096
  };
1097
+ amountArray: Value[];
1098
+ currency: string | number | null;
1099
+ periodArray: Value[];
1100
+ maxDaysAllArray: Value[];
1101
+ maxDaysFiltered: Value[];
1102
+ dicAllCountries: CountryValue[];
1103
+ dicCountries: CountryValue[];
1104
+ types: Value[];
1105
+ workTypes: Value[];
1106
+ sportsTypes: Value[];
1107
+ purposes: Value[];
1108
+
919
1109
  constructor() {
1110
+ this.projectConfig = null;
920
1111
  this.filters = {
921
1112
  show: (item: MenuItem) => {
922
1113
  if (typeof item.show === 'boolean') {
@@ -946,9 +1137,13 @@ export class DataStoreClass {
946
1137
  setDefaults: {
947
1138
  sectorCode: true,
948
1139
  percentage: true,
1140
+ signOfResidency: false,
1141
+ countryOfTaxResidency: false,
1142
+ countryOfCitizenship: false,
949
1143
  },
950
1144
  onAuth: false,
951
1145
  hasAnketa: true,
1146
+ isSecondAnketaRequired: true,
952
1147
  hasAgreement: true,
953
1148
  hasGBDFL: true,
954
1149
  hasGKB: false,
@@ -956,10 +1151,13 @@ export class DataStoreClass {
956
1151
  hasCalculator: false,
957
1152
  hasAttachment: true,
958
1153
  hasAffiliation: true,
1154
+ hasChooseSign: false,
1155
+ hasChoosePay: false,
959
1156
  };
960
1157
  this.iframeLoading = false;
961
1158
  this.hasLayoutMargins = true;
962
1159
  this.processIndexRate = [];
1160
+ this.processGfot = [];
963
1161
  this.processPaymentPeriod = [];
964
1162
  this.dicAnnuityTypeList = [];
965
1163
  this.processAnnuityPaymentPeriod = [];
@@ -968,8 +1166,11 @@ export class DataStoreClass {
968
1166
  this.RegionPolicy = [];
969
1167
  this.ManagerPolicy = [];
970
1168
  this.AgentData = [];
971
- this.product = import.meta.env.VITE_PRODUCT ? (import.meta.env.VITE_PRODUCT as Projects) : null;
1169
+ this.DicCoverTypePeriod = [];
1170
+ this.product = import.meta.env.VITE_PRODUCT ? (import.meta.env.VITE_PRODUCT as Types.Projects) : null;
1171
+ this.parentProduct = import.meta.env.VITE_PARENT_PRODUCT ? import.meta.env.VITE_PARENT_PRODUCT : 'efo';
972
1172
  this.showNav = true;
1173
+ this.showDisabledMessage = false;
973
1174
  this.menuItems = [];
974
1175
  this.menu = {
975
1176
  title: '',
@@ -977,6 +1178,9 @@ export class DataStoreClass {
977
1178
  loading: false,
978
1179
  backIcon: 'mdi-arrow-left',
979
1180
  moreIcon: 'mdi-dots-vertical',
1181
+ hasInfo: false,
1182
+ infoIcon: 'mdi-information-outline',
1183
+ infoItems: [],
980
1184
  onBack: {},
981
1185
  onLink: {},
982
1186
  selectedItem: new MenuItem(),
@@ -992,13 +1196,24 @@ export class DataStoreClass {
992
1196
  open: false,
993
1197
  overlay: false,
994
1198
  title: '',
995
- clear: function () {
1199
+ clear: () => {
996
1200
  const panelActions = document.getElementById('panel-actions');
997
1201
  if (panelActions) {
998
1202
  panelActions.innerHTML = '';
999
1203
  }
1000
1204
  },
1001
1205
  };
1206
+ this.rightPanel = {
1207
+ open: false,
1208
+ overlay: false,
1209
+ title: '',
1210
+ clear: () => {
1211
+ const panelActions = document.getElementById('right-panel-actions');
1212
+ if (panelActions) {
1213
+ panelActions.innerHTML = '';
1214
+ }
1215
+ },
1216
+ };
1002
1217
  this.panelAction = null;
1003
1218
  this.historyPageIndex = 1;
1004
1219
  this.historyPageSize = 10;
@@ -1018,12 +1233,18 @@ export class DataStoreClass {
1018
1233
  this.documentTypes = [];
1019
1234
  this.documentIssuers = [];
1020
1235
  this.familyStatuses = [];
1236
+ this.disabilityGroups = [];
1021
1237
  this.relations = [];
1238
+ this.processTariff = [];
1239
+ this.banks = [];
1240
+ this.transferContractCompanies = [];
1022
1241
  this.insurancePay = [];
1023
1242
  this.residents = [];
1024
1243
  this.ipdl = [new Value(1, null), new Value(2, 'Да'), new Value(3, 'Нет')];
1025
1244
  this.economySectorCode = [];
1245
+ this.economicActivityType = [];
1026
1246
  this.gender = [new Value(0, null), new Value(1, 'Мужской'), new Value(2, 'Женский')];
1247
+ this.authorityBasis = [];
1027
1248
  this.fontSize = 14;
1028
1249
  this.isFontChangerOpen = false;
1029
1250
  this.isLoading = false;
@@ -1075,15 +1296,46 @@ export class DataStoreClass {
1075
1296
  ids: '',
1076
1297
  },
1077
1298
  ];
1299
+ this.amountArray = [];
1300
+ this.currency = null;
1301
+ this.maxDaysAllArray = [];
1302
+ this.periodArray = [];
1303
+ this.maxDaysFiltered = [];
1304
+ this.dicCountries = [];
1305
+ this.dicAllCountries = [];
1306
+ this.types = [];
1307
+ this.purposes = [];
1308
+ this.workTypes = [];
1309
+ this.sportsTypes = [];
1078
1310
  }
1079
1311
  }
1080
1312
 
1081
1313
  export class FormStoreClass {
1082
- additionalInsuranceTerms: AddCover[];
1083
- additionalInsuranceTermsWithout: AddCover[];
1084
- signUrls: SignUrlType[];
1314
+ documentName: string | null;
1315
+ regNumber: string | null;
1316
+ policyNumber: string | null;
1317
+ contractDate: string | null;
1318
+ needToScanSignedContract: boolean;
1319
+ isUploadedSignedContract: boolean;
1320
+ signedContractFormData: any;
1321
+ lfb: {
1322
+ clients: Types.ClientV2[];
1323
+ policyholder: PolicyholderClass;
1324
+ hasAccidentIncidents: boolean;
1325
+ accidentIncidents: Types.AccidentIncidents[];
1326
+ policyholderActivities: PolicyholderActivity[];
1327
+ beneficialOwners: BeneficialOwner[];
1328
+ beneficialOwnersIndex: number;
1329
+ isPolicyholderBeneficialOwner: boolean;
1330
+ clientId: string | null;
1331
+ insuredFile: any;
1332
+ isPanelInside: boolean;
1333
+ };
1334
+ additionalInsuranceTerms: Types.AddCover[];
1335
+ additionalInsuranceTermsWithout: Types.AddCover[];
1336
+ signUrls: Types.SignUrlType[];
1085
1337
  epayLink: string | null;
1086
- invoiceData: EpayResponse | null;
1338
+ invoiceData: Types.EpayResponse | null;
1087
1339
  affilationResolution: {
1088
1340
  id: string | number | null;
1089
1341
  processInstanceId: string | number | null;
@@ -1096,21 +1348,19 @@ export class FormStoreClass {
1096
1348
  date: string | null;
1097
1349
  };
1098
1350
  signedDocumentList: IDocument[];
1099
- surveyByHealthBase: AnketaFirst | null;
1100
- surveyByHealthBasePolicyholder: AnketaFirst | null;
1101
- surveyByCriticalBase: AnketaFirst | null;
1102
- surveyByCriticalBasePolicyholder: AnketaFirst | null;
1103
- surveyByHealthSecond: AnketaSecond[] | null;
1104
- surveyByCriticalSecond: AnketaSecond[] | null;
1351
+ surveyByHealthBase: Types.AnketaFirst | null;
1352
+ surveyByHealthBasePolicyholder: Types.AnketaFirst | null;
1353
+ surveyByCriticalBase: Types.AnketaFirst | null;
1354
+ surveyByCriticalBasePolicyholder: Types.AnketaFirst | null;
1105
1355
  definedAnswersId: {
1106
1356
  surveyByHealthBase: any;
1107
1357
  surveyByCriticalBase: any;
1108
1358
  surveyByHealthBasePolicyholder: any;
1109
1359
  surveyByCriticalBasePolicyholder: any;
1110
1360
  };
1111
- birthInfos: BirthInfoGKB[];
1361
+ birthInfos: Types.Api.GKB.BirthInfo[];
1112
1362
  SaleChanellPolicy: Value;
1113
- AgentData: AgentData;
1363
+ AgentData: Types.AgentData;
1114
1364
  RegionPolicy: Value;
1115
1365
  ManagerPolicy: Value;
1116
1366
  isDisabled: {
@@ -1120,12 +1370,15 @@ export class FormStoreClass {
1120
1370
  insuredForm: boolean;
1121
1371
  policyholdersRepresentativeForm: boolean;
1122
1372
  productConditionsForm: boolean;
1373
+ calculatorForm: boolean;
1123
1374
  recalculationForm: boolean;
1124
1375
  surveyByHealthBase: boolean;
1125
1376
  surveyByCriticalBase: boolean;
1126
1377
  surveyByHealthBasePolicyholder: boolean;
1127
1378
  surveyByCriticalBasePolicyholder: boolean;
1128
1379
  insuranceDocument: boolean;
1380
+ policyholderActivitiesForm: boolean;
1381
+ accidentStatisticsForm: boolean;
1129
1382
  };
1130
1383
  isPolicyholderInsured: boolean = false;
1131
1384
  isPolicyholderBeneficiary: boolean = false;
@@ -1134,16 +1387,21 @@ export class FormStoreClass {
1134
1387
  isPolicyholderIPDL: boolean = false;
1135
1388
  applicationData: {
1136
1389
  processInstanceId: number | string;
1390
+ regNumber?: string;
1137
1391
  statusCode?: keyof typeof Statuses;
1138
1392
  clientApp?: any;
1393
+ processCode?: number;
1139
1394
  insuredApp?: any;
1395
+ pensionApp?: any;
1396
+ isEnpfSum?: boolean;
1140
1397
  beneficiaryApp?: any;
1141
1398
  beneficialOwnerApp?: any;
1142
1399
  spokesmanApp?: any;
1143
1400
  isTask?: boolean | null;
1144
- policyAppDto?: PolicyAppDto;
1145
- insisWorkDataApp?: InsisWorkDataApp;
1146
- addCoverDto?: AddCover[];
1401
+ createDate?: string | null;
1402
+ policyAppDto?: Types.PolicyAppDto;
1403
+ insisWorkDataApp?: Types.InsisWorkDataApp;
1404
+ addCoverDto?: Types.AddCover[];
1147
1405
  };
1148
1406
  policyholderForm: Member;
1149
1407
  policyholderFormKey: StoreMembers.policyholderForm;
@@ -1164,7 +1422,28 @@ export class FormStoreClass {
1164
1422
  questionnaireByCritical: any[];
1165
1423
  canBeClaimed: boolean | null;
1166
1424
  applicationTaskId: string | null;
1167
- constructor(procuctConditionsTitle?: string) {
1425
+
1426
+ constructor() {
1427
+ this.regNumber = null;
1428
+ this.policyNumber = null;
1429
+ this.contractDate = null;
1430
+ this.documentName = null;
1431
+ this.isUploadedSignedContract = false;
1432
+ this.needToScanSignedContract = false;
1433
+ this.signedContractFormData = null;
1434
+ this.lfb = {
1435
+ clients: [],
1436
+ policyholder: new PolicyholderClass(),
1437
+ hasAccidentIncidents: true,
1438
+ policyholderActivities: [new PolicyholderActivity()],
1439
+ beneficialOwners: [new BeneficialOwner()],
1440
+ beneficialOwnersIndex: 0,
1441
+ isPolicyholderBeneficialOwner: false,
1442
+ accidentIncidents: [],
1443
+ clientId: null,
1444
+ insuredFile: null,
1445
+ isPanelInside: false,
1446
+ };
1168
1447
  this.additionalInsuranceTerms = [];
1169
1448
  this.additionalInsuranceTermsWithout = [];
1170
1449
  this.signUrls = [];
@@ -1186,8 +1465,6 @@ export class FormStoreClass {
1186
1465
  this.surveyByHealthBasePolicyholder = null;
1187
1466
  this.surveyByCriticalBase = null;
1188
1467
  this.surveyByCriticalBasePolicyholder = null;
1189
- this.surveyByHealthSecond = null;
1190
- this.surveyByCriticalSecond = null;
1191
1468
  this.definedAnswersId = {
1192
1469
  surveyByHealthBase: {},
1193
1470
  surveyByCriticalBase: {},
@@ -1214,12 +1491,15 @@ export class FormStoreClass {
1214
1491
  insuredForm: true,
1215
1492
  policyholdersRepresentativeForm: true,
1216
1493
  productConditionsForm: true,
1494
+ calculatorForm: true,
1217
1495
  recalculationForm: true,
1218
1496
  surveyByHealthBase: true,
1219
1497
  surveyByCriticalBase: true,
1220
1498
  surveyByHealthBasePolicyholder: true,
1221
1499
  surveyByCriticalBasePolicyholder: true,
1222
1500
  insuranceDocument: true,
1501
+ policyholderActivitiesForm: true,
1502
+ accidentStatisticsForm: true,
1223
1503
  };
1224
1504
  this.isPolicyholderInsured = false;
1225
1505
  this.isPolicyholderBeneficiary = false;
@@ -1247,3 +1527,229 @@ export class FormStoreClass {
1247
1527
  this.applicationTaskId = null;
1248
1528
  }
1249
1529
  }
1530
+
1531
+ export class Address {
1532
+ country: Value;
1533
+ region: Value;
1534
+ regionType: Value;
1535
+ city: Value;
1536
+ square: string | null;
1537
+ microdistrict: string | null;
1538
+ street: string | null;
1539
+ houseNumber: string | null;
1540
+ kato: string | null;
1541
+ longName: string | null;
1542
+ longNameKz: string | null;
1543
+
1544
+ constructor() {
1545
+ this.country = new Value();
1546
+ this.region = new Value();
1547
+ this.regionType = new Value();
1548
+ this.city = new Value();
1549
+ this.square = null;
1550
+ this.microdistrict = null;
1551
+ this.street = null;
1552
+ this.houseNumber = null;
1553
+ this.kato = null;
1554
+ this.longName = null;
1555
+ this.longNameKz = null;
1556
+ }
1557
+ }
1558
+
1559
+ export class PolicyholderActivity {
1560
+ activityTypeName: string | null;
1561
+ empoloyeeCount: string | null;
1562
+
1563
+ constructor() {
1564
+ this.activityTypeName = null;
1565
+ this.empoloyeeCount = null;
1566
+ }
1567
+ }
1568
+
1569
+ export class BaseGroupClass {
1570
+ id: string | number;
1571
+ longName: string;
1572
+ iin: string;
1573
+ phoneNumber: string;
1574
+ age: string;
1575
+ name: string;
1576
+ nameKz: string;
1577
+ longNameKz: string;
1578
+ citizenship: Value;
1579
+ email: string;
1580
+ resident: Value;
1581
+ taxResidentCountry: Value;
1582
+ addTaxResidency: Value;
1583
+ economySectorCode: Value;
1584
+ hasAttachedFile: boolean;
1585
+ actualAddress: Address;
1586
+ isActualAddressEqualLegalAddres: boolean;
1587
+ legalAddress: Address;
1588
+ identityDocument: {
1589
+ documentType: Value;
1590
+ documentNumber: string;
1591
+ series: string;
1592
+ issuedBy: Value;
1593
+ issuedOn: string;
1594
+ validUntil: string;
1595
+ };
1596
+ bankInfo: BankInfoClass;
1597
+ kbe: string;
1598
+
1599
+ constructor() {
1600
+ this.id = 0;
1601
+ this.longName = '';
1602
+ this.iin = '';
1603
+ this.phoneNumber = '';
1604
+ this.age = '';
1605
+ this.name = '';
1606
+ this.nameKz = '';
1607
+ this.longNameKz = '';
1608
+ this.citizenship = new Value();
1609
+ this.email = '';
1610
+ this.resident = new Value();
1611
+ this.taxResidentCountry = new Value();
1612
+ this.addTaxResidency = new Value();
1613
+ this.economySectorCode = new Value();
1614
+ this.hasAttachedFile = false;
1615
+ this.actualAddress = new Address();
1616
+ this.isActualAddressEqualLegalAddres = true;
1617
+ this.legalAddress = new Address();
1618
+ this.identityDocument = {
1619
+ documentType: new Value(),
1620
+ documentNumber: '',
1621
+ series: '',
1622
+ issuedBy: new Value(),
1623
+ issuedOn: '',
1624
+ validUntil: '',
1625
+ };
1626
+ this.bankInfo = new BankInfoClass();
1627
+ this.kbe = '';
1628
+ }
1629
+ }
1630
+
1631
+ export class PhysGroupClass extends BaseGroupClass {
1632
+ lastName: string;
1633
+ firstName: string;
1634
+ middleName: string;
1635
+ birthDate: string;
1636
+ gender: Value;
1637
+ placeOfBirth: Value;
1638
+ workDetails: { workplace: string; positionRu: string; positionKz: string; jobDuties: string };
1639
+ hasContactPerson: boolean;
1640
+ authorityDetails: {
1641
+ basis: Value;
1642
+ documentNumber: string | null;
1643
+ date: string | null;
1644
+ };
1645
+
1646
+ constructor() {
1647
+ super();
1648
+ this.lastName = '';
1649
+ this.firstName = '';
1650
+ this.middleName = '';
1651
+ this.birthDate = '';
1652
+ this.gender = new Value();
1653
+ this.placeOfBirth = new Value();
1654
+ this.workDetails = { workplace: '', positionRu: '', positionKz: '', jobDuties: '' };
1655
+ this.hasContactPerson = false;
1656
+ this.authorityDetails = {
1657
+ basis: new Value(),
1658
+ documentNumber: null,
1659
+ date: null,
1660
+ };
1661
+ }
1662
+ }
1663
+
1664
+ export class GroupMember extends PhysGroupClass {
1665
+ isLeader: boolean;
1666
+
1667
+ typeOfEconomicActivity: Value;
1668
+ activityTypes: { activityTypeName: string; empoloyeeCount: number }[];
1669
+ beneficalOwnerQuest: { order: number; text: string; answer: boolean | null }[];
1670
+ authoritedPerson: PhysGroupClass;
1671
+ insuredPolicyData: Types.InsuredPolicyType;
1672
+
1673
+ constructor() {
1674
+ super();
1675
+ // Client
1676
+ this.isLeader = false;
1677
+ this.typeOfEconomicActivity = new Value();
1678
+ this.activityTypes = [];
1679
+ this.beneficalOwnerQuest = [
1680
+ {
1681
+ order: 0,
1682
+ text: 'Отметка о наличии/отсутствии физического лица (лиц), которому прямо или косвенно принадлежат более 25 % долей участия в уставном капитале либо размещенных (за вычетом привилегированных и выкупленных обществом) акций юридического лица',
1683
+ answer: null,
1684
+ },
1685
+ {
1686
+ order: 1,
1687
+ text: 'Отметка о наличии/отсутствии физического лица (лиц), осуществляющего контроль над юридическим лицом по иным основаниям',
1688
+ answer: null,
1689
+ },
1690
+ {
1691
+ order: 2,
1692
+ text: 'Отметка о наличии/отсутствии физического лица (лиц) в интересах которого юридическим лицом устанавливаются деловые отношения (совершаются операции)',
1693
+ answer: null,
1694
+ },
1695
+ ];
1696
+ this.authoritedPerson = new PhysGroupClass();
1697
+ // Insured
1698
+ this.insuredPolicyData = {
1699
+ insSum: 0,
1700
+ insSumWithLoad: 0,
1701
+ premium: 0,
1702
+ premiumWithLoad: 0,
1703
+ insuredRisk: {
1704
+ lifeMultiply: 0,
1705
+ lifeAdditive: 0,
1706
+ disabilityMultiply: 0,
1707
+ disabilityAdditive: 0,
1708
+ traumaTableMultiple: 0,
1709
+ accidentalLifeMultiply: 0,
1710
+ accidentalLifeAdditive: 0,
1711
+ criticalMultiply: 0,
1712
+ criticalAdditive: 0,
1713
+ },
1714
+ insuredCoverData: [],
1715
+ };
1716
+ }
1717
+ }
1718
+
1719
+ export class BankInfoClass {
1720
+ bankName: Value;
1721
+ bin: string;
1722
+ iik: string;
1723
+ bik: string;
1724
+ kbe: string;
1725
+
1726
+ constructor() {
1727
+ this.bankName = new Value();
1728
+ this.bin = '';
1729
+ this.iik = '';
1730
+ this.bik = '';
1731
+ this.kbe = '';
1732
+ }
1733
+ }
1734
+
1735
+ export class PolicyholderClass {
1736
+ isIpdl: boolean;
1737
+ clientData: GroupMember;
1738
+
1739
+ constructor() {
1740
+ this.isIpdl = false;
1741
+ this.clientData = new GroupMember();
1742
+ }
1743
+ }
1744
+
1745
+ export class BeneficialOwner {
1746
+ id: string;
1747
+ isIpdl: boolean;
1748
+ beneficialOwnerData: GroupMember;
1749
+
1750
+ constructor() {
1751
+ this.isIpdl = false;
1752
+ this.beneficialOwnerData = new GroupMember();
1753
+ this.id = '';
1754
+ }
1755
+ }