hl-core 0.0.10-beta.26 → 0.0.10-beta.28

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.
package/api/base.api.ts CHANGED
@@ -975,6 +975,16 @@ export class ApiClass {
975
975
  });
976
976
  }
977
977
 
978
+ async getParentContractData(policyId: string) {
979
+ return await this.axiosCall<{ bin: string; name: string }>({
980
+ method: Methods.GET,
981
+ url: `/${this.productUrl}/api/Application/GetParentContractData`,
982
+ params: {
983
+ policyId,
984
+ },
985
+ });
986
+ }
987
+
978
988
  pensionannuityNew = {
979
989
  base: '/pensionannuityNew',
980
990
  getEnpfRedirectUrl: async (id: string) => {
@@ -65,11 +65,6 @@ export default function (axios: AxiosInstance) {
65
65
  dataStore.sendToParent(constants.postActions.Error401, 401);
66
66
  }
67
67
  }
68
- if (error.response.status >= 500) {
69
- if (router.currentRoute.value.name !== 'Auth') {
70
- dataStore.showToaster('error', error.stack ?? dataStore.t('toaster.error'), 5000);
71
- }
72
- }
73
68
  if (error.response.status === 403 && error.response.config.url) {
74
69
  dataStore.showToaster('error', `Нет доступа на запрос: ${error.response.config.url.substring(error.response.config.url.lastIndexOf('/') + 1)}`, 5000);
75
70
  }
@@ -139,31 +139,43 @@ export default defineComponent({
139
139
  (route.params.taskId !== '0' && (!dataStore.isProcessEditable(formStore.applicationData.statusCode) || !dataStore.isTask())),
140
140
  );
141
141
  const isSaleChanellReadonly = computed(() => {
142
- if (dataStore.isGons) return isReadonly.value && dataStore.isServiceManager();
142
+ if (!isReadonly.value) {
143
+ if (dataStore.isGons) return !dataStore.isServiceManager();
144
+ }
143
145
  return isReadonly.value;
144
146
  });
145
147
  const isRegionReadonly = computed(() => {
146
- if (dataStore.isGons) return isReadonly.value && (dataStore.isServiceManager() || dataStore.isAgent());
148
+ if (!isReadonly.value) {
149
+ if (dataStore.isGons) return !dataStore.isServiceManager() && !dataStore.isAgent();
150
+ }
147
151
  return isReadonly.value;
148
152
  });
149
153
  const isManagerReadonly = computed(() => {
150
- if (dataStore.isGons) return isReadonly.value && dataStore.isServiceManager();
154
+ if (!isReadonly.value) {
155
+ if (dataStore.isGons) return !dataStore.isServiceManager();
156
+ }
151
157
  return isReadonly.value;
152
158
  });
153
159
  const isAgentReadonly = computed(() => {
154
- if (dataStore.isGons || dataStore.isPension) return isReadonly.value && dataStore.isServiceManager();
160
+ if (!isReadonly.value) {
161
+ if (dataStore.isGons) return !dataStore.isServiceManager();
162
+ if (dataStore.isPension) return !dataStore.isManager();
163
+ }
155
164
  return isReadonly.value;
156
165
  });
157
166
  const isSaleChanellShown = computed(() => {
167
+ if (dataStore.isGons) return !dataStore.isAgent();
158
168
  return true;
159
169
  });
160
170
  const isRegionShown = computed(() => {
161
171
  return true;
162
172
  });
163
173
  const isManagerShown = computed(() => {
174
+ if (dataStore.isGons) return !dataStore.isAgent();
164
175
  return true;
165
176
  });
166
177
  const isAgentShown = computed(() => {
178
+ if (dataStore.isGons) return !dataStore.isAgent();
167
179
  if (dataStore.isPension) return dataStore.isServiceManager();
168
180
  return true;
169
181
  });
@@ -124,7 +124,7 @@
124
124
  <base-form-input v-model.trim="member.registrationStreet" :rules="$rules.required" :label="$dataStore.t('form.Street')" :readonly="disabled" :clearable="!disabled" />
125
125
  <base-form-input
126
126
  v-model.trim="member.registrationNumberHouse"
127
- :rules="$rules.required"
127
+ :rules="[...$rules.required, $rules.lengthLimit(member.registrationNumberHouse, 10)]"
128
128
  :label="$dataStore.t('form.NumberHouse')"
129
129
  :readonly="disabled"
130
130
  :clearable="!disabled"
@@ -52,8 +52,8 @@
52
52
  v-model="member.signOfResidency"
53
53
  :value="member.signOfResidency?.nameRu"
54
54
  :label="$dataStore.t('form.signOfResidency')"
55
- :readonly="isDisabled"
56
- :clearable="!isDisabled"
55
+ :readonly="isDisabled || isDataFromGov"
56
+ :clearable="!isDisabled && !isDataFromGov"
57
57
  :rules="residencyRule"
58
58
  append-inner-icon="mdi mdi-chevron-right"
59
59
  @append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
@@ -68,8 +68,8 @@
68
68
  v-model="member.phoneNumber"
69
69
  :label="$dataStore.t('form.phoneNumber')"
70
70
  :maska="$maska.phone"
71
- :readonly="!!isDisabled || !!isIinPhoneDisabled"
72
- :clearable="!isDisabled"
71
+ :readonly="!!isDisabled || !!isIinPhoneDisabled || !!isDataFromGov"
72
+ :clearable="!isDisabled && !isIinPhoneDisabled && !isDataFromGov"
73
73
  :append-inner-icon="otpCondition ? `${$dataStore.isPension ? 'mdi-message-text' : 'mdi mdi-phone-message'}` : ''"
74
74
  @append="openCustomPanel('otp')"
75
75
  @keyup.enter.prevent="otpCondition ? openCustomPanel('otp') : null"
@@ -79,8 +79,8 @@
79
79
  v-model="member.iin"
80
80
  :label="$dataStore.t('form.iin')"
81
81
  :maska="$maska.iin"
82
- :readonly="!!isDisabled || !!isIinPhoneDisabled || !!member.parsedDocument?.iin"
83
- :clearable="!isDisabled"
82
+ :readonly="!!isDisabled || !!isIinPhoneDisabled || !!member.parsedDocument?.iin || !!isDataFromGov"
83
+ :clearable="!isDisabled && !isIinPhoneDisabled && !member.parsedDocument?.iin && !isDataFromGov"
84
84
  :append-inner-icon="hasMemberSearch || !isNonResident ? (hasDocumentReader ? 'mdi mdi-credit-card-scan-outline' : 'mdi mdi-magnify') : ''"
85
85
  @append="searchMember"
86
86
  @input="onIinInput"
@@ -88,33 +88,33 @@
88
88
  />
89
89
  <base-form-input
90
90
  v-model.trim="member.lastName"
91
- :readonly="isDisabled || isFromGBD || !!member.parsedDocument?.lastName"
92
- :clearable="!isDisabled"
91
+ :readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.lastName"
92
+ :clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.lastName"
93
93
  :label="$dataStore.t('form.lastName')"
94
94
  :rules="$rules.required.concat($rules.cyrillic)"
95
95
  />
96
96
  <base-form-input
97
97
  v-model.trim="member.firstName"
98
- :readonly="isDisabled || isFromGBD || !!member.parsedDocument?.firstName"
99
- :clearable="!isDisabled"
98
+ :readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.firstName"
99
+ :clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.firstName"
100
100
  :label="$dataStore.t('form.firstName')"
101
101
  :rules="$rules.required.concat($rules.cyrillic)"
102
- :append-inner-icon="hasMemberSearch || isNonResident ? 'mdi mdi-magnify' : ''"
102
+ :append-inner-icon="isNonResident ? 'mdi mdi-magnify' : ''"
103
103
  @append="isNonResident && searchMember"
104
104
  />
105
105
  <base-form-input
106
106
  v-if="hasMiddleName"
107
107
  v-model.trim="member.middleName"
108
- :readonly="isDisabled || isFromGBD || !!member.parsedDocument?.middleName"
109
- :clearable="!isDisabled"
108
+ :readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.middleName"
109
+ :clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.middleName"
110
110
  :label="$dataStore.t('form.middleName')"
111
111
  :rules="$rules.cyrillicNonRequired"
112
112
  />
113
113
  <base-form-input
114
114
  v-if="$dataStore.isLifetrip"
115
115
  v-model.trim="member.lastNameLat"
116
- :readonly="isDisabled || isFromGBD"
117
- :clearable="!isDisabled"
116
+ :readonly="isDisabled || isDataFromGov"
117
+ :clearable="!isDisabled && !isDataFromGov"
118
118
  :label="$dataStore.t('form.lastNameLat')"
119
119
  :rules="$rules.required.concat($rules.latin)"
120
120
  :hint="$dataStore.t('labels.checkWithDoc')"
@@ -122,16 +122,16 @@
122
122
  <base-form-input
123
123
  v-if="$dataStore.isLifetrip"
124
124
  v-model.trim="member.firstNameLat"
125
- :readonly="isDisabled || isFromGBD"
126
- :clearable="!isDisabled"
125
+ :readonly="isDisabled || isDataFromGov"
126
+ :clearable="!isDisabled && !isDataFromGov"
127
127
  :label="$dataStore.t('form.firstNameLat')"
128
128
  :rules="$rules.required.concat($rules.latin)"
129
129
  :hint="$dataStore.t('labels.checkWithDoc')"
130
130
  />
131
131
  <base-form-input
132
132
  v-model="member.birthDate"
133
- :readonly="isDisabled || isFromGBD || !!member.parsedDocument?.birthDate"
134
- :clearable="!isDisabled"
133
+ :readonly="isDisabled || isDataFromGov || !!member.parsedDocument?.birthDate"
134
+ :clearable="!isDisabled && !isDataFromGov && !member.parsedDocument?.birthDate"
135
135
  :label="$dataStore.t('form.birthDate')"
136
136
  :rules="birthDateRule"
137
137
  :maska="$maska.date"
@@ -163,8 +163,8 @@
163
163
  <base-panel-input
164
164
  v-model="member.gender"
165
165
  :value="member.gender?.nameRu"
166
- :readonly="isDisabled || isFromGBD"
167
- :clearable="!isDisabled && !isFromGBD"
166
+ :readonly="isDisabled || isDataFromGov"
167
+ :clearable="!isDisabled && !isDataFromGov"
168
168
  :label="$dataStore.t('form.gender')"
169
169
  :rules="$rules.objectRequired"
170
170
  append-inner-icon="mdi mdi-chevron-right"
@@ -417,7 +417,7 @@
417
417
  />
418
418
  <base-form-input
419
419
  v-model.trim="member.registrationNumberHouse"
420
- :rules="$rules.required"
420
+ :rules="[...$rules.required, $rules.lengthLimit(member.registrationNumberHouse, 10)]"
421
421
  :readonly="isDisabled"
422
422
  :clearable="!isDisabled"
423
423
  :label="$dataStore.t('form.NumberHouse')"
@@ -463,8 +463,8 @@
463
463
  v-model="member.documentType"
464
464
  :value="member.documentType?.nameRu"
465
465
  :label="$dataStore.t('form.documentType')"
466
- :readonly="isDisabled"
467
- :clearable="!isDisabled"
466
+ :readonly="isDisabled || isDataFromGov"
467
+ :clearable="!isDisabled && !isDataFromGov"
468
468
  :rules="$rules.objectRequired"
469
469
  append-inner-icon="mdi mdi-chevron-right"
470
470
  @append="openPanel($dataStore.t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
@@ -472,8 +472,8 @@
472
472
  <base-form-input
473
473
  v-model.trim="member.documentNumber"
474
474
  :label="$dataStore.t('form.documentNumber')"
475
- :readonly="isDisabled || !!member.parsedDocument?.documentNumber"
476
- :clearable="!isDisabled"
475
+ :readonly="isDisabled || !!member.parsedDocument?.documentNumber || isDataFromGov"
476
+ :clearable="!isDisabled && !member.parsedDocument?.documentNumber && !isDataFromGov"
477
477
  :rules="$rules.required"
478
478
  />
479
479
  <!-- <base-file-input v-if="!memberDocument" :disabled="isDisabled" :clearable="!isDisabled" @input="attachFile($event)" />
@@ -485,8 +485,8 @@
485
485
  v-model="member.documentIssuers"
486
486
  :value="member.documentIssuers?.nameRu"
487
487
  :label="$dataStore.t('form.documentIssuers')"
488
- :readonly="isDisabled || !!member.parsedDocument?.documentIssuer"
489
- :clearable="!isDisabled"
488
+ :readonly="isDisabled || !!member.parsedDocument?.documentIssuer || isDataFromGov"
489
+ :clearable="!isDisabled && !member.parsedDocument?.documentIssuer && !isDataFromGov"
490
490
  :rules="$rules.objectRequired"
491
491
  append-inner-icon="mdi mdi-chevron-right"
492
492
  @append="openPanel($dataStore.t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
@@ -494,8 +494,8 @@
494
494
  <base-form-input
495
495
  v-model="member.documentDate"
496
496
  :label="$dataStore.t('form.documentDate')"
497
- :readonly="isDisabled || !!member.parsedDocument?.documentIssueDate"
498
- :clearable="!isDisabled"
497
+ :readonly="isDisabled || !!member.parsedDocument?.documentIssueDate || isDataFromGov"
498
+ :clearable="!isDisabled && !member.parsedDocument?.documentIssueDate && !isDataFromGov"
499
499
  :rules="$rules.required.concat($rules.date)"
500
500
  :maska="$maska.date"
501
501
  append-inner-icon="mdi mdi-calendar-blank-outline"
@@ -505,8 +505,8 @@
505
505
  v-if="member.documentType.ids !== 'SBI'"
506
506
  v-model="member.documentExpire"
507
507
  :label="$dataStore.t('form.documentExpire')"
508
- :readonly="isDisabled || !!member.parsedDocument?.documentExpireDate"
509
- :clearable="!isDisabled"
508
+ :readonly="isDisabled || !!member.parsedDocument?.documentExpireDate || isDataFromGov"
509
+ :clearable="!isDisabled && !member.parsedDocument?.documentExpireDate && !isDataFromGov"
510
510
  :rules="$rules.required.concat($rules.date)"
511
511
  :maska="$maska.date"
512
512
  append-inner-icon="mdi mdi-calendar-blank-outline"
@@ -517,8 +517,8 @@
517
517
  v-model="member.signOfResidency"
518
518
  :value="member.signOfResidency?.nameRu"
519
519
  :label="$dataStore.t('form.signOfResidency')"
520
- :readonly="isDisabled"
521
- :clearable="!isDisabled"
520
+ :readonly="isDisabled || isDataFromGov"
521
+ :clearable="!isDisabled && !isDataFromGov"
522
522
  :rules="residencyRule"
523
523
  append-inner-icon="mdi mdi-chevron-right"
524
524
  @append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
@@ -844,6 +844,7 @@ export default {
844
844
  const isPanelLoading = ref<boolean>(false);
845
845
  const isChangingMember = ref<boolean>(false);
846
846
  const isNonResident = computed(() => !useEnv().isProduction && dataStore.isPension && member.value.signOfResidency.ids === '500011.2');
847
+ const isDataFromGov = computed(() => member.value.verifyType === 'GBDFL' || member.value.verifyType === 'ESBD' || !!member.value.gosPersonData);
847
848
  const familyDialog = ref<boolean>(false);
848
849
  const deletionDialog = ref<boolean>(false);
849
850
  const documentChooseDialog = ref<boolean>(false);
@@ -870,7 +871,6 @@ export default {
870
871
  const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value));
871
872
  const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
872
873
  const isIinPhoneDisabled = computed(() => member.value.hasAgreement);
873
- const isFromGBD = computed(() => !!member.value.gosPersonData);
874
874
  const gbdDocuments = computed(() => {
875
875
  if (hasGBDFLDocSelection && !!member.value.gosPersonData && !!member.value.gosPersonData.documents) {
876
876
  const documents = Array.isArray(member.value.gosPersonData.documents.document)
@@ -2157,7 +2157,6 @@ export default {
2157
2157
  isDisabled,
2158
2158
  isTask,
2159
2159
  isIinPhoneDisabled,
2160
- isFromGBD,
2161
2160
  showSaveButton,
2162
2161
  hasGBDFL,
2163
2162
  hasInsis,
@@ -2174,6 +2173,7 @@ export default {
2174
2173
  gbdDocuments,
2175
2174
  hasGBDFLDocSelection,
2176
2175
  isNonResident,
2176
+ isDataFromGov,
2177
2177
 
2178
2178
  // Rules
2179
2179
  ageRule,
@@ -56,7 +56,7 @@
56
56
  </div>
57
57
  </base-form-section>
58
58
  <base-form-section
59
- v-if="isUnderwriterRole && whichProduct !== 'lifebusiness' && whichProduct !== 'gns' && whichProduct !== 'pensionannuitynew'"
59
+ v-if="isUnderwriterRole && whichProduct !== 'lifebusiness' && whichProduct !== 'gns' && whichProduct !== 'pensionannuitynew' && whichProduct !== 'balam'"
60
60
  :title="$dataStore.t('recalculationInfo')"
61
61
  >
62
62
  <base-form-input
@@ -849,7 +849,8 @@ export default defineComponent({
849
849
  whichProduct.value === 'liferenta' ||
850
850
  whichProduct.value === 'lifebusiness' ||
851
851
  whichProduct.value === 'amuletlife' ||
852
- whichProduct.value === 'gns'
852
+ whichProduct.value === 'gns' ||
853
+ whichProduct.value === 'balam'
853
854
  ) {
854
855
  return false;
855
856
  }
@@ -18,6 +18,7 @@ export const constants = Object.freeze({
18
18
  gns: 16,
19
19
  prepensionannuity: 18,
20
20
  pensionannuitynew: 19,
21
+ balam: 21,
21
22
  },
22
23
  amlProducts: {
23
24
  checkcontragent: 1,
@@ -795,6 +795,9 @@ export class RoleController {
795
795
  isHeadOfDso = () => {
796
796
  return this.isRole(constants.roles.HeadOfDso);
797
797
  };
798
+ isUrsp = () => {
799
+ return this.isRole(constants.roles.URSP);
800
+ };
798
801
  hasAccess = () => {
799
802
  const baseAccessRoles = this.isAdmin() || this.isSupport() || this.isAnalyst() || this.isDrn();
800
803
  return {
@@ -830,7 +833,8 @@ export class RoleController {
830
833
  this.isDsoDirector() ||
831
834
  this.isAccountantDirector() ||
832
835
  this.isHeadAdjuster() ||
833
- this.isHeadOfDso(),
836
+ this.isHeadOfDso() ||
837
+ this.isUrsp(),
834
838
  };
835
839
  };
836
840
  }
package/locales/ru.json CHANGED
@@ -873,7 +873,8 @@
873
873
  "agePrePensionInsured": "Пороговое значение по возрасту с 55 по 63",
874
874
  "checkDate": "Укажите корректную дату",
875
875
  "searchQueryLen": "Поиск должности должен осуществляться по запросу не менее чем из {len} символов",
876
- "fixInsSumLimit": "Фиксированная сумма не должна превышать {sum}тг"
876
+ "fixInsSumLimit": "Фиксированная сумма не должна превышать {sum}тг",
877
+ "lengthLimit": "Превышен лимит символов. Введите текст длиной не более {len} символов"
877
878
  },
878
879
  "code": "КСЭ",
879
880
  "fontSize": "Размер шрифта",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hl-core",
3
- "version": "0.0.10-beta.26",
3
+ "version": "0.0.10-beta.28",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "nuxt.config.ts",
@@ -63,6 +63,7 @@ export const useDataStore = defineStore('data', {
63
63
  isCheckContract: state => state.product === 'checkcontract',
64
64
  isCheckContragent: state => state.product === 'checkcontragent',
65
65
  isPrePension: state => state.product === 'prepensionannuity',
66
+ isBalam: state => state.product === 'balam',
66
67
  isDSO: state => state.product === 'dso',
67
68
  isUU: state => state.product === 'uu',
68
69
  hasClientAnketa: state => state.formStore.additionalInsuranceTerms.find(i => i.coverTypeCode === 10),
@@ -2831,7 +2832,7 @@ export const useDataStore = defineStore('data', {
2831
2832
  },
2832
2833
  async validateAllMembers(taskId: string, localCheck: boolean = false) {
2833
2834
  const policyholderDoc = this.formStore.signedDocumentList.find(
2834
- i => i.iin === String(this.formStore.policyholderForm.iin).replaceAll('-', '') && (i.fileTypeCode === '1' || i.fileTypeCode === '2'),
2835
+ i => i.iin === String(this.formStore.policyholderForm.iin).replaceAll('-', '') && (i.fileTypeCode === '1' || i.fileTypeCode === '2' || i.fileTypeCode === '4'),
2835
2836
  );
2836
2837
  if (taskId === '0') {
2837
2838
  this.showToaster('error', this.t('toaster.needToRunStatement'), 2000);
@@ -3779,7 +3780,7 @@ export const useDataStore = defineStore('data', {
3779
3780
  }
3780
3781
  },
3781
3782
  hasJobSection(whichForm: keyof typeof StoreMembers) {
3782
- if (this.isLifetrip || this.isPension) return false;
3783
+ if (this.isLifetrip || this.isPension || this.isBalam) return false;
3783
3784
  switch (whichForm) {
3784
3785
  case this.formStore.beneficiaryFormKey:
3785
3786
  case this.formStore.beneficialOwnerFormKey:
package/store/rules.ts CHANGED
@@ -285,4 +285,10 @@ export const rules = {
285
285
  }
286
286
  return true;
287
287
  },
288
+ lengthLimit(v: any, limit: number) {
289
+ if (!!v && typeof v === 'string' && v.length <= limit) {
290
+ return true;
291
+ }
292
+ return t('rules.lengthLimit', { len: limit });
293
+ },
288
294
  };
package/types/enum.ts CHANGED
@@ -104,6 +104,7 @@ export enum Roles {
104
104
  AccountantDirector = 'AccountantDirector',
105
105
  ManagerAuletti = 'ManagerAuletti',
106
106
  HeadOfDso = 'HeadOfDso',
107
+ URSP = 'URSP',
107
108
  }
108
109
 
109
110
  export enum Statuses {
package/types/index.ts CHANGED
@@ -30,7 +30,8 @@ export type Projects =
30
30
  | 'uu'
31
31
  | 'auletti'
32
32
  | 'lka-auletti'
33
- | 'prepensionannuity';
33
+ | 'prepensionannuity'
34
+ | 'balam';
34
35
  export type MemberKeys = keyof ReturnType<typeof useFormStore>;
35
36
  export type MemberFormTypes = 'policyholderForm' | 'insuredForm' | 'beneficiaryForm' | 'beneficialOwnerForm' | 'policyholdersRepresentativeForm' | 'productConditionsForm';
36
37
  export type SingleMember = 'policyholderForm' | 'policyholdersRepresentativeForm';