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

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 (72) hide show
  1. package/api/base.api.ts +1109 -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 +23 -0
  8. package/components/Dialog/Dialog.vue +70 -16
  9. package/components/Dialog/FamilyDialog.vue +1 -1
  10. package/components/Form/DynamicForm.vue +100 -0
  11. package/components/Form/FormBlock.vue +12 -3
  12. package/components/Form/FormData.vue +110 -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 +177 -89
  17. package/components/Form/ProductConditionsBlock.vue +59 -6
  18. package/components/Input/Datepicker.vue +43 -7
  19. package/components/Input/DynamicInput.vue +23 -0
  20. package/components/Input/FileInput.vue +25 -5
  21. package/components/Input/FormInput.vue +7 -4
  22. package/components/Input/Monthpicker.vue +34 -0
  23. package/components/Input/PanelInput.vue +5 -1
  24. package/components/Input/RoundedSelect.vue +7 -2
  25. package/components/Input/SwitchInput.vue +64 -0
  26. package/components/Input/TextInput.vue +160 -0
  27. package/components/Layout/Drawer.vue +16 -4
  28. package/components/Layout/Header.vue +23 -2
  29. package/components/Layout/Loader.vue +2 -1
  30. package/components/Layout/SettingsPanel.vue +24 -11
  31. package/components/Menu/InfoMenu.vue +35 -0
  32. package/components/Menu/MenuNav.vue +25 -3
  33. package/components/Pages/Anketa.vue +254 -65
  34. package/components/Pages/Auth.vue +56 -9
  35. package/components/Pages/ContragentForm.vue +9 -9
  36. package/components/Pages/Documents.vue +266 -30
  37. package/components/Pages/InvoiceInfo.vue +1 -1
  38. package/components/Pages/MemberForm.vue +774 -102
  39. package/components/Pages/ProductAgreement.vue +1 -8
  40. package/components/Pages/ProductConditions.vue +1132 -180
  41. package/components/Panel/PanelHandler.vue +626 -49
  42. package/components/Panel/PanelSelectItem.vue +17 -2
  43. package/components/Panel/RightPanelCloser.vue +7 -0
  44. package/components/Transitions/Animation.vue +28 -0
  45. package/components/Utilities/JsonViewer.vue +3 -2
  46. package/components/Utilities/Qr.vue +44 -0
  47. package/composables/axios.ts +1 -0
  48. package/composables/classes.ts +501 -14
  49. package/composables/constants.ts +126 -6
  50. package/composables/fields.ts +328 -0
  51. package/composables/index.ts +355 -20
  52. package/composables/styles.ts +23 -6
  53. package/configs/pwa.ts +63 -0
  54. package/layouts/clear.vue +21 -0
  55. package/layouts/default.vue +62 -3
  56. package/layouts/full.vue +21 -0
  57. package/locales/ru.json +558 -16
  58. package/nuxt.config.ts +11 -15
  59. package/package.json +37 -39
  60. package/pages/Token.vue +0 -13
  61. package/plugins/head.ts +26 -0
  62. package/plugins/vuetifyPlugin.ts +1 -5
  63. package/store/data.store.ts +1610 -321
  64. package/store/extractStore.ts +17 -0
  65. package/store/form.store.ts +13 -1
  66. package/store/member.store.ts +1 -1
  67. package/store/rules.ts +97 -3
  68. package/store/toast.ts +1 -1
  69. package/types/enum.ts +81 -0
  70. package/types/env.d.ts +2 -0
  71. package/types/form.ts +94 -0
  72. package/types/index.ts +419 -24
@@ -1,6 +1,6 @@
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
4
 
5
5
  type LinkType = Partial<RouteLocationNormalized> | Partial<RouteLocationNormalizedLoaded> | string | null | boolean;
6
6
 
@@ -72,6 +72,15 @@ export class Value {
72
72
  }
73
73
  }
74
74
 
75
+ export class CountryValue extends Value {
76
+ countryTypeCode: string | number | null;
77
+
78
+ constructor(countryTypeCode = null, ...args: any) {
79
+ super(...args);
80
+ this.countryTypeCode = countryTypeCode;
81
+ }
82
+ }
83
+
75
84
  export class IDocument {
76
85
  id?: string;
77
86
  processInstanceId?: string;
@@ -86,6 +95,7 @@ export class IDocument {
86
95
  signed?: boolean | null;
87
96
  signId?: string | null;
88
97
  certificateDate?: string | null;
98
+
89
99
  constructor(
90
100
  id?: string,
91
101
  processInstanceId?: string,
@@ -194,6 +204,8 @@ class Person {
194
204
  longName: string | null;
195
205
  lastName: string | null;
196
206
  firstName: string | null;
207
+ firstNameLat?: string | null;
208
+ lastNameLat?: string | null;
197
209
  middleName: string | null;
198
210
  birthDate: string | null;
199
211
  gender: Value;
@@ -314,6 +326,7 @@ export class Contragent extends Person {
314
326
  verifyDate: string | null;
315
327
  verifyType: string | null;
316
328
  otpTokenId: string | null;
329
+
317
330
  constructor(
318
331
  economySectorCode = new Value(),
319
332
  countryOfCitizenship = new Value(),
@@ -400,6 +413,7 @@ export class Member extends Person {
400
413
  job: string | null;
401
414
  jobPosition: string | null;
402
415
  jobPlace: string | null;
416
+ positionCode: string | null;
403
417
  registrationCountry: Value;
404
418
  registrationProvince: Value;
405
419
  registrationRegion: Value;
@@ -429,7 +443,7 @@ export class Member extends Person {
429
443
  familyStatus: Value;
430
444
  isTerror: null;
431
445
  relationDegree: Value;
432
- isDisability: Value;
446
+ isDisability: boolean;
433
447
  disabilityGroup: Value | null;
434
448
  percentageOfPayoutAmount: string | number | null;
435
449
  _cyrPattern: RegExp;
@@ -437,11 +451,23 @@ export class Member extends Person {
437
451
  _phonePattern: RegExp;
438
452
  _emailPattern: RegExp;
439
453
  gotFromInsis: boolean | null;
440
- gosPersonData: any;
454
+ gosPersonData: Api.GBD.Person | null;
455
+ parsedDocument: any;
441
456
  hasAgreement: boolean | null;
442
457
  otpTokenId: string | null;
443
458
  otpCode: string | null;
444
459
  documentsList: ContragentDocuments[];
460
+ isInsuredUnderage?: boolean = false;
461
+ bankInfo: BankInfoClass;
462
+ transferContractCompany: Value;
463
+ identityDocument: {
464
+ documentType: Value;
465
+ documentNumber: string | null;
466
+ issuedOn: string | null;
467
+ issuedBy: Value;
468
+ validUntil: string | null;
469
+ };
470
+
445
471
  constructor(
446
472
  id = 0,
447
473
  type = 1,
@@ -460,6 +486,7 @@ export class Member extends Person {
460
486
  job = null,
461
487
  jobPosition = null,
462
488
  jobPlace = null,
489
+ positionCode = null,
463
490
  registrationCountry = new Value(),
464
491
  registrationProvince = new Value(),
465
492
  registrationRegion = new Value(),
@@ -488,7 +515,7 @@ export class Member extends Person {
488
515
  address = null,
489
516
  familyStatus = new Value(),
490
517
  relationDegree = new Value(),
491
- isDisability = new Value(),
518
+ isDisability = false,
492
519
  disabilityGroupId = new Value(),
493
520
  percentageOfPayoutAmount = null,
494
521
  migrationCard = null,
@@ -532,6 +559,7 @@ export class Member extends Person {
532
559
  this.job = job;
533
560
  this.jobPosition = jobPosition;
534
561
  this.jobPlace = jobPlace;
562
+ this.positionCode = positionCode;
535
563
  this.registrationCountry = registrationCountry;
536
564
  this.registrationProvince = registrationProvince;
537
565
  this.registrationRegion = registrationRegion;
@@ -566,13 +594,23 @@ export class Member extends Person {
566
594
  this.isDisability = isDisability;
567
595
  this.disabilityGroup = disabilityGroupId;
568
596
  this.percentageOfPayoutAmount = percentageOfPayoutAmount;
569
- this._cyrPattern = /[\u0400-\u04FF]+/;
597
+ this._cyrPattern = /[\u0400-\u04FF -]+/;
570
598
  this._numPattern = /[0-9]+/;
571
599
  this._phonePattern = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/;
572
600
  this._emailPattern = /.+@.+\..+/;
573
601
  this.gotFromInsis = true;
574
602
  this.gosPersonData = null;
603
+ this.parsedDocument = null;
575
604
  this.hasAgreement = null;
605
+ this.bankInfo = new BankInfoClass();
606
+ this.transferContractCompany = new Value();
607
+ this.identityDocument = {
608
+ documentType: new Value(),
609
+ documentNumber: null,
610
+ issuedOn: null,
611
+ issuedBy: new Value(),
612
+ validUntil: null,
613
+ };
576
614
  }
577
615
 
578
616
  resetMember(clearIinAndPhone: boolean = true) {
@@ -580,6 +618,7 @@ export class Member extends Person {
580
618
  this.job = null;
581
619
  this.jobPosition = null;
582
620
  this.jobPlace = null;
621
+ this.positionCode = null;
583
622
  this.registrationCountry = new Value();
584
623
  this.registrationProvince = new Value();
585
624
  this.registrationRegion = new Value();
@@ -610,11 +649,12 @@ export class Member extends Person {
610
649
  this.familyStatus = new Value();
611
650
  this.isTerror = null;
612
651
  this.relationDegree = new Value();
613
- this.isDisability = new Value();
652
+ this.isDisability = false;
614
653
  this.disabilityGroup = null;
615
654
  this.percentageOfPayoutAmount = null;
616
655
  this.gotFromInsis = true;
617
656
  this.gosPersonData = null;
657
+ this.parsedDocument = null;
618
658
  this.hasAgreement = null;
619
659
  this.insurancePay = new Value();
620
660
  this.migrationCard = null;
@@ -660,6 +700,44 @@ export class Member extends Person {
660
700
  }
661
701
  }
662
702
 
703
+ export class CalculatorForm {
704
+ country: Value;
705
+ countries: CountryValue[] | null;
706
+ purpose: Value;
707
+ workType: Value;
708
+ sportsType: Value;
709
+ type: Value;
710
+ days: string | number | null;
711
+ maxDays: Value;
712
+ age: string | null;
713
+ price: string | null;
714
+ professionType: Value;
715
+ amount: Value;
716
+ startDate: string | null;
717
+ endDate: string | null;
718
+ period: Value;
719
+ currency: string | null;
720
+
721
+ constructor() {
722
+ this.country = new Value();
723
+ this.countries = [];
724
+ this.purpose = new Value();
725
+ this.workType = new Value();
726
+ this.sportsType = new Value();
727
+ this.type = new Value();
728
+ this.days = null;
729
+ this.maxDays = new Value();
730
+ this.age = null;
731
+ this.price = null;
732
+ this.professionType = new Value();
733
+ this.amount = new Value();
734
+ this.startDate = null;
735
+ this.endDate = null;
736
+ this.period = new Value();
737
+ this.currency = null;
738
+ }
739
+ }
740
+
663
741
  export class ProductConditions {
664
742
  signDate: string | null;
665
743
  birthDate: string | null;
@@ -670,6 +748,8 @@ export class ProductConditions {
670
748
  termsOfInsurance: string | null;
671
749
  annualIncome: string | null;
672
750
  processIndexRate: Value;
751
+ processGfot: Value;
752
+ transferContractCompany: Value;
673
753
  requestedSumInsured: number | string | null;
674
754
  requestedSumInsuredInDollar: number | string | null;
675
755
  insurancePremiumPerMonth: number | string | null;
@@ -700,6 +780,17 @@ export class ProductConditions {
700
780
  termAnnuityPayments: number | string | null;
701
781
  periodAnnuityPayment: Value;
702
782
  amountAnnuityPayments: number | string | null;
783
+ isRecalculated: boolean;
784
+ totalAmount5: number | string | null;
785
+ totalAmount7: number | string | null;
786
+ statePremium5: number | string | null;
787
+ statePremium7: number | string | null;
788
+ calculatorForm: CalculatorForm;
789
+ agentCommission: number | null;
790
+ fixInsSum: number | string | null;
791
+ calcDate: string | null;
792
+ contractEndDate: string | null;
793
+
703
794
  constructor(
704
795
  insuranceCase = null,
705
796
  coverPeriod = null,
@@ -707,6 +798,8 @@ export class ProductConditions {
707
798
  termsOfInsurance = null,
708
799
  annualIncome = null,
709
800
  processIndexRate = new Value(),
801
+ processGfot = new Value(),
802
+ transferContractCompany = new Value(),
710
803
  requestedSumInsured = null,
711
804
  insurancePremiumPerMonth = null,
712
805
  establishingGroupDisabilityFromThirdYear = null,
@@ -735,6 +828,16 @@ export class ProductConditions {
735
828
  termAnnuityPayments = null,
736
829
  periodAnnuityPayment = new Value(),
737
830
  amountAnnuityPayments = null,
831
+ isRecalculated = false,
832
+ totalAmount5 = null,
833
+ totalAmount7 = null,
834
+ statePremium5 = null,
835
+ statePremium7 = null,
836
+ calculatorForm = new CalculatorForm(),
837
+ agentCommission = null,
838
+ fixInsSum = null,
839
+ calcDate = null,
840
+ contractEndDate = null,
738
841
  ) {
739
842
  this.requestedSumInsuredInDollar = null;
740
843
  this.insurancePremiumPerMonthInDollar = null;
@@ -747,6 +850,8 @@ export class ProductConditions {
747
850
  this.termsOfInsurance = termsOfInsurance;
748
851
  this.annualIncome = annualIncome;
749
852
  this.processIndexRate = processIndexRate;
853
+ this.processGfot = processGfot;
854
+ this.transferContractCompany = transferContractCompany;
750
855
  this.requestedSumInsured = requestedSumInsured;
751
856
  this.insurancePremiumPerMonth = insurancePremiumPerMonth;
752
857
  this.establishingGroupDisabilityFromThirdYear = establishingGroupDisabilityFromThirdYear;
@@ -775,6 +880,30 @@ export class ProductConditions {
775
880
  this.termAnnuityPayments = termAnnuityPayments;
776
881
  this.periodAnnuityPayment = periodAnnuityPayment;
777
882
  this.amountAnnuityPayments = amountAnnuityPayments;
883
+ this.isRecalculated = isRecalculated;
884
+ this.totalAmount5 = totalAmount5;
885
+ this.totalAmount7 = totalAmount7;
886
+ this.statePremium5 = statePremium5;
887
+ this.statePremium7 = statePremium7;
888
+ this.calculatorForm = calculatorForm;
889
+ this.agentCommission = agentCommission;
890
+ this.fixInsSum = fixInsSum;
891
+ this.calcDate = calcDate;
892
+ this.contractEndDate = contractEndDate;
893
+ }
894
+
895
+ getSingleTripDays() {
896
+ if (this.calculatorForm.startDate && this.calculatorForm.endDate) {
897
+ const date1 = formatDate(this.calculatorForm.startDate);
898
+ const date2 = formatDate(this.calculatorForm.endDate);
899
+ if (date1 && date2) {
900
+ const days = Math.ceil((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)) + 1;
901
+ if (days > 0) {
902
+ return days;
903
+ }
904
+ }
905
+ }
906
+ return null;
778
907
  }
779
908
  }
780
909
 
@@ -783,6 +912,7 @@ export class MemberSettings {
783
912
  isMultiple?: boolean;
784
913
  required?: boolean;
785
914
  limit?: number;
915
+
786
916
  constructor(options?: { has?: boolean; isMultiple?: boolean; required?: boolean; limit?: number }) {
787
917
  if (options) {
788
918
  this.has = options.has;
@@ -798,12 +928,16 @@ export class MemberSettings {
798
928
  }
799
929
 
800
930
  export class DataStoreClass {
931
+ projectConfig: Utils.ProjectConfig | null;
801
932
  // IMP Контроллер фич
802
933
  controls: {
803
934
  // Cтавит значения по дефолту полям
804
935
  setDefaults: {
805
936
  sectorCode: boolean;
806
937
  percentage: boolean;
938
+ signOfResidency: boolean;
939
+ countryOfTaxResidency: boolean;
940
+ countryOfCitizenship: boolean;
807
941
  };
808
942
  // Проверка на роль при авторизации
809
943
  onAuth: boolean;
@@ -811,6 +945,8 @@ export class DataStoreClass {
811
945
  hasAgreement: boolean;
812
946
  // Наличие анкеты
813
947
  hasAnketa: boolean;
948
+ // Обязательность доп анкеты
949
+ isSecondAnketaRequired: boolean;
814
950
  // Подтягивание с ГБДФЛ
815
951
  hasGBDFL: boolean;
816
952
  // Подтягивание с ГКБ
@@ -823,6 +959,10 @@ export class DataStoreClass {
823
959
  hasAttachment: boolean;
824
960
  // Решение АС
825
961
  hasAffiliation: boolean;
962
+ // Выбор метода подписания
963
+ hasChooseSign: boolean;
964
+ // Выбор метода оплаты
965
+ hasChoosePay: boolean;
826
966
  };
827
967
  members: {
828
968
  clientApp: MemberSettings;
@@ -834,7 +974,9 @@ export class DataStoreClass {
834
974
  iframeLoading: boolean;
835
975
  hasLayoutMargins: boolean;
836
976
  readonly product: Projects | null;
977
+ readonly parentProduct: 'efo' | 'auletti';
837
978
  showNav: boolean;
979
+ showDisabledMessage: boolean;
838
980
  menuItems: MenuItem[];
839
981
  menu: {
840
982
  title: string;
@@ -842,6 +984,9 @@ export class DataStoreClass {
842
984
  loading: boolean;
843
985
  backIcon: string;
844
986
  moreIcon: string;
987
+ hasInfo: boolean;
988
+ infoIcon: string;
989
+ infoItems: MenuItem[];
845
990
  onBack: any;
846
991
  onLink: any;
847
992
  selectedItem: MenuItem;
@@ -858,7 +1003,13 @@ export class DataStoreClass {
858
1003
  open: boolean;
859
1004
  overlay: boolean;
860
1005
  title: string;
861
- clear: Function | void;
1006
+ clear: () => void;
1007
+ };
1008
+ rightPanel: {
1009
+ open: boolean;
1010
+ overlay: boolean;
1011
+ title: string;
1012
+ clear: () => void;
862
1013
  };
863
1014
  historyPageIndex: number;
864
1015
  historyPageSize: number;
@@ -878,13 +1029,19 @@ export class DataStoreClass {
878
1029
  documentTypes: Value[];
879
1030
  documentIssuers: Value[];
880
1031
  familyStatuses: Value[];
1032
+ disabilityGroups: Value[];
881
1033
  relations: Value[];
1034
+ banks: Value[];
1035
+ transferContractCompanies: Value[];
1036
+ processTariff: Value[];
882
1037
  insurancePay: Value[];
883
1038
  questionRefs: Value[];
884
1039
  residents: Value[];
885
1040
  ipdl: Value[];
886
1041
  economySectorCode: Value[];
1042
+ economicActivityType: Value[];
887
1043
  gender: Value[];
1044
+ authorityBasis: Value[];
888
1045
  fontSize: number;
889
1046
  isFontChangerOpen: boolean = false;
890
1047
  isLoading: boolean = false;
@@ -892,6 +1049,7 @@ export class DataStoreClass {
892
1049
  accessToken: string | null = null;
893
1050
  refreshToken: string | null = null;
894
1051
  processIndexRate: Value[];
1052
+ processGfot: Value[];
895
1053
  processPaymentPeriod: Value[];
896
1054
  dicAnnuityTypeList: Value[];
897
1055
  processAnnuityPaymentPeriod: Value[];
@@ -908,6 +1066,7 @@ export class DataStoreClass {
908
1066
  ManagerPolicy: Value[];
909
1067
  AgentData: AgentData[];
910
1068
  riskGroup: Value[];
1069
+ DicCoverTypePeriod: Value[];
911
1070
  currencies: {
912
1071
  eur: number | null;
913
1072
  usd: number | null;
@@ -916,7 +1075,20 @@ export class DataStoreClass {
916
1075
  show: (item: MenuItem) => boolean;
917
1076
  disabled: (item: MenuItem) => boolean;
918
1077
  };
1078
+ amountArray: Value[];
1079
+ currency: string | number | null;
1080
+ periodArray: Value[];
1081
+ maxDaysAllArray: Value[];
1082
+ maxDaysFiltered: Value[];
1083
+ dicAllCountries: CountryValue[];
1084
+ dicCountries: CountryValue[];
1085
+ types: Value[];
1086
+ workTypes: Value[];
1087
+ sportsTypes: Value[];
1088
+ purposes: Value[];
1089
+
919
1090
  constructor() {
1091
+ this.projectConfig = null;
920
1092
  this.filters = {
921
1093
  show: (item: MenuItem) => {
922
1094
  if (typeof item.show === 'boolean') {
@@ -946,9 +1118,13 @@ export class DataStoreClass {
946
1118
  setDefaults: {
947
1119
  sectorCode: true,
948
1120
  percentage: true,
1121
+ signOfResidency: false,
1122
+ countryOfTaxResidency: false,
1123
+ countryOfCitizenship: false,
949
1124
  },
950
1125
  onAuth: false,
951
1126
  hasAnketa: true,
1127
+ isSecondAnketaRequired: true,
952
1128
  hasAgreement: true,
953
1129
  hasGBDFL: true,
954
1130
  hasGKB: false,
@@ -956,10 +1132,13 @@ export class DataStoreClass {
956
1132
  hasCalculator: false,
957
1133
  hasAttachment: true,
958
1134
  hasAffiliation: true,
1135
+ hasChooseSign: false,
1136
+ hasChoosePay: false,
959
1137
  };
960
1138
  this.iframeLoading = false;
961
1139
  this.hasLayoutMargins = true;
962
1140
  this.processIndexRate = [];
1141
+ this.processGfot = [];
963
1142
  this.processPaymentPeriod = [];
964
1143
  this.dicAnnuityTypeList = [];
965
1144
  this.processAnnuityPaymentPeriod = [];
@@ -968,8 +1147,11 @@ export class DataStoreClass {
968
1147
  this.RegionPolicy = [];
969
1148
  this.ManagerPolicy = [];
970
1149
  this.AgentData = [];
1150
+ this.DicCoverTypePeriod = [];
971
1151
  this.product = import.meta.env.VITE_PRODUCT ? (import.meta.env.VITE_PRODUCT as Projects) : null;
1152
+ this.parentProduct = import.meta.env.VITE_PARENT_PRODUCT ? import.meta.env.VITE_PARENT_PRODUCT : 'efo';
972
1153
  this.showNav = true;
1154
+ this.showDisabledMessage = false;
973
1155
  this.menuItems = [];
974
1156
  this.menu = {
975
1157
  title: '',
@@ -977,6 +1159,9 @@ export class DataStoreClass {
977
1159
  loading: false,
978
1160
  backIcon: 'mdi-arrow-left',
979
1161
  moreIcon: 'mdi-dots-vertical',
1162
+ hasInfo: false,
1163
+ infoIcon: 'mdi-information-outline',
1164
+ infoItems: [],
980
1165
  onBack: {},
981
1166
  onLink: {},
982
1167
  selectedItem: new MenuItem(),
@@ -992,13 +1177,24 @@ export class DataStoreClass {
992
1177
  open: false,
993
1178
  overlay: false,
994
1179
  title: '',
995
- clear: function () {
1180
+ clear: () => {
996
1181
  const panelActions = document.getElementById('panel-actions');
997
1182
  if (panelActions) {
998
1183
  panelActions.innerHTML = '';
999
1184
  }
1000
1185
  },
1001
1186
  };
1187
+ this.rightPanel = {
1188
+ open: false,
1189
+ overlay: false,
1190
+ title: '',
1191
+ clear: () => {
1192
+ const panelActions = document.getElementById('right-panel-actions');
1193
+ if (panelActions) {
1194
+ panelActions.innerHTML = '';
1195
+ }
1196
+ },
1197
+ };
1002
1198
  this.panelAction = null;
1003
1199
  this.historyPageIndex = 1;
1004
1200
  this.historyPageSize = 10;
@@ -1018,12 +1214,18 @@ export class DataStoreClass {
1018
1214
  this.documentTypes = [];
1019
1215
  this.documentIssuers = [];
1020
1216
  this.familyStatuses = [];
1217
+ this.disabilityGroups = [];
1021
1218
  this.relations = [];
1219
+ this.processTariff = [];
1220
+ this.banks = [];
1221
+ this.transferContractCompanies = [];
1022
1222
  this.insurancePay = [];
1023
1223
  this.residents = [];
1024
1224
  this.ipdl = [new Value(1, null), new Value(2, 'Да'), new Value(3, 'Нет')];
1025
1225
  this.economySectorCode = [];
1226
+ this.economicActivityType = [];
1026
1227
  this.gender = [new Value(0, null), new Value(1, 'Мужской'), new Value(2, 'Женский')];
1228
+ this.authorityBasis = [];
1027
1229
  this.fontSize = 14;
1028
1230
  this.isFontChangerOpen = false;
1029
1231
  this.isLoading = false;
@@ -1075,10 +1277,41 @@ export class DataStoreClass {
1075
1277
  ids: '',
1076
1278
  },
1077
1279
  ];
1280
+ this.amountArray = [];
1281
+ this.currency = null;
1282
+ this.maxDaysAllArray = [];
1283
+ this.periodArray = [];
1284
+ this.maxDaysFiltered = [];
1285
+ this.dicCountries = [];
1286
+ this.dicAllCountries = [];
1287
+ this.types = [];
1288
+ this.purposes = [];
1289
+ this.workTypes = [];
1290
+ this.sportsTypes = [];
1078
1291
  }
1079
1292
  }
1080
1293
 
1081
1294
  export class FormStoreClass {
1295
+ documentName: string | null;
1296
+ regNumber: string | null;
1297
+ policyNumber: string | null;
1298
+ contractDate: string | null;
1299
+ needToScanSignedContract: boolean;
1300
+ isUploadedSignedContract: boolean;
1301
+ signedContractFormData: any;
1302
+ lfb: {
1303
+ clients: ClientV2[];
1304
+ policyholder: PolicyholderClass;
1305
+ hasAccidentIncidents: boolean;
1306
+ accidentIncidents: AccidentIncidents[];
1307
+ policyholderActivities: PolicyholderActivity[];
1308
+ beneficialOwners: BeneficialOwner[];
1309
+ beneficialOwnersIndex: number;
1310
+ isPolicyholderBeneficialOwner: boolean;
1311
+ clientId: string | null;
1312
+ insuredFile: any;
1313
+ isPanelInside: boolean;
1314
+ };
1082
1315
  additionalInsuranceTerms: AddCover[];
1083
1316
  additionalInsuranceTermsWithout: AddCover[];
1084
1317
  signUrls: SignUrlType[];
@@ -1100,15 +1333,13 @@ export class FormStoreClass {
1100
1333
  surveyByHealthBasePolicyholder: AnketaFirst | null;
1101
1334
  surveyByCriticalBase: AnketaFirst | null;
1102
1335
  surveyByCriticalBasePolicyholder: AnketaFirst | null;
1103
- surveyByHealthSecond: AnketaSecond[] | null;
1104
- surveyByCriticalSecond: AnketaSecond[] | null;
1105
1336
  definedAnswersId: {
1106
1337
  surveyByHealthBase: any;
1107
1338
  surveyByCriticalBase: any;
1108
1339
  surveyByHealthBasePolicyholder: any;
1109
1340
  surveyByCriticalBasePolicyholder: any;
1110
1341
  };
1111
- birthInfos: BirthInfoGKB[];
1342
+ birthInfos: Api.GKB.BirthInfo[];
1112
1343
  SaleChanellPolicy: Value;
1113
1344
  AgentData: AgentData;
1114
1345
  RegionPolicy: Value;
@@ -1120,12 +1351,15 @@ export class FormStoreClass {
1120
1351
  insuredForm: boolean;
1121
1352
  policyholdersRepresentativeForm: boolean;
1122
1353
  productConditionsForm: boolean;
1354
+ calculatorForm: boolean;
1123
1355
  recalculationForm: boolean;
1124
1356
  surveyByHealthBase: boolean;
1125
1357
  surveyByCriticalBase: boolean;
1126
1358
  surveyByHealthBasePolicyholder: boolean;
1127
1359
  surveyByCriticalBasePolicyholder: boolean;
1128
1360
  insuranceDocument: boolean;
1361
+ policyholderActivitiesForm: boolean;
1362
+ accidentStatisticsForm: boolean;
1129
1363
  };
1130
1364
  isPolicyholderInsured: boolean = false;
1131
1365
  isPolicyholderBeneficiary: boolean = false;
@@ -1134,13 +1368,18 @@ export class FormStoreClass {
1134
1368
  isPolicyholderIPDL: boolean = false;
1135
1369
  applicationData: {
1136
1370
  processInstanceId: number | string;
1371
+ regNumber?: string;
1137
1372
  statusCode?: keyof typeof Statuses;
1138
1373
  clientApp?: any;
1374
+ processCode?: number;
1139
1375
  insuredApp?: any;
1376
+ pensionApp?: any;
1377
+ isEnpfSum?: boolean;
1140
1378
  beneficiaryApp?: any;
1141
1379
  beneficialOwnerApp?: any;
1142
1380
  spokesmanApp?: any;
1143
1381
  isTask?: boolean | null;
1382
+ createDate?: string | null;
1144
1383
  policyAppDto?: PolicyAppDto;
1145
1384
  insisWorkDataApp?: InsisWorkDataApp;
1146
1385
  addCoverDto?: AddCover[];
@@ -1164,7 +1403,28 @@ export class FormStoreClass {
1164
1403
  questionnaireByCritical: any[];
1165
1404
  canBeClaimed: boolean | null;
1166
1405
  applicationTaskId: string | null;
1167
- constructor(procuctConditionsTitle?: string) {
1406
+
1407
+ constructor() {
1408
+ this.regNumber = null;
1409
+ this.policyNumber = null;
1410
+ this.contractDate = null;
1411
+ this.documentName = null;
1412
+ this.isUploadedSignedContract = false;
1413
+ this.needToScanSignedContract = false;
1414
+ this.signedContractFormData = null;
1415
+ this.lfb = {
1416
+ clients: [],
1417
+ policyholder: new PolicyholderClass(),
1418
+ hasAccidentIncidents: true,
1419
+ policyholderActivities: [new PolicyholderActivity()],
1420
+ beneficialOwners: [new BeneficialOwner()],
1421
+ beneficialOwnersIndex: 0,
1422
+ isPolicyholderBeneficialOwner: false,
1423
+ accidentIncidents: [],
1424
+ clientId: null,
1425
+ insuredFile: null,
1426
+ isPanelInside: false,
1427
+ };
1168
1428
  this.additionalInsuranceTerms = [];
1169
1429
  this.additionalInsuranceTermsWithout = [];
1170
1430
  this.signUrls = [];
@@ -1186,8 +1446,6 @@ export class FormStoreClass {
1186
1446
  this.surveyByHealthBasePolicyholder = null;
1187
1447
  this.surveyByCriticalBase = null;
1188
1448
  this.surveyByCriticalBasePolicyholder = null;
1189
- this.surveyByHealthSecond = null;
1190
- this.surveyByCriticalSecond = null;
1191
1449
  this.definedAnswersId = {
1192
1450
  surveyByHealthBase: {},
1193
1451
  surveyByCriticalBase: {},
@@ -1214,12 +1472,15 @@ export class FormStoreClass {
1214
1472
  insuredForm: true,
1215
1473
  policyholdersRepresentativeForm: true,
1216
1474
  productConditionsForm: true,
1475
+ calculatorForm: true,
1217
1476
  recalculationForm: true,
1218
1477
  surveyByHealthBase: true,
1219
1478
  surveyByCriticalBase: true,
1220
1479
  surveyByHealthBasePolicyholder: true,
1221
1480
  surveyByCriticalBasePolicyholder: true,
1222
1481
  insuranceDocument: true,
1482
+ policyholderActivitiesForm: true,
1483
+ accidentStatisticsForm: true,
1223
1484
  };
1224
1485
  this.isPolicyholderInsured = false;
1225
1486
  this.isPolicyholderBeneficiary = false;
@@ -1247,3 +1508,229 @@ export class FormStoreClass {
1247
1508
  this.applicationTaskId = null;
1248
1509
  }
1249
1510
  }
1511
+
1512
+ export class Address {
1513
+ country: Value;
1514
+ region: Value;
1515
+ regionType: Value;
1516
+ city: Value;
1517
+ square: string | null;
1518
+ microdistrict: string | null;
1519
+ street: string | null;
1520
+ houseNumber: string | null;
1521
+ kato: string | null;
1522
+ longName: string | null;
1523
+ longNameKz: string | null;
1524
+
1525
+ constructor() {
1526
+ this.country = new Value();
1527
+ this.region = new Value();
1528
+ this.regionType = new Value();
1529
+ this.city = new Value();
1530
+ this.square = null;
1531
+ this.microdistrict = null;
1532
+ this.street = null;
1533
+ this.houseNumber = null;
1534
+ this.kato = null;
1535
+ this.longName = null;
1536
+ this.longNameKz = null;
1537
+ }
1538
+ }
1539
+
1540
+ export class PolicyholderActivity {
1541
+ activityTypeName: string | null;
1542
+ empoloyeeCount: string | null;
1543
+
1544
+ constructor() {
1545
+ this.activityTypeName = null;
1546
+ this.empoloyeeCount = null;
1547
+ }
1548
+ }
1549
+
1550
+ export class BaseGroupClass {
1551
+ id: string | number;
1552
+ longName: string;
1553
+ iin: string;
1554
+ phoneNumber: string;
1555
+ age: string;
1556
+ name: string;
1557
+ nameKz: string;
1558
+ longNameKz: string;
1559
+ citizenship: Value;
1560
+ email: string;
1561
+ resident: Value;
1562
+ taxResidentCountry: Value;
1563
+ addTaxResidency: Value;
1564
+ economySectorCode: Value;
1565
+ hasAttachedFile: boolean;
1566
+ actualAddress: Address;
1567
+ isActualAddressEqualLegalAddres: boolean;
1568
+ legalAddress: Address;
1569
+ identityDocument: {
1570
+ documentType: Value;
1571
+ documentNumber: string;
1572
+ series: string;
1573
+ issuedBy: Value;
1574
+ issuedOn: string;
1575
+ validUntil: string;
1576
+ };
1577
+ bankInfo: BankInfoClass;
1578
+ kbe: string;
1579
+
1580
+ constructor() {
1581
+ this.id = 0;
1582
+ this.longName = '';
1583
+ this.iin = '';
1584
+ this.phoneNumber = '';
1585
+ this.age = '';
1586
+ this.name = '';
1587
+ this.nameKz = '';
1588
+ this.longNameKz = '';
1589
+ this.citizenship = new Value();
1590
+ this.email = '';
1591
+ this.resident = new Value();
1592
+ this.taxResidentCountry = new Value();
1593
+ this.addTaxResidency = new Value();
1594
+ this.economySectorCode = new Value();
1595
+ this.hasAttachedFile = false;
1596
+ this.actualAddress = new Address();
1597
+ this.isActualAddressEqualLegalAddres = true;
1598
+ this.legalAddress = new Address();
1599
+ this.identityDocument = {
1600
+ documentType: new Value(),
1601
+ documentNumber: '',
1602
+ series: '',
1603
+ issuedBy: new Value(),
1604
+ issuedOn: '',
1605
+ validUntil: '',
1606
+ };
1607
+ this.bankInfo = new BankInfoClass();
1608
+ this.kbe = '';
1609
+ }
1610
+ }
1611
+
1612
+ export class PhysGroupClass extends BaseGroupClass {
1613
+ lastName: string;
1614
+ firstName: string;
1615
+ middleName: string;
1616
+ birthDate: string;
1617
+ gender: Value;
1618
+ placeOfBirth: Value;
1619
+ workDetails: { workplace: string; positionRu: string; positionKz: string; jobDuties: string };
1620
+ hasContactPerson: boolean;
1621
+ authorityDetails: {
1622
+ basis: Value;
1623
+ documentNumber: string | null;
1624
+ date: string | null;
1625
+ };
1626
+
1627
+ constructor() {
1628
+ super();
1629
+ this.lastName = '';
1630
+ this.firstName = '';
1631
+ this.middleName = '';
1632
+ this.birthDate = '';
1633
+ this.gender = new Value();
1634
+ this.placeOfBirth = new Value();
1635
+ this.workDetails = { workplace: '', positionRu: '', positionKz: '', jobDuties: '' };
1636
+ this.hasContactPerson = false;
1637
+ this.authorityDetails = {
1638
+ basis: new Value(),
1639
+ documentNumber: null,
1640
+ date: null,
1641
+ };
1642
+ }
1643
+ }
1644
+
1645
+ export class GroupMember extends PhysGroupClass {
1646
+ isLeader: boolean;
1647
+
1648
+ typeOfEconomicActivity: Value;
1649
+ activityTypes: { activityTypeName: string; empoloyeeCount: number }[];
1650
+ beneficalOwnerQuest: { order: number; text: string; answer: boolean | null }[];
1651
+ authoritedPerson: PhysGroupClass;
1652
+ insuredPolicyData: InsuredPolicyType;
1653
+
1654
+ constructor() {
1655
+ super();
1656
+ // Client
1657
+ this.isLeader = false;
1658
+ this.typeOfEconomicActivity = new Value();
1659
+ this.activityTypes = [];
1660
+ this.beneficalOwnerQuest = [
1661
+ {
1662
+ order: 0,
1663
+ text: 'Отметка о наличии/отсутствии физического лица (лиц), которому прямо или косвенно принадлежат более 25 % долей участия в уставном капитале либо размещенных (за вычетом привилегированных и выкупленных обществом) акций юридического лица',
1664
+ answer: null,
1665
+ },
1666
+ {
1667
+ order: 1,
1668
+ text: 'Отметка о наличии/отсутствии физического лица (лиц), осуществляющего контроль над юридическим лицом по иным основаниям',
1669
+ answer: null,
1670
+ },
1671
+ {
1672
+ order: 2,
1673
+ text: 'Отметка о наличии/отсутствии физического лица (лиц) в интересах которого юридическим лицом устанавливаются деловые отношения (совершаются операции)',
1674
+ answer: null,
1675
+ },
1676
+ ];
1677
+ this.authoritedPerson = new PhysGroupClass();
1678
+ // Insured
1679
+ this.insuredPolicyData = {
1680
+ insSum: 0,
1681
+ insSumWithLoad: 0,
1682
+ premium: 0,
1683
+ premiumWithLoad: 0,
1684
+ insuredRisk: {
1685
+ lifeMultiply: 0,
1686
+ lifeAdditive: 0,
1687
+ disabilityMultiply: 0,
1688
+ disabilityAdditive: 0,
1689
+ traumaTableMultiple: 0,
1690
+ accidentalLifeMultiply: 0,
1691
+ accidentalLifeAdditive: 0,
1692
+ criticalMultiply: 0,
1693
+ criticalAdditive: 0,
1694
+ },
1695
+ insuredCoverData: [],
1696
+ };
1697
+ }
1698
+ }
1699
+
1700
+ export class BankInfoClass {
1701
+ bankName: Value;
1702
+ bin: string;
1703
+ iik: string;
1704
+ bik: string;
1705
+ kbe: string;
1706
+
1707
+ constructor() {
1708
+ this.bankName = new Value();
1709
+ this.bin = '';
1710
+ this.iik = '';
1711
+ this.bik = '';
1712
+ this.kbe = '';
1713
+ }
1714
+ }
1715
+
1716
+ export class PolicyholderClass {
1717
+ isIpdl: boolean;
1718
+ clientData: GroupMember;
1719
+
1720
+ constructor() {
1721
+ this.isIpdl = false;
1722
+ this.clientData = new GroupMember();
1723
+ }
1724
+ }
1725
+
1726
+ export class BeneficialOwner {
1727
+ id: string;
1728
+ isIpdl: boolean;
1729
+ beneficialOwnerData: GroupMember;
1730
+
1731
+ constructor() {
1732
+ this.isIpdl = false;
1733
+ this.beneficialOwnerData = new GroupMember();
1734
+ this.id = '';
1735
+ }
1736
+ }