@pisell/private-materials 6.6.11 → 6.6.12

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 (71) 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/meta.js +1 -1
  5. package/build/lowcode/render/default/view.css +1 -1
  6. package/build/lowcode/render/default/view.js +1 -1
  7. package/build/lowcode/view.css +1 -1
  8. package/build/lowcode/view.js +1 -1
  9. package/es/components/appointmentBooking/components/Voucher/index.js +22 -7
  10. package/es/components/booking/addons/index.js +3 -2
  11. package/es/components/booking/components/footer/amount.js +2 -2
  12. package/es/components/booking/components/footer/index.js +7 -0
  13. package/es/components/booking/components/footer/utils.d.ts +1 -1
  14. package/es/components/booking/components/footer/utils.js +5 -3
  15. package/es/components/booking/components/voucher/index.js +6 -0
  16. package/es/components/booking/components/voucher/index.less +4 -1
  17. package/es/components/booking/components/voucherModal/index.less +1 -0
  18. package/es/components/booking/info2/service/editService/index.js +33 -2
  19. package/es/components/checkout/components/WalletPassModule/index.js +1 -0
  20. package/es/components/checkout/components/WalletPassModule/utils.js +14 -3
  21. package/es/components/checkout/hooks/useWalletPass.d.ts +1 -1
  22. package/es/components/checkout/hooks/useWalletPass.js +310 -189
  23. package/es/components/pay/toC/PaymentMethods/WalletPass/index.d.ts +5 -0
  24. package/es/components/pay/toC/PaymentMethods/WalletPass/index.js +166 -145
  25. package/es/components/pay/toC/PaymentMethods/WalletPass/serve.d.ts +6 -0
  26. package/es/components/pay/toC/PaymentMethods/WalletPass/utils.js +3 -3
  27. package/es/components/pay/toC/WalletPassBlock/index.js +3 -1
  28. package/es/components/pay/toC/index.js +66 -27
  29. package/es/components/pay/toC/model.d.ts +1 -0
  30. package/es/components/pay/toC/serve.d.ts +18 -0
  31. package/es/components/pay/toC/serve.js +29 -1
  32. package/es/components/pay/toC/utils.d.ts +2 -2
  33. package/es/components/pay/toC/utils.js +4 -0
  34. package/es/components/systemSettings/registry/components/SectionList.js +5 -1
  35. package/es/components/ticketBooking/components/addServiceVariant/addService.js +7 -4
  36. package/es/plus/walletPassGallery/serve.js +2 -0
  37. package/es/pro/Login2.0/AuthModal.js +12 -4
  38. package/es/pro/Login2.0/index.less +7 -7
  39. package/lib/components/appointmentBooking/components/Voucher/index.js +10 -2
  40. package/lib/components/booking/addons/index.js +3 -2
  41. package/lib/components/booking/components/footer/amount.js +1 -1
  42. package/lib/components/booking/components/footer/index.js +9 -0
  43. package/lib/components/booking/components/footer/utils.d.ts +1 -1
  44. package/lib/components/booking/components/footer/utils.js +5 -3
  45. package/lib/components/booking/components/voucher/index.js +6 -0
  46. package/lib/components/booking/components/voucher/index.less +4 -1
  47. package/lib/components/booking/components/voucherModal/index.less +1 -0
  48. package/lib/components/booking/info2/service/editService/index.js +48 -24
  49. package/lib/components/checkout/components/WalletPassModule/index.js +1 -0
  50. package/lib/components/checkout/components/WalletPassModule/utils.js +13 -2
  51. package/lib/components/checkout/hooks/useWalletPass.d.ts +1 -1
  52. package/lib/components/checkout/hooks/useWalletPass.js +151 -104
  53. package/lib/components/pay/toC/PaymentMethods/WalletPass/index.d.ts +5 -0
  54. package/lib/components/pay/toC/PaymentMethods/WalletPass/index.js +90 -103
  55. package/lib/components/pay/toC/PaymentMethods/WalletPass/serve.d.ts +6 -0
  56. package/lib/components/pay/toC/PaymentMethods/WalletPass/utils.js +2 -2
  57. package/lib/components/pay/toC/WalletPassBlock/index.js +3 -1
  58. package/lib/components/pay/toC/index.js +52 -11
  59. package/lib/components/pay/toC/model.d.ts +1 -0
  60. package/lib/components/pay/toC/serve.d.ts +18 -0
  61. package/lib/components/pay/toC/serve.js +6 -0
  62. package/lib/components/pay/toC/utils.d.ts +2 -2
  63. package/lib/components/pay/toC/utils.js +4 -0
  64. package/lib/components/systemSettings/registry/components/SectionList.js +4 -1
  65. package/lib/components/ticketBooking/components/addServiceVariant/addService.js +11 -7
  66. package/lib/plus/walletPassGallery/serve.js +2 -0
  67. package/lib/pro/Login2.0/AuthModal.js +15 -7
  68. package/lib/pro/Login2.0/index.less +7 -7
  69. package/package.json +2 -2
  70. package/es/components/checkout/PaymentModal.d.ts +0 -31
  71. package/lib/components/checkout/PaymentModal.d.ts +0 -31
@@ -15,11 +15,16 @@ export interface WalletPassProps {
15
15
  walletPass: {
16
16
  cards: WalletPassDataType[];
17
17
  amount: number;
18
+ recommended?: WalletPassDataType[];
19
+ transformList?: WalletPassDataType[];
20
+ noApplicableVoucher?: WalletPassDataType[];
18
21
  };
19
22
  walletSetting: {
20
23
  name: string;
21
24
  popup_status: 0 | 1;
22
25
  };
26
+ orderDetail: any;
27
+ total_amount: number;
23
28
  }
24
29
  declare const _default: React.MemoExoticComponent<React.ForwardRefExoticComponent<WalletPassProps & React.RefAttributes<WalletPassRef>>>;
25
30
  export default _default;
@@ -1,4 +1,9 @@
1
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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2
7
  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
8
  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
9
  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); }); }; }
@@ -6,11 +11,6 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
6
11
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
12
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
13
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
9
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
13
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
14
14
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
15
15
  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."); }
16
16
  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); }
@@ -19,6 +19,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
19
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
20
  import React, { forwardRef, memo, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
21
21
  import { PisellModal, PisellText, PisellToast } from '@pisell/materials';
22
+ // @ts-ignore
22
23
  import { locales, uniqueByKey } from '@pisell/utils';
23
24
  import { useMemoizedFn } from 'ahooks';
24
25
  import { InfoCircleOutlined } from '@ant-design/icons';
@@ -27,149 +28,168 @@ import MultiModeSearch from "./MultiModeSearch";
27
28
  import List from "./List";
28
29
  import { searchMachineCodeList, searchWalletCode } from "./serve";
29
30
  import { formatMachineCodeServer2CardList, getIsWalletCode } from "./utils";
30
- import { calcWalletPassListAmount, formatWalletPassList2PreparePayments } from "../../utils";
31
+ import { formatWalletPassList2PreparePayments } from "../../utils";
31
32
  import "./index.less";
32
33
  import useEngineContext from "../../../../../hooks/useEngineContext";
33
34
  var Amount = PisellText.Amount;
34
35
  var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
35
- var _context$appHelper, _context$appHelper$ge, _searchSelectData$ids;
36
+ var _context$appHelper, _context$appHelper2, _context$appHelper2$g, _searchSelectData$ids;
36
37
  var onWalletPassChange = props.onWalletPassChange,
37
38
  walletPass = props.walletPass,
38
- walletSetting = props.walletSetting;
39
+ walletSetting = props.walletSetting,
40
+ orderDetail = props.orderDetail,
41
+ total_amount = props.total_amount;
39
42
  var context = useEngineContext();
40
- var isWalletCode = context === null || context === void 0 || (_context$appHelper = context.appHelper) === null || _context$appHelper === void 0 || (_context$appHelper = _context$appHelper.utils) === null || _context$appHelper === void 0 || (_context$appHelper = _context$appHelper.businessUtils) === null || _context$appHelper === void 0 || (_context$appHelper$ge = _context$appHelper.getAppByModal) === null || _context$appHelper$ge === void 0 ? void 0 : _context$appHelper$ge.call(_context$appHelper, 'wallet');
43
+ var _ref = (context === null || context === void 0 || (_context$appHelper = context.appHelper) === null || _context$appHelper === void 0 ? void 0 : _context$appHelper.utils) || {},
44
+ walletPassEvaluator = _ref.walletPassEvaluator;
41
45
 
42
- /** 当前 walletPass信息 弹窗操作时都在内部进行,点击 redeem时同步到外层 */
43
- var _useState = useState(walletPass),
46
+ // detail是product的列表
47
+ var detail = orderDetail.detail;
48
+ var isWalletCode = context === null || context === void 0 || (_context$appHelper2 = context.appHelper) === null || _context$appHelper2 === void 0 || (_context$appHelper2 = _context$appHelper2.utils) === null || _context$appHelper2 === void 0 || (_context$appHelper2 = _context$appHelper2.businessUtils) === null || _context$appHelper2 === void 0 || (_context$appHelper2$g = _context$appHelper2.getAppByModal) === null || _context$appHelper2$g === void 0 ? void 0 : _context$appHelper2$g.call(_context$appHelper2, 'wallet');
49
+ var recommended = walletPass.cards,
50
+ transformList = walletPass.transformList,
51
+ noApplicableVoucher = walletPass.noApplicableVoucher;
52
+
53
+ /** 当前选中的券ID列表(按选中顺序) */
54
+ var _useState = useState([]),
44
55
  _useState2 = _slicedToArray(_useState, 2),
45
- currentWalletPass = _useState2[0],
46
- setCurrentWalletPass = _useState2[1];
47
- var _useState3 = useState(false),
56
+ selectedVoucherIds = _useState2[0],
57
+ setSelectedVoucherIds = _useState2[1];
58
+
59
+ /** 当前 walletPass信息 弹窗操作时都在内部进行,点击 redeem时同步到外层 */
60
+ var _useState3 = useState(walletPass),
48
61
  _useState4 = _slicedToArray(_useState3, 2),
49
- loading = _useState4[0],
50
- setLoading = _useState4[1];
62
+ currentWalletPass = _useState4[0],
63
+ setCurrentWalletPass = _useState4[1];
51
64
  var _useState5 = useState(false),
52
65
  _useState6 = _slicedToArray(_useState5, 2),
53
- open = _useState6[0],
54
- setOpen = _useState6[1];
55
-
56
- /** 搜索 modal */
66
+ loading = _useState6[0],
67
+ setLoading = _useState6[1];
57
68
  var _useState7 = useState(false),
58
69
  _useState8 = _slicedToArray(_useState7, 2),
59
- searchOpen = _useState8[0],
60
- setSearchOpen = _useState8[1];
70
+ open = _useState8[0],
71
+ setOpen = _useState8[1];
61
72
 
62
- /** 搜索后添加的walletPass */
63
- var _useState9 = useState([]),
73
+ /** 搜索 modal */
74
+ var _useState9 = useState(false),
64
75
  _useState10 = _slicedToArray(_useState9, 2),
65
- addList = _useState10[0],
66
- setAddList = _useState10[1];
76
+ searchOpen = _useState10[0],
77
+ setSearchOpen = _useState10[1];
67
78
 
68
- /** 当前order信息 */
69
- var _useState11 = useState(null),
79
+ /** 搜索后添加的walletPass */
80
+ var _useState11 = useState([]),
70
81
  _useState12 = _slicedToArray(_useState11, 2),
71
- order = _useState12[0],
72
- setOrder = _useState12[1];
82
+ addList = _useState12[0],
83
+ setAddList = _useState12[1];
73
84
 
74
- /** 当前搜索modal内list数据 */
75
- var _useState13 = useState([]),
85
+ /** 当前order信息 */
86
+ var _useState13 = useState(null),
76
87
  _useState14 = _slicedToArray(_useState13, 2),
77
- searchData = _useState14[0],
78
- setSearchData = _useState14[1];
88
+ order = _useState14[0],
89
+ setOrder = _useState14[1];
90
+
91
+ /** 当前搜索modal内list数据 */
92
+ var _useState15 = useState([]),
93
+ _useState16 = _slicedToArray(_useState15, 2),
94
+ searchData = _useState16[0],
95
+ setSearchData = _useState16[1];
79
96
 
80
97
  /** 当前搜索modal内选中数据 */
81
- var _useState15 = useState({
98
+ var _useState17 = useState({
82
99
  ids: [],
83
100
  details: []
84
101
  }),
85
- _useState16 = _slicedToArray(_useState15, 2),
86
- searchSelectData = _useState16[0],
87
- setSearchSelectData = _useState16[1];
102
+ _useState18 = _slicedToArray(_useState17, 2),
103
+ searchSelectData = _useState18[0],
104
+ setSearchSelectData = _useState18[1];
88
105
 
89
106
  /** 是否默认选中 搜索时默认选中 列表select变更更新列表时不默认选中 */
90
107
  var isAutoSelect = useRef(false);
91
- var listRef = useRef(null);
92
108
 
93
109
  /** 当前搜索框搜索值 */
94
110
  var searchValRef = useRef(null);
95
111
  var pinVerifyModalRef = useRef(null);
96
- var _ref = currentWalletPass || {},
97
- walletPassSelectCards = _ref.cards,
98
- amount = _ref.amount;
99
112
 
100
- /**
101
- * currentCustomerWalletPass 当前用户walletPass
102
- * otherCustomerWalletPass 手动搜索添加的walletPass
103
- */
113
+ // 合并计算数据源:transformList + addList
114
+ var allVouchersForCalculation = useMemo(function () {
115
+ return [].concat(_toConsumableArray(transformList || []), _toConsumableArray(addList || []));
116
+ }, [transformList, addList]);
117
+
118
+ // 根据选中的券ID获取选中的券对象列表(保持选中顺序)
119
+ var selectedVouchers = useMemo(function () {
120
+ return selectedVoucherIds.map(function (id) {
121
+ return allVouchersForCalculation.find(function (v) {
122
+ return v.id === id;
123
+ });
124
+ }).filter(Boolean);
125
+ }, [selectedVoucherIds, allVouchersForCalculation]);
126
+
127
+ // 计算展示列表和当前券的详细信息
104
128
  var _useMemo = useMemo(function () {
105
- var current = [];
106
- var other = [];
107
- (walletPassSelectCards || []).forEach(function (item) {
108
- if (item.customer_id === (order === null || order === void 0 ? void 0 : order.customer_id)) {
109
- current.push(item);
129
+ if (!walletPassEvaluator || !allVouchersForCalculation.length || !(order !== null && order !== void 0 && order.total_amount)) {
130
+ return {
131
+ displayVouchers: [].concat(_toConsumableArray(transformList || []), _toConsumableArray(noApplicableVoucher || [])),
132
+ displayOtherVouchers: addList || [],
133
+ selectedWithDetails: [],
134
+ totalDeduction: 0
135
+ };
136
+ }
137
+
138
+ // 如果没有选中任何券,返回初始状态
139
+ if (selectedVouchers.length === 0) {
140
+ return {
141
+ displayVouchers: [].concat(_toConsumableArray(transformList || []), _toConsumableArray(noApplicableVoucher || [])),
142
+ displayOtherVouchers: addList || [],
143
+ selectedWithDetails: [],
144
+ totalDeduction: 0
145
+ };
146
+ }
147
+
148
+ // 有选中的券,重新计算(基于 transformList + addList)
149
+ var result = walletPassEvaluator.recalculateVouchers(allVouchersForCalculation, selectedVouchers, order.total_amount, detail || []);
150
+
151
+ // 分离当前客户的券和其他客户的券
152
+ var currentCustomerVouchers = [];
153
+ var otherCustomerVouchers = [];
154
+ result.allWithUpdatedStatus.forEach(function (voucher) {
155
+ if (voucher.customer_id === (order === null || order === void 0 ? void 0 : order.customer_id)) {
156
+ currentCustomerVouchers.push(voucher);
110
157
  } else {
111
- other.push(item);
158
+ otherCustomerVouchers.push(voucher);
112
159
  }
113
160
  });
114
- return [current, other];
115
- }, [walletPassSelectCards, order === null || order === void 0 ? void 0 : order.customer_id]),
116
- _useMemo2 = _slicedToArray(_useMemo, 2),
117
- currentCustomerWalletPass = _useMemo2[0],
118
- otherCustomerWalletPass = _useMemo2[1];
161
+ return {
162
+ displayVouchers: [].concat(currentCustomerVouchers, _toConsumableArray(noApplicableVoucher || [])),
163
+ displayOtherVouchers: otherCustomerVouchers,
164
+ selectedWithDetails: result.selectedWithDetails,
165
+ totalDeduction: result.selectedWithDetails.reduce(function (sum, v) {
166
+ return sum + (v.actualDeduction || 0);
167
+ }, 0)
168
+ };
169
+ }, [selectedVouchers, allVouchersForCalculation, transformList, addList, noApplicableVoucher, order === null || order === void 0 ? void 0 : order.total_amount, order === null || order === void 0 ? void 0 : order.customer_id, detail, walletPassEvaluator]),
170
+ displayVouchers = _useMemo.displayVouchers,
171
+ displayOtherVouchers = _useMemo.displayOtherVouchers,
172
+ selectedWithDetails = _useMemo.selectedWithDetails,
173
+ totalDeduction = _useMemo.totalDeduction;
119
174
 
120
175
  // 基于选择的 walletPassCard转换接口所需prepare_payments参数
121
176
  var prepare_payments = useMemo(function () {
122
- return formatWalletPassList2PreparePayments(uniqueByKey((walletPassSelectCards || []).concat(searchSelectData.details), 'id'));
123
- }, [walletPassSelectCards, searchSelectData]);
177
+ return formatWalletPassList2PreparePayments(uniqueByKey((selectedWithDetails || []).concat(searchSelectData.details), 'id'));
178
+ }, [selectedWithDetails, searchSelectData]);
124
179
 
125
180
  // 当前列表选中id
126
181
  var selectValue = useMemo(function () {
127
- return (walletPassSelectCards === null || walletPassSelectCards === void 0 ? void 0 : walletPassSelectCards.map(function (item) {
128
- return item.id;
129
- })) || [];
130
- }, [walletPassSelectCards]);
131
- var otherCustomerWalletPassList = useMemo(function () {
132
- return formatMachineCodeServer2CardList(addList, selectValue);
133
- }, [addList, selectValue]);
134
- var other_exact_codes = useMemo(function () {
135
- var codes = [];
136
- addList.forEach(function (item) {
137
- if (!selectValue.includes(item.id)) {
138
- codes.push(item.code);
139
- }
140
- });
141
- return codes;
142
- }, [addList, selectValue]);
143
- var refreshList = useMemoizedFn(function () {
144
- if (order !== null && order !== void 0 && order.order_id && order !== null && order !== void 0 && order.customer_id) {
145
- var _listRef$current, _order$_order;
146
- (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.init({
147
- order_id: order.order_id,
148
- available: 2,
149
- prepare_payments: prepare_payments,
150
- filter_prepare_wallet_pass: 1,
151
- sale_channel: ((_order$_order = order._order) === null || _order$_order === void 0 ? void 0 : _order$_order.sale_channel) || 'online-store',
152
- other_exact_codes: other_exact_codes
153
- },
154
- // 已选择的卡片接口中不会返回,所以追加进入列表
155
- function (val) {
156
- var idMap = val.reduce(function (pre, cur) {
157
- return _objectSpread(_objectSpread({}, pre), {}, _defineProperty({}, cur.id, cur));
158
- }, {});
159
- setAddList(function (prevState) {
160
- return prevState.map(function (item) {
161
- if (idMap[item.id]) {
162
- return idMap[item.id];
163
- }
164
- return item;
165
- });
166
- });
167
- return [].concat(_toConsumableArray(currentCustomerWalletPass || []), _toConsumableArray(val)).filter(function (item) {
168
- return !(order !== null && order !== void 0 && order.customer_id) || item.customer_id === (order === null || order === void 0 ? void 0 : order.customer_id);
169
- });
170
- });
182
+ return selectedVoucherIds;
183
+ }, [selectedVoucherIds]);
184
+
185
+ // 初始化时设置默认选中的券
186
+ useEffect(function () {
187
+ if (recommended && recommended.length > 0) {
188
+ setSelectedVoucherIds(recommended.map(function (v) {
189
+ return v.id;
190
+ }));
171
191
  }
172
- });
192
+ }, [recommended]);
173
193
 
174
194
  /**
175
195
  * 搜索结果list弹窗列表选中发生变更时 重新获取接口
@@ -193,9 +213,12 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
193
213
  setOrder(res);
194
214
  setOpen(true);
195
215
  setCurrentWalletPass(walletPass);
196
- setTimeout(function () {
197
- refreshList();
198
- });
216
+ // 设置初始选中的推荐券
217
+ if (recommended && recommended.length > 0) {
218
+ setSelectedVoucherIds(recommended.map(function (v) {
219
+ return v.id;
220
+ }));
221
+ }
199
222
  case 6:
200
223
  case "end":
201
224
  return _context.stop();
@@ -213,7 +236,7 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
213
236
  */
214
237
  var searchList = /*#__PURE__*/function () {
215
238
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(_ref3, isSelectChange) {
216
- var code, customer_pin_key, _order$_order2, result;
239
+ var code, customer_pin_key, _order$_order, baseResult, result;
217
240
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
218
241
  while (1) switch (_context2.prev = _context2.next) {
219
242
  case 0:
@@ -232,12 +255,12 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
232
255
  code: code,
233
256
  prepare_payments: prepare_payments,
234
257
  // filter_prepare_wallet_pass: 1,
235
- sale_channel: ((_order$_order2 = order._order) === null || _order$_order2 === void 0 ? void 0 : _order$_order2.sale_channel) || 'online-store',
258
+ sale_channel: ((_order$_order = order._order) === null || _order$_order === void 0 ? void 0 : _order$_order.sale_channel) || 'online-store',
236
259
  customer_pin_key: customer_pin_key
237
260
  });
238
261
  case 7:
239
- result = _context2.sent;
240
- if (result) {
262
+ baseResult = _context2.sent;
263
+ if (baseResult) {
241
264
  _context2.next = 11;
242
265
  break;
243
266
  }
@@ -254,6 +277,11 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
254
277
  }
255
278
  return _context2.abrupt("return");
256
279
  case 13:
280
+ result = walletPassEvaluator.searchVoucherFormat({
281
+ vouchers: baseResult,
282
+ orderTotalAmount: order.total_amount,
283
+ products: detail
284
+ });
257
285
  setSearchData(formatMachineCodeServer2CardList([].concat(_toConsumableArray(searchSelectData.details), _toConsumableArray(result)), searchSelectData.ids));
258
286
  if (result.length) {
259
287
  // 如果搜索结果只有一个并且可用,则直接选中
@@ -269,15 +297,15 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
269
297
  customer_pin_key: customer_pin_key
270
298
  };
271
299
  }
272
- case 15:
273
- _context2.prev = 15;
300
+ case 16:
301
+ _context2.prev = 16;
274
302
  setLoading(false);
275
- return _context2.finish(15);
276
- case 18:
303
+ return _context2.finish(16);
304
+ case 19:
277
305
  case "end":
278
306
  return _context2.stop();
279
307
  }
280
- }, _callee2, null, [[4,, 15, 18]]);
308
+ }, _callee2, null, [[4,, 16, 19]]);
281
309
  }));
282
310
  return function searchList(_x2, _x3) {
283
311
  return _ref4.apply(this, arguments);
@@ -361,12 +389,19 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
361
389
  });
362
390
  };
363
391
  var handleSelectOk = function handleSelectOk() {
364
- changeWalletPass(uniqueByKey([].concat(_toConsumableArray(walletPassSelectCards || []), _toConsumableArray(searchSelectData.details)), 'id'));
392
+ // 将搜索选中的券添加到 addList(只添加非当前客户的券)
393
+ var otherCustomerSearchVouchers = searchSelectData.details.filter(function (item) {
394
+ return item.customer_id !== (order === null || order === void 0 ? void 0 : order.customer_id);
395
+ });
365
396
  setAddList(function (prevState) {
366
- return uniqueByKey([].concat(_toConsumableArray(prevState), _toConsumableArray(searchSelectData.details)), 'id').filter(function (item) {
367
- return !(order !== null && order !== void 0 && order.customer_id) || item.customer_id !== (order === null || order === void 0 ? void 0 : order.customer_id);
368
- });
397
+ return uniqueByKey([].concat(_toConsumableArray(prevState), _toConsumableArray(otherCustomerSearchVouchers)), 'id');
398
+ });
399
+
400
+ // 更新选中的券ID列表(包括所有搜索选中的券)
401
+ var newSelectedIds = uniqueByKey([].concat(_toConsumableArray(selectedWithDetails || []), _toConsumableArray(searchSelectData.details)), 'id').map(function (v) {
402
+ return v.id;
369
403
  });
404
+ setSelectedVoucherIds(newSelectedIds);
370
405
  handleSearchModalClose();
371
406
  };
372
407
  var handleAddChange = useMemoizedFn(function (val, details) {
@@ -378,29 +413,15 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
378
413
  })
379
414
  });
380
415
  });
381
- var changeWalletPass = function changeWalletPass(cards) {
382
- setCurrentWalletPass === null || setCurrentWalletPass === void 0 || setCurrentWalletPass({
383
- cards: cards,
384
- amount: calcWalletPassListAmount(cards)
385
- });
386
- setTimeout(function () {
387
- refreshList();
388
- });
389
- };
390
416
  var handleSelectChange = function handleSelectChange(val, details, type) {
391
- var cards = details.map(function (item) {
392
- return item.originData;
393
- });
394
- // 更新时 把当前客户value和其他客户value合并
395
- if (type === 'other') {
396
- cards = currentCustomerWalletPass.concat(cards);
397
- } else if (type === 'current') {
398
- cards = otherCustomerWalletPass.concat(cards);
399
- }
400
- changeWalletPass(cards);
417
+ // 更新选中的券ID列表
418
+ setSelectedVoucherIds(val);
401
419
  };
402
420
  var handleRedeem = function handleRedeem() {
403
- onWalletPassChange === null || onWalletPassChange === void 0 || onWalletPassChange(currentWalletPass);
421
+ onWalletPassChange === null || onWalletPassChange === void 0 || onWalletPassChange(_objectSpread(_objectSpread({}, currentWalletPass), {}, {
422
+ cards: selectedWithDetails,
423
+ amount: totalDeduction
424
+ }));
404
425
  setOpen(false);
405
426
  };
406
427
  var handleWalletClose = function handleWalletClose() {
@@ -422,7 +443,7 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
422
443
  cancelVisible: false,
423
444
  destroyOnClose: true,
424
445
  okText: /*#__PURE__*/React.createElement("div", null, locales.getText('tocPay.text.redeem'), " ", /*#__PURE__*/React.createElement(Amount, {
425
- value: amount
446
+ value: totalDeduction
426
447
  })),
427
448
  onOk: handleRedeem
428
449
  }, /*#__PURE__*/React.createElement("div", {
@@ -440,9 +461,9 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
440
461
  className: "wallet-pass-modal-multi-selection-available-title-icon"
441
462
  }), locales.getText('tocPay.text.multipleSelectionAvailable')), /*#__PURE__*/React.createElement("div", {
442
463
  className: "wallet-pass-modal-multi-selection-available-desc"
443
- }, locales.getText('tocPay.text.youCanSelectMultipleWalletPassesToCombineForPayment')(walletSetting.name))), otherCustomerWalletPassList.length > 0 && /*#__PURE__*/React.createElement(List, {
464
+ }, locales.getText('tocPay.text.youCanSelectMultipleWalletPassesToCombineForPayment')(walletSetting.name))), displayOtherVouchers.length > 0 && /*#__PURE__*/React.createElement(List, {
444
465
  walletSetting: walletSetting,
445
- data: otherCustomerWalletPassList,
466
+ data: formatMachineCodeServer2CardList(displayOtherVouchers, selectValue),
446
467
  title: locales.getText('tocPay.text.couponCodesAdded'),
447
468
  onChange: handleOtherChange,
448
469
  value: selectValue,
@@ -452,9 +473,9 @@ var WalletPass = /*#__PURE__*/forwardRef(function (props, ref) {
452
473
  walletSetting: walletSetting,
453
474
  title: walletSetting.name,
454
475
  onChange: handleCurrentChange,
455
- ref: listRef,
476
+ data: formatMachineCodeServer2CardList(displayVouchers, selectValue),
456
477
  value: selectValue,
457
- onLoadingChange: setLoading
478
+ loading: loading
458
479
  }))), /*#__PURE__*/React.createElement(PisellModal, {
459
480
  title: /*#__PURE__*/React.createElement("div", null, locales.getText('tocPay.text.searchResult')),
460
481
  mobileModalHeight: '90%',
@@ -56,6 +56,12 @@ export declare type WalletPassDataType = {
56
56
  metadata?: {
57
57
  validity_type: string;
58
58
  };
59
+ /** 前端计算 可用最大金额 */
60
+ _available_max_amount?: number;
61
+ /** 前端计算 统一可用状态 */
62
+ _unified_available_status?: 0 | 1;
63
+ /** 前端计算 禁用原因 */
64
+ reason?: string;
59
65
  };
60
66
  declare type Shop = {
61
67
  id: number;
@@ -1,4 +1,4 @@
1
- import { formatDate, locales } from '@pisell/utils';
1
+ import { formatDate, isNumber, locales } from '@pisell/utils';
2
2
  import { globalConfig } from '@pisell/materials';
3
3
  import { getAvailableMaxAmount } from "../../utils";
4
4
  var voucherTime = function voucherTime(data) {
@@ -25,8 +25,8 @@ export var formatMachineCodeServer2CardList = function formatMachineCodeServer2C
25
25
  showDetail: false,
26
26
  showQrCode: false,
27
27
  code: item.code,
28
- disabled: !item.unified_available_status,
29
- disabledReason: (_item$unified_message = item.unified_messages) === null || _item$unified_message === void 0 ? void 0 : _item$unified_message.title,
28
+ disabled: isNumber(item._unified_available_status) ? !item._unified_available_status : !item.unified_available_status,
29
+ disabledReason: isNumber(item._unified_available_status) ? item.reason : (_item$unified_message = item.unified_messages) === null || _item$unified_message === void 0 ? void 0 : _item$unified_message.title,
30
30
  cover: (_item$product = item.product) === null || _item$product === void 0 ? void 0 : _item$product.cover,
31
31
  qrCode: item.code,
32
32
  validDate: voucherTime(item),
@@ -163,7 +163,9 @@ var WalletPassBlock = function WalletPassBlock(props, ref) {
163
163
  ref: walletPassRef,
164
164
  walletSetting: walletSetting,
165
165
  onWalletPassChange: onWalletPassChange,
166
- walletPass: payGroup === null || payGroup === void 0 ? void 0 : payGroup.walletPass
166
+ walletPass: payGroup === null || payGroup === void 0 ? void 0 : payGroup.walletPass,
167
+ orderDetail: payGroup === null || payGroup === void 0 ? void 0 : payGroup.orderDetail,
168
+ total_amount: payGroup === null || payGroup === void 0 ? void 0 : payGroup.total_amount
167
169
  }), /*#__PURE__*/React.createElement(WalletAvailable, {
168
170
  ref: walletAvailableRef,
169
171
  walletSetting: walletSetting,