hl-core 0.0.8 → 0.0.9-beta.10
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 +202 -161
- package/api/interceptors.ts +23 -17
- package/components/Button/Btn.vue +4 -4
- package/components/Button/ScrollButtons.vue +2 -2
- package/components/Complex/ContentBlock.vue +1 -1
- package/components/Complex/MessageBlock.vue +26 -0
- package/components/Complex/Page.vue +8 -2
- package/components/Complex/WhiteBlock.vue +7 -0
- package/components/Dialog/Dialog.vue +9 -39
- package/components/Dialog/FamilyDialog.vue +10 -7
- package/components/Form/FormBlock.vue +91 -45
- package/components/Form/FormSection.vue +5 -2
- package/components/Form/FormTextSection.vue +3 -3
- package/components/Form/FormToggle.vue +4 -5
- package/components/Form/ManagerAttachment.vue +210 -0
- package/components/Form/ProductConditionsBlock.vue +70 -16
- package/components/Input/Datepicker.vue +45 -0
- package/components/Input/EmptyFormField.vue +1 -1
- package/components/Input/FileInput.vue +2 -3
- package/components/Input/FormInput.vue +31 -7
- package/components/Input/PanelInput.vue +7 -2
- package/components/Input/RoundedEmptyField.vue +5 -0
- package/components/Input/RoundedInput.vue +2 -2
- package/components/Input/RoundedSelect.vue +150 -0
- package/components/Layout/Drawer.vue +5 -2
- package/components/Layout/Header.vue +41 -5
- package/components/Layout/Loader.vue +1 -1
- package/components/Layout/SettingsPanel.vue +47 -13
- package/components/List/ListEmpty.vue +1 -1
- package/components/Menu/MenuHover.vue +30 -0
- package/components/Menu/MenuNav.vue +30 -14
- package/components/Menu/MenuNavItem.vue +10 -7
- package/components/Pages/Anketa.vue +68 -47
- package/components/Pages/Auth.vue +139 -46
- package/components/Pages/ContragentForm.vue +505 -0
- package/components/Pages/Documents.vue +11 -11
- package/components/Pages/InvoiceInfo.vue +30 -0
- package/components/Pages/MemberForm.vue +574 -316
- package/components/Pages/ProductAgreement.vue +2 -2
- package/components/Pages/ProductConditions.vue +671 -78
- package/components/Panel/PanelHandler.vue +309 -0
- package/components/Panel/PanelSelectItem.vue +3 -3
- package/components/Transitions/SlideTransition.vue +5 -0
- package/components/Utilities/Chip.vue +27 -0
- package/components/Utilities/IconBorder.vue +17 -0
- package/components/Utilities/JsonViewer.vue +27 -0
- package/composables/axios.ts +2 -2
- package/composables/classes.ts +227 -107
- package/composables/constants.ts +31 -51
- package/composables/index.ts +106 -2
- package/composables/styles.ts +33 -11
- package/configs/i18n.ts +15 -0
- package/layouts/default.vue +11 -8
- package/layouts/full.vue +1 -1
- package/locales/ru.json +647 -0
- package/nuxt.config.ts +14 -2
- package/package.json +35 -12
- package/pages/500.vue +4 -4
- package/pages/Token.vue +52 -0
- package/plugins/helperFunctionsPlugins.ts +11 -6
- package/plugins/storePlugin.ts +0 -1
- package/plugins/vuetifyPlugin.ts +8 -1
- package/store/data.store.ts +2666 -0
- package/store/form.store.ts +1 -1
- package/store/member.store.ts +164 -52
- package/store/rules.ts +193 -0
- package/types/enum.ts +83 -0
- package/types/env.d.ts +10 -0
- package/types/index.ts +279 -8
- package/components/Button/BtnIcon.vue +0 -47
- package/store/data.store.js +0 -2482
- package/store/messages.ts +0 -429
- package/store/rules.js +0 -153
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="rounded-lg border-[1px]" :class="[$styles.whiteBg, disabled && $styles.disabled]">
|
|
3
|
+
<div class="mt-3 ml-5">
|
|
4
|
+
<p :class="[$styles.textTitle, $styles.greenText]">{{ $dataStore.t('form.attachManager') }}</p>
|
|
5
|
+
</div>
|
|
6
|
+
<v-form ref="vForm" class="flex flex-col mt-1">
|
|
7
|
+
<base-panel-input
|
|
8
|
+
class="pl-1"
|
|
9
|
+
v-model="formStore.SaleChanellPolicy"
|
|
10
|
+
:value="formStore.SaleChanellPolicy?.nameRu"
|
|
11
|
+
:readonly="isReadonly"
|
|
12
|
+
:clearable="!isReadonly"
|
|
13
|
+
:label="$dataStore.t('form.salesChanell')"
|
|
14
|
+
:rules="$rules.objectRequired"
|
|
15
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
16
|
+
@append="openPanel('SaleChanellPolicy', $dataStore.t('form.salesChanell'))"
|
|
17
|
+
/>
|
|
18
|
+
<base-panel-input
|
|
19
|
+
class="pl-1"
|
|
20
|
+
v-model="formStore.RegionPolicy"
|
|
21
|
+
:value="formStore.RegionPolicy?.nameRu"
|
|
22
|
+
:readonly="isReadonly"
|
|
23
|
+
:clearable="!isReadonly"
|
|
24
|
+
:label="$dataStore.t('form.Region')"
|
|
25
|
+
:rules="$rules.objectRequired"
|
|
26
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
27
|
+
@append="openPanel('RegionPolicy', $dataStore.t('form.Region'))"
|
|
28
|
+
/>
|
|
29
|
+
<base-panel-input
|
|
30
|
+
class="pl-1"
|
|
31
|
+
v-model="formStore.ManagerPolicy"
|
|
32
|
+
:value="formStore.ManagerPolicy?.nameRu"
|
|
33
|
+
:readonly="isReadonly"
|
|
34
|
+
:clearable="!isReadonly"
|
|
35
|
+
:label="$dataStore.t('form.manager')"
|
|
36
|
+
:rules="$rules.objectRequired"
|
|
37
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
38
|
+
@append="openPanel('ManagerPolicy', $dataStore.t('form.manager'))"
|
|
39
|
+
/>
|
|
40
|
+
<base-panel-input
|
|
41
|
+
class="pl-1"
|
|
42
|
+
v-model="formStore.AgentData"
|
|
43
|
+
:value="formStore.AgentData?.fullName"
|
|
44
|
+
:readonly="isReadonly"
|
|
45
|
+
:clearable="!isReadonly"
|
|
46
|
+
:label="$dataStore.t('form.agent')"
|
|
47
|
+
:rules="$rules.agentDataRequired"
|
|
48
|
+
append-inner-icon="mdi mdi-chevron-right"
|
|
49
|
+
@append="openPanel('AgentData', $dataStore.t('form.agent'))"
|
|
50
|
+
/>
|
|
51
|
+
</v-form>
|
|
52
|
+
<Teleport v-if="isPanelOpen" to="#panel-actions">
|
|
53
|
+
<div :class="[$styles.scrollPage]" class="flex flex-col items-center">
|
|
54
|
+
<base-rounded-input
|
|
55
|
+
v-model.trim="searchQuery"
|
|
56
|
+
:label="$dataStore.t('labels.search')"
|
|
57
|
+
class="w-full p-2"
|
|
58
|
+
:hide-details="true"
|
|
59
|
+
:append-inner-icon="currentDictName === 'AgentData' ? 'mdi mdi-magnify' : ''"
|
|
60
|
+
@append="searchAgent"
|
|
61
|
+
/>
|
|
62
|
+
<div v-if="isPanelLoading === false" class="w-full">
|
|
63
|
+
<div v-if="currentDictName === 'AgentData'" class="w-full flex flex-col gap-2 p-2">
|
|
64
|
+
<div v-for="(agent, index) of $dataStore[currentDictName]" :key="index">
|
|
65
|
+
<div
|
|
66
|
+
class="flex justify-between p-4 items-center cursor-pointer"
|
|
67
|
+
:class="[$styles.rounded, $styles.blueBgLight, $styles.blueBgLightHover]"
|
|
68
|
+
@click="pickPanelValue(agent)"
|
|
69
|
+
>
|
|
70
|
+
<div class="flex flex-col">
|
|
71
|
+
<span :class="[$styles.textSimple]">{{ $getFullNameShorted(agent.fullName ?? '', 2) }}</span>
|
|
72
|
+
<span :class="[$styles.mutedText]">
|
|
73
|
+
{{ agent.saleChannel ? `${agent.saleChannel} / ${$getFullNameShorted(agent.managerName ?? '', 2)}` : `${agent.managerName}` }}
|
|
74
|
+
</span>
|
|
75
|
+
</div>
|
|
76
|
+
<i
|
|
77
|
+
class="mdi text-xl"
|
|
78
|
+
:class="[agent.agentId === (panelValue as AgentData).agentId ? `mdi-radiobox-marked ${$styles.greenText}` : 'mdi-radiobox-blank text-[#636363]']"
|
|
79
|
+
></i>
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
<div v-if="currentDictName === 'ManagerPolicy' || currentDictName === 'RegionPolicy' || currentDictName === 'SaleChanellPolicy'" class="w-full flex flex-col gap-2 p-2">
|
|
84
|
+
<div v-for="(item, index) in $dataStore[currentDictName].filter(i => (i.nameRu as string).toLowerCase().includes(searchQuery.toLowerCase()))" :key="index">
|
|
85
|
+
<base-panel-select-item :key="index" :text="item.nameRu ?? ''" :selected="item.ids === (panelValue as Value).ids" @click="pickPanelValue(item)" />
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<base-loader v-if="isPanelLoading" class="absolute mt-10" :size="50" />
|
|
91
|
+
</div>
|
|
92
|
+
</Teleport>
|
|
93
|
+
</div>
|
|
94
|
+
</template>
|
|
95
|
+
|
|
96
|
+
<script lang="ts">
|
|
97
|
+
import { Value } from '../../composables/classes';
|
|
98
|
+
import { watchDebounced } from '@vueuse/core';
|
|
99
|
+
|
|
100
|
+
export default defineComponent({
|
|
101
|
+
props: {
|
|
102
|
+
title: {
|
|
103
|
+
type: String,
|
|
104
|
+
default: '',
|
|
105
|
+
},
|
|
106
|
+
disabled: {
|
|
107
|
+
type: Boolean,
|
|
108
|
+
default: false,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
setup(props) {
|
|
112
|
+
type ManagerAttachmentFiels = 'SaleChanellPolicy' | 'RegionPolicy' | 'ManagerPolicy' | 'AgentData';
|
|
113
|
+
type FieldTypes = Value | AgentData;
|
|
114
|
+
const route = useRoute();
|
|
115
|
+
const dataStore = useDataStore();
|
|
116
|
+
const formStore = useFormStore();
|
|
117
|
+
const isPanelOpen = ref<boolean>(false);
|
|
118
|
+
const isPanelLoading = ref<boolean>(false);
|
|
119
|
+
const panelValue = ref<FieldTypes>(new Value());
|
|
120
|
+
const searchQuery = ref<string>('');
|
|
121
|
+
const currentDictName = ref<ManagerAttachmentFiels>();
|
|
122
|
+
|
|
123
|
+
const isReadonly = computed(
|
|
124
|
+
() =>
|
|
125
|
+
props.disabled ||
|
|
126
|
+
route.params.taskId === '0' ||
|
|
127
|
+
!dataStore.isInitiator() ||
|
|
128
|
+
(route.params.taskId !== '0' && (!dataStore.isProcessEditable(formStore.applicationData.statusCode) || !dataStore.isTask())),
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
const openPanel = async (currentDict: ManagerAttachmentFiels, title: string) => {
|
|
132
|
+
searchQuery.value = '';
|
|
133
|
+
if (dataStore.isTask() && !props.disabled) {
|
|
134
|
+
dataStore.panelAction = null;
|
|
135
|
+
dataStore.panel.open = true;
|
|
136
|
+
dataStore.panel.title = title;
|
|
137
|
+
currentDictName.value = currentDict;
|
|
138
|
+
|
|
139
|
+
if (currentDict === 'ManagerPolicy' && formStore.RegionPolicy.ids) {
|
|
140
|
+
isPanelLoading.value = true;
|
|
141
|
+
await dataStore.filterManagerByRegion(formStore.RegionPolicy.ids as string);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
isPanelOpen.value = true;
|
|
145
|
+
panelValue.value = formStore[currentDict];
|
|
146
|
+
isPanelLoading.value = false;
|
|
147
|
+
} else {
|
|
148
|
+
dataStore.showToaster('error', dataStore.t('toaster.viewErrorText'));
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const searchAgent = async () => {
|
|
153
|
+
if (searchQuery.value) {
|
|
154
|
+
isPanelLoading.value = true;
|
|
155
|
+
await dataStore.searchAgentByName(searchQuery.value);
|
|
156
|
+
isPanelLoading.value = false;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
const pickPanelValue = (answer: FieldTypes) => {
|
|
161
|
+
// @ts-ignore
|
|
162
|
+
formStore[currentDictName.value] = answer;
|
|
163
|
+
isPanelOpen.value = false;
|
|
164
|
+
dataStore.panel.open = false;
|
|
165
|
+
searchQuery.value = '';
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
watchDebounced(
|
|
169
|
+
searchQuery,
|
|
170
|
+
async searchQuery => {
|
|
171
|
+
if (searchQuery === null) {
|
|
172
|
+
searchQuery = '';
|
|
173
|
+
}
|
|
174
|
+
if (!!searchQuery && currentDictName.value === 'AgentData') {
|
|
175
|
+
await searchAgent();
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
{ debounce: 1000 },
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
watch(
|
|
182
|
+
() => formStore.RegionPolicy,
|
|
183
|
+
(val, oldVal) => {
|
|
184
|
+
if (val.ids !== oldVal.ids) {
|
|
185
|
+
formStore.ManagerPolicy = new Value();
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
return {
|
|
191
|
+
// State
|
|
192
|
+
formStore,
|
|
193
|
+
isPanelOpen,
|
|
194
|
+
isPanelLoading,
|
|
195
|
+
panelValue,
|
|
196
|
+
searchQuery,
|
|
197
|
+
Value,
|
|
198
|
+
currentDictName,
|
|
199
|
+
|
|
200
|
+
// Computed
|
|
201
|
+
isReadonly,
|
|
202
|
+
|
|
203
|
+
// Functions
|
|
204
|
+
openPanel,
|
|
205
|
+
searchAgent,
|
|
206
|
+
pickPanelValue,
|
|
207
|
+
};
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
</script>
|
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="pt-3 pl-5 rounded-lg border-[1px]" :class="[$
|
|
2
|
+
<div class="pt-3 pl-5 rounded-lg border-[1px]" :class="[$styles.whiteBg, disabled && $styles.disabled]">
|
|
3
3
|
<div>
|
|
4
|
-
<p :class="[$
|
|
5
|
-
{{ $t('productConditions') }}
|
|
4
|
+
<p :class="[$styles.textTitle, $styles.greenText]">
|
|
5
|
+
{{ $dataStore.t('productConditions') }}
|
|
6
6
|
</p>
|
|
7
|
-
<p v-if="!!subtitle" :class="[$
|
|
7
|
+
<p v-if="!!subtitle" :class="[$styles.greyText, $styles.textSimple]">{{ subtitle }}</p>
|
|
8
8
|
</div>
|
|
9
9
|
<div class="mt-6 grid grid-cols-3 lg:grid-cols-5 auto-rows-fr items-center">
|
|
10
|
-
<span :class="[$
|
|
11
|
-
<span :class="[$
|
|
12
|
-
<span :class="[$
|
|
13
|
-
<span :class="[$
|
|
10
|
+
<span v-if="hasSum" :class="[$styles.textSimple]" class="font-medium">{{ $dataStore.t('productConditionsForm.requestedSumInsured') }}</span>
|
|
11
|
+
<span v-if="hasPremium" :class="[$styles.textSimple]" class="font-medium">{{ $dataStore.t('productConditionsForm.insurancePremiumPerMonth') }}</span>
|
|
12
|
+
<span v-if="hasPolicyNumber" :class="[$styles.textSimple]" class="font-medium hidden lg:block">{{ $dataStore.t('buttons.InsuranceContract') }}</span>
|
|
13
|
+
<span v-if="hasContractDate" :class="[$styles.textSimple]" class="font-medium hidden lg:block">{{ $dataStore.t('productConditionsForm.contractDate') }}</span>
|
|
14
|
+
<span v-if="hasCoverPeriod" :class="[$styles.textSimple]" class="font-medium hidden lg:block">{{ $dataStore.t('productConditionsForm.coverPeriod') }}</span>
|
|
15
|
+
<span v-if="hasPayPeriod" :class="[$styles.textSimple]" class="font-medium hidden lg:block">{{ $dataStore.t('productConditionsForm.payPeriod') }}</span>
|
|
14
16
|
</div>
|
|
15
17
|
<div class="grid grid-cols-3 lg:grid-cols-5 auto-rows-fr items-center">
|
|
16
|
-
<span :class="[amount === null && $
|
|
17
|
-
<span :class="[premium === null && $
|
|
18
|
-
<span :class="[
|
|
19
|
-
<span :class="[
|
|
18
|
+
<span v-if="hasSum" :class="[amount === null && $styles.emptyBlockCol]">{{ amount }} </span>
|
|
19
|
+
<span v-if="hasPremium" :class="[premium === null && $styles.emptyBlockCol]"> {{ premium }}</span>
|
|
20
|
+
<span v-if="hasPolicyNumber" :class="[policyNumber === null && $styles.emptyBlockCol]" class="hidden lg:block"> {{ policyNumber }}</span>
|
|
21
|
+
<span v-if="hasContractDate" :class="[policyNumber === null && $styles.emptyBlockCol]" class="hidden lg:block"> {{ contractDate }}</span>
|
|
22
|
+
<span v-if="hasCoverPeriod" :class="[coverPeriod === null && $styles.emptyBlockCol]" class="hidden lg:block">{{ coverPeriod }} </span>
|
|
23
|
+
<span v-if="hasPayPeriod" :class="[paymentPeriod === null && $styles.emptyBlockCol]" class="hidden lg:block">
|
|
20
24
|
{{ paymentPeriod }}
|
|
21
25
|
</span>
|
|
22
26
|
<div
|
|
23
|
-
class="rounded-br-lg transition-all h-[70px] w-[60px] relative place-self-end
|
|
24
|
-
:class="[$
|
|
25
|
-
@click="$emit('onMore', { whichForm: 'productConditions' })"
|
|
27
|
+
class="rounded-br-lg transition-all h-[70px] w-[60px] relative place-self-end"
|
|
28
|
+
:class="[$styles.blueBgLight, $styles.blueBgLightHover, disabled ? $styles.disabled : 'cursor-pointer']"
|
|
29
|
+
@click="!disabled && $emit('onMore', { whichForm: 'productConditions' })"
|
|
26
30
|
>
|
|
27
|
-
<i class="mdi mdi-dots-vertical text-xl absolute top-[20px] right-[20px]"
|
|
31
|
+
<i class="mdi mdi-dots-vertical text-xl absolute top-[20px] right-[20px]"></i>
|
|
28
32
|
</div>
|
|
29
33
|
</div>
|
|
30
34
|
</div>
|
|
@@ -37,8 +41,13 @@ export default defineComponent({
|
|
|
37
41
|
type: String,
|
|
38
42
|
default: '',
|
|
39
43
|
},
|
|
44
|
+
disabled: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: false,
|
|
47
|
+
},
|
|
40
48
|
},
|
|
41
49
|
setup() {
|
|
50
|
+
const dataStore = useDataStore();
|
|
42
51
|
const formStore = useFormStore();
|
|
43
52
|
|
|
44
53
|
const amount = computed(() =>
|
|
@@ -47,12 +56,49 @@ export default defineComponent({
|
|
|
47
56
|
const premium = computed(() =>
|
|
48
57
|
formStore.productConditionsForm && formStore.productConditionsForm.insurancePremiumPerMonth ? formStore.productConditionsForm.insurancePremiumPerMonth : null,
|
|
49
58
|
);
|
|
59
|
+
const policyNumber = computed(() => (formStore.applicationData && formStore.applicationData.policyAppDto ? formStore.applicationData.policyAppDto.policyNumber : null));
|
|
60
|
+
const contractDate = computed(() =>
|
|
61
|
+
formStore.applicationData && formStore.applicationData.policyAppDto && formStore.applicationData.policyAppDto.contractDate
|
|
62
|
+
? reformatDate(formStore.applicationData.policyAppDto.contractDate)
|
|
63
|
+
: null,
|
|
64
|
+
);
|
|
50
65
|
const coverPeriod = computed(() => (formStore.productConditionsForm && formStore.productConditionsForm.coverPeriod ? formStore.productConditionsForm.coverPeriod : null));
|
|
51
66
|
const paymentPeriod = computed(() =>
|
|
52
67
|
formStore.productConditionsForm && formStore.productConditionsForm.paymentPeriod && !!formStore.productConditionsForm.paymentPeriod.nameRu
|
|
53
68
|
? formStore.productConditionsForm.paymentPeriod.nameRu
|
|
54
69
|
: null,
|
|
55
70
|
);
|
|
71
|
+
|
|
72
|
+
const hasSum = computed(() => {
|
|
73
|
+
return true;
|
|
74
|
+
});
|
|
75
|
+
const hasPremium = computed(() => {
|
|
76
|
+
return true;
|
|
77
|
+
});
|
|
78
|
+
const hasPolicyNumber = computed(() => {
|
|
79
|
+
if (dataStore.isFinCenter()) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
84
|
+
const hasContractDate = computed(() => {
|
|
85
|
+
if (dataStore.isFinCenter()) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
});
|
|
90
|
+
const hasCoverPeriod = computed(() => {
|
|
91
|
+
if (dataStore.isFinCenter()) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
});
|
|
96
|
+
const hasPayPeriod = computed(() => {
|
|
97
|
+
if (dataStore.isFinCenter()) {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
});
|
|
56
102
|
return {
|
|
57
103
|
// State
|
|
58
104
|
formStore,
|
|
@@ -60,8 +106,16 @@ export default defineComponent({
|
|
|
60
106
|
// Computed
|
|
61
107
|
amount,
|
|
62
108
|
premium,
|
|
109
|
+
policyNumber,
|
|
110
|
+
contractDate,
|
|
63
111
|
coverPeriod,
|
|
64
112
|
paymentPeriod,
|
|
113
|
+
hasSum,
|
|
114
|
+
hasPremium,
|
|
115
|
+
hasPolicyNumber,
|
|
116
|
+
hasContractDate,
|
|
117
|
+
hasPayPeriod,
|
|
118
|
+
hasCoverPeriod,
|
|
65
119
|
};
|
|
66
120
|
},
|
|
67
121
|
});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<vue-date-picker
|
|
3
|
+
:model-value="modelValue"
|
|
4
|
+
:clearable="false"
|
|
5
|
+
:disabled="disabled"
|
|
6
|
+
:reaonly="readonly"
|
|
7
|
+
@update:modelValue="$emit('update:modelValue', $event)"
|
|
8
|
+
locale="ru"
|
|
9
|
+
model-type="dd.MM.yyyy"
|
|
10
|
+
position="left"
|
|
11
|
+
menu-class-name="!left-[30vw] md:!left-[70vw] lg:!left-[75vw]"
|
|
12
|
+
:teleport="teleport"
|
|
13
|
+
:offset="-50"
|
|
14
|
+
:close-on-scroll="true"
|
|
15
|
+
:enable-time-picker="false"
|
|
16
|
+
cancel-text="Отменить"
|
|
17
|
+
select-text="Выбрать"
|
|
18
|
+
>
|
|
19
|
+
<template #trigger>
|
|
20
|
+
<v-icon icon="mdi mdi-calendar-blank-outline cursor-pointer" />
|
|
21
|
+
</template>
|
|
22
|
+
</vue-date-picker>
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script lang="ts">
|
|
26
|
+
export default defineComponent({
|
|
27
|
+
props: {
|
|
28
|
+
modelValue: {
|
|
29
|
+
required: false,
|
|
30
|
+
},
|
|
31
|
+
disabled: {
|
|
32
|
+
type: Boolean,
|
|
33
|
+
default: false,
|
|
34
|
+
},
|
|
35
|
+
readonly: {
|
|
36
|
+
type: Boolean,
|
|
37
|
+
default: false,
|
|
38
|
+
},
|
|
39
|
+
teleport: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: '.v-form',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
</script>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="h-[60px] bg-white rounded border-b-[1px] border-b-[#f3f6fc] flex items-center pl-4" :class="[$
|
|
2
|
+
<div class="h-[60px] bg-white rounded border-b-[1px] border-b-[#f3f6fc] flex items-center pl-4" :class="[$styles.textTitle]">
|
|
3
3
|
<slot></slot>
|
|
4
4
|
</div>
|
|
5
5
|
</template>
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
accept=".pdf,.doc,.jpeg,.jpg,.jpg"
|
|
13
13
|
truncate-length="15"
|
|
14
14
|
clear-icon="mdi mdi-close"
|
|
15
|
-
:label="$t('labels.chooseDoc')"
|
|
16
|
-
|
|
15
|
+
:label="$dataStore.t('labels.chooseDoc')"
|
|
16
|
+
/>
|
|
17
17
|
</template>
|
|
18
18
|
|
|
19
19
|
<script lang="ts">
|
|
@@ -43,7 +43,6 @@ export default defineComponent({
|
|
|
43
43
|
top: 20px;
|
|
44
44
|
}
|
|
45
45
|
.file-input .v-field__append-inner {
|
|
46
|
-
padding-top: 18px;
|
|
47
46
|
padding-right: 6px;
|
|
48
47
|
}
|
|
49
48
|
.file-input .v-field__append-inner i {
|
|
@@ -19,17 +19,31 @@
|
|
|
19
19
|
:prepend-icon="prependIcon ? prependIcon : ''"
|
|
20
20
|
:append-icon="appendIcon ? appendIcon : ''"
|
|
21
21
|
:prepend-inner-icon="prependInnerIcon ? prependInnerIcon : ''"
|
|
22
|
-
:append-inner-icon="appendInnerIcon ? appendInnerIcon : ''"
|
|
23
22
|
:bg-color="bgColor ? bgColor : ''"
|
|
23
|
+
:suffix="suffix"
|
|
24
|
+
@input="$emit('input', $event)"
|
|
24
25
|
@keyup.enter.prevent="submitted"
|
|
25
26
|
@click:append="!props.readonly && $emit('append-out')"
|
|
26
27
|
@click:prepend="!props.readonly && $emit('prepend-out')"
|
|
27
|
-
@click:append-inner="!props.readonly && $emit('append')"
|
|
28
28
|
@click:prepend-inner="!props.readonly && $emit('prepend')"
|
|
29
|
+
@click:clear="!props.readonly && $emit('on-clear')"
|
|
29
30
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
30
31
|
>
|
|
32
|
+
<template v-if="appendInnerIcon && appendInnerIcon.length" v-slot:append-inner>
|
|
33
|
+
<v-icon
|
|
34
|
+
v-if="appendInnerIcon.includes('mdi-calendar-blank-outline') === false"
|
|
35
|
+
:icon="appendInnerIcon"
|
|
36
|
+
@click="appendInnerIcon.includes('mdi-magnify') ? $emit('append') : !props.readonly && $emit('append')"
|
|
37
|
+
/>
|
|
38
|
+
<base-datepicker
|
|
39
|
+
v-if="appendInnerIcon.includes('mdi-calendar-blank-outline') && !props.readonly"
|
|
40
|
+
:model-value="modelValue"
|
|
41
|
+
@update:modelValue="$emit('update:modelValue', $event)"
|
|
42
|
+
:teleport="teleport"
|
|
43
|
+
/>
|
|
44
|
+
</template>
|
|
31
45
|
<template v-if="loading" #loader>
|
|
32
|
-
<v-progress-linear :active="loading" :color="color" absolute height="1" indeterminate
|
|
46
|
+
<v-progress-linear :active="loading" :color="color" absolute height="1" indeterminate />
|
|
33
47
|
</template>
|
|
34
48
|
</v-text-field>
|
|
35
49
|
</template>
|
|
@@ -65,6 +79,10 @@ export default defineComponent({
|
|
|
65
79
|
type: String,
|
|
66
80
|
default: '',
|
|
67
81
|
},
|
|
82
|
+
suffix: {
|
|
83
|
+
type: String,
|
|
84
|
+
default: '',
|
|
85
|
+
},
|
|
68
86
|
messages: {
|
|
69
87
|
type: [String, Array<string>],
|
|
70
88
|
},
|
|
@@ -108,11 +126,14 @@ export default defineComponent({
|
|
|
108
126
|
appendInnerIcon: {
|
|
109
127
|
type: String,
|
|
110
128
|
},
|
|
129
|
+
teleport: {
|
|
130
|
+
type: String,
|
|
131
|
+
},
|
|
111
132
|
bgColor: {
|
|
112
133
|
type: String,
|
|
113
134
|
},
|
|
114
135
|
},
|
|
115
|
-
emits: ['update:modelValue', 'submitted', 'prepend', 'append', 'prepend-out', 'append-out'],
|
|
136
|
+
emits: ['update:modelValue', 'submitted', 'prepend', 'append', 'prepend-out', 'append-out', 'input', 'on-clear'],
|
|
116
137
|
|
|
117
138
|
setup(props, { emit }) {
|
|
118
139
|
const submitted = (event: any) => {
|
|
@@ -132,9 +153,9 @@ export default defineComponent({
|
|
|
132
153
|
border: none !important;
|
|
133
154
|
outline: none !important;
|
|
134
155
|
}
|
|
135
|
-
.form-input input {
|
|
156
|
+
/* .form-input input {
|
|
136
157
|
padding-top: 30px;
|
|
137
|
-
}
|
|
158
|
+
} */
|
|
138
159
|
.form-input .v-field {
|
|
139
160
|
box-shadow: none;
|
|
140
161
|
font-size: 14px;
|
|
@@ -143,7 +164,6 @@ export default defineComponent({
|
|
|
143
164
|
top: 20px;
|
|
144
165
|
}
|
|
145
166
|
.form-input .v-field__append-inner {
|
|
146
|
-
padding-top: 18px;
|
|
147
167
|
padding-right: 6px;
|
|
148
168
|
}
|
|
149
169
|
.form-input .v-field__append-inner i {
|
|
@@ -168,4 +188,8 @@ export default defineComponent({
|
|
|
168
188
|
.form-input .v-field--error {
|
|
169
189
|
border-color: #ff5449;
|
|
170
190
|
}
|
|
191
|
+
.form-input .v-text-field__suffix {
|
|
192
|
+
padding-top: 30px;
|
|
193
|
+
font-size: 16px !important;
|
|
194
|
+
}
|
|
171
195
|
</style>
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
:prepend-inner-icon="prependInnerIcon ? prependInnerIcon : ''"
|
|
22
22
|
:append-inner-icon="appendInnerIcon ? appendInnerIcon : ''"
|
|
23
23
|
:bg-color="bgColor ? bgColor : ''"
|
|
24
|
+
:suffix="suffix"
|
|
24
25
|
@keyup.enter.prevent="submitted"
|
|
25
26
|
@click:control="!props.readonly && $emit('append')"
|
|
26
27
|
@click:clear="(props.readonly ? false : clearable) && $emit('update:modelValue', new Value())"
|
|
@@ -31,13 +32,13 @@
|
|
|
31
32
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
32
33
|
>
|
|
33
34
|
<template v-if="loading" #loader>
|
|
34
|
-
<v-progress-linear :active="loading" :color="color" absolute height="1" indeterminate
|
|
35
|
+
<v-progress-linear :active="loading" :color="color" absolute height="1" indeterminate />
|
|
35
36
|
</template>
|
|
36
37
|
</v-text-field>
|
|
37
38
|
</template>
|
|
38
39
|
|
|
39
40
|
<script lang="ts">
|
|
40
|
-
import { Value } from '
|
|
41
|
+
import { Value } from '../../composables/classes';
|
|
41
42
|
|
|
42
43
|
export default defineComponent({
|
|
43
44
|
name: 'BasePanelInput',
|
|
@@ -115,6 +116,10 @@ export default defineComponent({
|
|
|
115
116
|
bgColor: {
|
|
116
117
|
type: String,
|
|
117
118
|
},
|
|
119
|
+
suffix: {
|
|
120
|
+
type: String,
|
|
121
|
+
default: '',
|
|
122
|
+
},
|
|
118
123
|
},
|
|
119
124
|
emits: ['update:modelValue', 'submitted', 'prepend', 'append', 'prepend-out', 'append-out', 'clear'],
|
|
120
125
|
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
@update:modelValue="$emit('update:modelValue', $event)"
|
|
29
29
|
>
|
|
30
30
|
<template v-if="loading" #loader>
|
|
31
|
-
<v-progress-linear :active="loading" :color="color" absolute height="1" indeterminate
|
|
31
|
+
<v-progress-linear :active="loading" :color="color" absolute height="1" indeterminate />
|
|
32
32
|
</template>
|
|
33
33
|
</v-text-field>
|
|
34
34
|
</template>
|
|
@@ -117,7 +117,7 @@ export default defineComponent({
|
|
|
117
117
|
|
|
118
118
|
return {
|
|
119
119
|
submitted,
|
|
120
|
-
props
|
|
120
|
+
props,
|
|
121
121
|
};
|
|
122
122
|
},
|
|
123
123
|
});
|