hl-core 0.0.9-beta.1 → 0.0.9-beta.11
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 +147 -147
- package/api/interceptors.ts +16 -14
- package/components/Button/Btn.vue +3 -3
- package/components/Complex/ContentBlock.vue +1 -1
- package/components/Complex/MessageBlock.vue +26 -0
- package/components/Complex/Page.vue +7 -1
- package/components/Complex/WhiteBlock.vue +7 -0
- package/components/Dialog/Dialog.vue +2 -2
- package/components/Dialog/FamilyDialog.vue +5 -5
- package/components/Form/FormBlock.vue +25 -27
- package/components/Form/FormSection.vue +2 -2
- package/components/Form/FormTextSection.vue +3 -3
- package/components/Form/FormToggle.vue +3 -3
- package/components/Form/ManagerAttachment.vue +55 -42
- package/components/Form/ProductConditionsBlock.vue +16 -16
- package/components/Input/EmptyFormField.vue +1 -1
- package/components/Input/FileInput.vue +0 -1
- package/components/Input/Monthpicker.vue +33 -0
- package/components/Input/RoundedEmptyField.vue +5 -0
- package/components/Input/RoundedSelect.vue +13 -0
- package/components/Layout/Drawer.vue +2 -1
- package/components/Layout/Header.vue +1 -1
- package/components/Layout/SettingsPanel.vue +5 -9
- package/components/List/ListEmpty.vue +1 -1
- package/components/Menu/MenuHover.vue +1 -1
- package/components/Menu/MenuNav.vue +1 -1
- package/components/Menu/MenuNavItem.vue +4 -4
- package/components/Pages/Anketa.vue +86 -45
- package/components/Pages/Auth.vue +9 -9
- package/components/Pages/ContragentForm.vue +505 -0
- package/components/Pages/Documents.vue +5 -5
- package/components/Pages/InvoiceInfo.vue +1 -1
- package/components/Pages/MemberForm.vue +35 -28
- package/components/Pages/ProductAgreement.vue +1 -3
- package/components/Pages/ProductConditions.vue +58 -21
- package/components/Panel/PanelHandler.vue +32 -15
- package/components/Panel/PanelSelectItem.vue +3 -3
- package/components/Utilities/IconBorder.vue +17 -0
- package/composables/axios.ts +1 -1
- package/composables/classes.ts +23 -11
- package/composables/constants.ts +5 -0
- package/composables/index.ts +30 -4
- package/composables/styles.ts +19 -9
- package/configs/i18n.ts +0 -2
- package/layouts/default.vue +5 -2
- package/layouts/full.vue +1 -1
- package/locales/ru.json +106 -2
- package/nuxt.config.ts +1 -1
- package/package.json +12 -21
- package/pages/500.vue +2 -2
- package/pages/Token.vue +1 -0
- package/plugins/helperFunctionsPlugins.ts +6 -7
- package/store/data.store.ts +111 -100
- package/store/rules.ts +12 -2
- package/types/index.ts +45 -27
- package/components/Button/BtnIcon.vue +0 -47
- package/locales/kz.json +0 -585
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
<section class="flex flex-col gap-4 px-[10px]">
|
|
3
3
|
<v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[82svh] overflow-y-scroll">
|
|
4
4
|
<div v-if="memberSetting && memberSetting.has === true && memberSetting.isMultiple === true" class="flex items-center mt-[14px] min-h-[54px]">
|
|
5
|
-
<div :class="[$
|
|
5
|
+
<div :class="[$styles.blueBgLight]" class="flex flex-wrap items-center gap-2 p-1 rounded-t-[8px] h-full">
|
|
6
6
|
<div
|
|
7
7
|
v-for="(each, index) of formStore[whichForm]"
|
|
8
8
|
:key="index"
|
|
9
9
|
class="pl-3 pr-1 py-1 rounded-[8px] cursor-pointer flex items-center"
|
|
10
|
-
:class="[Number(whichIndex) === index ? `${$
|
|
10
|
+
:class="[Number(whichIndex) === index ? `${$styles.blueBg} ${$styles.whiteText}` : '', $styles.textSimple]"
|
|
11
11
|
@click.self="index !== Number(whichIndex) ? selectMember(index) : null"
|
|
12
12
|
>
|
|
13
13
|
{{ `${$dataStore.menu.selectedItem.title} ${index + 1}` }}
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
<base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
|
|
83
83
|
<base-panel-input
|
|
84
84
|
v-model="member.gender"
|
|
85
|
-
:value="member.gender
|
|
85
|
+
:value="member.gender?.nameRu"
|
|
86
86
|
:readonly="isDisabled || isFromGBD"
|
|
87
87
|
:clearable="!isDisabled"
|
|
88
88
|
:label="$dataStore.t('form.gender')"
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
<base-panel-input
|
|
94
94
|
v-if="hasFamilyStatus"
|
|
95
95
|
v-model="member.familyStatus"
|
|
96
|
-
:value="member.familyStatus
|
|
96
|
+
:value="member.familyStatus?.nameRu"
|
|
97
97
|
:readonly="isDisabled"
|
|
98
98
|
:clearable="!isDisabled"
|
|
99
99
|
:label="$dataStore.t('form.familyStatus')"
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
<base-panel-input
|
|
105
105
|
v-if="(whichForm === formStore.beneficiaryFormKey || whichForm === formStore.insuredFormKey) && member.iin !== formStore.policyholderForm.iin"
|
|
106
106
|
v-model="member.relationDegree"
|
|
107
|
-
:value="member.relationDegree
|
|
107
|
+
:value="member.relationDegree?.nameRu"
|
|
108
108
|
:readonly="isDisabled"
|
|
109
109
|
:clearable="!isDisabled"
|
|
110
110
|
:label="$dataStore.t('form.relations')"
|
|
@@ -240,7 +240,7 @@
|
|
|
240
240
|
<base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
|
|
241
241
|
<base-panel-input
|
|
242
242
|
v-model="member.registrationCountry"
|
|
243
|
-
:value="member.registrationCountry
|
|
243
|
+
:value="member.registrationCountry?.nameRu"
|
|
244
244
|
:readonly="isDisabled"
|
|
245
245
|
:clearable="!isDisabled"
|
|
246
246
|
:label="$dataStore.t('form.Country')"
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
<div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
|
|
253
253
|
<base-panel-input
|
|
254
254
|
v-model="member.registrationProvince"
|
|
255
|
-
:value="member.registrationProvince
|
|
255
|
+
:value="member.registrationProvince?.nameRu"
|
|
256
256
|
:label="$dataStore.t('form.Province')"
|
|
257
257
|
:readonly="isDisabled"
|
|
258
258
|
:clearable="!isDisabled"
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
/>
|
|
263
263
|
<base-panel-input
|
|
264
264
|
v-model="member.registrationRegionType"
|
|
265
|
-
:value="member.registrationRegionType
|
|
265
|
+
:value="member.registrationRegionType?.nameRu"
|
|
266
266
|
:label="$dataStore.t('form.RegionType')"
|
|
267
267
|
:readonly="isDisabled"
|
|
268
268
|
:clearable="!isDisabled"
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
<base-panel-input
|
|
274
274
|
v-if="member.registrationRegionType.nameRu !== 'город'"
|
|
275
275
|
v-model="member.registrationRegion"
|
|
276
|
-
:value="member.registrationRegion
|
|
276
|
+
:value="member.registrationRegion?.nameRu"
|
|
277
277
|
:label="$dataStore.t('form.Region')"
|
|
278
278
|
:readonly="isDisabled"
|
|
279
279
|
:clearable="!isDisabled"
|
|
@@ -283,7 +283,7 @@
|
|
|
283
283
|
/>
|
|
284
284
|
<base-panel-input
|
|
285
285
|
v-model="member.registrationCity"
|
|
286
|
-
:value="member.registrationCity
|
|
286
|
+
:value="member.registrationCity?.nameRu"
|
|
287
287
|
:label="$dataStore.t('form.City')"
|
|
288
288
|
:readonly="isDisabled"
|
|
289
289
|
:clearable="!isDisabled"
|
|
@@ -316,7 +316,7 @@
|
|
|
316
316
|
<base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
|
|
317
317
|
<base-panel-input
|
|
318
318
|
v-model="member.birthPlace"
|
|
319
|
-
:value="member.birthPlace
|
|
319
|
+
:value="member.birthPlace?.nameRu"
|
|
320
320
|
:label="$dataStore.t('form.Country')"
|
|
321
321
|
:readonly="isDisabled"
|
|
322
322
|
:clearable="!isDisabled"
|
|
@@ -327,7 +327,7 @@
|
|
|
327
327
|
<!-- TODO -->
|
|
328
328
|
<!-- <base-panel-input
|
|
329
329
|
v-model="member.birthRegion"
|
|
330
|
-
:value="member.birthRegion
|
|
330
|
+
:value="member.birthRegion?.nameRu"
|
|
331
331
|
:label="$dataStore.t('form.Region')"
|
|
332
332
|
:readonly="isDisabled"
|
|
333
333
|
:clearable="!isDisabled"
|
|
@@ -339,7 +339,7 @@
|
|
|
339
339
|
<base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
|
|
340
340
|
<base-panel-input
|
|
341
341
|
v-model="member.documentType"
|
|
342
|
-
:value="member.documentType
|
|
342
|
+
:value="member.documentType?.nameRu"
|
|
343
343
|
:label="$dataStore.t('form.documentType')"
|
|
344
344
|
:readonly="isDisabled"
|
|
345
345
|
:clearable="!isDisabled"
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
</base-empty-form-field> -->
|
|
362
362
|
<base-panel-input
|
|
363
363
|
v-model="member.documentIssuers"
|
|
364
|
-
:value="member.documentIssuers
|
|
364
|
+
:value="member.documentIssuers?.nameRu"
|
|
365
365
|
:label="$dataStore.t('form.documentIssuers')"
|
|
366
366
|
:readonly="isDisabled"
|
|
367
367
|
:clearable="!isDisabled"
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
</base-fade-transition>
|
|
393
393
|
<base-panel-input
|
|
394
394
|
v-model="member.signOfResidency"
|
|
395
|
-
:value="member.signOfResidency
|
|
395
|
+
:value="member.signOfResidency?.nameRu"
|
|
396
396
|
:label="$dataStore.t('form.signOfResidency')"
|
|
397
397
|
:readonly="isDisabled"
|
|
398
398
|
:clearable="!isDisabled"
|
|
@@ -402,7 +402,7 @@
|
|
|
402
402
|
/>
|
|
403
403
|
<base-panel-input
|
|
404
404
|
v-model="member.countryOfTaxResidency"
|
|
405
|
-
:value="member.countryOfTaxResidency
|
|
405
|
+
:value="member.countryOfTaxResidency?.nameRu"
|
|
406
406
|
:label="$dataStore.t('form.countryOfTaxResidency')"
|
|
407
407
|
:readonly="isDisabled"
|
|
408
408
|
:clearable="!isDisabled"
|
|
@@ -414,7 +414,7 @@
|
|
|
414
414
|
<base-panel-input
|
|
415
415
|
v-if="member.countryOfTaxResidency.ids === '500014.3'"
|
|
416
416
|
v-model="member.addTaxResidency"
|
|
417
|
-
:value="member.addTaxResidency
|
|
417
|
+
:value="member.addTaxResidency?.nameRu"
|
|
418
418
|
:label="$dataStore.t('form.addTaxResidency')"
|
|
419
419
|
:readonly="isDisabled"
|
|
420
420
|
:clearable="!isDisabled"
|
|
@@ -426,7 +426,7 @@
|
|
|
426
426
|
<base-panel-input
|
|
427
427
|
v-if="hasSignOfIPDL"
|
|
428
428
|
v-model="member.signOfIPDL"
|
|
429
|
-
:value="member.signOfIPDL
|
|
429
|
+
:value="member.signOfIPDL?.nameRu"
|
|
430
430
|
:label="$dataStore.t('form.signOfIPDL')"
|
|
431
431
|
:readonly="isDisabled"
|
|
432
432
|
:clearable="!isDisabled"
|
|
@@ -436,7 +436,7 @@
|
|
|
436
436
|
/>
|
|
437
437
|
<base-panel-input
|
|
438
438
|
v-model="member.countryOfCitizenship"
|
|
439
|
-
:value="member.countryOfCitizenship
|
|
439
|
+
:value="member.countryOfCitizenship?.nameRu"
|
|
440
440
|
:label="$dataStore.t('form.countryOfCitizenship')"
|
|
441
441
|
:readonly="isDisabled"
|
|
442
442
|
:clearable="!isDisabled"
|
|
@@ -446,7 +446,7 @@
|
|
|
446
446
|
/>
|
|
447
447
|
<base-panel-input
|
|
448
448
|
v-model="member.economySectorCode"
|
|
449
|
-
:value="member.economySectorCode
|
|
449
|
+
:value="member.economySectorCode?.nameRu"
|
|
450
450
|
:label="$dataStore.t('form.economySectorCode')"
|
|
451
451
|
:readonly="isDisabled"
|
|
452
452
|
:clearable="!isDisabled"
|
|
@@ -457,7 +457,7 @@
|
|
|
457
457
|
<base-panel-input
|
|
458
458
|
v-if="hasInsurancePay"
|
|
459
459
|
v-model="member.insurancePay"
|
|
460
|
-
:value="member.insurancePay
|
|
460
|
+
:value="member.insurancePay?.nameRu"
|
|
461
461
|
:readonly="isDisabled"
|
|
462
462
|
:clearable="!isDisabled"
|
|
463
463
|
:rules="$rules.objectRequired"
|
|
@@ -481,7 +481,7 @@
|
|
|
481
481
|
</v-form>
|
|
482
482
|
<base-btn v-if="showSaveButton" :loading="isButtonLoading || isSubmittingForm" :text="$dataStore.t('buttons.save')" @click="submitForm" />
|
|
483
483
|
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
484
|
-
<div :class="[$
|
|
484
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
485
485
|
<base-rounded-input v-model="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
486
486
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
487
487
|
<base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
|
|
@@ -497,20 +497,20 @@
|
|
|
497
497
|
</div>
|
|
498
498
|
</Teleport>
|
|
499
499
|
<Teleport v-if="isSearchOpen" to="#panel-actions">
|
|
500
|
-
<div :class="[$
|
|
500
|
+
<div :class="[$styles.flexColNav]">
|
|
501
501
|
<base-btn v-if="hasGBDFL" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGBDFL')" @click="getContragentFromGBDFL" />
|
|
502
502
|
<base-btn v-if="hasInsis" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromInsis')" @click="getContragent" />
|
|
503
503
|
<base-btn v-if="hasGKB" :loading="isButtonLoading" :text="$dataStore.t('buttons.fromGKB')" @click="getFamilyInfo" />
|
|
504
504
|
</div>
|
|
505
505
|
</Teleport>
|
|
506
506
|
<Teleport v-if="isDocumentOpen" to="#panel-actions">
|
|
507
|
-
<div :class="[$
|
|
507
|
+
<div :class="[$styles.flexColNav]">
|
|
508
508
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть" @click="getFile('view')" />
|
|
509
509
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Скачать" @click="getFile('download')" />
|
|
510
510
|
</div>
|
|
511
511
|
</Teleport>
|
|
512
512
|
<Teleport v-if="isOtpPanelOpen && !member.hasAgreement" to="#panel-actions">
|
|
513
|
-
<div :class="[$
|
|
513
|
+
<div :class="[$styles.flexColNav]">
|
|
514
514
|
<base-fade-transition>
|
|
515
515
|
<base-rounded-input
|
|
516
516
|
v-if="otpCondition && member.otpTokenId"
|
|
@@ -610,7 +610,6 @@ export default {
|
|
|
610
610
|
return true;
|
|
611
611
|
}
|
|
612
612
|
case formStore.insuredFormKey:
|
|
613
|
-
case formStore.beneficiaryFormKey:
|
|
614
613
|
case formStore.beneficialOwnerFormKey:
|
|
615
614
|
case formStore.policyholdersRepresentativeFormKey:
|
|
616
615
|
return true;
|
|
@@ -712,6 +711,9 @@ export default {
|
|
|
712
711
|
if (dataStore.isGons || dataStore.isBolashak) {
|
|
713
712
|
return [];
|
|
714
713
|
}
|
|
714
|
+
if ((dataStore.isKazyna || dataStore.isLiferenta) && Number(member.value.age) < 18) {
|
|
715
|
+
return [];
|
|
716
|
+
}
|
|
715
717
|
}
|
|
716
718
|
return basePhoneRule;
|
|
717
719
|
});
|
|
@@ -1054,8 +1056,8 @@ export default {
|
|
|
1054
1056
|
await dataStore.getApplicationData(route.params.taskId as string, false, false, true, wasInsuredAction.value);
|
|
1055
1057
|
if (dataStore.controls.hasCalculator) {
|
|
1056
1058
|
if (formStore.additionalInsuranceTermsWithout && formStore.additionalInsuranceTermsWithout.length !== 0) {
|
|
1057
|
-
formStore.additionalInsuranceTerms.forEach(
|
|
1058
|
-
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(
|
|
1059
|
+
formStore.additionalInsuranceTerms.forEach(term => {
|
|
1060
|
+
const defaultTerm = formStore.additionalInsuranceTermsWithout.find(i => i.coverTypeId === term.coverTypeId);
|
|
1059
1061
|
if (defaultTerm) {
|
|
1060
1062
|
term.coverSumName = defaultTerm.coverSumName;
|
|
1061
1063
|
term.coverSumId = defaultTerm.coverSumId;
|
|
@@ -1075,6 +1077,11 @@ export default {
|
|
|
1075
1077
|
return true;
|
|
1076
1078
|
}
|
|
1077
1079
|
}
|
|
1080
|
+
if (dataStore.isKazyna || dataStore.isLiferenta) {
|
|
1081
|
+
if (whichForm.value === formStore.beneficiaryFormKey && Number(member.value.age) < 18) {
|
|
1082
|
+
return true;
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1078
1085
|
if (member.value.hasAgreement !== true) {
|
|
1079
1086
|
dataStore.showToaster('error', dataStore.t('toaster.needAgreement'));
|
|
1080
1087
|
return false;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<base-content :title="$dataStore.t('agreementBlock.title')" class="!w-full">
|
|
3
|
-
<p class="h-full p-4 lg:p-8 leading-8 font-medium" :class="[$
|
|
4
|
-
{{ $dataStore.t('agreementBlock.text') }}
|
|
5
|
-
</p>
|
|
3
|
+
<p class="h-full p-4 lg:p-8 leading-8 font-medium" :class="[$styles.scrollPage, $styles.textSimple]"> {{ $dataStore.t('agreementBlock.text') }}</p>
|
|
6
4
|
</base-content>
|
|
7
5
|
</template>
|
|
8
6
|
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section class="flex flex-col gap-4 px-[10px]">
|
|
3
3
|
<v-form ref="vForm" @submit="submitForm" class="max-h-[82svh] overflow-y-scroll">
|
|
4
|
-
<base-
|
|
4
|
+
<base-message-block
|
|
5
|
+
v-if="isRecalculation"
|
|
6
|
+
class="mt-4"
|
|
7
|
+
:color="$styles.blueBgLight"
|
|
8
|
+
:text="$dataStore.t('preliminaryCalculation')"
|
|
9
|
+
icon="mdi-alert text-[#FCB016]"
|
|
10
|
+
></base-message-block>
|
|
11
|
+
<base-form-section v-if="whichProduct === 'gons'" :title="$dataStore.t('productConditionsForm.requestedProductConditions')" :class="[$styles.textSimple]">
|
|
5
12
|
<base-form-text-section
|
|
6
13
|
class="mb-4"
|
|
7
14
|
title="Инвалидность I или II группы по причине несчастного случая, начиная с третьего года по любой причине, с освобождением от уплаты страховых взносов"
|
|
@@ -54,7 +61,7 @@
|
|
|
54
61
|
:clearable="isRecalculationDisabled === false"
|
|
55
62
|
:label="$dataStore.t('percent') + `Life Multiply`"
|
|
56
63
|
:readonly="isRecalculationDisabled"
|
|
57
|
-
:rules="$dataStore.rules.recalculationMultiply"
|
|
64
|
+
:rules="whichProduct === 'gons' ? $dataStore.rules.recalculationMultiplyBetween : $dataStore.rules.recalculationMultiply"
|
|
58
65
|
/>
|
|
59
66
|
<base-form-input
|
|
60
67
|
v-model="productConditionsForm.lifeAdditive"
|
|
@@ -88,7 +95,7 @@
|
|
|
88
95
|
:clearable="isRecalculationDisabled === false"
|
|
89
96
|
:label="$dataStore.t('percent') + `Disability Multiply`"
|
|
90
97
|
:readonly="isRecalculationDisabled"
|
|
91
|
-
:rules="$dataStore.rules.recalculationMultiply"
|
|
98
|
+
:rules="whichProduct === 'gons' ? [] : $dataStore.rules.recalculationMultiply"
|
|
92
99
|
/>
|
|
93
100
|
<base-form-input
|
|
94
101
|
v-model="productConditionsForm.disabilityAdditive"
|
|
@@ -101,7 +108,7 @@
|
|
|
101
108
|
<base-panel-input
|
|
102
109
|
v-if="hasRiskGroup"
|
|
103
110
|
v-model="productConditionsForm.riskGroup"
|
|
104
|
-
:value="productConditionsForm.riskGroup
|
|
111
|
+
:value="productConditionsForm.riskGroup?.nameRu"
|
|
105
112
|
:label="$dataStore.t('productConditionsForm.riskGroup')"
|
|
106
113
|
:clearable="isRecalculationDisabled === false"
|
|
107
114
|
:readonly="isRecalculationDisabled"
|
|
@@ -130,7 +137,7 @@
|
|
|
130
137
|
/>
|
|
131
138
|
<base-panel-input
|
|
132
139
|
v-model="productConditionsForm.gender"
|
|
133
|
-
:value="productConditionsForm.gender
|
|
140
|
+
:value="productConditionsForm.gender?.nameRu"
|
|
134
141
|
:readonly="isDisabled"
|
|
135
142
|
:clearable="!isDisabled"
|
|
136
143
|
:label="$dataStore.t('form.gender')"
|
|
@@ -150,7 +157,7 @@
|
|
|
150
157
|
<base-panel-input
|
|
151
158
|
v-if="hasPaymentPeriod"
|
|
152
159
|
v-model="productConditionsForm.paymentPeriod"
|
|
153
|
-
:value="productConditionsForm.paymentPeriod
|
|
160
|
+
:value="productConditionsForm.paymentPeriod?.nameRu"
|
|
154
161
|
:readonly="isDisabled"
|
|
155
162
|
:clearable="!isDisabled"
|
|
156
163
|
:rules="$rules.objectRequired"
|
|
@@ -161,7 +168,7 @@
|
|
|
161
168
|
<base-panel-input
|
|
162
169
|
v-if="hasProcessIndexRate"
|
|
163
170
|
v-model="productConditionsForm.processIndexRate"
|
|
164
|
-
:value="productConditionsForm.processIndexRate
|
|
171
|
+
:value="productConditionsForm.processIndexRate?.nameRu"
|
|
165
172
|
:readonly="isDisabled"
|
|
166
173
|
:clearable="!isDisabled"
|
|
167
174
|
:rules="$rules.objectRequired"
|
|
@@ -200,6 +207,34 @@
|
|
|
200
207
|
@input="onInputInsurancePremiumPerMonth"
|
|
201
208
|
@onClear="onClearPremium"
|
|
202
209
|
/>
|
|
210
|
+
<base-form-input
|
|
211
|
+
v-if="whichProduct === 'gons' && isRecalculation"
|
|
212
|
+
v-model="productConditionsForm.totalAmount5"
|
|
213
|
+
:readonly="true"
|
|
214
|
+
:label="$dataStore.t('productConditionsForm.totalAmount5')"
|
|
215
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
216
|
+
/>
|
|
217
|
+
<base-form-input
|
|
218
|
+
v-if="whichProduct === 'gons' && isRecalculation"
|
|
219
|
+
v-model="productConditionsForm.statePremium5"
|
|
220
|
+
:readonly="true"
|
|
221
|
+
:label="$dataStore.t('productConditionsForm.statePremium5')"
|
|
222
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
223
|
+
/>
|
|
224
|
+
<base-form-input
|
|
225
|
+
v-if="whichProduct === 'gons' && isRecalculation"
|
|
226
|
+
v-model="productConditionsForm.totalAmount7"
|
|
227
|
+
:readonly="true"
|
|
228
|
+
:label="$dataStore.t('productConditionsForm.totalAmount7')"
|
|
229
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
230
|
+
/>
|
|
231
|
+
<base-form-input
|
|
232
|
+
v-if="whichProduct === 'gons' && isRecalculation"
|
|
233
|
+
v-model="productConditionsForm.statePremium7"
|
|
234
|
+
:readonly="true"
|
|
235
|
+
:label="$dataStore.t('productConditionsForm.statePremium7')"
|
|
236
|
+
:suffix="$constants.currencySymbols.kzt"
|
|
237
|
+
/>
|
|
203
238
|
<base-form-input
|
|
204
239
|
v-if="hasInsurancePremiumPerMonthInDollar"
|
|
205
240
|
v-model="productConditionsForm.insurancePremiumPerMonthInDollar"
|
|
@@ -240,7 +275,7 @@
|
|
|
240
275
|
/>
|
|
241
276
|
<base-panel-input
|
|
242
277
|
v-model="productConditionsForm.typeAnnuityInsurance"
|
|
243
|
-
:value="productConditionsForm.typeAnnuityInsurance
|
|
278
|
+
:value="productConditionsForm.typeAnnuityInsurance?.nameRu"
|
|
244
279
|
:readonly="isDisabled"
|
|
245
280
|
:clearable="!isDisabled"
|
|
246
281
|
:rules="$rules.objectRequired"
|
|
@@ -258,7 +293,7 @@
|
|
|
258
293
|
/>
|
|
259
294
|
<base-panel-input
|
|
260
295
|
v-model="productConditionsForm.periodAnnuityPayment"
|
|
261
|
-
:value="productConditionsForm.periodAnnuityPayment
|
|
296
|
+
:value="productConditionsForm.periodAnnuityPayment?.nameRu"
|
|
262
297
|
:readonly="isDisabled"
|
|
263
298
|
:clearable="!isDisabled"
|
|
264
299
|
:rules="$rules.objectRequired"
|
|
@@ -288,7 +323,7 @@
|
|
|
288
323
|
v-model="additionalTerms[index]"
|
|
289
324
|
:value="term.coverSumName"
|
|
290
325
|
:readonly="isTermsDisabled"
|
|
291
|
-
:clearable="
|
|
326
|
+
:clearable="false"
|
|
292
327
|
:label="term.coverTypeName"
|
|
293
328
|
append-inner-icon="mdi mdi-chevron-right"
|
|
294
329
|
:suffix="!!term.amount ? `${formatTermValue(term.amount)} ${currencySymbolsAddTerm}` : ''"
|
|
@@ -297,12 +332,7 @@
|
|
|
297
332
|
</div>
|
|
298
333
|
</base-form-section>
|
|
299
334
|
</v-form>
|
|
300
|
-
<base-btn
|
|
301
|
-
v-if="!$dataStore.isCalculator && isRecalculation && hasCalculated"
|
|
302
|
-
:btn="$libStyles.greenLightBtn"
|
|
303
|
-
:text="$dataStore.t('buttons.toStatement')"
|
|
304
|
-
@click="toStatement"
|
|
305
|
-
/>
|
|
335
|
+
<base-btn v-if="!$dataStore.isCalculator && isRecalculation && hasCalculated" :btn="$styles.greenLightBtn" :text="$dataStore.t('buttons.toStatement')" @click="toStatement" />
|
|
306
336
|
<base-btn
|
|
307
337
|
v-if="$dataStore.isCalculator ? true : !isDisabled && isTask && ($dataStore.isInitiator() || $dataStore.isUnderwriter())"
|
|
308
338
|
:loading="isCalculating"
|
|
@@ -314,7 +344,7 @@
|
|
|
314
344
|
<base-btn :text="$dataStore.t('buttons.calcPremium')" type="submit" @click.prevent="underwriterCalculate('premium')" :loading="isCalculating" />
|
|
315
345
|
</div>
|
|
316
346
|
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
317
|
-
<div :class="[$
|
|
347
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
318
348
|
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
319
349
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
320
350
|
<base-panel-select-item :text="$dataStore.t('form.notChosen')" :selected="panelValue.nameRu === null" @click="pickPanelValue(new Value())" />
|
|
@@ -330,7 +360,7 @@
|
|
|
330
360
|
</div>
|
|
331
361
|
</Teleport>
|
|
332
362
|
<Teleport v-if="isTermsPanelOpen" to="#panel-actions">
|
|
333
|
-
<div :class="[$
|
|
363
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
334
364
|
<base-rounded-input v-model.trim="searchQuery" :label="$dataStore.t('labels.search')" class="w-full p-2" :hide-details="true" />
|
|
335
365
|
<div v-if="panelList && isPanelLoading === false" class="w-full flex flex-col gap-2 p-2">
|
|
336
366
|
<base-panel-select-item
|
|
@@ -357,7 +387,7 @@ export default defineComponent({
|
|
|
357
387
|
default: false,
|
|
358
388
|
},
|
|
359
389
|
product: {
|
|
360
|
-
type: String
|
|
390
|
+
type: String as PropType<Projects>,
|
|
361
391
|
default: false,
|
|
362
392
|
},
|
|
363
393
|
},
|
|
@@ -369,7 +399,7 @@ export default defineComponent({
|
|
|
369
399
|
const dataStore = useDataStore();
|
|
370
400
|
const memberStore = useMemberStore();
|
|
371
401
|
|
|
372
|
-
const whichProduct = ref<
|
|
402
|
+
const whichProduct = ref<Projects | null>(dataStore.isCalculator ? props.product : dataStore.product!);
|
|
373
403
|
const isCalculating = ref<boolean>(false);
|
|
374
404
|
const isPanelLoading = ref<boolean>(false);
|
|
375
405
|
const isPanelOpen = ref<boolean>(false);
|
|
@@ -393,7 +423,7 @@ export default defineComponent({
|
|
|
393
423
|
});
|
|
394
424
|
const isDisabled = computed(() => (dataStore.isCalculator ? false : !memberStore.isStatementEditible('productConditionsForm')));
|
|
395
425
|
const isTermsDisabled = computed(() => {
|
|
396
|
-
if (dataStore.isGons) {
|
|
426
|
+
if (dataStore.isGons || whichProduct.value === 'gons') {
|
|
397
427
|
return true;
|
|
398
428
|
}
|
|
399
429
|
return isDisabled.value;
|
|
@@ -725,6 +755,13 @@ export default defineComponent({
|
|
|
725
755
|
return;
|
|
726
756
|
}
|
|
727
757
|
|
|
758
|
+
if (
|
|
759
|
+
whichProduct.value === 'gons' &&
|
|
760
|
+
(formStore.applicationData.statusCode === 'EditForm' || formStore.applicationData.statusCode === 'StartForm') &&
|
|
761
|
+
getNumber(productConditionsForm.requestedSumInsured as string)! >= 10_000_000
|
|
762
|
+
) {
|
|
763
|
+
dataStore.showToaster('info', dataStore.t('toaster.calcSumForUnder'), 6000);
|
|
764
|
+
}
|
|
728
765
|
if (isUnderwriterForm.value) {
|
|
729
766
|
type recalculationInfo = {
|
|
730
767
|
lifeMultiply: string | null | number;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<section v-if="sendingActions">
|
|
3
|
-
<div :class="[$
|
|
3
|
+
<div :class="[$styles.flexColNav]">
|
|
4
4
|
<v-form ref="vForm">
|
|
5
5
|
<base-rounded-input v-model.trim="actionCause" placeholder="Причина" :rules="$rules.required" />
|
|
6
6
|
</v-form>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
</div>
|
|
9
9
|
</section>
|
|
10
10
|
<section v-if="acceptAction">
|
|
11
|
-
<div :class="[$
|
|
11
|
+
<div :class="[$styles.flexColNav]">
|
|
12
12
|
<base-content-block v-if="hasConditionsInfo" class="flex flex-col gap-3">
|
|
13
13
|
<span
|
|
14
14
|
>{{ `Сумма страховой премии ${paymentPeriod}:` }} <b>{{ `${insurancePremiumPerMonth}₸` }}</b></span
|
|
@@ -18,21 +18,21 @@
|
|
|
18
18
|
</span>
|
|
19
19
|
</base-content-block>
|
|
20
20
|
<base-btn :text="$dataStore.t('confirm.yes')" @click="handleTask" />
|
|
21
|
-
<base-btn :btn="$
|
|
21
|
+
<base-btn :btn="$styles.blueLightBtn" :text="$dataStore.t('confirm.no')" @click="closePanel" />
|
|
22
22
|
</div>
|
|
23
23
|
</section>
|
|
24
24
|
<section v-if="signingActions" class="relative">
|
|
25
25
|
<div>
|
|
26
26
|
<base-fade-transition>
|
|
27
|
-
<div v-if="!isSendNumberOpen" :class="[$
|
|
28
|
-
<div :class="[$
|
|
27
|
+
<div v-if="!isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
28
|
+
<div :class="[$styles.blueBgLight]" class="rounded-lg p-4">
|
|
29
29
|
<v-expansion-panels v-if="formStore.signUrls && formStore.signUrls.length" variant="accordion" multiple>
|
|
30
30
|
<v-expansion-panel v-for="signUrl of formStore.signUrls" :key="signUrl.iin!" class="border-[1px]" elevation="0" bg-color="#FFF">
|
|
31
|
-
<v-expansion-panel-title class="h-[80px]" :class="$
|
|
31
|
+
<v-expansion-panel-title class="h-[80px]" :class="$styles.textTitle">{{ `${signUrl.longName} - ${signUrl.iin}` }}</v-expansion-panel-title>
|
|
32
32
|
<v-expansion-panel-text class="border-t-[1px]">
|
|
33
|
-
<section class="flex flex-col gap-4 py-3" :class="$
|
|
33
|
+
<section class="flex flex-col gap-4 py-3" :class="$styles.textSimple">
|
|
34
34
|
<base-btn :loading="loading" :text="$dataStore.t('sign.copyCloud')" @click="$dataStore.copyToClipboard(signUrl.uri)" />
|
|
35
|
-
<base-btn :loading="loading" :btn="$
|
|
35
|
+
<base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('sign.recipientNumber')" @click="openSmsPanel(signUrl)" />
|
|
36
36
|
</section>
|
|
37
37
|
</v-expansion-panel-text>
|
|
38
38
|
</v-expansion-panel>
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
<base-list-empty v-else />
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
|
-
<div v-if="isSendNumberOpen" :class="[$
|
|
43
|
+
<div v-if="isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
44
44
|
<i
|
|
45
45
|
class="mdi mdi-arrow-left cursor-pointer absolute text-xl left-0 top-0 rounded-br-full bg-white border-[1px] pb-3 pt-1 pl-1 pr-3"
|
|
46
46
|
@click="isSendNumberOpen = false"
|
|
@@ -64,11 +64,11 @@
|
|
|
64
64
|
<section v-if="payingActions" class="relative">
|
|
65
65
|
<div>
|
|
66
66
|
<base-fade-transition>
|
|
67
|
-
<div v-if="!isSendNumberOpen" :class="[$
|
|
67
|
+
<div v-if="!isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
68
68
|
<base-btn :loading="loading" :text="$dataStore.t('payment.copyUrl')" @click="$dataStore.copyToClipboard(formStore.epayLink)" />
|
|
69
|
-
<base-btn :loading="loading" :btn="$
|
|
69
|
+
<base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('payment.recipientNumber')" @click="openEpayPanel" />
|
|
70
70
|
</div>
|
|
71
|
-
<div v-if="isSendNumberOpen" :class="[$
|
|
71
|
+
<div v-if="isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
72
72
|
<i
|
|
73
73
|
class="mdi mdi-arrow-left cursor-pointer absolute text-xl left-0 top-0 rounded-br-full bg-white border-[1px] pb-3 pt-1 pl-1 pr-3"
|
|
74
74
|
@click="isSendNumberOpen = false"
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
</div>
|
|
91
91
|
</section>
|
|
92
92
|
<section v-if="affiliateActions">
|
|
93
|
-
<div :class="[$
|
|
93
|
+
<div :class="[$styles.flexColNav]">
|
|
94
94
|
<v-form ref="vForm">
|
|
95
95
|
<base-content-block class="flex flex-col gap-3">
|
|
96
96
|
<base-form-input v-model.trim="formStore.affilationResolution.number" :rules="$rules.required" :label="$dataStore.t('form.documentNumber')" />
|
|
@@ -114,7 +114,8 @@
|
|
|
114
114
|
<script lang="ts">
|
|
115
115
|
import { DocumentItem } from '../../composables/classes';
|
|
116
116
|
export default defineComponent({
|
|
117
|
-
|
|
117
|
+
emits: ['task'],
|
|
118
|
+
setup(props, { emit }) {
|
|
118
119
|
const route = useRoute();
|
|
119
120
|
const dataStore = useDataStore();
|
|
120
121
|
const formStore = useFormStore();
|
|
@@ -198,7 +199,16 @@ export default defineComponent({
|
|
|
198
199
|
|
|
199
200
|
const handleTask = async () => {
|
|
200
201
|
loading.value = true;
|
|
201
|
-
|
|
202
|
+
if (needRecalculation.value) {
|
|
203
|
+
dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'));
|
|
204
|
+
loading.value = false;
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (dataStore.isAML || dataStore.isCheckContract || dataStore.isCheckContragent) {
|
|
208
|
+
emit('task', [dataStore.panelAction, route.params.taskId as string, actionCause.value]);
|
|
209
|
+
} else {
|
|
210
|
+
await dataStore.handleTask(dataStore.panelAction, route.params.taskId as string, actionCause.value);
|
|
211
|
+
}
|
|
202
212
|
loading.value = false;
|
|
203
213
|
};
|
|
204
214
|
|
|
@@ -232,6 +242,13 @@ export default defineComponent({
|
|
|
232
242
|
},
|
|
233
243
|
{ immediate: true },
|
|
234
244
|
);
|
|
245
|
+
const needRecalculation = computed(
|
|
246
|
+
() =>
|
|
247
|
+
dataStore.isGons &&
|
|
248
|
+
formStore.applicationData.statusCode === 'UnderwriterForm' &&
|
|
249
|
+
dataStore.panelAction === constants.actions.accept &&
|
|
250
|
+
formStore.productConditionsForm.isRecalculated === false,
|
|
251
|
+
);
|
|
235
252
|
const sendingActions = computed(
|
|
236
253
|
() => dataStore.panelAction === constants.actions.reject || dataStore.panelAction === constants.actions.return || dataStore.panelAction === constants.actions.rejectclient,
|
|
237
254
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="flex justify-between p-4 items-center cursor-pointer" :class="[$
|
|
3
|
-
<span :class="[$
|
|
4
|
-
<i class="mdi text-xl" :class="[selected ? `mdi-radiobox-marked ${$
|
|
2
|
+
<div class="flex justify-between p-4 items-center cursor-pointer" :class="[$styles.rounded, $styles.blueBgLight, $styles.blueBgLightHover]">
|
|
3
|
+
<span :class="[$styles.textSimple]">{{ text }}</span>
|
|
4
|
+
<i class="mdi text-xl" :class="[selected ? `mdi-radiobox-marked ${$styles.greenText}` : 'mdi-radiobox-blank text-[#636363]']"></i>
|
|
5
5
|
</div>
|
|
6
6
|
</template>
|
|
7
7
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="border-[1px] border-[#F1F2F6] rounded-[12px] p-[10px]">
|
|
3
|
+
<slot v-if="!icon"></slot>
|
|
4
|
+
<i v-else :class="icon"></i>
|
|
5
|
+
</div>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
export default defineComponent({
|
|
10
|
+
props: {
|
|
11
|
+
icon: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: '',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
</script>
|
package/composables/axios.ts
CHANGED