hl-core 0.0.7-beta.2 → 0.0.7-beta.20
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 +295 -20
- package/api/interceptors.ts +10 -1
- package/components/Button/Btn.vue +7 -2
- package/components/Button/BtnIcon.vue +47 -0
- package/components/Complex/Content.vue +1 -1
- package/components/Complex/ContentBlock.vue +5 -0
- package/components/Complex/Page.vue +13 -2
- package/components/{Layout → Dialog}/Dialog.vue +7 -11
- package/components/Dialog/FamilyDialog.vue +39 -0
- package/components/Form/Documents.vue +107 -0
- package/components/Form/FormBlock.vue +114 -0
- package/components/Form/FormSection.vue +18 -0
- package/components/Form/FormTextSection.vue +20 -0
- package/components/Form/FormToggle.vue +41 -0
- package/components/Form/MemberForm.vue +1132 -0
- package/components/Form/ProductConditions.vue +343 -0
- package/components/Form/ProductConditionsBlock.vue +68 -0
- package/components/Input/EmptyFormField.vue +5 -0
- package/components/Input/FileInput.vue +71 -0
- package/components/Input/FormInput.vue +170 -0
- package/components/Input/PanelInput.vue +132 -0
- package/components/Input/RoundedInput.vue +39 -36
- package/components/Layout/Drawer.vue +42 -0
- package/components/Layout/Header.vue +25 -11
- package/components/Layout/Loader.vue +9 -6
- package/components/Layout/SettingsPanel.vue +48 -0
- package/components/List/ListEmpty.vue +22 -0
- package/components/Menu/MenuNav.vue +70 -30
- package/components/Menu/MenuNavItem.vue +8 -1
- package/components/Panel/PanelItem.vue +5 -0
- package/components/Panel/PanelSelectItem.vue +20 -0
- package/components/Transitions/FadeTransition.vue +5 -0
- package/composables/classes.ts +401 -201
- package/composables/constants.ts +27 -12
- package/composables/index.ts +72 -35
- package/composables/styles.ts +31 -7
- package/layouts/clear.vue +1 -1
- package/layouts/default.vue +72 -6
- package/layouts/full.vue +6 -0
- package/nuxt.config.ts +5 -2
- package/package.json +17 -11
- package/pages/500.vue +85 -0
- package/plugins/helperFunctionsPlugins.ts +10 -2
- package/plugins/storePlugin.ts +6 -5
- package/store/data.store.js +1871 -526
- package/store/member.store.ts +291 -0
- package/store/messages.ts +152 -34
- package/store/rules.js +26 -28
- package/tailwind.config.js +10 -0
- package/types/index.ts +120 -0
- package/models/index.ts +0 -23
- /package/store/{form.store.js → form.store.ts} +0 -0
package/.prettierrc
CHANGED
package/api/index.ts
CHANGED
|
@@ -7,21 +7,21 @@ enum Methods {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export class ApiClass {
|
|
10
|
-
baseURL: string
|
|
11
|
-
|
|
12
|
-
this.baseURL = baseURL;
|
|
13
|
-
}
|
|
10
|
+
private readonly baseURL: string = import.meta.env.VITE_BASE_URL as string;
|
|
11
|
+
private readonly productUrl: string = import.meta.env.VITE_PRODUCT_URL as string;
|
|
14
12
|
|
|
15
13
|
private async axiosCall(config: AxiosRequestConfig) {
|
|
16
|
-
const
|
|
17
|
-
|
|
14
|
+
const dataStore = useDataStore();
|
|
15
|
+
if ((dataStore.isEFO && this.baseURL) || (!dataStore.isEFO && this.baseURL && this.productUrl)) {
|
|
16
|
+
const { data } = await useAxios(this.baseURL as string).request(config);
|
|
17
|
+
return data;
|
|
18
|
+
} else {
|
|
19
|
+
console.error('No Axios baseURL or productURL');
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
18
22
|
}
|
|
19
23
|
|
|
20
|
-
async loginUser(data: {
|
|
21
|
-
login: string;
|
|
22
|
-
password: string;
|
|
23
|
-
numAttempt: number;
|
|
24
|
-
}) {
|
|
24
|
+
async loginUser(data: { login: string; password: string; numAttempt: number }): Promise<{ refreshToken: string; accessToken: string }> {
|
|
25
25
|
return this.axiosCall({
|
|
26
26
|
method: Methods.POST,
|
|
27
27
|
url: '/identity/api/Account/login',
|
|
@@ -29,13 +29,7 @@ export class ApiClass {
|
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
async getNewAccessToken({
|
|
33
|
-
refreshToken,
|
|
34
|
-
accessToken,
|
|
35
|
-
}: {
|
|
36
|
-
refreshToken: string;
|
|
37
|
-
accessToken: string;
|
|
38
|
-
}) {
|
|
32
|
+
async getNewAccessToken({ refreshToken, accessToken }: { refreshToken: string; accessToken: string }): Promise<{ refreshToken: string; accessToken: string }> {
|
|
39
33
|
return this.axiosCall({
|
|
40
34
|
method: Methods.POST,
|
|
41
35
|
url: '/identity/api/Account/refresh',
|
|
@@ -70,6 +64,13 @@ export class ApiClass {
|
|
|
70
64
|
});
|
|
71
65
|
}
|
|
72
66
|
|
|
67
|
+
async getAdditionalTaxCountries() {
|
|
68
|
+
return this.axiosCall({
|
|
69
|
+
method: Methods.GET,
|
|
70
|
+
url: '/Ekk/api/Contragentinsis/DictionaryItems/Questionary?filter=507777',
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
73
74
|
// Область
|
|
74
75
|
async getStates() {
|
|
75
76
|
return this.axiosCall({
|
|
@@ -157,6 +158,49 @@ export class ApiClass {
|
|
|
157
158
|
});
|
|
158
159
|
}
|
|
159
160
|
|
|
161
|
+
async definedAnswers(filter: string) {
|
|
162
|
+
return this.axiosCall({
|
|
163
|
+
method: Methods.GET,
|
|
164
|
+
url: `/ekk/api/Contragentinsis/DictionaryItems/Questionary?filter=${filter}`,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
async setSurvey(surveyData: any) {
|
|
169
|
+
return this.axiosCall({
|
|
170
|
+
method: Methods.POST,
|
|
171
|
+
data: surveyData,
|
|
172
|
+
url: `/${this.productUrl}/api/Application/SetAnketa`,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
async getQuestionRefs(id: string | number) {
|
|
177
|
+
return this.axiosCall({
|
|
178
|
+
method: Methods.GET,
|
|
179
|
+
url: `/Ekk/api/Contragentinsis/DictionaryItems/Questionary?filter=${id}`,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async getProcessIndexRate(processCode: string | number) {
|
|
184
|
+
return this.axiosCall({
|
|
185
|
+
method: Methods.GET,
|
|
186
|
+
url: `/Arm/api/Dictionary/ProcessIndexRate/${processCode}`,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async getAdditionalInsuranceTermsAnswers(processCode: string | number, questionId: string) {
|
|
191
|
+
return this.axiosCall({
|
|
192
|
+
method: Methods.GET,
|
|
193
|
+
url: `/Arm/api/Dictionary/ProcessCoverTypeSum/${processCode}/${questionId}`,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
async getProcessPaymentPeriod(processCode: string | number) {
|
|
198
|
+
return this.axiosCall({
|
|
199
|
+
method: Methods.GET,
|
|
200
|
+
url: `/Arm/api/Dictionary/ProcessPaymentPeriod/${processCode}`,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
160
204
|
async getContragentById(id: any) {
|
|
161
205
|
return this.axiosCall({
|
|
162
206
|
method: Methods.GET,
|
|
@@ -218,7 +262,7 @@ export class ApiClass {
|
|
|
218
262
|
});
|
|
219
263
|
}
|
|
220
264
|
|
|
221
|
-
async getTaskList(data: any) {
|
|
265
|
+
async getTaskList(data: any): Promise<{ items: TaskListItem[]; totalItems: number }> {
|
|
222
266
|
return this.axiosCall({
|
|
223
267
|
method: Methods.POST,
|
|
224
268
|
url: `/Arm/api/Bpm/TaskList`,
|
|
@@ -226,7 +270,7 @@ export class ApiClass {
|
|
|
226
270
|
});
|
|
227
271
|
}
|
|
228
272
|
|
|
229
|
-
async getProcessHistory(id:
|
|
273
|
+
async getProcessHistory(id: string): Promise<TaskHistory[]> {
|
|
230
274
|
return this.axiosCall({
|
|
231
275
|
url: `/Arm/api/Bpm/GetProcessHistory?processInstanceId=${id}`,
|
|
232
276
|
});
|
|
@@ -283,6 +327,237 @@ export class ApiClass {
|
|
|
283
327
|
return this.axiosCall({
|
|
284
328
|
method: Methods.GET,
|
|
285
329
|
url: '/Arm/api/Bpm/ProcessList',
|
|
330
|
+
timeout: 10000,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
async startApplication(data: any) {
|
|
335
|
+
return this.axiosCall({
|
|
336
|
+
method: Methods.POST,
|
|
337
|
+
url: `/${this.productUrl}/api/Application/StartApplication`,
|
|
338
|
+
data: data,
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
async getApplicationData(id: string) {
|
|
343
|
+
return this.axiosCall({
|
|
344
|
+
url: `/${this.productUrl}/api/Application/applicationData?Id=${id} `,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
async getCalculation(id: string) {
|
|
349
|
+
return this.axiosCall({
|
|
350
|
+
method: Methods.POST,
|
|
351
|
+
url: `/${this.productUrl}/api/Application/Calculator?processInstanceId=${id}`,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
async setApplication(data: any) {
|
|
356
|
+
return this.axiosCall({
|
|
357
|
+
method: Methods.POST,
|
|
358
|
+
url: `/${this.productUrl}/api/Application/SetApplicationData`,
|
|
359
|
+
data,
|
|
360
|
+
responseType: 'blob',
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
async generatePdfDocument(data: any) {
|
|
365
|
+
return await this.axiosCall({
|
|
366
|
+
method: Methods.POST,
|
|
367
|
+
url: `/Arm/api/Bpm/GeneratePdfDocument`,
|
|
368
|
+
responseType: 'blob',
|
|
369
|
+
data: data,
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
async deleteFile(data: any) {
|
|
374
|
+
return this.axiosCall({
|
|
375
|
+
method: Methods.POST,
|
|
376
|
+
url: '/Arm/api/File/DeleteFiles',
|
|
377
|
+
data: data,
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
async uploadFiles(data: any) {
|
|
382
|
+
return this.axiosCall({
|
|
383
|
+
method: Methods.POST,
|
|
384
|
+
url: '/Arm/api/File/UploadFiles',
|
|
385
|
+
headers: {
|
|
386
|
+
'Content-Type': 'multipart/form-data',
|
|
387
|
+
},
|
|
388
|
+
data: data,
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
async sendTask(data: any) {
|
|
393
|
+
return this.axiosCall({
|
|
394
|
+
method: Methods.POST,
|
|
395
|
+
url: `/${this.productUrl}/api/Application/SendTask`,
|
|
396
|
+
data: data,
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
async setMember(whichMember: string, data: any) {
|
|
401
|
+
return this.axiosCall({
|
|
402
|
+
method: Methods.POST,
|
|
403
|
+
url: `/Arm/api/BpmMembers/Set${whichMember}`,
|
|
404
|
+
data: data,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
async deleteMember(whichMember: string, id: number | string) {
|
|
409
|
+
return this.axiosCall({
|
|
410
|
+
method: Methods.POST,
|
|
411
|
+
url: `/Arm/api/BpmMembers/Delete${whichMember}/${id}`,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
async getInvoiceData(processInstanceId: string) {
|
|
416
|
+
return this.axiosCall({
|
|
417
|
+
method: Methods.GET,
|
|
418
|
+
url: `/Arm/api/Invoice/InvoiceData?processInstanceId=${processInstanceId}`,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
async createInvoice(processInstanceId: string, amount: number | string) {
|
|
423
|
+
return this.axiosCall({
|
|
424
|
+
method: Methods.POST,
|
|
425
|
+
url: `/Arm/api/Invoice/CreateInvoice/${processInstanceId}/${amount}`,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
async sendToEpay(processInstanceId: string) {
|
|
430
|
+
return this.axiosCall({
|
|
431
|
+
method: Methods.POST,
|
|
432
|
+
url: `/Arm/api/Invoice/SendToEpay/${processInstanceId}`,
|
|
433
|
+
});
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
async signToDocument(data: any) {
|
|
437
|
+
return this.axiosCall({
|
|
438
|
+
method: Methods.POST,
|
|
439
|
+
url: '/Arm/api/Bpm/SignDocument',
|
|
440
|
+
data: data,
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
async getSignedDocList(data: any) {
|
|
445
|
+
return this.axiosCall({
|
|
446
|
+
method: Methods.POST,
|
|
447
|
+
url: '/Arm/api/File/List',
|
|
448
|
+
data: data,
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
async calculateWithoutApplication(data: any) {
|
|
453
|
+
return this.axiosCall({
|
|
454
|
+
method: Methods.POST,
|
|
455
|
+
url: `/${this.productUrl}/api/Application/Calculate`,
|
|
456
|
+
data: data,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
async getDefaultCalculationData() {
|
|
461
|
+
return this.axiosCall({
|
|
462
|
+
method: Methods.GET,
|
|
463
|
+
url: `/${this.productUrl}/api/Application/DefaultCalculatorValues`,
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
async reCalculate(data: any) {
|
|
468
|
+
return this.axiosCall({
|
|
469
|
+
method: Methods.POST,
|
|
470
|
+
url: `/${this.productUrl}/api/Application/Recalculate`,
|
|
471
|
+
data: data,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
async getValidateClientESBD(data: any) {
|
|
476
|
+
return this.axiosCall({
|
|
477
|
+
method: Methods.POST,
|
|
478
|
+
url: '/externalservices/api/ExternalServices/GetValidateClientEsbd',
|
|
479
|
+
data: data,
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
async isClaimTask(taskId: string) {
|
|
484
|
+
return this.axiosCall({
|
|
485
|
+
method: Methods.POST,
|
|
486
|
+
url: '/Arm/api/Bpm/IsClaimTask',
|
|
487
|
+
params: { TaskId: taskId },
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
async claimTask(taskId: string) {
|
|
492
|
+
return this.axiosCall({
|
|
493
|
+
method: Methods.POST,
|
|
494
|
+
url: '/Arm/api/Bpm/ClaimTaskUser',
|
|
495
|
+
params: { TaskId: taskId },
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
async getContragentFromGBDFL(data: { iin: string; phoneNumber: string }): Promise<GBDFLResponse> {
|
|
500
|
+
return this.axiosCall({
|
|
501
|
+
method: Methods.POST,
|
|
502
|
+
url: '/externalservices/api/ExternalServices/GetGbdflToken',
|
|
503
|
+
data: data,
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
async getFamilyInfo(data: { iin: string; phoneNumber: string }): Promise<FamilyInfoGKB> {
|
|
508
|
+
return this.axiosCall({
|
|
509
|
+
method: Methods.POST,
|
|
510
|
+
url: '/externalservices/api/ExternalServices/GetFamilyInfoToken',
|
|
511
|
+
data: data,
|
|
512
|
+
});
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
async getProcessTariff(code: number | string = 5) {
|
|
516
|
+
return this.axiosCall({ url: `/arm/api/Dictionary/ProcessTariff/${code}` });
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
async setConfirmation(data: any) {
|
|
520
|
+
return this.axiosCall({
|
|
521
|
+
method: Methods.POST,
|
|
522
|
+
url: '/Arm/api/UnderwritingCouncil/SetConfirmation',
|
|
523
|
+
data: data,
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
async getUnderwritingCouncilData(id: string | number) {
|
|
528
|
+
return this.axiosCall({
|
|
529
|
+
method: Methods.GET,
|
|
530
|
+
url: `/Arm/api/UnderwritingCouncil/ApplicationData?Id=${id}`,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
async sendUnderwritingCouncilTask(data: any) {
|
|
535
|
+
return this.axiosCall({
|
|
536
|
+
method: Methods.POST,
|
|
537
|
+
url: '/arm/api/UnderwritingCouncil/SendTask',
|
|
538
|
+
data: data,
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
async filterManagerByRegion(dictName: string, filterName: string) {
|
|
543
|
+
return this.axiosCall({
|
|
544
|
+
method: Methods.GET,
|
|
545
|
+
url: `/ekk/api/ContragentInsis/DictionaryItems/${dictName}?filter=${filterName}`,
|
|
546
|
+
});
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
async setINSISWorkData(data: any) {
|
|
550
|
+
return this.axiosCall({
|
|
551
|
+
method: Methods.POST,
|
|
552
|
+
url: `/arm/api/Bpm/SetInsisWorkData`,
|
|
553
|
+
data: data,
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
async searchAgentByName(name: string) {
|
|
558
|
+
return this.axiosCall({
|
|
559
|
+
method: Methods.GET,
|
|
560
|
+
url: `/ekk/api/ContragentInsis/AgentByName?fullName=${name}`,
|
|
286
561
|
});
|
|
287
562
|
}
|
|
288
563
|
}
|
package/api/interceptors.ts
CHANGED
|
@@ -21,7 +21,16 @@ export default function (axios: AxiosInstance) {
|
|
|
21
21
|
if (error.response.status === 401) {
|
|
22
22
|
dataStore.$reset();
|
|
23
23
|
localStorage.clear();
|
|
24
|
-
|
|
24
|
+
if (dataStore.isEFO) {
|
|
25
|
+
router.push({ name: 'Auth', query: { error: 401 } });
|
|
26
|
+
} else {
|
|
27
|
+
dataStore.sendToParent(constants.postActions.Error401, 401);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (error.response.status >= 500) {
|
|
31
|
+
if (router.currentRoute.value.name !== 'Auth') {
|
|
32
|
+
dataStore.showToaster('error', error.stack, 5000);
|
|
33
|
+
}
|
|
25
34
|
}
|
|
26
35
|
return Promise.reject(error);
|
|
27
36
|
},
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
type="button"
|
|
4
4
|
class="transition-all"
|
|
5
5
|
@click="$emit('clicked')"
|
|
6
|
-
:disabled="disabled"
|
|
6
|
+
:disabled="disabled || loading"
|
|
7
7
|
:class="[
|
|
8
8
|
disabled ? 'disabled' : '',
|
|
9
9
|
classes,
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
$libStyles[`btnH${$capitalize(size)}` as keyof typeof $libStyles],
|
|
12
12
|
]"
|
|
13
13
|
>
|
|
14
|
-
|
|
14
|
+
<base-loader v-if="loading" :size="24" color="#FFF" bg-color="" :width="2"></base-loader>
|
|
15
|
+
<span v-if="!loading">{{ text }}</span>
|
|
15
16
|
</button>
|
|
16
17
|
</template>
|
|
17
18
|
|
|
@@ -35,6 +36,10 @@ export default defineComponent({
|
|
|
35
36
|
type: Boolean,
|
|
36
37
|
default: false,
|
|
37
38
|
},
|
|
39
|
+
loading: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: false,
|
|
42
|
+
},
|
|
38
43
|
btn: {
|
|
39
44
|
type: String,
|
|
40
45
|
default: new Styles().blueBtn,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
class="transition-all"
|
|
5
|
+
@click="$emit('clicked')"
|
|
6
|
+
:disabled="disabled"
|
|
7
|
+
:class="[
|
|
8
|
+
disabled ? 'disabled' : '',
|
|
9
|
+
classes,
|
|
10
|
+
btn,
|
|
11
|
+
$libStyles[`btnH${$capitalize(size)}` as keyof typeof $libStyles],
|
|
12
|
+
]"
|
|
13
|
+
>
|
|
14
|
+
<i class="mdi" :class="icon"></i>
|
|
15
|
+
</button>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script lang="ts">
|
|
19
|
+
export default defineComponent({
|
|
20
|
+
name: 'BaseBtnIcon',
|
|
21
|
+
props: {
|
|
22
|
+
icon: { type: String, default: 'mdi-arrow-right-variant' },
|
|
23
|
+
size: {
|
|
24
|
+
type: String,
|
|
25
|
+
default: 'md',
|
|
26
|
+
},
|
|
27
|
+
classes: {
|
|
28
|
+
type: String,
|
|
29
|
+
default: '',
|
|
30
|
+
},
|
|
31
|
+
disabled: {
|
|
32
|
+
type: Boolean,
|
|
33
|
+
default: false,
|
|
34
|
+
},
|
|
35
|
+
btn: {
|
|
36
|
+
type: String,
|
|
37
|
+
default: new Styles().blueBtn,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<style scoped>
|
|
44
|
+
.disabled {
|
|
45
|
+
opacity: 0.3;
|
|
46
|
+
}
|
|
47
|
+
</style>
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<base-content class="flex-col" :class="[$libStyles.whiteBg]">
|
|
3
3
|
<base-header
|
|
4
|
-
class="justify-
|
|
4
|
+
class="justify-center lg:pl-14"
|
|
5
5
|
:has-back="hasBack"
|
|
6
6
|
:back-icon="backIcon"
|
|
7
|
+
:has-more="hasMore"
|
|
8
|
+
:more-icon="moreIcon"
|
|
7
9
|
:title="title"
|
|
8
10
|
@onBack="$emit('onBack')"
|
|
11
|
+
@onMore="$emit('onMore')"
|
|
9
12
|
></base-header>
|
|
10
13
|
<slot></slot>
|
|
11
14
|
</base-content>
|
|
@@ -22,11 +25,19 @@ export default defineComponent({
|
|
|
22
25
|
type: String,
|
|
23
26
|
default: 'mdi-arrow-left',
|
|
24
27
|
},
|
|
28
|
+
hasMore: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false,
|
|
31
|
+
},
|
|
32
|
+
moreIcon: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: 'mdi-cog-outline',
|
|
35
|
+
},
|
|
25
36
|
title: {
|
|
26
37
|
type: String,
|
|
27
38
|
default: '',
|
|
28
39
|
},
|
|
29
40
|
},
|
|
30
|
-
emits: ['onBack'],
|
|
41
|
+
emits: ['onBack', 'onMore'],
|
|
31
42
|
});
|
|
32
43
|
</script>
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-dialog v-model="fieldModel">
|
|
3
|
-
<v-card
|
|
4
|
-
class="self-center w-full sm:w-3/4 md:w-2/3 lg:w-2/4 xl:w-[600px] rounded-lg !p-2"
|
|
5
|
-
>
|
|
3
|
+
<v-card class="self-center w-full sm:w-3/4 md:w-2/3 lg:w-2/4 xl:w-[600px] rounded-lg !p-2">
|
|
6
4
|
<v-card-title>
|
|
7
5
|
<slot v-if="!title" name="title"></slot>
|
|
8
6
|
{{ title }}
|
|
@@ -11,12 +9,10 @@
|
|
|
11
9
|
<slot v-if="!subtitle" name="subtitle"></slot>
|
|
12
10
|
{{ subtitle }}
|
|
13
11
|
</v-card-subtitle>
|
|
14
|
-
<v-card-text>
|
|
15
|
-
<slot v-if="text" name="content"></slot>
|
|
16
|
-
{{ text }}
|
|
17
|
-
</v-card-text>
|
|
18
12
|
<v-card-actions class="gap-[16px]">
|
|
19
|
-
<
|
|
13
|
+
<base-btn v-if="actions === 'default'" class="!w-fit px-6" size="sm" :text="$t('confirm.yes')" :btn="$libStyles.blueBtn" @click="$emit('yes')"></base-btn>
|
|
14
|
+
<base-btn v-if="actions === 'default'" class="!w-fit px-6" size="sm" :text="$t('confirm.no')" :btn="$libStyles.blueBtn" @click="$emit('no')" />
|
|
15
|
+
<slot v-if="actions !== 'default'" name="actions"></slot>
|
|
20
16
|
</v-card-actions>
|
|
21
17
|
</v-card>
|
|
22
18
|
</v-dialog>
|
|
@@ -37,12 +33,12 @@ export default defineComponent({
|
|
|
37
33
|
type: String,
|
|
38
34
|
default: '',
|
|
39
35
|
},
|
|
40
|
-
|
|
36
|
+
actions: {
|
|
41
37
|
type: String,
|
|
42
|
-
default: '',
|
|
38
|
+
default: 'default',
|
|
43
39
|
},
|
|
44
40
|
},
|
|
45
|
-
emits: ['update:modelValue', 'submitted'],
|
|
41
|
+
emits: ['update:modelValue', 'submitted', 'yes', 'no'],
|
|
46
42
|
setup(props, { emit }) {
|
|
47
43
|
const fieldModel = ref(props.modelValue);
|
|
48
44
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-list lines="two" v-if="formStore.birthInfos && formStore.birthInfos.length" class="w-full !py-0">
|
|
3
|
+
<v-list-item @click="$emit('reset')" :append-icon="selected && Object.keys(selected).length === 0 ? `mdi-radiobox-marked ${$libStyles.greenText}` : 'mdi-radiobox-blank text-[#636363]'">
|
|
4
|
+
<v-list-item-title :class="[$libStyles.greenText, $libStyles.textTitle]">{{ $t('form.notChosen') }}</v-list-item-title>
|
|
5
|
+
</v-list-item>
|
|
6
|
+
<v-list-item
|
|
7
|
+
v-for="familyMember of formStore.birthInfos"
|
|
8
|
+
:key="familyMember.childIIN"
|
|
9
|
+
@click="$emit('selectFamilyMember', familyMember)"
|
|
10
|
+
:append-icon="familyMember && selected && selected.childIIN === familyMember.childIIN ? `mdi-radiobox-marked ${$libStyles.greenText}` : 'mdi-radiobox-blank text-[#636363]'"
|
|
11
|
+
>
|
|
12
|
+
<v-list-item-title :class="[$libStyles.greenText, $libStyles.textTitle]">{{
|
|
13
|
+
`${familyMember.childSurName} ${familyMember.childName} ${familyMember.childPatronymic ? familyMember.childPatronymic : ''}`
|
|
14
|
+
}}</v-list-item-title>
|
|
15
|
+
<v-list-item-subtitle :class="[$libStyles.textSimple]"
|
|
16
|
+
><span>{{ `${$t('form.iin')}:` }}</span
|
|
17
|
+
>{{ ` ${$reformatIin(familyMember.childIIN!)}` }}</v-list-item-subtitle
|
|
18
|
+
>
|
|
19
|
+
</v-list-item>
|
|
20
|
+
</v-list>
|
|
21
|
+
<base-list-empty class="w-full" v-else></base-list-empty>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script lang="ts">
|
|
25
|
+
export default defineComponent({
|
|
26
|
+
props: {
|
|
27
|
+
selected: {
|
|
28
|
+
type: Object as PropType<BirthInfoGKB>,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
emits: ['selectFamilyMember', 'reset'],
|
|
32
|
+
setup() {
|
|
33
|
+
const formStore = useFormStore();
|
|
34
|
+
return {
|
|
35
|
+
formStore,
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
</script>
|