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.
Files changed (53) hide show
  1. package/.prettierrc +2 -1
  2. package/api/index.ts +295 -20
  3. package/api/interceptors.ts +10 -1
  4. package/components/Button/Btn.vue +7 -2
  5. package/components/Button/BtnIcon.vue +47 -0
  6. package/components/Complex/Content.vue +1 -1
  7. package/components/Complex/ContentBlock.vue +5 -0
  8. package/components/Complex/Page.vue +13 -2
  9. package/components/{Layout → Dialog}/Dialog.vue +7 -11
  10. package/components/Dialog/FamilyDialog.vue +39 -0
  11. package/components/Form/Documents.vue +107 -0
  12. package/components/Form/FormBlock.vue +114 -0
  13. package/components/Form/FormSection.vue +18 -0
  14. package/components/Form/FormTextSection.vue +20 -0
  15. package/components/Form/FormToggle.vue +41 -0
  16. package/components/Form/MemberForm.vue +1132 -0
  17. package/components/Form/ProductConditions.vue +343 -0
  18. package/components/Form/ProductConditionsBlock.vue +68 -0
  19. package/components/Input/EmptyFormField.vue +5 -0
  20. package/components/Input/FileInput.vue +71 -0
  21. package/components/Input/FormInput.vue +170 -0
  22. package/components/Input/PanelInput.vue +132 -0
  23. package/components/Input/RoundedInput.vue +39 -36
  24. package/components/Layout/Drawer.vue +42 -0
  25. package/components/Layout/Header.vue +25 -11
  26. package/components/Layout/Loader.vue +9 -6
  27. package/components/Layout/SettingsPanel.vue +48 -0
  28. package/components/List/ListEmpty.vue +22 -0
  29. package/components/Menu/MenuNav.vue +70 -30
  30. package/components/Menu/MenuNavItem.vue +8 -1
  31. package/components/Panel/PanelItem.vue +5 -0
  32. package/components/Panel/PanelSelectItem.vue +20 -0
  33. package/components/Transitions/FadeTransition.vue +5 -0
  34. package/composables/classes.ts +401 -201
  35. package/composables/constants.ts +27 -12
  36. package/composables/index.ts +72 -35
  37. package/composables/styles.ts +31 -7
  38. package/layouts/clear.vue +1 -1
  39. package/layouts/default.vue +72 -6
  40. package/layouts/full.vue +6 -0
  41. package/nuxt.config.ts +5 -2
  42. package/package.json +17 -11
  43. package/pages/500.vue +85 -0
  44. package/plugins/helperFunctionsPlugins.ts +10 -2
  45. package/plugins/storePlugin.ts +6 -5
  46. package/store/data.store.js +1871 -526
  47. package/store/member.store.ts +291 -0
  48. package/store/messages.ts +152 -34
  49. package/store/rules.js +26 -28
  50. package/tailwind.config.js +10 -0
  51. package/types/index.ts +120 -0
  52. package/models/index.ts +0 -23
  53. /package/store/{form.store.js → form.store.ts} +0 -0
package/.prettierrc CHANGED
@@ -5,5 +5,6 @@
5
5
  "trailingComma": "all",
6
6
  "bracketSpacing": true,
7
7
  "arrowParens": "avoid",
8
- "endOfLine": "auto"
8
+ "endOfLine": "auto",
9
+ "printWidth": 180
9
10
  }
package/api/index.ts CHANGED
@@ -7,21 +7,21 @@ enum Methods {
7
7
  }
8
8
 
9
9
  export class ApiClass {
10
- baseURL: string | undefined;
11
- constructor(baseURL: string | undefined) {
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 { data } = await useAxios(this.baseURL as string).request(config);
17
- return data;
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: any) {
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
  }
@@ -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
- router.push({ name: 'Auth', query: { error: 401 } });
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
- {{ text }}
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,5 +1,5 @@
1
1
  <template>
2
- <aside class="w-full hidden lg:flex lg:w-3/4">
2
+ <aside class="w-full lg:flex lg:w-3/4">
3
3
  <slot></slot>
4
4
  </aside>
5
5
  </template>
@@ -0,0 +1,5 @@
1
+ <template>
2
+ <div class="w-full p-4" :class="[$libStyles.blueBgLight, $libStyles.rounded]">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
@@ -1,11 +1,14 @@
1
1
  <template>
2
2
  <base-content class="flex-col" :class="[$libStyles.whiteBg]">
3
3
  <base-header
4
- class="justify-start pl-14"
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
- <slot name="actions"></slot>
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
- text: {
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>