hl-core 0.0.9-beta.6 → 0.0.9-beta.8

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.
@@ -1,4 +1,4 @@
1
- import { AxiosInstance } from 'axios';
1
+ import { AxiosError, AxiosInstance } from 'axios';
2
2
 
3
3
  export default function (axios: AxiosInstance) {
4
4
  axios.interceptors.request.use(
@@ -9,7 +9,7 @@ export default function (axios: AxiosInstance) {
9
9
  }
10
10
  return request;
11
11
  },
12
- error => {
12
+ (error: AxiosError) => {
13
13
  return Promise.reject(error);
14
14
  },
15
15
  );
@@ -17,22 +17,24 @@ export default function (axios: AxiosInstance) {
17
17
  response => {
18
18
  return response;
19
19
  },
20
- error => {
20
+ (error: AxiosError) => {
21
21
  const dataStore = useDataStore();
22
22
  if (!dataStore.isCalculator) {
23
23
  const router = useRouter();
24
- if (error.response.status === 401) {
25
- dataStore.$reset();
26
- localStorage.clear();
27
- if (dataStore.isBridge) {
28
- router.push({ name: 'Auth', query: { error: 401 } });
29
- } else {
30
- dataStore.sendToParent(constants.postActions.Error401, 401);
24
+ if (error && error.response && error.response.status) {
25
+ if (error.response.status === 401) {
26
+ dataStore.$reset();
27
+ localStorage.clear();
28
+ if (dataStore.isBridge) {
29
+ router.push({ name: 'Auth', query: { error: 401 } });
30
+ } else {
31
+ dataStore.sendToParent(constants.postActions.Error401, 401);
32
+ }
31
33
  }
32
- }
33
- if (error.response.status >= 500) {
34
- if (router.currentRoute.value.name !== 'Auth') {
35
- dataStore.showToaster('error', error.stack, 5000);
34
+ if (error.response.status >= 500) {
35
+ if (router.currentRoute.value.name !== 'Auth') {
36
+ dataStore.showToaster('error', error.stack ?? dataStore.t('toaster.error'), 5000);
37
+ }
36
38
  }
37
39
  }
38
40
  }
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <button
3
3
  type="button"
4
- class="transition-all"
4
+ class="transition-all border-solid"
5
5
  @click="$emit('clicked')"
6
6
  :disabled="disabled || loading"
7
7
  :class="[
@@ -12,7 +12,7 @@
12
12
  ]"
13
13
  >
14
14
  <base-loader v-if="loading" :size="24" color="#FFF" bg-color="" :width="2" />
15
- <span v-if="!loading">{{ text }}</span>
15
+ <span class="!text-inherit" v-if="!loading">{{ text }}</span>
16
16
  </button>
17
17
  </template>
18
18
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="text-left p-6 mb-4" :class="[color, $styles.rounded, $styles.textTitle]">
2
+ <div class="text-left p-6" :class="[color, $styles.rounded, $styles.textTitle]">
3
3
  <v-icon :icon="icon" class="mr-4"></v-icon>
4
4
  {{ text }}
5
5
  </div>
@@ -7,7 +7,7 @@
7
7
  <base-panel-input
8
8
  class="pl-1"
9
9
  v-model="formStore.SaleChanellPolicy"
10
- :value="formStore.SaleChanellPolicy.nameRu"
10
+ :value="formStore.SaleChanellPolicy?.nameRu"
11
11
  :readonly="isReadonly"
12
12
  :clearable="!isReadonly"
13
13
  :label="$dataStore.t('form.salesChanell')"
@@ -18,7 +18,7 @@
18
18
  <base-panel-input
19
19
  class="pl-1"
20
20
  v-model="formStore.RegionPolicy"
21
- :value="formStore.RegionPolicy.nameRu"
21
+ :value="formStore.RegionPolicy?.nameRu"
22
22
  :readonly="isReadonly"
23
23
  :clearable="!isReadonly"
24
24
  :label="$dataStore.t('form.Region')"
@@ -29,7 +29,7 @@
29
29
  <base-panel-input
30
30
  class="pl-1"
31
31
  v-model="formStore.ManagerPolicy"
32
- :value="formStore.ManagerPolicy.nameRu"
32
+ :value="formStore.ManagerPolicy?.nameRu"
33
33
  :readonly="isReadonly"
34
34
  :clearable="!isReadonly"
35
35
  :label="$dataStore.t('form.manager')"
@@ -40,7 +40,7 @@
40
40
  <base-panel-input
41
41
  class="pl-1"
42
42
  v-model="formStore.AgentData"
43
- :value="formStore.AgentData.fullName"
43
+ :value="formStore.AgentData?.fullName"
44
44
  :readonly="isReadonly"
45
45
  :clearable="!isReadonly"
46
46
  :label="$dataStore.t('form.agent')"
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div class="min-w-[250px] h-[50px] border-[1px] border-[#dadada] bg-[#FFF] pl-4 flex cursor-pointer opacity-[87%]" :class="[$styles.textSimple, $styles.rounded]">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
@@ -7,6 +7,8 @@
7
7
  :placeholder="placeholder"
8
8
  :label="label"
9
9
  :variant="variant"
10
+ :density="(density as any)"
11
+ :menu-icon="menuIcon"
10
12
  :clear-icon="clearIcon"
11
13
  :color="color"
12
14
  :hint="hint"
@@ -78,10 +80,18 @@ export default defineComponent({
78
80
  type: String as PropType<InputVariants>,
79
81
  default: 'solo',
80
82
  },
83
+ density: {
84
+ type: String,
85
+ default: 'compact',
86
+ },
81
87
  color: {
82
88
  type: String,
83
89
  default: '#009c73',
84
90
  },
91
+ menuIcon: {
92
+ type: String,
93
+ default: 'mdi-chevron-down',
94
+ },
85
95
  clearIcon: {
86
96
  type: String,
87
97
  default: 'mdi-close',
@@ -122,6 +132,9 @@ export default defineComponent({
122
132
  border: none !important;
123
133
  outline: none !important;
124
134
  }
135
+ .rounded-select.v-input {
136
+ flex: unset !important;
137
+ }
125
138
  .rounded-select .v-label.v-field-label {
126
139
  top: 20px;
127
140
  }
@@ -2,22 +2,58 @@
2
2
  <section v-show="showForm" class="flex flex-col gap-4 px-[10px]">
3
3
  <v-form v-if="member" ref="vForm" @submit="submitForm" class="max-h-[75vh] overflow-y-scroll">
4
4
  <base-form-section :title="$dataStore.t('form.personalData')" class="mt-[14px]">
5
- <base-form-input v-model="member.phoneNumber" :label="$dataStore.t('form.phoneNumber')" :maska="$maska.phone" :rules="$rules.required.concat($rules.phoneFormat)" />
6
- <base-form-input v-model="member.iin" :label="$dataStore.t('form.iin')" :maska="$maska.iin" :rules="$rules.required.concat($rules.iinRight)" />
7
- <base-form-input v-model.trim="member.lastName" :label="$dataStore.t('form.lastName')" :rules="$rules.required.concat($rules.cyrillic)" />
8
- <base-form-input v-model.trim="member.firstName" :label="$dataStore.t('form.firstName')" :rules="$rules.required.concat($rules.cyrillic)" />
9
- <base-form-input v-model.trim="member.middleName" :label="$dataStore.t('form.middleName')" :rules="$rules.cyrillicNonRequired" />
5
+ <base-form-input
6
+ v-model="member.phoneNumber"
7
+ :label="$dataStore.t('form.phoneNumber')"
8
+ :readonly="disabled"
9
+ :clearable="!disabled"
10
+ :maska="$maska.phone"
11
+ :rules="$rules.required.concat($rules.phoneFormat)"
12
+ />
13
+ <base-form-input
14
+ v-model="member.iin"
15
+ :label="$dataStore.t('form.iin')"
16
+ :readonly="disabled"
17
+ :clearable="!disabled"
18
+ :maska="$maska.iin"
19
+ :rules="$rules.required.concat($rules.iinRight)"
20
+ />
21
+ <base-form-input
22
+ v-model.trim="member.lastName"
23
+ :label="$dataStore.t('form.lastName')"
24
+ :readonly="disabled"
25
+ :clearable="!disabled"
26
+ :rules="$rules.required.concat($rules.cyrillic)"
27
+ />
28
+ <base-form-input
29
+ v-model.trim="member.firstName"
30
+ :label="$dataStore.t('form.firstName')"
31
+ :readonly="disabled"
32
+ :clearable="!disabled"
33
+ :rules="$rules.required.concat($rules.cyrillic)"
34
+ />
35
+ <base-form-input
36
+ v-model.trim="member.middleName"
37
+ :label="$dataStore.t('form.middleName')"
38
+ :readonly="disabled"
39
+ :clearable="!disabled"
40
+ :rules="$rules.cyrillicNonRequired"
41
+ />
10
42
  <base-form-input
11
43
  v-model="member.birthDate"
12
44
  :label="$dataStore.t('form.birthDate')"
45
+ :readonly="disabled"
46
+ :clearable="!disabled"
13
47
  :rules="$rules.required.concat($rules.birthDate)"
14
48
  :maska="$maska.date"
15
49
  append-inner-icon="mdi mdi-calendar-blank-outline"
16
50
  />
17
- <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :rules="$rules.numbers.concat($rules.age18)" />
51
+ <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="disabled" :clearable="!disabled" :rules="$rules.numbers.concat($rules.age18)" />
18
52
  <base-panel-input
19
53
  v-model="member.gender"
20
- :value="member.gender.nameRu"
54
+ :value="member.gender?.nameRu"
55
+ :readonly="disabled"
56
+ :clearable="!disabled"
21
57
  :label="$dataStore.t('form.gender')"
22
58
  :rules="$rules.objectRequired"
23
59
  append-inner-icon="mdi mdi-chevron-right"
@@ -25,15 +61,17 @@
25
61
  />
26
62
  </base-form-section>
27
63
  <!-- <base-form-section :title="$dataStore.t('form.jobData')">
28
- <base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :rules="$rules.required" />
29
- <base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :rules="$rules.required" />
30
- <base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :rules="$rules.required" />
64
+ <base-form-input v-model.trim="member.job" :label="$dataStore.t('form.job')" :readonly="disabled" :clearable="!disabled" :rules="$rules.required" />
65
+ <base-form-input v-model.trim="member.jobPosition" :label="$dataStore.t('form.jobPosition')" :readonly="disabled" :clearable="!disabled" :rules="$rules.required" />
66
+ <base-form-input v-model.trim="member.jobPlace" :label="$dataStore.t('form.jobPlace')" :readonly="disabled" :clearable="!disabled" :rules="$rules.required" />
31
67
  </base-form-section> -->
32
68
  <base-form-section :title="$dataStore.t('form.placeRegistration')">
33
69
  <base-panel-input
34
70
  v-model="member.registrationCountry"
35
- :value="member.registrationCountry.nameRu"
71
+ :value="member.registrationCountry?.nameRu"
36
72
  :label="$dataStore.t('form.Country')"
73
+ :readonly="disabled"
74
+ :clearable="!disabled"
37
75
  :rules="$rules.objectRequired"
38
76
  append-inner-icon="mdi mdi-chevron-right"
39
77
  @append="openPanel($dataStore.t('form.Country'), [], 'registrationCountry', $dataStore.getCountries)"
@@ -42,16 +80,20 @@
42
80
  <div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
43
81
  <base-panel-input
44
82
  v-model="member.registrationProvince"
45
- :value="member.registrationProvince.nameRu"
83
+ :value="member.registrationProvince?.nameRu"
46
84
  :label="$dataStore.t('form.Province')"
85
+ :readonly="disabled"
86
+ :clearable="!disabled"
47
87
  :rules="$rules.objectRequired"
48
88
  append-inner-icon="mdi mdi-chevron-right"
49
89
  @append="openPanel($dataStore.t('form.Province'), [], 'registrationProvince', $dataStore.getStates, 'registrationCountry')"
50
90
  />
51
91
  <base-panel-input
52
92
  v-model="member.registrationRegionType"
53
- :value="member.registrationRegionType.nameRu"
93
+ :value="member.registrationRegionType?.nameRu"
54
94
  :label="$dataStore.t('form.RegionType')"
95
+ :readonly="disabled"
96
+ :clearable="!disabled"
55
97
  :rules="$rules.objectRequired"
56
98
  append-inner-icon="mdi mdi-chevron-right"
57
99
  @append="openPanel($dataStore.t('form.RegionType'), [], 'registrationRegionType', $dataStore.getLocalityTypes)"
@@ -59,58 +101,62 @@
59
101
  <base-panel-input
60
102
  v-if="member.registrationRegionType.nameRu !== 'город'"
61
103
  v-model="member.registrationRegion"
62
- :value="member.registrationRegion.nameRu"
104
+ :value="member.registrationRegion?.nameRu"
63
105
  :label="$dataStore.t('form.Region')"
106
+ :readonly="disabled"
107
+ :clearable="!disabled"
64
108
  :rules="$rules.objectRequired"
65
109
  append-inner-icon="mdi mdi-chevron-right"
66
110
  @append="openPanel($dataStore.t('form.Region'), [], 'registrationRegion', $dataStore.getRegions, 'registrationProvince')"
67
111
  />
68
112
  <base-panel-input
69
113
  v-model="member.registrationCity"
70
- :value="member.registrationCity.nameRu"
114
+ :value="member.registrationCity?.nameRu"
71
115
  :label="$dataStore.t('form.City')"
116
+ :readonly="disabled"
117
+ :clearable="!disabled"
72
118
  :rules="$rules.objectRequired"
73
119
  append-inner-icon="mdi mdi-chevron-right"
74
120
  @append="openPanel($dataStore.t('form.City'), [], 'registrationCity', $dataStore.getCities, 'registrationProvince')"
75
121
  />
76
- <base-form-input v-model.trim="member.registrationQuarter" :label="$dataStore.t('form.Quarter')" />
77
- <base-form-input v-model.trim="member.registrationMicroDistrict" :label="$dataStore.t('form.MicroDistrict')" />
78
- <base-form-input v-model.trim="member.registrationStreet" :rules="$rules.required" :label="$dataStore.t('form.Street')" />
79
- <base-form-input v-model.trim="member.registrationNumberHouse" :rules="$rules.required" :label="$dataStore.t('form.NumberHouse')" />
80
- <base-form-input v-model.trim="member.registrationNumberApartment" :label="$dataStore.t('form.NumberApartment')" />
122
+ <base-form-input v-model.trim="member.registrationQuarter" :label="$dataStore.t('form.Quarter')" :readonly="disabled" :clearable="!disabled" />
123
+ <base-form-input v-model.trim="member.registrationMicroDistrict" :label="$dataStore.t('form.MicroDistrict')" :readonly="disabled" :clearable="!disabled" />
124
+ <base-form-input v-model.trim="member.registrationStreet" :rules="$rules.required" :label="$dataStore.t('form.Street')" :readonly="disabled" :clearable="!disabled" />
125
+ <base-form-input
126
+ v-model.trim="member.registrationNumberHouse"
127
+ :rules="$rules.required"
128
+ :label="$dataStore.t('form.NumberHouse')"
129
+ :readonly="disabled"
130
+ :clearable="!disabled"
131
+ />
132
+ <base-form-input v-model.trim="member.registrationNumberApartment" :label="$dataStore.t('form.NumberApartment')" :readonly="disabled" :clearable="!disabled" />
81
133
  </div>
82
134
  </base-fade-transition>
83
135
  </base-form-section>
84
136
  <base-form-section :title="$dataStore.t('form.birthData')">
85
137
  <base-panel-input
86
138
  v-model="member.birthPlace"
87
- :value="member.birthPlace.nameRu"
139
+ :value="member.birthPlace?.nameRu"
88
140
  :label="$dataStore.t('form.Country')"
141
+ :readonly="disabled"
142
+ :clearable="!disabled"
89
143
  :rules="$rules.objectRequired"
90
144
  append-inner-icon="mdi mdi-chevron-right"
91
145
  @append="openPanel($dataStore.t('form.Country'), [], 'birthPlace', $dataStore.getCountries)"
92
146
  />
93
- <!-- TODO -->
94
- <!-- <base-panel-input
95
- v-model="member.birthRegion"
96
- :value="member.birthRegion.nameRu"
97
- :label="$dataStore.t('form.Region')"
98
-
99
- :rules="$rules.objectRequired"
100
- append-inner-icon="mdi mdi-chevron-right"
101
- @append="openPanel($dataStore.t('form.Region'), [], 'birthRegion', $dataStore.getRegions)"
102
- /> -->
103
147
  </base-form-section>
104
148
  <base-form-section :title="$dataStore.t('form.documentData')">
105
149
  <base-panel-input
106
150
  v-model="member.documentType"
107
- :value="member.documentType.nameRu"
151
+ :value="member.documentType?.nameRu"
108
152
  :label="$dataStore.t('form.documentType')"
153
+ :readonly="disabled"
154
+ :clearable="!disabled"
109
155
  :rules="$rules.objectRequired"
110
156
  append-inner-icon="mdi mdi-chevron-right"
111
157
  @append="openPanel($dataStore.t('form.documentType'), [], 'documentType', $dataStore.getDocumentTypes)"
112
158
  />
113
- <base-form-input v-model.trim="member.documentNumber" :label="$dataStore.t('form.documentNumber')" :rules="$rules.required" />
159
+ <base-form-input v-model.trim="member.documentNumber" :label="$dataStore.t('form.documentNumber')" :readonly="disabled" :clearable="!disabled" :rules="$rules.required" />
114
160
  <!-- <base-file-input v-if="!memberDocument" :disabled="isDisabled" :clearable="!isDisabled" @input="attachFile($event)" />
115
161
  <base-empty-form-field v-if="memberDocument" @click="!isDisabled && openCustomPanel('document')" class="justify-between">
116
162
  {{ `${memberDocument.fileTypeName} - ${memberDocument.fileName}` }}
@@ -118,8 +164,10 @@
118
164
  </base-empty-form-field> -->
119
165
  <base-panel-input
120
166
  v-model="member.documentIssuers"
121
- :value="member.documentIssuers.nameRu"
167
+ :value="member.documentIssuers?.nameRu"
122
168
  :label="$dataStore.t('form.documentIssuers')"
169
+ :readonly="disabled"
170
+ :clearable="!disabled"
123
171
  :rules="$rules.objectRequired"
124
172
  append-inner-icon="mdi mdi-chevron-right"
125
173
  @append="openPanel($dataStore.t('form.documentIssuers'), [], 'documentIssuers', $dataStore.getDocumentIssuers)"
@@ -128,6 +176,8 @@
128
176
  v-model="member.documentDate"
129
177
  :label="$dataStore.t('form.documentDate')"
130
178
  :rules="$rules.required.concat($rules.date)"
179
+ :readonly="disabled"
180
+ :clearable="!disabled"
131
181
  :maska="$maska.date"
132
182
  append-inner-icon="mdi mdi-calendar-blank-outline"
133
183
  />
@@ -136,6 +186,8 @@
136
186
  v-if="member.documentType.ids !== 'SBI' && member.documentType.ids !== 'VNZ'"
137
187
  v-model="member.documentExpire"
138
188
  :label="$dataStore.t('form.documentExpire')"
189
+ :readonly="disabled"
190
+ :clearable="!disabled"
139
191
  :rules="$rules.required.concat($rules.date)"
140
192
  :maska="$maska.date"
141
193
  append-inner-icon="mdi mdi-calendar-blank-outline"
@@ -143,16 +195,20 @@
143
195
  </base-fade-transition>
144
196
  <base-panel-input
145
197
  v-model="member.signOfResidency"
146
- :value="member.signOfResidency.nameRu"
198
+ :value="member.signOfResidency?.nameRu"
147
199
  :label="$dataStore.t('form.signOfResidency')"
200
+ :readonly="disabled"
201
+ :clearable="!disabled"
148
202
  :rules="$rules.objectRequired"
149
203
  append-inner-icon="mdi mdi-chevron-right"
150
204
  @append="openPanel($dataStore.t('form.signOfResidency'), [], 'signOfResidency', $dataStore.getResidents)"
151
205
  />
152
206
  <base-panel-input
153
207
  v-model="member.countryOfTaxResidency"
154
- :value="member.countryOfTaxResidency.nameRu"
208
+ :value="member.countryOfTaxResidency?.nameRu"
155
209
  :label="$dataStore.t('form.countryOfTaxResidency')"
210
+ :readonly="disabled"
211
+ :clearable="!disabled"
156
212
  :rules="$rules.objectRequired"
157
213
  append-inner-icon="mdi mdi-chevron-right"
158
214
  @append="openPanel($dataStore.t('form.countryOfTaxResidency'), [], 'countryOfTaxResidency', $dataStore.getTaxCountries)"
@@ -161,8 +217,10 @@
161
217
  <base-panel-input
162
218
  v-if="member.countryOfTaxResidency.ids === '500014.3'"
163
219
  v-model="member.addTaxResidency"
164
- :value="member.addTaxResidency.nameRu"
220
+ :value="member.addTaxResidency?.nameRu"
165
221
  :label="$dataStore.t('form.addTaxResidency')"
222
+ :readonly="disabled"
223
+ :clearable="!disabled"
166
224
  :rules="$rules.objectRequired"
167
225
  append-inner-icon="mdi mdi-chevron-right"
168
226
  @append="openPanel($dataStore.t('form.addTaxResidency'), [], 'addTaxResidency', $dataStore.getAdditionalTaxCountries)"
@@ -170,27 +228,39 @@
170
228
  </base-fade-transition>
171
229
  <base-panel-input
172
230
  v-model="member.countryOfCitizenship"
173
- :value="member.countryOfCitizenship.nameRu"
231
+ :value="member.countryOfCitizenship?.nameRu"
174
232
  :label="$dataStore.t('form.countryOfCitizenship')"
233
+ :readonly="disabled"
234
+ :clearable="!disabled"
175
235
  :rules="$rules.objectRequired"
176
236
  append-inner-icon="mdi mdi-chevron-right"
177
237
  @append="openPanel($dataStore.t('form.countryOfCitizenship'), [], 'countryOfCitizenship', $dataStore.getCitizenshipCountries)"
178
238
  />
179
239
  <base-panel-input
180
240
  v-model="member.economySectorCode"
181
- :value="member.economySectorCode.nameRu"
241
+ :value="member.economySectorCode?.nameRu"
182
242
  :label="$dataStore.t('form.economySectorCode')"
243
+ :readonly="disabled"
244
+ :clearable="!disabled"
183
245
  :rules="$rules.objectRequired"
184
246
  append-inner-icon="mdi mdi-chevron-right"
185
247
  @append="openPanel($dataStore.t('form.economySectorCode'), [], 'economySectorCode', $dataStore.getSectorCodeList)"
186
248
  />
187
249
  </base-form-section>
188
250
  <base-form-section :title="$dataStore.t('form.contactsData')">
189
- <base-form-input v-model="member.homePhone" :maska="$maska.phone" placeholder="+7 7" :label="$dataStore.t('form.homePhone')" :rules="$rules.phoneFormat" />
190
- <base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :rules="$rules.email" />
251
+ <base-form-input
252
+ v-model="member.homePhone"
253
+ :maska="$maska.phone"
254
+ placeholder="+7 7"
255
+ :label="$dataStore.t('form.homePhone')"
256
+ :readonly="disabled"
257
+ :clearable="!disabled"
258
+ :rules="$rules.phoneFormat"
259
+ />
260
+ <base-form-input v-model.trim="member.email" :label="$dataStore.t('form.email')" :readonly="disabled" :clearable="!disabled" :rules="$rules.email" />
191
261
  </base-form-section>
192
262
  </v-form>
193
- <base-btn v-if="showSaveButton" :loading="isButtonLoading" :text="$dataStore.t('buttons.save')" @click="submitForm" />
263
+ <base-btn v-if="showSaveButton && !disabled" :loading="isButtonLoading" :text="$dataStore.t('buttons.save')" @click="submitForm" />
194
264
  <Teleport v-if="isPanelOpen" to="#panel-actions">
195
265
  <div :class="[$styles.scrollPage]" class="relative flex flex-col items-center">
196
266
  <i
@@ -234,6 +304,10 @@ export default defineComponent({
234
304
  type: String as PropType<'contragent' | keyof typeof StoreMembers>,
235
305
  default: 'contragent',
236
306
  },
307
+ disabled: {
308
+ type: Boolean,
309
+ default: false,
310
+ },
237
311
  },
238
312
  emits: ['success'],
239
313
  setup(props, { emit }) {
@@ -82,7 +82,7 @@
82
82
  <base-form-input v-model="member.age" :label="$dataStore.t('form.age')" :readonly="true" :clearable="!isDisabled" :rules="ageRule" />
83
83
  <base-panel-input
84
84
  v-model="member.gender"
85
- :value="member.gender.nameRu"
85
+ :value="member.gender?.nameRu"
86
86
  :readonly="isDisabled || isFromGBD"
87
87
  :clearable="!isDisabled"
88
88
  :label="$dataStore.t('form.gender')"
@@ -93,7 +93,7 @@
93
93
  <base-panel-input
94
94
  v-if="hasFamilyStatus"
95
95
  v-model="member.familyStatus"
96
- :value="member.familyStatus.nameRu"
96
+ :value="member.familyStatus?.nameRu"
97
97
  :readonly="isDisabled"
98
98
  :clearable="!isDisabled"
99
99
  :label="$dataStore.t('form.familyStatus')"
@@ -104,7 +104,7 @@
104
104
  <base-panel-input
105
105
  v-if="(whichForm === formStore.beneficiaryFormKey || whichForm === formStore.insuredFormKey) && member.iin !== formStore.policyholderForm.iin"
106
106
  v-model="member.relationDegree"
107
- :value="member.relationDegree.nameRu"
107
+ :value="member.relationDegree?.nameRu"
108
108
  :readonly="isDisabled"
109
109
  :clearable="!isDisabled"
110
110
  :label="$dataStore.t('form.relations')"
@@ -240,7 +240,7 @@
240
240
  <base-form-toggle v-if="hasSameAddressToggle" v-model="sameAddress" :disabled="isDisabled" :has-border="false" :title="$dataStore.t('form.sameAddress')" />
241
241
  <base-panel-input
242
242
  v-model="member.registrationCountry"
243
- :value="member.registrationCountry.nameRu"
243
+ :value="member.registrationCountry?.nameRu"
244
244
  :readonly="isDisabled"
245
245
  :clearable="!isDisabled"
246
246
  :label="$dataStore.t('form.Country')"
@@ -252,7 +252,7 @@
252
252
  <div class="flex flex-col gap-[1px]" v-if="member.registrationCountry.nameRu === 'Казахстан' || member.registrationCountry.nameRu === null">
253
253
  <base-panel-input
254
254
  v-model="member.registrationProvince"
255
- :value="member.registrationProvince.nameRu"
255
+ :value="member.registrationProvince?.nameRu"
256
256
  :label="$dataStore.t('form.Province')"
257
257
  :readonly="isDisabled"
258
258
  :clearable="!isDisabled"
@@ -262,7 +262,7 @@
262
262
  />
263
263
  <base-panel-input
264
264
  v-model="member.registrationRegionType"
265
- :value="member.registrationRegionType.nameRu"
265
+ :value="member.registrationRegionType?.nameRu"
266
266
  :label="$dataStore.t('form.RegionType')"
267
267
  :readonly="isDisabled"
268
268
  :clearable="!isDisabled"
@@ -273,7 +273,7 @@
273
273
  <base-panel-input
274
274
  v-if="member.registrationRegionType.nameRu !== 'город'"
275
275
  v-model="member.registrationRegion"
276
- :value="member.registrationRegion.nameRu"
276
+ :value="member.registrationRegion?.nameRu"
277
277
  :label="$dataStore.t('form.Region')"
278
278
  :readonly="isDisabled"
279
279
  :clearable="!isDisabled"
@@ -283,7 +283,7 @@
283
283
  />
284
284
  <base-panel-input
285
285
  v-model="member.registrationCity"
286
- :value="member.registrationCity.nameRu"
286
+ :value="member.registrationCity?.nameRu"
287
287
  :label="$dataStore.t('form.City')"
288
288
  :readonly="isDisabled"
289
289
  :clearable="!isDisabled"
@@ -316,7 +316,7 @@
316
316
  <base-form-section :title="$dataStore.t('form.birthData')" v-if="$dataStore.hasBirthSection(whichForm)">
317
317
  <base-panel-input
318
318
  v-model="member.birthPlace"
319
- :value="member.birthPlace.nameRu"
319
+ :value="member.birthPlace?.nameRu"
320
320
  :label="$dataStore.t('form.Country')"
321
321
  :readonly="isDisabled"
322
322
  :clearable="!isDisabled"
@@ -327,7 +327,7 @@
327
327
  <!-- TODO -->
328
328
  <!-- <base-panel-input
329
329
  v-model="member.birthRegion"
330
- :value="member.birthRegion.nameRu"
330
+ :value="member.birthRegion?.nameRu"
331
331
  :label="$dataStore.t('form.Region')"
332
332
  :readonly="isDisabled"
333
333
  :clearable="!isDisabled"
@@ -339,7 +339,7 @@
339
339
  <base-form-section :title="$dataStore.t('form.documentData')" v-if="$dataStore.hasDocumentSection(whichForm)">
340
340
  <base-panel-input
341
341
  v-model="member.documentType"
342
- :value="member.documentType.nameRu"
342
+ :value="member.documentType?.nameRu"
343
343
  :label="$dataStore.t('form.documentType')"
344
344
  :readonly="isDisabled"
345
345
  :clearable="!isDisabled"
@@ -361,7 +361,7 @@
361
361
  </base-empty-form-field> -->
362
362
  <base-panel-input
363
363
  v-model="member.documentIssuers"
364
- :value="member.documentIssuers.nameRu"
364
+ :value="member.documentIssuers?.nameRu"
365
365
  :label="$dataStore.t('form.documentIssuers')"
366
366
  :readonly="isDisabled"
367
367
  :clearable="!isDisabled"
@@ -392,7 +392,7 @@
392
392
  </base-fade-transition>
393
393
  <base-panel-input
394
394
  v-model="member.signOfResidency"
395
- :value="member.signOfResidency.nameRu"
395
+ :value="member.signOfResidency?.nameRu"
396
396
  :label="$dataStore.t('form.signOfResidency')"
397
397
  :readonly="isDisabled"
398
398
  :clearable="!isDisabled"
@@ -402,7 +402,7 @@
402
402
  />
403
403
  <base-panel-input
404
404
  v-model="member.countryOfTaxResidency"
405
- :value="member.countryOfTaxResidency.nameRu"
405
+ :value="member.countryOfTaxResidency?.nameRu"
406
406
  :label="$dataStore.t('form.countryOfTaxResidency')"
407
407
  :readonly="isDisabled"
408
408
  :clearable="!isDisabled"
@@ -414,7 +414,7 @@
414
414
  <base-panel-input
415
415
  v-if="member.countryOfTaxResidency.ids === '500014.3'"
416
416
  v-model="member.addTaxResidency"
417
- :value="member.addTaxResidency.nameRu"
417
+ :value="member.addTaxResidency?.nameRu"
418
418
  :label="$dataStore.t('form.addTaxResidency')"
419
419
  :readonly="isDisabled"
420
420
  :clearable="!isDisabled"
@@ -426,7 +426,7 @@
426
426
  <base-panel-input
427
427
  v-if="hasSignOfIPDL"
428
428
  v-model="member.signOfIPDL"
429
- :value="member.signOfIPDL.nameRu"
429
+ :value="member.signOfIPDL?.nameRu"
430
430
  :label="$dataStore.t('form.signOfIPDL')"
431
431
  :readonly="isDisabled"
432
432
  :clearable="!isDisabled"
@@ -436,7 +436,7 @@
436
436
  />
437
437
  <base-panel-input
438
438
  v-model="member.countryOfCitizenship"
439
- :value="member.countryOfCitizenship.nameRu"
439
+ :value="member.countryOfCitizenship?.nameRu"
440
440
  :label="$dataStore.t('form.countryOfCitizenship')"
441
441
  :readonly="isDisabled"
442
442
  :clearable="!isDisabled"
@@ -446,7 +446,7 @@
446
446
  />
447
447
  <base-panel-input
448
448
  v-model="member.economySectorCode"
449
- :value="member.economySectorCode.nameRu"
449
+ :value="member.economySectorCode?.nameRu"
450
450
  :label="$dataStore.t('form.economySectorCode')"
451
451
  :readonly="isDisabled"
452
452
  :clearable="!isDisabled"
@@ -457,7 +457,7 @@
457
457
  <base-panel-input
458
458
  v-if="hasInsurancePay"
459
459
  v-model="member.insurancePay"
460
- :value="member.insurancePay.nameRu"
460
+ :value="member.insurancePay?.nameRu"
461
461
  :readonly="isDisabled"
462
462
  :clearable="!isDisabled"
463
463
  :rules="$rules.objectRequired"
@@ -101,7 +101,7 @@
101
101
  <base-panel-input
102
102
  v-if="hasRiskGroup"
103
103
  v-model="productConditionsForm.riskGroup"
104
- :value="productConditionsForm.riskGroup.nameRu"
104
+ :value="productConditionsForm.riskGroup?.nameRu"
105
105
  :label="$dataStore.t('productConditionsForm.riskGroup')"
106
106
  :clearable="isRecalculationDisabled === false"
107
107
  :readonly="isRecalculationDisabled"
@@ -130,7 +130,7 @@
130
130
  />
131
131
  <base-panel-input
132
132
  v-model="productConditionsForm.gender"
133
- :value="productConditionsForm.gender.nameRu"
133
+ :value="productConditionsForm.gender?.nameRu"
134
134
  :readonly="isDisabled"
135
135
  :clearable="!isDisabled"
136
136
  :label="$dataStore.t('form.gender')"
@@ -150,7 +150,7 @@
150
150
  <base-panel-input
151
151
  v-if="hasPaymentPeriod"
152
152
  v-model="productConditionsForm.paymentPeriod"
153
- :value="productConditionsForm.paymentPeriod.nameRu"
153
+ :value="productConditionsForm.paymentPeriod?.nameRu"
154
154
  :readonly="isDisabled"
155
155
  :clearable="!isDisabled"
156
156
  :rules="$rules.objectRequired"
@@ -161,7 +161,7 @@
161
161
  <base-panel-input
162
162
  v-if="hasProcessIndexRate"
163
163
  v-model="productConditionsForm.processIndexRate"
164
- :value="productConditionsForm.processIndexRate.nameRu"
164
+ :value="productConditionsForm.processIndexRate?.nameRu"
165
165
  :readonly="isDisabled"
166
166
  :clearable="!isDisabled"
167
167
  :rules="$rules.objectRequired"
@@ -240,7 +240,7 @@
240
240
  />
241
241
  <base-panel-input
242
242
  v-model="productConditionsForm.typeAnnuityInsurance"
243
- :value="productConditionsForm.typeAnnuityInsurance.nameRu"
243
+ :value="productConditionsForm.typeAnnuityInsurance?.nameRu"
244
244
  :readonly="isDisabled"
245
245
  :clearable="!isDisabled"
246
246
  :rules="$rules.objectRequired"
@@ -258,7 +258,7 @@
258
258
  />
259
259
  <base-panel-input
260
260
  v-model="productConditionsForm.periodAnnuityPayment"
261
- :value="productConditionsForm.periodAnnuityPayment.nameRu"
261
+ :value="productConditionsForm.periodAnnuityPayment?.nameRu"
262
262
  :readonly="isDisabled"
263
263
  :clearable="!isDisabled"
264
264
  :rules="$rules.objectRequired"
@@ -264,3 +264,13 @@ export const changeBridge = async (toBridge: 'efo' | 'lka', token: string) => {
264
264
  }
265
265
  window.open(`${bridgeUrl}/#/Token?token=${token}`, '_blank');
266
266
  };
267
+
268
+ export const getFirstDayOfMonth = (year: number, month: number) => {
269
+ const date = new Date();
270
+ return new Date(year, month, 1, (date.getTimezoneOffset() / 60) * -1).toISOString();
271
+ };
272
+
273
+ export const getLastDayOfMonth = (year: number, month: number) => {
274
+ const date = new Date();
275
+ return new Date(year, month + 1, 0, (date.getTimezoneOffset() / 60) * -1).toISOString();
276
+ };
@@ -1,8 +1,8 @@
1
1
  export class Styles {
2
2
  // Base
3
- whiteBg: string = 'bg-white';
4
- whiteText: string = 'text-white';
5
- blackText: string = 'text-black';
3
+ whiteBg: string = 'bg-[#FFF]';
4
+ whiteText: string = '!text-[#FFF]';
5
+ blackText: string = '!text-[#000]';
6
6
  bodyBg: string = '!bg-[#F5F5F5]';
7
7
 
8
8
  whiteTextHover: string = 'hover:text-[#FFFFFF]';
@@ -11,7 +11,7 @@ export class Styles {
11
11
  blueBgHover: string = 'hover:bg-[#96abd6]';
12
12
  blueBgLight: string = 'bg-[#F3F6FC]';
13
13
  blueBgLightHover: string = 'hover:bg-[#f5f8fd]';
14
- blueText: string = 'text-[#A0B3D8]';
14
+ blueText: string = '!text-[#A0B3D8]';
15
15
  blueTextLight: string = 'text-[#F3F6FC]';
16
16
 
17
17
  // Green
@@ -23,13 +23,13 @@ export class Styles {
23
23
  greenBgLightHover: string = 'hover:bg-[#dbf0e4]';
24
24
 
25
25
  // Yellow
26
- yellowText: string = 'text-[#FAB31C]';
26
+ yellowText: string = '!text-[#FAB31C]';
27
27
  yellowBg: string = 'bg-[#FAB31C]';
28
28
  yellowBgHover: string = 'hover:bg-[#FAB31C]';
29
29
 
30
30
  // Grey
31
31
  greyBg: string = 'bg-[#B8B8B8]';
32
- greyText: string = 'text-[#B8B8B8]';
32
+ greyText: string = '!text-[#B8B8B8]';
33
33
  greyTextLight: string = 'text-[#B8B8B8]';
34
34
  greyIcon: string = 'text-[#DADADA]';
35
35
  greyIconBg: string = 'bg-[#DADADA]';
@@ -39,15 +39,22 @@ export class Styles {
39
39
  greyTextDark: string = 'text-[#9197A1]';
40
40
 
41
41
  // Red
42
- redText: string = 'text-[#FD2D39]';
42
+ redText: string = '!text-[#FD2D39]';
43
43
  redBg: string = 'bg-[#FF897D]';
44
44
  redBgHover: string = 'hover:bg-[#ff9b91]';
45
45
  // Error
46
46
  errorBg: string = 'bg-[#FF5449]';
47
- errorText: string = 'text-[#FF5449]';
47
+ errorText: string = '!text-[#FF5449]';
48
48
 
49
49
  // Border
50
50
  rounded: string = 'rounded-[8px]';
51
+ roundedT: string = 'rounded-t-[8px]';
52
+ roundedB: string = 'rounded-b-[8px]';
53
+ blueBorder: string = 'border-[1px] border-[#A0B3D8]';
54
+ blueLightBorder: string = 'border-[1px] border-[#F3F6FC]';
55
+ greenBorder: string = 'border-[1px] border-[#009C73]';
56
+ redBorder: string = 'border-[1px] border-[#FD2D39]';
57
+ yellowBorder: string = 'border-[1px] border-[#FAB31C]';
51
58
 
52
59
  // Text
53
60
  textSimple: string = 'text-[14px] leading-5';
@@ -63,6 +70,7 @@ export class Styles {
63
70
  redBtn: string;
64
71
  yellowBtn: string;
65
72
  whiteBtn: string;
73
+ whiteBtnBlueBr: string;
66
74
  blueLightBtn: string;
67
75
  greenLightBtn: string;
68
76
 
@@ -70,9 +78,10 @@ export class Styles {
70
78
  flexColNav: string;
71
79
  emptyBlockCol: string;
72
80
  scrollPage: string;
81
+ flexCenter: string = 'flex items-center justify-center';
73
82
 
74
83
  // Muted or disabled
75
- mutedText: string = 'text-[#99A3B3]';
84
+ mutedText: string = '!text-[#99A3B3]';
76
85
  disabled: string = 'cursor-not-allowed opacity-50';
77
86
 
78
87
  constructor() {
@@ -81,6 +90,7 @@ export class Styles {
81
90
  this.redBtn = `${this.redBg} ${this.whiteText} ${this.textTitle} ${this.rounded} w-full ${this.redBgHover}`;
82
91
  this.yellowBtn = `${this.yellowBg} ${this.whiteText} ${this.textTitle} ${this.rounded} w-full ${this.yellowBgHover}`;
83
92
  this.blueBtn = `${this.blueBg} ${this.whiteText} ${this.textTitle} ${this.rounded} w-full ${this.blueBgHover}`;
93
+ this.whiteBtnBlueBr = `${this.whiteBg} ${this.blueText} ${this.textTitle} ${this.rounded} w-full ${this.blueBgLightHover} ${this.blueBorder}`;
84
94
  this.whiteBtn = ` ${this.blackText} ${this.textTitle} ${this.rounded} w-full ${this.blueLightBgHover}`;
85
95
  this.blueLightBtn = `${this.blueBgLight} ${this.greyTextLight} ${this.textTitle} ${this.rounded} w-full ${this.blueBgLightHover}`;
86
96
  this.greenLightBtn = `${this.greenBgLight} ${this.greenText} ${this.textTitle} ${this.rounded} w-full ${this.greenBgLightHover}`;
@@ -72,4 +72,7 @@ label .v-label .v-field-label,
72
72
  /* line-height: v-bind('dataStore.fontSize*1 + "px"') !important; */
73
73
  padding-bottom: 3px;
74
74
  }
75
+ .v-card {
76
+ border-radius: 8px !important;
77
+ }
75
78
  </style>
package/locales/ru.json CHANGED
@@ -299,6 +299,8 @@
299
299
  "userFullName": "Исполнитель"
300
300
  },
301
301
  "agent": {
302
+ "currency": "Валюта",
303
+ "programName": "Программа",
302
304
  "menu": "Меню",
303
305
  "main": "Главное",
304
306
  "reports": "Отчеты",
@@ -311,6 +313,7 @@
311
313
  "agentsInfo": "Сведения о страховых агентах",
312
314
  "personalData": "Личные данные",
313
315
  "info": "Данные об агенте",
316
+ "information": "Сведения",
314
317
  "about": "Сведения об Агенте",
315
318
  "level": "Уровень",
316
319
  "subAgents": "Суб-агенты",
@@ -318,10 +321,12 @@
318
321
  "myContracts": "Оформлено договоров",
319
322
  "nextLevel": "Следующий уровень {text}",
320
323
  "leftMy": "Осталось оформить лично",
324
+ "leftGroup": "Осталось оформить группой",
321
325
  "leftAll": "Осталось оформить всего",
322
326
  "donePolicies": "Оформлено полисов",
323
327
  "successStat": "Статистика успешных сделок",
324
328
  "doneMy": "Оформлено лично",
329
+ "doneGroup": "Оформлено группой",
325
330
  "doneAll": "Всего оформлено",
326
331
  "progressAll": "Прогресс за все время работы",
327
332
  "subagentsCalled": "Привлечено суб-агентов",
@@ -336,6 +341,7 @@
336
341
  "reportType": "Тип отчета",
337
342
  "reportFile": "Файл отчета",
338
343
  "reportDate": "Отчетная дата",
344
+ "agentPolicy": "Личные продажи",
339
345
  "paymentJournal": "Журнал оплаты",
340
346
  "journal": {
341
347
  "incomeKz": "Приходы KZT",
@@ -348,6 +354,7 @@
348
354
  "unallocation": {
349
355
  "paymentId": "ID платежа",
350
356
  "voucherNumber": "Номер ваучера",
357
+ "voucherSum": "Сумма",
351
358
  "voucherDate": "Дата ваучера",
352
359
  "voucherStatus": "Статус ваучера"
353
360
  },
@@ -385,6 +392,12 @@
385
392
  "new": "Подать заявление"
386
393
  },
387
394
  "labels": {
395
+ "inAll": "Всего",
396
+ "sorting": "Сортировка",
397
+ "premiumSum": "Сумма премии",
398
+ "department": "Департамент",
399
+ "fromDate": "Дата с",
400
+ "toDate": "Дата по",
388
401
  "newVersion": "Новая версия",
389
402
  "code": "Код",
390
403
  "codes": "Коды",
@@ -476,6 +489,7 @@
476
489
  "rules": {
477
490
  "required": "Поле обязательно",
478
491
  "cyrillic": "Поле должно содержать только кириллические символы",
492
+ "latin": "Поле должно содержать только латинские символы",
479
493
  "email": "Неправильный адрес электронной почты",
480
494
  "numbers": "Поле должно содержать только цифры",
481
495
  "numbersSymbols": "Поле должно содержать цифры",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hl-core",
3
- "version": "0.0.9-beta.6",
3
+ "version": "0.0.9-beta.8",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "main": "nuxt.config.ts",
@@ -1330,6 +1330,11 @@ export const useDataStore = defineStore('data', {
1330
1330
  getNumberWithSpaces(n: any) {
1331
1331
  return n === null ? null : Number((typeof n === 'string' ? n : n.toFixed().toString()).replace(/[^0-9]+/g, '')).toLocaleString('ru');
1332
1332
  },
1333
+ getNumberWithSpacesAfterComma(n: number) {
1334
+ let parts = n.toFixed(2).split('.');
1335
+ parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ' ');
1336
+ return parts.join(',');
1337
+ },
1333
1338
  getNumberWithDot(n: any) {
1334
1339
  return n === null ? null : n.toLocaleString('ru', { maximumFractionDigits: 2, minimumFractionDigits: 2 }).replace(/,/g, '.');
1335
1340
  },
package/store/rules.ts CHANGED
@@ -96,7 +96,11 @@ export const rules = {
96
96
  date: [
97
97
  (v: any) => {
98
98
  if (v === null || v == '') return true;
99
- if (/^(0[1-9]|1[0-9]|2[0-9]|3[0-1])(-|\.)(0[1-9]|1[0-2])(-|\.)(19[0-9]{2}|20[0-9][0-9])$/.test(v)) {
99
+ if (
100
+ /^(?:(?:(?:(?:0[1-9]|1[0-9]|2[0-8])[\.](?:0[1-9]|1[012]))|(?:(?:29|30|31)[\.](?:0[13578]|1[02]))|(?:(?:29|30)[\.](?:0[4,6,9]|11)))[\.](?:19|[2-3][0-9])\d\d)|(?:29[\.]02[\.](?:19|[2-3][0-9])(?:00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96))$/.test(
101
+ v,
102
+ )
103
+ ) {
100
104
  return true;
101
105
  } else {
102
106
  return t('rules.date');
@@ -108,8 +112,13 @@ export const rules = {
108
112
  age18ByDate: [(v: any) => Math.abs(new Date(Date.now() - new Date(formatDate(v)!).getTime()).getUTCFullYear() - 1970) >= 18 || t('rules.age18')],
109
113
  birthDate: [
110
114
  (v: any) => {
115
+ if (v === null || v == '') return true;
111
116
  if (new Date(formatDate(v)!) > new Date(Date.now())) return t('rules.exceedDate');
112
- if (/^(0[1-9]|1[0-9]|2[0-9]|3[0-1])(-|\.)(0[1-9]|1[0-2])(-|\.)(19[0-9]{2}|20[0-9][0-9])$/.test(v)) {
117
+ if (
118
+ /^(?:(?:(?:(?:0[1-9]|1[0-9]|2[0-8])[\.](?:0[1-9]|1[012]))|(?:(?:29|30|31)[\.](?:0[13578]|1[02]))|(?:(?:29|30)[\.](?:0[4,6,9]|11)))[\.](?:19|[2-3][0-9])\d\d)|(?:29[\.]02[\.](?:19|[2-3][0-9])(?:00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96))$/.test(
119
+ v,
120
+ )
121
+ ) {
113
122
  return true;
114
123
  } else {
115
124
  return t('rules.date');