hl-core 0.0.9-beta.2 → 0.0.9-beta.21

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.
Files changed (63) hide show
  1. package/api/base.api.ts +684 -0
  2. package/api/index.ts +2 -620
  3. package/api/interceptors.ts +58 -14
  4. package/components/Button/Btn.vue +3 -3
  5. package/components/Complex/ContentBlock.vue +1 -1
  6. package/components/Complex/MessageBlock.vue +1 -1
  7. package/components/Complex/Page.vue +7 -1
  8. package/components/Complex/WhiteBlock.vue +7 -0
  9. package/components/Dialog/Dialog.vue +2 -2
  10. package/components/Dialog/FamilyDialog.vue +5 -5
  11. package/components/Form/FormBlock.vue +36 -29
  12. package/components/Form/FormSection.vue +2 -2
  13. package/components/Form/FormTextSection.vue +3 -3
  14. package/components/Form/FormToggle.vue +3 -3
  15. package/components/Form/ManagerAttachment.vue +55 -42
  16. package/components/Form/ProductConditionsBlock.vue +73 -20
  17. package/components/Input/EmptyFormField.vue +1 -1
  18. package/components/Input/FileInput.vue +8 -3
  19. package/components/Input/Monthpicker.vue +33 -0
  20. package/components/Input/PanelInput.vue +5 -1
  21. package/components/Input/RoundedEmptyField.vue +5 -0
  22. package/components/Input/RoundedSelect.vue +13 -0
  23. package/components/Layout/Drawer.vue +2 -1
  24. package/components/Layout/Header.vue +1 -1
  25. package/components/Layout/SettingsPanel.vue +5 -9
  26. package/components/List/ListEmpty.vue +1 -1
  27. package/components/Menu/MenuHover.vue +1 -1
  28. package/components/Menu/MenuNav.vue +1 -1
  29. package/components/Menu/MenuNavItem.vue +4 -4
  30. package/components/Pages/Anketa.vue +88 -47
  31. package/components/Pages/Auth.vue +21 -10
  32. package/components/Pages/ContragentForm.vue +505 -0
  33. package/components/Pages/Documents.vue +5 -5
  34. package/components/Pages/InvoiceInfo.vue +2 -2
  35. package/components/Pages/MemberForm.vue +215 -59
  36. package/components/Pages/ProductAgreement.vue +1 -3
  37. package/components/Pages/ProductConditions.vue +677 -151
  38. package/components/Panel/PanelHandler.vue +86 -21
  39. package/components/Panel/PanelSelectItem.vue +18 -3
  40. package/components/Utilities/IconBorder.vue +17 -0
  41. package/composables/axios.ts +1 -1
  42. package/composables/classes.ts +276 -11
  43. package/composables/constants.ts +43 -0
  44. package/composables/index.ts +40 -4
  45. package/composables/styles.ts +20 -10
  46. package/configs/i18n.ts +0 -2
  47. package/layouts/default.vue +5 -2
  48. package/layouts/full.vue +1 -1
  49. package/locales/ru.json +221 -6
  50. package/nuxt.config.ts +1 -1
  51. package/package.json +30 -39
  52. package/pages/500.vue +2 -2
  53. package/pages/Token.vue +1 -0
  54. package/plugins/helperFunctionsPlugins.ts +6 -7
  55. package/plugins/vuetifyPlugin.ts +2 -0
  56. package/store/data.store.ts +561 -226
  57. package/store/form.store.ts +11 -1
  58. package/store/member.store.ts +1 -1
  59. package/store/rules.ts +37 -2
  60. package/types/enum.ts +6 -0
  61. package/types/index.ts +145 -31
  62. package/components/Button/BtnIcon.vue +0 -47
  63. package/locales/kz.json +0 -585
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <section v-if="sendingActions">
3
- <div :class="[$libStyles.flexColNav]">
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="[$libStyles.flexColNav]">
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="$libStyles.blueLightBtn" :text="$dataStore.t('confirm.no')" @click="closePanel" />
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="[$libStyles.flexColNav]">
28
- <div :class="[$libStyles.blueBgLight]" class="rounded-lg p-4">
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="$libStyles.textTitle">{{ `${signUrl.longName} - ${signUrl.iin}` }}</v-expansion-panel-title>
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="$libStyles.textSimple">
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="$libStyles.blueLightBtn" :text="$dataStore.t('sign.recipientNumber')" @click="openSmsPanel(signUrl)" />
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="[$libStyles.flexColNav]">
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
- /></base-form-section>
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="[$libStyles.flexColNav]">
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="$libStyles.blueLightBtn" :text="$dataStore.t('payment.recipientNumber')" @click="openEpayPanel" />
76
+ <base-btn :loading="loading" :btn="$styles.blueLightBtn" :text="$dataStore.t('payment.recipientNumber')" @click="openEpayPanel" />
70
77
  </div>
71
- <div v-if="isSendNumberOpen" :class="[$libStyles.flexColNav]">
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="[$libStyles.flexColNav]">
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></base-empty-form-field
107
- ></base-content-block>
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
- setup() {
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
- await dataStore.handleTask(dataStore.panelAction, route.params.taskId as string, actionCause.value);
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 = buttonText.value!;
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 class="flex justify-between p-4 items-center cursor-pointer" :class="[$libStyles.rounded, $libStyles.blueBgLight, $libStyles.blueBgLightHover]">
3
- <span :class="[$libStyles.textSimple]">{{ text }}</span>
4
- <i class="mdi text-xl" :class="[selected ? `mdi-radiobox-marked ${$libStyles.greenText}` : 'mdi-radiobox-blank text-[#636363]']"></i>
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>
@@ -1,7 +1,7 @@
1
1
  import axios from 'axios';
2
2
  import interceptors from '../api/interceptors';
3
3
 
4
- export const useAxios = (baseURL: string) => {
4
+ export const useAxiosInstance = (baseURL: string) => {
5
5
  const axiosInstance = axios.create({
6
6
  baseURL: baseURL,
7
7
  });