hl-core 0.0.10-beta.68 → 0.0.10-beta.69
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 +7 -0
- package/components/Dialog/DigitalDocumentsDialog.vue +11 -21
- package/components/Layout/SettingsPanel.vue +2 -1
- package/components/Pages/MemberForm.vue +269 -87
- package/components/Pages/ProductConditions.vue +2 -1
- package/composables/classes.ts +5 -0
- package/locales/ru.json +7 -2
- package/package.json +2 -2
- package/store/data.store.ts +30 -1
- package/store/rules.ts +1 -0
- package/types/index.ts +8 -0
package/api/base.api.ts
CHANGED
|
@@ -1236,6 +1236,13 @@ export class ApiClass {
|
|
|
1236
1236
|
data: data,
|
|
1237
1237
|
});
|
|
1238
1238
|
},
|
|
1239
|
+
getOnlineChildAccess: async (data: { iinBin: string; documentType?: string, methodName?: string, childId?: string }) => {
|
|
1240
|
+
return await this.axiosCall<{ code: string; message: string, children: any[] }>({
|
|
1241
|
+
method: Methods.POST,
|
|
1242
|
+
url: `${this.externalServices.base}/api/ExternalServices/GetOnlineChildAccess`,
|
|
1243
|
+
data: data,
|
|
1244
|
+
});
|
|
1245
|
+
},
|
|
1239
1246
|
getDigitalDocuments: async (data: { iin: string; code: string; processInstanceId?: string }) => {
|
|
1240
1247
|
return await this.axiosCall<{ parsingResponseContent: string; digitalDocuments: any }>({
|
|
1241
1248
|
method: Methods.POST,
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
v-model="documentType"
|
|
26
26
|
class="document-type-select"
|
|
27
27
|
:items="documentItems"
|
|
28
|
-
:readonly="$dataStore.isLifetrip"
|
|
29
28
|
:label="$dataStore.t('form.documentType')"
|
|
30
29
|
hide-details
|
|
31
30
|
/>
|
|
@@ -34,21 +33,18 @@
|
|
|
34
33
|
v-model="otpCode"
|
|
35
34
|
@keyup.enter.prevent="otpCode.length === otpLength && emitGetCode()"
|
|
36
35
|
/>
|
|
37
|
-
<
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
>
|
|
44
|
-
Не получили код?
|
|
45
|
-
<span class="underline underline-offset-2">Отправить код заново</span>
|
|
36
|
+
<span
|
|
37
|
+
v-if="!loading && otpSendDisabled"
|
|
38
|
+
class="text-center"
|
|
39
|
+
:class="[$styles.mutedText]"
|
|
40
|
+
>
|
|
41
|
+
Введите код цифрового документа из <span class="underline underline-offset-2">eGov Mobile</span> или <span class="underline underline-offset-2">банковского приложения</span>.
|
|
46
42
|
</span>
|
|
47
|
-
</base-animation>
|
|
48
43
|
</div>
|
|
49
44
|
</div>
|
|
50
45
|
<div class="w-full d-flex gap-4">
|
|
51
46
|
<base-btn
|
|
47
|
+
v-if="!otpSendDisabled"
|
|
52
48
|
:disabled="loading"
|
|
53
49
|
:loading="loading"
|
|
54
50
|
:btn="$styles.whiteBorderBtn"
|
|
@@ -80,6 +76,10 @@ const props = defineProps({
|
|
|
80
76
|
otpLength: {
|
|
81
77
|
type: Number,
|
|
82
78
|
default: 6,
|
|
79
|
+
},
|
|
80
|
+
otpSendDisabled: {
|
|
81
|
+
type: Boolean,
|
|
82
|
+
default: false,
|
|
83
83
|
}
|
|
84
84
|
});
|
|
85
85
|
const emit = defineEmits(['getCode', 'getDigitalDocument', 'updateDigitalDocuments']);
|
|
@@ -105,16 +105,6 @@ const emitGetDocument = () => {
|
|
|
105
105
|
|
|
106
106
|
emit('getDigitalDocument', otpCode.value);
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
const setDefaultValues = () => {
|
|
110
|
-
if(dataStore.isLifetrip) {
|
|
111
|
-
documentType.value = 'Passport';
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
onMounted(() => {
|
|
116
|
-
setDefaultValues()
|
|
117
|
-
})
|
|
118
108
|
</script>
|
|
119
109
|
|
|
120
110
|
<style scoped>
|
|
@@ -62,11 +62,12 @@
|
|
|
62
62
|
<script lang="ts" setup>
|
|
63
63
|
import { changeBridge } from '#imports';
|
|
64
64
|
|
|
65
|
-
import
|
|
65
|
+
import packageJson from '../../package.json';
|
|
66
66
|
const dialogSignOut = ref(false);
|
|
67
67
|
const dataStore = useDataStore();
|
|
68
68
|
const router = useRouter();
|
|
69
69
|
const commitVersion = String(import.meta.env.VITE_COMMIT_VERSION ?? '');
|
|
70
|
+
const pkg = packageJson as { version: string };
|
|
70
71
|
|
|
71
72
|
const handleFontSize = (action: 'increase' | 'decrease') => {
|
|
72
73
|
if (action === 'increase' && dataStore.fontSize < 24) dataStore.fontSize += 2;
|
|
@@ -58,6 +58,17 @@
|
|
|
58
58
|
append-inner-icon="mdi mdi-chevron-right"
|
|
59
59
|
@append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
|
|
60
60
|
/>
|
|
61
|
+
<base-panel-input
|
|
62
|
+
v-if="hasGKB"
|
|
63
|
+
v-model="member.relationDegree"
|
|
64
|
+
:value="member.relationDegree?.nameRu"
|
|
65
|
+
:readonly="isDisabled"
|
|
66
|
+
:clearable="!isDisabled"
|
|
67
|
+
:label="$dataStore.t('form.relations')"
|
|
68
|
+
:rules="$rules.objectRequired"
|
|
69
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
70
|
+
@append="openPanel($dataStore.t('form.relations'), filteredRelationsData, 'relationDegree')"
|
|
71
|
+
/>
|
|
61
72
|
<base-form-toggle
|
|
62
73
|
v-if="$dataStore.isLifetrip && whichForm === 'insuredForm'"
|
|
63
74
|
v-model="member.isInsuredUnderage"
|
|
@@ -65,14 +76,14 @@
|
|
|
65
76
|
:has-border="false"
|
|
66
77
|
/>
|
|
67
78
|
<base-panel-input
|
|
68
|
-
v-if="whichForm === formStore.beneficiaryFormKey && $dataStore.isGons"
|
|
79
|
+
v-if="whichForm === formStore.beneficiaryFormKey && ($dataStore.isGons || $dataStore.isBolashak)"
|
|
69
80
|
v-model="member.chooseChild"
|
|
70
81
|
:value="member.chooseChild"
|
|
71
82
|
:label="$dataStore.t('form.chooseChild')"
|
|
72
83
|
:readonly="isDisabled"
|
|
73
84
|
:clearable="!isDisabled"
|
|
74
85
|
append-inner-icon="mdi mdi-chevron-right"
|
|
75
|
-
@append="
|
|
86
|
+
@append="getFamilyInfo"
|
|
76
87
|
/>
|
|
77
88
|
<base-form-input
|
|
78
89
|
:key="String(member.signOfResidency.nameRu)"
|
|
@@ -119,8 +130,8 @@
|
|
|
119
130
|
<base-form-input
|
|
120
131
|
v-if="hasMiddleName"
|
|
121
132
|
v-model.trim="member.middleName"
|
|
122
|
-
:readonly="isDisabled ||
|
|
123
|
-
:clearable="!isDisabled && !
|
|
133
|
+
:readonly="isDisabled || !!member.parsedDocument?.middleName || (isDataFromGov && !middleNameIsEditable)"
|
|
134
|
+
:clearable="(!isDisabled && !member.parsedDocument?.middleName && !isDataFromGov) || !!middleNameIsEditable"
|
|
124
135
|
:label="$dataStore.t('form.middleName')"
|
|
125
136
|
:rules="$rules.cyrillicNonRequired"
|
|
126
137
|
/>
|
|
@@ -177,8 +188,8 @@
|
|
|
177
188
|
<base-panel-input
|
|
178
189
|
v-model="member.gender"
|
|
179
190
|
:value="member.gender?.nameRu"
|
|
180
|
-
:readonly="isDisabled || isDataFromGov
|
|
181
|
-
:clearable="
|
|
191
|
+
:readonly="isDisabled || isDataFromGov"
|
|
192
|
+
:clearable="!isDisabled && !isDataFromGov"
|
|
182
193
|
:label="$dataStore.t('form.gender')"
|
|
183
194
|
:rules="$rules.objectRequired"
|
|
184
195
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -702,7 +713,7 @@
|
|
|
702
713
|
<small class="mb-1 d-block leading-tight">Внимание, выберите этот вариант если не приходит смс от 1414</small>
|
|
703
714
|
<base-btn :loading="isButtonLoading" :text="$dataStore.t('buttons.fromDD')" @click="startGettingDigitalDocument" />
|
|
704
715
|
</div>
|
|
705
|
-
<base-btn v-if="hasGKB" :loading="isButtonLoading" class="before-divider" :text="$dataStore.t('buttons.
|
|
716
|
+
<base-btn v-if="hasGKB" :loading="isButtonLoading" class="before-divider" :text="$dataStore.t('buttons.childData')" @click="getFamilyInfo" />
|
|
706
717
|
<base-btn v-if="isNonResident" :loading="isButtonLoading" class="before-divider" :text="$dataStore.t('buttons.searchByFio')" @click="getContragent" />
|
|
707
718
|
<base-form-section v-if="hasDocumentReader" class="!mt-0 before-divider">
|
|
708
719
|
<base-file-input
|
|
@@ -788,9 +799,73 @@
|
|
|
788
799
|
@yes="deleteMember"
|
|
789
800
|
@no="deletionDialog = false"
|
|
790
801
|
/>
|
|
791
|
-
<base-dialog
|
|
802
|
+
<base-dialog
|
|
803
|
+
v-model="familyDialog"
|
|
804
|
+
:subtitle="isOwnChild ? $dataStore.t('dialog.familyMember') : $dataStore.t('dialog.enterParentIin')"
|
|
805
|
+
:icon="{ mdi: 'hand-pointing-up' }"
|
|
806
|
+
actions="familyDialog"
|
|
807
|
+
>
|
|
792
808
|
<template #actions>
|
|
793
|
-
<
|
|
809
|
+
<div class="flex flex-col gap-[36px] w-full">
|
|
810
|
+
<base-rounded-input
|
|
811
|
+
v-if="!isOwnChild"
|
|
812
|
+
v-model="parentIin"
|
|
813
|
+
:label="$dataStore.t('labels.parentIin')"
|
|
814
|
+
class="p-2 w-full h-[60px]"
|
|
815
|
+
:hide-details="true"
|
|
816
|
+
:maska="$maska.iin"
|
|
817
|
+
:readonly="childrenLoaded"
|
|
818
|
+
:clearable="false"
|
|
819
|
+
/>
|
|
820
|
+
<v-list lines="two" v-if="formStore.children && formStore.children.length" class="w-full !py-0">
|
|
821
|
+
<v-list-item
|
|
822
|
+
v-for="familyMember of formStore.children"
|
|
823
|
+
:key="familyMember.id"
|
|
824
|
+
@click="selectedFamilyMember = familyMember"
|
|
825
|
+
:append-icon="familyMember && selectedFamilyMember && typeof selectedFamilyMember === 'object' && selectedFamilyMember.id === familyMember.id
|
|
826
|
+
? `mdi-radiobox-marked ${$styles.greenText}`
|
|
827
|
+
: 'mdi-radiobox-blank text-[#636363]'"
|
|
828
|
+
>
|
|
829
|
+
<v-list-item-title :class="[$styles.greenText, $styles.textTitle]">
|
|
830
|
+
{{ `${familyMember.lastName} ${familyMember.firstName} ${familyMember.middleName ? familyMember.middleName : ''}` }}
|
|
831
|
+
</v-list-item-title>
|
|
832
|
+
<v-list-item-subtitle :class="[$styles.textSimple]">
|
|
833
|
+
<span>{{ `${$dataStore.t('form.birthDate')}:` }}</span>
|
|
834
|
+
{{ `${reformatDate(familyMember.birthDate!)}` }}
|
|
835
|
+
</v-list-item-subtitle>
|
|
836
|
+
</v-list-item>
|
|
837
|
+
</v-list>
|
|
838
|
+
<base-list-empty v-if="isEmpty" />
|
|
839
|
+
<div class="flex gap-4">
|
|
840
|
+
<base-btn
|
|
841
|
+
class="px-6"
|
|
842
|
+
size="sm"
|
|
843
|
+
:text="$dataStore.t('confirm.cancel')"
|
|
844
|
+
:btn="$styles.whiteBorderBtn"
|
|
845
|
+
:classes="$styles.blueText"
|
|
846
|
+
@click="closeFamilyDialog"
|
|
847
|
+
/>
|
|
848
|
+
<base-btn
|
|
849
|
+
v-if="isOwnChild || (!isOwnChild && childrenLoaded)"
|
|
850
|
+
class="px-6"
|
|
851
|
+
size="sm"
|
|
852
|
+
text="Подтвердить"
|
|
853
|
+
:btn="$styles.blueBtn"
|
|
854
|
+
:loading="$dataStore.isButtonsLoading"
|
|
855
|
+
@click="selectFamilyMember"
|
|
856
|
+
/>
|
|
857
|
+
<base-btn
|
|
858
|
+
v-if="!isOwnChild && !childrenLoaded"
|
|
859
|
+
class="px-6"
|
|
860
|
+
size="sm"
|
|
861
|
+
text="Отправить запрос"
|
|
862
|
+
:btn="$styles.blueBtn"
|
|
863
|
+
:loading="$dataStore.isButtonsLoading"
|
|
864
|
+
:disabled="$maska.iin.length !== parentIin.length"
|
|
865
|
+
@click="getChildren"
|
|
866
|
+
/>
|
|
867
|
+
</div>
|
|
868
|
+
</div>
|
|
794
869
|
</template>
|
|
795
870
|
</base-dialog>
|
|
796
871
|
<base-dialog v-model="documentChooseDialog" :subtitle="$dataStore.t('labels.chooseDoc')" :icon="{ mdi: 'file-document-outline' }" actions="documentChooseDialog">
|
|
@@ -850,6 +925,7 @@
|
|
|
850
925
|
<base-digital-documents-dialog
|
|
851
926
|
:document-items="documentItems"
|
|
852
927
|
:loading="documentLoading"
|
|
928
|
+
:otp-send-disabled="$dataStore.isLifetrip && digitalDocumentOwnerType === 'child'"
|
|
853
929
|
@getCode="getCode"
|
|
854
930
|
@getDigitalDocument="getDigitalDocument"
|
|
855
931
|
@updateDigitalDocuments="updateDigitalDocuments"
|
|
@@ -882,7 +958,7 @@ export default {
|
|
|
882
958
|
const getMember = (whichForm: keyof typeof StoreMembers | 'slaveInsuredForm', whichIndex?: string) =>
|
|
883
959
|
memberStore.getMemberFromStore(whichForm, Number((whichIndex ? whichIndex : '0') as string))!;
|
|
884
960
|
const member = ref(getMember(whichForm.value, whichIndex.value));
|
|
885
|
-
const selectedFamilyMember = ref<Api.
|
|
961
|
+
const selectedFamilyMember = ref<Api.Child>({});
|
|
886
962
|
const isPanelOpen = ref<boolean>(false);
|
|
887
963
|
const memberDocument = ref<DocumentItem>();
|
|
888
964
|
const isButtonLoading = ref<boolean>(false);
|
|
@@ -919,29 +995,13 @@ export default {
|
|
|
919
995
|
if (dataStore.isPension && member.value.signOfResidency.nameRu === 'Нерезидент') {
|
|
920
996
|
return false;
|
|
921
997
|
}
|
|
922
|
-
if (whichForm.value === 'beneficiaryForm') {
|
|
923
|
-
if (Number(member.value.age) < 18) {
|
|
924
|
-
return false;
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
if (whichForm.value === 'insuredForm') {
|
|
928
|
-
if (dataStore.isCritical) {
|
|
929
|
-
if (Number(member.value.age) < 18) {
|
|
930
|
-
return false;
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
if (dataStore.isLifetrip) {
|
|
934
|
-
if (member.value.isInsuredUnderage) {
|
|
935
|
-
return false;
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
998
|
return true;
|
|
940
999
|
});
|
|
941
1000
|
const documentIssuerIsEditable = computed(() => {
|
|
942
1001
|
return documentIssuerNotFoundName.value;
|
|
943
1002
|
});
|
|
944
1003
|
const documentIssuerNotFoundName = ref<string>('');
|
|
1004
|
+
const middleNameIsEditable = ref<boolean>(false);
|
|
945
1005
|
const familyDialog = ref<boolean>(false);
|
|
946
1006
|
const deletionDialog = ref<boolean>(false);
|
|
947
1007
|
const documentChooseDialog = ref<boolean>(false);
|
|
@@ -961,12 +1021,27 @@ export default {
|
|
|
961
1021
|
const filteredRelationsData = ref<Value[]>(dataStore.relations);
|
|
962
1022
|
const currentPanelDeep = ref<string>();
|
|
963
1023
|
const currentPanelSubDeep = ref<string>();
|
|
964
|
-
const
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
1024
|
+
const selectedChild = ref<Api.Child | null>(null);
|
|
1025
|
+
const documentItems = computed(() => {
|
|
1026
|
+
if (dataStore.isLifetrip) {
|
|
1027
|
+
return [
|
|
1028
|
+
{ title: 'Паспорт', value: 'Passport' },
|
|
1029
|
+
]
|
|
1030
|
+
}
|
|
1031
|
+
return digitalDocumentOwnerType.value === 'adult'
|
|
1032
|
+
? [
|
|
1033
|
+
{ title: 'Удостоверение личности', value: 'IdentityCard' },
|
|
1034
|
+
{ title: 'Паспорт', value: 'Passport' },
|
|
1035
|
+
{ title: 'Вид на жительство иностранного гражданина', value: 'Vnzh' },
|
|
1036
|
+
]
|
|
1037
|
+
: [
|
|
1038
|
+
{ title: 'Свидетельство о рождении', value: 'BirthCertificate' },
|
|
1039
|
+
]
|
|
1040
|
+
});
|
|
969
1041
|
const digitalDocumentDialog = ref<boolean>(false);
|
|
1042
|
+
const parentIin = ref<string>('');
|
|
1043
|
+
const childrenLoaded = ref(false);
|
|
1044
|
+
const digitalDocumentOwnerType = ref('');
|
|
970
1045
|
const memberSetting = computed(() => dataStore.members[memberStore.getMemberApplicationCode(whichForm.value)!]);
|
|
971
1046
|
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
972
1047
|
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value));
|
|
@@ -1053,8 +1128,12 @@ export default {
|
|
|
1053
1128
|
}
|
|
1054
1129
|
return member.value.id === 0;
|
|
1055
1130
|
}
|
|
1131
|
+
case formStore.insuredFormKey: {
|
|
1132
|
+
if (dataStore.isLifetrip && member.value.isInsuredUnderage) {
|
|
1133
|
+
return true;
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1056
1136
|
case formStore.policyholderFormKey:
|
|
1057
|
-
case formStore.insuredFormKey:
|
|
1058
1137
|
case formStore.beneficialOwnerFormKey:
|
|
1059
1138
|
case formStore.policyholdersRepresentativeFormKey:
|
|
1060
1139
|
return false;
|
|
@@ -1086,7 +1165,7 @@ export default {
|
|
|
1086
1165
|
if (dataStore.isLifetrip || dataStore.isPension) {
|
|
1087
1166
|
return false;
|
|
1088
1167
|
}
|
|
1089
|
-
if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin) {
|
|
1168
|
+
if ((whichForm.value === formStore.beneficiaryFormKey || whichForm.value === formStore.insuredFormKey) && member.value.iin !== formStore.policyholderForm.iin && !hasGKB.value) {
|
|
1090
1169
|
return true;
|
|
1091
1170
|
}
|
|
1092
1171
|
return false;
|
|
@@ -1096,10 +1175,13 @@ export default {
|
|
|
1096
1175
|
return false;
|
|
1097
1176
|
}
|
|
1098
1177
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1099
|
-
if (dataStore.isBolashak) {
|
|
1178
|
+
if (dataStore.isBolashak || dataStore.isGons) {
|
|
1100
1179
|
return false;
|
|
1101
1180
|
}
|
|
1102
1181
|
}
|
|
1182
|
+
if (member.value.age !== null && Number(member.value.age) < 18) {
|
|
1183
|
+
return false;
|
|
1184
|
+
}
|
|
1103
1185
|
return true;
|
|
1104
1186
|
});
|
|
1105
1187
|
const hasInsurancePay = computed(() => {
|
|
@@ -1158,7 +1240,7 @@ export default {
|
|
|
1158
1240
|
}
|
|
1159
1241
|
}
|
|
1160
1242
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1161
|
-
if (dataStore.isBolashak) {
|
|
1243
|
+
if (dataStore.isGons || dataStore.isBolashak) {
|
|
1162
1244
|
return dataStore.rules.beneficiaryAgeLimit;
|
|
1163
1245
|
}
|
|
1164
1246
|
}
|
|
@@ -1228,6 +1310,14 @@ export default {
|
|
|
1228
1310
|
if (route.query.tab === 'slaveInsuredForm' && route.query.id === '0') return true;
|
|
1229
1311
|
return getOtpConditionByMember();
|
|
1230
1312
|
});
|
|
1313
|
+
const isOwnChild = computed(() => {
|
|
1314
|
+
//в справочнике relations 9-ребенок, 12-сын, 13-дочь
|
|
1315
|
+
const childIds = [9, 12, 13]
|
|
1316
|
+
return !!childIds.includes(Number(member.value.relationDegree.ids))
|
|
1317
|
+
})
|
|
1318
|
+
const isEmpty = computed(() => {
|
|
1319
|
+
return isOwnChild.value ? formStore.children?.length === 0 : (childrenLoaded.value && formStore.children?.length === 0);
|
|
1320
|
+
})
|
|
1231
1321
|
|
|
1232
1322
|
const searchMember = async (title: string = hasDocumentReader.value ? 'Получение данных со скана документа' : 'Поиск контрагента') => {
|
|
1233
1323
|
if (!isDisabled.value) {
|
|
@@ -1358,7 +1448,7 @@ export default {
|
|
|
1358
1448
|
if (dataStore.isBolashak) {
|
|
1359
1449
|
if (key === 'relationDegree') {
|
|
1360
1450
|
if (whichForm.value === formStore.beneficiaryFormKey) {
|
|
1361
|
-
const beneficiaryRelations = [12, 13, 14, 15, 20, 21, 22, 23];
|
|
1451
|
+
const beneficiaryRelations = [9, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25];
|
|
1362
1452
|
return list.filter(i => beneficiaryRelations.includes(Number(i.ids)));
|
|
1363
1453
|
}
|
|
1364
1454
|
if (whichForm.value === formStore.insuredFormKey) {
|
|
@@ -1367,6 +1457,14 @@ export default {
|
|
|
1367
1457
|
}
|
|
1368
1458
|
}
|
|
1369
1459
|
}
|
|
1460
|
+
if (dataStore.isGons && key === 'relationDegree' && whichForm.value === formStore.beneficiaryFormKey) {
|
|
1461
|
+
const beneficiaryRelations = [9, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25];
|
|
1462
|
+
return list.filter(i => beneficiaryRelations.includes(Number(i.ids)));
|
|
1463
|
+
}
|
|
1464
|
+
if (dataStore.isBaiterek && key === 'relationDegree') {
|
|
1465
|
+
const relations = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27];
|
|
1466
|
+
return list.filter(i => relations.includes(Number(i.ids)));
|
|
1467
|
+
}
|
|
1370
1468
|
return list;
|
|
1371
1469
|
};
|
|
1372
1470
|
|
|
@@ -1553,74 +1651,68 @@ export default {
|
|
|
1553
1651
|
};
|
|
1554
1652
|
|
|
1555
1653
|
const getFamilyInfo = async () => {
|
|
1556
|
-
if
|
|
1557
|
-
if
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
if (formStore.
|
|
1564
|
-
|
|
1654
|
+
if(isButtonLoading.value) return
|
|
1655
|
+
if(!member.value.relationDegree?.nameRu) {
|
|
1656
|
+
dataStore.showToaster('error', dataStore.t('toaster.needSelectRelationDegree'))
|
|
1657
|
+
return
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
if(isOwnChild.value) {
|
|
1661
|
+
if (!formStore.policyholderForm.iin) return;
|
|
1662
|
+
if (formStore.children.length === 0) {
|
|
1663
|
+
isButtonLoading.value = true;
|
|
1664
|
+
await dataStore.getChildren(formStore.policyholderForm.iin);
|
|
1665
|
+
childrenLoaded.value = true;
|
|
1565
1666
|
}
|
|
1566
|
-
} else {
|
|
1567
|
-
familyDialog.value = true;
|
|
1568
1667
|
}
|
|
1668
|
+
parentIin.value = '';
|
|
1669
|
+
familyDialog.value = true;
|
|
1569
1670
|
isButtonLoading.value = false;
|
|
1570
1671
|
};
|
|
1571
1672
|
|
|
1673
|
+
const getChildren = async () => {
|
|
1674
|
+
dataStore.isButtonsLoading = true
|
|
1675
|
+
try {
|
|
1676
|
+
const iinChecked = await dataStore.checkIIN(parentIin.value.replace(/-/g, ''));
|
|
1677
|
+
if (!iinChecked) {
|
|
1678
|
+
dataStore.showToaster('error', `Некорректный ИИН`);
|
|
1679
|
+
return;
|
|
1680
|
+
}
|
|
1681
|
+
await dataStore.getChildren(parentIin.value);
|
|
1682
|
+
childrenLoaded.value = true;
|
|
1683
|
+
} finally {
|
|
1684
|
+
dataStore.isButtonsLoading = false
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1572
1688
|
const closeFamilyDialog = (resetMember = false) => {
|
|
1573
1689
|
if (resetMember === true) {
|
|
1574
1690
|
member.value.resetMember();
|
|
1575
1691
|
}
|
|
1692
|
+
formStore.children = []
|
|
1693
|
+
childrenLoaded.value = false;
|
|
1576
1694
|
familyDialog.value = false;
|
|
1577
|
-
selectedFamilyMember.value = {};
|
|
1578
1695
|
isButtonLoading.value = false;
|
|
1579
1696
|
dataStore.rightPanel.open = false;
|
|
1580
1697
|
isSearchOpen.value = false;
|
|
1581
|
-
if (dataStore.isGons) {
|
|
1698
|
+
if (dataStore.isGons && resetMember) {
|
|
1582
1699
|
member.value.chooseChild = '';
|
|
1583
1700
|
}
|
|
1584
1701
|
};
|
|
1585
1702
|
|
|
1586
|
-
const
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
isButtonLoading.value = false;
|
|
1591
|
-
dataStore.rightPanel.open = false;
|
|
1592
|
-
isSearchOpen.value = false;
|
|
1593
|
-
member.value.chooseChild = dataStore.t('form.addBeneficiary');
|
|
1594
|
-
};
|
|
1595
|
-
|
|
1596
|
-
const selectFamilyMember = (familyMember: Api.GKB.BirthInfo) => {
|
|
1597
|
-
if (selectedFamilyMember.value && typeof selectedFamilyMember.value === 'object' && selectedFamilyMember.value.childIIN === familyMember.childIIN) {
|
|
1598
|
-
selectedFamilyMember.value = {};
|
|
1599
|
-
} else {
|
|
1600
|
-
selectedFamilyMember.value = familyMember;
|
|
1601
|
-
member.value.iin = reformatIin(selectedFamilyMember.value.childIIN!);
|
|
1602
|
-
member.value.firstName = selectedFamilyMember.value.childName!;
|
|
1603
|
-
member.value.lastName = selectedFamilyMember.value.childSurName!;
|
|
1604
|
-
member.value.middleName = selectedFamilyMember.value.childPatronymic ?? '';
|
|
1605
|
-
member.value.birthDate = reformatDate(selectedFamilyMember.value.childBirthDate!);
|
|
1606
|
-
member.value.gender = dataStore.gender.find(i => {
|
|
1607
|
-
if (typeof selectedFamilyMember.value === 'object') {
|
|
1608
|
-
return i.id === selectedFamilyMember.value.childGender;
|
|
1609
|
-
}
|
|
1610
|
-
})!;
|
|
1611
|
-
member.value.relationDegree = dataStore.relations.find(i => {
|
|
1612
|
-
if (typeof selectedFamilyMember.value === 'object') {
|
|
1613
|
-
return selectedFamilyMember.value.childGender === 1 ? i.nameRu === 'Сын' : i.nameRu === 'Дочь';
|
|
1614
|
-
}
|
|
1615
|
-
})!;
|
|
1616
|
-
if (dataStore.isGons) {
|
|
1617
|
-
member.value.chooseChild = `${selectedFamilyMember.value.childSurName} ${selectedFamilyMember.value.childName} ${selectedFamilyMember.value.childPatronymic ? selectedFamilyMember.value.childPatronymic : ''}`;
|
|
1618
|
-
}
|
|
1703
|
+
const selectFamilyMember = () => {
|
|
1704
|
+
if(Object.keys(selectedFamilyMember.value).length === 0) {
|
|
1705
|
+
dataStore.showToaster('error', 'Нужно выбрать ребенка')
|
|
1706
|
+
return
|
|
1619
1707
|
}
|
|
1708
|
+
member.value.chooseChildId = selectedFamilyMember.value.id!;
|
|
1709
|
+
selectedChild.value = selectedFamilyMember.value;
|
|
1710
|
+
|
|
1620
1711
|
familyDialog.value = false;
|
|
1621
1712
|
isButtonLoading.value = false;
|
|
1622
1713
|
dataStore.rightPanel.open = false;
|
|
1623
1714
|
isSearchOpen.value = false;
|
|
1715
|
+
openDigitalDocumentModal('child');
|
|
1624
1716
|
};
|
|
1625
1717
|
|
|
1626
1718
|
const getContragentFromGBDFL = async () => {
|
|
@@ -2133,10 +2225,39 @@ export default {
|
|
|
2133
2225
|
return;
|
|
2134
2226
|
}
|
|
2135
2227
|
|
|
2228
|
+
openDigitalDocumentModal('adult');
|
|
2229
|
+
};
|
|
2230
|
+
|
|
2231
|
+
const openDigitalDocumentModal = (type: 'child' | 'adult') => {
|
|
2232
|
+
digitalDocumentOwnerType.value = type;
|
|
2136
2233
|
digitalDocumentDialog.value = true;
|
|
2234
|
+
};
|
|
2235
|
+
|
|
2236
|
+
const getCode = (documentType: string) => {
|
|
2237
|
+
if (!digitalDocumentOwnerType.value) return;
|
|
2238
|
+
if (digitalDocumentOwnerType.value === 'child') {
|
|
2239
|
+
getCodeForChild(documentType);
|
|
2240
|
+
} else {
|
|
2241
|
+
getCodeForAdult(documentType);
|
|
2242
|
+
}
|
|
2243
|
+
};
|
|
2244
|
+
|
|
2245
|
+
const getCodeForChild = async (documentType: string) => {
|
|
2246
|
+
const iin = isOwnChild.value ? formStore.policyholderForm.iin : parentIin.value;
|
|
2247
|
+
if(!iin) return
|
|
2248
|
+
|
|
2249
|
+
documentLoading.value = true;
|
|
2250
|
+
try {
|
|
2251
|
+
const response = await dataStore.getOnlineChildAccess(iin!, documentType, member.value.chooseChildId!);
|
|
2252
|
+
if (response) {
|
|
2253
|
+
dataStore.showToaster('success', dataStore.t('toaster.successOtp'), 3000);
|
|
2254
|
+
}
|
|
2255
|
+
} finally {
|
|
2256
|
+
documentLoading.value = false;
|
|
2257
|
+
}
|
|
2137
2258
|
}
|
|
2138
2259
|
|
|
2139
|
-
const
|
|
2260
|
+
const getCodeForAdult = async (documentType: string) => {
|
|
2140
2261
|
documentLoading.value = true;
|
|
2141
2262
|
try {
|
|
2142
2263
|
const response = await dataStore.getOnlineAccess(member.value.iin!, documentType);
|
|
@@ -2149,14 +2270,24 @@ export default {
|
|
|
2149
2270
|
};
|
|
2150
2271
|
|
|
2151
2272
|
const getDigitalDocument = async (otpCode: string) => {
|
|
2273
|
+
if (!digitalDocumentOwnerType.value) return;
|
|
2274
|
+
let iin = '';
|
|
2275
|
+
if (digitalDocumentOwnerType.value === 'child') {
|
|
2276
|
+
iin = isOwnChild.value ? formStore.policyholderForm.iin! : parentIin.value!;
|
|
2277
|
+
} else {
|
|
2278
|
+
iin = member.value.iin!
|
|
2279
|
+
}
|
|
2280
|
+
if(!iin) return
|
|
2281
|
+
|
|
2152
2282
|
documentLoading.value = true;
|
|
2153
2283
|
try {
|
|
2154
|
-
const response = await dataStore.getDigitalDocuments(
|
|
2284
|
+
const response = await dataStore.getDigitalDocuments(iin!, otpCode);
|
|
2155
2285
|
|
|
2156
2286
|
if (response?.parsingResponseContent) {
|
|
2157
2287
|
const responseData = JSON.parse(response.parsingResponseContent);
|
|
2158
2288
|
|
|
2159
2289
|
if (
|
|
2290
|
+
digitalDocumentOwnerType.value !== 'child' &&
|
|
2160
2291
|
member.value.iin &&
|
|
2161
2292
|
responseData.iin &&
|
|
2162
2293
|
reformatIin(responseData.iin) &&
|
|
@@ -2169,6 +2300,29 @@ export default {
|
|
|
2169
2300
|
return;
|
|
2170
2301
|
}
|
|
2171
2302
|
|
|
2303
|
+
if (digitalDocumentOwnerType.value === 'child' && selectedChild.value && responseData) {
|
|
2304
|
+
const { firstName, lastName, birthDate } = selectedChild.value;
|
|
2305
|
+
|
|
2306
|
+
const birthDateMatch = birthDate && responseData.birthDate
|
|
2307
|
+
? new Date(birthDate).toISOString().split('T')[0] === new Date(responseData.birthDate).toISOString().split('T')[0]
|
|
2308
|
+
: true;
|
|
2309
|
+
|
|
2310
|
+
if (firstName !== responseData.firstName || lastName !== responseData.lastName || !birthDateMatch) {
|
|
2311
|
+
dataStore.showToaster('error', 'Данные выбранного ребёнка не совпадают с полученными данными.');
|
|
2312
|
+
return;
|
|
2313
|
+
}
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2316
|
+
if (dataStore.isLifetrip) {
|
|
2317
|
+
if (response.digitalDocuments.documentType.code !== 'Passport') {
|
|
2318
|
+
dataStore.showToaster('error', 'Допустимый тип документа — только Паспорт.');
|
|
2319
|
+
return;
|
|
2320
|
+
}
|
|
2321
|
+
}
|
|
2322
|
+
|
|
2323
|
+
if (responseData.firstName && responseData.lastName) {
|
|
2324
|
+
member.value.chooseChild = `${responseData.lastName} ${responseData.firstName} ${responseData.middleName ? responseData.middleName : ''}`;
|
|
2325
|
+
}
|
|
2172
2326
|
if (responseData.iin) member.value.iin = reformatIin(responseData.iin);
|
|
2173
2327
|
if (responseData.firstName) member.value.firstName = responseData.firstName;
|
|
2174
2328
|
if (responseData.lastName) member.value.lastName = responseData.lastName;
|
|
@@ -2202,6 +2356,7 @@ export default {
|
|
|
2202
2356
|
break;
|
|
2203
2357
|
case "Passport":
|
|
2204
2358
|
fileTypeCode = "PS";
|
|
2359
|
+
middleNameIsEditable.value = true;
|
|
2205
2360
|
break;
|
|
2206
2361
|
case "BirthCertificate":
|
|
2207
2362
|
fileTypeCode = "SBI";
|
|
@@ -2378,6 +2533,19 @@ export default {
|
|
|
2378
2533
|
searchQuery.value = '';
|
|
2379
2534
|
}
|
|
2380
2535
|
});
|
|
2536
|
+
|
|
2537
|
+
watch(familyDialog, (val) => {
|
|
2538
|
+
if(!val) {
|
|
2539
|
+
closeFamilyDialog()
|
|
2540
|
+
}
|
|
2541
|
+
});
|
|
2542
|
+
|
|
2543
|
+
watch(digitalDocumentDialog, (val) => {
|
|
2544
|
+
if(!val) {
|
|
2545
|
+
digitalDocumentOwnerType.value = ''
|
|
2546
|
+
}
|
|
2547
|
+
});
|
|
2548
|
+
|
|
2381
2549
|
if (dataStore.isLifetrip && whichForm.value === 'insuredForm') {
|
|
2382
2550
|
watch(
|
|
2383
2551
|
() => member.value.age,
|
|
@@ -2452,6 +2620,14 @@ export default {
|
|
|
2452
2620
|
},
|
|
2453
2621
|
{ deep: true },
|
|
2454
2622
|
);
|
|
2623
|
+
watch(
|
|
2624
|
+
() => member.value.documentType,
|
|
2625
|
+
val => {
|
|
2626
|
+
if (val && val.ids !== "PS") {
|
|
2627
|
+
middleNameIsEditable.value = false;
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2630
|
+
);
|
|
2455
2631
|
onBeforeRouteLeave((to, from, next) => {
|
|
2456
2632
|
if (dataStore.isDirty) {
|
|
2457
2633
|
dataStore.quitDialog = true;
|
|
@@ -2527,8 +2703,11 @@ export default {
|
|
|
2527
2703
|
imageDataList,
|
|
2528
2704
|
contragents,
|
|
2529
2705
|
filteredRelationsData,
|
|
2530
|
-
documentItems,
|
|
2531
2706
|
digitalDocumentDialog,
|
|
2707
|
+
parentIin,
|
|
2708
|
+
childrenLoaded,
|
|
2709
|
+
middleNameIsEditable,
|
|
2710
|
+
digitalDocumentOwnerType,
|
|
2532
2711
|
|
|
2533
2712
|
// Computed
|
|
2534
2713
|
whichForm,
|
|
@@ -2560,6 +2739,9 @@ export default {
|
|
|
2560
2739
|
isChooseChild,
|
|
2561
2740
|
documentIssuerIsEditable,
|
|
2562
2741
|
hasDigitalDocument,
|
|
2742
|
+
isOwnChild,
|
|
2743
|
+
isEmpty,
|
|
2744
|
+
documentItems,
|
|
2563
2745
|
|
|
2564
2746
|
// Rules
|
|
2565
2747
|
ageRule,
|
|
@@ -2569,7 +2751,6 @@ export default {
|
|
|
2569
2751
|
|
|
2570
2752
|
// Functions
|
|
2571
2753
|
getToday,
|
|
2572
|
-
addChild,
|
|
2573
2754
|
searchMember,
|
|
2574
2755
|
openPanel,
|
|
2575
2756
|
openCustomPanel,
|
|
@@ -2602,6 +2783,7 @@ export default {
|
|
|
2602
2783
|
getDigitalDocument,
|
|
2603
2784
|
startGettingDigitalDocument,
|
|
2604
2785
|
updateDigitalDocuments,
|
|
2786
|
+
getChildren,
|
|
2605
2787
|
};
|
|
2606
2788
|
},
|
|
2607
2789
|
};
|
|
@@ -512,6 +512,7 @@
|
|
|
512
512
|
<base-form-input
|
|
513
513
|
v-model="contract.transferContractRegNumber"
|
|
514
514
|
:label="$dataStore.t('pension.transferRegNumber')"
|
|
515
|
+
:rules="$rules.required"
|
|
515
516
|
:readonly="isDisabled"
|
|
516
517
|
:clearable="!isDisabled"
|
|
517
518
|
/>
|
|
@@ -2109,7 +2110,7 @@ export default defineComponent({
|
|
|
2109
2110
|
: formatDate(i.transferContractFirstPaymentDate)?.toISOString() ?? '',
|
|
2110
2111
|
// @ts-ignore
|
|
2111
2112
|
transferContractCompany:
|
|
2112
|
-
typeof i.transferContractCompany !== 'string' && 'nameRu' in i.transferContractCompany ?
|
|
2113
|
+
typeof i.transferContractCompany !== 'string' && 'nameRu' in i.transferContractCompany ? i.transferContractCompany.nameRu : i.transferContractCompany,
|
|
2113
2114
|
transferContractCompanyId:
|
|
2114
2115
|
// @ts-ignore
|
|
2115
2116
|
typeof i.transferContractCompany !== 'string' && 'ids' in i.transferContractCompany ? i.transferContractCompany.ids : i.transferContractCompanyId,
|
package/composables/classes.ts
CHANGED
|
@@ -498,6 +498,7 @@ export class Member extends Person {
|
|
|
498
498
|
transferContractCompany: Value;
|
|
499
499
|
digitalDocument: IDocument | null;
|
|
500
500
|
chooseChild: string | null;
|
|
501
|
+
chooseChildId: string | null;
|
|
501
502
|
identityDocument: {
|
|
502
503
|
documentType: Value;
|
|
503
504
|
documentNumber: string | null;
|
|
@@ -573,6 +574,7 @@ export class Member extends Person {
|
|
|
573
574
|
confirmDocTypeRod = null,
|
|
574
575
|
isNotary = false,
|
|
575
576
|
chooseChild = null,
|
|
577
|
+
chooseChildId = null,
|
|
576
578
|
) {
|
|
577
579
|
super(id, type, iin, longName, lastName, firstName, middleName, birthDate, gender, genderName, birthPlace, age);
|
|
578
580
|
this.documentsList = [];
|
|
@@ -645,6 +647,7 @@ export class Member extends Person {
|
|
|
645
647
|
this.transferContractCompany = new Value();
|
|
646
648
|
this.digitalDocument = null;
|
|
647
649
|
this.chooseChild = chooseChild;
|
|
650
|
+
this.chooseChildId = chooseChildId;
|
|
648
651
|
this.identityDocument = {
|
|
649
652
|
documentType: new Value(),
|
|
650
653
|
documentNumber: null,
|
|
@@ -1416,6 +1419,7 @@ export class FormStoreClass {
|
|
|
1416
1419
|
surveyByCriticalBasePolicyholder: any;
|
|
1417
1420
|
};
|
|
1418
1421
|
birthInfos: Types.Api.GKB.BirthInfo[];
|
|
1422
|
+
children: Types.Api.Child[];
|
|
1419
1423
|
SaleChanellPolicy: Value;
|
|
1420
1424
|
AgentData: Types.AgentData;
|
|
1421
1425
|
RegionPolicy: Value;
|
|
@@ -1541,6 +1545,7 @@ export class FormStoreClass {
|
|
|
1541
1545
|
surveyByCriticalBasePolicyholder: {},
|
|
1542
1546
|
};
|
|
1543
1547
|
this.birthInfos = [];
|
|
1548
|
+
this.children = [];
|
|
1544
1549
|
this.SaleChanellPolicy = new Value();
|
|
1545
1550
|
this.AgentData = {
|
|
1546
1551
|
agentId: null,
|
package/locales/ru.json
CHANGED
|
@@ -162,6 +162,7 @@
|
|
|
162
162
|
"siblingRelationDoc": "Необходимо вложить документы, подтверждающие родственные связи между Страхователем и Выгодоприобретателем.\nВ случае, если степень родства Выгодоприобретателя выбрано:\n Полнородный брат/сестра или Неполнородный брат/сестра - Необходимо вложить 2 документа: Свидетельство о рождении Выгодоприобретателя и Свидетельство о рождении Страхователя",
|
|
163
163
|
"grandchildRelationDoc": "Необходимо вложить документы, подтверждающие родственные связи между Страхователем и Выгодоприобретателем.\nВ случае, если степень родства Выгодоприобретателя выбрано:\n Внук/Внучка - Необходимо вложить 2 документа: Свидетельство о рождении Выгодоприобретателя и Свидетельство о рождении родителя (который является ребенком страхователя) Выгодоприобретателя",
|
|
164
164
|
"missingDocuments": "Необходимо вложить документы доверенность представителя и сведения о представителе",
|
|
165
|
+
"needSelectRelationDegree": "Сначала необходимо выбрать степень родства"
|
|
165
166
|
},
|
|
166
167
|
"notSignedContract": "Неподписанный Договор",
|
|
167
168
|
"Contract": "Договор страхования",
|
|
@@ -216,6 +217,7 @@
|
|
|
216
217
|
"fromGBDFL": "Государственная база данных физических лиц",
|
|
217
218
|
"fromGKB": "Данные по ребенку Страхователя",
|
|
218
219
|
"fromDD": "Данные из цифрового документа",
|
|
220
|
+
"childData": "Данные по ребенку",
|
|
219
221
|
"sendSMS": "Отправить СМС",
|
|
220
222
|
"sendOtp": "Отправить код подтверждения",
|
|
221
223
|
"check": "Проверить",
|
|
@@ -307,7 +309,9 @@
|
|
|
307
309
|
"searchFoundBeneficiary": "По данному ИИН уже имеется договор. Создание заявки по продукту “ГОНС” - невозможно.",
|
|
308
310
|
"searchNotFoundBeneficiary": "По данному ИИН договор не найден. Нажмите “Создать” для создания новой заявки по продукту “ГОНС”",
|
|
309
311
|
"searchFoundPolicyholder": "Выполните поиск договоров по БИН Страхователя",
|
|
310
|
-
"searchNotFoundPolicyholder": "По данному БИНу не найден договор {product}.\nПроверьте правильность ввода БИН."
|
|
312
|
+
"searchNotFoundPolicyholder": "По данному БИНу не найден договор {product}.\nПроверьте правильность ввода БИН.",
|
|
313
|
+
"chooseChild": "Выберите ребенка",
|
|
314
|
+
"enterParentIin": "Укажите ИИН родителя"
|
|
311
315
|
},
|
|
312
316
|
"sign": {
|
|
313
317
|
"chooseDoc": "Выберите документы для подписание",
|
|
@@ -883,7 +887,8 @@
|
|
|
883
887
|
"eventType": "Тип СС",
|
|
884
888
|
"eventDate": "Дата СС",
|
|
885
889
|
"typePolicyholder": "Тип страхователя",
|
|
886
|
-
"efoMenuItems": "Основные разделы ЕФО"
|
|
890
|
+
"efoMenuItems": "Основные разделы ЕФО",
|
|
891
|
+
"parentIin": "Введите ИИН родителя ребёнка"
|
|
887
892
|
},
|
|
888
893
|
"placeholders": {
|
|
889
894
|
"login": "Логин",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hl-core",
|
|
3
|
-
"version": "0.0.10-beta.
|
|
3
|
+
"version": "0.0.10-beta.69",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"private": false,
|
|
6
6
|
"main": "nuxt.config.ts",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"fast-xml-parser": "4.0.12",
|
|
59
59
|
"jwt-decode": "4.0.0",
|
|
60
60
|
"maska": "1.5.0",
|
|
61
|
-
"ncalayer-js-client": "1.
|
|
61
|
+
"ncalayer-js-client": "1.5.6",
|
|
62
62
|
"pinia": "2.1.7",
|
|
63
63
|
"qrcode.vue": "3.4.1",
|
|
64
64
|
"typescript": "5.3.3",
|
package/store/data.store.ts
CHANGED
|
@@ -2899,7 +2899,7 @@ export const useDataStore = defineStore('data', {
|
|
|
2899
2899
|
data.append('EdsXmlId', groupId);
|
|
2900
2900
|
await this.api.file.uploadXml(data);
|
|
2901
2901
|
} else {
|
|
2902
|
-
const base64EncodedSignature = await ncaLayerClient.
|
|
2902
|
+
const base64EncodedSignature = await ncaLayerClient.createCMSSignatureFromBase64(storageType, document, 'SIGNATURE', true);
|
|
2903
2903
|
await this.api.file.uploadDigitalCertificateNca(groupId, { Base64EncodedSignature: base64EncodedSignature });
|
|
2904
2904
|
}
|
|
2905
2905
|
return true;
|
|
@@ -3546,6 +3546,22 @@ export const useDataStore = defineStore('data', {
|
|
|
3546
3546
|
this.isLoading = false;
|
|
3547
3547
|
}
|
|
3548
3548
|
},
|
|
3549
|
+
async getChildren(iin: string) {
|
|
3550
|
+
this.isLoading = true;
|
|
3551
|
+
try {
|
|
3552
|
+
const res = await this.api.externalServices.getOnlineChildAccess({
|
|
3553
|
+
iinBin: iin.replace(/-/g, ''),
|
|
3554
|
+
methodName: "CHILDREN"
|
|
3555
|
+
})
|
|
3556
|
+
if(res.children && res.children.length) {
|
|
3557
|
+
this.formStore.children = res.children;
|
|
3558
|
+
}
|
|
3559
|
+
} catch (err) {
|
|
3560
|
+
ErrorHandler(err);
|
|
3561
|
+
} finally {
|
|
3562
|
+
this.isLoading = false;
|
|
3563
|
+
}
|
|
3564
|
+
},
|
|
3549
3565
|
async getKgd(iin: string) {
|
|
3550
3566
|
try {
|
|
3551
3567
|
const data = {
|
|
@@ -4221,6 +4237,19 @@ export const useDataStore = defineStore('data', {
|
|
|
4221
4237
|
return null;
|
|
4222
4238
|
}
|
|
4223
4239
|
},
|
|
4240
|
+
async getOnlineChildAccess(iin: string, documentType: string, childId: string) {
|
|
4241
|
+
try {
|
|
4242
|
+
const data = {
|
|
4243
|
+
iinBin: iin.replaceAll('-', ''),
|
|
4244
|
+
documentType: documentType,
|
|
4245
|
+
childId: childId,
|
|
4246
|
+
}
|
|
4247
|
+
return await this.api.externalServices.getOnlineChildAccess(data);
|
|
4248
|
+
} catch (err) {
|
|
4249
|
+
ErrorHandler(err);
|
|
4250
|
+
return null;
|
|
4251
|
+
}
|
|
4252
|
+
},
|
|
4224
4253
|
async getDigitalDocuments(iin: string, code: string, processInstanceId?: string) {
|
|
4225
4254
|
try {
|
|
4226
4255
|
const data = {
|
package/store/rules.ts
CHANGED
|
@@ -332,6 +332,7 @@ export const rules = {
|
|
|
332
332
|
return t('rules.lengthLimit', { len: limit });
|
|
333
333
|
},
|
|
334
334
|
validateAfterContractDate(v: any, date: any) {
|
|
335
|
+
if(!v || !date) return true;
|
|
335
336
|
const parseDate = (str: string): Date => {
|
|
336
337
|
const [day, month, year] = str.split('.');
|
|
337
338
|
return new Date(Number(year), Number(month) - 1, Number(day));
|
package/types/index.ts
CHANGED
|
@@ -925,6 +925,7 @@ export namespace Api {
|
|
|
925
925
|
zagsNameKZ?: string;
|
|
926
926
|
zagsNameRU?: string;
|
|
927
927
|
childGender?: number;
|
|
928
|
+
childId?: string;
|
|
928
929
|
};
|
|
929
930
|
}
|
|
930
931
|
|
|
@@ -979,6 +980,13 @@ export namespace Api {
|
|
|
979
980
|
};
|
|
980
981
|
}
|
|
981
982
|
}
|
|
983
|
+
export type Child = {
|
|
984
|
+
id?: string;
|
|
985
|
+
firstName?: string;
|
|
986
|
+
lastName?: string;
|
|
987
|
+
middleName?: string;
|
|
988
|
+
birthDate?: string;
|
|
989
|
+
}
|
|
982
990
|
}
|
|
983
991
|
|
|
984
992
|
export namespace Dicts {
|