@webitel/ui-sdk 24.12.121 → 24.12.122

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 (74) hide show
  1. package/dist/ui-sdk.js +1 -1
  2. package/dist/ui-sdk.umd.cjs +1 -1
  3. package/package.json +1 -1
  4. package/src/api/clients/caseCloseReasonGroups/caseCloseReasonGroups.js +130 -0
  5. package/src/api/clients/caseCloseReasons/caseCloseReasons.js +130 -0
  6. package/src/api/clients/casePriorities/casePriorities.js +130 -0
  7. package/src/api/clients/caseServiceCatalogs/service-catalogs.js +198 -0
  8. package/src/api/clients/caseServices/services.js +174 -0
  9. package/src/api/clients/caseSources/caseSources.js +138 -0
  10. package/src/api/clients/caseStatusConditions/caseStatusConditions.js +167 -0
  11. package/src/api/clients/caseStatuses/caseStatuses.js +121 -0
  12. package/src/api/clients/contactGroups/contactGroups.js +162 -0
  13. package/src/api/clients/index.js +16 -0
  14. package/src/api/clients/slaConditions/slaConditions.js +167 -0
  15. package/src/api/clients/slas/slas.js +129 -0
  16. package/src/locale/en/en.js +104 -30
  17. package/src/locale/ru/ru.js +105 -31
  18. package/src/locale/ua/ua.js +105 -31
  19. package/src/modules/Filters/v2/filters/components/config/dynamic-filter-config-form.vue +3 -2
  20. package/src/modules/Filters/v2/filters/components/values/_shared/date-time-filter/date-time-filter-value-field.vue +53 -0
  21. package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-field.vue +18 -0
  22. package/src/modules/Filters/v2/filters/components/values/actual-reaction-time/actual-reaction-time-filter-value-preview.vue +42 -0
  23. package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-field.vue +18 -0
  24. package/src/modules/Filters/v2/filters/components/values/actual-resolution-time/actual-resolution-time-filter-value-preview.vue +42 -0
  25. package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-field.vue +74 -0
  26. package/src/modules/Filters/v2/filters/components/values/assignee/assignee-filter-value-preview.vue +40 -0
  27. package/src/modules/Filters/v2/filters/components/values/assignee/config.js +4 -0
  28. package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-field.vue +56 -0
  29. package/src/modules/Filters/v2/filters/components/values/author/author-filter-value-preview.vue +32 -0
  30. package/src/modules/Filters/v2/filters/components/values/author/config.js +4 -0
  31. package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-field.vue +99 -0
  32. package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/close-reason-groups-case-filter-value-preview.vue +32 -0
  33. package/src/modules/Filters/v2/filters/components/values/close-reason-groups-case/config.js +6 -0
  34. package/src/modules/Filters/v2/filters/components/values/contact-group/config.js +4 -0
  35. package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-field.vue +74 -0
  36. package/src/modules/Filters/v2/filters/components/values/contact-group/contact-group-filter-value-preview.vue +43 -0
  37. package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-field.vue +43 -0
  38. package/src/modules/Filters/v2/filters/components/values/has-attachment/has-attachment-filter-value-preview.vue +22 -0
  39. package/src/modules/Filters/v2/filters/components/values/has-file/has-file-filter-value-field.vue +1 -1
  40. package/src/modules/Filters/v2/filters/components/values/has-transcription/has-transcription-filter-value-field.vue +1 -1
  41. package/src/modules/Filters/v2/filters/components/values/impacted/config.js +4 -0
  42. package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-field.vue +56 -0
  43. package/src/modules/Filters/v2/filters/components/values/impacted/impacted-filter-value-preview.vue +32 -0
  44. package/src/modules/Filters/v2/filters/components/values/index.js +77 -5
  45. package/src/modules/Filters/v2/filters/components/values/priority-case/config.js +5 -0
  46. package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-field.vue +57 -0
  47. package/src/modules/Filters/v2/filters/components/values/priority-case/priority-case-filter-value-preview.vue +32 -0
  48. package/src/modules/Filters/v2/filters/components/values/rated/rated-filter-value-field.vue +1 -1
  49. package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-field.vue +89 -0
  50. package/src/modules/Filters/v2/filters/components/values/rating/rating-from-to-filter-value-preview.vue +37 -0
  51. package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-field.vue +18 -0
  52. package/src/modules/Filters/v2/filters/components/values/reaction-time/reaction-time-filter-value-preview.vue +42 -0
  53. package/src/modules/Filters/v2/filters/components/values/reporter/config.js +4 -0
  54. package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-field.vue +56 -0
  55. package/src/modules/Filters/v2/filters/components/values/reporter/reporter-filter-value-preview.vue +32 -0
  56. package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-field.vue +18 -0
  57. package/src/modules/Filters/v2/filters/components/values/resolution-time/resolution-time-filter-value-preview.vue +42 -0
  58. package/src/modules/Filters/v2/filters/components/values/service-case/config.js +6 -0
  59. package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-field.vue +113 -0
  60. package/src/modules/Filters/v2/filters/components/values/service-case/service-case-filter-value-preview.vue +15 -0
  61. package/src/modules/Filters/v2/filters/components/values/sla/config.js +4 -0
  62. package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-field.vue +57 -0
  63. package/src/modules/Filters/v2/filters/components/values/sla/sla-filter-value-preview.vue +32 -0
  64. package/src/modules/Filters/v2/filters/components/values/sla-condition/config.js +6 -0
  65. package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-field.vue +98 -0
  66. package/src/modules/Filters/v2/filters/components/values/sla-condition/sla-condition-filter-value-preview.vue +37 -0
  67. package/src/modules/Filters/v2/filters/components/values/source-case/config.js +5 -0
  68. package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-field.vue +57 -0
  69. package/src/modules/Filters/v2/filters/components/values/source-case/source-case-filter-value-preview.vue +32 -0
  70. package/src/modules/Filters/v2/filters/components/values/status-case/config.js +6 -0
  71. package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-field.vue +99 -0
  72. package/src/modules/Filters/v2/filters/components/values/status-case/status-case-filter-value-preview.vue +37 -0
  73. package/src/modules/Filters/v2/filters/components/values/talk-duration/talk-duration-filter-value-field.vue +1 -1
  74. package/src/modules/Filters/v2/filters/components/values/total-duration/total-duration-filter-value-field.vue +1 -1
@@ -0,0 +1,40 @@
1
+ <template>
2
+ <div>
3
+ <p
4
+ v-if="props.value.unassigned"
5
+ >{{ t('reusable.unassigned') }}</p>
6
+ <ul
7
+ v-if="localValue"
8
+ >
9
+ <li
10
+ v-for="({ name }, index) of localValue"
11
+ :key="index"
12
+ >
13
+ {{ name }}
14
+ </li>
15
+ </ul>
16
+ </div>
17
+ </template>
18
+
19
+ <script lang="ts" setup>
20
+ import {searchMethod} from './config.js';
21
+ import {ref} from 'vue';
22
+ import {useI18n} from "vue-i18n";
23
+
24
+ const props = defineProps<{
25
+ value: number[];
26
+ }>();
27
+
28
+ const localValue = ref([]);
29
+ const {t} = useI18n();
30
+
31
+ const getLocalValue = async () => {
32
+ const {items} = await searchMethod({id: props.value.list});
33
+ localValue.value = items;
34
+ };
35
+
36
+ getLocalValue();
37
+ </script>
38
+
39
+ <style lang="scss" scoped>
40
+ </style>
@@ -0,0 +1,4 @@
1
+ import ContactsAPI from '../../../../../../../api/clients/сontacts/contacts.js';
2
+
3
+ export const searchMethod = ContactsAPI.getLookup;
4
+ export const localePath = '';
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <wt-select
3
+ :close-on-select="false"
4
+ :label="t('webitelUI.filters.filterValue')"
5
+ :search-method="searchMethod"
6
+ :value="model"
7
+ multiple
8
+ use-value-from-options-by-prop="id"
9
+ @input="handleInput"
10
+ />
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { useVuelidate } from '@vuelidate/core';
15
+ import { required } from '@vuelidate/validators';
16
+ import { computed, watch } from 'vue';
17
+ import { useI18n } from 'vue-i18n';
18
+
19
+ import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
20
+ import { searchMethod } from './config.js';
21
+
22
+ type ModelValue = number[];
23
+
24
+ const model = defineModel<ModelValue>();
25
+
26
+ const emit = defineEmits<{
27
+ 'update:invalid': [boolean];
28
+ }>();
29
+ const { t } = useI18n();
30
+
31
+ const v$ = useVuelidate(
32
+ computed(() => ({
33
+ model: {
34
+ required,
35
+ },
36
+ })),
37
+ { model },
38
+ { $autoDirty: true },
39
+ );
40
+ v$.value.$touch();
41
+
42
+ watch(
43
+ () => v$.value.$invalid,
44
+ (invalid) => {
45
+ emit('update:invalid', invalid);
46
+ },
47
+ { immediate: true },
48
+ );
49
+
50
+ const handleInput = (value: ModelValue) => {
51
+ model.value = value;
52
+ };
53
+ </script>
54
+
55
+ <style lang="scss" scoped>
56
+ </style>
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <ul
3
+ v-if="localValue">
4
+ <li
5
+ v-for="({ name }, index) of localValue"
6
+ :key="index"
7
+ >
8
+ {{ name }}
9
+ </li>
10
+ </ul>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { searchMethod } from './config.js';
15
+ import {ref} from 'vue';
16
+
17
+ const props = defineProps<{
18
+ value: number[];
19
+ }>();
20
+
21
+ const localValue = ref([]);
22
+
23
+ const getLocalValue = async () => {
24
+ const { items } = await searchMethod({id: props.value});
25
+ localValue.value = items;
26
+ };
27
+
28
+ getLocalValue();
29
+ </script>
30
+
31
+ <style lang="scss" scoped>
32
+ </style>
@@ -0,0 +1,4 @@
1
+ import UsersAPI from '../../../../../../../api/clients/users/users.js';
2
+
3
+ export const searchMethod = UsersAPI.getLookup;
4
+ export const localePath = '';
@@ -0,0 +1,99 @@
1
+ <template>
2
+ <div>
3
+ <wt-select
4
+ :clearable="false"
5
+ :label="t('cases.reason')"
6
+ :search-method="caseCloseReasonsGroupsSearchMethod"
7
+ :v="v$.model.selection"
8
+ :value="model?.selection"
9
+ track-by="id"
10
+ use-value-from-options-by-prop="id"
11
+ @input="updateSelected"
12
+ />
13
+
14
+ <wt-select
15
+ v-if="model?.selection"
16
+ :key="model.selection"
17
+ :clearable="false"
18
+ :disabled="!model.selection"
19
+ :label="t('webitelUI.filters.filterValue')"
20
+ :search-method="getConditionList"
21
+ :v="v$.model.conditions"
22
+ :value="model.conditions"
23
+ multiple
24
+ track-by="id"
25
+ use-value-from-options-by-prop="id"
26
+ @input="model.conditions = $event"
27
+ />
28
+ </div>
29
+ </template>
30
+
31
+ <script lang="ts" setup>
32
+ import { useVuelidate } from '@vuelidate/core';
33
+ import { required } from '@vuelidate/validators';
34
+ import {computed, onMounted, ref, watch} from 'vue';
35
+ import { useI18n } from 'vue-i18n';
36
+
37
+ import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
38
+ import { caseCloseReasonsSearchMethod, caseCloseReasonsGroupsSearchMethod } from './config.js';
39
+
40
+ type ModelValue = {
41
+ selection: string;
42
+ conditions: string;
43
+ };
44
+ const model = defineModel<ModelValue>();
45
+ const { t } = useI18n();
46
+
47
+ const updateSelected = (value) => {
48
+ model.value.selection = value;
49
+ model.value.conditions = '';
50
+ };
51
+
52
+ const getConditionList = (params) => {
53
+ return caseCloseReasonsSearchMethod({
54
+ parentId: model.value.selection,
55
+ ...params,
56
+ });
57
+ };
58
+
59
+ const initModel = () => {
60
+ if(!model.value) {
61
+ model.value = {
62
+ selection: '',
63
+ conditions: '',
64
+ };
65
+ }
66
+ }
67
+ onMounted(() => initModel());
68
+
69
+ const v$ = useVuelidate(
70
+ computed(() => ({
71
+ model: {
72
+ selection: {
73
+ required,
74
+ },
75
+ conditions: {
76
+ required,
77
+ },
78
+ },
79
+ })),
80
+ { model },
81
+ { $autoDirty: true },
82
+ );
83
+
84
+ v$.value.$touch();
85
+
86
+ const emit = defineEmits<{
87
+ 'update:invalid': [boolean];
88
+ }>();
89
+
90
+ watch(
91
+ () => v$.value.$invalid,
92
+ (invalid) => {
93
+ emit('update:invalid', invalid);
94
+ },
95
+ { immediate: true },
96
+ );
97
+ </script>
98
+
99
+ <style lang="scss" scoped></style>
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <ul
3
+ v-if="localValue">
4
+ <li
5
+ v-for="({ name }, index) of localValue"
6
+ :key="index"
7
+ >
8
+ {{ name }}
9
+ </li>
10
+ </ul>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { caseCloseReasonsGroupsSearchMethod } from './config'
15
+ import {ref} from 'vue';
16
+
17
+ const props = defineProps<{
18
+ value: number[];
19
+ }>();
20
+
21
+ const localValue = ref([]);
22
+
23
+ const getLocalValue = async () => {
24
+ const { items } = await caseCloseReasonsGroupsSearchMethod({parentId: props.value?.selection, id: props.value?.conditions });
25
+ localValue.value = items;
26
+ };
27
+
28
+ getLocalValue();
29
+ </script>
30
+
31
+ <style lang="scss" scoped>
32
+ </style>
@@ -0,0 +1,6 @@
1
+ import CaseCloseReasonGroupsAPI from '../../../../../../../api/clients/caseCloseReasonGroups/caseCloseReasonGroups.js';
2
+ import CaseCloseReasonsAPI from '../../../../../../../api/clients/caseCloseReasons/caseCloseReasons.js';
3
+
4
+ export const caseCloseReasonsGroupsSearchMethod = CaseCloseReasonGroupsAPI.getLookup;
5
+ export const caseCloseReasonsSearchMethod = CaseCloseReasonsAPI.getLookup;
6
+ export const localePath = '';
@@ -0,0 +1,4 @@
1
+ import ContactGroupsAPI from '../../../../../../../api/clients/contactGroups/contactGroups.js';
2
+
3
+ export const searchMethod = ContactGroupsAPI.getLookup;
4
+ export const localePath = '';
@@ -0,0 +1,74 @@
1
+ <template>
2
+ <wt-select
3
+ :close-on-select="false"
4
+ :label="t('webitelUI.filters.filterValue')"
5
+ :search-method="searchMethod"
6
+ :v="v$.model.list"
7
+ :value="model?.list"
8
+ multiple
9
+ track-by="id"
10
+ use-value-from-options-by-prop="id"
11
+ @input="model.list = $event"
12
+ />
13
+ <wt-checkbox
14
+ :label="t('reusable.showUnassigned')"
15
+ :selected="model?.unassigned"
16
+ :v="v$.model.unassigned"
17
+ @change="model.unassigned = $event"
18
+ />
19
+ </template>
20
+
21
+ <script lang="ts" setup>
22
+ import { useVuelidate } from '@vuelidate/core';
23
+ import { requiredIf } from '@vuelidate/validators';
24
+ import { computed, watch, onMounted } from 'vue';
25
+ import { useI18n } from 'vue-i18n';
26
+
27
+ import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
28
+ import { searchMethod } from './config.js';
29
+ import WtCheckbox from "../../../../../../../components/wt-checkbox/wt-checkbox.vue";
30
+
31
+ type ModelValue = {
32
+ list: string[];
33
+ unassigned: boolean;
34
+ };
35
+
36
+ const model = defineModel<ModelValue>();
37
+
38
+ const emit = defineEmits<{
39
+ 'update:invalid': [boolean];
40
+ }>();
41
+ const { t } = useI18n();
42
+
43
+ const initModel = () => {
44
+ if(!model.value) {
45
+ model.value = {
46
+ list: [],
47
+ unassigned: false,
48
+ };
49
+ }
50
+ }
51
+ onMounted(() => initModel());
52
+
53
+ const v$ = useVuelidate(
54
+ computed(() => ({
55
+ model: {
56
+ list: { requiredIf: requiredIf(() => !model.value.unassigned) },
57
+ unassigned: { required: requiredIf(() => !model.value.list.length)},
58
+ },
59
+ })),
60
+ { model },
61
+ { $autoDirty: true },
62
+ );
63
+ v$.value.$touch();
64
+
65
+ watch(
66
+ () => v$.value.$invalid,
67
+ (invalid) => {
68
+ emit('update:invalid', invalid);
69
+ },
70
+ { immediate: true },
71
+ );
72
+ </script>
73
+
74
+ <style lang="scss" scoped></style>
@@ -0,0 +1,43 @@
1
+ <template>
2
+ <div>
3
+ <p
4
+ v-if="props.value.unassigned"
5
+ >{{ t('reusable.unassigned') }}</p>
6
+ <ul
7
+ v-if="localValue"
8
+ >
9
+ <li
10
+ v-for="({ name }, index) of localValue"
11
+ :key="index"
12
+ >
13
+ {{ name }}
14
+ </li>
15
+ </ul>
16
+ </div>
17
+ </template>
18
+
19
+ <script lang="ts" setup>
20
+ import { ref } from 'vue';
21
+
22
+ import { searchMethod } from './config.js';
23
+ import {useI18n} from "vue-i18n";
24
+
25
+ const props = defineProps<{
26
+ value: number[];
27
+ }>();
28
+
29
+ const localValue = ref([]);
30
+ const {t} = useI18n();
31
+
32
+ const getLocalValue = async () => {
33
+ const { items } = await searchMethod({
34
+ id: props.value.list,
35
+ });
36
+ localValue.value = items;
37
+ };
38
+
39
+ getLocalValue();
40
+ </script>
41
+
42
+ <style lang="scss" scoped>
43
+ </style>
@@ -0,0 +1,43 @@
1
+ <template>
2
+ <has-option-filter-value-field
3
+ :model-value="model"
4
+ :v="v$.model"
5
+ @update:model-value="model = $event"
6
+ />
7
+ </template>
8
+
9
+ <script lang="ts" setup>
10
+ import { useVuelidate } from '@vuelidate/core';
11
+ import { required } from '@vuelidate/validators';
12
+ import { computed, watch } from 'vue';
13
+
14
+ import HasOptionFilterValueField from '../_shared/has-options/has-option-filter-value-field.vue';
15
+
16
+ const model = defineModel<string>();
17
+
18
+ const v$ = useVuelidate(
19
+ computed(() => ({
20
+ model: {
21
+ required,
22
+ },
23
+ })),
24
+ { model },
25
+ { $autoDirty: true },
26
+ );
27
+
28
+ v$.value.$touch();
29
+
30
+ const emit = defineEmits<{
31
+ 'update:invalid': [boolean];
32
+ }>();
33
+
34
+ watch(
35
+ () => v$.value.$invalid,
36
+ (invalid) => {
37
+ emit('update:invalid', invalid);
38
+ },
39
+ { immediate: true },
40
+ );
41
+ </script>
42
+
43
+ <style lang="scss" scoped></style>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <div>{{ localeValue }}</div>
3
+ </template>
4
+
5
+ <script lang="ts" setup>
6
+ import { computed } from 'vue';
7
+ import { useI18n } from 'vue-i18n';
8
+
9
+ import { BooleanOptions } from '../../enums/boolean-options';
10
+
11
+ const props = defineProps<{
12
+ value: boolean;
13
+ }>();
14
+ const { t } = useI18n();
15
+
16
+ const localeValue = computed(() => {
17
+ const match = BooleanOptions.find((el) => el.value === props.value);
18
+ return match ? t(match.locale) : '';
19
+ });
20
+ </script>
21
+
22
+ <style lang="scss" scoped></style>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <has-option-filter-value-field
3
- :value="model"
3
+ :model-value="model"
4
4
  :v="v$.model"
5
5
  @update:model-value="model = $event"
6
6
  />
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <has-option-filter-value-field
3
- :value="model"
3
+ :model-value="model"
4
4
  :v="v$.model"
5
5
  @update:model-value="model = $event"
6
6
  />
@@ -0,0 +1,4 @@
1
+ import ContactsAPI from '../../../../../../../api/clients/сontacts/contacts.js';
2
+
3
+ export const searchMethod = ContactsAPI.getLookup;
4
+ export const localePath = '';
@@ -0,0 +1,56 @@
1
+ <template>
2
+ <wt-select
3
+ :close-on-select="false"
4
+ :label="t('webitelUI.filters.filterValue')"
5
+ :search-method="searchMethod"
6
+ :value="model"
7
+ multiple
8
+ use-value-from-options-by-prop="id"
9
+ @input="handleInput"
10
+ />
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { useVuelidate } from '@vuelidate/core';
15
+ import { required } from '@vuelidate/validators';
16
+ import { computed, watch } from 'vue';
17
+ import { useI18n } from 'vue-i18n';
18
+
19
+ import WtSelect from '../../../../../../../components/wt-select/wt-select.vue';
20
+ import { searchMethod } from './config.js';
21
+
22
+ type ModelValue = number[];
23
+
24
+ const model = defineModel<ModelValue>();
25
+
26
+ const emit = defineEmits<{
27
+ 'update:invalid': [boolean];
28
+ }>();
29
+ const { t } = useI18n();
30
+
31
+ const v$ = useVuelidate(
32
+ computed(() => ({
33
+ model: {
34
+ required,
35
+ },
36
+ })),
37
+ { model },
38
+ { $autoDirty: true },
39
+ );
40
+ v$.value.$touch();
41
+
42
+ watch(
43
+ () => v$.value.$invalid,
44
+ (invalid) => {
45
+ emit('update:invalid', invalid);
46
+ },
47
+ { immediate: true },
48
+ );
49
+
50
+ const handleInput = (value: ModelValue) => {
51
+ model.value = value;
52
+ };
53
+ </script>
54
+
55
+ <style lang="scss" scoped>
56
+ </style>
@@ -0,0 +1,32 @@
1
+ <template>
2
+ <ul
3
+ v-if="localValue">
4
+ <li
5
+ v-for="({ name }, index) of localValue"
6
+ :key="index"
7
+ >
8
+ {{ name }}
9
+ </li>
10
+ </ul>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import { searchMethod } from './config.js';
15
+ import {ref} from 'vue';
16
+
17
+ const props = defineProps<{
18
+ value: number[];
19
+ }>();
20
+
21
+ const localValue = ref([]);
22
+
23
+ const getLocalValue = async () => {
24
+ const { items } = await searchMethod({id: props.value});
25
+ localValue.value = items;
26
+ };
27
+
28
+ getLocalValue();
29
+ </script>
30
+
31
+ <style lang="scss" scoped>
32
+ </style>