hl-core 0.0.10-beta.79 → 0.0.10-beta.80
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/components/Complex/Breadcrumb.vue +73 -0
- package/components/Dialog/DigitalDocumentsDialog.vue +31 -18
- package/components/Form/DigitalDocument.vue +2 -2
- package/components/Input/Datepicker.vue +2 -2
- package/components/Input/Monthpicker.vue +2 -2
- package/components/Input/TextInput.vue +3 -2
- package/components/Menu/MenuNav.vue +3 -2
- package/components/Pages/Anketa.vue +10 -11
- package/components/Pages/Auth.vue +6 -6
- package/components/Pages/ContragentForm.vue +1 -1
- package/components/Pages/Documents.vue +60 -28
- package/components/Pages/MemberForm.vue +36 -24
- package/components/Pages/ProductAgreement.vue +1 -1
- package/components/Pages/ProductConditions.vue +94 -57
- package/components/Panel/PanelHandler.vue +17 -11
- package/composables/classes.ts +2 -0
- package/composables/index.ts +2 -1
- package/composables/useDynamicBreadcrumb.ts +88 -0
- package/layouts/default.vue +7 -2
- package/package.json +3 -1
- package/pages/500.vue +2 -2
- package/store/data.store.ts +8 -6
- package/store/form.store.ts +5 -2
- package/types/index.ts +9 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="isVisible && items.length && items.length > 1" :class="$styles.blueBgLight" class="hidden lg:flex border-b py-3 px-5 items-center justify-between">
|
|
3
|
+
<nav class="flex items-center text-sm leading-6 tracking-[0.5px] text-[#99A3B3]">
|
|
4
|
+
<template v-for="(item, index) in items" :key="item.to">
|
|
5
|
+
<a v-if="index !== items.length - 1" @click.prevent="handleClick(item)" :to="item.to" class="hover:text-[#071222] transition-colors cursor-pointer">
|
|
6
|
+
{{ item.label }}
|
|
7
|
+
</a>
|
|
8
|
+
<span v-else class="text-[#071222]">
|
|
9
|
+
{{ item.label }}
|
|
10
|
+
</span>
|
|
11
|
+
<i v-if="index !== items.length - 1" class="mdi mdi-chevron-right mx-1.5 text-lg text-[#99A3B3]" />
|
|
12
|
+
</template>
|
|
13
|
+
</nav>
|
|
14
|
+
<v-btn variant="plain" size="24" :ripple="false" @click="handleClose">
|
|
15
|
+
<i class="mdi mdi-close text-[20px] text-[#071222]" />
|
|
16
|
+
</v-btn>
|
|
17
|
+
</div>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script setup lang="ts">
|
|
21
|
+
import type { BreadcrumbItem } from '../../types/index';
|
|
22
|
+
import type { RouteLocationRaw } from 'vue-router';
|
|
23
|
+
import { MenuItem } from '#imports';
|
|
24
|
+
|
|
25
|
+
const dataStore = useDataStore();
|
|
26
|
+
const router = useRouter();
|
|
27
|
+
const isVisible = ref(true);
|
|
28
|
+
|
|
29
|
+
const items = computed(() => dataStore.breadcrumb);
|
|
30
|
+
|
|
31
|
+
const handleClose = () => {
|
|
32
|
+
isVisible.value = false;
|
|
33
|
+
};
|
|
34
|
+
const handleClick = (item: BreadcrumbItem) => {
|
|
35
|
+
// 1. Обработка редиректов в родительское окно (Мостик)
|
|
36
|
+
if (item.to === '/Insurance-Product') {
|
|
37
|
+
dataStore.sendToParent(constants.postActions.toHomePage, null);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (item.to === '/History') {
|
|
41
|
+
dataStore.sendToParent(constants.postActions.toHistory, null);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// 2. Универсальное получение targetTab
|
|
46
|
+
let targetTab: string | null = null;
|
|
47
|
+
|
|
48
|
+
// Если query передан отдельно в item
|
|
49
|
+
if (item.query?.tab) {
|
|
50
|
+
targetTab = item.query.tab as string;
|
|
51
|
+
}
|
|
52
|
+
// Если query зашит внутри item.to (как строка или объект)
|
|
53
|
+
else if (item.to) {
|
|
54
|
+
// router.resolve магически превращает '/path?tab=1' или {path: '..', query: {tab: 1}}
|
|
55
|
+
// в стандартизированный объект роута
|
|
56
|
+
const resolved = router.resolve(item.to as RouteLocationRaw);
|
|
57
|
+
targetTab = resolved.query?.tab as string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// 3. Синхронизация меню в сторе
|
|
61
|
+
if (targetTab) {
|
|
62
|
+
const queryTab = dataStore.menuItems.find((i: MenuItem) => i.id === targetTab);
|
|
63
|
+
dataStore.menu.selectedItem = queryTab || new MenuItem();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 4. Переход
|
|
67
|
+
if (item.to) {
|
|
68
|
+
router.push(item.to as RouteLocationRaw);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<style scoped></style>
|
|
@@ -2,19 +2,24 @@
|
|
|
2
2
|
<div class="flex flex-col gap-[10px] w-full align-center">
|
|
3
3
|
<v-expansion-panels :flat="true">
|
|
4
4
|
<v-expansion-panel class="!rounded-[8px]">
|
|
5
|
-
<v-expansion-panel-title class="!text-[12px] border border-[#00000014]">
|
|
5
|
+
<v-expansion-panel-title class="!text-[12px] border border-[#00000014]">{{ $appContextStore.t('howToGetDigitalDocument') }}</v-expansion-panel-title>
|
|
6
6
|
<v-expansion-panel-text class="text-[12px] text-[#464f60]">
|
|
7
|
-
1.
|
|
8
|
-
2.
|
|
9
|
-
•
|
|
10
|
-
•
|
|
11
|
-
•
|
|
12
|
-
•
|
|
13
|
-
3.
|
|
14
|
-
•
|
|
15
|
-
•
|
|
16
|
-
•
|
|
17
|
-
|
|
7
|
+
1. {{ $appContextStore.t('selectDocumentType') }} <br /><br />
|
|
8
|
+
2. {{ $appContextStore.t('viaEGovMobileAndOtherApps') }}: <br />
|
|
9
|
+
• {{ $appContextStore.t('openDigitalDocumentsSection') }} <br />
|
|
10
|
+
• {{ $appContextStore.t('selectDocumentAndGrantAccess') }} <br />
|
|
11
|
+
• {{ $appContextStore.t('enter6DigitCodeInConfirmationField') }} <br />
|
|
12
|
+
• {{ $appContextStore.t('clickGetDocument') }} <br /><br />
|
|
13
|
+
3. {{ $appContextStore.t('viaSms') }}: <br />
|
|
14
|
+
• {{ $appContextStore.t('clickSendCode') }} <br />
|
|
15
|
+
• {{ $appContextStore.t('enterReceivedSmsCode') }} <br />
|
|
16
|
+
• {{ $appContextStore.t('clickGetDocument') }} <br /><br />
|
|
17
|
+
<template v-if="currentLocale === 'kz'">
|
|
18
|
+
4. Қате жағдайда <a href="javascript:void(0);" class="text-blue-600" @click.prevent="emit('updateDigitalDocuments')">профильді жаңартуды</a> басыңыз<br />
|
|
19
|
+
</template>
|
|
20
|
+
<template v-else>
|
|
21
|
+
4. При ошибке нажмите <a href="javascript:void(0);" class="text-blue-600" @click.prevent="emit('updateDigitalDocuments')">обновить профиль</a><br />
|
|
22
|
+
</template>
|
|
18
23
|
</v-expansion-panel-text>
|
|
19
24
|
</v-expansion-panel>
|
|
20
25
|
</v-expansion-panels>
|
|
@@ -23,20 +28,27 @@
|
|
|
23
28
|
<div class="digital-document-otp flex flex-col">
|
|
24
29
|
<base-otp-input v-model="otpCode" @keyup.enter.prevent="otpCode.length === otpLength && emitGetCode()" />
|
|
25
30
|
<span v-if="!loading && otpSendDisabled" class="text-center" :class="[$styles.mutedText]">
|
|
26
|
-
|
|
27
|
-
|
|
31
|
+
<template v-if="currentLocale === 'kz'">
|
|
32
|
+
<span class="underline underline-offset-2">eGov Mobile</span> немесе <span class="underline underline-offset-2">банк қосымшасынан</span> алынған цифрлық құжат кодын
|
|
33
|
+
енгізіңіз.
|
|
34
|
+
</template>
|
|
35
|
+
<template v-else>
|
|
36
|
+
Введите код цифрового документа из <span class="underline underline-offset-2">eGov Mobile</span> или
|
|
37
|
+
<span class="underline underline-offset-2">банковского приложения</span>.
|
|
38
|
+
</template>
|
|
28
39
|
</span>
|
|
29
40
|
</div>
|
|
30
41
|
</div>
|
|
31
42
|
<div class="w-full d-flex flex-col sm:flex-row gap-4">
|
|
32
|
-
<base-btn v-if="!otpSendDisabled" :disabled="loading" :loading="loading" :btn="$styles.whiteBorderBtn" text="
|
|
33
|
-
<base-btn :disabled="loading" :loading="loading" text="
|
|
43
|
+
<base-btn v-if="!otpSendDisabled" :disabled="loading" :loading="loading" :btn="$styles.whiteBorderBtn" :text="$appContextStore.t('sendSmsCode')" @click="emitGetCode" />
|
|
44
|
+
<base-btn :disabled="loading" :loading="loading" :text="$appContextStore.t('getDocument')" @click="emitGetDocument" />
|
|
34
45
|
</div>
|
|
35
46
|
</div>
|
|
36
47
|
</template>
|
|
37
48
|
|
|
38
49
|
<script setup lang="ts">
|
|
39
50
|
import type { DigitalDocTypes } from '../../types';
|
|
51
|
+
import { useI18n } from 'vue-i18n';
|
|
40
52
|
|
|
41
53
|
const props = defineProps({
|
|
42
54
|
documentItems: {
|
|
@@ -61,10 +73,11 @@ const emit = defineEmits(['getCode', 'getDigitalDocument', 'updateDigitalDocumen
|
|
|
61
73
|
const dataStore = useDataStore();
|
|
62
74
|
const documentType = ref<DigitalDocTypes | null>(null);
|
|
63
75
|
const otpCode = ref<string>('');
|
|
76
|
+
const appContextStore = useAppContextStore();
|
|
64
77
|
|
|
65
78
|
const emitGetCode = () => {
|
|
66
79
|
if (!documentType.value) {
|
|
67
|
-
showToaster('error', '
|
|
80
|
+
showToaster('error', appContextStore.t('selectDocumentType'), 3000);
|
|
68
81
|
return;
|
|
69
82
|
}
|
|
70
83
|
|
|
@@ -73,7 +86,7 @@ const emitGetCode = () => {
|
|
|
73
86
|
|
|
74
87
|
const emitGetDocument = () => {
|
|
75
88
|
if (!otpCode.value) {
|
|
76
|
-
showToaster('error', '
|
|
89
|
+
showToaster('error', appContextStore.t('enterConfirmationCode'), 3000);
|
|
77
90
|
return;
|
|
78
91
|
}
|
|
79
92
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<base-panel-input
|
|
7
7
|
v-if="!!member.digitalDocument"
|
|
8
8
|
v-model="member.digitalDocument.fileName"
|
|
9
|
-
label="
|
|
9
|
+
:label="$appContextStore.t('digitalDocument')"
|
|
10
10
|
:readonly="disabled"
|
|
11
11
|
:clearable="!disabled"
|
|
12
12
|
append-inner-icon="mdi mdi-chevron-right"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
:class="[$styles.whiteBg]"
|
|
19
19
|
@click="$emit('openDigitalDocPanel', member.iin)"
|
|
20
20
|
>
|
|
21
|
-
<p :class="[$styles.greyText]"
|
|
21
|
+
<p :class="[$styles.greyText]">{{ $appContextStore.t('getDigitalDocument') }}</p>
|
|
22
22
|
<div class="cursor-pointer">
|
|
23
23
|
<i class="mdi mdi-file-document text-xl" :class="[$styles.blueText]"></i>
|
|
24
24
|
</div>
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
:six-weeks="true"
|
|
15
15
|
:min-date="minDate"
|
|
16
16
|
:max-date="maxDate"
|
|
17
|
-
cancel-text="
|
|
18
|
-
select-text="
|
|
17
|
+
:cancel-text="$appContextStore.t('buttons.cancel')"
|
|
18
|
+
:select-text="$appContextStore.t('choose')"
|
|
19
19
|
>
|
|
20
20
|
<template #trigger>
|
|
21
21
|
<v-icon icon="mdi mdi-calendar-blank-outline cursor-pointer" />
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
format="MM.yyyy"
|
|
10
10
|
:teleport="true"
|
|
11
11
|
:close-on-scroll="true"
|
|
12
|
-
cancel-text="
|
|
13
|
-
select-text="
|
|
12
|
+
:cancel-text="$appContextStore.t('buttons.cancel')"
|
|
13
|
+
:select-text="$appContextStore.t('choose')"
|
|
14
14
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
15
15
|
/>
|
|
16
16
|
</template>
|
|
@@ -41,6 +41,7 @@ export default defineComponent({
|
|
|
41
41
|
setup(props) {
|
|
42
42
|
const mask = computed(() => (props.control.maska ? useMask()[props.control.maska] : ''));
|
|
43
43
|
const dataStore = useDataStore();
|
|
44
|
+
const appContextStore = useAppContextStore();
|
|
44
45
|
|
|
45
46
|
const textFieldProps = computed(() => {
|
|
46
47
|
return {
|
|
@@ -61,8 +62,8 @@ export default defineComponent({
|
|
|
61
62
|
clearable: false,
|
|
62
63
|
disabled: props.control.disabled,
|
|
63
64
|
readonly: props.control.readonly,
|
|
64
|
-
selectText: '
|
|
65
|
-
cancelText: '
|
|
65
|
+
selectText: appContextStore.t('choose'),
|
|
66
|
+
cancelText: appContextStore.t('buttons.close'),
|
|
66
67
|
closeOnScroll: true,
|
|
67
68
|
transitions: false,
|
|
68
69
|
teleport: true,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
@onMore="$emit('onMore')"
|
|
16
16
|
/>
|
|
17
17
|
<slot key="slot-content" name="content"></slot>
|
|
18
|
-
<section key="main" class="
|
|
18
|
+
<section key="main" class="flex-1 overflow-y-scroll pb-[14px]" :class="[$styles.flexColNav]">
|
|
19
19
|
<slot name="start"></slot>
|
|
20
20
|
<base-fade-transition>
|
|
21
21
|
<div v-if="$dataStore.menuItems && $dataStore.menuItems.length" class="flex flex-col gap-[10px]">
|
|
@@ -108,6 +108,7 @@ export default defineComponent({
|
|
|
108
108
|
setup(props, { emit }) {
|
|
109
109
|
const dataStore = useDataStore();
|
|
110
110
|
const router = useRouter();
|
|
111
|
+
const appContextStore = useAppContextStore();
|
|
111
112
|
|
|
112
113
|
const pickItem = async (item: MenuItem) => {
|
|
113
114
|
if (item.title !== dataStore.menu.selectedItem.title && !dataStore.filters.disabled(item)) {
|
|
@@ -115,7 +116,7 @@ export default defineComponent({
|
|
|
115
116
|
if (item.link && 'name' in item.link) {
|
|
116
117
|
await router.push(item.link as RouteLocationNormalized);
|
|
117
118
|
} else {
|
|
118
|
-
showToaster('warning', '
|
|
119
|
+
showToaster('warning', appContextStore.t('missingRedirectLink'));
|
|
119
120
|
}
|
|
120
121
|
} else {
|
|
121
122
|
emit('onLink', item);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<section v-if="firstQuestionList && firstQuestionList.length && (isFirstPanelOnRight ? true : !firstPanel) && !secondPanel" class="flex flex-col shrink grow
|
|
2
|
+
<section v-if="firstQuestionList && firstQuestionList.length && (isFirstPanelOnRight ? true : !firstPanel) && !secondPanel" class="flex flex-col shrink grow h-full">
|
|
3
3
|
<base-form-section v-if="$dataStore.isUnderwriter()" class="mx-[10px]">
|
|
4
4
|
<base-rounded-select v-model="filterType" class="w-[200px]" :items="filterItems" :label="$appContextStore.t('labels.filter')" hide-details />
|
|
5
5
|
</base-form-section>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
@clicked="handleToggler"
|
|
13
13
|
/>
|
|
14
14
|
</section>
|
|
15
|
-
<v-form ref="vForm" class="grow shrink overflow-y-scroll" @submit="submitForm">
|
|
15
|
+
<v-form ref="vForm" class="grow shrink overflow-y-scroll flex-1" @submit="submitForm">
|
|
16
16
|
<section
|
|
17
17
|
v-if="firstQuestionList.filter(i => i.first.definedAnswers === 'N').length"
|
|
18
18
|
:class="[$styles.blueBgLight, $styles.rounded]"
|
|
@@ -161,8 +161,7 @@
|
|
|
161
161
|
<section
|
|
162
162
|
ref="firstPanelSection"
|
|
163
163
|
v-if="currentQuestion && currentQuestion.second && isFirstPanelOnRight ? false : firstPanel"
|
|
164
|
-
class="flex flex-col px-[10px] pb-[
|
|
165
|
-
:class="[$styles.scrollPage]"
|
|
164
|
+
class="flex flex-col px-[10px] pb-[70px] h-full overflow-y-auto"
|
|
166
165
|
>
|
|
167
166
|
<v-form
|
|
168
167
|
v-if="currentQuestion"
|
|
@@ -195,10 +194,10 @@
|
|
|
195
194
|
<base-panel-input
|
|
196
195
|
v-else
|
|
197
196
|
:class="[$styles.textTitle, $styles.greenText]"
|
|
198
|
-
:value="question.answerName ? question.answerName : '
|
|
197
|
+
:value="question.answerName ? question.answerName : $appContextStore.t('selectAnswerOption')"
|
|
199
198
|
:readonly="formStore.isDisabled[whichSurvey] || !$dataStore.isTask()"
|
|
200
199
|
:clearable="false"
|
|
201
|
-
:error-messages="isSecondRequired ? (question.answerName ? [] : ['
|
|
200
|
+
:error-messages="isSecondRequired ? (question.answerName ? [] : [$appContextStore.t('selectAnswerOption')]) : []"
|
|
202
201
|
@click="openSecondPanel(question)"
|
|
203
202
|
></base-panel-input>
|
|
204
203
|
</base-form-text-section>
|
|
@@ -252,10 +251,10 @@
|
|
|
252
251
|
<base-panel-input
|
|
253
252
|
v-else
|
|
254
253
|
:class="[$styles.greenText]"
|
|
255
|
-
:value="question.answerName ? question.answerName : '
|
|
254
|
+
:value="question.answerName ? question.answerName : $appContextStore.t('selectAnswerOption')"
|
|
256
255
|
:readonly="formStore.isDisabled[whichSurvey] || !$dataStore.isTask()"
|
|
257
256
|
:clearable="false"
|
|
258
|
-
:error-messages="isSecondRequired ? (question.answerName ? [] : ['
|
|
257
|
+
:error-messages="isSecondRequired ? (question.answerName ? [] : [$appContextStore.t('selectAnswerOption')]) : []"
|
|
259
258
|
@click="openSecondPanel(question)"
|
|
260
259
|
/>
|
|
261
260
|
</base-form-text-section>
|
|
@@ -286,9 +285,9 @@ export default defineComponent({
|
|
|
286
285
|
const secondPanel = ref<boolean>(false);
|
|
287
286
|
const filterType = ref<'Иә/Да' | 'Жоқ/Нет' | null>(null);
|
|
288
287
|
const filterItems = [
|
|
289
|
-
{ title: '
|
|
290
|
-
{ title: '
|
|
291
|
-
{ title: '
|
|
288
|
+
{ title: appContextStore.t('all'), value: null },
|
|
289
|
+
{ title: appContextStore.t('onlyYes'), value: 'Иә/Да' },
|
|
290
|
+
{ title: appContextStore.t('onlyNo'), value: 'Жоқ/Нет' },
|
|
292
291
|
];
|
|
293
292
|
const surveyType = ref<'health' | 'critical'>('tab' in route.query && route.query.tab === 'criticalBase' ? 'critical' : 'health');
|
|
294
293
|
const whichSurvey = computed(() =>
|
|
@@ -156,18 +156,18 @@ export default defineComponent({
|
|
|
156
156
|
|
|
157
157
|
const carouselItems = [
|
|
158
158
|
{
|
|
159
|
-
title: '
|
|
160
|
-
subtitle: '
|
|
159
|
+
title: appContextStore.t('allPoliciesInOneClick'),
|
|
160
|
+
subtitle: appContextStore.t('instantAccessToYourPoliciesInfo'),
|
|
161
161
|
img: '/left-side-1.png',
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
|
-
title: '
|
|
165
|
-
subtitle: '
|
|
164
|
+
title: appContextStore.t('allPoliciesInOneClick'),
|
|
165
|
+
subtitle: appContextStore.t('instantAccessToYourPoliciesInfo'),
|
|
166
166
|
img: '/left-side-1.png',
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
|
-
title: '
|
|
170
|
-
subtitle: '
|
|
169
|
+
title: appContextStore.t('allPoliciesInOneClick'),
|
|
170
|
+
subtitle: appContextStore.t('instantAccessToYourPoliciesInfo'),
|
|
171
171
|
img: '/left-side-1.png',
|
|
172
172
|
},
|
|
173
173
|
];
|
|
@@ -415,7 +415,7 @@ export default defineComponent({
|
|
|
415
415
|
}
|
|
416
416
|
const initialPoint = `${props.member.iin!.replaceAll('-', '')}.`;
|
|
417
417
|
const RESPONSE = ESBDMessage(ESBDResponse, initialPoint);
|
|
418
|
-
let errorMessage = RESPONSE !== false ? RESPONSE : '
|
|
418
|
+
let errorMessage = RESPONSE !== false ? RESPONSE : appContextStore.t('undefinedError');
|
|
419
419
|
if (typeof ESBDResponse !== 'object' || ESBDResponse.errorCode !== 0) {
|
|
420
420
|
appContextStore.isLoading = false;
|
|
421
421
|
showToaster('error', errorMessage, 5000);
|
|
@@ -3,12 +3,31 @@
|
|
|
3
3
|
<section v-if="isSupportAttachmentSection" class="w-full px-[10px] pt-[14px]">
|
|
4
4
|
<base-btn :disabled="documentLoading" :loading="documentLoading" text="Открыть панель вложения для Техподдержки" size="sm" @click="openSupportAttachPanel" />
|
|
5
5
|
</section>
|
|
6
|
-
<base-form-section v-if="isUnderwriterDocuments" title="
|
|
6
|
+
<base-form-section v-if="isUnderwriterDocuments" :title="$appContextStore.t('uploadDocumentsForUnderwriting')" class="mx-[10px] mt-[14px]">
|
|
7
7
|
<base-file-input :readonly="isDisabled || documentLoading" @input.prevent="onUnderFiles($event)" @onClear="onClearUnderFiles()" />
|
|
8
8
|
<base-animation>
|
|
9
|
-
<base-btn
|
|
9
|
+
<base-btn
|
|
10
|
+
v-if="underDocumentsList && underDocumentsList.length"
|
|
11
|
+
:loading="documentLoading"
|
|
12
|
+
:text="$appContextStore.t('upload')"
|
|
13
|
+
size="sm"
|
|
14
|
+
class="mt-3"
|
|
15
|
+
@click="uploadUnderFiles"
|
|
16
|
+
/>
|
|
10
17
|
</base-animation>
|
|
11
18
|
</base-form-section>
|
|
19
|
+
<base-form-section
|
|
20
|
+
v-if="
|
|
21
|
+
$appContextStore.isGons &&
|
|
22
|
+
$dataStore.isInitiator() &&
|
|
23
|
+
formStore.applicationData &&
|
|
24
|
+
(formStore.applicationData.statusCode === 'StartForm' || formStore.applicationData.statusCode === 'EditForm')
|
|
25
|
+
"
|
|
26
|
+
title="Загрузить документ подтверждающий степень родства"
|
|
27
|
+
class="mx-[10px] mt-[14px]"
|
|
28
|
+
>
|
|
29
|
+
<base-file-input :readonly="isDisabled || documentLoading" @input.prevent="uploadAdditionalFile($event, '53')" />
|
|
30
|
+
</base-form-section>
|
|
12
31
|
<section class="w-full px-[10px] pt-[14px]" v-if="$appContextStore.isPension && formStore.hasRepresentative">
|
|
13
32
|
<base-content-block :class="[$styles.textSimple]">
|
|
14
33
|
<div :class="[$styles.whiteBg, $styles.rounded]" class="p-2 h-12 flex items-center relative">
|
|
@@ -28,7 +47,10 @@
|
|
|
28
47
|
<base-content-block v-if="showContract" :class="[$styles.textSimple]">
|
|
29
48
|
<h5 class="text-center font-medium mb-4">{{ $appContextStore.t('labels.statements') }}</h5>
|
|
30
49
|
<div :class="[$styles.whiteBg, $styles.rounded]" class="p-2 h-12 flex items-center relative">
|
|
31
|
-
<span class="ml-2"
|
|
50
|
+
<span class="ml-2">
|
|
51
|
+
<template v-if="currentLocale === 'kz'">{{ processCode === 19 || processCode === 25 ? 'Сақтандыруға' : 'Қайтаруға' }} өтініш беру</template>
|
|
52
|
+
<template v-else>Заявления на {{ processCode === 19 || processCode === 25 ? 'страхование' : 'возврат' }}</template>
|
|
53
|
+
</span>
|
|
32
54
|
<i
|
|
33
55
|
class="transition-all cursor-pointer mdi mdi-tray-arrow-down pl-2 mr-3 border-l-[1px] text-xl absolute right-0"
|
|
34
56
|
:class="[$styles.greenTextHover]"
|
|
@@ -45,7 +67,10 @@
|
|
|
45
67
|
<base-content-block v-if="showContract" :class="[$styles.textSimple]">
|
|
46
68
|
<h5 class="text-center font-medium mb-4">{{ $appContextStore.t('labels.contract') }}</h5>
|
|
47
69
|
<div :class="[$styles.whiteBg, $styles.rounded]" class="p-2 h-12 flex items-center relative">
|
|
48
|
-
<span class="ml-2"
|
|
70
|
+
<span class="ml-2">
|
|
71
|
+
<template v-if="currentLocale === 'kz'">{{ processCode === 19 || processCode === 25 ? 'Сақтандыру' : 'Қайтару' }} шарты</template>
|
|
72
|
+
<template v-else>Договор {{ processCode === 19 || processCode === 25 ? 'страхования' : 'возврата' }}</template>
|
|
73
|
+
</span>
|
|
49
74
|
<i
|
|
50
75
|
class="transition-all cursor-pointer mdi mdi-tray-arrow-down pl-2 mr-3 border-l-[1px] text-xl absolute right-0"
|
|
51
76
|
:class="[$styles.greenTextHover]"
|
|
@@ -137,7 +162,7 @@
|
|
|
137
162
|
/>
|
|
138
163
|
<base-file-input
|
|
139
164
|
v-if="!formStore.signedDocumentList.find(i => i.fileTypeCode === '9' && i.iin === String(member.iin).replaceAll('-', '')) && member.isDisability"
|
|
140
|
-
label="
|
|
165
|
+
:label="$appContextStore.t('disabilityCertificate')"
|
|
141
166
|
:loading="$appContextStore.isLoading"
|
|
142
167
|
@input="uploadAdditionalFile($event, '9', member.iin)"
|
|
143
168
|
/>
|
|
@@ -252,13 +277,13 @@
|
|
|
252
277
|
v-if="currentDocument.fileName && currentDocument.fileName.includes('.') ? currentDocument.fileName.endsWith('.pdf') : true"
|
|
253
278
|
:disabled="documentLoading"
|
|
254
279
|
:loading="documentLoading"
|
|
255
|
-
text="
|
|
280
|
+
:text="$appContextStore.t('buttons.open')"
|
|
256
281
|
@click="getDoc('view')"
|
|
257
282
|
/>
|
|
258
283
|
</base-animation>
|
|
259
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="
|
|
284
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" :text="$appContextStore.t('download')" @click="getDoc('download', $dataStore.isSupport() ? downloadType : undefined)" />
|
|
260
285
|
<base-animation>
|
|
261
|
-
<base-btn v-if="canDeleteFiles" :disabled="documentLoading" :loading="documentLoading" text="
|
|
286
|
+
<base-btn v-if="canDeleteFiles" :disabled="documentLoading" :loading="documentLoading" :text="$appContextStore.t('buttons.delete')" @click="deletionDialog = true" />
|
|
262
287
|
</base-animation>
|
|
263
288
|
</div>
|
|
264
289
|
</base-fade-transition>
|
|
@@ -310,19 +335,26 @@
|
|
|
310
335
|
<base-form-section class="!mt-0">
|
|
311
336
|
<v-expansion-panels :flat="true">
|
|
312
337
|
<v-expansion-panel class="digital-doc-info !rounded-[8px]">
|
|
313
|
-
<v-expansion-panel-title class="!text-[12px]">
|
|
338
|
+
<v-expansion-panel-title class="!text-[12px]">{{ $appContextStore.t('howToGetDigitalDocument') }}:</v-expansion-panel-title>
|
|
314
339
|
<v-expansion-panel-text class="text-[12px] text-[#464f60]">
|
|
315
|
-
1.
|
|
316
|
-
2.
|
|
317
|
-
•
|
|
318
|
-
•
|
|
319
|
-
•
|
|
320
|
-
•
|
|
321
|
-
3.
|
|
322
|
-
•
|
|
323
|
-
•
|
|
324
|
-
•
|
|
325
|
-
|
|
340
|
+
1. {{ $appContextStore.t('selectDocumentType') }} <br /><br />
|
|
341
|
+
2. {{ $appContextStore.t('viaEGovMobileAndOtherApps') }}: <br />
|
|
342
|
+
• {{ $appContextStore.t('openDigitalDocumentsSection') }} <br />
|
|
343
|
+
• {{ $appContextStore.t('selectDocumentAndGrantAccess') }} <br />
|
|
344
|
+
• {{ $appContextStore.t('enter6DigitCodeInConfirmationField') }} <br />
|
|
345
|
+
• {{ $appContextStore.t('clickGetDocument') }} <br /><br />
|
|
346
|
+
3. {{ $appContextStore.t('viaSms') }}: <br />
|
|
347
|
+
• {{ $appContextStore.t('clickSendCode') }} <br />
|
|
348
|
+
• {{ $appContextStore.t('enterReceivedSmsCode') }} <br />
|
|
349
|
+
• {{ $appContextStore.t('clickGetDocument') }} <br /><br />
|
|
350
|
+
<template v-if="currentLocale === 'kz'">
|
|
351
|
+
4. Қате жағдайда
|
|
352
|
+
<a href="javascript:void(0);" class="text-blue-600" @click="memberStore.updateDigitalDocumentsProfile(currentIin)">профильді жаңартуды</a> басыңыз<br />
|
|
353
|
+
</template>
|
|
354
|
+
<template v-else>
|
|
355
|
+
4. При ошибке нажмите <a href="javascript:void(0);" class="text-blue-600" @click="memberStore.updateDigitalDocumentsProfile(currentIin)">обновить профиль</a
|
|
356
|
+
><br />
|
|
357
|
+
</template>
|
|
326
358
|
</v-expansion-panel-text>
|
|
327
359
|
</v-expansion-panel>
|
|
328
360
|
</v-expansion-panels>
|
|
@@ -337,13 +369,13 @@
|
|
|
337
369
|
/>
|
|
338
370
|
<base-animation>
|
|
339
371
|
<span v-if="!documentLoading" class="text-center cursor-pointer" :class="[$styles.mutedText]" @click="getCode"
|
|
340
|
-
|
|
372
|
+
>{{ $appContextStore.t('didNotReceiveCode') }} <span class="underline underline-offset-2">{{ $appContextStore.t('resendCode') }}</span></span
|
|
341
373
|
>
|
|
342
374
|
</base-animation>
|
|
343
375
|
</div>
|
|
344
376
|
</div>
|
|
345
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" :btn="$styles.greenLightBtn" text="
|
|
346
|
-
<base-btn :disabled="documentLoading" :loading="documentLoading" text="
|
|
377
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" :btn="$styles.greenLightBtn" :text="$appContextStore.t('sendSmsCode')" @click="getCode" />
|
|
378
|
+
<base-btn :disabled="documentLoading" :loading="documentLoading" :text="$appContextStore.t('getDocument')" @click="getDigitalDocument" />
|
|
347
379
|
</div>
|
|
348
380
|
</Teleport>
|
|
349
381
|
<base-dialog
|
|
@@ -713,10 +745,10 @@ export default defineComponent({
|
|
|
713
745
|
() => {
|
|
714
746
|
if (document_list.value.length > 1 && unSignedList.value.length) {
|
|
715
747
|
currentState.action = 'submit';
|
|
716
|
-
currentState.text = '
|
|
748
|
+
currentState.text = appContextStore.t('allDocumentsSigned');
|
|
717
749
|
} else {
|
|
718
750
|
currentState.action = 'upload';
|
|
719
|
-
currentState.text = '
|
|
751
|
+
currentState.text = appContextStore.t('buttons.save');
|
|
720
752
|
}
|
|
721
753
|
},
|
|
722
754
|
{
|
|
@@ -759,7 +791,7 @@ export default defineComponent({
|
|
|
759
791
|
|
|
760
792
|
const getCode = async () => {
|
|
761
793
|
if (!documentType.value) {
|
|
762
|
-
showToaster('error', '
|
|
794
|
+
showToaster('error', appContextStore.t('selectDocumentType'), 3000);
|
|
763
795
|
return;
|
|
764
796
|
}
|
|
765
797
|
documentLoading.value = true;
|
|
@@ -772,11 +804,11 @@ export default defineComponent({
|
|
|
772
804
|
|
|
773
805
|
const getDigitalDocument = async () => {
|
|
774
806
|
if (!documentType.value) {
|
|
775
|
-
showToaster('error', '
|
|
807
|
+
showToaster('error', appContextStore.t('selectDocumentType'), 3000);
|
|
776
808
|
return;
|
|
777
809
|
}
|
|
778
810
|
if (!otpCode.value) {
|
|
779
|
-
showToaster('error', '
|
|
811
|
+
showToaster('error', appContextStore.t('enterConfirmationCode'), 3000);
|
|
780
812
|
return;
|
|
781
813
|
}
|
|
782
814
|
documentLoading.value = true;
|