hl-core 0.0.9-beta.2 → 0.0.9-beta.20
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 +684 -0
- package/api/index.ts +2 -620
- package/api/interceptors.ts +52 -14
- package/components/Button/Btn.vue +3 -3
- package/components/Complex/ContentBlock.vue +1 -1
- package/components/Complex/MessageBlock.vue +1 -1
- 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 +36 -29
- 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 +73 -20
- package/components/Input/EmptyFormField.vue +1 -1
- package/components/Input/FileInput.vue +8 -3
- package/components/Input/Monthpicker.vue +33 -0
- package/components/Input/PanelInput.vue +5 -1
- 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 +88 -47
- 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 +2 -2
- package/components/Pages/MemberForm.vue +215 -59
- package/components/Pages/ProductAgreement.vue +1 -3
- package/components/Pages/ProductConditions.vue +677 -151
- package/components/Panel/PanelHandler.vue +86 -21
- package/components/Panel/PanelSelectItem.vue +18 -3
- package/components/Utilities/IconBorder.vue +17 -0
- package/composables/axios.ts +1 -1
- package/composables/classes.ts +276 -11
- package/composables/constants.ts +43 -0
- package/composables/index.ts +40 -4
- package/composables/styles.ts +20 -10
- package/configs/i18n.ts +0 -2
- package/layouts/default.vue +5 -2
- package/layouts/full.vue +1 -1
- package/locales/ru.json +202 -6
- package/nuxt.config.ts +1 -1
- package/package.json +30 -39
- package/pages/500.vue +2 -2
- package/pages/Token.vue +1 -0
- package/plugins/helperFunctionsPlugins.ts +6 -7
- package/plugins/vuetifyPlugin.ts +2 -0
- package/store/data.store.ts +541 -211
- package/store/form.store.ts +11 -1
- package/store/member.store.ts +1 -1
- package/store/rules.ts +37 -2
- package/types/enum.ts +6 -0
- package/types/index.ts +145 -31
- package/components/Button/BtnIcon.vue +0 -47
- package/locales/kz.json +0 -585
|
@@ -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
|
|
@@ -17,22 +17,29 @@
|
|
|
17
17
|
>{{ `Запрашиваемая страховая сумма: ` }} <b>{{ `${requestedSumInsured}₸` }}</b>
|
|
18
18
|
</span>
|
|
19
19
|
</base-content-block>
|
|
20
|
+
<base-content-block v-if="$dataStore.isLifetrip" class="flex flex-col gap-3">
|
|
21
|
+
<span
|
|
22
|
+
>{{ `Стоимость на страховую сумму ${insuredAmount}:` }} <b>{{ `${price}₸` }}</b></span
|
|
23
|
+
>
|
|
24
|
+
</base-content-block>
|
|
20
25
|
<base-btn :text="$dataStore.t('confirm.yes')" @click="handleTask" />
|
|
21
|
-
<base-btn :btn="$
|
|
26
|
+
<base-btn :btn="$styles.blueLightBtn" :text="$dataStore.t('confirm.no')" @click="closePanel" />
|
|
22
27
|
</div>
|
|
23
28
|
</section>
|
|
24
29
|
<section v-if="signingActions" class="relative">
|
|
25
30
|
<div>
|
|
26
31
|
<base-fade-transition>
|
|
27
|
-
<div v-if="!isSendNumberOpen" :class="[$
|
|
28
|
-
<div :class="[$
|
|
32
|
+
<div v-if="!isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
33
|
+
<div :class="[$styles.blueBgLight]" class="rounded-lg p-4">
|
|
29
34
|
<v-expansion-panels v-if="formStore.signUrls && formStore.signUrls.length" variant="accordion" multiple>
|
|
30
35
|
<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="$
|
|
36
|
+
<v-expansion-panel-title class="h-[80px]" :class="$styles.textTitle">
|
|
37
|
+
{{ `${signUrl.longName} - ${signUrl.iin}` }}
|
|
38
|
+
</v-expansion-panel-title>
|
|
32
39
|
<v-expansion-panel-text class="border-t-[1px]">
|
|
33
|
-
<section class="flex flex-col gap-4 py-3" :class="$
|
|
40
|
+
<section class="flex flex-col gap-4 py-3" :class="$styles.textSimple">
|
|
34
41
|
<base-btn :loading="loading" :text="$dataStore.t('sign.copyCloud')" @click="$dataStore.copyToClipboard(signUrl.uri)" />
|
|
35
|
-
<base-btn :loading="loading" :btn="$
|
|
42
|
+
<base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('sign.recipientNumber')" @click="openSmsPanel(signUrl)" />
|
|
36
43
|
</section>
|
|
37
44
|
</v-expansion-panel-text>
|
|
38
45
|
</v-expansion-panel>
|
|
@@ -40,7 +47,7 @@
|
|
|
40
47
|
<base-list-empty v-else />
|
|
41
48
|
</div>
|
|
42
49
|
</div>
|
|
43
|
-
<div v-if="isSendNumberOpen" :class="[$
|
|
50
|
+
<div v-if="isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
44
51
|
<i
|
|
45
52
|
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
53
|
@click="isSendNumberOpen = false"
|
|
@@ -55,8 +62,8 @@
|
|
|
55
62
|
placeholder="+7 7"
|
|
56
63
|
/>
|
|
57
64
|
</v-form>
|
|
58
|
-
<base-btn :text="$dataStore.t('buttons.sendSMS')" :loading="loading" @click="submitForm"
|
|
59
|
-
|
|
65
|
+
<base-btn :text="$dataStore.t('buttons.sendSMS')" :loading="loading" @click="submitForm" />
|
|
66
|
+
</base-form-section>
|
|
60
67
|
</div>
|
|
61
68
|
</base-fade-transition>
|
|
62
69
|
</div>
|
|
@@ -64,11 +71,11 @@
|
|
|
64
71
|
<section v-if="payingActions" class="relative">
|
|
65
72
|
<div>
|
|
66
73
|
<base-fade-transition>
|
|
67
|
-
<div v-if="!isSendNumberOpen" :class="[$
|
|
74
|
+
<div v-if="!isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
68
75
|
<base-btn :loading="loading" :text="$dataStore.t('payment.copyUrl')" @click="$dataStore.copyToClipboard(formStore.epayLink)" />
|
|
69
|
-
<base-btn :loading="loading" :btn="$
|
|
76
|
+
<base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('payment.recipientNumber')" @click="openEpayPanel" />
|
|
70
77
|
</div>
|
|
71
|
-
<div v-if="isSendNumberOpen" :class="[$
|
|
78
|
+
<div v-if="isSendNumberOpen" :class="[$styles.flexColNav]">
|
|
72
79
|
<i
|
|
73
80
|
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
81
|
@click="isSendNumberOpen = false"
|
|
@@ -90,7 +97,7 @@
|
|
|
90
97
|
</div>
|
|
91
98
|
</section>
|
|
92
99
|
<section v-if="affiliateActions">
|
|
93
|
-
<div :class="[$
|
|
100
|
+
<div :class="[$styles.flexColNav]">
|
|
94
101
|
<v-form ref="vForm">
|
|
95
102
|
<base-content-block class="flex flex-col gap-3">
|
|
96
103
|
<base-form-input v-model.trim="formStore.affilationResolution.number" :rules="$rules.required" :label="$dataStore.t('form.documentNumber')" />
|
|
@@ -99,22 +106,40 @@
|
|
|
99
106
|
:maska="$maska.date"
|
|
100
107
|
:rules="$rules.required"
|
|
101
108
|
:label="$dataStore.t('form.date')"
|
|
102
|
-
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
109
|
+
append-inner-icon="mdi mdi-calendar-blank-outline"
|
|
110
|
+
/>
|
|
103
111
|
<base-file-input v-if="!affiliationDocument" @input.prevent="onFileChange($event)" />
|
|
104
112
|
<base-empty-form-field v-if="affiliationDocument" class="justify-between">
|
|
105
113
|
{{ `${affiliationDocument.fileTypeName} - ${affiliationDocument.fileName}` }}
|
|
106
|
-
<i class="cursor-pointer mdi mdi-file-document mr-6 text-[#a0b3d8] text-xl"></i
|
|
107
|
-
|
|
114
|
+
<i class="cursor-pointer mdi mdi-file-document mr-6 text-[#a0b3d8] text-xl"></i
|
|
115
|
+
></base-empty-form-field>
|
|
116
|
+
</base-content-block>
|
|
108
117
|
</v-form>
|
|
109
118
|
<base-btn :text="buttonText" :loading="loading" @click="submitForm" />
|
|
110
119
|
</div>
|
|
111
120
|
</section>
|
|
121
|
+
<section v-if="templateAction">
|
|
122
|
+
<div :class="[$styles.flexColNav]">
|
|
123
|
+
<base-content-block>
|
|
124
|
+
<base-panel-item class="cursor-pointer bg-white mb-4 border-b-0 rounded">
|
|
125
|
+
{{ $dataStore.t('downloadDocument') }}
|
|
126
|
+
<i class="mdi mdi-download text-2xl text-[#A0B3D8]"></i
|
|
127
|
+
></base-panel-item>
|
|
128
|
+
<v-form ref="vForm">
|
|
129
|
+
<base-form-input v-model.trim="actionCause" :label="$dataStore.t('form.email')" :rules="$rules.required" />
|
|
130
|
+
</v-form>
|
|
131
|
+
</base-content-block>
|
|
132
|
+
<base-btn :text="buttonText" :loading="loading" @click="submitForm" />
|
|
133
|
+
</div>
|
|
134
|
+
</section>
|
|
112
135
|
</template>
|
|
113
136
|
|
|
114
137
|
<script lang="ts">
|
|
115
138
|
import { DocumentItem } from '../../composables/classes';
|
|
139
|
+
|
|
116
140
|
export default defineComponent({
|
|
117
|
-
|
|
141
|
+
emits: ['task'],
|
|
142
|
+
setup(props, { emit }) {
|
|
118
143
|
const route = useRoute();
|
|
119
144
|
const dataStore = useDataStore();
|
|
120
145
|
const formStore = useFormStore();
|
|
@@ -198,7 +223,17 @@ export default defineComponent({
|
|
|
198
223
|
|
|
199
224
|
const handleTask = async () => {
|
|
200
225
|
loading.value = true;
|
|
201
|
-
|
|
226
|
+
// Пока не нужно, на всякий оставить
|
|
227
|
+
// if (needRecalculation.value) {
|
|
228
|
+
// dataStore.showToaster('info', dataStore.t('toaster.needToRecalculate'));
|
|
229
|
+
// loading.value = false;
|
|
230
|
+
// return;
|
|
231
|
+
// }
|
|
232
|
+
if (dataStore.isAML || dataStore.isCheckContract || dataStore.isCheckContragent) {
|
|
233
|
+
emit('task', [dataStore.panelAction, route.params.taskId as string, actionCause.value]);
|
|
234
|
+
} else {
|
|
235
|
+
await dataStore.handleTask(dataStore.panelAction, route.params.taskId as string, actionCause.value);
|
|
236
|
+
}
|
|
202
237
|
loading.value = false;
|
|
203
238
|
};
|
|
204
239
|
|
|
@@ -218,31 +253,55 @@ export default defineComponent({
|
|
|
218
253
|
case constants.actions.register:
|
|
219
254
|
return dataStore.t('buttons.register');
|
|
220
255
|
case constants.actions.affiliate:
|
|
256
|
+
case constants.actions.template:
|
|
221
257
|
return dataStore.t('buttons.send');
|
|
258
|
+
default:
|
|
259
|
+
return dataStore.t('buttons.send');
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
const panelTitle = computed(() => {
|
|
264
|
+
if (dataStore.isLifeBusiness && dataStore.panelAction === constants.actions.template) {
|
|
265
|
+
return dataStore.t('template');
|
|
222
266
|
}
|
|
267
|
+
return buttonText.value;
|
|
223
268
|
});
|
|
224
269
|
|
|
225
270
|
watch(
|
|
226
271
|
() => dataStore.panelAction,
|
|
227
272
|
val => {
|
|
228
273
|
if (!!val) {
|
|
229
|
-
dataStore.panel.title =
|
|
274
|
+
dataStore.panel.title = panelTitle.value;
|
|
230
275
|
dataStore.panel.open = true;
|
|
231
276
|
}
|
|
232
277
|
},
|
|
233
278
|
{ immediate: true },
|
|
234
279
|
);
|
|
280
|
+
|
|
281
|
+
const needRecalculation = computed(
|
|
282
|
+
() =>
|
|
283
|
+
dataStore.isGons &&
|
|
284
|
+
formStore.applicationData.statusCode === 'UnderwriterForm' &&
|
|
285
|
+
dataStore.panelAction === constants.actions.accept &&
|
|
286
|
+
formStore.productConditionsForm.isRecalculated === false,
|
|
287
|
+
);
|
|
235
288
|
const sendingActions = computed(
|
|
236
289
|
() => dataStore.panelAction === constants.actions.reject || dataStore.panelAction === constants.actions.return || dataStore.panelAction === constants.actions.rejectclient,
|
|
237
290
|
);
|
|
238
291
|
const acceptAction = computed(() => dataStore.panelAction === constants.actions.accept);
|
|
292
|
+
const templateAction = computed(() => dataStore.panelAction === constants.actions.template);
|
|
239
293
|
const signingActions = computed(() => dataStore.panelAction === constants.actions.sign);
|
|
240
294
|
const payingActions = computed(() => dataStore.panelAction === constants.actions.pay);
|
|
241
295
|
const affiliateActions = computed(() => dataStore.panelAction === constants.actions.affiliate);
|
|
242
296
|
const paymentPeriod = computed(() => formStore.productConditionsForm.paymentPeriod.nameRu);
|
|
243
297
|
const insurancePremiumPerMonth = computed(() => dataStore.getNumberWithSpaces(formStore.productConditionsForm.insurancePremiumPerMonth));
|
|
244
298
|
const requestedSumInsured = computed(() => dataStore.getNumberWithSpaces(formStore.productConditionsForm.requestedSumInsured));
|
|
299
|
+
const price = computed(() => dataStore.getNumberWithSpaces(formStore.productConditionsForm.calculatorForm.price));
|
|
300
|
+
const insuredAmount = computed(() => formStore.productConditionsForm.calculatorForm.amount!.nameRu! + dataStore.currency);
|
|
245
301
|
const hasConditionsInfo = computed(() => {
|
|
302
|
+
if (dataStore.isLifetrip) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
246
305
|
if (dataStore.isFinCenter()) {
|
|
247
306
|
return false;
|
|
248
307
|
}
|
|
@@ -279,6 +338,9 @@ export default defineComponent({
|
|
|
279
338
|
requestedSumInsured,
|
|
280
339
|
affiliationDocument,
|
|
281
340
|
hasConditionsInfo,
|
|
341
|
+
price,
|
|
342
|
+
insuredAmount,
|
|
343
|
+
templateAction,
|
|
282
344
|
};
|
|
283
345
|
},
|
|
284
346
|
});
|
|
@@ -288,16 +350,19 @@ export default defineComponent({
|
|
|
288
350
|
.v-expansion-panel-title__overlay {
|
|
289
351
|
background: #ffffff;
|
|
290
352
|
}
|
|
353
|
+
|
|
291
354
|
.v-expansion-panel-title {
|
|
292
355
|
height: 70px !important;
|
|
293
356
|
padding: 10px 20px !important;
|
|
294
357
|
}
|
|
358
|
+
|
|
295
359
|
.v-expansion-panels--variant-accordion > :last-child {
|
|
296
360
|
border-top-left-radius: 0.5rem !important;
|
|
297
361
|
border-top-right-radius: 0.5rem !important;
|
|
298
362
|
border-top-left-radius: 0.5rem !important;
|
|
299
363
|
border-radius: 0.5rem !important;
|
|
300
364
|
}
|
|
365
|
+
|
|
301
366
|
.v-expansion-panel-text__wrapper {
|
|
302
367
|
padding: 10px 20px !important;
|
|
303
368
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
<div
|
|
3
|
+
class="transition-all flex justify-between p-4 items-center cursor-pointer"
|
|
4
|
+
:class="[$styles.rounded, $styles.blueBgLight, $styles.blueBgLightHover, disabled ? $styles.disabled : '']"
|
|
5
|
+
>
|
|
6
|
+
<span :class="[$styles.textSimple]">{{ text }}</span>
|
|
7
|
+
<i class="mdi text-xl" :class="[selected ? `${trueIcon} ${$styles.greenText}` : `${falseIcon} text-[#636363]`]"></i>
|
|
5
8
|
</div>
|
|
6
9
|
</template>
|
|
7
10
|
|
|
@@ -15,6 +18,18 @@ export default defineComponent({
|
|
|
15
18
|
type: Boolean,
|
|
16
19
|
default: false,
|
|
17
20
|
},
|
|
21
|
+
disabled: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false,
|
|
24
|
+
},
|
|
25
|
+
trueIcon: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: 'mdi-radiobox-marked',
|
|
28
|
+
},
|
|
29
|
+
falseIcon: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: 'mdi-radiobox-blank ',
|
|
32
|
+
},
|
|
18
33
|
},
|
|
19
34
|
});
|
|
20
35
|
</script>
|
|
@@ -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