hl-core 0.0.7-beta.18 → 0.0.7-beta.19
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/index.ts +2 -2
- package/components/Form/Documents.vue +0 -2
- package/components/Form/FormBlock.vue +7 -5
- package/components/Form/FormTextSection.vue +1 -0
- package/components/Form/MemberForm.vue +41 -28
- package/components/Form/ProductConditions.vue +3 -3
- package/components/Input/FormInput.vue +2 -4
- package/components/Input/PanelInput.vue +2 -3
- package/components/Input/RoundedInput.vue +1 -4
- package/components/Layout/Drawer.vue +1 -1
- package/composables/classes.ts +5 -5
- package/composables/constants.ts +1 -0
- package/composables/index.ts +11 -0
- package/package.json +1 -1
- package/plugins/helperFunctionsPlugins.ts +4 -1
- package/plugins/storePlugin.ts +6 -6
- package/store/data.store.js +10 -7
- package/store/member.store.ts +1 -1
- package/store/messages.ts +1 -0
- package/store/rules.js +2 -2
- package/composables/models.ts +0 -43
package/api/index.ts
CHANGED
|
@@ -262,7 +262,7 @@ export class ApiClass {
|
|
|
262
262
|
});
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
async getTaskList(data: any) {
|
|
265
|
+
async getTaskList(data: any): Promise<{ items: TaskListItem[]; totalItems: number }> {
|
|
266
266
|
return this.axiosCall({
|
|
267
267
|
method: Methods.POST,
|
|
268
268
|
url: `/Arm/api/Bpm/TaskList`,
|
|
@@ -270,7 +270,7 @@ export class ApiClass {
|
|
|
270
270
|
});
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
async getProcessHistory(id:
|
|
273
|
+
async getProcessHistory(id: string): Promise<TaskHistory[]> {
|
|
274
274
|
return this.axiosCall({
|
|
275
275
|
url: `/Arm/api/Bpm/GetProcessHistory?processInstanceId=${id}`,
|
|
276
276
|
});
|
|
@@ -30,8 +30,6 @@ import { DocumentItem } from '@/composables/classes';
|
|
|
30
30
|
|
|
31
31
|
export default defineComponent({
|
|
32
32
|
setup() {
|
|
33
|
-
type FileActions = 'view' | 'download';
|
|
34
|
-
|
|
35
33
|
const dataStore = useDataStore();
|
|
36
34
|
const formStore = useFormStore();
|
|
37
35
|
const currentDocument = ref<DocumentItem>(new DocumentItem());
|
|
@@ -56,6 +56,8 @@
|
|
|
56
56
|
</template>
|
|
57
57
|
|
|
58
58
|
<script lang="ts">
|
|
59
|
+
import { Member } from '@/composables/classes';
|
|
60
|
+
|
|
59
61
|
export default defineComponent({
|
|
60
62
|
props: {
|
|
61
63
|
title: {
|
|
@@ -67,7 +69,7 @@ export default defineComponent({
|
|
|
67
69
|
default: '',
|
|
68
70
|
},
|
|
69
71
|
whichForm: {
|
|
70
|
-
type: String as PropType<
|
|
72
|
+
type: String as PropType<MemberFormTypes>,
|
|
71
73
|
default: '',
|
|
72
74
|
},
|
|
73
75
|
more: {
|
|
@@ -84,14 +86,14 @@ export default defineComponent({
|
|
|
84
86
|
const isMultiple = ref(multipleMembers.includes(props.whichForm));
|
|
85
87
|
const member = formStore[props.whichForm as keyof typeof formStore];
|
|
86
88
|
|
|
87
|
-
const getMemberInfo = (memberData:
|
|
89
|
+
const getMemberInfo = (memberData: Member) => {
|
|
88
90
|
return {
|
|
89
91
|
fullName: computed(() => (memberData && memberData.getFullNameShorted() ? memberData.getFullNameShorted() : null)).value,
|
|
90
92
|
iin: computed(() => (memberData && memberData.iin ? memberData.iin : null)).value,
|
|
91
|
-
gender: computed(() => (memberData && memberData.gender.nameRu ? memberData.gender.nameRu.charAt(0) : null)).value,
|
|
93
|
+
gender: computed(() => (memberData && memberData.gender.nameRu ? (memberData.gender.nameRu as string).charAt(0) : null)).value,
|
|
92
94
|
birthDate: computed(() => (memberData && memberData.birthDate ? memberData.birthDate : null)).value,
|
|
93
|
-
birthPlace: computed(() => (memberData && memberData.birthPlace.nameRu ? memberData.birthPlace.nameRu.
|
|
94
|
-
sectorCode: computed(() => (memberData && memberData.economySectorCode.ids ? memberData.economySectorCode.ids.slice(-1) : null)).value,
|
|
95
|
+
birthPlace: computed(() => (memberData && memberData.birthPlace.nameRu ? (memberData.birthPlace.nameRu as string).substring(0, 3) : null)).value,
|
|
96
|
+
sectorCode: computed(() => (memberData && memberData.economySectorCode.ids ? (memberData.economySectorCode.ids as string).slice(-1) : null)).value,
|
|
95
97
|
};
|
|
96
98
|
};
|
|
97
99
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
<div class="flex flex-col justify-between rounded-lg" :class="[$libStyles.whiteBg]">
|
|
3
3
|
<span v-if="title" class="p-4" :class="[$libStyles.textTitle]">{{ title }}</span>
|
|
4
4
|
<span v-if="subtitle" class="p-4 text-[#99A3B3] border-t-[1px]" :class="[$libStyles.textSimple]">{{ subtitle }}</span>
|
|
5
|
+
<slot></slot>
|
|
5
6
|
</div>
|
|
6
7
|
</template>
|
|
7
8
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<base-form-input
|
|
6
6
|
v-model="member.iin"
|
|
7
7
|
:label="$t('form.iin')"
|
|
8
|
-
maska="
|
|
8
|
+
:maska="$maska.iin"
|
|
9
9
|
:readonly="isDisabled || isIinPhoneDisabled"
|
|
10
10
|
:clearable="!isDisabled"
|
|
11
11
|
append-inner-icon="mdi mdi-magnify"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<base-form-input
|
|
16
16
|
v-model="member.phoneNumber"
|
|
17
17
|
:label="$t('form.phoneNumber')"
|
|
18
|
-
maska="
|
|
18
|
+
:maska="$maska.phone"
|
|
19
19
|
:readonly="isDisabled || isIinPhoneDisabled"
|
|
20
20
|
:clearable="!isDisabled"
|
|
21
21
|
:append-inner-icon="otpCondition ? 'mdi mdi-phone-message' : ''"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
v-if="otpCondition && member.otpTokenId"
|
|
29
29
|
v-model="member.otpCode"
|
|
30
30
|
:label="$t('form.otpCode')"
|
|
31
|
-
maska="
|
|
31
|
+
:maska="$maska.otp"
|
|
32
32
|
:append-inner-icon="hasOtp ? 'mdi mdi-check' : ''"
|
|
33
33
|
@keyup.enter.prevent="hasOtp ? checkOtp() : null"
|
|
34
34
|
></base-form-input>
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
:clearable="!isDisabled"
|
|
61
61
|
:label="$t('form.birthDate')"
|
|
62
62
|
:rules="$rules.required.concat($rules.birthDate)"
|
|
63
|
-
maska="
|
|
63
|
+
:maska="$maska.date"
|
|
64
64
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
65
65
|
></base-form-input>
|
|
66
66
|
<base-form-input
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
:readonly="isDisabled"
|
|
154
154
|
:clearable="!isDisabled"
|
|
155
155
|
:rules="$rules.date"
|
|
156
|
-
maska="
|
|
156
|
+
:maska="$maska.date"
|
|
157
157
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
158
158
|
></base-form-input>
|
|
159
159
|
<base-form-input
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
:readonly="isDisabled"
|
|
163
163
|
:clearable="!isDisabled"
|
|
164
164
|
:rules="$rules.date"
|
|
165
|
-
maska="
|
|
165
|
+
:maska="$maska.date"
|
|
166
166
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
167
167
|
></base-form-input>
|
|
168
168
|
<base-form-input v-model="member.migrationCard" :label="$t('policyholdersRepresentative.numberVisa')"></base-form-input>
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
:readonly="isDisabled"
|
|
173
173
|
:clearable="!isDisabled"
|
|
174
174
|
:rules="$rules.date"
|
|
175
|
-
maska="
|
|
175
|
+
:maska="$maska.date"
|
|
176
176
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
177
177
|
></base-form-input>
|
|
178
178
|
<base-form-input
|
|
@@ -181,7 +181,7 @@
|
|
|
181
181
|
:readonly="isDisabled"
|
|
182
182
|
:clearable="!isDisabled"
|
|
183
183
|
:rules="$rules.date"
|
|
184
|
-
maska="
|
|
184
|
+
:maska="$maska.date"
|
|
185
185
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
186
186
|
></base-form-input>
|
|
187
187
|
<base-form-toggle
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
:readonly="isDisabled"
|
|
218
218
|
:clearable="!isDisabled"
|
|
219
219
|
:rules="formStore.policyholdersRepresentativeForm.isNotary ? $rules.required.concat($rules.date) : []"
|
|
220
|
-
maska="
|
|
220
|
+
:maska="$maska.date"
|
|
221
221
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
222
222
|
></base-form-input>
|
|
223
223
|
</base-form-section>
|
|
@@ -281,7 +281,7 @@
|
|
|
281
281
|
@append="openPanel($t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
|
|
282
282
|
></base-panel-input>
|
|
283
283
|
<!-- <base-form-input v-if="$dataStore.isGons" v-model="member.postIndex" :readonly="isDisabled"
|
|
284
|
-
:clearable="!isDisabled" :label="$t('form.postIndex')" maska="
|
|
284
|
+
:clearable="!isDisabled" :label="$t('form.postIndex')" :maska="$maska.post"></base-form-input> -->
|
|
285
285
|
<base-form-input v-model="member.registrationQuarter" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.Quarter')"></base-form-input>
|
|
286
286
|
<base-form-input v-model="member.registrationMicroDistrict" :readonly="isDisabled" :clearable="!isDisabled" :label="$t('form.MicroDistrict')"></base-form-input>
|
|
287
287
|
<base-form-input
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
:readonly="isDisabled"
|
|
365
365
|
:clearable="!isDisabled"
|
|
366
366
|
:rules="$rules.required.concat($rules.date)"
|
|
367
|
-
maska="
|
|
367
|
+
:maska="$maska.date"
|
|
368
368
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
369
369
|
></base-form-input>
|
|
370
370
|
<base-fade-transition>
|
|
@@ -375,7 +375,7 @@
|
|
|
375
375
|
:readonly="isDisabled"
|
|
376
376
|
:clearable="!isDisabled"
|
|
377
377
|
:rules="$rules.required.concat($rules.date)"
|
|
378
|
-
maska="
|
|
378
|
+
:maska="$maska.date"
|
|
379
379
|
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
380
380
|
></base-form-input>
|
|
381
381
|
</base-fade-transition>
|
|
@@ -446,7 +446,7 @@
|
|
|
446
446
|
<base-form-section :title="$t('form.contactsData')" v-if="$dataStore.hasContactSection(whichForm)">
|
|
447
447
|
<base-form-input
|
|
448
448
|
v-model="member.homePhone"
|
|
449
|
-
maska="
|
|
449
|
+
:maska="$maska.phone"
|
|
450
450
|
placeholder="+7 7"
|
|
451
451
|
:label="$t('form.homePhone')"
|
|
452
452
|
:readonly="isDisabled"
|
|
@@ -456,7 +456,7 @@
|
|
|
456
456
|
<base-form-input v-model.trim="member.email" :label="$t('form.email')" :rules="$rules.email"></base-form-input>
|
|
457
457
|
</base-form-section>
|
|
458
458
|
</v-form>
|
|
459
|
-
<base-btn v-if="
|
|
459
|
+
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$t('buttons.save')" @click="submitForm"></base-btn>
|
|
460
460
|
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
461
461
|
<div :class="[$libStyles.scrollPage]" class="flex flex-col items-center">
|
|
462
462
|
<base-rounded-input v-model="searchQuery" :label="$t('labels.search')" class="w-full p-2" :hide-details="true"></base-rounded-input>
|
|
@@ -495,8 +495,6 @@ import { uuid } from 'vue-uuid';
|
|
|
495
495
|
|
|
496
496
|
export default {
|
|
497
497
|
setup() {
|
|
498
|
-
type FileActions = 'view' | 'download';
|
|
499
|
-
|
|
500
498
|
const vForm = ref<any>();
|
|
501
499
|
const route = useRoute();
|
|
502
500
|
const router = useRouter();
|
|
@@ -522,22 +520,36 @@ export default {
|
|
|
522
520
|
|
|
523
521
|
const whichForm = computed(() => route.query.tab);
|
|
524
522
|
const whichIndex = computed(() => route.query.i);
|
|
525
|
-
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length ===
|
|
523
|
+
const hasOtp = computed(() => member.value.otpCode && member.value.otpCode.length === useMask().otp.length);
|
|
526
524
|
const isDisabled = computed(() => !memberStore.isStatementEditible(whichForm.value as string));
|
|
527
525
|
const isTask = computed(() => route.params.taskId === '0' || dataStore.isTask());
|
|
528
526
|
const isIinPhoneDisabled = computed(() => formStore.applicationData && 'regNumber' in formStore.applicationData && whichForm.value === formStore.policyholderFormKey);
|
|
529
527
|
const isFromGBD = computed(() => !!member.value.gosPersonData);
|
|
528
|
+
const showSaveButton = computed(() => {
|
|
529
|
+
const generalCondition = !isDisabled.value && !!isTask.value && !!dataStore.isInitiator();
|
|
530
|
+
const perMemberCondtion = () => {
|
|
531
|
+
switch (whichForm.value) {
|
|
532
|
+
case formStore.policyholderFormKey:
|
|
533
|
+
return true;
|
|
534
|
+
case formStore.insuredFormKey:
|
|
535
|
+
case formStore.beneficiaryFormKey:
|
|
536
|
+
case formStore.beneficialOwnerFormKey:
|
|
537
|
+
case formStore.policyholdersRepresentativeFormKey:
|
|
538
|
+
return route.params.taskId !== '0';
|
|
539
|
+
default:
|
|
540
|
+
return false;
|
|
541
|
+
}
|
|
542
|
+
};
|
|
543
|
+
return generalCondition && perMemberCondtion();
|
|
544
|
+
});
|
|
530
545
|
|
|
531
546
|
const getOtpConditionByMember = () => {
|
|
532
547
|
switch (whichForm.value) {
|
|
533
548
|
case formStore.policyholderFormKey:
|
|
534
549
|
return route.params.taskId === '0';
|
|
535
550
|
case formStore.policyholdersRepresentativeFormKey:
|
|
536
|
-
return route.query.id === '0';
|
|
537
551
|
case formStore.insuredFormKey:
|
|
538
|
-
return route.query.id === '0';
|
|
539
552
|
case formStore.beneficiaryFormKey:
|
|
540
|
-
return route.query.id === '0';
|
|
541
553
|
case formStore.beneficialOwnerFormKey:
|
|
542
554
|
return route.query.id === '0';
|
|
543
555
|
}
|
|
@@ -545,7 +557,7 @@ export default {
|
|
|
545
557
|
const otpCondition = computed(() => {
|
|
546
558
|
// Add conditions by product
|
|
547
559
|
if (member.value.hasAgreement) return false;
|
|
548
|
-
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !==
|
|
560
|
+
if (!member.value.phoneNumber || (member.value.phoneNumber && member.value.phoneNumber.length !== useMask().phone.length)) return false;
|
|
549
561
|
return getOtpConditionByMember();
|
|
550
562
|
});
|
|
551
563
|
|
|
@@ -622,7 +634,7 @@ export default {
|
|
|
622
634
|
if (fileData.value) {
|
|
623
635
|
Object.values(fileData.value.file).map((value: any) => {
|
|
624
636
|
formData.append('file', value);
|
|
625
|
-
const ext = value.name.
|
|
637
|
+
const ext = value.name.substring(value.name.lastIndexOf('.'));
|
|
626
638
|
information.push({
|
|
627
639
|
identifier: `${uuidV4}${ext}`,
|
|
628
640
|
iin: member.value.iin ? member.value.iin.replaceAll('-', '') : null,
|
|
@@ -661,7 +673,7 @@ export default {
|
|
|
661
673
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
662
674
|
return;
|
|
663
675
|
}
|
|
664
|
-
if (!member.value.iin || member.value.iin.length !==
|
|
676
|
+
if (!member.value.iin || member.value.iin.length !== useMask().iin.length || !member.value.phoneNumber || member.value.phoneNumber.length !== useMask().phone.length) {
|
|
665
677
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField').replace('{text}', 'Номер телефона, ИИН'), 5000);
|
|
666
678
|
return;
|
|
667
679
|
}
|
|
@@ -678,7 +690,7 @@ export default {
|
|
|
678
690
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'), 3000);
|
|
679
691
|
return;
|
|
680
692
|
}
|
|
681
|
-
if (!member.value.iin || member.value.iin.length !==
|
|
693
|
+
if (!member.value.iin || member.value.iin.length !== useMask().iin.length) {
|
|
682
694
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField').replace('{text}', 'ИИН'), 5000);
|
|
683
695
|
return;
|
|
684
696
|
}
|
|
@@ -774,7 +786,7 @@ export default {
|
|
|
774
786
|
}
|
|
775
787
|
dataStore.showToaster('success', dataStore.t('toaster.successSaved'));
|
|
776
788
|
dataStore.isLoading = false;
|
|
777
|
-
|
|
789
|
+
vForm.value.scrollTo({ top: 0, behavior: 'smooth' });
|
|
778
790
|
};
|
|
779
791
|
|
|
780
792
|
const submitForm = async () => {
|
|
@@ -832,7 +844,7 @@ export default {
|
|
|
832
844
|
};
|
|
833
845
|
|
|
834
846
|
const checkOtp = async () => {
|
|
835
|
-
if (!member.value.otpCode || member.value.iin?.length !==
|
|
847
|
+
if (!member.value.otpCode || member.value.iin?.length !== useMask().iin.length || member.value.phoneNumber?.length !== useMask().phone.length ) {
|
|
836
848
|
dataStore.showToaster('error', dataStore.t('toaster.errorFormField').replace('{text}', dataStore.t('form.otpCode')), 3000);
|
|
837
849
|
return;
|
|
838
850
|
}
|
|
@@ -902,7 +914,7 @@ export default {
|
|
|
902
914
|
watch(
|
|
903
915
|
() => member.value.birthDate,
|
|
904
916
|
val => {
|
|
905
|
-
if (val && val.length ===
|
|
917
|
+
if (val && val.length === useMask().date.length) {
|
|
906
918
|
const calculatedAge = member.value.getAgeByBirthDate();
|
|
907
919
|
if (calculatedAge) member.value.age = calculatedAge;
|
|
908
920
|
}
|
|
@@ -912,7 +924,7 @@ export default {
|
|
|
912
924
|
watch(
|
|
913
925
|
() => member.value.otpCode,
|
|
914
926
|
async () => {
|
|
915
|
-
if (member.value.otpCode && member.value.otpCode.length ===
|
|
927
|
+
if (member.value.otpCode && member.value.otpCode.length === useMask().otp.length) {
|
|
916
928
|
await checkOtp();
|
|
917
929
|
}
|
|
918
930
|
},
|
|
@@ -965,6 +977,7 @@ export default {
|
|
|
965
977
|
isTask,
|
|
966
978
|
isIinPhoneDisabled,
|
|
967
979
|
isFromGBD,
|
|
980
|
+
showSaveButton,
|
|
968
981
|
|
|
969
982
|
// Functions
|
|
970
983
|
searchMember,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<div v-if="isRecalculation && $route.params.taskId === '0'">
|
|
18
18
|
<base-form-input
|
|
19
19
|
v-model="formStore.productConditionsForm.signDate"
|
|
20
|
-
maska="
|
|
20
|
+
:maska="$maska.date"
|
|
21
21
|
:clearable="false"
|
|
22
22
|
:readonly="true"
|
|
23
23
|
:label="$t('form.signDate')"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
></base-form-input>
|
|
26
26
|
<base-form-input
|
|
27
27
|
v-model="formStore.productConditionsForm.birthDate"
|
|
28
|
-
maska="
|
|
28
|
+
:maska="$maska.date"
|
|
29
29
|
:readonly="isDisabled"
|
|
30
30
|
:clearable="!isDisabled"
|
|
31
31
|
:label="$t('form.birthDate')"
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
</div>
|
|
46
46
|
<base-form-input
|
|
47
47
|
v-model="formStore.productConditionsForm.coverPeriod"
|
|
48
|
-
maska="
|
|
48
|
+
:maska="$maska.numbers"
|
|
49
49
|
:readonly="isDisabled"
|
|
50
50
|
:clearable="!isDisabled"
|
|
51
51
|
:rules="$rules.required.concat($rules.numbers, $rules.coverPeriodFrom3to20)"
|
|
@@ -35,10 +35,8 @@
|
|
|
35
35
|
</template>
|
|
36
36
|
|
|
37
37
|
<script lang="ts">
|
|
38
|
-
import { InputTypes } from '@/composables/models';
|
|
39
|
-
|
|
40
38
|
export default defineComponent({
|
|
41
|
-
name: '
|
|
39
|
+
name: 'BaseFormInput',
|
|
42
40
|
props: {
|
|
43
41
|
modelValue: {
|
|
44
42
|
required: false,
|
|
@@ -87,7 +85,7 @@ export default defineComponent({
|
|
|
87
85
|
default: 'text',
|
|
88
86
|
},
|
|
89
87
|
variant: {
|
|
90
|
-
type: String as PropType<
|
|
88
|
+
type: String as PropType<InputVariants>,
|
|
91
89
|
default: 'solo',
|
|
92
90
|
},
|
|
93
91
|
color: {
|
|
@@ -37,11 +37,10 @@
|
|
|
37
37
|
</template>
|
|
38
38
|
|
|
39
39
|
<script lang="ts">
|
|
40
|
-
import { InputTypes } from '@/composables/models';
|
|
41
40
|
import { Value } from '@/composables/classes';
|
|
42
41
|
|
|
43
42
|
export default defineComponent({
|
|
44
|
-
name: '
|
|
43
|
+
name: 'BasePanelInput',
|
|
45
44
|
props: {
|
|
46
45
|
modelValue: {
|
|
47
46
|
required: false,
|
|
@@ -90,7 +89,7 @@ export default defineComponent({
|
|
|
90
89
|
default: 'text',
|
|
91
90
|
},
|
|
92
91
|
variant: {
|
|
93
|
-
type: String as PropType<
|
|
92
|
+
type: String as PropType<InputVariants>,
|
|
94
93
|
default: 'solo',
|
|
95
94
|
},
|
|
96
95
|
color: {
|
|
@@ -34,10 +34,7 @@
|
|
|
34
34
|
</template>
|
|
35
35
|
|
|
36
36
|
<script lang="ts">
|
|
37
|
-
import { InputTypes } from '@/composables/models';
|
|
38
|
-
|
|
39
37
|
export default defineComponent({
|
|
40
|
-
extends: {},
|
|
41
38
|
name: 'BaseRoundedInput',
|
|
42
39
|
props: {
|
|
43
40
|
modelValue: {
|
|
@@ -84,7 +81,7 @@ export default defineComponent({
|
|
|
84
81
|
default: 'text',
|
|
85
82
|
},
|
|
86
83
|
variant: {
|
|
87
|
-
type: String as PropType<
|
|
84
|
+
type: String as PropType<InputVariants>,
|
|
88
85
|
default: 'solo',
|
|
89
86
|
},
|
|
90
87
|
color: {
|
package/composables/classes.ts
CHANGED
|
@@ -807,7 +807,7 @@ export class DataStoreClass {
|
|
|
807
807
|
historyTotalItems: number;
|
|
808
808
|
isColumnAsc = { ...InitialColumns() };
|
|
809
809
|
idleKey: number;
|
|
810
|
-
processList:
|
|
810
|
+
processList: Item[] | null;
|
|
811
811
|
countries: Value[];
|
|
812
812
|
citizenshipCountries: Value[];
|
|
813
813
|
taxCountries: Value[];
|
|
@@ -839,13 +839,13 @@ export class DataStoreClass {
|
|
|
839
839
|
processPaymentPeriod: any[];
|
|
840
840
|
additionalInsuranceTerms: any[];
|
|
841
841
|
additionalInsuranceTermsWithout: any[];
|
|
842
|
-
taskList:
|
|
843
|
-
processHistory:
|
|
842
|
+
taskList: TaskListItem[];
|
|
843
|
+
processHistory: TaskHistory[];
|
|
844
844
|
contragentList: any[];
|
|
845
845
|
contragentFormKey: string;
|
|
846
846
|
processCode: number | null;
|
|
847
847
|
groupCode: string;
|
|
848
|
-
userGroups:
|
|
848
|
+
userGroups: Item[];
|
|
849
849
|
onMainPage: boolean;
|
|
850
850
|
signUrl: string | null;
|
|
851
851
|
SaleChanellPolicyList: any[];
|
|
@@ -872,7 +872,7 @@ export class DataStoreClass {
|
|
|
872
872
|
this.controls = {
|
|
873
873
|
onAuth: false,
|
|
874
874
|
hasGBDFL: true,
|
|
875
|
-
hasInsis:
|
|
875
|
+
hasInsis: false,
|
|
876
876
|
hasCalculator: false,
|
|
877
877
|
};
|
|
878
878
|
this.hasLayoutMargins = true;
|
package/composables/constants.ts
CHANGED
package/composables/index.ts
CHANGED
|
@@ -3,6 +3,17 @@ import jwt_decode from 'jwt-decode';
|
|
|
3
3
|
import { XMLParser } from 'fast-xml-parser';
|
|
4
4
|
import { AxiosError } from 'axios';
|
|
5
5
|
|
|
6
|
+
export class Masks {
|
|
7
|
+
numbers: string = '#*';
|
|
8
|
+
otp: string = '# # # #';
|
|
9
|
+
iin: string = '###-###-###-###';
|
|
10
|
+
phone: string = '+7 (7##) ### ## ##';
|
|
11
|
+
date: string = '##.##.####';
|
|
12
|
+
post: string = '######';
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const useMask = () => new Masks();
|
|
16
|
+
|
|
6
17
|
export const useDisplayInfo = useDisplay;
|
|
7
18
|
|
|
8
19
|
export const capitalize = (word: string): string => (word ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() : word);
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { capitalize, getFullNameShorted, reformatIin } from '../composables';
|
|
1
|
+
import { capitalize, getFullNameShorted, reformatIin, Masks } from '../composables';
|
|
2
2
|
import { constants } from '../composables/constants';
|
|
3
|
+
import { Styles } from '../composables/styles';
|
|
3
4
|
import Vidle from 'v-idle-3';
|
|
4
5
|
import Maska from 'maska';
|
|
5
6
|
|
|
@@ -11,6 +12,8 @@ export default defineNuxtPlugin(nuxtApp => {
|
|
|
11
12
|
provide: {
|
|
12
13
|
capitalize: capitalize,
|
|
13
14
|
getFullNameShorted: getFullNameShorted,
|
|
15
|
+
libStyles: new Styles(),
|
|
16
|
+
maska: new Masks(),
|
|
14
17
|
reformatIin: reformatIin,
|
|
15
18
|
constants: constants,
|
|
16
19
|
},
|
package/plugins/storePlugin.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { useDataStore } from '../store/data.store';
|
|
2
|
-
import { Styles } from '../composables/styles';
|
|
3
2
|
|
|
4
3
|
export default defineNuxtPlugin(nuxtApp => {
|
|
4
|
+
const dataStore = useDataStore();
|
|
5
|
+
|
|
5
6
|
nuxtApp.vueApp.use(useDataStore().toast.default, {
|
|
6
7
|
transition: 'Vue-Toastification__fade',
|
|
7
8
|
maxToasts: 5,
|
|
@@ -10,11 +11,10 @@ export default defineNuxtPlugin(nuxtApp => {
|
|
|
10
11
|
|
|
11
12
|
return {
|
|
12
13
|
provide: {
|
|
13
|
-
dataStore:
|
|
14
|
-
rules:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
toast: useDataStore().showToaster,
|
|
14
|
+
dataStore: dataStore,
|
|
15
|
+
rules: dataStore.rules,
|
|
16
|
+
t: dataStore.t,
|
|
17
|
+
toast: dataStore.showToaster,
|
|
18
18
|
},
|
|
19
19
|
};
|
|
20
20
|
});
|
package/store/data.store.js
CHANGED
|
@@ -52,8 +52,11 @@ export const useDataStore = defineStore('data', {
|
|
|
52
52
|
sendToParent(action, value) {
|
|
53
53
|
window.parent.postMessage({ action: action, value: value }, '*');
|
|
54
54
|
},
|
|
55
|
+
getChildIframe() {
|
|
56
|
+
return document.getElementById('product-iframe');
|
|
57
|
+
},
|
|
55
58
|
sendToChild(action, value) {
|
|
56
|
-
const childFrame =
|
|
59
|
+
const childFrame = this.getChildIframe();
|
|
57
60
|
if (childFrame && childFrame.contentWindow && childFrame.contentWindow.postMessage) {
|
|
58
61
|
childFrame.contentWindow.postMessage({ action: action, value: value }, '*');
|
|
59
62
|
}
|
|
@@ -107,18 +110,15 @@ export const useDataStore = defineStore('data', {
|
|
|
107
110
|
}
|
|
108
111
|
if (this.controls.onAuth) {
|
|
109
112
|
const hasPermission =
|
|
110
|
-
this.
|
|
113
|
+
this.isInitiator() ||
|
|
111
114
|
this.isUnderwriter() ||
|
|
112
115
|
this.isAdmin() ||
|
|
113
|
-
this.isAgent() ||
|
|
114
116
|
this.isCompliance() ||
|
|
115
|
-
this.isAgentMycar() ||
|
|
116
117
|
this.isAnalyst() ||
|
|
117
118
|
this.isUpk() ||
|
|
118
119
|
this.isFinanceCenter() ||
|
|
119
120
|
this.isSupervisor() ||
|
|
120
|
-
this.isSupport()
|
|
121
|
-
this.isManagerHalykBank();
|
|
121
|
+
this.isSupport();
|
|
122
122
|
if (hasPermission) {
|
|
123
123
|
localStorage.setItem('accessToken', this.accessToken);
|
|
124
124
|
localStorage.setItem('refreshToken', this.refreshToken);
|
|
@@ -159,7 +159,7 @@ export const useDataStore = defineStore('data', {
|
|
|
159
159
|
return !!isRole;
|
|
160
160
|
},
|
|
161
161
|
isInitiator() {
|
|
162
|
-
return this.isManager() || this.isAgent() || this.isAgentMycar() || this.isManagerHalykBank();
|
|
162
|
+
return this.isManager() || this.isAgent() || this.isAgentMycar() || this.isManagerHalykBank() || this.isServiceManager();
|
|
163
163
|
},
|
|
164
164
|
isManager() {
|
|
165
165
|
return this.isRole(constants.roles.manager);
|
|
@@ -176,6 +176,9 @@ export const useDataStore = defineStore('data', {
|
|
|
176
176
|
isManagerHalykBank() {
|
|
177
177
|
return this.isRole(constants.roles.managerHalykBank);
|
|
178
178
|
},
|
|
179
|
+
isServiceManager() {
|
|
180
|
+
return this.isRole(constants.roles.serviceManager);
|
|
181
|
+
},
|
|
179
182
|
isUnderwriter() {
|
|
180
183
|
return this.isRole(constants.roles.underwriter);
|
|
181
184
|
},
|
package/store/member.store.ts
CHANGED
|
@@ -219,7 +219,7 @@ export const useMemberStore = defineStore('members', {
|
|
|
219
219
|
let otpStatus: boolean = false;
|
|
220
220
|
let otpResponse: any = {};
|
|
221
221
|
try {
|
|
222
|
-
if (member.iin && member.phoneNumber && member.iin.length ===
|
|
222
|
+
if (member.iin && member.phoneNumber && member.iin.length === useMask().iin.length && member.phoneNumber.length === useMask().phone.length) {
|
|
223
223
|
const status = await this.getOtpStatus(member.iin, member.phoneNumber, processInstanceId);
|
|
224
224
|
if (status === true) {
|
|
225
225
|
this.dataStore.showToaster('success', this.dataStore.t('toaster.hasSuccessOtp'), 3000);
|
package/store/messages.ts
CHANGED
package/store/rules.js
CHANGED
|
@@ -63,7 +63,7 @@ export const rules = {
|
|
|
63
63
|
],
|
|
64
64
|
iinRight: [
|
|
65
65
|
v => {
|
|
66
|
-
if (v.length !==
|
|
66
|
+
if (v.length !== useMask().iin.length) {
|
|
67
67
|
return t('rules.iinRight');
|
|
68
68
|
}
|
|
69
69
|
return true;
|
|
@@ -75,7 +75,7 @@ export const rules = {
|
|
|
75
75
|
if (v === null || v == '') {
|
|
76
76
|
return true;
|
|
77
77
|
}
|
|
78
|
-
if (v && v.length ===
|
|
78
|
+
if (v && v.length === useMask().phone.length) {
|
|
79
79
|
return true;
|
|
80
80
|
} else {
|
|
81
81
|
return t('rules.phoneFormat');
|
package/composables/models.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export type InputTypes =
|
|
2
|
-
| 'button'
|
|
3
|
-
| 'checkbox'
|
|
4
|
-
| 'color'
|
|
5
|
-
| 'date'
|
|
6
|
-
| 'datetime-local'
|
|
7
|
-
| 'email'
|
|
8
|
-
| 'file'
|
|
9
|
-
| 'hidden'
|
|
10
|
-
| 'image'
|
|
11
|
-
| 'month'
|
|
12
|
-
| 'number'
|
|
13
|
-
| 'password'
|
|
14
|
-
| 'radio'
|
|
15
|
-
| 'range'
|
|
16
|
-
| 'reset'
|
|
17
|
-
| 'search'
|
|
18
|
-
| 'submit'
|
|
19
|
-
| 'tel'
|
|
20
|
-
| 'text'
|
|
21
|
-
| 'time'
|
|
22
|
-
| 'url'
|
|
23
|
-
| 'week';
|
|
24
|
-
|
|
25
|
-
export type TaskListItem = {
|
|
26
|
-
addRegNumber: string | number;
|
|
27
|
-
applicationTaskId: string;
|
|
28
|
-
dateCreated: string;
|
|
29
|
-
historyStatus: string;
|
|
30
|
-
historyStatusTitle: string;
|
|
31
|
-
id: string;
|
|
32
|
-
iin: string;
|
|
33
|
-
insurerIin: string;
|
|
34
|
-
insurerLongName: string;
|
|
35
|
-
isTask: boolean | number;
|
|
36
|
-
longName: string;
|
|
37
|
-
number: string;
|
|
38
|
-
processCode: number;
|
|
39
|
-
processCodeTitle: string;
|
|
40
|
-
status: string;
|
|
41
|
-
userId: string;
|
|
42
|
-
userName: string;
|
|
43
|
-
};
|