@iservice365/layer-common 1.4.2 → 1.5.1
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/CHANGELOG.md +12 -0
- package/components/BillingMain.vue +66 -0
- package/components/Card/Toggle.vue +25 -0
- package/components/Dialog/UpdateMoreAction.vue +5 -1
- package/components/Editor.vue +61 -0
- package/components/ImageCarousel.vue +98 -0
- package/components/Input/FileV2.vue +81 -36
- package/components/ServiceProviderMain.vue +410 -70
- package/components/WorkOrder/Main.vue +156 -75
- package/composables/useFacility.ts +246 -0
- package/composables/useServiceProvider.ts +8 -2
- package/package.json +3 -1
- package/components/FacilityForm.vue +0 -226
- package/components/FacilityFormAvailability.vue +0 -13
- package/components/FacilityFormBookingFee.vue +0 -13
- package/components/FacilityFormBookingPolicy.vue +0 -13
- package/components/FacilityFormDepositFee.vue +0 -13
- package/components/FacilityFormDescription.vue +0 -13
- package/components/FacilityFormInformation.vue +0 -40
- package/components/FacilityFormRefund.vue +0 -13
- package/components/FacilityFormRulesAndPolicies.vue +0 -13
- package/components/FacilityFormSecurityChecklist.vue +0 -13
|
@@ -1,16 +1,53 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<v-row no-gutters>
|
|
3
3
|
<v-col cols="12" class="mb-2">
|
|
4
|
-
<v-row no-gutters>
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
4
|
+
<v-row no-gutters align="center" justify="space-between">
|
|
5
|
+
<div>
|
|
6
|
+
<v-btn
|
|
7
|
+
class="text-none mr-2"
|
|
8
|
+
rounded="pill"
|
|
9
|
+
variant="tonal"
|
|
10
|
+
@click="(createDialog = true), setServiceProvider({ mode: 'add' })"
|
|
11
|
+
size="large"
|
|
12
|
+
>
|
|
13
|
+
Add
|
|
14
|
+
</v-btn>
|
|
15
|
+
<v-btn
|
|
16
|
+
class="text-none mr-2"
|
|
17
|
+
rounded="pill"
|
|
18
|
+
variant="tonal"
|
|
19
|
+
size="large"
|
|
20
|
+
@click="
|
|
21
|
+
(createInviteDialog = true),
|
|
22
|
+
setServiceProvider({ mode: 'invite' })
|
|
23
|
+
"
|
|
24
|
+
>
|
|
25
|
+
Invite
|
|
26
|
+
</v-btn>
|
|
27
|
+
<v-btn
|
|
28
|
+
class="text-none mr-2"
|
|
29
|
+
rounded="pill"
|
|
30
|
+
variant="tonal"
|
|
31
|
+
size="large"
|
|
32
|
+
@click="
|
|
33
|
+
useRouter().push({
|
|
34
|
+
name: 'org-site-service-provider-mgmt-billing',
|
|
35
|
+
})
|
|
36
|
+
"
|
|
37
|
+
>
|
|
38
|
+
Billing
|
|
39
|
+
</v-btn>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
42
|
+
<v-text-field
|
|
43
|
+
placeholder="Search..."
|
|
44
|
+
variant="outlined"
|
|
45
|
+
density="comfortable"
|
|
46
|
+
clearable
|
|
47
|
+
hide-details
|
|
48
|
+
class="ml-2"
|
|
49
|
+
style="max-width: 250px"
|
|
50
|
+
/>
|
|
14
51
|
</v-row>
|
|
15
52
|
</v-col>
|
|
16
53
|
<v-col cols="12">
|
|
@@ -23,7 +60,12 @@
|
|
|
23
60
|
>
|
|
24
61
|
<v-toolbar density="compact" color="grey-lighten-4">
|
|
25
62
|
<template #prepend>
|
|
26
|
-
<v-btn
|
|
63
|
+
<v-btn
|
|
64
|
+
fab
|
|
65
|
+
icon
|
|
66
|
+
density="comfortable"
|
|
67
|
+
@click="_getAllServiceProvider()"
|
|
68
|
+
>
|
|
27
69
|
<v-icon>mdi-refresh</v-icon>
|
|
28
70
|
</v-btn>
|
|
29
71
|
</template>
|
|
@@ -36,7 +78,7 @@
|
|
|
36
78
|
<local-pagination
|
|
37
79
|
v-model="page"
|
|
38
80
|
:length="pages"
|
|
39
|
-
@update:value="
|
|
81
|
+
@update:value="_getAllServiceProvider()"
|
|
40
82
|
/>
|
|
41
83
|
</v-row>
|
|
42
84
|
</template>
|
|
@@ -52,28 +94,8 @@
|
|
|
52
94
|
hide-default-header
|
|
53
95
|
style="max-height: calc(100vh - (180px))"
|
|
54
96
|
>
|
|
55
|
-
<template #item.
|
|
56
|
-
<span class="text-
|
|
57
|
-
permissions
|
|
58
|
-
</span>
|
|
59
|
-
<v-chip>{{ value.length }}</v-chip>
|
|
60
|
-
</template>
|
|
61
|
-
|
|
62
|
-
<template #item.nature="{ item }">
|
|
63
|
-
<span class="text-capitalize">
|
|
64
|
-
{{ item.nature }}
|
|
65
|
-
</span>
|
|
66
|
-
</template>
|
|
67
|
-
|
|
68
|
-
<template #item.action-table="{ item }">
|
|
69
|
-
<v-menu :close-on-content-click="false" offset-y width="150">
|
|
70
|
-
<template v-slot:activator="{ props }">
|
|
71
|
-
<v-icon v-bind="props">mdi-dots-horizontal</v-icon>
|
|
72
|
-
</template>
|
|
73
|
-
<v-list>
|
|
74
|
-
<v-list-item @click=""> Delete Service Provider </v-list-item>
|
|
75
|
-
</v-list>
|
|
76
|
-
</v-menu>
|
|
97
|
+
<template #item.category="{ item }">
|
|
98
|
+
<span class="text-subtitle-2">{{ item.category }}</span>
|
|
77
99
|
</template>
|
|
78
100
|
</v-data-table>
|
|
79
101
|
</v-card>
|
|
@@ -81,16 +103,223 @@
|
|
|
81
103
|
</v-row>
|
|
82
104
|
|
|
83
105
|
<v-dialog v-model="createDialog" width="500" persistent>
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
106
|
+
<v-card width="100%">
|
|
107
|
+
<v-toolbar>
|
|
108
|
+
<v-row no-gutters class="fill-height px-6" align="center">
|
|
109
|
+
<span class="font-weight-bold text-h5"> Add Service Provider </span>
|
|
110
|
+
</v-row>
|
|
111
|
+
</v-toolbar>
|
|
112
|
+
<v-card-text style="max-height: 100vh; overflow-y: auto">
|
|
113
|
+
<v-form
|
|
114
|
+
v-model="validServiceProvider"
|
|
115
|
+
:disabled="disableServiceProvider"
|
|
116
|
+
>
|
|
117
|
+
<v-row no-gutters class="px-4">
|
|
118
|
+
<v-col cols="12" class="mt-2">
|
|
119
|
+
<v-row no-gutters>
|
|
120
|
+
<InputLabel class="text-capitalize" title="Name" required />
|
|
121
|
+
<v-col cols="12">
|
|
122
|
+
<v-text-field
|
|
123
|
+
v-model="serviceProvider.name"
|
|
124
|
+
density="comfortable"
|
|
125
|
+
:rules="[requiredRule]"
|
|
126
|
+
></v-text-field>
|
|
127
|
+
</v-col>
|
|
128
|
+
</v-row>
|
|
129
|
+
</v-col>
|
|
130
|
+
|
|
131
|
+
<v-col cols="12" class="mt-2">
|
|
132
|
+
<v-row no-gutters>
|
|
133
|
+
<InputLabel class="text-capitalize" title="Type" required />
|
|
134
|
+
<v-col cols="12">
|
|
135
|
+
<v-select
|
|
136
|
+
v-model="serviceProvider.type"
|
|
137
|
+
item-title="title"
|
|
138
|
+
item-value="value"
|
|
139
|
+
:items="natureOfBusiness"
|
|
140
|
+
density="comfortable"
|
|
141
|
+
:rules="[requiredRule]"
|
|
142
|
+
></v-select>
|
|
143
|
+
</v-col>
|
|
144
|
+
</v-row>
|
|
145
|
+
</v-col>
|
|
146
|
+
|
|
147
|
+
<v-col cols="12" class="mt-2">
|
|
148
|
+
<v-row no-gutters>
|
|
149
|
+
<InputLabel class="text-capitalize" title="Email" required />
|
|
150
|
+
<v-col cols="12">
|
|
151
|
+
<v-text-field
|
|
152
|
+
v-model="serviceProvider.email"
|
|
153
|
+
density="comfortable"
|
|
154
|
+
:rules="[emailRule, requiredRule]"
|
|
155
|
+
></v-text-field>
|
|
156
|
+
</v-col>
|
|
157
|
+
</v-row>
|
|
158
|
+
</v-col>
|
|
159
|
+
|
|
160
|
+
<v-col cols="12" class="mt-2">
|
|
161
|
+
<v-row no-gutters>
|
|
162
|
+
<InputLabel class="text-capitalize" title="Description" />
|
|
163
|
+
<v-col cols="12">
|
|
164
|
+
<v-textarea
|
|
165
|
+
v-model="serviceProvider.description"
|
|
166
|
+
density="comfortable"
|
|
167
|
+
no-resize
|
|
168
|
+
rows="2"
|
|
169
|
+
></v-textarea>
|
|
170
|
+
</v-col>
|
|
171
|
+
</v-row>
|
|
172
|
+
</v-col>
|
|
173
|
+
|
|
174
|
+
<v-col cols="12">
|
|
175
|
+
<v-checkbox
|
|
176
|
+
v-model="createMoreServiceProvider"
|
|
177
|
+
density="comfortable"
|
|
178
|
+
hide-details
|
|
179
|
+
>
|
|
180
|
+
<template #label>
|
|
181
|
+
<span class="text-subtitle-2 font-weight-bold">
|
|
182
|
+
Create more
|
|
183
|
+
</span>
|
|
184
|
+
</template>
|
|
185
|
+
</v-checkbox>
|
|
186
|
+
</v-col>
|
|
187
|
+
|
|
188
|
+
<v-col cols="12" class="my-2">
|
|
189
|
+
<v-row no-gutters>
|
|
190
|
+
<v-col cols="12" class="text-center">
|
|
191
|
+
<span
|
|
192
|
+
class="text-none text-subtitle-2 font-weight-medium text-error"
|
|
193
|
+
>
|
|
194
|
+
{{ messageServiceProvider }}
|
|
195
|
+
</span>
|
|
196
|
+
</v-col>
|
|
197
|
+
</v-row>
|
|
198
|
+
</v-col>
|
|
199
|
+
</v-row>
|
|
200
|
+
</v-form>
|
|
201
|
+
</v-card-text>
|
|
202
|
+
<v-toolbar>
|
|
203
|
+
<v-row class="px-6">
|
|
204
|
+
<v-col cols="6">
|
|
205
|
+
<v-btn
|
|
206
|
+
block
|
|
207
|
+
variant="text"
|
|
208
|
+
class="text-none"
|
|
209
|
+
size="large"
|
|
210
|
+
@click="setServiceProvider({ mode: 'add', dialog: false })"
|
|
211
|
+
>
|
|
212
|
+
Cancel
|
|
213
|
+
</v-btn>
|
|
214
|
+
</v-col>
|
|
215
|
+
|
|
216
|
+
<v-col cols="6">
|
|
217
|
+
<v-btn
|
|
218
|
+
block
|
|
219
|
+
variant="flat"
|
|
220
|
+
color="black"
|
|
221
|
+
class="text-none"
|
|
222
|
+
size="large"
|
|
223
|
+
:disabled="!validServiceProvider"
|
|
224
|
+
:loading="disableServiceProvider"
|
|
225
|
+
@click="submitServiceProviderAdd"
|
|
226
|
+
>
|
|
227
|
+
Submit
|
|
228
|
+
</v-btn>
|
|
229
|
+
</v-col>
|
|
230
|
+
</v-row>
|
|
231
|
+
</v-toolbar>
|
|
232
|
+
</v-card>
|
|
233
|
+
</v-dialog>
|
|
234
|
+
|
|
235
|
+
<v-dialog v-model="createInviteDialog" width="500" persistent>
|
|
236
|
+
<v-card width="100%">
|
|
237
|
+
<v-toolbar>
|
|
238
|
+
<v-row no-gutters class="fill-height px-6" align="center">
|
|
239
|
+
<span class="font-weight-bold text-h5">
|
|
240
|
+
Invite Service Provider
|
|
241
|
+
</span>
|
|
242
|
+
</v-row>
|
|
243
|
+
</v-toolbar>
|
|
244
|
+
<v-card-text style="max-height: 100vh; overflow-y: auto">
|
|
245
|
+
<v-form
|
|
246
|
+
v-model="validServiceProvider"
|
|
247
|
+
:disabled="disableServiceProvider"
|
|
248
|
+
>
|
|
249
|
+
<v-row no-gutters class="px-4">
|
|
250
|
+
<v-col cols="12" class="mt-2">
|
|
251
|
+
<v-row no-gutters>
|
|
252
|
+
<InputLabel class="text-capitalize" title="Email" required />
|
|
253
|
+
<v-col cols="12">
|
|
254
|
+
<v-text-field
|
|
255
|
+
v-model="serviceProvider.email"
|
|
256
|
+
density="comfortable"
|
|
257
|
+
:rules="[requiredRule, emailRule]"
|
|
258
|
+
></v-text-field>
|
|
259
|
+
</v-col>
|
|
260
|
+
</v-row>
|
|
261
|
+
</v-col>
|
|
262
|
+
|
|
263
|
+
<v-col cols="12">
|
|
264
|
+
<v-checkbox
|
|
265
|
+
v-model="createMoreServiceProvider"
|
|
266
|
+
density="comfortable"
|
|
267
|
+
hide-details
|
|
268
|
+
>
|
|
269
|
+
<template #label>
|
|
270
|
+
<span class="text-subtitle-2 font-weight-bold">
|
|
271
|
+
Invite more
|
|
272
|
+
</span>
|
|
273
|
+
</template>
|
|
274
|
+
</v-checkbox>
|
|
275
|
+
</v-col>
|
|
276
|
+
|
|
277
|
+
<v-col cols="12" class="my-2">
|
|
278
|
+
<v-row no-gutters>
|
|
279
|
+
<v-col cols="12" class="text-center">
|
|
280
|
+
<span
|
|
281
|
+
class="text-none text-subtitle-2 font-weight-medium text-error"
|
|
282
|
+
>
|
|
283
|
+
{{ messageServiceProvider }}
|
|
284
|
+
</span>
|
|
285
|
+
</v-col>
|
|
286
|
+
</v-row>
|
|
287
|
+
</v-col>
|
|
288
|
+
</v-row>
|
|
289
|
+
</v-form>
|
|
290
|
+
</v-card-text>
|
|
291
|
+
|
|
292
|
+
<v-toolbar>
|
|
293
|
+
<v-row class="px-6">
|
|
294
|
+
<v-col cols="6">
|
|
295
|
+
<v-btn
|
|
296
|
+
block
|
|
297
|
+
variant="text"
|
|
298
|
+
class="text-none"
|
|
299
|
+
size="large"
|
|
300
|
+
@click="setServiceProvider({ mode: 'invite', dialog: false })"
|
|
301
|
+
>
|
|
302
|
+
Cancel
|
|
303
|
+
</v-btn>
|
|
304
|
+
</v-col>
|
|
305
|
+
|
|
306
|
+
<v-col cols="6">
|
|
307
|
+
<v-btn
|
|
308
|
+
block
|
|
309
|
+
variant="flat"
|
|
310
|
+
color="black"
|
|
311
|
+
class="text-none"
|
|
312
|
+
size="large"
|
|
313
|
+
:disabled="!validServiceProvider"
|
|
314
|
+
:loading="disableServiceProvider"
|
|
315
|
+
@click="submitServiceProviderInvite()"
|
|
316
|
+
>
|
|
317
|
+
Submit
|
|
318
|
+
</v-btn>
|
|
319
|
+
</v-col>
|
|
320
|
+
</v-row>
|
|
321
|
+
</v-toolbar>
|
|
322
|
+
</v-card>
|
|
94
323
|
</v-dialog>
|
|
95
324
|
|
|
96
325
|
<Snackbar v-model="messageSnackbar" :text="message" :color="messageColor" />
|
|
@@ -130,10 +359,23 @@ const props = defineProps({
|
|
|
130
359
|
});
|
|
131
360
|
|
|
132
361
|
const headers = [
|
|
133
|
-
{
|
|
134
|
-
|
|
362
|
+
{
|
|
363
|
+
title: "Name",
|
|
364
|
+
value: "name",
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
title: "Status",
|
|
368
|
+
value: "status",
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
title: "Category",
|
|
372
|
+
value: "category",
|
|
373
|
+
},
|
|
135
374
|
];
|
|
136
375
|
|
|
376
|
+
const { natureOfBusiness } = useLocal();
|
|
377
|
+
const { requiredRule, emailRule } = useUtils();
|
|
378
|
+
|
|
137
379
|
const page = ref(1);
|
|
138
380
|
const pages = ref(0);
|
|
139
381
|
const pageRange = ref("-- - -- of --");
|
|
@@ -144,43 +386,59 @@ const messageColor = ref("");
|
|
|
144
386
|
|
|
145
387
|
const items = ref<Array<Record<string, any>>>([]);
|
|
146
388
|
|
|
147
|
-
const
|
|
389
|
+
const validServiceProvider = ref(false);
|
|
390
|
+
const disableServiceProvider = ref(false);
|
|
391
|
+
const createMoreServiceProvider = ref(false);
|
|
392
|
+
const messageServiceProvider = ref("");
|
|
393
|
+
const serviceProvider = ref({
|
|
394
|
+
name: "",
|
|
395
|
+
type: "",
|
|
396
|
+
email: "",
|
|
397
|
+
description: "",
|
|
398
|
+
orgId: "",
|
|
399
|
+
siteId: "",
|
|
400
|
+
siteName: "",
|
|
401
|
+
orgName: "",
|
|
402
|
+
category: "",
|
|
403
|
+
});
|
|
148
404
|
|
|
149
405
|
const {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
} =
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
406
|
+
getAll: getAllServiceProvider,
|
|
407
|
+
add: addServiceProvider,
|
|
408
|
+
invite: inviteServiceProvider,
|
|
409
|
+
} = useServiceProvider();
|
|
410
|
+
|
|
411
|
+
const loading = ref(true);
|
|
412
|
+
|
|
413
|
+
const { getSiteById } = useSite();
|
|
414
|
+
|
|
415
|
+
const { data: site } = await useLazyAsyncData(
|
|
416
|
+
"get-site-by-id-" + props.siteId,
|
|
417
|
+
() => getSiteById(props.siteId)
|
|
163
418
|
);
|
|
164
419
|
|
|
165
|
-
const
|
|
420
|
+
const { data: serviceProviderReq, refresh: _getAllServiceProvider } =
|
|
421
|
+
await useLazyAsyncData("get-all-service-providers", () =>
|
|
422
|
+
getAllServiceProvider({ siteId: props.siteId })
|
|
423
|
+
);
|
|
166
424
|
|
|
167
425
|
watchEffect(() => {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}));
|
|
174
|
-
pages.value = getAllReq.value.pages;
|
|
175
|
-
pageRange.value = getAllReq.value.pageRange;
|
|
426
|
+
// console.log("serviceProviderReq", serviceProviderReq.value);
|
|
427
|
+
if (serviceProviderReq.value) {
|
|
428
|
+
items.value = serviceProviderReq.value.items;
|
|
429
|
+
pages.value = serviceProviderReq.value.pages;
|
|
430
|
+
pageRange.value = serviceProviderReq.value.pageRange;
|
|
176
431
|
}
|
|
432
|
+
loading.value = false;
|
|
177
433
|
});
|
|
178
434
|
|
|
179
435
|
const createDialog = ref(false);
|
|
436
|
+
const createInviteDialog = ref(false);
|
|
180
437
|
|
|
181
438
|
const success = () => {
|
|
182
439
|
createDialog.value = false;
|
|
183
|
-
getServiceProvider();
|
|
440
|
+
// getServiceProvider();
|
|
441
|
+
_getAllServiceProvider();
|
|
184
442
|
};
|
|
185
443
|
|
|
186
444
|
function showMessage(msg: string, color: string) {
|
|
@@ -192,4 +450,86 @@ function showMessage(msg: string, color: string) {
|
|
|
192
450
|
function onNotify(payload: { message: string; color: string }) {
|
|
193
451
|
showMessage(payload.message, payload.color);
|
|
194
452
|
}
|
|
453
|
+
|
|
454
|
+
const dialogServiceProviderInvite = ref(false);
|
|
455
|
+
const dialogServiceProviderAdd = ref(false);
|
|
456
|
+
|
|
457
|
+
function setServiceProvider({
|
|
458
|
+
mode = "invite",
|
|
459
|
+
dialog = true,
|
|
460
|
+
data = {} as Record<string, any>,
|
|
461
|
+
} = {}) {
|
|
462
|
+
if (mode === "invite") {
|
|
463
|
+
// dialogServiceProviderInvite.value = dialog;
|
|
464
|
+
createInviteDialog.value = dialog;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
if (mode === "add") {
|
|
468
|
+
// dialogServiceProviderAdd.value = dialog;
|
|
469
|
+
createDialog.value = dialog;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
if (dialog) {
|
|
473
|
+
serviceProvider.value = {
|
|
474
|
+
name: "",
|
|
475
|
+
type: "",
|
|
476
|
+
email: "",
|
|
477
|
+
description: "",
|
|
478
|
+
orgId: props.orgId,
|
|
479
|
+
siteId: props.siteId,
|
|
480
|
+
siteName: site.value?.name ?? "",
|
|
481
|
+
orgName: "Org Name",
|
|
482
|
+
category: mode === "add" ? "internal" : "external",
|
|
483
|
+
};
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
serviceProvider.value.description = data.description ?? "";
|
|
488
|
+
serviceProvider.value.email = data.email ?? "";
|
|
489
|
+
serviceProvider.value.name = data.name ?? "";
|
|
490
|
+
serviceProvider.value.type = data.type ?? "";
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
async function submitServiceProviderAdd() {
|
|
494
|
+
disableServiceProvider.value = true;
|
|
495
|
+
messageServiceProvider.value = "";
|
|
496
|
+
|
|
497
|
+
try {
|
|
498
|
+
console.log("serviceProvider.value");
|
|
499
|
+
console.log(serviceProvider.value);
|
|
500
|
+
await addServiceProvider(serviceProvider.value);
|
|
501
|
+
await setServiceProvider({ mode: "add", dialog: false });
|
|
502
|
+
await _getAllServiceProvider();
|
|
503
|
+
} catch (error: any) {
|
|
504
|
+
messageServiceProvider.value =
|
|
505
|
+
error?.response?._data?.message ??
|
|
506
|
+
"An error occurred while adding the service provider.";
|
|
507
|
+
} finally {
|
|
508
|
+
disableServiceProvider.value = false;
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
async function submitServiceProviderInvite() {
|
|
513
|
+
disableServiceProvider.value = true;
|
|
514
|
+
messageServiceProvider.value = "";
|
|
515
|
+
try {
|
|
516
|
+
await inviteServiceProvider({
|
|
517
|
+
email: serviceProvider.value.email,
|
|
518
|
+
orgId: props.orgId,
|
|
519
|
+
siteId: props.siteId,
|
|
520
|
+
siteName: site.value?.name ?? "",
|
|
521
|
+
});
|
|
522
|
+
if (createMoreServiceProvider.value) {
|
|
523
|
+
serviceProvider.value.email = "";
|
|
524
|
+
} else {
|
|
525
|
+
await setServiceProvider({ mode: "invite", dialog: false });
|
|
526
|
+
}
|
|
527
|
+
} catch (error: any) {
|
|
528
|
+
messageServiceProvider.value =
|
|
529
|
+
error?.response?._data?.message ??
|
|
530
|
+
"An error occurred while inviting the service provider.";
|
|
531
|
+
} finally {
|
|
532
|
+
disableServiceProvider.value = false;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
195
535
|
</script>
|