@pisell/private-materials 3.0.73 → 3.0.75

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 (93) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +1 -1
  6. package/build/lowcode/preview.js +8 -8
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +15 -15
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/booking/addons/index.d.ts +1 -1
  12. package/es/components/booking/addons/model.d.ts +1 -2
  13. package/es/components/booking/components/drawer/index.d.ts +1 -0
  14. package/es/components/booking/components/drawer/index.js +5 -0
  15. package/es/components/booking/components/drawer/index.less +10 -3
  16. package/es/components/booking/components/footer/amount.js +47 -24
  17. package/es/components/booking/components/footer/index.js +5 -0
  18. package/es/components/booking/components/footer/utils.js +12 -0
  19. package/es/components/booking/forms/forms.d.ts +1 -1
  20. package/es/components/booking/forms/index.d.ts +1 -1
  21. package/es/components/booking/forms/model.d.ts +1 -2
  22. package/es/components/booking/index.d.ts +1 -1
  23. package/es/components/booking/info/index.d.ts +1 -1
  24. package/es/components/booking/info/model.d.ts +1 -2
  25. package/es/components/booking/info/service/actions/index.d.ts +6 -0
  26. package/es/components/booking/info/service/actions/index.js +73 -0
  27. package/es/components/booking/info/service/actions/index.less +9 -0
  28. package/es/components/booking/info/service/addTimeModal/index.d.ts +4 -0
  29. package/es/components/booking/info/service/addTimeModal/index.js +697 -0
  30. package/es/components/booking/info/service/addTimeModal/index.less +138 -0
  31. package/es/components/booking/info/service/addTimeModal/serve.d.ts +5 -0
  32. package/es/components/booking/info/service/addTimeModal/serve.js +50 -0
  33. package/es/components/booking/info/service/addTimeModal/utils.d.ts +31 -0
  34. package/es/components/booking/info/service/addTimeModal/utils.js +174 -0
  35. package/es/components/booking/info/service/index.js +2 -1
  36. package/es/components/booking/info/service/serviceItem/Sales/index.d.ts +0 -0
  37. package/es/components/booking/info/service/serviceItem/Sales/index.js +0 -0
  38. package/es/components/booking/info/service/serviceItem/Sales/index.less +0 -0
  39. package/es/components/booking/info/service/serviceItem/index.js +24 -2
  40. package/es/components/booking/info/service/serviceItem/index.less +28 -0
  41. package/es/components/booking/locales.d.ts +27 -0
  42. package/es/components/booking/locales.js +29 -2
  43. package/es/components/booking/model.d.ts +3 -2
  44. package/es/components/booking/notes/index.d.ts +1 -1
  45. package/es/components/booking/notes/model.d.ts +1 -2
  46. package/es/components/booking/payments/index.d.ts +1 -1
  47. package/es/components/booking/payments/model.d.ts +1 -2
  48. package/es/components/booking/utils.d.ts +12 -0
  49. package/es/components/booking/utils.js +91 -48
  50. package/es/components/schedules/index.d.ts +1 -1
  51. package/es/components/schedules/model.d.ts +1 -2
  52. package/lib/components/booking/addons/index.d.ts +1 -1
  53. package/lib/components/booking/addons/model.d.ts +1 -2
  54. package/lib/components/booking/components/drawer/index.d.ts +1 -0
  55. package/lib/components/booking/components/drawer/index.js +4 -0
  56. package/lib/components/booking/components/drawer/index.less +10 -3
  57. package/lib/components/booking/components/footer/amount.js +10 -0
  58. package/lib/components/booking/components/footer/index.js +5 -0
  59. package/lib/components/booking/components/footer/utils.js +12 -0
  60. package/lib/components/booking/forms/forms.d.ts +1 -1
  61. package/lib/components/booking/forms/index.d.ts +1 -1
  62. package/lib/components/booking/forms/model.d.ts +1 -2
  63. package/lib/components/booking/index.d.ts +1 -1
  64. package/lib/components/booking/info/index.d.ts +1 -1
  65. package/lib/components/booking/info/model.d.ts +1 -2
  66. package/lib/components/booking/info/service/actions/index.d.ts +6 -0
  67. package/lib/components/booking/info/service/actions/index.js +97 -0
  68. package/lib/components/booking/info/service/actions/index.less +9 -0
  69. package/lib/components/booking/info/service/addTimeModal/index.d.ts +4 -0
  70. package/lib/components/booking/info/service/addTimeModal/index.js +553 -0
  71. package/lib/components/booking/info/service/addTimeModal/index.less +138 -0
  72. package/lib/components/booking/info/service/addTimeModal/serve.d.ts +5 -0
  73. package/lib/components/booking/info/service/addTimeModal/serve.js +39 -0
  74. package/lib/components/booking/info/service/addTimeModal/utils.d.ts +31 -0
  75. package/lib/components/booking/info/service/addTimeModal/utils.js +155 -0
  76. package/lib/components/booking/info/service/index.js +2 -1
  77. package/lib/components/booking/info/service/serviceItem/Sales/index.d.ts +0 -0
  78. package/lib/components/booking/info/service/serviceItem/Sales/index.js +0 -0
  79. package/lib/components/booking/info/service/serviceItem/Sales/index.less +0 -0
  80. package/lib/components/booking/info/service/serviceItem/index.js +14 -1
  81. package/lib/components/booking/info/service/serviceItem/index.less +28 -0
  82. package/lib/components/booking/locales.d.ts +27 -0
  83. package/lib/components/booking/locales.js +29 -2
  84. package/lib/components/booking/model.d.ts +3 -2
  85. package/lib/components/booking/notes/index.d.ts +1 -1
  86. package/lib/components/booking/notes/model.d.ts +1 -2
  87. package/lib/components/booking/payments/index.d.ts +1 -1
  88. package/lib/components/booking/payments/model.d.ts +1 -2
  89. package/lib/components/booking/utils.d.ts +12 -0
  90. package/lib/components/booking/utils.js +82 -33
  91. package/lib/components/schedules/index.d.ts +1 -1
  92. package/lib/components/schedules/model.d.ts +1 -2
  93. package/package.json +3 -3
@@ -0,0 +1,553 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/booking/info/service/addTimeModal/index.tsx
30
+ var addTimeModal_exports = {};
31
+ __export(addTimeModal_exports, {
32
+ default: () => addTimeModal_default
33
+ });
34
+ module.exports = __toCommonJS(addTimeModal_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_drawer = __toESM(require("../../../components/drawer"));
37
+ var import_model = require("../../model");
38
+ var import_antd = require("antd");
39
+ var import_index = require("./index.less");
40
+ var import_utils = require("@pisell/utils");
41
+ var import_ahooks = require("ahooks");
42
+ var import_footer = __toESM(require("../../../components/footer"));
43
+ var import_serve = require("./serve");
44
+ var import_utils2 = require("./utils");
45
+ var import_classnames = __toESM(require("classnames"));
46
+ var import_dayjs = __toESM(require("dayjs"));
47
+ var import_browserSelect = __toESM(require("../../../components/browserSelect"));
48
+ var import_utils3 = require("../../../utils");
49
+ var import_useEngineContext = __toESM(require("../../../../../hooks/useEngineContext"));
50
+ var numberList = (0, import_utils.createArray)(100, (d, i) => {
51
+ let item = {
52
+ label: i + 1,
53
+ value: i + 1
54
+ };
55
+ return item;
56
+ });
57
+ var AddTimeModal = () => {
58
+ var _a, _b, _c, _d, _e;
59
+ const { state, dispatch } = (0, import_react.useContext)(import_model.Context);
60
+ const [isEdit, setIsEdit] = (0, import_react.useState)(false);
61
+ const [loading, setLoading] = (0, import_react.useState)("");
62
+ const [recordKey, setRecordKey] = (0, import_react.useState)("");
63
+ const [number, setNumber] = (0, import_react.useState)(1);
64
+ const originServices = (0, import_react.useRef)([]);
65
+ const [renderList, setRenderList] = (0, import_react.useState)([]);
66
+ const context = (0, import_useEngineContext.default)();
67
+ const { interaction } = (_a = context.appHelper) == null ? void 0 : _a.utils;
68
+ const statusMap = {
69
+ available: {
70
+ label: import_utils.locales.getText("page.booking.text.available"),
71
+ color: "#079455"
72
+ },
73
+ fully_booked: {
74
+ label: import_utils.locales.getText("page.booking.text.fully-booked"),
75
+ color: "#DC6803"
76
+ },
77
+ unavailable: {
78
+ label: import_utils.locales.getText("page.booking.text.unavailable"),
79
+ color: "#98A2B3"
80
+ }
81
+ };
82
+ const updateServices = (0, import_ahooks.useDebounceFn)(
83
+ () => {
84
+ createNewServices();
85
+ },
86
+ { wait: 200 }
87
+ );
88
+ const transaction_habit_selection = (0, import_react.useMemo)(() => {
89
+ var _a2, _b2, _c2;
90
+ return ((_c2 = (_b2 = (_a2 = state == null ? void 0 : state.bookingConfig) == null ? void 0 : _a2.config) == null ? void 0 : _b2.information_tab) == null ? void 0 : _c2.transaction_habit_selection) || {
91
+ type: "service_now_pay_later",
92
+ button_rows: 1
93
+ };
94
+ }, [(_c = (_b = state == null ? void 0 : state.bookingConfig) == null ? void 0 : _b.config) == null ? void 0 : _c.information_tab]);
95
+ const currentProductId = (0, import_react.useMemo)(() => {
96
+ return import_utils2.addTimeRowKey.getValue(recordKey).product_id;
97
+ }, [recordKey]);
98
+ const currentTime = (0, import_react.useMemo)(() => {
99
+ let _time = import_utils2.addTimeRowKey.getValue(recordKey).time || "";
100
+ return _time;
101
+ }, [recordKey]);
102
+ const currentProduct = (0, import_react.useMemo)(() => {
103
+ return (renderList || []).find((d) => d.id == currentProductId);
104
+ }, [renderList, currentProductId]);
105
+ const currentTimeItem = (0, import_react.useMemo)(() => {
106
+ var _a2;
107
+ return ((_a2 = currentProduct == null ? void 0 : currentProduct.times) == null ? void 0 : _a2.find((d) => d.value == currentTime)) || {
108
+ price: 0
109
+ };
110
+ }, [currentTime, currentProduct]);
111
+ const currentResource = (0, import_react.useMemo)(() => {
112
+ var _a2;
113
+ const list = ((_a2 = state.service) == null ? void 0 : _a2.resourcesOrigin) || [];
114
+ let item = list.find(
115
+ (d) => {
116
+ var _a3, _b2;
117
+ return d.form_record_id == ((_b2 = (_a3 = state.service.cacheItem) == null ? void 0 : _a3._extend) == null ? void 0 : _b2.relation_id);
118
+ }
119
+ );
120
+ return item;
121
+ }, [state.service.cacheItem, state.service.resourcesOrigin]);
122
+ const currentResourceTimeEndDate = (0, import_react.useMemo)(() => {
123
+ var _a2;
124
+ try {
125
+ if (!currentResource || !((_a2 = state.service.cacheItem) == null ? void 0 : _a2._extend)) {
126
+ return "";
127
+ }
128
+ let timeItem = currentResource == null ? void 0 : currentResource.times.find(
129
+ (_time) => _time.item_id === state.service.cacheItem._extend.relation_id
130
+ );
131
+ const timeEndDate = (0, import_dayjs.default)(
132
+ timeItem.end_date + " " + timeItem.end_time
133
+ ).add(1, "second");
134
+ return timeEndDate;
135
+ } catch (err) {
136
+ console.log("err", err);
137
+ }
138
+ return "";
139
+ }, [state.service.cacheItem, currentResource]);
140
+ const getTimeUsableStatus = (time) => {
141
+ var _a2, _b2;
142
+ if (!((_a2 = state.service.cacheItem) == null ? void 0 : _a2._extend) || !currentResource) {
143
+ return { status: statusMap.unavailable };
144
+ }
145
+ try {
146
+ let _extend = { ...state.service.cacheItem._extend };
147
+ _extend.endDate = _extend.endDate.add(time, "minutes");
148
+ _extend.start_date = _extend.startDate;
149
+ _extend.end_date = _extend.endDate;
150
+ _extend.end_time = _extend.endDate.format("HH:mm");
151
+ _extend.start_time = _extend.startDate.format("HH:mm");
152
+ _extend.duration = import_utils3.flexibleObj.add(_extend.duration, time);
153
+ if ((0, import_utils3.isNowTime)(_extend.start_time)) {
154
+ _extend.start_time = (0, import_utils3.getNowTime)();
155
+ }
156
+ const startText = _extend.startDate.format("hh:mm A");
157
+ let endText = _extend.endDate.format("hh:mm A");
158
+ if (_extend.endDate.isAfter(_extend.startDate, "day")) {
159
+ endText = import_utils.locales.getText("pisell1.text.tomorrow") + endText;
160
+ }
161
+ let timeItem = currentResource == null ? void 0 : currentResource.times.find(
162
+ (_time) => _time.item_id === _extend.relation_id
163
+ );
164
+ const res = (0, import_utils3.getResourceTimeIsUsable)(timeItem, {
165
+ ...state.service.cacheItem,
166
+ _extend: {
167
+ ...state.service.cacheItem._extend,
168
+ ..._extend
169
+ }
170
+ });
171
+ if (!((_b2 = res._extend) == null ? void 0 : _b2.isUsable)) {
172
+ return {
173
+ // maxEndTime:
174
+ status: statusMap.unavailable,
175
+ message: `${currentResource.room_name || currentResource.name} ${import_utils.locales.getText("pisell2.text.status.service-error-2")}`
176
+ };
177
+ }
178
+ } catch (err) {
179
+ }
180
+ return { status: statusMap.available };
181
+ };
182
+ const _getAddTimeProducts = async () => {
183
+ var _a2, _b2, _c2, _d2;
184
+ const data = await (0, import_serve.getAddTimeProducts)(
185
+ {
186
+ skip: 1,
187
+ num: 500,
188
+ open_quotation: 1,
189
+ schedule_date: state.date.value.format("YYYY-MM-DD"),
190
+ customer_id: (0, import_utils3.isWalkIn)((_b2 = (_a2 = state.client) == null ? void 0 : _a2.value) == null ? void 0 : _b2.id) ? void 0 : (_d2 = (_c2 = state.client) == null ? void 0 : _c2.value) == null ? void 0 : _d2.id,
191
+ extension_type: ["product_add_time"]
192
+ },
193
+ {
194
+ useCache: true
195
+ }
196
+ );
197
+ return (data == null ? void 0 : data.list) || [];
198
+ };
199
+ const getTimeProducts = async () => {
200
+ setLoading("list");
201
+ const newList = await _getAddTimeProducts();
202
+ let list = newList.map((d) => {
203
+ let isUsable = (0, import_utils2.isUsableProduct)(d.add_time, state.service.cacheItem);
204
+ return {
205
+ ...d,
206
+ usable: isUsable,
207
+ // 可用的商品生成加时列表
208
+ times: isUsable ? (0, import_utils2.getAddTimeSplits)(
209
+ d,
210
+ state.service.cacheItem,
211
+ currentResourceTimeEndDate
212
+ ).map((time) => {
213
+ return {
214
+ ...time,
215
+ status: getTimeUsableStatus(time.value)
216
+ };
217
+ }) : void 0
218
+ };
219
+ }).filter((d) => d.usable && d.times.length).sort((a, b) => b.sort - a.sort);
220
+ setRenderList(list);
221
+ if (list.length) {
222
+ setDefaultProduct(list);
223
+ }
224
+ setLoading("");
225
+ setIsEdit(true);
226
+ };
227
+ const setDefaultProduct = (list) => {
228
+ try {
229
+ let productId = list[0].id;
230
+ let time = list[0].times[0].value;
231
+ setRecordKey(import_utils2.addTimeRowKey.create(productId, time));
232
+ } catch (err) {
233
+ }
234
+ };
235
+ (0, import_ahooks.useUpdateEffect)(() => {
236
+ if (state.service.addTimeModal) {
237
+ getTimeProducts();
238
+ originServices.current = state.service;
239
+ } else {
240
+ updateServices.run();
241
+ }
242
+ }, [state.service.addTimeModal]);
243
+ const onSelectItem = (pItem, item) => {
244
+ setRecordKey(import_utils2.addTimeRowKey.create(pItem.id, item.value));
245
+ setIsEdit(true);
246
+ updateServices.run();
247
+ };
248
+ const newService = (0, import_react.useMemo)(() => {
249
+ if (!currentProduct || !state.service.cacheItem) {
250
+ return null;
251
+ }
252
+ const relation_product = {
253
+ product_add_schedule_time: currentTime,
254
+ num: number,
255
+ price: currentTimeItem.price || 0,
256
+ product_id: currentProduct.id,
257
+ discount_amount: 0,
258
+ product_discount_reason: "",
259
+ is_charge_tax: currentProduct.is_charge_tax,
260
+ discountway: "num",
261
+ discount_type: "discount"
262
+ };
263
+ let _extend = { ...state.service.cacheItem._extend };
264
+ let relation_products = [relation_product];
265
+ _extend.endDate = _extend.endDate.add(
266
+ relation_product.product_add_schedule_time,
267
+ "minutes"
268
+ );
269
+ const start_date = _extend.startDate.format("YYYY-MM-DD");
270
+ const end_date = _extend.endDate.format("YYYY-MM-DD");
271
+ const end_time = _extend.endDate.format("HH:mm");
272
+ let start_time = _extend.startDate.format("HH:mm");
273
+ let duration = import_utils3.flexibleObj.add(
274
+ _extend.duration,
275
+ relation_product.product_add_schedule_time
276
+ );
277
+ if ((0, import_utils3.isNowTime)(_extend.start_time)) {
278
+ start_time = (0, import_utils3.getNowTime)();
279
+ }
280
+ _extend.relation_details = (_extend.relation_details || []).concat(
281
+ relation_products
282
+ );
283
+ _extend.duration = duration;
284
+ _extend.start_time = start_time;
285
+ _extend.end_time = end_time;
286
+ _extend.start_date = start_date;
287
+ _extend.end_date = end_date;
288
+ let data = {
289
+ id: _extend.id,
290
+ relation_id: _extend.relation_id,
291
+ like_status: _extend.like_status,
292
+ relation_type: _extend.relation_type,
293
+ is_all: _extend.is_all,
294
+ schedule_id: _extend.schedule_id,
295
+ end_time,
296
+ sub_type: _extend.sub_type,
297
+ select_date: start_date,
298
+ start_time,
299
+ end_date,
300
+ start_date,
301
+ duration,
302
+ number: _extend.number || 1,
303
+ relation_products,
304
+ _extend
305
+ };
306
+ return data;
307
+ }, [
308
+ currentTime,
309
+ state.service.cacheItem,
310
+ currentProduct,
311
+ number,
312
+ currentTimeItem
313
+ ]);
314
+ const resetService = () => {
315
+ var _a2, _b2;
316
+ let _val = ((_a2 = originServices.current) == null ? void 0 : _a2.value) || [];
317
+ let _edit = (_b2 = originServices.current) == null ? void 0 : _b2.edit;
318
+ originServices.current = null;
319
+ dispatch({
320
+ type: "setService",
321
+ payload: {
322
+ value: _val,
323
+ edit: _edit
324
+ }
325
+ });
326
+ };
327
+ const createNewServices = () => {
328
+ var _a2;
329
+ let _list = ((_a2 = state.service) == null ? void 0 : _a2.value) || [];
330
+ if (!originServices.current) {
331
+ return;
332
+ }
333
+ if (state.service.addTimeModal) {
334
+ _list = _list.map((d) => {
335
+ let _item = {
336
+ ...d
337
+ };
338
+ if (_item._extend.id === (newService == null ? void 0 : newService.id)) {
339
+ _item = {
340
+ ..._item,
341
+ ...newService || {},
342
+ _extend: newService == null ? void 0 : newService._extend
343
+ };
344
+ }
345
+ return _item;
346
+ });
347
+ dispatch({
348
+ type: "setService",
349
+ payload: {
350
+ value: _list,
351
+ edit: true
352
+ }
353
+ });
354
+ } else {
355
+ resetService();
356
+ }
357
+ };
358
+ const goCheckout = async () => {
359
+ var _a2, _b2;
360
+ if (state.isTerminal) {
361
+ return (_b2 = (_a2 = interaction == null ? void 0 : interaction.utils) == null ? void 0 : _a2.postMessageToApp) == null ? void 0 : _b2.call(_a2, {
362
+ module: "booking",
363
+ key: "booking_checkout",
364
+ data: {
365
+ order_id: state.bookingId
366
+ }
367
+ });
368
+ }
369
+ state.action({
370
+ type: "pisell1.handlePayment",
371
+ data: {
372
+ orderId: state.bookingId
373
+ },
374
+ callback: () => {
375
+ state == null ? void 0 : state.callback();
376
+ }
377
+ });
378
+ };
379
+ const handleCheckout = async () => {
380
+ if (isEdit) {
381
+ await handleSave("checkout");
382
+ }
383
+ goCheckout();
384
+ };
385
+ const handleSave = async (loadingType = "save") => {
386
+ if (currentTime === null) {
387
+ return;
388
+ }
389
+ setLoading(loadingType);
390
+ await (0, import_serve.saveAddTimeProduct)({
391
+ orderId: state.bookingId,
392
+ params: {
393
+ ...newService,
394
+ _extend: void 0
395
+ }
396
+ });
397
+ setLoading("");
398
+ import_antd.message.success(import_utils.locales.getText("page.booking.text.add-time-success"));
399
+ onCancel();
400
+ if (loadingType === "checkout") {
401
+ return;
402
+ }
403
+ state == null ? void 0 : state.action("init");
404
+ };
405
+ (0, import_react.useEffect)(() => {
406
+ if (!state.modalOpen) {
407
+ onCancel();
408
+ }
409
+ }, [state.modalOpen]);
410
+ const onCancel = () => {
411
+ setIsEdit(false);
412
+ setRecordKey("");
413
+ resetService();
414
+ setTimeout(() => {
415
+ dispatch({
416
+ type: "setService",
417
+ payload: {
418
+ addTimeModal: false
419
+ }
420
+ });
421
+ }, 50);
422
+ };
423
+ const updateTime = (0, import_react.useMemo)(() => {
424
+ if (!newService) {
425
+ return "";
426
+ }
427
+ let startTime = newService.start_time;
428
+ let endTime = newService.end_time;
429
+ let hours = (0, import_utils3.getDiscountTime)(import_utils3.flexibleObj.getValue(newService.duration));
430
+ if (newService.start_date !== newService.end_date) {
431
+ const locale = state.locale;
432
+ const format = locale === "en" || locale === "en-US" ? "HH:mm DD/MM" : "MM-DD HH:mm";
433
+ startTime = (0, import_utils.formatDate)(
434
+ `${newService.start_date} ${newService.start_time}`,
435
+ format
436
+ );
437
+ endTime = (0, import_utils.formatDate)(
438
+ `${newService.end_date} ${newService.end_time}`,
439
+ format
440
+ );
441
+ }
442
+ return `${import_utils.locales.getText(
443
+ "page.booking.text.update-time"
444
+ )}: ${startTime} ~ ${endTime} (${hours})`;
445
+ }, [newService, state.locale]);
446
+ return /* @__PURE__ */ import_react.default.createElement(
447
+ import_drawer.default,
448
+ {
449
+ open: state.service.addTimeModal,
450
+ title: import_utils.locales.getText("page.booking.text.add-time"),
451
+ rootClassName: "booking-server-wrap",
452
+ onClose: onCancel,
453
+ footerStyle: { padding: "10px 32px 20px" },
454
+ hideScrollBar: false,
455
+ bodyStyle: { position: "relative" },
456
+ footer: /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-total-wrap" }, currentTimeItem && ((_d = currentTimeItem == null ? void 0 : currentTimeItem.status) == null ? void 0 : _d.message) ? /* @__PURE__ */ import_react.default.createElement(
457
+ import_antd.Alert,
458
+ {
459
+ message: currentTimeItem.status.message,
460
+ type: "warning",
461
+ showIcon: true,
462
+ style: { marginBottom: 12 }
463
+ }
464
+ ) : null, newService ? /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-summary-wrap" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-summary" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-summary-time" }, updateTime), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-summary-total" }, import_utils.locales.getText("pisell1.text.subtotal"), ":", " ", (0, import_utils.formatAmount)(
465
+ (currentTimeItem.price || 0) * number,
466
+ 2,
467
+ state.amountSymbol
468
+ ))), ((_e = currentProduct == null ? void 0 : currentProduct.add_time) == null ? void 0 : _e.calculate_type) === "select_quantity" && /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-quantity-wrap" }, /* @__PURE__ */ import_react.default.createElement("span", { className: "pisell-lowcode__booking-add-time-quantity" }, import_utils.locales.getText("page.booking.text.quantity")), " ", /* @__PURE__ */ import_react.default.createElement(
469
+ import_browserSelect.default,
470
+ {
471
+ value: number,
472
+ onChange: (e) => {
473
+ setNumber(Number(e.target.value));
474
+ updateServices.run();
475
+ },
476
+ className: "pisell-lowcode__booking-add-time-quantity-select",
477
+ options: numberList
478
+ }
479
+ ))) : null), /* @__PURE__ */ import_react.default.createElement(
480
+ import_footer.default,
481
+ {
482
+ state,
483
+ dispatch,
484
+ source: "addTime",
485
+ buttons: [
486
+ /* @__PURE__ */ import_react.default.createElement(
487
+ import_antd.Button,
488
+ {
489
+ className: "pisell-lowcode__booking-footer-buttons-item",
490
+ type: transaction_habit_selection.type === "service_now_pay_later" ? "default" : "primary",
491
+ disabled: loading === "list" || !isEdit || !currentTime,
492
+ onClick: handleCheckout,
493
+ loading: loading === "checkout"
494
+ },
495
+ import_utils.locales.getText("pisell2.text.checkout")
496
+ ),
497
+ /* @__PURE__ */ import_react.default.createElement(
498
+ import_antd.Button,
499
+ {
500
+ className: "pisell-lowcode__booking-footer-buttons-item",
501
+ type: transaction_habit_selection.type === "service_now_pay_later" ? "primary" : "default",
502
+ disabled: loading === "list" || !isEdit || !currentTime,
503
+ loading: loading === "save",
504
+ onClick: () => {
505
+ handleSave("save");
506
+ }
507
+ },
508
+ import_utils.locales.getText("pisell2.text.save")
509
+ )
510
+ ]
511
+ }
512
+ ))
513
+ },
514
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-body" }, /* @__PURE__ */ import_react.default.createElement(import_antd.Skeleton, { loading: loading === "list", active: true, round: true }, /* @__PURE__ */ import_react.default.createElement("div", { className: "" }, renderList.map((d) => {
515
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-hours" }, d.title), d.times ? /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-child-card-list" }, d.times.map((child) => {
516
+ var _a2, _b2, _c2, _d2;
517
+ return /* @__PURE__ */ import_react.default.createElement(
518
+ "div",
519
+ {
520
+ className: (0, import_classnames.default)(
521
+ "pisell-lowcode__booking-add-time-child-card",
522
+ {
523
+ "pisell-lowcode__booking-add-time-child-card-active": recordKey === import_utils2.addTimeRowKey.create(d.id, child.value)
524
+ }
525
+ ),
526
+ onClick: () => {
527
+ if (!child.value) {
528
+ return;
529
+ }
530
+ onSelectItem(d, child);
531
+ }
532
+ },
533
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-child-card-left" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-child-card-left-time" }, child.label), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-add-time-child-card-left-price" }, (0, import_utils.formatAmount)(
534
+ child.price,
535
+ 2,
536
+ state.amountSymbol
537
+ ))),
538
+ /* @__PURE__ */ import_react.default.createElement(
539
+ "div",
540
+ {
541
+ className: "pisell-lowcode__booking-add-time-child-card-right",
542
+ style: {
543
+ color: (_b2 = (_a2 = child.status) == null ? void 0 : _a2.status) == null ? void 0 : _b2.color
544
+ }
545
+ },
546
+ (_d2 = (_c2 = child.status) == null ? void 0 : _c2.status) == null ? void 0 : _d2.label
547
+ )
548
+ );
549
+ })) : null);
550
+ }))), /* @__PURE__ */ import_react.default.createElement("div", { className: "" }))
551
+ );
552
+ };
553
+ var addTimeModal_default = AddTimeModal;
@@ -0,0 +1,138 @@
1
+ .pisell-lowcode__booking-add-time-header {
2
+ margin-top: 10px;
3
+ margin-bottom: 10px;
4
+ }
5
+
6
+ .pisell-lowcode__booking-add-time-body {
7
+ padding: 10px 32px 30px;
8
+ display: flex;
9
+ flex-direction: column;
10
+ width: 100%;
11
+ height: 100%;
12
+
13
+ .pisell-lowcode__booking-add-time-hours {
14
+ padding: 6px;
15
+ color: var(--Gray-900, #101828);
16
+ font-size: 14px;
17
+ font-style: normal;
18
+ font-weight: 500;
19
+ background: var(--Gray-50, #F9FAFB);
20
+ margin: 10px 0;
21
+ flex: 0 0 100%;
22
+ position: sticky;
23
+ top: 95px;
24
+ z-index: 1;
25
+ }
26
+
27
+ .pisell-lowcode__booking-add-time-child-card-list {
28
+ width: 100%;
29
+ display: flex;
30
+ flex-wrap: wrap;
31
+ gap: 10px;
32
+
33
+
34
+
35
+ .pisell-lowcode__booking-add-time-child-card {
36
+ flex: 0 0 calc(50% - 5px);
37
+ border-radius: 10px;
38
+
39
+ background: #FFF;
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: space-between;
43
+ padding: 10px 20px;
44
+ cursor: pointer;
45
+ position: relative;
46
+
47
+ &::before {
48
+ content: '';
49
+ position: absolute;
50
+ top: 0;
51
+ left: 0;
52
+ bottom: 0;
53
+ right: 0;
54
+ cursor: pointer;
55
+ border-radius: 10px;
56
+ border: 1px solid var(--Gray-true-300, #D6D6D6);
57
+ }
58
+
59
+ &.pisell-lowcode__booking-add-time-child-card-active {
60
+ &::before {
61
+ border-color: #7f56d9;
62
+ border-width: 2px;
63
+ }
64
+ }
65
+
66
+ .pisell-lowcode__booking-add-time-child-card-left {
67
+
68
+ .pisell-lowcode__booking-add-time-child-card-left-time {
69
+ color: var(--Gray-900, #101828);
70
+ font-size: 20px;
71
+ font-style: normal;
72
+ font-weight: 500;
73
+ }
74
+
75
+ .pisell-lowcode__booking-add-time-child-card-left-price {
76
+ color: var(--Gray-500, #667085);
77
+ font-size: 16px;
78
+ font-style: normal;
79
+ font-weight: 400;
80
+ }
81
+ }
82
+
83
+ .pisell-lowcode__booking-add-time-child-card-right {}
84
+ }
85
+ }
86
+
87
+ .pisell-lowcode__booking-add-time-footer {
88
+ width: 100%;
89
+ }
90
+ }
91
+
92
+ .pisell-lowcode__booking-add-time-total-wrap {
93
+ border-bottom: 1px solid var(--Gray-true-300, #f9fafb);
94
+ margin: -10px -32px 10px;
95
+ padding: 10px 32px 0;
96
+ background-color: #f3f4f6;
97
+
98
+ .pisell-lowcode__booking-add-time-summary-wrap {
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: space-between;
102
+ border: none;
103
+ margin: 0;
104
+ padding: 0 0 10px 0;
105
+
106
+ .pisell-lowcode__booking-add-time-summary {
107
+ padding-right: 20px;
108
+
109
+ .pisell-lowcode__booking-add-time-summary-time {}
110
+
111
+ .pisell-lowcode__booking-add-time-summary-total {}
112
+ }
113
+
114
+ .pisell-lowcode__booking-add-time-quantity-wrap {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+
119
+
120
+ .pisell-lowcode__booking-add-time-quantity {
121
+ margin-right: 14px;
122
+ color: var(--Gray-500, #667085);
123
+ font-size: 14px;
124
+ font-style: normal;
125
+ font-weight: 500;
126
+ white-space: nowrap;
127
+ }
128
+
129
+ .pisell-lowcode__booking-add-time-quantity-select {
130
+ min-width: 75px;
131
+ border-radius: 30px;
132
+ height: 44px;
133
+ padding: 0 16px;
134
+ background-color: var(--Gray-true-200, #E5E5E5);
135
+ }
136
+ }
137
+ }
138
+ }
@@ -0,0 +1,5 @@
1
+ export declare const getAddTimeProducts: (params: any, config: any) => Promise<any>;
2
+ export declare const saveAddTimeProduct: ({ orderId, params }: {
3
+ orderId: number | string;
4
+ params: any;
5
+ }) => Promise<any>;