hl-core 0.0.10-beta.85 → 0.0.10-beta.86
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 +3 -16
- package/components/Dialog/Dialog.vue +0 -2
- package/components/Dialog/DigitalDocumentsDialog.vue +40 -56
- package/components/Form/ManagerAttachment.vue +8 -61
- package/components/Input/FormInput.vue +1 -26
- package/components/Input/TextAreaField.vue +0 -5
- package/components/Layout/Header.vue +22 -1
- package/components/Menu/MenuHover.vue +2 -2
- package/components/Menu/MenuNav.vue +1 -1
- package/components/Pages/Anketa.vue +19 -475
- package/components/Pages/MemberForm.vue +112 -172
- package/components/Pages/ProductConditions.vue +58 -173
- package/components/Panel/PanelHandler.vue +2 -12
- package/composables/classes.ts +15 -12
- package/composables/constants.ts +0 -20
- package/composables/index.ts +24 -65
- package/configs/i18n.ts +1 -1
- package/configs/pwa.ts +29 -1
- package/nuxt.config.ts +1 -9
- package/package.json +4 -1
- package/plugins/head.ts +14 -0
- package/store/appContext.store.ts +0 -1
- package/store/data.store.ts +24 -71
- package/store/dictionaries.store.ts +14 -27
- package/store/form.store.ts +14 -79
- package/store/member.store.ts +0 -57
- package/store/rules.ts +0 -15
- package/types/env.d.ts +0 -2
- package/types/index.ts +0 -7
- package/components/Pages/NewMemberForm.vue +0 -2506
package/api/base.api.ts
CHANGED
|
@@ -327,16 +327,11 @@ export class ApiClass {
|
|
|
327
327
|
url: '/Arm/api/Dictionary/GetDictionaryItems/DicFileType',
|
|
328
328
|
});
|
|
329
329
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
method: Methods.GET,
|
|
333
|
-
url: '/Arm/api/Dictionary/GetDictionaryItems/DicCoverType',
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
async getProgramType(type: number) {
|
|
330
|
+
|
|
331
|
+
async getProgramType() {
|
|
337
332
|
return await this.axiosCall<Value[]>({
|
|
338
333
|
method: Methods.GET,
|
|
339
|
-
url:
|
|
334
|
+
url: '/Arm/api/Dictionary/GetDictionaryItems/DicProgramType',
|
|
340
335
|
});
|
|
341
336
|
}
|
|
342
337
|
async getSource() {
|
|
@@ -566,14 +561,6 @@ export class ApiClass {
|
|
|
566
561
|
});
|
|
567
562
|
}
|
|
568
563
|
|
|
569
|
-
async sendToEpayPension(processInstanceId: string | number) {
|
|
570
|
-
return await this.axiosCall<Types.EpayShortResponse>({
|
|
571
|
-
method: Methods.POST,
|
|
572
|
-
url: `/Arm/api/Invoice/sendToEpayPension/${processInstanceId}`,
|
|
573
|
-
data: {},
|
|
574
|
-
});
|
|
575
|
-
}
|
|
576
|
-
|
|
577
564
|
async calculateWithoutApplication(data: Types.RecalculationDataType, product: string | undefined | null = this.productUrl, processCodeEnum?: number) {
|
|
578
565
|
const params = processCodeEnum !== undefined ? { processCodeEnum } : undefined;
|
|
579
566
|
return await this.axiosCall<Types.RecalculationResponseType>({
|
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
<
|
|
4
|
-
<v-expansion-
|
|
5
|
-
<v-expansion-panel class="!
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</base-form-section>
|
|
28
|
-
<div class="p-4 d-flex flex-col gap-0.5" :class="[$styles.blueBgLight, $styles.rounded]">
|
|
2
|
+
<div class="flex flex-col gap-[10px] w-full align-center">
|
|
3
|
+
<v-expansion-panels :flat="true">
|
|
4
|
+
<v-expansion-panel class="!rounded-[8px]">
|
|
5
|
+
<v-expansion-panel-title class="!text-[12px] border border-[#00000014]">{{ $appContextStore.t('howToGetDigitalDocument') }}</v-expansion-panel-title>
|
|
6
|
+
<v-expansion-panel-text class="text-[12px] text-[#464f60]">
|
|
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>
|
|
23
|
+
</v-expansion-panel-text>
|
|
24
|
+
</v-expansion-panel>
|
|
25
|
+
</v-expansion-panels>
|
|
26
|
+
<div class="d-flex flex-col gap-0.5 w-full">
|
|
29
27
|
<base-rounded-select v-model="documentType" class="document-type-select" :items="documentItems" :label="$appContextStore.t('form.documentType')" hide-details />
|
|
30
28
|
<div class="digital-document-otp flex flex-col">
|
|
31
29
|
<base-otp-input v-model="otpCode" @keyup.enter.prevent="otpCode.length === otpLength && emitGetCode()" />
|
|
32
|
-
<
|
|
33
|
-
<
|
|
34
|
-
<template v-if="currentLocale === 'kz'">
|
|
30
|
+
<span v-if="!loading && otpSendDisabled" class="text-center" :class="[$styles.mutedText]">
|
|
31
|
+
<template v-if="currentLocale === 'kz'">
|
|
35
32
|
<span class="underline underline-offset-2">eGov Mobile</span> немесе <span class="underline underline-offset-2">банк қосымшасынан</span> алынған цифрлық құжат кодын
|
|
36
33
|
енгізіңіз.
|
|
37
34
|
</template>
|
|
@@ -39,23 +36,11 @@
|
|
|
39
36
|
Введите код цифрового документа из <span class="underline underline-offset-2">eGov Mobile</span> или
|
|
40
37
|
<span class="underline underline-offset-2">банковского приложения</span>.
|
|
41
38
|
</template>
|
|
42
|
-
|
|
43
|
-
<template v-else>
|
|
44
|
-
<span v-if="isActive" class="block text-center" :class="[$styles.mutedText]">
|
|
45
|
-
Отправить код повторно через
|
|
46
|
-
<br />
|
|
47
|
-
<span :class="[$styles.greenText]">{{ timeLeft }} сек</span>
|
|
48
|
-
</span>
|
|
49
|
-
<span v-if="canResend" class="block text-center" :class="[$styles.mutedText]">
|
|
50
|
-
Не получили код?
|
|
51
|
-
<span class="underline underline-offset-2 cursor-pointer" @click="emitGetCode">Отправить код заново</span>
|
|
52
|
-
</span>
|
|
53
|
-
</template>
|
|
54
|
-
</div>
|
|
39
|
+
</span>
|
|
55
40
|
</div>
|
|
56
41
|
</div>
|
|
57
|
-
<div class="w-full d-flex flex-col gap-4">
|
|
58
|
-
<base-btn v-if="!otpSendDisabled" :disabled="loading
|
|
42
|
+
<div class="w-full d-flex flex-col sm:flex-row gap-4">
|
|
43
|
+
<base-btn v-if="!otpSendDisabled" :disabled="loading" :loading="loading" :btn="$styles.whiteBorderBtn" :text="$appContextStore.t('sendSmsCode')" @click="emitGetCode" />
|
|
59
44
|
<base-btn :disabled="loading" :loading="loading" :text="$appContextStore.t('getDocument')" @click="emitGetDocument" />
|
|
60
45
|
</div>
|
|
61
46
|
</div>
|
|
@@ -63,7 +48,6 @@
|
|
|
63
48
|
|
|
64
49
|
<script setup lang="ts">
|
|
65
50
|
import type { DigitalDocTypes } from '../../types';
|
|
66
|
-
import { useOtpTimer } from '../../composables/index';
|
|
67
51
|
import { useI18n } from 'vue-i18n';
|
|
68
52
|
|
|
69
53
|
const props = defineProps({
|
|
@@ -84,9 +68,9 @@ const props = defineProps({
|
|
|
84
68
|
default: false,
|
|
85
69
|
},
|
|
86
70
|
});
|
|
87
|
-
const { timeLeft, canResend, isActive, startTimer } = useOtpTimer(60);
|
|
88
71
|
const emit = defineEmits(['getCode', 'getDigitalDocument', 'updateDigitalDocuments']);
|
|
89
72
|
|
|
73
|
+
const dataStore = useDataStore();
|
|
90
74
|
const documentType = ref<DigitalDocTypes | null>(null);
|
|
91
75
|
const otpCode = ref<string>('');
|
|
92
76
|
const appContextStore = useAppContextStore();
|
|
@@ -96,12 +80,8 @@ const emitGetCode = () => {
|
|
|
96
80
|
showToaster('error', appContextStore.t('selectDocumentType'), 3000);
|
|
97
81
|
return;
|
|
98
82
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
onSuccess: () => {
|
|
102
|
-
startTimer();
|
|
103
|
-
},
|
|
104
|
-
});
|
|
83
|
+
|
|
84
|
+
emit('getCode', documentType.value);
|
|
105
85
|
};
|
|
106
86
|
|
|
107
87
|
const emitGetDocument = () => {
|
|
@@ -116,8 +96,12 @@ const emitGetDocument = () => {
|
|
|
116
96
|
|
|
117
97
|
<style scoped>
|
|
118
98
|
:deep(.v-otp-input__content) {
|
|
119
|
-
max-width:
|
|
120
|
-
gap:
|
|
99
|
+
max-width: 360px;
|
|
100
|
+
gap: 12px !important;
|
|
101
|
+
@media (max-width: 768px) {
|
|
102
|
+
max-width: 100%;
|
|
103
|
+
gap: 8px !important;
|
|
104
|
+
}
|
|
121
105
|
}
|
|
122
106
|
.v-expansion-panel-title {
|
|
123
107
|
height: 60px !important;
|
|
@@ -128,7 +112,7 @@ const emitGetDocument = () => {
|
|
|
128
112
|
}
|
|
129
113
|
.document-type-select:deep(.v-field) {
|
|
130
114
|
height: 60px;
|
|
131
|
-
border:
|
|
115
|
+
border: 1px solid #dadada !important;
|
|
132
116
|
}
|
|
133
117
|
.document-type-select:deep(.v-label.v-field-label--floating) {
|
|
134
118
|
top: 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="rounded-lg border-[1px]" :class="[$styles.whiteBg, disabled && $styles.disabled]">
|
|
3
|
-
<v-expansion-panels
|
|
3
|
+
<v-expansion-panels>
|
|
4
4
|
<v-expansion-panel class="rounded-lg" elevation="0">
|
|
5
5
|
<v-expansion-panel-title :class="[$styles.textTitle, $styles.greenText]">
|
|
6
6
|
{{ $appContextStore.t('form.attachManager') }}
|
|
@@ -43,14 +43,6 @@
|
|
|
43
43
|
append-inner-icon="mdi mdi-chevron-right"
|
|
44
44
|
@append="openPanel('ManagerPolicy', $appContextStore.t('form.manager'))"
|
|
45
45
|
/>
|
|
46
|
-
<a
|
|
47
|
-
href="javascript:void(0);"
|
|
48
|
-
v-if="formStore.ManagerPolicy.nameRu === null && !!currentManager"
|
|
49
|
-
class="py-1 px-4 text-[14px]"
|
|
50
|
-
:class="[$styles.blueText]"
|
|
51
|
-
@click="assignToMe"
|
|
52
|
-
>Назначить себя</a
|
|
53
|
-
>
|
|
54
46
|
<base-panel-input
|
|
55
47
|
v-if="isAgentShown"
|
|
56
48
|
class="pl-1 pt-1"
|
|
@@ -119,6 +111,7 @@
|
|
|
119
111
|
</div>
|
|
120
112
|
</div>
|
|
121
113
|
</div>
|
|
114
|
+
|
|
122
115
|
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
123
116
|
</div>
|
|
124
117
|
</Teleport>
|
|
@@ -140,10 +133,6 @@ export default defineComponent({
|
|
|
140
133
|
type: Boolean,
|
|
141
134
|
default: false,
|
|
142
135
|
},
|
|
143
|
-
isOpen: {
|
|
144
|
-
type: Boolean,
|
|
145
|
-
default: false,
|
|
146
|
-
},
|
|
147
136
|
},
|
|
148
137
|
setup(props) {
|
|
149
138
|
type ManagerAttachmentFiels = 'SaleChanellPolicy' | 'RegionPolicy' | 'ManagerPolicy' | 'AgentData' | 'ExecutorGPH';
|
|
@@ -158,8 +147,6 @@ export default defineComponent({
|
|
|
158
147
|
const panelValue = ref<FieldTypes>(new Value());
|
|
159
148
|
const searchQuery = ref<string>('');
|
|
160
149
|
const currentDictName = ref<ManagerAttachmentFiels>();
|
|
161
|
-
const currentManager = ref<Value | null>(null);
|
|
162
|
-
const panel = ref(props.isOpen ? 0 : null);
|
|
163
150
|
|
|
164
151
|
const isReadonly = computed(
|
|
165
152
|
() =>
|
|
@@ -205,11 +192,10 @@ export default defineComponent({
|
|
|
205
192
|
const isAgentReadonly = computed(() => {
|
|
206
193
|
if (!isReadonly.value) {
|
|
207
194
|
if (dataStore.isTravelAgent()) return true;
|
|
208
|
-
if (appContextStore.
|
|
195
|
+
if (appContextStore.isPension) return true;
|
|
209
196
|
if (appContextStore.isGons) {
|
|
210
197
|
return !dataStore.isServiceManager() && !dataStore.isChiefManagerNSZH() && !dataStore.isChiefSalesManager() && !dataStore.isSalesManager() && !dataStore.isManager();
|
|
211
198
|
}
|
|
212
|
-
if (appContextStore.isPension) return true;
|
|
213
199
|
}
|
|
214
200
|
return isReadonly.value;
|
|
215
201
|
});
|
|
@@ -253,11 +239,6 @@ export default defineComponent({
|
|
|
253
239
|
if (currentDict === 'ManagerPolicy' && formStore.RegionPolicy.ids) {
|
|
254
240
|
isPanelLoading.value = true;
|
|
255
241
|
await dictionariesStore.filterManagerByRegion(formStore.RegionPolicy.ids as string);
|
|
256
|
-
if (!currentManager.value) {
|
|
257
|
-
currentManager.value =
|
|
258
|
-
(dictionariesStore.ManagerPolicy.find(m => m.code === dataStore.user.code) as Value) ||
|
|
259
|
-
(dictionariesStore.ManagerPolicy.find(m => m.nameRu?.includes(dataStore.user.fullName as string)) as Value);
|
|
260
|
-
}
|
|
261
242
|
}
|
|
262
243
|
if (currentDict === 'ExecutorGPH' && formStore.RegionPolicy.ids) {
|
|
263
244
|
isPanelLoading.value = true;
|
|
@@ -280,23 +261,7 @@ export default defineComponent({
|
|
|
280
261
|
}
|
|
281
262
|
};
|
|
282
263
|
|
|
283
|
-
const pickPanelValue =
|
|
284
|
-
if (
|
|
285
|
-
currentDictName.value === 'AgentData' &&
|
|
286
|
-
appContextStore.isLifetrip &&
|
|
287
|
-
formStore.SaleChanellPolicy.ids == 'ТАТО' &&
|
|
288
|
-
'saleChannel' in answer &&
|
|
289
|
-
answer.saleChannel !== formStore.SaleChanellPolicy.ids
|
|
290
|
-
) {
|
|
291
|
-
return showToaster('error', 'Выберите агента из того же канала продаж');
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
if (currentDictName.value === 'SaleChanellPolicy' && appContextStore.isLifetrip && 'ids' in answer && (answer.ids == 'ПП' || answer.ids == 'ХЛ')) {
|
|
295
|
-
await dataStore.searchAgentByName('Без агента');
|
|
296
|
-
const noAgent = dataStore.AgentData.filter(i => String(i.officeId) === String(formStore.RegionPolicy.ids))[0];
|
|
297
|
-
// @ts-ignore
|
|
298
|
-
formStore.AgentData = noAgent ? noAgent : new Value();
|
|
299
|
-
}
|
|
264
|
+
const pickPanelValue = (answer: FieldTypes) => {
|
|
300
265
|
// @ts-ignore
|
|
301
266
|
formStore[currentDictName.value] = answer;
|
|
302
267
|
isPanelOpen.value = false;
|
|
@@ -304,19 +269,13 @@ export default defineComponent({
|
|
|
304
269
|
searchQuery.value = '';
|
|
305
270
|
};
|
|
306
271
|
|
|
307
|
-
const assignToMe = () => {
|
|
308
|
-
formStore.ManagerPolicy = currentManager.value as Value;
|
|
309
|
-
if (isPanelOpen.value === true) {
|
|
310
|
-
isPanelOpen.value = false;
|
|
311
|
-
dataStore.rightPanel.open = false;
|
|
312
|
-
}
|
|
313
|
-
};
|
|
314
|
-
|
|
315
272
|
watchDebounced(
|
|
316
273
|
searchQuery,
|
|
317
274
|
async searchQuery => {
|
|
318
|
-
|
|
319
|
-
|
|
275
|
+
if (searchQuery === null) {
|
|
276
|
+
searchQuery = '';
|
|
277
|
+
}
|
|
278
|
+
if (!!searchQuery && currentDictName.value === 'AgentData') {
|
|
320
279
|
await searchAgent();
|
|
321
280
|
}
|
|
322
281
|
},
|
|
@@ -344,15 +303,6 @@ export default defineComponent({
|
|
|
344
303
|
{ immediate: true },
|
|
345
304
|
);
|
|
346
305
|
|
|
347
|
-
onMounted(async () => {
|
|
348
|
-
if (dictionariesStore.ManagerPolicy.length === 0 && route.params.taskId !== '0') {
|
|
349
|
-
await dictionariesStore.filterManagerByRegion(formStore.RegionPolicy.ids as string);
|
|
350
|
-
}
|
|
351
|
-
currentManager.value =
|
|
352
|
-
(dictionariesStore.ManagerPolicy.find(m => m.code === dataStore.user.code) as Value) ||
|
|
353
|
-
(dictionariesStore.ManagerPolicy.find(m => m.nameRu?.includes(dataStore.user.fullName as string)) as Value);
|
|
354
|
-
});
|
|
355
|
-
|
|
356
306
|
onBeforeUnmount(() => {
|
|
357
307
|
if (!isReadonly.value) {
|
|
358
308
|
const areValid = !!formStore.SaleChanellPolicy.nameRu && !!formStore.RegionPolicy.nameRu && !!formStore.ManagerPolicy.nameRu && !!formStore.AgentData.fullName;
|
|
@@ -364,14 +314,12 @@ export default defineComponent({
|
|
|
364
314
|
|
|
365
315
|
return {
|
|
366
316
|
// State
|
|
367
|
-
panel,
|
|
368
317
|
formStore,
|
|
369
318
|
isPanelOpen,
|
|
370
319
|
isPanelLoading,
|
|
371
320
|
panelValue,
|
|
372
321
|
searchQuery,
|
|
373
322
|
Value,
|
|
374
|
-
currentManager,
|
|
375
323
|
currentDictName,
|
|
376
324
|
|
|
377
325
|
// Computed
|
|
@@ -390,7 +338,6 @@ export default defineComponent({
|
|
|
390
338
|
|
|
391
339
|
// Functions
|
|
392
340
|
openPanel,
|
|
393
|
-
assignToMe,
|
|
394
341
|
searchAgent,
|
|
395
342
|
pickPanelValue,
|
|
396
343
|
};
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
:rules="rules"
|
|
8
8
|
:loading="loading"
|
|
9
9
|
:placeholder="placeholder"
|
|
10
|
-
:label="
|
|
10
|
+
:label="label"
|
|
11
11
|
:messages="messages"
|
|
12
12
|
:type="type"
|
|
13
13
|
:variant="variant"
|
|
@@ -33,17 +33,6 @@
|
|
|
33
33
|
@focus="isFocused = true"
|
|
34
34
|
@blur="isFocused = false"
|
|
35
35
|
>
|
|
36
|
-
<template #label>
|
|
37
|
-
<div class="flex items-center gap-1 tooltip-label-wrapper">
|
|
38
|
-
<span>{{ label }}</span>
|
|
39
|
-
<v-tooltip v-if="!!tooltip" location="top">
|
|
40
|
-
<template #activator="{ props: tooltipProps }">
|
|
41
|
-
<v-icon v-bind="tooltipProps" :icon="tooltipIcon" class="cursor-pointer !text-[18px] label-tooltip-icon" color="#a0b3d8" />
|
|
42
|
-
</template>
|
|
43
|
-
<span>{{ tooltip }}</span>
|
|
44
|
-
</v-tooltip>
|
|
45
|
-
</div>
|
|
46
|
-
</template>
|
|
47
36
|
<template v-if="appendInnerIcon && appendInnerIcon.length" v-slot:append-inner>
|
|
48
37
|
<v-icon
|
|
49
38
|
v-if="appendInnerIcon.includes('mdi-calendar-blank-outline') === false"
|
|
@@ -164,14 +153,6 @@ export default defineComponent({
|
|
|
164
153
|
bgColor: {
|
|
165
154
|
type: String,
|
|
166
155
|
},
|
|
167
|
-
tooltip: {
|
|
168
|
-
type: String,
|
|
169
|
-
default: '',
|
|
170
|
-
},
|
|
171
|
-
tooltipIcon: {
|
|
172
|
-
type: String,
|
|
173
|
-
default: 'mdi-information-outline',
|
|
174
|
-
},
|
|
175
156
|
},
|
|
176
157
|
emits: ['update:modelValue', 'submitted', 'prepend', 'append', 'prepend-out', 'append-out', 'input', 'on-clear'],
|
|
177
158
|
|
|
@@ -241,10 +222,4 @@ export default defineComponent({
|
|
|
241
222
|
color: #000000 !important;
|
|
242
223
|
font-size: 16px !important;
|
|
243
224
|
}
|
|
244
|
-
.tooltip-label-wrapper {
|
|
245
|
-
pointer-events: auto !important;
|
|
246
|
-
}
|
|
247
|
-
.label-tooltip-icon {
|
|
248
|
-
pointer-events: auto !important;
|
|
249
|
-
}
|
|
250
225
|
</style>
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
:readonly="props.readonly"
|
|
9
9
|
:color="color"
|
|
10
10
|
:rows="rows"
|
|
11
|
-
:rules="rules"
|
|
12
11
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
13
12
|
auto-grow
|
|
14
13
|
></v-textarea>
|
|
@@ -46,10 +45,6 @@ export default defineComponent({
|
|
|
46
45
|
type: Number,
|
|
47
46
|
default: 5,
|
|
48
47
|
},
|
|
49
|
-
rules: {
|
|
50
|
-
type: Array<any>,
|
|
51
|
-
default: [],
|
|
52
|
-
},
|
|
53
48
|
},
|
|
54
49
|
emits: ['update:modelValue'],
|
|
55
50
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<v-tooltip v-if="hasMore" :text="$dataStore.isSupport() ? `Нажатий: ${homeClickCount}` : ''" :disabled="!$dataStore.isSupport()">
|
|
6
6
|
<template #activator="{ props: tooltipProps }">
|
|
7
7
|
<v-btn v-bind="tooltipProps" variant="text" size="32" :ripple="false" class="absolute z-10" @click="onHomeClick" @mouseenter="onHomeHover">
|
|
8
|
-
<img src="~/
|
|
8
|
+
<img src="~/assets/favicon.svg" class="w-6 h-6" alt="home" />
|
|
9
9
|
</v-btn>
|
|
10
10
|
</template>
|
|
11
11
|
</v-tooltip>
|
|
@@ -74,6 +74,22 @@ export default defineComponent({
|
|
|
74
74
|
setup(props) {
|
|
75
75
|
const dataStore = useDataStore();
|
|
76
76
|
|
|
77
|
+
const homeClickCount = ref(0);
|
|
78
|
+
const COUNTER_URL = `${import.meta.env.VITE_COUNTER_URL ?? 'http://localhost:3001'}/counter`;
|
|
79
|
+
|
|
80
|
+
const onHomeClick = async () => {
|
|
81
|
+
// umTrackEvent('click-logo', {
|
|
82
|
+
// user: dataStore.user.fullName,
|
|
83
|
+
// branch: dataStore.user.branchCode,
|
|
84
|
+
// });
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const onHomeHover = async () => {
|
|
88
|
+
if (!dataStore.isSupport()) return;
|
|
89
|
+
try {
|
|
90
|
+
} catch {}
|
|
91
|
+
};
|
|
92
|
+
|
|
77
93
|
const onClickOutside = () => {
|
|
78
94
|
dataStore.settings.open = false;
|
|
79
95
|
};
|
|
@@ -106,7 +122,12 @@ export default defineComponent({
|
|
|
106
122
|
backIconAnim,
|
|
107
123
|
moreIconAnim,
|
|
108
124
|
|
|
125
|
+
// Counter
|
|
126
|
+
homeClickCount,
|
|
127
|
+
|
|
109
128
|
// Functions
|
|
129
|
+
onHomeClick,
|
|
130
|
+
onHomeHover,
|
|
110
131
|
onClickOutside,
|
|
111
132
|
};
|
|
112
133
|
},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-menu v-if="items.length" :activator="activator" location="bottom center" :offset="top" transition="scale-transition">
|
|
3
3
|
<base-form-text-section class="p-4 border-[1px] flex flex-col gap-3 elevation-3 w-[250px]">
|
|
4
|
-
<div v-for="item of items.filter(i => $dataStore.filters.show(i))" :key="item.id
|
|
5
|
-
<base-menu-nav-item :class="[$styles.textSimple]" :menu-item="item" @click="$emit(
|
|
4
|
+
<div v-for="item of items.filter(i => $dataStore.filters.show(i))" :key="(item as any).id">
|
|
5
|
+
<base-menu-nav-item :class="[$styles.textSimple]" :menu-item="item" @click="$emit((item as any).id)" />
|
|
6
6
|
</div>
|
|
7
7
|
</base-form-text-section>
|
|
8
8
|
</v-menu>
|
|
@@ -19,7 +19,7 @@
|
|
|
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]">
|
|
22
|
-
<div v-for="(item, index) of $dataStore.menuItems.filter(i => $dataStore.filters.show(i
|
|
22
|
+
<div v-for="(item, index) of $dataStore.menuItems.filter(i => $dataStore.filters.show(i))" :key="index">
|
|
23
23
|
<base-menu-nav-item
|
|
24
24
|
:menu-item="item"
|
|
25
25
|
:selected="!!selected.title && !!item.title && selected.title === item.title"
|