@pisell/private-materials 6.4.70 → 6.4.72

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 (111) 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 +7 -7
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +7 -7
  11. package/es/components/booking/addons/model.d.ts +1 -10
  12. package/es/components/booking/components/footer/amount.js +25 -8
  13. package/es/components/booking/components/footer/utils.d.ts +7 -0
  14. package/es/components/booking/components/footer/utils.js +46 -22
  15. package/es/components/booking/forms/model.d.ts +1 -10
  16. package/es/components/booking/hooks/useQuotation.js +69 -21
  17. package/es/components/booking/info/model.d.ts +1 -10
  18. package/es/components/booking/info/service/Lists.js +1 -1
  19. package/es/components/booking/info/service/addService/utils.d.ts +1 -1
  20. package/es/components/booking/info/service/serve.d.ts +14 -0
  21. package/es/components/booking/info/service/serve.js +22 -1
  22. package/es/components/booking/info/service2/Group/utils.js +2 -0
  23. package/es/components/booking/info/service2/utils.d.ts +1 -33
  24. package/es/components/booking/info/service2/utils.js +75 -29
  25. package/es/components/booking/info/utils.js +5 -0
  26. package/es/components/booking/info2/service/addService/index.js +146 -89
  27. package/es/components/booking/info2/service/addService/utils.d.ts +9 -1
  28. package/es/components/booking/info2/service/addService/utils.js +78 -9
  29. package/es/components/booking/info2/service/editService/index.js +235 -55
  30. package/es/components/booking/info2/utilsByBooking.js +14 -5
  31. package/es/components/booking/model.d.ts +1 -9
  32. package/es/components/booking/notes/model.d.ts +1 -10
  33. package/es/components/booking/payments/model.d.ts +1 -10
  34. package/es/components/booking/utils.d.ts +9 -1
  35. package/es/components/booking/utils.js +23 -0
  36. package/es/components/eftposPay/hooks.d.ts +1 -1
  37. package/es/components/eftposPay/store/index.d.ts +2 -2
  38. package/es/components/pay/toC/model.d.ts +1 -9
  39. package/es/components/schedules/model.d.ts +1 -9
  40. package/es/components/ticketBooking/components/addServiceVariant/MultiDayTimeSelectModal.d.ts +18 -0
  41. package/es/components/ticketBooking/components/addServiceVariant/MultiDayTimeSelectModal.js +119 -0
  42. package/es/components/ticketBooking/components/addServiceVariant/MultiDayTimeSelectModal.less +0 -0
  43. package/es/components/ticketBooking/components/addServiceVariant/addService.js +283 -138
  44. package/es/components/ticketBooking/components/ticketBooking/index.js +14 -11
  45. package/es/components/ticketBooking/hooks/pisellos/useProducts.js +106 -32
  46. package/es/components/ticketBooking/utils/index.d.ts +6 -1
  47. package/es/components/ticketBooking/utils/index.js +21 -3
  48. package/es/components/wallet/Detail/model.d.ts +1 -13
  49. package/es/components/wallet/DiscountCard/model.d.ts +1 -14
  50. package/es/components/wallet/PointCard/model.d.ts +1 -13
  51. package/es/components/wallet/RechargeableCard/model.d.ts +1 -29
  52. package/es/components/wallet/Voucher/model.d.ts +1 -13
  53. package/es/components/wallet/model.d.ts +1 -9
  54. package/es/pro/multiDayTimeSelect/MultiDayTimeSelect.d.ts +9 -0
  55. package/es/pro/multiDayTimeSelect/MultiDayTimeSelect.js +355 -0
  56. package/es/pro/multiDayTimeSelect/MultiDayTimeSelect.less +8 -0
  57. package/es/pro/multiDayTimeSelect/index.d.ts +3 -0
  58. package/es/pro/multiDayTimeSelect/index.js +1 -0
  59. package/es/pro/multiDayTimeSelect/types.d.ts +28 -0
  60. package/es/pro/multiDayTimeSelect/types.js +1 -0
  61. package/lib/components/booking/addons/model.d.ts +1 -10
  62. package/lib/components/booking/components/footer/amount.js +23 -6
  63. package/lib/components/booking/components/footer/utils.d.ts +7 -0
  64. package/lib/components/booking/components/footer/utils.js +23 -11
  65. package/lib/components/booking/forms/model.d.ts +1 -10
  66. package/lib/components/booking/hooks/useQuotation.js +45 -13
  67. package/lib/components/booking/info/model.d.ts +1 -10
  68. package/lib/components/booking/info/service/Lists.js +1 -1
  69. package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
  70. package/lib/components/booking/info/service/serve.d.ts +14 -0
  71. package/lib/components/booking/info/service/serve.js +5 -0
  72. package/lib/components/booking/info/service2/Group/utils.js +2 -0
  73. package/lib/components/booking/info/service2/utils.d.ts +1 -33
  74. package/lib/components/booking/info/service2/utils.js +24 -10
  75. package/lib/components/booking/info/utils.js +4 -0
  76. package/lib/components/booking/info2/service/addService/index.js +22 -3
  77. package/lib/components/booking/info2/service/addService/utils.d.ts +9 -1
  78. package/lib/components/booking/info2/service/addService/utils.js +47 -9
  79. package/lib/components/booking/info2/service/editService/index.js +191 -31
  80. package/lib/components/booking/info2/utilsByBooking.js +19 -8
  81. package/lib/components/booking/model.d.ts +1 -9
  82. package/lib/components/booking/notes/model.d.ts +1 -10
  83. package/lib/components/booking/payments/model.d.ts +1 -10
  84. package/lib/components/booking/utils.d.ts +9 -1
  85. package/lib/components/booking/utils.js +15 -0
  86. package/lib/components/eftposPay/hooks.d.ts +1 -1
  87. package/lib/components/eftposPay/store/index.d.ts +2 -2
  88. package/lib/components/pay/toC/model.d.ts +1 -9
  89. package/lib/components/schedules/model.d.ts +1 -9
  90. package/lib/components/ticketBooking/components/addServiceVariant/MultiDayTimeSelectModal.d.ts +18 -0
  91. package/lib/components/ticketBooking/components/addServiceVariant/MultiDayTimeSelectModal.js +118 -0
  92. package/lib/components/ticketBooking/components/addServiceVariant/MultiDayTimeSelectModal.less +0 -0
  93. package/lib/components/ticketBooking/components/addServiceVariant/addService.js +185 -119
  94. package/lib/components/ticketBooking/components/ticketBooking/index.js +0 -16
  95. package/lib/components/ticketBooking/hooks/pisellos/useProducts.js +54 -9
  96. package/lib/components/ticketBooking/utils/index.d.ts +6 -1
  97. package/lib/components/ticketBooking/utils/index.js +11 -1
  98. package/lib/components/wallet/Detail/model.d.ts +1 -13
  99. package/lib/components/wallet/DiscountCard/model.d.ts +1 -14
  100. package/lib/components/wallet/PointCard/model.d.ts +1 -13
  101. package/lib/components/wallet/RechargeableCard/model.d.ts +1 -29
  102. package/lib/components/wallet/Voucher/model.d.ts +1 -13
  103. package/lib/components/wallet/model.d.ts +1 -9
  104. package/lib/pro/multiDayTimeSelect/MultiDayTimeSelect.d.ts +9 -0
  105. package/lib/pro/multiDayTimeSelect/MultiDayTimeSelect.js +304 -0
  106. package/lib/pro/multiDayTimeSelect/MultiDayTimeSelect.less +8 -0
  107. package/lib/pro/multiDayTimeSelect/index.d.ts +3 -0
  108. package/lib/pro/multiDayTimeSelect/index.js +35 -0
  109. package/lib/pro/multiDayTimeSelect/types.d.ts +28 -0
  110. package/lib/pro/multiDayTimeSelect/types.js +17 -0
  111. package/package.json +4 -4
@@ -0,0 +1,355 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
4
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
5
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
+ import React, { useMemo, useState, useEffect, useImperativeHandle, forwardRef } from 'react';
12
+ import { CalendarOutlined } from '@ant-design/icons';
13
+ import dayjs from 'dayjs';
14
+ import { DatePicker, Page } from '@pisell/materials';
15
+ import { Select, Form } from 'antd';
16
+ import { locales } from '@pisell/utils';
17
+ import "./MultiDayTimeSelect.less";
18
+
19
+ // 类型断言以支持RangePicker
20
+ var RangePicker = DatePicker.RangePicker;
21
+ var MultiDayTimeSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
22
+ var _ref$maxDays = _ref.maxDays,
23
+ maxDays = _ref$maxDays === void 0 ? 30 : _ref$maxDays,
24
+ defaultStartDate = _ref.defaultStartDate,
25
+ _ref$separateStartEnd = _ref.separateStartEnd,
26
+ separateStartEnd = _ref$separateStartEnd === void 0 ? false : _ref$separateStartEnd,
27
+ value = _ref.value,
28
+ onChange = _ref.onChange,
29
+ _ref$locale = _ref.locale,
30
+ locale = _ref$locale === void 0 ? 'en' : _ref$locale,
31
+ _ref$disabled = _ref.disabled,
32
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
33
+ startDateLabel = _ref.startDateLabel,
34
+ endDateLabel = _ref.endDateLabel,
35
+ durationLabel = _ref.durationLabel;
36
+ var _Form$useForm = Form.useForm(),
37
+ _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
38
+ form = _Form$useForm2[0];
39
+ var _useState = useState(null),
40
+ _useState2 = _slicedToArray(_useState, 2),
41
+ internalValue = _useState2[0],
42
+ setInternalValue = _useState2[1];
43
+
44
+ // 暴露方法给父组件
45
+ useImperativeHandle(ref, function () {
46
+ return {
47
+ validate: function () {
48
+ var _validate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
49
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
50
+ while (1) switch (_context.prev = _context.next) {
51
+ case 0:
52
+ _context.next = 2;
53
+ return form.validateFields();
54
+ case 2:
55
+ case "end":
56
+ return _context.stop();
57
+ }
58
+ }, _callee);
59
+ }));
60
+ function validate() {
61
+ return _validate.apply(this, arguments);
62
+ }
63
+ return validate;
64
+ }(),
65
+ getValue: function getValue() {
66
+ return internalValue;
67
+ }
68
+ };
69
+ });
70
+
71
+ // 格式化日期显示
72
+ var formatLocale = useMemo(function () {
73
+ var isEn = locale === 'en' || locale === 'en-US';
74
+ return isEn ? 'DD/MM/YYYY' : 'YYYY-MM-DD';
75
+ }, [locale]);
76
+
77
+ // 生成时长选项(1-maxDays天)
78
+ var durationOptions = useMemo(function () {
79
+ var options = [];
80
+ for (var i = 1; i <= maxDays; i++) {
81
+ options.push({
82
+ label: "".concat(i, " ").concat(i === 1 ? locale === 'en' ? 'day' : '天' : locale === 'en' ? 'days' : '天'),
83
+ value: i
84
+ });
85
+ }
86
+ return options;
87
+ }, [maxDays, locale]);
88
+
89
+ // 初始化内部值
90
+ useEffect(function () {
91
+ if (value) {
92
+ setInternalValue(value);
93
+ form.setFieldsValue({
94
+ dateRange: separateStartEnd ? undefined : [value.startDate, value.endDate],
95
+ startDate: separateStartEnd ? value.startDate : undefined,
96
+ endDate: separateStartEnd ? value.endDate : undefined,
97
+ duration: value.duration
98
+ });
99
+ } else {
100
+ var startDate = defaultStartDate || dayjs();
101
+ var endDate = startDate.add(1, 'day');
102
+ var initialValue = {
103
+ startDate: startDate,
104
+ endDate: endDate,
105
+ duration: 1
106
+ };
107
+ setInternalValue(initialValue);
108
+ form.setFieldsValue({
109
+ dateRange: separateStartEnd ? undefined : [startDate, endDate],
110
+ startDate: separateStartEnd ? startDate : undefined,
111
+ endDate: separateStartEnd ? endDate : undefined,
112
+ duration: 1
113
+ });
114
+ onChange === null || onChange === void 0 || onChange(initialValue);
115
+ }
116
+ }, [value, defaultStartDate, separateStartEnd, form, onChange]);
117
+
118
+ // 更新值并触发onChange
119
+ var updateValue = function updateValue(newValue) {
120
+ setInternalValue(newValue);
121
+ onChange === null || onChange === void 0 || onChange(newValue);
122
+ };
123
+
124
+ // 处理日期范围变化(RangePicker模式)
125
+ var handleDateRangeChange = function handleDateRangeChange(dates) {
126
+ if (dates && dates[0] && dates[1]) {
127
+ var days = dates[1].diff(dates[0], 'day');
128
+ var finalEndDate = dates[1];
129
+ var finalDuration = days;
130
+
131
+ // 如果超过maxDays,调整为开始日期+maxDays,但保留结束日期的时间
132
+ if (days > maxDays) {
133
+ // 获取结束日期的时间部分(时、分、秒、毫秒)
134
+ var endTime = {
135
+ hour: dates[1].hour(),
136
+ minute: dates[1].minute(),
137
+ second: dates[1].second(),
138
+ millisecond: dates[1].millisecond()
139
+ };
140
+ // 计算最大结束日期(开始日期 + maxDays)
141
+ finalEndDate = dates[0].add(maxDays, 'day');
142
+ // 应用结束日期的时间
143
+ finalEndDate = finalEndDate.hour(endTime.hour).minute(endTime.minute).second(endTime.second).millisecond(endTime.millisecond);
144
+ finalDuration = maxDays;
145
+ }
146
+ if (days > 0) {
147
+ var newValue = {
148
+ startDate: dates[0],
149
+ endDate: finalEndDate,
150
+ duration: finalDuration
151
+ };
152
+ updateValue(newValue);
153
+ form.setFieldsValue({
154
+ dateRange: [dates[0], finalEndDate],
155
+ duration: finalDuration
156
+ });
157
+ }
158
+ }
159
+ };
160
+
161
+ // 处理开始日期变化(分离模式)
162
+ var handleStartDateChange = function handleStartDateChange(date) {
163
+ if (date && internalValue) {
164
+ var currentEndDate = internalValue.endDate;
165
+ // 获取当前结束日期的时间部分(时、分、秒、毫秒)
166
+ var endTime = {
167
+ hour: currentEndDate.hour(),
168
+ minute: currentEndDate.minute(),
169
+ second: currentEndDate.second(),
170
+ millisecond: currentEndDate.millisecond()
171
+ };
172
+
173
+ // 确定使用的时长(不超过maxDays)
174
+ var targetDuration = Math.min(internalValue.duration, maxDays);
175
+
176
+ // 计算新的结束日期(开始日期 + 目标时长)
177
+ var newEndDate = date.add(targetDuration, 'day');
178
+
179
+ // 应用结束日期的时间
180
+ var finalEndDate = newEndDate.hour(endTime.hour).minute(endTime.minute).second(endTime.second).millisecond(endTime.millisecond);
181
+ var newValue = {
182
+ startDate: date,
183
+ endDate: finalEndDate,
184
+ duration: targetDuration
185
+ };
186
+ updateValue(newValue);
187
+ form.setFieldsValue({
188
+ endDate: finalEndDate,
189
+ duration: targetDuration
190
+ });
191
+ }
192
+ };
193
+
194
+ // 处理结束日期变化(分离模式)
195
+ var handleEndDateChange = function handleEndDateChange(date) {
196
+ if (date && internalValue) {
197
+ var days = date.diff(internalValue.startDate, 'day');
198
+ var finalEndDate = date;
199
+ var finalDuration = days;
200
+
201
+ // 如果超过maxDays,调整为开始日期+maxDays,但保留结束日期的时间
202
+ if (days > maxDays) {
203
+ // 获取结束日期的时间部分(时、分、秒、毫秒)
204
+ var endTime = {
205
+ hour: date.hour(),
206
+ minute: date.minute(),
207
+ second: date.second(),
208
+ millisecond: date.millisecond()
209
+ };
210
+ // 计算最大结束日期(开始日期 + maxDays)
211
+ finalEndDate = internalValue.startDate.add(maxDays, 'day');
212
+ // 应用结束日期的时间
213
+ finalEndDate = finalEndDate.hour(endTime.hour).minute(endTime.minute).second(endTime.second).millisecond(endTime.millisecond);
214
+ finalDuration = maxDays;
215
+ }
216
+ if (days > 0) {
217
+ var newValue = {
218
+ startDate: internalValue.startDate,
219
+ endDate: finalEndDate,
220
+ duration: finalDuration
221
+ };
222
+ updateValue(newValue);
223
+ form.setFieldsValue({
224
+ endDate: finalEndDate,
225
+ duration: finalDuration
226
+ });
227
+ }
228
+ }
229
+ };
230
+
231
+ // 处理时长变化
232
+ var handleDurationChange = function handleDurationChange(durationValue) {
233
+ if (internalValue) {
234
+ var newEndDate = internalValue.startDate.add(durationValue, 'day');
235
+ var newValue = {
236
+ startDate: internalValue.startDate,
237
+ endDate: newEndDate,
238
+ duration: durationValue
239
+ };
240
+ updateValue(newValue);
241
+ if (separateStartEnd) {
242
+ form.setFieldsValue({
243
+ endDate: newEndDate
244
+ });
245
+ } else {
246
+ form.setFieldsValue({
247
+ dateRange: [internalValue.startDate, newEndDate]
248
+ });
249
+ }
250
+ }
251
+ };
252
+ return /*#__PURE__*/React.createElement(Form, {
253
+ form: form,
254
+ layout: "vertical",
255
+ className: "multi-day-time-select-form"
256
+ }, separateStartEnd ? /*#__PURE__*/React.createElement("div", {
257
+ className: "multi-day-time-select-row"
258
+ }, /*#__PURE__*/React.createElement(Form.Item, {
259
+ label: startDateLabel || locales.getText('pisell2.text.start_date'),
260
+ name: "startDate",
261
+ rules: [{
262
+ required: true,
263
+ message: startDateLabel || locales.getText('pisell2.text.start_date')
264
+ }],
265
+ style: {
266
+ flex: 1
267
+ }
268
+ }, /*#__PURE__*/React.createElement(Page, null, /*#__PURE__*/React.createElement(DatePicker, {
269
+ inputReadOnly: true,
270
+ allowClear: false,
271
+ size: "large",
272
+ style: {
273
+ width: '100%',
274
+ padding: 0
275
+ },
276
+ suffixIcon: /*#__PURE__*/React.createElement(CalendarOutlined, null),
277
+ value: internalValue === null || internalValue === void 0 ? void 0 : internalValue.startDate,
278
+ onChange: handleStartDateChange,
279
+ format: formatLocale,
280
+ isHideCustomSelect: true,
281
+ disabled: disabled
282
+ }))), /*#__PURE__*/React.createElement(Form.Item, {
283
+ label: endDateLabel || locales.getText('pisell2.text.end_date'),
284
+ name: "endDate",
285
+ rules: [{
286
+ required: true,
287
+ message: endDateLabel || locales.getText('pisell2.text.end_date')
288
+ }],
289
+ style: {
290
+ flex: 1
291
+ }
292
+ }, /*#__PURE__*/React.createElement(Page, null, /*#__PURE__*/React.createElement(DatePicker, {
293
+ inputReadOnly: true,
294
+ allowClear: false,
295
+ size: "large",
296
+ style: {
297
+ width: '100%',
298
+ padding: 0
299
+ },
300
+ suffixIcon: /*#__PURE__*/React.createElement(CalendarOutlined, null),
301
+ value: internalValue === null || internalValue === void 0 ? void 0 : internalValue.endDate,
302
+ onChange: handleEndDateChange,
303
+ format: formatLocale,
304
+ isHideCustomSelect: true,
305
+ disabled: disabled,
306
+ disabledDate: function disabledDate(current) {
307
+ if (internalValue !== null && internalValue !== void 0 && internalValue.startDate) {
308
+ return current.isSameOrBefore(internalValue.startDate, 'day');
309
+ }
310
+ return false;
311
+ }
312
+ })))) : /*#__PURE__*/React.createElement("div", {
313
+ className: "multi-day-time-select-row"
314
+ }, /*#__PURE__*/React.createElement(Form.Item, {
315
+ label: startDateLabel || locales.getText('pisell2.text.start_date'),
316
+ name: "dateRange",
317
+ rules: [{
318
+ required: true,
319
+ message: startDateLabel || locales.getText('pisell2.text.start_date')
320
+ }],
321
+ style: {
322
+ flex: 1
323
+ }
324
+ }, /*#__PURE__*/React.createElement(Page, null, /*#__PURE__*/React.createElement(RangePicker, {
325
+ inputReadOnly: true,
326
+ allowClear: false,
327
+ size: "large",
328
+ style: {
329
+ width: '100%',
330
+ padding: 0
331
+ },
332
+ suffixIcon: /*#__PURE__*/React.createElement(CalendarOutlined, null),
333
+ value: internalValue ? [internalValue.startDate, internalValue.endDate] : null,
334
+ onChange: handleDateRangeChange,
335
+ format: formatLocale,
336
+ isHideCustomSelect: true,
337
+ endDateDays: 1,
338
+ disabled: disabled
339
+ })))), /*#__PURE__*/React.createElement(Form.Item, {
340
+ label: durationLabel || locales.getText('pisell2.text.duration'),
341
+ name: "duration",
342
+ rules: [{
343
+ required: true,
344
+ message: durationLabel || locales.getText('pisell2.text.duration')
345
+ }]
346
+ }, /*#__PURE__*/React.createElement(Select, {
347
+ size: "large",
348
+ value: internalValue === null || internalValue === void 0 ? void 0 : internalValue.duration,
349
+ onChange: handleDurationChange,
350
+ options: durationOptions,
351
+ disabled: disabled
352
+ })));
353
+ });
354
+ MultiDayTimeSelect.displayName = 'MultiDayTimeSelect';
355
+ export default MultiDayTimeSelect;
@@ -0,0 +1,8 @@
1
+ .multi-day-time-select-form {
2
+ margin-top: 12px;
3
+ .multi-day-time-select-row {
4
+ display: flex;
5
+ gap: 16px;
6
+ }
7
+ }
8
+
@@ -0,0 +1,3 @@
1
+ export { default } from './MultiDayTimeSelect';
2
+ export type { MultiDayTimeSelectRef } from './MultiDayTimeSelect';
3
+ export type { MultiDayTimeSelectProps, MultiDayTimeSelectValue } from './types';
@@ -0,0 +1 @@
1
+ export { default } from "./MultiDayTimeSelect";
@@ -0,0 +1,28 @@
1
+ import { Dayjs } from 'dayjs';
2
+ export interface MultiDayTimeSelectValue {
3
+ startDate: Dayjs;
4
+ endDate: Dayjs;
5
+ duration: number;
6
+ }
7
+ export interface MultiDayTimeSelectProps {
8
+ /** 最大天数,默认30天 */
9
+ maxDays?: number;
10
+ /** 默认开始时间 */
11
+ defaultStartDate?: Dayjs;
12
+ /** 开始时间和结束时间是否分离,false使用RangePicker,true使用两个独立的DatePicker */
13
+ separateStartEnd?: boolean;
14
+ /** 受控值 */
15
+ value?: MultiDayTimeSelectValue;
16
+ /** 值变化回调 */
17
+ onChange?: (value: MultiDayTimeSelectValue) => void;
18
+ /** 语言环境 */
19
+ locale?: string;
20
+ /** 是否禁用 */
21
+ disabled?: boolean;
22
+ /** 开始日期标签 */
23
+ startDateLabel?: string;
24
+ /** 结束日期标签 */
25
+ endDateLabel?: string;
26
+ /** 时长标签 */
27
+ durationLabel?: string;
28
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,10 +1 @@
1
- /// <reference types="react" />
2
- import { FormState } from "../model";
3
- export declare const Provider: (ComponentUi: any) => any, Context: import("react").Context<{
4
- state: FormState;
5
- } & {
6
- dispatch: (params: {
7
- type: string;
8
- payload: any;
9
- }) => void;
10
- }>;
1
+ export declare const Provider: any, Context: any;
@@ -38,6 +38,7 @@ var import_utils = require("../../utils");
38
38
  var import_utils2 = require("@pisell/utils");
39
39
  var import_decimal = __toESM(require("decimal.js"));
40
40
  var import_utils3 = require("../../info/service2/utils");
41
+ var import_utils4 = require("../../info2/service/addService/utils");
41
42
  var getRelationDetailsTotal = (relation_details) => {
42
43
  let total = new import_decimal.default(0);
43
44
  for (let item of relation_details) {
@@ -52,16 +53,22 @@ var getProductExpectAmount = (state, isEdit) => {
52
53
  let price = new import_decimal.default(0);
53
54
  let duration = new import_decimal.default(0);
54
55
  const isDay = (0, import_utils3.isDayBooking)(state);
56
+ let dayDuration = new import_decimal.default(0);
57
+ let minuteDuration = new import_decimal.default(0);
55
58
  if (isEdit) {
56
59
  if ((state == null ? void 0 : state.service) || (state == null ? void 0 : state.addons)) {
57
60
  if (Array.isArray((_a = state == null ? void 0 : state.service) == null ? void 0 : _a.value)) {
58
61
  for (let item of state.service.value) {
59
- if (isDay || (0, import_utils3.isNormalProductByDurationSchedule)(item)) {
62
+ if (isDay || (0, import_utils3.isNormalProductByDurationSchedule)(item) || (0, import_utils4.isMultiDayProduct)(item)) {
60
63
  const quantity = new import_decimal.default(item._extend.quantity || 1);
61
64
  const itemTotal = new import_decimal.default(item._extend.total || 0);
62
65
  price = price.add(itemTotal.mul(quantity));
63
- const _duration = (0, import_utils3.isDayBookingProduct)(item, state) ? new import_decimal.default(item._extend.duration || 0) : new import_decimal.default(0);
64
- duration = duration.add(_duration);
66
+ const _duration = !(0, import_utils3.isNormalProductByDurationSchedule)(item) ? new import_decimal.default(item._extend.duration || 0) : new import_decimal.default(0);
67
+ if (isDay || (0, import_utils4.isMultiDayProduct)(item)) {
68
+ dayDuration = dayDuration.add(_duration);
69
+ } else {
70
+ minuteDuration = minuteDuration.add(_duration);
71
+ }
65
72
  } else {
66
73
  const quantity = new import_decimal.default(item._extend.quantity || 1);
67
74
  const itemTotal = new import_decimal.default(item._extend.total || 0);
@@ -72,6 +79,11 @@ var getProductExpectAmount = (state, isEdit) => {
72
79
  price = price.add(relationTotal);
73
80
  const itemDuration = new import_decimal.default(import_utils.flexibleObj.getValue(item._extend.duration) || 0);
74
81
  duration = duration.add(itemDuration);
82
+ if ((0, import_utils4.isMultiDayProduct)(item)) {
83
+ dayDuration = dayDuration.add(itemDuration);
84
+ } else {
85
+ minuteDuration = minuteDuration.add(itemDuration);
86
+ }
75
87
  }
76
88
  }
77
89
  }
@@ -89,18 +101,23 @@ var getProductExpectAmount = (state, isEdit) => {
89
101
  duration = services.reduce((pre, cur) => {
90
102
  var _a2;
91
103
  let current = new import_decimal.default(0);
92
- if (isDay) {
93
- const _duration = (0, import_utils3.isDayBookingProduct)(cur, state) ? new import_decimal.default(cur._extend.duration || 0) : new import_decimal.default(0);
104
+ if (isDay || (0, import_utils4.isMultiDayProduct)(cur)) {
105
+ const _duration = !(0, import_utils3.isNormalProductByDurationSchedule)(cur) ? new import_decimal.default(cur._extend.duration || 0) : new import_decimal.default(0);
94
106
  current = _duration;
95
107
  } else {
96
108
  current = new import_decimal.default(import_utils.flexibleObj.getValue(((_a2 = cur._extend) == null ? void 0 : _a2.duration) || 0) || 0);
97
109
  }
110
+ if (isDay || (0, import_utils4.isMultiDayProduct)(cur)) {
111
+ dayDuration = dayDuration.add(current);
112
+ } else {
113
+ minuteDuration = minuteDuration.add(current);
114
+ }
98
115
  return pre.add(current);
99
116
  }, new import_decimal.default(0));
100
117
  }
101
118
  return {
102
119
  productExpectAmount: price.toNumber(),
103
- duration: (0, import_utils.getDiscountTime)(duration.toNumber(), isDay)
120
+ duration: (0, import_utils.getDiscountTimeByDayMinutes)(dayDuration.toNumber(), minuteDuration.toNumber())
104
121
  };
105
122
  };
106
123
  var getProductItemTax = (item, state, options) => {
@@ -37,5 +37,12 @@ export declare const checkResourcesFormat: (resources: any[], service: any, isCh
37
37
  * @Date: 2024-12-23 12:05
38
38
  */
39
39
  export declare const formatProductPrice: (item: any) => number;
40
+ /**
41
+ * @title: 是否包含跨日预约商品
42
+ * @description:
43
+ * @param {any} data
44
+ * @return {*}
45
+ */
46
+ export declare const getHasMultiDayProduct: (data: any) => any;
40
47
  export declare const formatValues: (state: any) => any;
41
48
  export declare const checkHolderIsError: (state: any) => any;
@@ -35,7 +35,8 @@ __export(utils_exports, {
35
35
  formatProductBundle: () => formatProductBundle,
36
36
  formatProductOption: () => formatProductOption,
37
37
  formatProductPrice: () => formatProductPrice,
38
- formatValues: () => formatValues
38
+ formatValues: () => formatValues,
39
+ getHasMultiDayProduct: () => getHasMultiDayProduct
39
40
  });
40
41
  module.exports = __toCommonJS(utils_exports);
41
42
  var import_dayjs = __toESM(require("dayjs"));
@@ -351,6 +352,14 @@ var getHolderByIndex = (holder, index) => {
351
352
  form_record: [(_a = holder == null ? void 0 : holder.form_record) == null ? void 0 : _a[index]].filter(Boolean)
352
353
  };
353
354
  };
355
+ var getHasMultiDayProduct = (data) => {
356
+ const list = data.service.value;
357
+ const isHas = list.some((item) => {
358
+ var _a;
359
+ return (_a = item._extend) == null ? void 0 : _a.groupId;
360
+ });
361
+ return isHas;
362
+ };
354
363
  var formatBookings = (data, values) => {
355
364
  const isDay = (0, import_utils4.isDaysBooking)(data);
356
365
  const isEvent = (0, import_utils4.isEventBooking)(data);
@@ -371,7 +380,7 @@ var formatBookings = (data, values) => {
371
380
  const eventOtherParams = data.eventOtherParams;
372
381
  let bookings = [];
373
382
  list.forEach((item) => {
374
- var _a, _b, _c, _d, _e;
383
+ var _a, _b, _c, _d, _e, _f;
375
384
  if (item.isCustomItem) {
376
385
  bookings.push({
377
386
  ...item._extend,
@@ -380,6 +389,7 @@ var formatBookings = (data, values) => {
380
389
  });
381
390
  return;
382
391
  }
392
+ const isMultiDay = (_a = item._extend) == null ? void 0 : _a.groupId;
383
393
  let start_date = item._extend.startDate.format("YYYY-MM-DD");
384
394
  let end_date = item._extend.endDate.format("YYYY-MM-DD");
385
395
  let end_time = item._extend.endDate.format("HH:mm");
@@ -389,8 +399,8 @@ var formatBookings = (data, values) => {
389
399
  }
390
400
  dayParams.holder = formatHolders(data, item, values);
391
401
  if (isDay) {
392
- const startDate = ((_a = item._extend) == null ? void 0 : _a.startDate) || ((_b = item._extend) == null ? void 0 : _b.start_date);
393
- const endDate = ((_c = item._extend) == null ? void 0 : _c.endDate) || ((_d = item._extend) == null ? void 0 : _d.end_date);
402
+ const startDate = ((_b = item._extend) == null ? void 0 : _b.startDate) || ((_c = item._extend) == null ? void 0 : _c.start_date);
403
+ const endDate = ((_d = item._extend) == null ? void 0 : _d.endDate) || ((_e = item._extend) == null ? void 0 : _e.end_date);
394
404
  const { startDateTime, endDateTime } = (0, import_utils4.formatDayTime)({
395
405
  startDate,
396
406
  endDate
@@ -406,7 +416,7 @@ var formatBookings = (data, values) => {
406
416
  "minutes"
407
417
  );
408
418
  }
409
- if (!((_e = item._extend) == null ? void 0 : _e.unique_identification_number)) {
419
+ if (!((_f = item._extend) == null ? void 0 : _f.unique_identification_number)) {
410
420
  const unique_identification_number = (0, import_utils5.getUniqueId)();
411
421
  item._extend.unique_identification_number = unique_identification_number;
412
422
  }
@@ -426,14 +436,14 @@ var formatBookings = (data, values) => {
426
436
  start_time,
427
437
  end_date,
428
438
  start_date,
429
- duration: isDay ? 0 : import_utils.flexibleObj.getValue(item._extend.duration),
439
+ duration: isDay || isMultiDay ? 0 : import_utils.flexibleObj.getValue(item._extend.duration),
430
440
  number: item._extend.capacity ? (0, import_utilsByBooking.getSumCapacity)({ cacheItem: item }) : item._extend.number || 1,
431
441
  resources: formatResource(item),
432
442
  note: item._extend.note,
433
443
  ...eventOtherParams || {},
434
444
  ...dayParams
435
445
  };
436
- if (isDay) {
446
+ if (isDay || isMultiDay) {
437
447
  bookings.push(booking);
438
448
  return;
439
449
  }
@@ -521,6 +531,7 @@ var formatValues = (state) => {
521
531
  metadata: {}
522
532
  };
523
533
  const isDay = (0, import_utils4.isDaysBooking)(state);
534
+ const isHasMultiDay = getHasMultiDayProduct(state);
524
535
  const isEvent = (0, import_utils4.isEventBooking)(state);
525
536
  if (!state.bookingId || isDay) {
526
537
  values.shop_note = formatNote(state);
@@ -538,10 +549,10 @@ var formatValues = (state) => {
538
549
  ...customer
539
550
  };
540
551
  values.holder = formatHolder(state, values);
541
- if (isDay || isEvent) {
552
+ if (isEvent) {
542
553
  values.relation_products = formatRelationProducts(
543
554
  state,
544
- isDay ? "day" : "event"
555
+ "event"
545
556
  );
546
557
  } else {
547
558
  values.relation_products = formatNormalProducts(state);
@@ -555,7 +566,7 @@ var formatValues = (state) => {
555
566
  startTime = `${startTime || "00:00"}:00`;
556
567
  values.schedule_date = `${values.bookings[0].select_date} ${startTime}`;
557
568
  }
558
- if (isDay) {
569
+ if (isDay || isHasMultiDay) {
559
570
  values.metadata.is_multiday_appointment = 1;
560
571
  }
561
572
  if (!((_g = values == null ? void 0 : values.bookings) == null ? void 0 : _g.length)) {
@@ -607,5 +618,6 @@ var checkHolderIsError = (state) => {
607
618
  formatProductBundle,
608
619
  formatProductOption,
609
620
  formatProductPrice,
610
- formatValues
621
+ formatValues,
622
+ getHasMultiDayProduct
611
623
  });
@@ -1,10 +1 @@
1
- /// <reference types="react" />
2
- import { FormState } from "../model";
3
- export declare const Provider: (ComponentUi: any) => any, Context: import("react").Context<{
4
- state: FormState;
5
- } & {
6
- dispatch: (params: {
7
- type: string;
8
- payload: any;
9
- }) => void;
10
- }>;
1
+ export declare const Provider: any, Context: any;