@quoreadmin/ui 1.7.3 → 1.7.5
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/dist/index140.js +364 -307
- package/dist/index142.js +1 -1
- package/dist/index175.js +4 -4
- package/dist/index182.js +8 -8
- package/dist/index184.js +8 -8
- package/dist/index186.js +36 -1190
- package/dist/index188.js +1190 -36
- package/dist/index190.js +26 -26
- package/dist/index191.js +1 -1
- package/dist/index192.js +1 -1
- package/dist/index201.js +1 -1
- package/dist/index208.js +2 -2
- package/dist/index209.js +1 -1
- package/dist/index210.js +1 -1
- package/dist/index211.js +1 -1
- package/dist/index212.js +1 -1
- package/dist/index213.js +4 -4
- package/dist/index215.js +4 -4
- package/dist/index218.js +1 -1
- package/dist/index219.js +160 -21
- package/dist/index220.js +228 -22
- package/dist/index221.js +36 -19
- package/dist/index222.js +9 -835
- package/dist/index223.js +104 -645
- package/dist/index224.js +20 -176
- package/dist/index225.js +12 -12
- package/dist/index226.js +15 -13
- package/dist/index227.js +198 -21
- package/dist/index228.js +69 -19
- package/dist/index229.js +34 -20
- package/dist/index230.js +39 -19
- package/dist/index231.js +127 -3
- package/dist/index232.js +24 -173
- package/dist/index233.js +78 -131
- package/dist/index234.js +19 -160
- package/dist/index235.js +20 -1223
- package/dist/index236.js +19 -126
- package/dist/index237.js +11 -11
- package/dist/index238.js +11 -11
- package/dist/index239.js +13 -11
- package/dist/index240.js +11 -13
- package/dist/index241.js +819 -21
- package/dist/index242.js +701 -28
- package/dist/index243.js +176 -20
- package/dist/index244.js +14 -12
- package/dist/index245.js +20 -2
- package/dist/index246.js +20 -2
- package/dist/index247.js +3 -161
- package/dist/index248.js +178 -219
- package/dist/index249.js +132 -36
- package/dist/index250.js +1222 -9
- package/dist/index251.js +13 -15
- package/dist/index252.js +21 -198
- package/dist/index253.js +21 -69
- package/dist/index254.js +28 -33
- package/dist/index255.js +19 -39
- package/dist/index256.js +20 -80
- package/dist/index257.js +2 -20
- package/dist/index258.js +2 -20
- package/dist/index259.js +6 -6
- package/dist/index274.js +2 -2
- package/dist/index279.js +46 -71
- package/dist/index280.js +71 -71
- package/dist/index281.js +17 -13
- package/dist/index282.js +22 -935
- package/dist/index283.js +8 -8
- package/dist/index284.js +16 -20
- package/dist/index285.js +17 -20
- package/dist/index286.js +22 -68
- package/dist/index287.js +2 -19
- package/dist/index288.js +3 -19
- package/dist/index289.js +26 -53
- package/dist/index290.js +1518 -22
- package/dist/index291.js +386 -22
- package/dist/index292.js +2731 -63
- package/dist/index293.js +86 -2
- package/dist/index294.js +3770 -26
- package/dist/index295.js +59 -21
- package/dist/index296.js +78 -21
- package/dist/index297.js +22 -16
- package/dist/index298.js +934 -16
- package/dist/index299.js +21 -22
- package/dist/index300.js +20 -3
- package/dist/index301.js +19 -26
- package/dist/index302.js +69 -1518
- package/dist/index303.js +19 -386
- package/dist/index304.js +19 -2731
- package/dist/index305.js +21 -85
- package/dist/index306.js +22 -3770
- package/dist/index307.js +63 -60
- package/dist/index309.js +1 -1
- package/dist/index310.js +3 -3
- package/dist/index311.js +2 -2
- package/dist/index330.js +8 -19
- package/dist/index331.js +12 -19
- package/dist/index332.js +51 -60
- package/dist/index333.js +12 -37
- package/dist/index334.js +13 -8
- package/dist/index335.js +57 -12
- package/dist/index336.js +48 -51
- package/dist/index337.js +28 -9
- package/dist/index338.js +2 -14
- package/dist/index339.js +5 -58
- package/dist/index340.js +2 -52
- package/dist/index341.js +22 -30
- package/dist/index342.js +41 -2
- package/dist/index343.js +2 -5
- package/dist/index344.js +11 -2
- package/dist/index345.js +19 -22
- package/dist/index346.js +14 -38
- package/dist/index347.js +10 -2
- package/dist/index348.js +9 -10
- package/dist/index349.js +2 -20
- package/dist/index350.js +8 -16
- package/dist/index351.js +10 -10
- package/dist/index352.js +13 -9
- package/dist/index353.js +20 -2
- package/dist/index354.js +20 -9
- package/dist/index355.js +63 -9
- package/dist/index356.js +37 -14
- package/dist/index370.js +98 -95
- package/dist/index371.js +90 -100
- package/dist/index372.js +98 -91
- package/dist/src/components/room-details-popover/room-details-popover.d.ts +4 -1
- package/package.json +1 -1
- /package/dist/{index189.js → index187.js} +0 -0
package/dist/index140.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { defineComponent as dt, ref as
|
|
1
|
+
import { defineComponent as dt, ref as i, computed as y, watch as F, onMounted as mt, onUnmounted as pt } from "vue";
|
|
2
2
|
import { useI18n as vt } from "vue-i18n";
|
|
3
|
-
import { DateTime as
|
|
4
|
-
import "./
|
|
3
|
+
import { DateTime as _ } from "./index163.js";
|
|
4
|
+
import "./index186.js";
|
|
5
5
|
import ft from "./index2.js";
|
|
6
6
|
import ht from "./index3.js";
|
|
7
7
|
import yt from "./index4.js";
|
|
8
8
|
import gt from "./index21.js";
|
|
9
|
-
import
|
|
10
|
-
import
|
|
9
|
+
import _t from "./index28.js";
|
|
10
|
+
import wt from "./index39.js";
|
|
11
11
|
import It from "./index20.js";
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import z from "./
|
|
16
|
-
const
|
|
12
|
+
import Dt from "./index46.js";
|
|
13
|
+
import Tt from "./index47.js";
|
|
14
|
+
import Ot from "./index49.js";
|
|
15
|
+
import z from "./index187.js";
|
|
16
|
+
const Bt = dt({
|
|
17
17
|
name: "QRoomDetailsPopover",
|
|
18
18
|
components: {
|
|
19
19
|
QAccordion: ft,
|
|
@@ -21,11 +21,11 @@ const Ft = dt({
|
|
|
21
21
|
QAvatar: yt,
|
|
22
22
|
QDatePicker: It,
|
|
23
23
|
QDivider: gt,
|
|
24
|
-
QIcon:
|
|
25
|
-
QPopover:
|
|
26
|
-
QTag:
|
|
27
|
-
QTextarea:
|
|
28
|
-
QTooltip:
|
|
24
|
+
QIcon: _t,
|
|
25
|
+
QPopover: wt,
|
|
26
|
+
QTag: Dt,
|
|
27
|
+
QTextarea: Tt,
|
|
28
|
+
QTooltip: Ot
|
|
29
29
|
},
|
|
30
30
|
props: {
|
|
31
31
|
id: {
|
|
@@ -146,23 +146,23 @@ const Ft = dt({
|
|
|
146
146
|
},
|
|
147
147
|
emits: ["create:callback", "create:todo", "refresh:pms", "show:toast", "toggle"],
|
|
148
148
|
setup(n, { emit: h }) {
|
|
149
|
-
const { t:
|
|
149
|
+
const { t: c } = vt(), l = i(null), ie = i(!1), ue = i("left"), K = i([
|
|
150
150
|
{
|
|
151
151
|
id: 1,
|
|
152
|
-
label:
|
|
152
|
+
label: c("HC_DEPARTMENT")
|
|
153
153
|
// need to localize
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
156
|
id: 2,
|
|
157
|
-
label:
|
|
157
|
+
label: c("HC_PERSON")
|
|
158
158
|
// need to localize
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
id: 0,
|
|
162
|
-
label:
|
|
162
|
+
label: c("HC_ANYONE")
|
|
163
163
|
// need to localize
|
|
164
164
|
}
|
|
165
|
-
]),
|
|
165
|
+
]), A = i(""), v = i({
|
|
166
166
|
checkInDate: /* @__PURE__ */ new Date(),
|
|
167
167
|
checkOutDate: /* @__PURE__ */ new Date(),
|
|
168
168
|
guestEmail: "",
|
|
@@ -170,19 +170,19 @@ const Ft = dt({
|
|
|
170
170
|
guestMood: null,
|
|
171
171
|
guestName: "",
|
|
172
172
|
guestPhone: "",
|
|
173
|
-
inHouse: !!
|
|
173
|
+
inHouse: !!l.value?.tokenId || !1,
|
|
174
174
|
problem: null,
|
|
175
175
|
notes: "",
|
|
176
|
-
tokenId:
|
|
177
|
-
}),
|
|
176
|
+
tokenId: l.value?.tokenId
|
|
177
|
+
}), B = i(250), G = i(290), N = i([]), we = i([]), X = i(!0), Z = i(!0), M = i({
|
|
178
178
|
info: !0,
|
|
179
179
|
tickets: !0,
|
|
180
180
|
comments: !0
|
|
181
|
-
}), ee =
|
|
181
|
+
}), ee = i(!0), Ae = i(n.guestDetails), T = i([]), b = i({
|
|
182
182
|
pms: !1,
|
|
183
183
|
roomNotices: !1,
|
|
184
184
|
tickets: !1
|
|
185
|
-
}), C =
|
|
185
|
+
}), C = i([]), ce = i([]), de = i("bottom"), te = i(null), R = i(!1), W = i(!1), U = i(""), me = i(!1), S = i(!1), O = i(null), j = i(null), be = 3e4, u = i({
|
|
186
186
|
assignType: null,
|
|
187
187
|
department: null,
|
|
188
188
|
due: /* @__PURE__ */ new Date(),
|
|
@@ -192,40 +192,40 @@ const Ft = dt({
|
|
|
192
192
|
requestedBy: null,
|
|
193
193
|
when: null,
|
|
194
194
|
where: null
|
|
195
|
-
}), $ =
|
|
195
|
+
}), $ = i([
|
|
196
196
|
{
|
|
197
197
|
id: 0,
|
|
198
|
-
label:
|
|
198
|
+
label: c("HC_STAFF_MEMBER")
|
|
199
199
|
// need to localize
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
id: 1,
|
|
203
|
-
label:
|
|
203
|
+
label: c("HC_HOTEL_GUEST")
|
|
204
204
|
// need to localize
|
|
205
205
|
}
|
|
206
|
-
]), Ce =
|
|
206
|
+
]), Ce = i(!1), k = i(null), w = i({
|
|
207
207
|
endDate: /* @__PURE__ */ new Date(),
|
|
208
208
|
issue: null,
|
|
209
209
|
notes: "",
|
|
210
210
|
startDate: /* @__PURE__ */ new Date()
|
|
211
|
-
}), ae =
|
|
211
|
+
}), ae = i([]), oe = i(!1), E = i([]), H = i([]), Ne = i([
|
|
212
212
|
{
|
|
213
|
-
label:
|
|
213
|
+
label: c("HC_COMPLAINT"),
|
|
214
214
|
id: "complaint"
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
|
-
label:
|
|
217
|
+
label: c("HC_REQUEST"),
|
|
218
218
|
id: "request"
|
|
219
219
|
},
|
|
220
220
|
{
|
|
221
|
-
label:
|
|
221
|
+
label: c("HC_ROOM_NOTICE"),
|
|
222
222
|
id: "room_notice"
|
|
223
223
|
},
|
|
224
224
|
{
|
|
225
|
-
label:
|
|
225
|
+
label: c("HC_WORK_ORDER"),
|
|
226
226
|
id: "work_order"
|
|
227
227
|
}
|
|
228
|
-
]), Q =
|
|
228
|
+
]), Q = i(), L = i(null), p = i({
|
|
229
229
|
assignType: null,
|
|
230
230
|
department: null,
|
|
231
231
|
due: /* @__PURE__ */ new Date(),
|
|
@@ -234,8 +234,8 @@ const Ft = dt({
|
|
|
234
234
|
notes: "",
|
|
235
235
|
person: null,
|
|
236
236
|
requestedBy: null
|
|
237
|
-
}), pe =
|
|
238
|
-
switch (
|
|
237
|
+
}), pe = i([]), P = i([]), q = i([]), ve = y(() => {
|
|
238
|
+
switch (l.value.cleaning?.name || l.value.cleaningStatus) {
|
|
239
239
|
case "CLEAN":
|
|
240
240
|
case "INSPECTED":
|
|
241
241
|
return "CLEAN";
|
|
@@ -247,52 +247,55 @@ const Ft = dt({
|
|
|
247
247
|
default:
|
|
248
248
|
return "";
|
|
249
249
|
}
|
|
250
|
-
}),
|
|
251
|
-
const e =
|
|
250
|
+
}), Me = y(() => ve.value === "CLEAN" ? "blue-10" : ve.value === "DIRTY" ? "red-10" : "gray-30"), Re = y(() => {
|
|
251
|
+
const e = l.value.cleaning?.name || l.value.cleaningStatus;
|
|
252
|
+
return e ? c(`HC_${e}`) : "";
|
|
253
|
+
}), He = y(() => {
|
|
254
|
+
const e = A.value.toLowerCase();
|
|
252
255
|
return n.quickReplies.filter((a) => a.toLowerCase().match(e));
|
|
253
|
-
}),
|
|
256
|
+
}), Le = y(() => {
|
|
254
257
|
if (!C.value.length) return [];
|
|
255
258
|
const e = [];
|
|
256
259
|
let a = null;
|
|
257
260
|
return C.value.forEach((t) => {
|
|
258
|
-
const
|
|
261
|
+
const o = _.fromFormat(
|
|
259
262
|
t.dateUtc,
|
|
260
263
|
"yyyy-MM-dd HH:mm:ss",
|
|
261
264
|
{ zone: "utc" }
|
|
262
|
-
).setZone(n.propertyTimeZone),
|
|
263
|
-
|
|
265
|
+
).setZone(n.propertyTimeZone), s = o.toFormat("yyyy-MM-dd-HH");
|
|
266
|
+
s !== a && (e.push({
|
|
264
267
|
type: "separator",
|
|
265
|
-
label:
|
|
266
|
-
hourKey:
|
|
267
|
-
}), a =
|
|
268
|
+
label: o.toFormat("ccc, LLL d 'at' h:mma").replace("AM", "am").replace("PM", "pm"),
|
|
269
|
+
hourKey: s
|
|
270
|
+
}), a = s), e.push({
|
|
268
271
|
type: "message",
|
|
269
272
|
...t,
|
|
270
|
-
formattedTime:
|
|
273
|
+
formattedTime: o.toFormat("h:mma").replace("AM", "am").replace("PM", "pm")
|
|
271
274
|
});
|
|
272
275
|
}), e;
|
|
273
|
-
}), Ie = y(() =>
|
|
276
|
+
}), Ie = y(() => E.value.length ? !!E.value.find(
|
|
274
277
|
(a) => a.type === "complaint"
|
|
275
|
-
) : !1),
|
|
278
|
+
) : !1), Pe = y(() => E.value.length ? !!E.value.find(
|
|
276
279
|
(a) => a.type === "callback"
|
|
277
|
-
) : !1),
|
|
280
|
+
) : !1), qe = y(() => {
|
|
278
281
|
let e = [];
|
|
279
|
-
return
|
|
282
|
+
return T.value[0] && T.value[0].options === void 0 ? T.value.forEach((a) => {
|
|
280
283
|
e.push({
|
|
281
284
|
id: parseInt(a.id),
|
|
282
285
|
label: a.display_name
|
|
283
286
|
});
|
|
284
|
-
}) : e =
|
|
285
|
-
}),
|
|
286
|
-
switch (
|
|
287
|
+
}) : e = T.value, e;
|
|
288
|
+
}), De = y(() => l.value.occupancy?.name === "OCCUPIED" || l.value.occupancyStatus === "OCCUPIED"), xe = y(() => De.value && Ie.value ? "HK_ROOM_STATUS_Occupied_Complaint" : "HK_ROOM_STATUS_Occupied"), Fe = y(() => {
|
|
289
|
+
switch (k.value?.id) {
|
|
287
290
|
case "request":
|
|
288
291
|
case "work_order":
|
|
289
292
|
return K.value[0];
|
|
290
293
|
default:
|
|
291
294
|
return null;
|
|
292
295
|
}
|
|
293
|
-
}),
|
|
296
|
+
}), Be = y(() => {
|
|
294
297
|
if (N.value)
|
|
295
|
-
switch (
|
|
298
|
+
switch (k.value?.id) {
|
|
296
299
|
case "request":
|
|
297
300
|
return N.value.find((e) => parseInt(e.id) === 4);
|
|
298
301
|
case "work_order":
|
|
@@ -302,7 +305,7 @@ const Ft = dt({
|
|
|
302
305
|
}
|
|
303
306
|
return null;
|
|
304
307
|
}), Ge = y(() => {
|
|
305
|
-
switch (
|
|
308
|
+
switch (k.value?.id) {
|
|
306
309
|
case "request":
|
|
307
310
|
return $.value[1];
|
|
308
311
|
case "work_order":
|
|
@@ -312,76 +315,76 @@ const Ft = dt({
|
|
|
312
315
|
}
|
|
313
316
|
}), We = y(() => {
|
|
314
317
|
let e = "";
|
|
315
|
-
if (
|
|
316
|
-
const a =
|
|
317
|
-
|
|
318
|
-
), t = a.toFormat("MMM"),
|
|
319
|
-
|
|
320
|
-
),
|
|
321
|
-
e += t + " " +
|
|
318
|
+
if (l.value && l.value.reservations[0]) {
|
|
319
|
+
const a = _.fromISO(
|
|
320
|
+
l.value.reservations[0].arrivalDate
|
|
321
|
+
), t = a.toFormat("MMM"), o = a.day, s = a.year, r = _.fromISO(
|
|
322
|
+
l.value.reservations[0].departureDate
|
|
323
|
+
), d = r.toFormat("MMM"), m = r.day, f = r.year;
|
|
324
|
+
e += t + " " + o, s !== f && (e += ", " + s), t === d ? e += "-" + m : e += " - " + d + " " + m, e += ", " + f;
|
|
322
325
|
}
|
|
323
326
|
return e;
|
|
324
327
|
}), Ue = y(() => {
|
|
325
328
|
let e = ae.value;
|
|
326
329
|
return e = [...new Set(e)], e;
|
|
327
330
|
}), je = y(() => {
|
|
328
|
-
const e =
|
|
331
|
+
const e = k.value?.id;
|
|
329
332
|
if (!e)
|
|
330
333
|
return !1;
|
|
331
334
|
switch (e) {
|
|
332
335
|
case "room_notice":
|
|
333
|
-
return
|
|
336
|
+
return w.value.issue && w.value.startDate && w.value.endDate;
|
|
334
337
|
case "complaint":
|
|
335
338
|
return v.value.problem && v.value.guestName && v.value.guestMood;
|
|
336
339
|
case "work_order":
|
|
337
|
-
return
|
|
340
|
+
return p.value.item && p.value.issue && p.value.requestedBy && p.value.due && (p.value.assignType && p.value.assignType.id === 0 || p.value.assignType && p.value.assignType.id === 1 && p.value.department || p.value.assignType && p.value.assignType.id === 2 && p.value.person);
|
|
338
341
|
case "request": {
|
|
339
|
-
const a =
|
|
342
|
+
const a = u.value.item && u.value.requestedBy && u.value.due && (u.value.assignType && u.value.assignType.id === 0 || u.value.assignType && u.value.assignType.id === 1 && u.value.department || u.value.assignType && u.value.assignType.id === 2 && u.value.person), t = n.allowWhenWhere ? u.value.when && u.value.where : !0;
|
|
340
343
|
return a && t;
|
|
341
344
|
}
|
|
342
345
|
default:
|
|
343
346
|
return !1;
|
|
344
347
|
}
|
|
345
|
-
}),
|
|
346
|
-
|
|
348
|
+
}), Te = () => {
|
|
349
|
+
oe.value = !1, R.value = !1, ie.value = !1, T.value = [], ce.value = [], pe.value = [], P.value = [], q.value = [], k.value = null, w.value.issue = null, w.value.startDate = /* @__PURE__ */ new Date(), w.value.endDate = /* @__PURE__ */ new Date(), w.value.notes = "", v.value.guestName = "", v.value.guestEmail = "", v.value.guestPhone = "", v.value.guestMood = null, v.value.guestLoyalty = "", v.value.problem = null, v.value.checkInDate = /* @__PURE__ */ new Date(), v.value.checkOutDate = /* @__PURE__ */ new Date(), v.value.notes = "", p.value.assignType = null, p.value.department = null, p.value.person = null, p.value.due = /* @__PURE__ */ new Date(), p.value.item = null, p.value.issue = null, p.value.notes = "", u.value.assignType = null, u.value.department = null, u.value.person = null, u.value.due = /* @__PURE__ */ new Date(), u.value.item = null, u.value.notes = "", u.value.when = null, u.value.where = null;
|
|
347
350
|
}, $e = async () => {
|
|
348
|
-
h("create:callback",
|
|
349
|
-
},
|
|
351
|
+
h("create:callback", l.value), h("toggle", !1);
|
|
352
|
+
}, x = (e) => {
|
|
350
353
|
const a = [];
|
|
351
|
-
(Array.isArray(e) ? e : Object.values(e)).forEach((
|
|
352
|
-
const
|
|
353
|
-
let
|
|
354
|
-
id:
|
|
355
|
-
isPropertyEmployee:
|
|
356
|
-
isSent: !!
|
|
357
|
-
isSystemMessage:
|
|
354
|
+
(Array.isArray(e) ? e : Object.values(e)).forEach((o) => {
|
|
355
|
+
const s = o.senderType || o.sender_type, r = o.senderName || "", d = o.senderId || o.sender_id, m = o.profileImg || o.profile_img, f = r ? r.split(" ") : ["", ""], g = o.user_first_name || o.guest_first_name || f[0] || "", V = o.user_last_name || o.guest_last_name || f.slice(1).join(" ") || "", re = g && V ? `${g} ${V}` : g || "Auto-Reply", le = s === "system" || s === "user", I = s === "guest";
|
|
356
|
+
let D = {
|
|
357
|
+
id: o.id,
|
|
358
|
+
isPropertyEmployee: s === "user",
|
|
359
|
+
isSent: !!o.sent,
|
|
360
|
+
isSystemMessage: s === "system",
|
|
358
361
|
isStaffMessage: le,
|
|
359
362
|
isGuestMessage: I,
|
|
360
|
-
comment:
|
|
361
|
-
dateUtc:
|
|
363
|
+
comment: o.content,
|
|
364
|
+
dateUtc: o.sent || o.created,
|
|
362
365
|
user: {
|
|
363
366
|
firstName: g || "Auto-Reply",
|
|
364
367
|
icon: "",
|
|
365
|
-
id:
|
|
368
|
+
id: d || "system-message",
|
|
366
369
|
initials: "",
|
|
367
370
|
lastName: V || "",
|
|
368
371
|
name: re,
|
|
369
|
-
src:
|
|
372
|
+
src: m || ""
|
|
370
373
|
}
|
|
371
374
|
};
|
|
372
|
-
|
|
375
|
+
D.user.firstName && D.user.lastName ? D.user.initials = D.user.firstName[0] + D.user.lastName[0] : D.user.firstName && (D.user.initials = D.user.firstName[0]), le && (D.user.icon = "property-fill"), a.push(D);
|
|
373
376
|
}), C.value = a;
|
|
374
377
|
}, Qe = (e) => {
|
|
375
378
|
if (!e || e.length === 0) return;
|
|
376
379
|
(Array.isArray(e) ? e : Object.values(e)).forEach((t) => {
|
|
377
|
-
if (C.value.some((
|
|
380
|
+
if (C.value.some((D) => D.id === t.id))
|
|
378
381
|
return;
|
|
379
|
-
const
|
|
382
|
+
const o = t.senderType || t.sender_type, s = t.senderName || "", r = t.senderId || t.sender_id, d = t.profileImg || t.profile_img, m = s ? s.split(" ") : ["", ""], f = t.user_first_name || t.guest_first_name || m[0] || "", g = t.user_last_name || t.guest_last_name || m.slice(1).join(" ") || "", V = f && g ? `${f} ${g}` : f || "Auto-Reply", re = o === "system" || o === "user", le = o === "guest";
|
|
380
383
|
let I = {
|
|
381
384
|
id: t.id,
|
|
382
|
-
isPropertyEmployee:
|
|
385
|
+
isPropertyEmployee: o === "user",
|
|
383
386
|
isSent: !!t.sent,
|
|
384
|
-
isSystemMessage:
|
|
387
|
+
isSystemMessage: o === "system",
|
|
385
388
|
isStaffMessage: re,
|
|
386
389
|
isGuestMessage: le,
|
|
387
390
|
comment: t.content,
|
|
@@ -393,32 +396,32 @@ const Ft = dt({
|
|
|
393
396
|
initials: "",
|
|
394
397
|
lastName: g || "",
|
|
395
398
|
name: V,
|
|
396
|
-
src:
|
|
399
|
+
src: d || ""
|
|
397
400
|
}
|
|
398
401
|
};
|
|
399
402
|
I.user.firstName && I.user.lastName ? I.user.initials = I.user.firstName[0] + I.user.lastName[0] : I.user.firstName && (I.user.initials = I.user.firstName[0]), re && (I.user.icon = "property-fill"), C.value.push(I);
|
|
400
403
|
});
|
|
401
404
|
}, fe = async (e = !1) => {
|
|
402
|
-
if (n.showComments &&
|
|
405
|
+
if (n.showComments && l.value.tokenId)
|
|
403
406
|
try {
|
|
404
|
-
let a = `/api/client/connect/getMessages.php?tokenId=${
|
|
405
|
-
e &&
|
|
406
|
-
const
|
|
407
|
+
let a = `/api/client/connect/getMessages.php?tokenId=${l.value.tokenId}`;
|
|
408
|
+
e && O.value !== null && (a += `&lastMsgId=${O.value}`);
|
|
409
|
+
const o = await (await fetch(a, {
|
|
407
410
|
method: "GET",
|
|
408
411
|
credentials: "include"
|
|
409
412
|
})).json();
|
|
410
|
-
if (
|
|
411
|
-
throw new Error(
|
|
412
|
-
if (
|
|
413
|
-
|
|
414
|
-
const
|
|
415
|
-
H.value.push(
|
|
416
|
-
} else e ||
|
|
413
|
+
if (o.status === "error")
|
|
414
|
+
throw new Error(o.message || "Failed to get messages");
|
|
415
|
+
if (S.value = !o.closed, o.messages && o.messages.length > 0) {
|
|
416
|
+
O.value = o.messages[o.messages.length - 1].id, e ? Qe(o.messages) : x(o.messages);
|
|
417
|
+
const s = setTimeout(Y, 100);
|
|
418
|
+
H.value.push(s);
|
|
419
|
+
} else e || x(o.messages || []);
|
|
417
420
|
} catch (a) {
|
|
418
421
|
console.error("getChatMessages error:", a);
|
|
419
422
|
}
|
|
420
423
|
}, Je = (e) => {
|
|
421
|
-
const a =
|
|
424
|
+
const a = _.utc(), t = _.fromFormat(e, "yyyy-MM-dd HH:mm:ss", { zone: "utc" }), o = a.diff(
|
|
422
425
|
t,
|
|
423
426
|
[
|
|
424
427
|
"years",
|
|
@@ -427,56 +430,61 @@ const Ft = dt({
|
|
|
427
430
|
"hours",
|
|
428
431
|
"minutes"
|
|
429
432
|
]
|
|
430
|
-
),
|
|
431
|
-
if (
|
|
432
|
-
return
|
|
433
|
+
), s = Math.floor(o.years), r = Math.floor(o.months), d = Math.floor(o.days), m = Math.floor(o.hours), f = Math.floor(o.minutes);
|
|
434
|
+
if (s)
|
|
435
|
+
return s === 1 ? c("HC_ONE_YEAR_AGO") : c("HC_X_YEARS_AGO", { years: s });
|
|
433
436
|
if (r)
|
|
434
|
-
return r === 1 ?
|
|
435
|
-
if (c)
|
|
436
|
-
return c === 1 ? p("HC_ONE_DAY_AGO") : p("HC_X_DAYS_AGO", { days: c });
|
|
437
|
+
return r === 1 ? c("HC_ONE_MONTH_AGO") : c("HC_X_MONTHS_AGO", { months: r });
|
|
437
438
|
if (d)
|
|
438
|
-
return d === 1 ?
|
|
439
|
+
return d === 1 ? c("HC_ONE_DAY_AGO") : c("HC_X_DAYS_AGO", { days: d });
|
|
440
|
+
if (m)
|
|
441
|
+
return m === 1 ? c("HC_ONE_HOUR_AGO") : c("HC_X_HOURS_AGO", { hours: m });
|
|
439
442
|
if (f)
|
|
440
|
-
return f === 1 ?
|
|
443
|
+
return f === 1 ? c("HC_ONE_MINUTE_AGO") : c("HC_X_MINUTES_AGO", { minutes: f });
|
|
441
444
|
if (f === 0)
|
|
442
|
-
return
|
|
445
|
+
return c("HC_A_MOMENT_AGO");
|
|
443
446
|
}, Ye = async () => {
|
|
444
|
-
n.showGuestDetails &&
|
|
445
|
-
},
|
|
447
|
+
n.showGuestDetails && se(), ne(), J(), h("refresh:pms", l.value);
|
|
448
|
+
}, se = async () => {
|
|
446
449
|
try {
|
|
447
|
-
|
|
450
|
+
b.value.pms = !0;
|
|
448
451
|
const e = new AbortController(), a = setTimeout(() => e.abort(), 45e3);
|
|
449
452
|
H.value.push(a);
|
|
450
453
|
const t = n.pmsBaseUrl;
|
|
451
454
|
if (!t)
|
|
452
455
|
throw new Error("PMS base URL is required");
|
|
453
|
-
const
|
|
456
|
+
const o = {
|
|
454
457
|
Authorization: "Bearer " + (() => {
|
|
455
458
|
const g = `; ${document.cookie}`.split("; QV2Auth=");
|
|
456
459
|
return g.length === 2 && g.pop()?.split(";").shift() || "";
|
|
457
460
|
})(),
|
|
458
461
|
"Content-Type": "application/json"
|
|
459
|
-
},
|
|
462
|
+
}, s = l.value?.qv2Rooms?.qRoomId || l.value?.id || n.room.id, r = await fetch(
|
|
460
463
|
`${t}/vendors/properties/statuses/${n.propertyId}/rooms`,
|
|
461
464
|
{
|
|
462
465
|
method: "POST",
|
|
463
|
-
headers:
|
|
466
|
+
headers: o,
|
|
464
467
|
signal: e.signal,
|
|
465
|
-
body: JSON.stringify({ roomsIds: [
|
|
468
|
+
body: JSON.stringify({ roomsIds: [s] })
|
|
466
469
|
}
|
|
467
470
|
);
|
|
468
|
-
clearTimeout(a), r.ok ||
|
|
469
|
-
const
|
|
470
|
-
te.value =
|
|
471
|
-
...
|
|
472
|
-
tokenId:
|
|
473
|
-
} :
|
|
471
|
+
clearTimeout(a), r.ok || ke(r);
|
|
472
|
+
const d = await r.json(), m = d.data?.pmsRooms || d.data?.rooms || d.rooms || [];
|
|
473
|
+
te.value = m, m.length > 0 ? l.value = {
|
|
474
|
+
...m[0],
|
|
475
|
+
tokenId: m[0].tokenId || n.room.tokenId
|
|
476
|
+
} : l.value = n.room, b.value.pms = !1;
|
|
474
477
|
} catch (e) {
|
|
475
|
-
return
|
|
478
|
+
return b.value.pms = !1, h("show:toast", {
|
|
479
|
+
show: !0,
|
|
480
|
+
message: c("HC_FAILED_TO_LOAD_PMS_DATA"),
|
|
481
|
+
variant: "error",
|
|
482
|
+
icon: "exclamation-circle"
|
|
483
|
+
}), e;
|
|
476
484
|
}
|
|
477
485
|
}, ne = async () => {
|
|
478
486
|
try {
|
|
479
|
-
|
|
487
|
+
b.value.roomNotices = !0;
|
|
480
488
|
const e = await fetch(
|
|
481
489
|
"/api/client/common/getRoomNotices.php?propertyId=" + n.propertyId + "&roomIds=[" + n.room.id + "]"
|
|
482
490
|
);
|
|
@@ -485,38 +493,52 @@ const Ft = dt({
|
|
|
485
493
|
const a = await e.json();
|
|
486
494
|
ae.value = a.notices;
|
|
487
495
|
} catch (e) {
|
|
488
|
-
console.error("Error getting room notices:", e), ae.value = []
|
|
496
|
+
console.error("Error getting room notices:", e), ae.value = [], h("show:toast", {
|
|
497
|
+
show: !0,
|
|
498
|
+
message: c("HC_FAILED_TO_LOAD_ROOM_NOTICES"),
|
|
499
|
+
variant: "error",
|
|
500
|
+
icon: "exclamation-circle"
|
|
501
|
+
});
|
|
489
502
|
} finally {
|
|
490
|
-
|
|
503
|
+
b.value.roomNotices = !1;
|
|
491
504
|
}
|
|
492
505
|
}, he = async () => {
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
506
|
+
try {
|
|
507
|
+
const e = new FormData();
|
|
508
|
+
e.append("property_id", n.propertyId), e.append("filter", "tasks_new");
|
|
509
|
+
const [a, t] = await Promise.all([
|
|
510
|
+
fetch("/api/client/common/getDepartments.php", {
|
|
511
|
+
method: "POST"
|
|
512
|
+
}),
|
|
513
|
+
fetch("/api/client/common/getDepartmentUsersByPropertyId.php", {
|
|
514
|
+
method: "POST",
|
|
515
|
+
body: e
|
|
516
|
+
})
|
|
517
|
+
]), o = await a.json(), s = await t.json();
|
|
518
|
+
if (o.departments && (o.departments.forEach((r) => {
|
|
519
|
+
r.label = r.display_name;
|
|
520
|
+
}), N.value = o.departments), s.users) {
|
|
521
|
+
const r = [];
|
|
522
|
+
let d = {
|
|
523
|
+
group: "",
|
|
524
|
+
options: []
|
|
525
|
+
};
|
|
526
|
+
s.users.forEach((m) => {
|
|
527
|
+
m.translated_department !== d.group && (d.group && r.push({ ...d }), d.group = m.translated_department, d.options = []), d.options.push(m);
|
|
528
|
+
}), d.group && r.push({ ...d }), we.value = r;
|
|
529
|
+
}
|
|
530
|
+
} catch (e) {
|
|
531
|
+
console.error("Error getting shared data:", e), h("show:toast", {
|
|
532
|
+
show: !0,
|
|
533
|
+
message: c("HC_FAILED_TO_LOAD_SHARED_DATA"),
|
|
534
|
+
variant: "error",
|
|
535
|
+
icon: "exclamation-circle"
|
|
536
|
+
});
|
|
515
537
|
}
|
|
516
|
-
},
|
|
538
|
+
}, Oe = async () => {
|
|
517
539
|
try {
|
|
518
540
|
const a = await (await fetch(
|
|
519
|
-
`/api/client/connect/getStayDetails.php?tokenId=${
|
|
541
|
+
`/api/client/connect/getStayDetails.php?tokenId=${l.value.tokenId}`,
|
|
520
542
|
{
|
|
521
543
|
method: "GET",
|
|
522
544
|
credentials: "include"
|
|
@@ -524,13 +546,18 @@ const Ft = dt({
|
|
|
524
546
|
)).json();
|
|
525
547
|
if (a.status === "error")
|
|
526
548
|
throw new Error(a.message || "Failed to get stay details");
|
|
527
|
-
a.userName && (v.value.guestName = a.userName), a.cellPhone && (v.value.guestPhone = a.cellPhone), a.email && (v.value.guestEmail = a.email), a.checkIn && (v.value.checkInDate =
|
|
549
|
+
a.userName && (v.value.guestName = a.userName), a.cellPhone && (v.value.guestPhone = a.cellPhone), a.email && (v.value.guestEmail = a.email), a.checkIn && (v.value.checkInDate = _.fromISO(
|
|
528
550
|
a.checkIn
|
|
529
|
-
).toJSDate()), a.checkOut && (v.value.checkOutDate =
|
|
551
|
+
).toJSDate()), a.checkOut && (v.value.checkOutDate = _.fromISO(
|
|
530
552
|
a.checkOut
|
|
531
553
|
).toJSDate());
|
|
532
554
|
} catch (e) {
|
|
533
|
-
console.error("getStayDetails error:", e)
|
|
555
|
+
console.error("getStayDetails error:", e), h("show:toast", {
|
|
556
|
+
show: !0,
|
|
557
|
+
message: c("HC_FAILED_TO_LOAD_STAY_DETAILS"),
|
|
558
|
+
variant: "error",
|
|
559
|
+
icon: "exclamation-circle"
|
|
560
|
+
});
|
|
534
561
|
}
|
|
535
562
|
}, Ve = (e) => {
|
|
536
563
|
switch (e) {
|
|
@@ -560,20 +587,25 @@ const Ft = dt({
|
|
|
560
587
|
}
|
|
561
588
|
}, J = async () => {
|
|
562
589
|
try {
|
|
563
|
-
|
|
590
|
+
b.value.tickets = !0;
|
|
564
591
|
const e = await fetch(
|
|
565
592
|
"/api/client/common/getAllToDos.php?propertyId=" + n.propertyId + "&roomIds=[" + n.room.id + "]"
|
|
566
593
|
);
|
|
567
594
|
if (!e.ok)
|
|
568
595
|
throw new Error(`HTTP error! status: ${e.status}`);
|
|
569
596
|
const a = await e.json();
|
|
570
|
-
|
|
597
|
+
E.value = a.tickets;
|
|
571
598
|
} catch (e) {
|
|
572
|
-
console.error("Error getting tickets:", e),
|
|
599
|
+
console.error("Error getting tickets:", e), E.value = [], h("show:toast", {
|
|
600
|
+
show: !0,
|
|
601
|
+
message: c("HC_FAILED_TO_LOAD_TICKETS"),
|
|
602
|
+
variant: "error",
|
|
603
|
+
icon: "exclamation-circle"
|
|
604
|
+
});
|
|
573
605
|
} finally {
|
|
574
|
-
|
|
606
|
+
b.value.tickets = !1;
|
|
575
607
|
}
|
|
576
|
-
},
|
|
608
|
+
}, ke = async (e) => {
|
|
577
609
|
const a = await e.text();
|
|
578
610
|
let t;
|
|
579
611
|
try {
|
|
@@ -585,24 +617,24 @@ const Ft = dt({
|
|
|
585
617
|
}, Ke = (e) => {
|
|
586
618
|
const a = document.querySelectorAll(".pulse");
|
|
587
619
|
if (a && a.length) {
|
|
588
|
-
const t =
|
|
620
|
+
const t = l.value?.qv2Rooms?.qRoomId || l.value?.id || n.room?.id, o = document.getElementById("room-" + t), s = o?.classList;
|
|
589
621
|
switch (e) {
|
|
590
622
|
case "room_notice":
|
|
591
|
-
(
|
|
623
|
+
(s?.contains("roombox_unsel") || s?.contains("roombox_unsel_active")) && (o?.classList.remove(), o?.classList.add("roomnoticeroombox_sel"));
|
|
592
624
|
break;
|
|
593
625
|
case "complaint":
|
|
594
|
-
!
|
|
626
|
+
!s?.contains("smsroombox_sel") && !s?.contains("callbackroombox_sel") && (o?.classList.remove(), o?.classList.add("complaintsroombox_sel"));
|
|
595
627
|
break;
|
|
596
628
|
case "request":
|
|
597
|
-
!
|
|
629
|
+
!s?.contains("smsroombox_sel") && !s?.contains("callbackroombox_sel") && !s?.contains("complaintsroombox_sel") && (o?.classList.remove(), o?.classList.add("guestrequestroombox_sel"));
|
|
598
630
|
break;
|
|
599
631
|
case "work_order":
|
|
600
|
-
!
|
|
632
|
+
!s?.contains("smsroombox_sel") && !s?.contains("callbackroombox_sel") && !s?.contains("complaintsroombox_sel") && !s?.contains("guestrequestroombox_sel") && (o?.classList.remove(), o?.classList.add("workordersroombox_sel"));
|
|
601
633
|
break;
|
|
602
634
|
}
|
|
603
635
|
const r = setTimeout(() => {
|
|
604
|
-
a.forEach((
|
|
605
|
-
|
|
636
|
+
a.forEach((d) => {
|
|
637
|
+
d.classList.remove("pulse");
|
|
606
638
|
});
|
|
607
639
|
}, 4500);
|
|
608
640
|
H.value.push(r);
|
|
@@ -632,141 +664,166 @@ const Ft = dt({
|
|
|
632
664
|
}
|
|
633
665
|
window.open(a, "_blank");
|
|
634
666
|
}, et = async () => {
|
|
635
|
-
const e =
|
|
636
|
-
type:
|
|
667
|
+
const e = l.value?.qv2Rooms?.qRoomId || l.value?.id || n.room?.id, a = l.value?.qv2Rooms?.qRoomName || l.value?.name || n.room?.name, t = {
|
|
668
|
+
type: k.value?.id,
|
|
637
669
|
propertyId: n.propertyId,
|
|
638
|
-
userId:
|
|
670
|
+
userId: L.value,
|
|
639
671
|
areaId: e,
|
|
640
672
|
areaName: a
|
|
641
673
|
};
|
|
642
|
-
switch (
|
|
674
|
+
switch (k.value?.id) {
|
|
643
675
|
case "complaint":
|
|
644
|
-
t.tokenId =
|
|
676
|
+
t.tokenId = l.value.tokenId, t.problemId = v.value.problem.id, t.guestName = v.value.guestName, t.guestPhone = v.value.guestPhone, t.guestEmail = v.value.guestEmail, t.guestLoyalty = v.value.guestLoyalty, t.guestMood = v.value.guestMood.id, t.checkInDate = _.fromJSDate(v.value.checkInDate).toFormat(
|
|
645
677
|
"yyyy-MM-dd"
|
|
646
|
-
), t.checkOutDate =
|
|
678
|
+
), t.checkOutDate = _.fromJSDate(v.value.checkOutDate).toFormat(
|
|
647
679
|
"yyyy-MM-dd"
|
|
648
680
|
), t.notes = v.value.notes, t.inHouse = 2, t.source = "dashboard", h("create:todo", t);
|
|
649
681
|
break;
|
|
650
682
|
case "request":
|
|
651
|
-
t.itemId =
|
|
683
|
+
t.itemId = u.value.item.id, t.assignType = u.value.assignType.id, t.occupied = u.value.requestedBy.id, t.notes = u.value.notes, t.dueDate = _.fromJSDate(u.value.due).toFormat("yyyy-MM-dd"), u.value.assignType.id === 1 && (t.department = u.value.department.id), u.value.assignType.id === 2 && (t.person = u.value.person.id), n.allowWhenWhere && (t.requestWhen = u.value.when ? u.value.when.id : "", t.requestWhere = u.value.where ? u.value.where.id : ""), h("create:todo", t);
|
|
652
684
|
break;
|
|
653
685
|
case "room_notice":
|
|
654
|
-
t.issueId =
|
|
686
|
+
t.issueId = w.value.issue.id, t.startDate = _.fromJSDate(w.value.startDate).toFormat("yyyy-MM-dd"), t.endDate = _.fromJSDate(w.value.endDate).toFormat("yyyy-MM-dd"), t.notes = w.value.notes, t.sendPush = "1", h("create:todo", t);
|
|
655
687
|
break;
|
|
656
688
|
case "work_order":
|
|
657
|
-
t.itemId =
|
|
689
|
+
t.itemId = p.value.item.id, t.issueId = p.value.issue.id, t.assignType = p.value.assignType.id, t.occupied = p.value.requestedBy.id, t.notes = p.value.notes, t.dueDate = _.fromJSDate(p.value.due).toFormat("yyyy-MM-dd"), p.value.assignType.id === 1 && (t.department = p.value.department.id), p.value.assignType.id === 2 && (t.person = p.value.person.id), h("create:todo", t);
|
|
658
690
|
break;
|
|
659
691
|
}
|
|
660
692
|
}, tt = (e) => {
|
|
661
|
-
ge(),
|
|
693
|
+
ge(), _e(), n.hover && h("toggle", e);
|
|
662
694
|
}, at = (e) => {
|
|
663
|
-
|
|
664
|
-
},
|
|
665
|
-
if (console.log("selected:", e),
|
|
695
|
+
Se(), A.value = e;
|
|
696
|
+
}, ot = async (e) => {
|
|
697
|
+
if (console.log("selected:", e), k.value = e, T.value = [], w.value.issue = null, v.value.problem = null, p.value.item = null, p.value.issue = null, u.value.item = null, !k.value)
|
|
666
698
|
return;
|
|
667
|
-
const a =
|
|
699
|
+
const a = l.value?.qv2Rooms?.qRoomId || l.value?.id || n.room?.id, t = new FormData();
|
|
668
700
|
switch (t.append("property_id", n.propertyId), t.append("area_id", a), e.id) {
|
|
669
701
|
case "complaint":
|
|
670
702
|
try {
|
|
671
|
-
|
|
672
|
-
const
|
|
703
|
+
l.value.tokenId && await Oe();
|
|
704
|
+
const s = await (await fetch("/api/client/common/getComplaintProblemsByPropertyId.php", {
|
|
673
705
|
method: "POST",
|
|
674
706
|
body: t
|
|
675
707
|
})).json();
|
|
676
|
-
|
|
708
|
+
s.items && (T.value = s.items);
|
|
677
709
|
const r = await z.post(
|
|
678
710
|
"/api/client/common/getComplaintMoods.php"
|
|
679
711
|
);
|
|
680
|
-
r.data.items.forEach((
|
|
681
|
-
|
|
712
|
+
r.data.items.forEach((d) => {
|
|
713
|
+
d.label = d.display_name;
|
|
682
714
|
}), ce.value = r.data.items;
|
|
683
|
-
} catch (
|
|
684
|
-
console.
|
|
715
|
+
} catch (o) {
|
|
716
|
+
console.error("Error loading complaint options:", o), h("show:toast", {
|
|
717
|
+
show: !0,
|
|
718
|
+
message: c("HC_FAILED_TO_LOAD_COMPLAINT_OPTIONS"),
|
|
719
|
+
variant: "error",
|
|
720
|
+
icon: "exclamation-circle"
|
|
721
|
+
});
|
|
685
722
|
}
|
|
686
723
|
break;
|
|
687
724
|
case "room_notice":
|
|
688
725
|
try {
|
|
689
|
-
const
|
|
726
|
+
const s = await (await fetch("/api/client/common/getRoomNoticeIssuesByPropertyId.php", {
|
|
690
727
|
method: "POST",
|
|
691
728
|
body: t
|
|
692
729
|
})).json();
|
|
693
|
-
|
|
694
|
-
} catch (
|
|
695
|
-
console.
|
|
730
|
+
s.items && (T.value = s.items);
|
|
731
|
+
} catch (o) {
|
|
732
|
+
console.error("Error loading room notice options:", o), h("show:toast", {
|
|
733
|
+
show: !0,
|
|
734
|
+
message: c("HC_FAILED_TO_LOAD_ROOM_NOTICE_OPTIONS"),
|
|
735
|
+
variant: "error",
|
|
736
|
+
icon: "exclamation-circle"
|
|
737
|
+
});
|
|
696
738
|
}
|
|
697
739
|
break;
|
|
698
740
|
case "request":
|
|
699
741
|
try {
|
|
700
|
-
|
|
701
|
-
const
|
|
742
|
+
u.value.requestedBy = $.value[1], u.value.assignType = K.value[0];
|
|
743
|
+
const s = await (await fetch("/api/client/common/getHousekeepingItemsByPropertyId.php", {
|
|
702
744
|
method: "POST",
|
|
703
745
|
body: t
|
|
704
746
|
})).json();
|
|
705
|
-
if (
|
|
747
|
+
if (s.items && (T.value = s.items), await he(), u.value.department = N.value.find(
|
|
706
748
|
(r) => parseInt(r.id) === 4
|
|
707
749
|
), n.allowWhenWhere)
|
|
708
750
|
try {
|
|
709
751
|
const r = new FormData();
|
|
710
752
|
r.append("property_id", n.propertyId);
|
|
711
|
-
const
|
|
753
|
+
const m = await (await fetch(
|
|
712
754
|
"/api/client/common/getWhenWhereOptions.php",
|
|
713
755
|
{
|
|
714
756
|
method: "POST",
|
|
715
757
|
body: r
|
|
716
758
|
}
|
|
717
759
|
)).json();
|
|
718
|
-
|
|
760
|
+
m.when && Array.isArray(m.when) ? P.value = m.when.map((f) => ({
|
|
719
761
|
id: f.id,
|
|
720
762
|
label: f.name,
|
|
721
763
|
value: f.id
|
|
722
|
-
})) :
|
|
764
|
+
})) : P.value = [], m.where && Array.isArray(m.where) ? q.value = m.where.map((f) => ({
|
|
723
765
|
id: f.id,
|
|
724
766
|
label: f.name,
|
|
725
767
|
value: f.id
|
|
726
|
-
})) :
|
|
768
|
+
})) : q.value = [];
|
|
727
769
|
} catch (r) {
|
|
728
|
-
console.
|
|
770
|
+
console.error("Error loading When/Where options:", r), P.value = [], q.value = [], h("show:toast", {
|
|
771
|
+
show: !0,
|
|
772
|
+
message: c("HC_FAILED_TO_LOAD_WHEN_WHERE_OPTIONS"),
|
|
773
|
+
variant: "error",
|
|
774
|
+
icon: "exclamation-circle"
|
|
775
|
+
});
|
|
729
776
|
}
|
|
730
|
-
} catch (
|
|
731
|
-
console.
|
|
777
|
+
} catch (o) {
|
|
778
|
+
console.error("Error loading request options:", o), h("show:toast", {
|
|
779
|
+
show: !0,
|
|
780
|
+
message: c("HC_FAILED_TO_LOAD_REQUEST_OPTIONS"),
|
|
781
|
+
variant: "error",
|
|
782
|
+
icon: "exclamation-circle"
|
|
783
|
+
});
|
|
732
784
|
}
|
|
733
785
|
break;
|
|
734
786
|
case "work_order":
|
|
735
787
|
try {
|
|
736
|
-
|
|
737
|
-
const
|
|
788
|
+
p.value.requestedBy = $.value[0], p.value.assignType = K.value[0];
|
|
789
|
+
const s = await (await fetch("/api/client/common/getItemsByRoomId.php", {
|
|
738
790
|
method: "POST",
|
|
739
791
|
body: t
|
|
740
792
|
})).json(), r = [];
|
|
741
|
-
let
|
|
793
|
+
let d = {
|
|
742
794
|
group: "",
|
|
743
795
|
options: []
|
|
744
796
|
};
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
}),
|
|
797
|
+
s.items && (s.items.forEach((m) => {
|
|
798
|
+
m.section_name !== d.group && (d.group && r.push({ ...d }), d.group = m.section_name, d.options = []), m.label && d.options.push(m);
|
|
799
|
+
}), d.group && r.push({ ...d })), T.value = r, await Promise.all([
|
|
748
800
|
z.post(
|
|
749
801
|
"/api/client/common/getWorkOrderIssues.php"
|
|
750
802
|
),
|
|
751
803
|
he()
|
|
752
|
-
]).then((
|
|
753
|
-
const f =
|
|
804
|
+
]).then((m) => {
|
|
805
|
+
const f = m[0];
|
|
754
806
|
f.data.issues.forEach((g) => {
|
|
755
807
|
g.label = g.display_name;
|
|
756
808
|
}), pe.value = f.data.issues;
|
|
757
|
-
}),
|
|
758
|
-
(
|
|
809
|
+
}), p.value.department = N.value.find(
|
|
810
|
+
(m) => parseInt(m.id) === 2
|
|
759
811
|
);
|
|
760
|
-
} catch (
|
|
761
|
-
console.
|
|
812
|
+
} catch (o) {
|
|
813
|
+
console.error("Error loading work order options:", o), h("show:toast", {
|
|
814
|
+
show: !0,
|
|
815
|
+
message: c("HC_FAILED_TO_LOAD_WORK_ORDER_OPTIONS"),
|
|
816
|
+
variant: "error",
|
|
817
|
+
icon: "exclamation-circle"
|
|
818
|
+
});
|
|
762
819
|
}
|
|
763
820
|
break;
|
|
764
821
|
default:
|
|
765
822
|
return;
|
|
766
823
|
}
|
|
767
|
-
},
|
|
768
|
-
|
|
769
|
-
},
|
|
824
|
+
}, st = () => {
|
|
825
|
+
oe.value = !oe.value, ie.value = !1;
|
|
826
|
+
}, Ee = () => {
|
|
770
827
|
const e = document.getElementById("comment-field"), a = document.getElementById("hidden-text");
|
|
771
828
|
e.style.height = a?.offsetHeight + "px";
|
|
772
829
|
}, Y = () => {
|
|
@@ -776,10 +833,10 @@ const Ft = dt({
|
|
|
776
833
|
behavior: "smooth"
|
|
777
834
|
});
|
|
778
835
|
}, nt = async (e) => {
|
|
779
|
-
if (e && e.type === "keydown" && e.preventDefault(),
|
|
836
|
+
if (e && e.type === "keydown" && e.preventDefault(), l.value.tokenId && A.value && !R.value)
|
|
780
837
|
try {
|
|
781
838
|
const a = new FormData();
|
|
782
|
-
a.append("tokenId",
|
|
839
|
+
a.append("tokenId", l.value.tokenId), a.append("content", A.value), a.append("senderId", L.value || "");
|
|
783
840
|
const t = await z.post(
|
|
784
841
|
"/api/client/connect/sendMessage.php",
|
|
785
842
|
a
|
|
@@ -787,56 +844,56 @@ const Ft = dt({
|
|
|
787
844
|
if (t.data.status === "error") {
|
|
788
845
|
h("show:toast", {
|
|
789
846
|
show: !0,
|
|
790
|
-
message:
|
|
847
|
+
message: c("HC_FAILED_TO_SEND_MESSAGE"),
|
|
791
848
|
variant: "error",
|
|
792
849
|
icon: "exclamation-circle"
|
|
793
850
|
});
|
|
794
851
|
return;
|
|
795
852
|
}
|
|
796
|
-
|
|
853
|
+
A.value = "", S.value = !t.data.closed, t.data.messages && (x(t.data.messages), t.data.messages.length > 0 && (O.value = t.data.messages[t.data.messages.length - 1].id)), Y();
|
|
797
854
|
} catch (a) {
|
|
798
855
|
console.error("sendChatMessage error:", a), h("show:toast", {
|
|
799
856
|
show: !0,
|
|
800
|
-
message:
|
|
857
|
+
message: c("HC_FAILED_TO_SEND_MESSAGE"),
|
|
801
858
|
variant: "error",
|
|
802
859
|
icon: "exclamation-circle"
|
|
803
860
|
});
|
|
804
861
|
}
|
|
805
862
|
}, rt = async () => {
|
|
806
|
-
if (!(!
|
|
863
|
+
if (!(!l.value.tokenId || !L.value))
|
|
807
864
|
try {
|
|
808
|
-
const e =
|
|
809
|
-
a.append("tokenId",
|
|
865
|
+
const e = S.value ? "/api/client/connect/closeConversation.php" : "/api/client/connect/openConversation.php", a = new FormData();
|
|
866
|
+
a.append("tokenId", l.value.tokenId), a.append("userId", L.value), S.value && O.value !== null && a.append("lastMsgId", O.value.toString());
|
|
810
867
|
const t = await z.post(e, a);
|
|
811
868
|
if (t.data.status === "error") {
|
|
812
869
|
h("show:toast", {
|
|
813
870
|
show: !0,
|
|
814
|
-
message:
|
|
871
|
+
message: c("HC_FAILED_TO_UPDATE_CONVERSATION"),
|
|
815
872
|
variant: "error",
|
|
816
873
|
icon: "exclamation-circle"
|
|
817
874
|
});
|
|
818
875
|
return;
|
|
819
876
|
}
|
|
820
|
-
|
|
877
|
+
S.value = !t.data.closed, t.data.messages && (x(t.data.messages), t.data.messages.length > 0 && (O.value = t.data.messages[t.data.messages.length - 1].id)), h("show:toast", {
|
|
821
878
|
show: !0,
|
|
822
|
-
message:
|
|
879
|
+
message: S.value ? c("HC_CONVERSATION_REOPENED") : c("HC_CONVERSATION_CLOSED"),
|
|
823
880
|
variant: "success",
|
|
824
881
|
icon: "check-circle"
|
|
825
882
|
});
|
|
826
883
|
} catch (e) {
|
|
827
884
|
console.error("toggleMarkOpenClose error:", e), h("show:toast", {
|
|
828
885
|
show: !0,
|
|
829
|
-
message:
|
|
886
|
+
message: c("HC_FAILED_TO_UPDATE_CONVERSATION"),
|
|
830
887
|
variant: "error",
|
|
831
888
|
icon: "exclamation-circle"
|
|
832
889
|
});
|
|
833
890
|
}
|
|
834
891
|
}, lt = async () => {
|
|
835
|
-
if (n.isTestEnvironment && !(!
|
|
892
|
+
if (n.isTestEnvironment && !(!l.value?.tokenId || !U.value.trim())) {
|
|
836
893
|
me.value = !0;
|
|
837
894
|
try {
|
|
838
895
|
const e = new FormData();
|
|
839
|
-
e.append("tokenId",
|
|
896
|
+
e.append("tokenId", l.value.tokenId), e.append("content", U.value.trim());
|
|
840
897
|
const a = await z.post(
|
|
841
898
|
"/api/client/connect/simulateInbound.php",
|
|
842
899
|
e
|
|
@@ -844,22 +901,22 @@ const Ft = dt({
|
|
|
844
901
|
if (a.data.status === "error") {
|
|
845
902
|
h("show:toast", {
|
|
846
903
|
show: !0,
|
|
847
|
-
message:
|
|
904
|
+
message: c("HC_FAILED_TO_SIMULATE_MESSAGE"),
|
|
848
905
|
variant: "error",
|
|
849
906
|
icon: "exclamation-circle"
|
|
850
907
|
});
|
|
851
908
|
return;
|
|
852
909
|
}
|
|
853
|
-
a.data.messages && (
|
|
910
|
+
a.data.messages && (x(a.data.messages), S.value = !a.data.closed, a.data.messages.length > 0 && (O.value = a.data.messages[a.data.messages.length - 1].id)), U.value = "", W.value = !1, Y(), h("show:toast", {
|
|
854
911
|
show: !0,
|
|
855
|
-
message:
|
|
912
|
+
message: c("HC_SIMULATED_GUEST_REPLY"),
|
|
856
913
|
variant: "success",
|
|
857
914
|
icon: "check-circle"
|
|
858
915
|
});
|
|
859
916
|
} catch (e) {
|
|
860
917
|
console.error("simulateGuestReply error:", e), h("show:toast", {
|
|
861
918
|
show: !0,
|
|
862
|
-
message:
|
|
919
|
+
message: c("HC_FAILED_TO_SIMULATE_MESSAGE"),
|
|
863
920
|
variant: "error",
|
|
864
921
|
icon: "exclamation-circle"
|
|
865
922
|
});
|
|
@@ -867,180 +924,180 @@ const Ft = dt({
|
|
|
867
924
|
me.value = !1;
|
|
868
925
|
}
|
|
869
926
|
}
|
|
870
|
-
}, ut = () => {
|
|
871
|
-
W.value = !W.value, W.value || (U.value = "");
|
|
872
927
|
}, it = () => {
|
|
928
|
+
W.value = !W.value, W.value || (U.value = "");
|
|
929
|
+
}, ut = () => {
|
|
873
930
|
j.value || (j.value = setInterval(() => {
|
|
874
931
|
document.visibilityState === "visible" && fe(!0);
|
|
875
|
-
},
|
|
932
|
+
}, be));
|
|
876
933
|
}, ye = () => {
|
|
877
934
|
j.value && (clearInterval(j.value), j.value = null);
|
|
878
935
|
}, ge = () => {
|
|
879
936
|
if (n.align === "left" || n.align === "right") {
|
|
880
937
|
const e = Q.value?.getBoundingClientRect().left, a = window.innerWidth;
|
|
881
|
-
|
|
938
|
+
ue.value = a - e < G.value ? "right" : "left";
|
|
882
939
|
} else {
|
|
883
940
|
const e = Q.value?.getBoundingClientRect().top, a = window.innerHeight;
|
|
884
|
-
|
|
941
|
+
ue.value = a - e < B.value ? "bottom" : "top";
|
|
885
942
|
}
|
|
886
|
-
},
|
|
943
|
+
}, _e = () => {
|
|
887
944
|
if (n.position === "top" || n.position === "bottom") {
|
|
888
945
|
const e = Q.value?.getBoundingClientRect().top, a = window.innerHeight;
|
|
889
|
-
de.value = a - e <
|
|
946
|
+
de.value = a - e < B.value ? "top" : "bottom";
|
|
890
947
|
} else {
|
|
891
948
|
const e = Q.value?.getBoundingClientRect().left, a = window.innerWidth;
|
|
892
949
|
de.value = a - e < G.value ? "left" : "right";
|
|
893
950
|
}
|
|
894
|
-
},
|
|
895
|
-
R.value = !R.value, R.value ? (
|
|
951
|
+
}, Se = () => {
|
|
952
|
+
R.value = !R.value, R.value ? (A.value = "", M.value.info = Z.value, M.value.tickets = ee.value, M.value.comments = X.value, Z.value = !1, ee.value = !1, document.getElementById("comment-field")?.focus()) : (Z.value = M.value.info, ee.value = M.value.tickets, X.value = M.value.comments);
|
|
896
953
|
}, ct = async (e, a) => {
|
|
897
|
-
const t =
|
|
898
|
-
if (
|
|
899
|
-
const
|
|
900
|
-
|
|
901
|
-
r.id === e && r.type === a ?
|
|
954
|
+
const t = l.value?.qv2Rooms?.qRoomId || l.value?.id || n.room?.id, o = new FormData();
|
|
955
|
+
if (o.append("property_id", n.propertyId), o.append("room_ids", JSON.stringify([t])), await J(), E.value) {
|
|
956
|
+
const s = [];
|
|
957
|
+
E.value.forEach((r) => {
|
|
958
|
+
r.id === e && r.type === a ? s.unshift({
|
|
902
959
|
...r,
|
|
903
960
|
isNew: !0
|
|
904
|
-
}) :
|
|
961
|
+
}) : s.push({
|
|
905
962
|
...r,
|
|
906
963
|
isNew: !1
|
|
907
964
|
});
|
|
908
|
-
}),
|
|
965
|
+
}), s.sort((r, d) => r.id === e ? -1 : d.id === e ? 1 : 0), E.value = [...s];
|
|
909
966
|
}
|
|
910
967
|
};
|
|
911
|
-
return
|
|
968
|
+
return F(() => n.open, () => {
|
|
912
969
|
if (n.open && n.showComments && C.value.length) {
|
|
913
970
|
const e = setTimeout(Y, 500);
|
|
914
971
|
H.value.push(e);
|
|
915
972
|
}
|
|
916
|
-
n.open || (
|
|
917
|
-
}),
|
|
918
|
-
() => [n.open, n.showComments, X.value,
|
|
919
|
-
([e, a, t,
|
|
920
|
-
e && a && t &&
|
|
973
|
+
n.open || (Te(), ye(), O.value = null, C.value = [], S.value = !1);
|
|
974
|
+
}), F(
|
|
975
|
+
() => [n.open, n.showComments, X.value, l.value?.tokenId],
|
|
976
|
+
([e, a, t, o]) => {
|
|
977
|
+
e && a && t && o ? ut() : ye();
|
|
921
978
|
}
|
|
922
|
-
),
|
|
923
|
-
const e = setTimeout(
|
|
979
|
+
), F(A, () => {
|
|
980
|
+
const e = setTimeout(Ee, 100);
|
|
924
981
|
H.value.push(e);
|
|
925
|
-
}),
|
|
926
|
-
a === !0 && e === !1 && (
|
|
927
|
-
}),
|
|
928
|
-
e && !a && (n.showGuestDetails && !te.value ? await
|
|
929
|
-
}),
|
|
982
|
+
}), F(() => n.allowWhenWhere, (e, a) => {
|
|
983
|
+
a === !0 && e === !1 && (u.value.when = null, u.value.where = null, P.value = [], q.value = []);
|
|
984
|
+
}), F(() => n.open, async (e, a) => {
|
|
985
|
+
e && !a && (n.showGuestDetails && !te.value ? await se() : l.value || (l.value = n.room), J(), ne(), n.showComments && fe());
|
|
986
|
+
}), F(
|
|
930
987
|
() => n.room.id,
|
|
931
988
|
(e, a) => {
|
|
932
|
-
e !== a && (
|
|
989
|
+
e !== a && (l.value = n.room, te.value = null, n.open && (n.showGuestDetails && se(), J(), ne()));
|
|
933
990
|
}
|
|
934
991
|
), mt(async () => {
|
|
935
992
|
const e = JSON.parse(
|
|
936
993
|
window.localStorage.getItem("authenticated")
|
|
937
994
|
);
|
|
938
|
-
|
|
995
|
+
L.value = e?.user?.id || window.userId || "", l.value = n.room, n.size === "sm" && (B.value = 140, G.value = 160), n.size === "lg" && (B.value = 250, G.value = 440), ge(), _e();
|
|
939
996
|
}), pt(() => {
|
|
940
997
|
H.value.forEach((e) => {
|
|
941
998
|
clearTimeout(e);
|
|
942
999
|
}), ye();
|
|
943
1000
|
}), {
|
|
944
|
-
DateTime:
|
|
1001
|
+
DateTime: _,
|
|
945
1002
|
// Refs
|
|
946
|
-
actionMenuOpen:
|
|
947
|
-
alignment:
|
|
1003
|
+
actionMenuOpen: ie,
|
|
1004
|
+
alignment: ue,
|
|
948
1005
|
assignTypes: K,
|
|
949
|
-
comment:
|
|
1006
|
+
comment: A,
|
|
950
1007
|
complaint: v,
|
|
951
|
-
componentHeight:
|
|
1008
|
+
componentHeight: B,
|
|
952
1009
|
componentWidth: G,
|
|
953
1010
|
departments: N,
|
|
954
|
-
departmentUsers:
|
|
1011
|
+
departmentUsers: we,
|
|
955
1012
|
expandComments: X,
|
|
956
1013
|
expandGuestInfo: Z,
|
|
957
|
-
expandedStates:
|
|
1014
|
+
expandedStates: M,
|
|
958
1015
|
expandTickets: ee,
|
|
959
|
-
guestDetailsData:
|
|
960
|
-
itemOptions:
|
|
961
|
-
loading:
|
|
1016
|
+
guestDetailsData: Ae,
|
|
1017
|
+
itemOptions: T,
|
|
1018
|
+
loading: b,
|
|
962
1019
|
messages: C,
|
|
963
1020
|
moodOptions: ce,
|
|
964
1021
|
pmsData: te,
|
|
965
1022
|
positioning: de,
|
|
966
1023
|
quickReplyOpen: R,
|
|
967
|
-
request:
|
|
1024
|
+
request: u,
|
|
968
1025
|
requestedByOptions: $,
|
|
969
1026
|
requestLoading: Ce,
|
|
970
|
-
requestType:
|
|
971
|
-
roomDetailsData:
|
|
972
|
-
roomNotice:
|
|
1027
|
+
requestType: k,
|
|
1028
|
+
roomDetailsData: l,
|
|
1029
|
+
roomNotice: w,
|
|
973
1030
|
roomNotices: ae,
|
|
974
|
-
showCreateRequest:
|
|
975
|
-
ticketsList:
|
|
1031
|
+
showCreateRequest: oe,
|
|
1032
|
+
ticketsList: E,
|
|
976
1033
|
todoOptions: Ne,
|
|
977
1034
|
trigger: Q,
|
|
978
|
-
userId:
|
|
979
|
-
workOrder:
|
|
1035
|
+
userId: L,
|
|
1036
|
+
workOrder: p,
|
|
980
1037
|
workOrderIssues: pe,
|
|
981
|
-
whenOptions:
|
|
982
|
-
whereOptions:
|
|
1038
|
+
whenOptions: P,
|
|
1039
|
+
whereOptions: q,
|
|
983
1040
|
// Guest Connect state
|
|
984
|
-
isConversationOpen:
|
|
985
|
-
lastMessageId:
|
|
1041
|
+
isConversationOpen: S,
|
|
1042
|
+
lastMessageId: O,
|
|
986
1043
|
// Simulate Guest Reply state (test environments only)
|
|
987
1044
|
simulateOpen: W,
|
|
988
1045
|
simulateContent: U,
|
|
989
1046
|
simulateLoading: me,
|
|
990
1047
|
// Computed
|
|
991
1048
|
cleanliness: ve,
|
|
992
|
-
cleanlinessColor:
|
|
1049
|
+
cleanlinessColor: Me,
|
|
993
1050
|
cleanlinessTooltipContent: Re,
|
|
994
1051
|
filteredReplies: He,
|
|
995
|
-
groupedMessages:
|
|
996
|
-
hasGuestCallback:
|
|
1052
|
+
groupedMessages: Le,
|
|
1053
|
+
hasGuestCallback: Pe,
|
|
997
1054
|
hasComplaint: Ie,
|
|
998
|
-
itemOptionsList:
|
|
999
|
-
occupied:
|
|
1000
|
-
occupancyTooltipContent:
|
|
1001
|
-
selectedAssignType:
|
|
1002
|
-
selectedDepartment:
|
|
1055
|
+
itemOptionsList: qe,
|
|
1056
|
+
occupied: De,
|
|
1057
|
+
occupancyTooltipContent: xe,
|
|
1058
|
+
selectedAssignType: Fe,
|
|
1059
|
+
selectedDepartment: Be,
|
|
1003
1060
|
selectedRequestedBy: Ge,
|
|
1004
1061
|
stayDetails: We,
|
|
1005
1062
|
tagsList: Ue,
|
|
1006
1063
|
validateToDo: je,
|
|
1007
1064
|
// Methods
|
|
1008
|
-
closeRequest:
|
|
1065
|
+
closeRequest: Te,
|
|
1009
1066
|
createCallback: $e,
|
|
1010
|
-
createMessageList:
|
|
1067
|
+
createMessageList: x,
|
|
1011
1068
|
getChatMessages: fe,
|
|
1012
1069
|
getHowLongAgo: Je,
|
|
1013
|
-
getPMSData:
|
|
1070
|
+
getPMSData: se,
|
|
1014
1071
|
getRoomNotices: ne,
|
|
1015
1072
|
getSharedData: he,
|
|
1016
|
-
getStayDetails:
|
|
1073
|
+
getStayDetails: Oe,
|
|
1017
1074
|
getTicketColor: Ve,
|
|
1018
1075
|
getTicketIcon: ze,
|
|
1019
1076
|
getTickets: J,
|
|
1020
|
-
handleFailedResponse:
|
|
1077
|
+
handleFailedResponse: ke,
|
|
1021
1078
|
handlePulse: Ke,
|
|
1022
1079
|
onClickEditConnectGuest: Xe,
|
|
1023
1080
|
onClickTicket: Ze,
|
|
1024
1081
|
onCreateRequestSubmit: et,
|
|
1025
1082
|
onHoverToggle: tt,
|
|
1026
1083
|
onSelectQuickReply: at,
|
|
1027
|
-
onSelectToDo:
|
|
1028
|
-
openRequest:
|
|
1084
|
+
onSelectToDo: ot,
|
|
1085
|
+
openRequest: st,
|
|
1029
1086
|
refreshPMSData: Ye,
|
|
1030
|
-
resizeTextarea:
|
|
1087
|
+
resizeTextarea: Ee,
|
|
1031
1088
|
scrollToConnectBottom: Y,
|
|
1032
1089
|
sendChatMessage: nt,
|
|
1033
1090
|
setAlignment: ge,
|
|
1034
|
-
setPositioning:
|
|
1091
|
+
setPositioning: _e,
|
|
1035
1092
|
toggleMarkOpenClose: rt,
|
|
1036
|
-
toggleQuickReply:
|
|
1093
|
+
toggleQuickReply: Se,
|
|
1037
1094
|
updateTickets: ct,
|
|
1038
1095
|
// Simulate Guest Reply methods (test environments only)
|
|
1039
1096
|
simulateGuestReply: lt,
|
|
1040
|
-
toggleSimulateOpen:
|
|
1097
|
+
toggleSimulateOpen: it
|
|
1041
1098
|
};
|
|
1042
1099
|
}
|
|
1043
1100
|
});
|
|
1044
1101
|
export {
|
|
1045
|
-
|
|
1102
|
+
Bt as default
|
|
1046
1103
|
};
|