hl-core 0.0.7-beta.1 → 0.0.7-beta.11
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/.prettierrc +2 -1
- package/api/index.ts +545 -0
- package/api/interceptors.ts +38 -0
- package/components/Button/Btn.vue +57 -0
- package/components/Button/BtnIcon.vue +47 -0
- package/components/Button/SortArrow.vue +21 -0
- package/components/Complex/Content.vue +5 -0
- package/components/Complex/ContentBlock.vue +5 -0
- package/components/Complex/Page.vue +43 -0
- package/components/Input/FormInput.vue +136 -0
- package/components/Input/RoundedInput.vue +136 -0
- package/components/Layout/Dialog.vue +84 -0
- package/components/Layout/Drawer.vue +42 -0
- package/components/Layout/Header.vue +48 -0
- package/components/Layout/Loader.vue +35 -0
- package/components/Layout/SettingsPanel.vue +33 -0
- package/components/Menu/MenuNav.vue +125 -0
- package/components/Menu/MenuNavItem.vue +27 -0
- package/components/Panel/PanelItem.vue +5 -0
- package/components/Transitions/FadeTransition.vue +5 -0
- package/composables/axios.ts +11 -0
- package/composables/classes.ts +1081 -0
- package/composables/constants.ts +61 -0
- package/composables/index.ts +133 -2
- package/composables/models.ts +43 -0
- package/composables/styles.ts +34 -8
- package/layouts/clear.vue +3 -0
- package/layouts/default.vue +37 -0
- package/layouts/full.vue +6 -0
- package/nuxt.config.ts +23 -4
- package/package.json +15 -4
- package/pages/500.vue +48 -0
- package/plugins/helperFunctionsPlugins.ts +11 -2
- package/plugins/storePlugin.ts +0 -2
- package/plugins/vuetifyPlugin.ts +10 -0
- package/store/data.store.js +2632 -6
- package/store/form.store.js +8 -0
- package/store/messages.ts +118 -27
- package/store/rules.js +7 -26
- package/tailwind.config.js +10 -0
- package/components/Button/GreenBtn.vue +0 -33
- package/store/app.store.js +0 -12
package/store/messages.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export const t = (whichText: string) => {
|
|
1
|
+
export const t = (whichText: string): string => {
|
|
2
2
|
const keys = whichText.includes('.') ? whichText.split('.') : whichText;
|
|
3
3
|
if (typeof keys === typeof []) {
|
|
4
4
|
const firstKey = keys[0];
|
|
5
5
|
const secondKey = keys[1];
|
|
6
6
|
const firstObject = messages.ru[firstKey as keyof typeof messages.ru];
|
|
7
|
-
return firstObject[secondKey as keyof typeof firstObject];
|
|
7
|
+
return firstObject[secondKey as keyof typeof firstObject] as string;
|
|
8
8
|
} else {
|
|
9
|
-
return messages.ru[keys as keyof typeof messages.ru];
|
|
9
|
+
return messages.ru[keys as keyof typeof messages.ru] as string;
|
|
10
10
|
}
|
|
11
11
|
};
|
|
12
12
|
|
|
@@ -30,14 +30,11 @@ export const messages = {
|
|
|
30
30
|
},
|
|
31
31
|
toaster: {
|
|
32
32
|
ESBDErrorMessage: 'Введены не корректные данные по этому ИИН',
|
|
33
|
-
phoneNotFoundInBMG:
|
|
34
|
-
|
|
35
|
-
errorSumOrPercentage:
|
|
36
|
-
'Процент от суммы выплат не может быть меньше или больше 100',
|
|
33
|
+
phoneNotFoundInBMG: 'Введите номер зарегистрированный в БМГ или зарегистрируйте клиента в БМГ',
|
|
34
|
+
errorSumOrPercentage: 'Процент от суммы выплат не может быть меньше или больше 100',
|
|
37
35
|
fileWasDeleted: 'Файл успешно удален',
|
|
38
36
|
attachManagerError: 'Прикрепите заявку менеджеру',
|
|
39
|
-
viewErrorText:
|
|
40
|
-
'Вы сейчас находитесь в режиме просмотра или у вас нет доступа',
|
|
37
|
+
viewErrorText: 'Вы сейчас находитесь в режиме просмотра или у вас нет доступа',
|
|
41
38
|
editModeText: 'Вы перешли в режим редактирования',
|
|
42
39
|
viewModeText: 'Вы перешли в режим просмотра',
|
|
43
40
|
noEditText: 'У вас нет доступа на редактирование',
|
|
@@ -51,8 +48,7 @@ export const messages = {
|
|
|
51
48
|
undefinedError: 'Что-то произошло не так',
|
|
52
49
|
noProductPermission: 'У вас нет доступа к данному продукту',
|
|
53
50
|
noStatementPermission: 'У вас нет доступа к данной заявке',
|
|
54
|
-
formFieldEmptyWarning:
|
|
55
|
-
'Вам нужно заполнить некоторые поля и сохранить участника',
|
|
51
|
+
formFieldEmptyWarning: 'Вам нужно заполнить некоторые поля и сохранить участника',
|
|
56
52
|
needToRunStatement: 'Нужно создать заявку',
|
|
57
53
|
shouldBeOneInsured: 'Нельзя удалить единственного застрахованного',
|
|
58
54
|
readyStatementMembers: 'Данные всех участников успешно сохранены',
|
|
@@ -71,11 +67,9 @@ export const messages = {
|
|
|
71
67
|
incorrectInput: 'Значение введено некорректно',
|
|
72
68
|
error: 'Произошла ошибка ',
|
|
73
69
|
applicationDeleted: 'Заявка удалена',
|
|
74
|
-
emptyProductConditions:
|
|
75
|
-
'Не заполнены данные условия продуктов и расчетов',
|
|
70
|
+
emptyProductConditions: 'Не заполнены данные условия продуктов и расчетов',
|
|
76
71
|
emptyHealthAnketa: 'Не заполнены данные анкеты по здоровью',
|
|
77
|
-
emptyCriticalAnketa:
|
|
78
|
-
'Не заполнены данные анкеты по критическому заболеванию застрахованного',
|
|
72
|
+
emptyCriticalAnketa: 'Не заполнены данные анкеты по критическому заболеванию застрахованного',
|
|
79
73
|
successOperation: 'Операция прошла успешно',
|
|
80
74
|
noAssignee: 'Нужно взять задачу в работу',
|
|
81
75
|
canDoOnlyAssignee: 'Задача в работе и у вас нету доступа',
|
|
@@ -88,8 +82,7 @@ export const messages = {
|
|
|
88
82
|
sendEverySeconds: 'СМС можно отправлять каждые { text } секунд ',
|
|
89
83
|
waitForClient: 'Ожидайте подтверждения клиента',
|
|
90
84
|
noSuchProduct: 'Ошибка при переходе: неправильная ссылка',
|
|
91
|
-
affiliationDocumentNotUploaded:
|
|
92
|
-
'Не прикреплен файл в решении андеррайтингового совета',
|
|
85
|
+
affiliationDocumentNotUploaded: 'Не прикреплен файл в решении андеррайтингового совета',
|
|
93
86
|
documentNumberWasNotFilled: 'Номер документа и дата не были заполнены',
|
|
94
87
|
valueShouldBeHigher: `Значение должно быть больше { text } процентов`,
|
|
95
88
|
valueShouldBeBetween: `Значение должно быть в промежутке от { floor } до { ceil } процентов`,
|
|
@@ -137,11 +130,12 @@ export const messages = {
|
|
|
137
130
|
toPayment: 'Перейти к оплате',
|
|
138
131
|
calcSum: 'Рассчитать сумму',
|
|
139
132
|
calcPremium: 'Рассчитать премию',
|
|
133
|
+
accept: 'Одобрить',
|
|
134
|
+
reject: 'Отказать',
|
|
140
135
|
},
|
|
141
136
|
error: {
|
|
142
137
|
title: 'Ошибка 404',
|
|
143
|
-
description:
|
|
144
|
-
'Страница, которую вы запрашиваете, не существует либо устарела.',
|
|
138
|
+
description: 'Страница, которую вы запрашиваете, не существует либо устарела.',
|
|
145
139
|
connectionLost: 'Нет подключения к Интернету',
|
|
146
140
|
checkConnection: 'Проверьте ваше подключение',
|
|
147
141
|
},
|
|
@@ -149,29 +143,91 @@ export const messages = {
|
|
|
149
143
|
title: 'Подтверждение',
|
|
150
144
|
exit: 'Вы действительно хотите выйти?',
|
|
151
145
|
exitApp: 'Вы действительно хотите выйти? Данные будут очищены.',
|
|
146
|
+
dataWillClear: 'Данные будут очищены',
|
|
152
147
|
cancel: 'Вы действительно хотите отменить заявку?',
|
|
153
148
|
clear: 'Вы действительно хотите очистить данные участника?',
|
|
154
149
|
delete: 'Вы действительно хотите удалить участника?',
|
|
155
150
|
sent: 'Ссылка была отправлена',
|
|
156
|
-
sentText:
|
|
157
|
-
'Ссылка была отправлена на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
151
|
+
sentText: 'Ссылка была отправлена на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
158
152
|
sentSMS: 'СМС был отправлен',
|
|
159
|
-
sentTextSMS:
|
|
160
|
-
'СМС был отправлен на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
153
|
+
sentTextSMS: 'СМС был отправлен на номер {phoneNumber}. Повторно можно отправить через {minutes}:{seconds} сек`',
|
|
161
154
|
deleteFile: 'Вы уверены что хотите удалить файл',
|
|
162
155
|
continue: 'Продолжить',
|
|
163
156
|
correctSum: 'Корректна ли сумма страховой премии?',
|
|
164
157
|
},
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
158
|
+
sign: {
|
|
159
|
+
chooseDoc: 'Выберите документы для подписание',
|
|
160
|
+
signed: 'Подписано ЭЦП',
|
|
161
|
+
chooseMethod: 'Выберите способ подписания',
|
|
162
|
+
downloadDoc: 'Скачать документ для подписи',
|
|
163
|
+
downloadSignedDoc: 'Загрузить Подписанный Документ',
|
|
164
|
+
signPaper: 'Подписать на бумажном носителе',
|
|
165
|
+
recipientNumber: 'Номер получателя ссылки',
|
|
166
|
+
signCloud: 'Подписать через облачную ЭЦП',
|
|
167
|
+
copyCloud: 'Скопировать ссылку на подпись через облачную ЭЦП',
|
|
168
|
+
codeSendNumber: 'Код отправлен на номер:',
|
|
169
|
+
codeFromSMS: 'Код из СМС',
|
|
170
|
+
signEgov: 'Подписать с помощью eGov mobile',
|
|
171
|
+
showQR: 'Показать QR-код',
|
|
172
|
+
timer: 'Вы создали счет на оплату, через 00:59 сек счет станет не активным',
|
|
168
173
|
},
|
|
174
|
+
questionnaireType: {
|
|
175
|
+
byHealth: 'Анкета по здоровью застрахованного',
|
|
176
|
+
byCritical: 'Анкета по критической болезни Застрахованного',
|
|
177
|
+
answerAllNo: 'Ответить везде Нет',
|
|
178
|
+
pleaseAnswer: 'Пожалуйста ответьте на { text } вопросов',
|
|
179
|
+
},
|
|
180
|
+
questionnaireHealth: 'Анкета по здоровью Застрахованного',
|
|
181
|
+
chooseAll: 'Выбрать все',
|
|
182
|
+
statement: 'Заявление',
|
|
183
|
+
policyholder: 'Страхователь',
|
|
184
|
+
insured: 'Застрахованный',
|
|
185
|
+
beneficiary: 'Выгодоприобретатель',
|
|
186
|
+
beneficialOwner: 'Бенефициарный собственник',
|
|
187
|
+
policyholdersRepresentativeTitle: 'Представитель страхователя',
|
|
188
|
+
productConditions: 'Условия продукта и расчеты',
|
|
189
|
+
underwriterDecision: 'Решение андеррайтингового совета',
|
|
190
|
+
recalculationInfo: 'Данные для перерасчета',
|
|
191
|
+
generalConditions: 'Основные условия страхования',
|
|
192
|
+
isPolicyholderInsured: 'Является ли страхователь застрахованным?',
|
|
193
|
+
isPolicyholderBeneficiary: 'Является ли страхователь выгодоприобретателем?',
|
|
194
|
+
hasRepresentative: 'Подписантом договора выступает представитель? ',
|
|
195
|
+
isActOwnBehalf: ' Клиент действует от своего имени и в своих интересах?',
|
|
196
|
+
coverPeriod: 'Срок',
|
|
197
|
+
requestedSumInsured: 'Запрашиваемая сумма',
|
|
198
|
+
insurancePremiumPerMonth: 'Премия в месяц',
|
|
169
199
|
agreement: 'Согласие',
|
|
200
|
+
clientsStatement: 'Заявление клиента',
|
|
201
|
+
document: 'Документ',
|
|
202
|
+
documents: 'Документы',
|
|
203
|
+
statementAndSurvey: 'Заявление и анкета',
|
|
204
|
+
underwriterDecisionDocument: '',
|
|
170
205
|
clientsCard: 'Карта клиента',
|
|
171
206
|
insuranceProduct: 'Страховой продукт',
|
|
172
207
|
historyStatementsAndStatuses: 'История заявок и статусы',
|
|
173
208
|
applicationNumber: 'Номер заявки: ',
|
|
174
209
|
operationList: 'Список операций',
|
|
210
|
+
payCalendar: 'Календарь платежей',
|
|
211
|
+
signedDoc: 'Подписанный докум (проект Байтерек)',
|
|
212
|
+
percent: 'Процент ',
|
|
213
|
+
chooseSource: 'Выберите источник данных',
|
|
214
|
+
sumAndPremium: `Сумма страховой премии {paymentPeriod}: {insurancePremiumPerMonth}₸\nЗапрашиваемая страховая сумма: {requestedSumInsured}₸`,
|
|
215
|
+
recalculation: 'Перерасчет',
|
|
216
|
+
survey: 'Анкета',
|
|
217
|
+
productConditionsForm: {
|
|
218
|
+
coverPeriod: 'Срок страхования (в годах)',
|
|
219
|
+
payPeriod: 'Период оплаты страховой премии',
|
|
220
|
+
processIndexRate: 'Запрашиваемый размер коэффициента индексации (от 3% до 7%)',
|
|
221
|
+
processPaymentPeriod: 'Периодичность оплаты страховой премии:',
|
|
222
|
+
requestedSumInsured: 'Запрашиваемая Страховая сумма',
|
|
223
|
+
insurancePremiumPerMonth: 'Размер страховой премии (тенге)',
|
|
224
|
+
hint: 'Сумма рассчитывается автоматически',
|
|
225
|
+
additional: 'Дополнительные условия страхования',
|
|
226
|
+
possibilityToChange: 'Возможность изменения страховой суммы и страховых взносов (индексация)',
|
|
227
|
+
conditions: 'Условия оплаты страховой премии',
|
|
228
|
+
processTariff: 'Тариф',
|
|
229
|
+
riskGroup: 'Группа риска',
|
|
230
|
+
},
|
|
175
231
|
history: {
|
|
176
232
|
addRegNumber: 'Номер',
|
|
177
233
|
number: 'Номер заявки',
|
|
@@ -182,6 +238,10 @@ export const messages = {
|
|
|
182
238
|
assignee: 'Исполнитель',
|
|
183
239
|
initiator: 'Инициатор',
|
|
184
240
|
reason: 'Причина',
|
|
241
|
+
dateCreated: 'Дата начала',
|
|
242
|
+
factEndDate: 'Дата завершения',
|
|
243
|
+
decision: 'Статус',
|
|
244
|
+
userFullName: 'Исполнитель',
|
|
185
245
|
},
|
|
186
246
|
labels: {
|
|
187
247
|
search: 'Поиск',
|
|
@@ -197,6 +257,11 @@ export const messages = {
|
|
|
197
257
|
userFullName: 'ФИО',
|
|
198
258
|
userRoles: 'Роли',
|
|
199
259
|
noUserRoles: 'Нет ролей',
|
|
260
|
+
welcome: 'Добро пожаловать',
|
|
261
|
+
information: 'Дополнительные данные',
|
|
262
|
+
policyNumber: 'Номер полиса',
|
|
263
|
+
statusCode: 'Статус заявки',
|
|
264
|
+
initiator: 'Инициатор',
|
|
200
265
|
},
|
|
201
266
|
placeholders: {
|
|
202
267
|
login: 'Логин',
|
|
@@ -224,8 +289,33 @@ export const messages = {
|
|
|
224
289
|
},
|
|
225
290
|
code: 'Код',
|
|
226
291
|
fontSize: 'Размер шрифта',
|
|
292
|
+
policyholdersRepresentative: {
|
|
293
|
+
name: 'ФИО',
|
|
294
|
+
PowerOfAttorney: 'Доверенность',
|
|
295
|
+
NameParentCase: 'ФИО представителя в родительском падеже',
|
|
296
|
+
basisDocKz: 'Действует на основании документа (каз)',
|
|
297
|
+
basisDocRu: 'Действует на основании документа (рус)',
|
|
298
|
+
basisDocRuParentCase: 'Действует на основании документа в родительском падеже (рус)',
|
|
299
|
+
numberDoc: 'Номер документа подтверждающий полномочия',
|
|
300
|
+
numberVisa: 'Номер визы или миграционный карточки',
|
|
301
|
+
numberLicense: 'Номер лицензии',
|
|
302
|
+
confirmAuthority: 'Лицо, подписавшего документ, подтверждающий полномочия, -Нотариус?',
|
|
303
|
+
documentIssuers: 'Наименование органа, выдавшего документ',
|
|
304
|
+
},
|
|
227
305
|
payment: {
|
|
228
306
|
method: 'Способ оплаты',
|
|
307
|
+
chooseMethod: 'Выберите способ оплаты',
|
|
308
|
+
payConditions: 'Условия оплаты',
|
|
309
|
+
issueInvoice: 'Выставить счет на оплату',
|
|
310
|
+
copyBill: 'Скопировать счет на оплату',
|
|
311
|
+
sendBill: 'Отправить счет на оплату через СМС',
|
|
312
|
+
anyCard: 'Онлайн картой любого банка',
|
|
313
|
+
terminalHalyk: 'Через терминал Halyk Bank',
|
|
314
|
+
homebankContractNumber: 'Через номер договора в Homebank',
|
|
315
|
+
homebankIIN: 'Через ИИН в Homebank',
|
|
316
|
+
accountingDepartment: 'Через бухгалтерию организации',
|
|
317
|
+
kaspi: 'Через Kaspi.kz',
|
|
318
|
+
recipientNumber: 'Номер получателя СМС',
|
|
229
319
|
},
|
|
230
320
|
form: {
|
|
231
321
|
name: 'Наименование',
|
|
@@ -272,6 +362,7 @@ export const messages = {
|
|
|
272
362
|
signOfIPDL: 'Признак ИПДЛ',
|
|
273
363
|
countryOfCitizenship: 'Страна гражданства',
|
|
274
364
|
countryOfTaxResidency: 'Страна налогового резиденства',
|
|
365
|
+
addTaxResidency: 'Указать если налоговое резиденство выбрано другое',
|
|
275
366
|
economySectorCode: 'Код сектора экономики',
|
|
276
367
|
contactsData: 'Контакты',
|
|
277
368
|
phoneNumber: 'Номер телефона',
|
|
@@ -281,7 +372,7 @@ export const messages = {
|
|
|
281
372
|
},
|
|
282
373
|
agreementBlock: {
|
|
283
374
|
title: 'Согласие на сбор и обработку пресональных данных',
|
|
284
|
-
text: `Я,
|
|
375
|
+
text: `Я, предоставляю АО «Халык-Life» (БИН 051140004354) и (или) организациям,
|
|
285
376
|
входящими в состав финансовой Группы «Халык» (Акционеру АО «Халык-Life» (БИН 940140000385) и его дочерним организациям),
|
|
286
377
|
перестраховочным организациям, организации по формированию и ведению базы данных по страхованию (БИН 120940011577), юридическому лицу,
|
|
287
378
|
осуществляющему деятельность по привлечению пенсионных взносов и пенсионным выплатам (БИН 971240002115), юридическому лицу,
|
package/store/rules.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { t } from './messages';
|
|
2
2
|
|
|
3
3
|
export const rules = {
|
|
4
|
-
recalculationMultiply: [
|
|
5
|
-
v =>
|
|
6
|
-
(v !== null && v !== '' && v >= 100) ||
|
|
7
|
-
t('toaster.valueShouldBeHigher', { text: 100 }),
|
|
8
|
-
],
|
|
4
|
+
recalculationMultiply: [v => (v !== null && v !== '' && v >= 100) || t('toaster.valueShouldBeHigher', { text: 100 })],
|
|
9
5
|
recalculationAdditive: [
|
|
10
6
|
v =>
|
|
11
7
|
(v !== null && v !== '' && v <= 100 && v >= 0) ||
|
|
@@ -34,9 +30,7 @@ export const rules = {
|
|
|
34
30
|
return t('rules.required');
|
|
35
31
|
},
|
|
36
32
|
],
|
|
37
|
-
cyrillic: [
|
|
38
|
-
v => v === null || /^[\u0400-\u04FF ]+$/.test(v) || t('rules.cyrillic'),
|
|
39
|
-
],
|
|
33
|
+
cyrillic: [v => v === null || /^[\u0400-\u04FF ]+$/.test(v) || t('rules.cyrillic')],
|
|
40
34
|
email: [
|
|
41
35
|
v => {
|
|
42
36
|
if (v === '' || v === null) {
|
|
@@ -45,9 +39,7 @@ export const rules = {
|
|
|
45
39
|
if (
|
|
46
40
|
String(v)
|
|
47
41
|
.toLowerCase()
|
|
48
|
-
.match(
|
|
49
|
-
/^(([^<>()[\]\\.,;=\s@"]+(\.[^<>()[\]\\.,;=\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
|
|
50
|
-
)
|
|
42
|
+
.match(/^(([^<>()[\]\\.,;=\s@"]+(\.[^<>()[\]\\.,;=\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)
|
|
51
43
|
) {
|
|
52
44
|
return true;
|
|
53
45
|
} else {
|
|
@@ -57,9 +49,7 @@ export const rules = {
|
|
|
57
49
|
},
|
|
58
50
|
],
|
|
59
51
|
numbers: [v => /^[0-9]+$/.test(v) || t('rules.numbers')],
|
|
60
|
-
numbersSymbols: [
|
|
61
|
-
v => /^([0-9])|(\W|_)+$/.test(v) || t('rules.numbersSymbols'),
|
|
62
|
-
],
|
|
52
|
+
numbersSymbols: [v => /^([0-9])|(\W|_)+$/.test(v) || t('rules.numbersSymbols')],
|
|
63
53
|
ageExceeds: [v => v < 50 || t('rules.ageExceeds')],
|
|
64
54
|
sums: [
|
|
65
55
|
v => {
|
|
@@ -94,11 +84,7 @@ export const rules = {
|
|
|
94
84
|
date: [
|
|
95
85
|
v => {
|
|
96
86
|
if (v === null || v == '') return true;
|
|
97
|
-
if (
|
|
98
|
-
/^(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(
|
|
99
|
-
v,
|
|
100
|
-
)
|
|
101
|
-
) {
|
|
87
|
+
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)) {
|
|
102
88
|
return true;
|
|
103
89
|
} else {
|
|
104
90
|
return t('rules.date');
|
|
@@ -108,13 +94,8 @@ export const rules = {
|
|
|
108
94
|
age: [v => /^\d+$/.test(v) || t('rules.age')],
|
|
109
95
|
birthDate: [
|
|
110
96
|
v => {
|
|
111
|
-
if (new Date(formatDate(v)) > new Date(Date.now()))
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
/^(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(
|
|
115
|
-
v,
|
|
116
|
-
)
|
|
117
|
-
) {
|
|
97
|
+
if (new Date(formatDate(v)) > new Date(Date.now())) return t('rules.exceedDate');
|
|
98
|
+
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)) {
|
|
118
99
|
return true;
|
|
119
100
|
} else {
|
|
120
101
|
return t('rules.date');
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<button
|
|
3
|
-
v-if="!isLink"
|
|
4
|
-
type="button"
|
|
5
|
-
@click="$emit('clicked')"
|
|
6
|
-
:class="[
|
|
7
|
-
classes,
|
|
8
|
-
$libStyles.greenBtn,
|
|
9
|
-
$libStyles[`btnH${$capitalize(size)}`],
|
|
10
|
-
]"
|
|
11
|
-
>
|
|
12
|
-
{{ text }}
|
|
13
|
-
</button>
|
|
14
|
-
</template>
|
|
15
|
-
|
|
16
|
-
<script>
|
|
17
|
-
export default {
|
|
18
|
-
props: {
|
|
19
|
-
text: {
|
|
20
|
-
type: String,
|
|
21
|
-
default: 'Кнопка',
|
|
22
|
-
},
|
|
23
|
-
size: {
|
|
24
|
-
type: String,
|
|
25
|
-
default: 'md',
|
|
26
|
-
},
|
|
27
|
-
classes: {
|
|
28
|
-
type: String,
|
|
29
|
-
default: '',
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
</script>
|