hl-core 0.0.9-beta.50 → 0.0.9-beta.51

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.
@@ -23,12 +23,32 @@
23
23
  </div>
24
24
  <v-btn class="ml-2" icon="mdi-plus !text-[24px]" @click="memberStore.addMember(whichForm)" size="small" color="#A0B3D8" variant="tonal" />
25
25
  </div>
26
+ <base-form-section
27
+ v-if="$dataStore.hasFamilyTiesSection(whichForm)"
28
+ :title="$dataStore.t('pension.familyTies')"
29
+ :class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
30
+ >
31
+ <base-form-toggle v-model="isRelative" :disabled="isDisabled" :title="$dataStore.t('pension.ifHasRelationBeneficiary')" :has-border="false" :show-value="false" />
32
+ <base-fade-transition>
33
+ <div class="flex flex-col gap-[1px]" v-if="isRelative">
34
+ <base-panel-input
35
+ v-model="formStore.applicationData.insuredApp.iin"
36
+ :maska="$maska.iin"
37
+ :readonly="isDisabled"
38
+ :clearable="false"
39
+ :label="$dataStore.t('pension.insuredIIN')"
40
+ append-inner-icon="mdi mdi-chevron-right"
41
+ @append="searchMember"
42
+ />
43
+ </div>
44
+ </base-fade-transition>
45
+ </base-form-section>
26
46
  <base-form-section
27
47
  :title="$dataStore.t('form.personalData')"
28
48
  :class="[memberSetting && memberSetting.has === true && memberSetting.isMultiple === true ? 'rounded-t-0 !mt-[-5px]' : 'mt-[14px]']"
29
49
  >
30
50
  <base-panel-input
31
- v-if="$dataStore.isLifetrip"
51
+ v-if="$dataStore.isLifetrip || $dataStore.isPension"
32
52
  v-model="member.signOfResidency"
33
53
  :value="member.signOfResidency?.nameRu"
34
54
  :label="$dataStore.t('form.signOfResidency')"
@@ -50,7 +70,7 @@
50
70
  :maska="$maska.phone"
51
71
  :readonly="!!isDisabled || !!isIinPhoneDisabled"
52
72
  :clearable="!isDisabled"
53
- :append-inner-icon="otpCondition ? 'mdi mdi-phone-message' : ''"
73
+ :append-inner-icon="otpCondition ? `${$dataStore.isPension ? 'mdi-message-text' : 'mdi mdi-phone-message'}` : ''"
54
74
  @append="openCustomPanel('otp')"
55
75
  @keyup.enter.prevent="otpCondition ? openCustomPanel('otp') : null"
56
76
  :rules="phoneRule"
@@ -115,7 +135,29 @@
115
135
  :maska="$maska.date"
116
136
  append-inner-icon="mdi mdi-calendar-blank-outline"
117
137
  />
118
- <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
138
+ <div v-if="$dataStore.isPension">
139
+ <base-panel-input
140
+ v-model="member.countryOfCitizenship"
141
+ :value="member.countryOfCitizenship?.nameRu"
142
+ :label="$dataStore.t('form.countryOfCitizenship')"
143
+ :readonly="isDisabled"
144
+ :clearable="!isDisabled"
145
+ :rules="$rules.objectRequired"
146
+ append-inner-icon="mdi mdi-chevron-right"
147
+ @append="openPanel($dataStore.t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
148
+ />
149
+ <base-panel-input
150
+ v-model="member.birthPlace"
151
+ :value="member.birthPlace?.nameRu"
152
+ :label="$dataStore.t('form.birthData')"
153
+ :readonly="isDisabled"
154
+ :clearable="!isDisabled"
155
+ :rules="$rules.objectRequired"
156
+ append-inner-icon="mdi mdi-chevron-right"
157
+ @append="openPanel($dataStore.t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
158
+ />
159
+ </div>
160
+ <base-form-input v-if="!$dataStore.isPension" v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
119
161
  <base-panel-input
120
162
  v-model="member.gender"
121
163
  :value="member.gender?.nameRu"
@@ -157,6 +199,27 @@
157
199
  :rules="$rules.required.concat($rules.numbers)"
158
200
  />
159
201
  </base-form-section>
202
+
203
+ <base-form-section
204
+ v-if="$dataStore.isPension && (whichForm === formStore.insuredFormKey || whichForm === formStore.beneficiaryFormKey)"
205
+ :title="$dataStore.t('pension.disabilityInfo')"
206
+ >
207
+ <base-form-toggle v-model="hasDisability" :title="$dataStore.t('pension.ifHasDisability')" :disabled="isDisabled" :has-border="false" />
208
+ <base-animation>
209
+ <div class="flex flex-col gap-[1px]" v-if="hasDisability">
210
+ <base-panel-input
211
+ v-model="member.disabilityGroup"
212
+ :value="member.disabilityGroup?.nameRu"
213
+ :readonly="isDisabled"
214
+ :clearable="!isDisabled"
215
+ :label="$dataStore.t('pension.disabilityGroup')"
216
+ :rules="$rules.objectRequired"
217
+ append-inner-icon="mdi mdi-chevron-right"
218
+ @append="openPanel($dataStore.t('pension.disabilityGroup'), $dataStore.disabilityGroups, 'disabilityGroup', $dataStore.getDisabilityGroups)"
219
+ />
220
+ </div>
221
+ </base-animation>
222
+ </base-form-section>
160
223
  <base-form-section :title="$dataStore.t('policyholdersRepresentative.PowerOfAttorney')" v-if="whichForm === formStore.policyholdersRepresentativeFormKey">
161
224
  <base-form-input
162
225
  v-model.trim="member.fullNameRod"
@@ -427,7 +490,7 @@
427
490
  />
428
491
  </base-fade-transition>
429
492
  <base-panel-input
430
- v-if="!$dataStore.isLifetrip"
493
+ v-if="!$dataStore.isLifetrip && !$dataStore.isPension"
431
494
  v-model="member.signOfResidency"
432
495
  :value="member.signOfResidency?.nameRu"
433
496
  :label="$dataStore.t('form.signOfResidency')"
@@ -464,7 +527,7 @@
464
527
  v-if="hasSignOfIPDL"
465
528
  v-model="member.signOfIPDL"
466
529
  :value="member.signOfIPDL?.nameRu"
467
- :label="$dataStore.t('form.signOfIPDL')"
530
+ :label="$dataStore.isPension ? $dataStore.t('form.signOfPDL') : $dataStore.t('form.signOfIPDL')"
468
531
  :readonly="isDisabled"
469
532
  :clearable="!isDisabled"
470
533
  :rules="$rules.objectRequired"
@@ -472,6 +535,7 @@
472
535
  @append="openPanel($dataStore.t('form.signOfIPDL'), $dataStore.ipdl, 'signOfIPDL')"
473
536
  />
474
537
  <base-panel-input
538
+ v-if="!$dataStore.isPension"
475
539
  v-model="member.countryOfCitizenship"
476
540
  :value="member.countryOfCitizenship?.nameRu"
477
541
  :label="$dataStore.t('form.countryOfCitizenship')"
@@ -503,6 +567,61 @@
503
567
  @append="openPanel($dataStore.t('form.insurancePay'), $dataStore.insurancePay, 'insurancePay', $dataStore.getInsurancePay)"
504
568
  />
505
569
  </base-form-section>
570
+ <base-form-section v-if="$dataStore.hasBankSection(whichForm)" :title="$dataStore.t('bankDetailsForm.title')">
571
+ <base-form-input
572
+ v-model="member.bankInfo.iik"
573
+ :label="$dataStore.t('clients.form.iik')"
574
+ :maska="$maska.iik"
575
+ :readonly="isDisabled"
576
+ :clearable="!isDisabled"
577
+ :rules="$rules.required.concat($rules.iik)"
578
+ />
579
+ <base-panel-input
580
+ v-model="member.bankInfo.bankName"
581
+ :value="member.bankInfo.bankName.nameRu"
582
+ :label="$dataStore.t('clients.form.nameBank')"
583
+ :readonly="isDisabled"
584
+ :clearable="!isDisabled"
585
+ :rules="$rules.objectRequired"
586
+ append-inner-icon="mdi mdi-chevron-right"
587
+ @append="openPanel($dataStore.t('clients.form.nameBank'), [], 'bankInfo', $dataStore.getBanks, '', 'bankName')"
588
+ />
589
+ <base-form-input
590
+ v-model.trim="member.bankInfo.bin"
591
+ :label="$dataStore.t('form.bin')"
592
+ :maska="$maska.iin"
593
+ :readonly="isDisabled"
594
+ :clearable="!isDisabled"
595
+ :rules="$rules.required.concat($rules.iinRight)"
596
+ />
597
+ <base-form-input v-model="member.bankInfo.bik" :label="$dataStore.t('clients.form.bik')" :readonly="isDisabled" :clearable="!isDisabled" :rules="$rules.required" />
598
+ </base-form-section>
599
+ <base-form-section v-if="$dataStore.hasAdditionalDocumentsSection(whichForm)" :title="$dataStore.t('form.phDocuments')">
600
+ <base-file-input
601
+ :label="$dataStore.t('form.identyDocument')"
602
+ :disabled="isDisabled"
603
+ :clearable="!isDisabled"
604
+ icon="mdi-paperclip"
605
+ @input="attachFile($event, '1')"
606
+ :rules="$rules.required"
607
+ />
608
+ <base-file-input
609
+ :label="$dataStore.t('form.bankStatement')"
610
+ :disabled="isDisabled"
611
+ :clearable="!isDisabled"
612
+ icon="mdi-paperclip"
613
+ @input="attachFile($event, '10')"
614
+ :rules="$rules.required"
615
+ />
616
+ <base-file-input
617
+ :label="$dataStore.t('pension.ENPFnote')"
618
+ :disabled="isDisabled"
619
+ :clearable="!isDisabled"
620
+ icon="mdi-paperclip"
621
+ @input="attachFile($event, '8')"
622
+ :rules="$rules.required"
623
+ />
624
+ </base-form-section>
506
625
  <base-form-section :title="$dataStore.t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
507
626
  <base-form-input
508
627
  v-model="member.homePhone"
@@ -635,6 +754,11 @@ export default {
635
754
  const searchQuery = ref<string>('');
636
755
  const fileData = ref<{ file: any }>();
637
756
  const imageDataList = ref<string[]>([]);
757
+ const isRelative = ref<boolean>(false);
758
+
759
+ const currentPanelDeep = ref<string>();
760
+ const currentPanelSubDeep = ref<string>();
761
+ const hasDisability = ref<boolean>(false);
638
762
 
639
763
  const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
640
764
  const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
@@ -649,6 +773,10 @@ export default {
649
773
  case formStore.policyholderFormKey:
650
774
  return true;
651
775
  case formStore.insuredFormKey:
776
+ if (dataStore.isPension) {
777
+ return true;
778
+ }
779
+ return route.params.taskId !== '0';
652
780
  case formStore.beneficiaryFormKey:
653
781
  case formStore.beneficialOwnerFormKey:
654
782
  case formStore.policyholdersRepresentativeFormKey:
@@ -722,7 +850,7 @@ export default {
722
850
  return true;
723
851
  });
724
852
  const hasRelationDegree = computed(() => {
725
- if (dataStore.isLifetrip) {
853
+ if (dataStore.isLifetrip || dataStore.isPension) {
726
854
  return false;
727
855
  }
728
856
  if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
@@ -731,7 +859,7 @@ export default {
731
859
  return false;
732
860
  });
733
861
  const hasFamilyStatus = computed(() => {
734
- if (dataStore.isLifetrip) {
862
+ if (dataStore.isLifetrip || dataStore.isPension) {
735
863
  return false;
736
864
  }
737
865
  if (whichForm.value === formStore.beneficiaryFormKey) {
@@ -833,8 +961,10 @@ export default {
833
961
  switch (whichForm.value) {
834
962
  case formStore.policyholderFormKey:
835
963
  return route.params.taskId === '0';
836
- case formStore.policyholdersRepresentativeFormKey:
837
964
  case formStore.insuredFormKey:
965
+ if (dataStore.isPension) return route.params.taskId === '0';
966
+ return route.query.id === '0';
967
+ case formStore.policyholdersRepresentativeFormKey:
838
968
  case formStore.beneficiaryFormKey:
839
969
  case formStore.beneficialOwnerFormKey:
840
970
  return route.query.id === '0';
@@ -886,7 +1016,7 @@ export default {
886
1016
  dataStore.rightPanel.open = true;
887
1017
  };
888
1018
 
889
- const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string) => {
1019
+ const openPanel = async (title: string, list: Value[], key: string, asyncFunction?: Function, filterKey?: string, deepKey?: string, subDeepKey?: string) => {
890
1020
  if (!isDisabled.value) {
891
1021
  isSearchOpen.value = false;
892
1022
  isDocumentOpen.value = false;
@@ -907,10 +1037,35 @@ export default {
907
1037
  let newList = list;
908
1038
  if (asyncFunction) {
909
1039
  isPanelLoading.value = true;
910
- newList = await asyncFunction(filterKey, member.value);
1040
+ const filterKeys: any = {};
1041
+ if (!!subDeepKey) {
1042
+ filterKeys.key = key;
1043
+ filterKeys.deepKey = deepKey;
1044
+ filterKeys.subDeepKey = filterKey;
1045
+ } else {
1046
+ if (!!deepKey) {
1047
+ filterKeys.key = key;
1048
+ filterKeys.deepKey = filterKey;
1049
+ } else {
1050
+ filterKeys.key = filterKey;
1051
+ }
1052
+ }
1053
+ newList = await asyncFunction(filterKey, member.value, filterKeys);
911
1054
  }
912
1055
  panelList.value = filterList(newList, key);
913
- panelValue.value = member.value[currentPanel.value];
1056
+ panelValue.value = !!deepKey
1057
+ ? !!subDeepKey
1058
+ ? //@ts-ignore
1059
+ member.value[currentPanel.value][deepKey as any][subDeepKey as any]
1060
+ : //@ts-ignore
1061
+ member.value[currentPanel.value][deepKey as any]
1062
+ : member.value[currentPanel.value];
1063
+ if (!!deepKey) {
1064
+ currentPanelDeep.value = deepKey;
1065
+ if (!!subDeepKey) {
1066
+ currentPanelSubDeep.value = subDeepKey;
1067
+ }
1068
+ }
914
1069
  isPanelLoading.value = false;
915
1070
  } else {
916
1071
  dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
@@ -934,11 +1089,24 @@ export default {
934
1089
  };
935
1090
 
936
1091
  const pickPanelValue = (item: Value) => {
1092
+ if (!currentPanel.value) return;
937
1093
  if (formStore.isDisabled[whichForm.value as keyof typeof formStore.isDisabled] === false) {
938
1094
  dataStore.rightPanel.open = false;
939
1095
  isPanelOpen.value = false;
940
- // @ts-ignore
941
- member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
1096
+ if (!!currentPanelDeep.value) {
1097
+ if (!!currentPanelSubDeep.value) {
1098
+ //@ts-ignore
1099
+ member.value[currentPanel.value][currentPanelDeep.value][currentPanelSubDeep.value] = item.nameRu === null ? new Value() : item;
1100
+ } else {
1101
+ //@ts-ignore
1102
+ member.value[currentPanel.value][currentPanelDeep.value] = item.nameRu === null ? new Value() : item;
1103
+ }
1104
+ } else {
1105
+ // @ts-ignore
1106
+ member.value[currentPanel.value] = item.nameRu === null ? new Value() : item;
1107
+ }
1108
+ currentPanelDeep.value = '';
1109
+ currentPanelSubDeep.value = '';
942
1110
  } else {
943
1111
  dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
944
1112
  }
@@ -967,12 +1135,12 @@ export default {
967
1135
  }
968
1136
  };
969
1137
 
970
- const attachFile = (event: InputEvent) => {
1138
+ const attachFile = (event: InputEvent, code?: string) => {
971
1139
  if (event.target) {
972
- fileData.value = { file: (event.target as HTMLInputElement).files };
1140
+ fileData.value = code ? { file: (event.target as HTMLInputElement).files } : { file: (event.target as HTMLInputElement).files };
973
1141
  } else {
974
1142
  if (event.dataTransfer) {
975
- fileData.value = { file: (event.dataTransfer as DataTransfer).files };
1143
+ fileData.value = code ? { file: (event.dataTransfer as DataTransfer).files } : { file: (event.dataTransfer as DataTransfer).files };
976
1144
  }
977
1145
  }
978
1146
  };
@@ -1191,10 +1359,10 @@ export default {
1191
1359
  }
1192
1360
  const isInsured = formStore.isPolicyholderInsured;
1193
1361
  const remoteIsInsured = ref<boolean | null>(null);
1194
- if (whichForm.value == formStore.policyholderFormKey) {
1362
+ if (whichForm.value == formStore.policyholderFormKey || (dataStore.isPension && whichForm.value == formStore.insuredFormKey)) {
1195
1363
  if (route.params.taskId === '0') {
1196
1364
  try {
1197
- const taskId = await dataStore.startApplication(member.value);
1365
+ const taskId = await dataStore.startApplication(member.value, dataStore.isPension ? (String(route.query.type) === 'joint' ? 4 : 1) : undefined);
1198
1366
  if (typeof taskId === 'string') {
1199
1367
  await dataStore.getApplicationData(taskId, false, false, false, false);
1200
1368
  remoteIsInsured.value = formStore.applicationData.clientApp.isInsured;
@@ -1243,6 +1411,25 @@ export default {
1243
1411
  }
1244
1412
  if (whichForm.value === formStore.insuredFormKey) {
1245
1413
  wasInsuredAction.value = true;
1414
+ if (dataStore.isPension) {
1415
+ formStore.applicationData.pensionApp = {
1416
+ ...formStore.applicationData.pensionApp,
1417
+ account: member.value.bankInfo.iik,
1418
+ bankBik: member.value.bankInfo.bik,
1419
+ bankBin: member.value.bankInfo.bankName.ids,
1420
+ bankId: member.value.bankInfo.bankName.id,
1421
+ bankName: member.value.bankInfo.bankName.nameRu,
1422
+ guaranteedPeriod: 0,
1423
+ amount: 0,
1424
+ compulsoryContractAmount: 0,
1425
+ voluntaryContractAmount: 0,
1426
+ ownFundsRaisAmount: 0,
1427
+ compulsoryProfContractAmount: 0,
1428
+ };
1429
+ const isApplicationSaved = await dataStore.setApplication();
1430
+ if (isApplicationSaved === false) return;
1431
+ dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'), 5000);
1432
+ }
1246
1433
  }
1247
1434
  await router.replace({
1248
1435
  name: route.name!,
@@ -1266,6 +1453,9 @@ export default {
1266
1453
  };
1267
1454
 
1268
1455
  const validateAgreement = () => {
1456
+ if (dataStore.isPension && whichForm.value === formStore.policyholdersRepresentativeFormKey) {
1457
+ return true;
1458
+ }
1269
1459
  if (whichForm.value === formStore.beneficiaryFormKey) {
1270
1460
  if (member.value.age !== null && Number(member.value.age) < 18) {
1271
1461
  return true;
@@ -1309,6 +1499,22 @@ export default {
1309
1499
  if (typeof ESBDResponse === 'object' && ESBDResponse.errorCode === 0) {
1310
1500
  member.value.verifyType = 'ESBD';
1311
1501
  member.value.verifyDate = ESBDResponse.verifiedDate;
1502
+
1503
+ if (member.value.bankInfo.iik.length === useMask().iik.length) {
1504
+ const isValidIik = await dataStore.checkAccountNumber(member.value.bankInfo.iik);
1505
+ if (isValidIik === false) {
1506
+ dataStore.showToaster('error', dataStore.t('error.notValidIik'));
1507
+ member.value.bankInfo.iik = '';
1508
+ isSubmittingForm.value = false;
1509
+ return;
1510
+ }
1511
+ if (formStore.applicationData.pensionApp) {
1512
+ formStore.applicationData.pensionApp.account = member.value.bankInfo.iik;
1513
+ formStore.applicationData.pensionApp.bankBik = member.value.bankInfo.bik;
1514
+ formStore.applicationData.pensionApp.bankBin = member.value.bankInfo.bin;
1515
+ formStore.applicationData.pensionApp.bankId = member.value.bankInfo.bankName.id;
1516
+ }
1517
+ }
1312
1518
  const hasMemberSaved = await saveMember();
1313
1519
  } else {
1314
1520
  dataStore.isLoading = false;
@@ -1473,8 +1679,8 @@ export default {
1473
1679
  // if (filteredDocuments && filteredDocuments.length) memberDocument.value = filteredDocuments[0];
1474
1680
  }
1475
1681
  await setDefaultValues();
1682
+ if (Number(formStore.applicationData.processCode) === 4) dataStore.members.insuredApp.isMultiple = true;
1476
1683
  };
1477
-
1478
1684
  onMounted(async () => {
1479
1685
  await onInit();
1480
1686
  });
@@ -1545,6 +1751,8 @@ export default {
1545
1751
  isSearchOpen.value = false;
1546
1752
  isOtpPanelOpen.value = false;
1547
1753
  dataStore.panelAction = null;
1754
+ currentPanelDeep.value = '';
1755
+ currentPanelSubDeep.value = '';
1548
1756
  }
1549
1757
  },
1550
1758
  { immediate: true },
@@ -1579,6 +1787,17 @@ export default {
1579
1787
  },
1580
1788
  );
1581
1789
  }
1790
+ if (dataStore.isPension) {
1791
+ watch(
1792
+ () => member.value.bankInfo.bankName,
1793
+ val => {
1794
+ if (val) {
1795
+ member.value.bankInfo.bik = val.code as string;
1796
+ member.value.bankInfo.bin = reformatIin(val.ids as string);
1797
+ }
1798
+ },
1799
+ );
1800
+ }
1582
1801
 
1583
1802
  return {
1584
1803
  // State
@@ -1605,8 +1824,9 @@ export default {
1605
1824
  selectedIndex,
1606
1825
  selectedFamilyMember,
1607
1826
  sameAddress,
1827
+ hasDisability,
1828
+ isRelative,
1608
1829
  imageDataList,
1609
-
1610
1830
  // Computed
1611
1831
  whichForm,
1612
1832
  whichIndex,