hl-core 0.0.10-beta.30 → 0.0.10-beta.32
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/README.md +0 -2
- package/api/base.api.ts +41 -4
- package/components/Form/ManagerAttachment.vue +1 -2
- package/components/Input/Datepicker.vue +5 -0
- package/components/Input/FormInput.vue +5 -0
- package/components/Input/RoundedInput.vue +2 -0
- package/components/Pages/Documents.vue +191 -56
- package/components/Pages/MemberForm.vue +104 -116
- package/components/Pages/ProductConditions.vue +513 -124
- package/components/Panel/PanelHandler.vue +64 -49
- package/composables/classes.ts +20 -9
- package/composables/constants.ts +10 -2
- package/composables/index.ts +9 -2
- package/locales/ru.json +14 -9
- package/package.json +1 -1
- package/store/data.store.ts +327 -122
- package/store/member.store.ts +15 -4
- package/store/rules.ts +2 -2
- package/types/enum.ts +2 -0
- package/types/index.ts +2 -0
|
@@ -73,19 +73,26 @@
|
|
|
73
73
|
</base-form-section>
|
|
74
74
|
</div>
|
|
75
75
|
<div v-if="!(formStore.signatories.length === 0) && !isQr && !isScansDocuments" :class="[$styles.flexColNav]">
|
|
76
|
+
<div
|
|
77
|
+
v-if="(processCode === 19 || processCode === 25) && formStore.applicationData.statusCode === 'AttachAppContractForm'"
|
|
78
|
+
:class="[$styles.blueBgLight]"
|
|
79
|
+
class="rounded-lg p-4"
|
|
80
|
+
>
|
|
81
|
+
<base-form-toggle v-model="isOnlineEnpf" title="Онлайн подписание согласия для ЕНПФ" :has-border="false" @clicked="setActualEnpf" />
|
|
82
|
+
</div>
|
|
76
83
|
<div :class="[$styles.blueBgLight]" class="rounded-lg p-4">
|
|
77
|
-
<v-expansion-panels v-if="formStore.signatories.length" variant="accordion" multiple>
|
|
84
|
+
<v-expansion-panels v-if="formStore.signatories.length" variant="accordion" :multiple="false">
|
|
78
85
|
<v-expansion-panel v-for="(person, index) of formStore.signatories" :key="person.personId!" class="border-[1px]" elevation="0" bg-color="#FFF">
|
|
79
86
|
<v-expansion-panel-title class="h-[80px]" :class="$styles.textTitle">
|
|
80
87
|
{{ person.longName }}
|
|
81
88
|
</v-expansion-panel-title>
|
|
82
89
|
<v-expansion-panel-text class="border-t-[1px]">
|
|
83
90
|
<section class="flex flex-col" :class="$styles.textSimple">
|
|
84
|
-
<v-expansion-panels v-if="person.fileDatas.length" v-model="currentFilePanel">
|
|
91
|
+
<v-expansion-panels v-if="person.fileDatas.length" v-model="currentFilePanel" :multiple="false">
|
|
85
92
|
<v-expansion-panel
|
|
86
93
|
v-for="(file, fileIndex) in groupBy(person.fileDatas, 'orderFile')"
|
|
87
|
-
:value="fileIndex"
|
|
88
|
-
:disabled="inSigningOrder(person.fileDatas, fileIndex) || file
|
|
94
|
+
:value="`${index} - ${fileIndex}`"
|
|
95
|
+
:disabled="inSigningOrder(person.fileDatas, fileIndex) || file.every((f: any) => f.isSigned === true)"
|
|
89
96
|
>
|
|
90
97
|
<v-expansion-panel-title v-for="name in file" class="h-[80px]" :class="$styles.textTitle">
|
|
91
98
|
{{ name.fileName }}
|
|
@@ -109,6 +116,9 @@
|
|
|
109
116
|
</v-expansion-panels>
|
|
110
117
|
<base-list-empty v-else />
|
|
111
118
|
</div>
|
|
119
|
+
<base-animation>
|
|
120
|
+
<base-btn v-if="isAllPaperSigned" :text="$dataStore.t('buttons.send')" :loading="loading" @click="$dataStore.panelAction = constants.actions.signed" />
|
|
121
|
+
</base-animation>
|
|
112
122
|
</div>
|
|
113
123
|
</section>
|
|
114
124
|
<section v-if="choosePayActions">
|
|
@@ -243,7 +253,7 @@
|
|
|
243
253
|
import { DocumentItem, Value } from '../../composables/classes';
|
|
244
254
|
import { HubConnectionBuilder } from '@microsoft/signalr';
|
|
245
255
|
import { uuid } from 'vue-uuid';
|
|
246
|
-
import type
|
|
256
|
+
import type * as Types from '../../types';
|
|
247
257
|
import { CoreEnums } from '../../types/enum';
|
|
248
258
|
|
|
249
259
|
export default defineComponent({
|
|
@@ -266,15 +276,15 @@ export default defineComponent({
|
|
|
266
276
|
const isOfflinePay = ref<boolean>(false);
|
|
267
277
|
const isQrDialog = ref<boolean>(false);
|
|
268
278
|
const email = ref<string>('');
|
|
269
|
-
const signOptions = ref<Api.Sign.New.Response>();
|
|
270
|
-
const signingFiles = ref<Api.Sign.New.FileDatas[]>([]);
|
|
271
|
-
const
|
|
279
|
+
const signOptions = ref<Types.Api.Sign.New.Response>();
|
|
280
|
+
const signingFiles = ref<Types.Api.Sign.New.FileDatas[]>([]);
|
|
281
|
+
const isOnlineEnpf = ref<boolean>(true);
|
|
272
282
|
const currentFilePanel = ref<string[]>([]);
|
|
273
283
|
|
|
274
284
|
const vForm = ref<any>();
|
|
275
285
|
const isSendNumberOpen = ref<boolean>(false);
|
|
276
286
|
const phoneNumber = ref<string | null>(formStore.policyholderForm.phoneNumber ?? '');
|
|
277
|
-
const selectedClient = ref<SignUrlType>();
|
|
287
|
+
const selectedClient = ref<Types.SignUrlType>();
|
|
278
288
|
const documentDict = computed(() => dataStore.dicFileTypeList.find(i => i.nameRu === 'Решение АС'));
|
|
279
289
|
const affiliationDocument = computed(() => formStore.signedDocumentList.find((file: DocumentItem) => file.fileTypeName === 'Решение АС'));
|
|
280
290
|
const affiliationData = ref<{
|
|
@@ -290,9 +300,10 @@ export default defineComponent({
|
|
|
290
300
|
const affiliationFormData = ref(new FormData());
|
|
291
301
|
const scansFormData = ref(new FormData());
|
|
292
302
|
const scansFiles = ref<any[]>([]);
|
|
303
|
+
const isAllPaperSigned = computed(() => formStore.signatories.every((person: any) => person.fileDatas.every((file: any) => file.isSigned === true && file.signedType === 2)));
|
|
293
304
|
const processCode = formStore.applicationData.processCode;
|
|
294
305
|
|
|
295
|
-
const openSmsPanel = (signInfo: SignUrlType) => {
|
|
306
|
+
const openSmsPanel = (signInfo: Types.SignUrlType) => {
|
|
296
307
|
if (signInfo) {
|
|
297
308
|
isSendNumberOpen.value = true;
|
|
298
309
|
selectedClient.value = signInfo;
|
|
@@ -418,7 +429,7 @@ export default defineComponent({
|
|
|
418
429
|
};
|
|
419
430
|
|
|
420
431
|
const sendFilesNew = async () => {
|
|
421
|
-
if (scansFiles.value.length !==
|
|
432
|
+
if (scansFiles.value.length !== signingFiles.value.length) {
|
|
422
433
|
dataStore.showToaster('warning', dataStore.t('toaster.notAllDocumentsAttached'));
|
|
423
434
|
return;
|
|
424
435
|
}
|
|
@@ -428,14 +439,13 @@ export default defineComponent({
|
|
|
428
439
|
await dataStore.api.file.uploadFilesNew(f.groupId, f.data);
|
|
429
440
|
}),
|
|
430
441
|
);
|
|
442
|
+
await checkIfAllSigned(true);
|
|
431
443
|
scansFiles.value = [];
|
|
432
|
-
|
|
433
|
-
dataStore.showToaster('info', 'Документы
|
|
434
|
-
await dataStore.handleTask(constants.actions.signed, route.params.taskId as string);
|
|
444
|
+
isScansDocuments.value = false;
|
|
445
|
+
dataStore.showToaster('info', 'Документы загружены успешно');
|
|
435
446
|
} catch (err) {
|
|
436
447
|
return ErrorHandler(err);
|
|
437
448
|
}
|
|
438
|
-
closePanel();
|
|
439
449
|
};
|
|
440
450
|
|
|
441
451
|
const sendFiles = async () => {
|
|
@@ -506,7 +516,11 @@ export default defineComponent({
|
|
|
506
516
|
}
|
|
507
517
|
}
|
|
508
518
|
if (dataStore.isPension) {
|
|
509
|
-
|
|
519
|
+
if (formStore.applicationData.pensionApp) {
|
|
520
|
+
const isOnlineEnpfAgreement = formStore.applicationData.pensionApp.isOnlineEnpfAgreement;
|
|
521
|
+
isOnlineEnpf.value = isOnlineEnpfAgreement === null ? true : isOnlineEnpfAgreement;
|
|
522
|
+
await dataStore.getSignedDocList(formStore.applicationData.processInstanceId);
|
|
523
|
+
}
|
|
510
524
|
}
|
|
511
525
|
};
|
|
512
526
|
|
|
@@ -562,13 +576,13 @@ export default defineComponent({
|
|
|
562
576
|
dataStore.panelAction === constants.actions.return ||
|
|
563
577
|
dataStore.panelAction === constants.actions.rejectclient,
|
|
564
578
|
);
|
|
565
|
-
const acceptAction = computed(() => dataStore.panelAction === constants.actions.accept);
|
|
579
|
+
const acceptAction = computed(() => dataStore.panelAction === constants.actions.accept || (dataStore.isPension && dataStore.panelAction === constants.actions.signed));
|
|
566
580
|
const signingActions = computed(() => dataStore.panelAction === constants.actions.sign);
|
|
567
581
|
const payingActions = computed(() => dataStore.panelAction === constants.actions.pay);
|
|
568
582
|
const affiliateActions = computed(() => dataStore.panelAction === constants.actions.affiliate);
|
|
569
583
|
const chooseSignActions = computed(() => dataStore.controls.hasChooseSign && dataStore.panelAction === constants.actions.chooseSign);
|
|
570
584
|
const choosePayActions = computed(() => dataStore.controls.hasChoosePay && dataStore.panelAction === constants.actions.choosePay);
|
|
571
|
-
const isNewSign = computed(() =>
|
|
585
|
+
const isNewSign = computed(() => dataStore.isPension || dataStore.isGons);
|
|
572
586
|
const paymentPeriod = computed(() => formStore.productConditionsForm.paymentPeriod.nameRu);
|
|
573
587
|
const insurancePremiumPerMonth = computed(() => {
|
|
574
588
|
if (dataStore.isGons && formStore.productConditionsForm.currency.code === 'USD') {
|
|
@@ -588,7 +602,7 @@ export default defineComponent({
|
|
|
588
602
|
const price = computed(() => dataStore.getNumberWithSpaces(formStore.productConditionsForm.calculatorForm.price));
|
|
589
603
|
const insuredAmount = computed(() => formStore.productConditionsForm.calculatorForm.amount!.nameRu! + dataStore.currency);
|
|
590
604
|
const hasConditionsInfo = computed(() => {
|
|
591
|
-
if (dataStore.isLifetrip || dataStore.isDas || dataStore.isUU || dataStore.isPrePension) {
|
|
605
|
+
if (dataStore.isLifetrip || dataStore.isDas || dataStore.isUU || dataStore.isPrePension || dataStore.isPension) {
|
|
592
606
|
return false;
|
|
593
607
|
}
|
|
594
608
|
if (dataStore.isFinCenter()) {
|
|
@@ -712,11 +726,7 @@ export default defineComponent({
|
|
|
712
726
|
isQrLoading.value = true;
|
|
713
727
|
} else if (message === 'Signed') {
|
|
714
728
|
isQrLoading.value = false;
|
|
715
|
-
|
|
716
|
-
dataStore.showToaster('info', dataStore.t('pension.signInProcess'));
|
|
717
|
-
} else {
|
|
718
|
-
dataStore.showToaster('success', dataStore.t('sign.successQrSigned'));
|
|
719
|
-
}
|
|
729
|
+
dataStore.showToaster('success', dataStore.isPension ? 'Подписание прошло успешно' : dataStore.t('sign.successQrSigned'));
|
|
720
730
|
qrUrl.value = '';
|
|
721
731
|
isQr.value = false;
|
|
722
732
|
dataStore.panel.open = false;
|
|
@@ -774,7 +784,7 @@ export default defineComponent({
|
|
|
774
784
|
await dataStore.generateDocument();
|
|
775
785
|
};
|
|
776
786
|
|
|
777
|
-
const convertQr = async (url: string | null, template?: Api.GenerateShortLink.Templates) => {
|
|
787
|
+
const convertQr = async (url: string | null, template?: Types.Api.GenerateShortLink.Templates) => {
|
|
778
788
|
if (url) {
|
|
779
789
|
const shortedUrl = await dataStore.generateShortLink(url, template);
|
|
780
790
|
qrUrl.value = typeof shortedUrl === 'string' && !!shortedUrl ? shortedUrl : url;
|
|
@@ -833,17 +843,18 @@ export default defineComponent({
|
|
|
833
843
|
}, {});
|
|
834
844
|
};
|
|
835
845
|
|
|
836
|
-
const checkIfAllSigned = async () => {
|
|
846
|
+
const checkIfAllSigned = async (sendTask: boolean = false) => {
|
|
837
847
|
await dataStore.generateSign(route.params.taskId as string);
|
|
838
|
-
formStore.signatories.find((person: any) => {
|
|
848
|
+
formStore.signatories.find(async (person: any) => {
|
|
839
849
|
if (person.fileDatas.find((file: any) => file.isSigned === false) === undefined) {
|
|
840
|
-
if (formStore.applicationData.statusCode !== 'ContractSignedFrom')
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
850
|
+
if (formStore.applicationData.statusCode !== 'ContractSignedFrom') {
|
|
851
|
+
// TODO better if condition
|
|
852
|
+
// dataStore.showToaster(
|
|
853
|
+
// 'success',
|
|
854
|
+
// dataStore.t(`pension.${formStore.applicationData.statusCode === 'HeadManagerForm' ? 'signInProcessManager' : 'signInProcess'}`),
|
|
855
|
+
// 30000,
|
|
856
|
+
// );
|
|
857
|
+
}
|
|
847
858
|
}
|
|
848
859
|
});
|
|
849
860
|
};
|
|
@@ -854,13 +865,9 @@ export default defineComponent({
|
|
|
854
865
|
...formStore.signatories[index],
|
|
855
866
|
signType: signType,
|
|
856
867
|
fileDatas: file,
|
|
857
|
-
};
|
|
868
|
+
} as Types.Api.Sign.New.GeneralResponse;
|
|
858
869
|
try {
|
|
859
|
-
signOptions.value = await dataStore.
|
|
860
|
-
const message = [];
|
|
861
|
-
for (let i of file) {
|
|
862
|
-
message.push(i.fileName);
|
|
863
|
-
}
|
|
870
|
+
signOptions.value = await dataStore.generalSign(data);
|
|
864
871
|
if (signOptions.value) {
|
|
865
872
|
switch (signType) {
|
|
866
873
|
case CoreEnums.Sign.Types.electronic:
|
|
@@ -871,8 +878,7 @@ export default defineComponent({
|
|
|
871
878
|
break;
|
|
872
879
|
case CoreEnums.Sign.Types.scans:
|
|
873
880
|
isScansDocuments.value = true;
|
|
874
|
-
signingFiles.value = data.fileDatas;
|
|
875
|
-
message.length = 0;
|
|
881
|
+
signingFiles.value = data.fileDatas && Array.isArray(data.fileDatas) ? data.fileDatas.filter(i => i.isSigned !== true) : [];
|
|
876
882
|
break;
|
|
877
883
|
case CoreEnums.Sign.Types.qr:
|
|
878
884
|
if (!signOptions.value.signatureDocumentGroupId) return dataStore.showToaster('error', 'Ошибка подписи документов', 10000);
|
|
@@ -887,21 +893,18 @@ export default defineComponent({
|
|
|
887
893
|
case CoreEnums.Sign.Types.nclayer:
|
|
888
894
|
for (let sign of signOptions.value.signIds) {
|
|
889
895
|
const response = await dataStore.nclayerSign(sign.id, signType, file[0].fileType === 43);
|
|
890
|
-
if (
|
|
896
|
+
if (response === null) {
|
|
891
897
|
dataStore.showToaster('error', 'Ошибка подписи документов', 10000);
|
|
892
|
-
message.length = 0;
|
|
893
898
|
break;
|
|
894
899
|
}
|
|
900
|
+
if (!response) break;
|
|
895
901
|
}
|
|
896
902
|
break;
|
|
897
903
|
default:
|
|
898
904
|
break;
|
|
899
905
|
}
|
|
900
906
|
}
|
|
901
|
-
|
|
902
|
-
// dataStore.showToaster('info', 'Подписывается: ' + message.join(', '), 5000);
|
|
903
|
-
await checkIfAllSigned();
|
|
904
|
-
}
|
|
907
|
+
await checkIfAllSigned();
|
|
905
908
|
currentFilePanel.value = [];
|
|
906
909
|
} catch (err) {
|
|
907
910
|
ErrorHandler(err);
|
|
@@ -909,6 +912,16 @@ export default defineComponent({
|
|
|
909
912
|
loading.value = false;
|
|
910
913
|
};
|
|
911
914
|
|
|
915
|
+
const setActualEnpf = useDebounceFn(async () => {
|
|
916
|
+
try {
|
|
917
|
+
await dataStore.api.file.setActualEnpf({ processId: String(formStore.applicationData.processInstanceId), isOnlineEnpfAgreement: isOnlineEnpf.value });
|
|
918
|
+
await dataStore.generateSign(String(route.params.taskId));
|
|
919
|
+
} catch (err) {
|
|
920
|
+
ErrorHandler(err);
|
|
921
|
+
}
|
|
922
|
+
currentFilePanel.value = [];
|
|
923
|
+
}, 1000);
|
|
924
|
+
|
|
912
925
|
return {
|
|
913
926
|
// State
|
|
914
927
|
formStore,
|
|
@@ -932,7 +945,7 @@ export default defineComponent({
|
|
|
932
945
|
email,
|
|
933
946
|
signOptions,
|
|
934
947
|
signingFiles,
|
|
935
|
-
|
|
948
|
+
isOnlineEnpf,
|
|
936
949
|
currentFilePanel,
|
|
937
950
|
|
|
938
951
|
// Functions
|
|
@@ -951,6 +964,7 @@ export default defineComponent({
|
|
|
951
964
|
handlePayAction,
|
|
952
965
|
payEpay,
|
|
953
966
|
convertQr,
|
|
967
|
+
setActualEnpf,
|
|
954
968
|
sendInvoiceToEmail,
|
|
955
969
|
hasConditionsAction,
|
|
956
970
|
|
|
@@ -963,6 +977,7 @@ export default defineComponent({
|
|
|
963
977
|
affiliateActions,
|
|
964
978
|
chooseSignActions,
|
|
965
979
|
paymentPeriod,
|
|
980
|
+
isAllPaperSigned,
|
|
966
981
|
insurancePremiumPerMonth,
|
|
967
982
|
requestedSumInsured,
|
|
968
983
|
affiliationDocument,
|
package/composables/classes.ts
CHANGED
|
@@ -97,6 +97,7 @@ export class IDocument {
|
|
|
97
97
|
signed?: boolean | null;
|
|
98
98
|
signId?: string | null;
|
|
99
99
|
certificateDate?: string | null;
|
|
100
|
+
signedType?: number;
|
|
100
101
|
|
|
101
102
|
constructor(
|
|
102
103
|
id?: string,
|
|
@@ -113,6 +114,7 @@ export class IDocument {
|
|
|
113
114
|
signed?: boolean | null,
|
|
114
115
|
signId?: string | null,
|
|
115
116
|
certificateDate?: string | null,
|
|
117
|
+
signedType?: number,
|
|
116
118
|
) {
|
|
117
119
|
this.id = id;
|
|
118
120
|
this.processInstanceId = processInstanceId;
|
|
@@ -128,6 +130,7 @@ export class IDocument {
|
|
|
128
130
|
this.signed = signed;
|
|
129
131
|
this.signId = signId;
|
|
130
132
|
this.certificateDate = certificateDate;
|
|
133
|
+
this.signedType = signedType;
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
|
|
@@ -148,9 +151,10 @@ export class DocumentItem extends IDocument {
|
|
|
148
151
|
signed,
|
|
149
152
|
signId,
|
|
150
153
|
certificateDate,
|
|
154
|
+
signedType,
|
|
151
155
|
}: IDocument = new IDocument(),
|
|
152
156
|
) {
|
|
153
|
-
super(id, processInstanceId, iin, fileTypeId, fileTypeName, fileTypeNameRu, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate);
|
|
157
|
+
super(id, processInstanceId, iin, fileTypeId, fileTypeName, fileTypeNameRu, fileId, page, fileName, fileTypeCode, sharedId, signed, signId, certificateDate, signedType);
|
|
154
158
|
}
|
|
155
159
|
}
|
|
156
160
|
|
|
@@ -806,7 +810,6 @@ export class ProductConditions {
|
|
|
806
810
|
adbAdditive: string | number | null;
|
|
807
811
|
disabilityMultiply: string | number | null;
|
|
808
812
|
disabilityAdditive: string | number | null;
|
|
809
|
-
processTariff: Value;
|
|
810
813
|
riskGroup: Value;
|
|
811
814
|
riskGroup2: Value;
|
|
812
815
|
additionalConditionAnnuityPayments: boolean;
|
|
@@ -855,7 +858,6 @@ export class ProductConditions {
|
|
|
855
858
|
adbAdditive = null,
|
|
856
859
|
disabilityMultiply = null,
|
|
857
860
|
disabilityAdditive = null,
|
|
858
|
-
processTariff = new Value(),
|
|
859
861
|
riskGroup = new Value(),
|
|
860
862
|
riskGroup2 = new Value(),
|
|
861
863
|
additionalConditionAnnuityPayments = false,
|
|
@@ -908,7 +910,6 @@ export class ProductConditions {
|
|
|
908
910
|
this.adbAdditive = adbAdditive;
|
|
909
911
|
this.disabilityMultiply = disabilityMultiply;
|
|
910
912
|
this.disabilityAdditive = disabilityAdditive;
|
|
911
|
-
this.processTariff = processTariff;
|
|
912
913
|
this.riskGroup = riskGroup;
|
|
913
914
|
this.riskGroup2 = riskGroup2;
|
|
914
915
|
this.additionalConditionAnnuityPayments = additionalConditionAnnuityPayments;
|
|
@@ -1077,7 +1078,6 @@ export class DataStoreClass {
|
|
|
1077
1078
|
relations: Value[];
|
|
1078
1079
|
banks: Value[];
|
|
1079
1080
|
transferContractCompanies: Value[];
|
|
1080
|
-
processTariff: Value[];
|
|
1081
1081
|
insurancePay: Value[];
|
|
1082
1082
|
questionRefs: Value[];
|
|
1083
1083
|
residents: Value[];
|
|
@@ -1259,7 +1259,6 @@ export class DataStoreClass {
|
|
|
1259
1259
|
this.familyStatuses = [];
|
|
1260
1260
|
this.disabilityGroups = [];
|
|
1261
1261
|
this.relations = [];
|
|
1262
|
-
this.processTariff = [];
|
|
1263
1262
|
this.banks = [];
|
|
1264
1263
|
this.transferContractCompanies = [];
|
|
1265
1264
|
this.insurancePay = [];
|
|
@@ -1394,6 +1393,7 @@ export class FormStoreClass {
|
|
|
1394
1393
|
beneficiaryForm: boolean;
|
|
1395
1394
|
beneficialOwnerForm: boolean;
|
|
1396
1395
|
insuredForm: boolean;
|
|
1396
|
+
slaveInsuredForm: boolean;
|
|
1397
1397
|
policyholdersRepresentativeForm: boolean;
|
|
1398
1398
|
productConditionsForm: boolean;
|
|
1399
1399
|
calculatorForm: boolean;
|
|
@@ -1429,6 +1429,7 @@ export class FormStoreClass {
|
|
|
1429
1429
|
parentPolicyDto?: Types.ParentPolicyDto | null;
|
|
1430
1430
|
insisWorkDataApp?: Types.InsisWorkDataApp;
|
|
1431
1431
|
addCoverDto?: Types.AddCover[];
|
|
1432
|
+
slave?: any;
|
|
1432
1433
|
};
|
|
1433
1434
|
policyholderForm: Member;
|
|
1434
1435
|
policyholderFormKey: StoreMembers.policyholderForm;
|
|
@@ -1441,14 +1442,17 @@ export class FormStoreClass {
|
|
|
1441
1442
|
beneficialOwnerFormIndex: number;
|
|
1442
1443
|
beneficialOwnerFormKey: StoreMembers.beneficialOwnerForm;
|
|
1443
1444
|
insuredForm: Member[];
|
|
1445
|
+
slaveInsuredForm: Member;
|
|
1444
1446
|
insuredFormKey: StoreMembers.insuredForm;
|
|
1445
1447
|
insuredFormIndex: number;
|
|
1446
1448
|
productConditionsForm: ProductConditions;
|
|
1447
1449
|
productConditionsFormKey: string;
|
|
1450
|
+
pensionApp: any;
|
|
1448
1451
|
questionnaireByHealth: any;
|
|
1449
1452
|
questionnaireByCritical: any[];
|
|
1450
1453
|
canBeClaimed: boolean | null;
|
|
1451
1454
|
applicationTaskId: string | null;
|
|
1455
|
+
requiredDocuments: RequiredDocument[];
|
|
1452
1456
|
|
|
1453
1457
|
constructor() {
|
|
1454
1458
|
this.regNumber = null;
|
|
@@ -1519,6 +1523,7 @@ export class FormStoreClass {
|
|
|
1519
1523
|
beneficiaryForm: true,
|
|
1520
1524
|
beneficialOwnerForm: true,
|
|
1521
1525
|
insuredForm: true,
|
|
1526
|
+
slaveInsuredForm: true,
|
|
1522
1527
|
policyholdersRepresentativeForm: true,
|
|
1523
1528
|
productConditionsForm: true,
|
|
1524
1529
|
calculatorForm: true,
|
|
@@ -1547,6 +1552,7 @@ export class FormStoreClass {
|
|
|
1547
1552
|
this.beneficialOwnerFormIndex = 0;
|
|
1548
1553
|
this.beneficialOwnerFormKey = StoreMembers.beneficialOwnerForm;
|
|
1549
1554
|
this.insuredForm = [new Member()];
|
|
1555
|
+
this.slaveInsuredForm = new Member();
|
|
1550
1556
|
this.insuredFormKey = StoreMembers.insuredForm;
|
|
1551
1557
|
this.insuredFormIndex = 0;
|
|
1552
1558
|
this.productConditionsForm = new ProductConditions();
|
|
@@ -1555,6 +1561,7 @@ export class FormStoreClass {
|
|
|
1555
1561
|
this.questionnaireByCritical = [];
|
|
1556
1562
|
this.canBeClaimed = null;
|
|
1557
1563
|
this.applicationTaskId = null;
|
|
1564
|
+
this.requiredDocuments = [];
|
|
1558
1565
|
}
|
|
1559
1566
|
}
|
|
1560
1567
|
|
|
@@ -1788,13 +1795,13 @@ export class TransferContract {
|
|
|
1788
1795
|
id: string | null;
|
|
1789
1796
|
transferContractIsOppv: boolean;
|
|
1790
1797
|
transferContractFirstPaymentDate: string;
|
|
1791
|
-
transferContractAmount: number;
|
|
1798
|
+
transferContractAmount: number | string;
|
|
1792
1799
|
transferContractDate: string;
|
|
1793
1800
|
transferContractNumber: string;
|
|
1794
1801
|
transferContractRegNumber: string;
|
|
1795
1802
|
transferContract: boolean;
|
|
1796
1803
|
transferContractCompany: Value;
|
|
1797
|
-
transferContractMonthCount: number;
|
|
1804
|
+
transferContractMonthCount: number | null;
|
|
1798
1805
|
|
|
1799
1806
|
constructor() {
|
|
1800
1807
|
this.id = null;
|
|
@@ -1806,6 +1813,10 @@ export class TransferContract {
|
|
|
1806
1813
|
this.transferContract = false;
|
|
1807
1814
|
this.transferContractRegNumber = '';
|
|
1808
1815
|
this.transferContractCompany = new Value();
|
|
1809
|
-
this.transferContractMonthCount =
|
|
1816
|
+
this.transferContractMonthCount = null;
|
|
1810
1817
|
}
|
|
1811
1818
|
}
|
|
1819
|
+
|
|
1820
|
+
export class RequiredDocument extends Value {
|
|
1821
|
+
iin: string = '';
|
|
1822
|
+
}
|
package/composables/constants.ts
CHANGED
|
@@ -21,6 +21,8 @@ export const constants = Object.freeze({
|
|
|
21
21
|
halykkazynaap: 20,
|
|
22
22
|
balam: 21,
|
|
23
23
|
halykkazynaapsms: 23,
|
|
24
|
+
pensionannuityrefundnew: 24,
|
|
25
|
+
pensionannuityjointnew: 25,
|
|
24
26
|
},
|
|
25
27
|
amlProducts: {
|
|
26
28
|
checkcontragent: 1,
|
|
@@ -39,6 +41,7 @@ export const constants = Object.freeze({
|
|
|
39
41
|
returnStatementStatuses: [
|
|
40
42
|
Statuses.ApproveForm,
|
|
41
43
|
Statuses.ActuaryForm,
|
|
44
|
+
Statuses.JuristForm,
|
|
42
45
|
Statuses.DsoUsnsForm,
|
|
43
46
|
Statuses.AccountantForm,
|
|
44
47
|
Statuses.UnderwriterForm,
|
|
@@ -78,8 +81,8 @@ export const constants = Object.freeze({
|
|
|
78
81
|
usd: '$',
|
|
79
82
|
},
|
|
80
83
|
pensionAge: {
|
|
81
|
-
man:
|
|
82
|
-
woman:
|
|
84
|
+
man: 68,
|
|
85
|
+
woman: 68,
|
|
83
86
|
},
|
|
84
87
|
genderByIIN: {
|
|
85
88
|
'0': 'Ж',
|
|
@@ -104,6 +107,11 @@ export const constants = Object.freeze({
|
|
|
104
107
|
questionnaireInsured: 35,
|
|
105
108
|
invoicePayment: 36,
|
|
106
109
|
},
|
|
110
|
+
fileTypes: {
|
|
111
|
+
pdf: 'application/pdf',
|
|
112
|
+
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
113
|
+
doc: 'application/msword',
|
|
114
|
+
},
|
|
107
115
|
regex: {
|
|
108
116
|
isoDate: /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)((-(\d{2}):(\d{2})|Z)?)$/,
|
|
109
117
|
},
|
package/composables/index.ts
CHANGED
|
@@ -158,6 +158,8 @@ export const parseProcents = (val: string | number) => (val ? Number(((val as nu
|
|
|
158
158
|
|
|
159
159
|
export const formatProcents = (val: string | number) => (val ? Number(((val as number) / 100).toFixed(2)) : Number(val));
|
|
160
160
|
|
|
161
|
+
export const formatSpacedNumber = (val: any) => ((!isNaN(val) && val !== null) || typeof val === 'string' ? Number(String(val).replace(/\s/g, '')) : 0);
|
|
162
|
+
|
|
161
163
|
export const sanitizeURL = (text: string) => (text ? text.replace(/\r?\n|\r|\\|"/g, '') : '');
|
|
162
164
|
|
|
163
165
|
export const sanitize = (text: string) =>
|
|
@@ -707,7 +709,7 @@ export class RoleController {
|
|
|
707
709
|
const dataStore = useDataStore();
|
|
708
710
|
const hasAccessByProduct = (() => {
|
|
709
711
|
const product = productFromExternal as Projects;
|
|
710
|
-
if (dataStore.isLifetrip || product === 'lifetrip' ||
|
|
712
|
+
if (dataStore.isLifetrip || product === 'lifetrip' || dataStore.isPension || product === 'pensionannuitynew') return this.isBranchDirector();
|
|
711
713
|
return false;
|
|
712
714
|
})();
|
|
713
715
|
return this.isManager() || this.isAgent() || this.isAgentMycar() || this.isManagerHalykBank() || this.isServiceManager() || this.isAgentAuletti() || hasAccessByProduct;
|
|
@@ -733,6 +735,9 @@ export class RoleController {
|
|
|
733
735
|
isServiceManager = () => {
|
|
734
736
|
return this.isRole(constants.roles.ServiceManager);
|
|
735
737
|
};
|
|
738
|
+
isUSNSsanctioner = () => {
|
|
739
|
+
return this.isRole(constants.roles.USNSsanctioner);
|
|
740
|
+
};
|
|
736
741
|
isUnderwriter = () => {
|
|
737
742
|
return this.isRole(constants.roles.Underwriter);
|
|
738
743
|
};
|
|
@@ -808,7 +813,7 @@ export class RoleController {
|
|
|
808
813
|
hasAccess = () => {
|
|
809
814
|
const baseAccessRoles = this.isAdmin() || this.isSupport() || this.isAnalyst() || this.isDrn();
|
|
810
815
|
return {
|
|
811
|
-
invoiceInfo: this.isAdmin(),
|
|
816
|
+
invoiceInfo: this.isAdmin() || this.isSupport(),
|
|
812
817
|
toLKA: this.isAgent() || this.isManagerHalykBank() || baseAccessRoles,
|
|
813
818
|
toAML: this.isCompliance() || baseAccessRoles,
|
|
814
819
|
toAULETTI: this.isAgentAuletti() || this.isManagerAuletti() || baseAccessRoles,
|
|
@@ -820,6 +825,7 @@ export class RoleController {
|
|
|
820
825
|
this.isManagerHalykBank() ||
|
|
821
826
|
this.isHeadManager() ||
|
|
822
827
|
this.isServiceManager() ||
|
|
828
|
+
this.isUSNSsanctioner() ||
|
|
823
829
|
this.isUnderwriter() ||
|
|
824
830
|
this.isActuary() ||
|
|
825
831
|
this.isAdmin() ||
|
|
@@ -832,6 +838,7 @@ export class RoleController {
|
|
|
832
838
|
this.isDrn() ||
|
|
833
839
|
this.isUrp() ||
|
|
834
840
|
this.isUsns() ||
|
|
841
|
+
this.isJurist() ||
|
|
835
842
|
this.isAccountant() ||
|
|
836
843
|
this.isBranchDirector() ||
|
|
837
844
|
this.isUSNSACCINS() ||
|
package/locales/ru.json
CHANGED
|
@@ -135,14 +135,17 @@
|
|
|
135
135
|
"templateDownloaded": "Шаблон скачан",
|
|
136
136
|
"templateSentToEmail": "Шаблона отправлен на почту",
|
|
137
137
|
"fileOnlyBelow5mb": "Максимальный размер документа для загрузки - 5 МБ.",
|
|
138
|
+
"fileOnlyBelow10mb": "Максимальный размер документа для загрузки - 10 МБ.",
|
|
138
139
|
"fileOnlyBelow20mb": "Максимальный размер документа для загрузки - 20 МБ.",
|
|
139
140
|
"onlyPDF": "Загружать документы можно только в формате PDF",
|
|
141
|
+
"onlyWithFormat": "Загружать документы можно только в формате {format}",
|
|
140
142
|
"notAllDocumentsAttached": "Не все документы вложены",
|
|
141
143
|
"needAttachQuestionnaire": "Нужно вложить анкету для клиентов",
|
|
142
144
|
"notZeroPremium": "Общая страховая премия не должен быть 0",
|
|
143
|
-
"requiredFieldsLB": "Обязательные поля: №, Ф.И.О, Пол, Должность, Дата рождения, ИИН, Страховая
|
|
145
|
+
"requiredFieldsLB": "Обязательные поля: №, Ф.И.О, Пол, Должность, Дата рождения, ИИН, Страховая сумма, Сектор экономики, Признак резеденства",
|
|
144
146
|
"duplicateClient": "В списке присутствуют повторяющиеся клиенты",
|
|
145
147
|
"notParsedDocument": "Не удалось получить данные",
|
|
148
|
+
"successProfile": "Профиль успешно обновлен",
|
|
146
149
|
"errorOsns": "По данному БИН на дату заключения заявления не найден договор ОСНС. Просим проверить БИН Страхователя.",
|
|
147
150
|
"needDigDoc": "Нужно получить цифровой документ {text}",
|
|
148
151
|
"notDigDoc": "Выданный документ не найден"
|
|
@@ -391,7 +394,6 @@
|
|
|
391
394
|
"additional": "Дополнительные условия страхования",
|
|
392
395
|
"possibilityToChange": "Возможность изменения страховой суммы и страховых взносов (индексация)",
|
|
393
396
|
"conditions": "Условия оплаты страховой премии",
|
|
394
|
-
"processTariff": "Тариф",
|
|
395
397
|
"riskGroup": "Группа риска",
|
|
396
398
|
"requestedProductConditions": "Запрашиваемые условия страхования",
|
|
397
399
|
"coverPeriodFrom3to20": "Срок страхования (от 3-х до 20 лет)",
|
|
@@ -564,8 +566,8 @@
|
|
|
564
566
|
"frequencyPayments": "Периодичность аннуитетной выплаты",
|
|
565
567
|
"paymentPeriod": "Период осуществления страховых выплат",
|
|
566
568
|
"insuranceProgramType": "Вид программы страхования",
|
|
567
|
-
"pensionAmount": "
|
|
568
|
-
"pensionPayment": "
|
|
569
|
+
"pensionAmount": "Страховая премия",
|
|
570
|
+
"pensionPayment": "Аннуитетная выплата, тенге:",
|
|
569
571
|
"male": "Мужской",
|
|
570
572
|
"female": "Женский",
|
|
571
573
|
"parentContractID": "Идентификатор родительского контракта",
|
|
@@ -576,7 +578,7 @@
|
|
|
576
578
|
"KSJagreement": "Договор с другой КСЖ",
|
|
577
579
|
"ENPFnote": "Выписка из ЕНПФ",
|
|
578
580
|
"getDataENPF": "Получить данные с ЕНПФ",
|
|
579
|
-
"compulsoryProfMonthCount": "Количество месяцев уплаты ОППВ (не менее
|
|
581
|
+
"compulsoryProfMonthCount": "Количество месяцев уплаты ОППВ (не менее 60 месяцев)",
|
|
580
582
|
"insuredIIN": "ИИН «Страхователя»",
|
|
581
583
|
"ifHasRelationBeneficiary": "Включите, если у Страхователя есть Родственные связи с Выгодоприобретателем",
|
|
582
584
|
"complianceFinMonitoring": "Приложение 6/ПОДФТ",
|
|
@@ -587,13 +589,15 @@
|
|
|
587
589
|
"transferContractFirstPaymentDate": "Дата начала выплат по договору с КСЖ",
|
|
588
590
|
"companyName": "Наименование компании по страхованию жизни",
|
|
589
591
|
"bankInvalid": "Некорректные банковские данные",
|
|
590
|
-
"globalId": "Уникальный номер договора (globalId)",
|
|
592
|
+
"globalId": "Уникальный номер договора с ЕСБД (globalId)",
|
|
591
593
|
"oppvMonthsCheck": "ВНИМАНИЕ! НЕОБХОДИМО ПРОВЕРИТЬ НАЛИЧИЕ ОТЧИСЛЕНИЙ 60 МЕСЯЦЕВ ПО ПРИЗНАКУ 'ОППВ'",
|
|
592
|
-
"signInProcess": "После подписания всех документов данная заявка перейдет к Подписанту вашего Региона",
|
|
593
594
|
"signInProcessManager": "Договор будет подписан в течение минуты",
|
|
594
|
-
"transferRegNumber": "Номер и серия договора",
|
|
595
|
+
"transferRegNumber": "Номер и серия договора с КСЖ",
|
|
595
596
|
"contragentSelect": "Выбор контрагента",
|
|
596
|
-
"fileError": "Ошибка прикрепления файла"
|
|
597
|
+
"fileError": "Ошибка прикрепления файла",
|
|
598
|
+
"parentContractNextPay": "Возврат с учетом очередной выплаты",
|
|
599
|
+
"parentContractNextPayDate": "Очередная выплата по графику",
|
|
600
|
+
"oppvPaymentCertificate": "Справка о количество взносов за счет ОППВ"
|
|
597
601
|
},
|
|
598
602
|
"agent": {
|
|
599
603
|
"currency": "Валюта",
|
|
@@ -1049,6 +1053,7 @@
|
|
|
1049
1053
|
"attachScansSignDocs": "Вложить сканы подписанных документов",
|
|
1050
1054
|
"declarationHealthInsured": "Декларация о здоровье Застрахованных",
|
|
1051
1055
|
"uploadInsured": "Загрузите застрахованных",
|
|
1056
|
+
"isDisability": "Является ли инвалидом",
|
|
1052
1057
|
"form": {
|
|
1053
1058
|
"calculation": "Расчеты",
|
|
1054
1059
|
"paymentAmount": "Размер выплаты",
|