@pisell/private-materials 6.3.106 → 6.3.107

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 (49) 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.js +1 -1
  6. package/build/lowcode/view.js +1 -1
  7. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  8. package/es/components/eftpos/hooks.d.ts +0 -1
  9. package/es/components/eftposPay/tyro/hooks.d.ts +0 -1
  10. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +0 -1
  11. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  12. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  13. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +0 -1
  14. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  15. package/es/components/pay/toC/PaymentMethods/WalletPass/index.d.ts +5 -0
  16. package/es/components/pay/toC/PaymentMethods/WalletPass/index.js +165 -142
  17. package/es/components/pay/toC/PaymentMethods/WalletPass/serve.d.ts +6 -0
  18. package/es/components/pay/toC/PaymentMethods/WalletPass/utils.js +3 -3
  19. package/es/components/pay/toC/WalletPassBlock/index.js +3 -1
  20. package/es/components/pay/toC/index.js +65 -31
  21. package/es/components/pay/toC/model.d.ts +1 -0
  22. package/es/components/pay/toC/serve.d.ts +18 -0
  23. package/es/components/pay/toC/serve.js +29 -1
  24. package/es/components/pay/toC/utils.d.ts +2 -2
  25. package/es/components/pay/toC/utils.js +4 -0
  26. package/es/components/shoppingCart/components/Empty/index.d.ts +0 -1
  27. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  28. package/lib/components/eftpos/hooks.d.ts +0 -1
  29. package/lib/components/eftposPay/tyro/hooks.d.ts +0 -1
  30. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +0 -1
  31. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  32. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  33. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +0 -1
  34. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  35. package/lib/components/pay/toC/PaymentMethods/WalletPass/index.d.ts +5 -0
  36. package/lib/components/pay/toC/PaymentMethods/WalletPass/index.js +90 -100
  37. package/lib/components/pay/toC/PaymentMethods/WalletPass/serve.d.ts +6 -0
  38. package/lib/components/pay/toC/PaymentMethods/WalletPass/utils.js +2 -2
  39. package/lib/components/pay/toC/WalletPassBlock/index.js +3 -1
  40. package/lib/components/pay/toC/index.js +52 -19
  41. package/lib/components/pay/toC/model.d.ts +1 -0
  42. package/lib/components/pay/toC/serve.d.ts +18 -0
  43. package/lib/components/pay/toC/serve.js +6 -0
  44. package/lib/components/pay/toC/utils.d.ts +2 -2
  45. package/lib/components/pay/toC/utils.js +4 -0
  46. package/lib/components/shoppingCart/components/Empty/index.d.ts +0 -1
  47. package/lowcode/eco-cup-list/meta.ts +1 -1
  48. package/lowcode/eco-customer-list/meta.ts +1 -1
  49. package/package.json +4 -4
@@ -47,10 +47,14 @@ var import_index = require("./index.less");
47
47
  var import_useEngineContext = __toESM(require("../../../../../hooks/useEngineContext"));
48
48
  var { Amount } = import_materials.PisellText;
49
49
  var WalletPass = (0, import_react.forwardRef)((props, ref) => {
50
- var _a, _b, _c, _d, _e;
51
- const { onWalletPassChange, walletPass, walletSetting } = props;
50
+ var _a, _b, _c, _d, _e, _f;
51
+ const { onWalletPassChange, walletPass, walletSetting, orderDetail, total_amount } = props;
52
52
  const context = (0, import_useEngineContext.default)();
53
- const isWalletCode = (_d = (_c = (_b = (_a = context == null ? void 0 : context.appHelper) == null ? void 0 : _a.utils) == null ? void 0 : _b.businessUtils) == null ? void 0 : _c.getAppByModal) == null ? void 0 : _d.call(_c, "wallet");
53
+ const { walletPassEvaluator } = ((_a = context == null ? void 0 : context.appHelper) == null ? void 0 : _a.utils) || {};
54
+ const { detail } = orderDetail;
55
+ const isWalletCode = (_e = (_d = (_c = (_b = context == null ? void 0 : context.appHelper) == null ? void 0 : _b.utils) == null ? void 0 : _c.businessUtils) == null ? void 0 : _d.getAppByModal) == null ? void 0 : _e.call(_d, "wallet");
56
+ const { cards: recommended, transformList, noApplicableVoucher } = walletPass;
57
+ const [selectedVoucherIds, setSelectedVoucherIds] = (0, import_react.useState)([]);
54
58
  const [currentWalletPass, setCurrentWalletPass] = (0, import_react.useState)(walletPass);
55
59
  const [loading, setLoading] = (0, import_react.useState)(false);
56
60
  const [open, setOpen] = (0, import_react.useState)(false);
@@ -63,78 +67,69 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
63
67
  details: []
64
68
  });
65
69
  const isAutoSelect = (0, import_react.useRef)(false);
66
- const listRef = (0, import_react.useRef)(null);
67
70
  const searchValRef = (0, import_react.useRef)(null);
68
71
  const pinVerifyModalRef = (0, import_react.useRef)(null);
69
- const { cards: walletPassSelectCards, amount } = currentWalletPass || {};
70
- const [currentCustomerWalletPass, otherCustomerWalletPass] = (0, import_react.useMemo)(() => {
71
- const current = [];
72
- const other = [];
73
- (walletPassSelectCards || []).forEach((item) => {
74
- if (item.customer_id === (order == null ? void 0 : order.customer_id)) {
75
- current.push(item);
72
+ const allVouchersForCalculation = (0, import_react.useMemo)(() => {
73
+ return [...transformList || [], ...addList || []];
74
+ }, [transformList, addList]);
75
+ const selectedVouchers = (0, import_react.useMemo)(() => {
76
+ return selectedVoucherIds.map((id) => allVouchersForCalculation.find((v) => v.id === id)).filter(Boolean);
77
+ }, [selectedVoucherIds, allVouchersForCalculation]);
78
+ const { displayVouchers, displayOtherVouchers, selectedWithDetails, totalDeduction } = (0, import_react.useMemo)(() => {
79
+ if (!walletPassEvaluator || !allVouchersForCalculation.length || !(order == null ? void 0 : order.total_amount)) {
80
+ return {
81
+ displayVouchers: [...transformList || [], ...noApplicableVoucher || []],
82
+ displayOtherVouchers: addList || [],
83
+ selectedWithDetails: [],
84
+ totalDeduction: 0
85
+ };
86
+ }
87
+ if (selectedVouchers.length === 0) {
88
+ return {
89
+ displayVouchers: [...transformList || [], ...noApplicableVoucher || []],
90
+ displayOtherVouchers: addList || [],
91
+ selectedWithDetails: [],
92
+ totalDeduction: 0
93
+ };
94
+ }
95
+ const result = walletPassEvaluator.recalculateVouchers(
96
+ allVouchersForCalculation,
97
+ selectedVouchers,
98
+ order.total_amount,
99
+ detail || []
100
+ );
101
+ const currentCustomerVouchers = [];
102
+ const otherCustomerVouchers = [];
103
+ result.allWithUpdatedStatus.forEach((voucher) => {
104
+ if (voucher.customer_id === (order == null ? void 0 : order.customer_id)) {
105
+ currentCustomerVouchers.push(voucher);
76
106
  } else {
77
- other.push(item);
107
+ otherCustomerVouchers.push(voucher);
78
108
  }
79
109
  });
80
- return [current, other];
81
- }, [walletPassSelectCards, order == null ? void 0 : order.customer_id]);
110
+ return {
111
+ displayVouchers: [...currentCustomerVouchers, ...noApplicableVoucher || []],
112
+ displayOtherVouchers: otherCustomerVouchers,
113
+ selectedWithDetails: result.selectedWithDetails,
114
+ totalDeduction: result.selectedWithDetails.reduce((sum, v) => sum + (v.actualDeduction || 0), 0)
115
+ };
116
+ }, [selectedVouchers, allVouchersForCalculation, transformList, addList, noApplicableVoucher, order == null ? void 0 : order.total_amount, order == null ? void 0 : order.customer_id, detail, walletPassEvaluator]);
82
117
  const prepare_payments = (0, import_react.useMemo)(() => {
83
118
  return (0, import_utils3.formatWalletPassList2PreparePayments)(
84
119
  (0, import_utils.uniqueByKey)(
85
- (walletPassSelectCards || []).concat(searchSelectData.details),
120
+ (selectedWithDetails || []).concat(searchSelectData.details),
86
121
  "id"
87
122
  )
88
123
  );
89
- }, [walletPassSelectCards, searchSelectData]);
124
+ }, [selectedWithDetails, searchSelectData]);
90
125
  const selectValue = (0, import_react.useMemo)(() => {
91
- return (walletPassSelectCards == null ? void 0 : walletPassSelectCards.map((item) => item.id)) || [];
92
- }, [walletPassSelectCards]);
93
- const otherCustomerWalletPassList = (0, import_react.useMemo)(() => {
94
- return (0, import_utils2.formatMachineCodeServer2CardList)(addList, selectValue);
95
- }, [addList, selectValue]);
96
- const other_exact_codes = (0, import_react.useMemo)(() => {
97
- const codes = [];
98
- addList.forEach((item) => {
99
- if (!selectValue.includes(item.id)) {
100
- codes.push(item.code);
101
- }
102
- });
103
- return codes;
104
- }, [addList, selectValue]);
105
- const refreshList = (0, import_ahooks.useMemoizedFn)(() => {
106
- var _a2, _b2;
107
- if ((order == null ? void 0 : order.order_id) && (order == null ? void 0 : order.customer_id)) {
108
- (_b2 = listRef.current) == null ? void 0 : _b2.init(
109
- {
110
- order_id: order.order_id,
111
- available: 2,
112
- prepare_payments,
113
- filter_prepare_wallet_pass: 1,
114
- sale_channel: ((_a2 = order._order) == null ? void 0 : _a2.sale_channel) || "online-store",
115
- other_exact_codes
116
- },
117
- // 已选择的卡片接口中不会返回,所以追加进入列表
118
- (val) => {
119
- const idMap = val.reduce((pre, cur) => {
120
- return {
121
- ...pre,
122
- [cur.id]: cur
123
- };
124
- }, {});
125
- setAddList((prevState) => {
126
- return prevState.map((item) => {
127
- if (idMap[item.id]) {
128
- return idMap[item.id];
129
- }
130
- return item;
131
- });
132
- });
133
- return [...currentCustomerWalletPass || [], ...val];
134
- }
135
- );
126
+ return selectedVoucherIds;
127
+ }, [selectedVoucherIds]);
128
+ (0, import_react.useEffect)(() => {
129
+ if (recommended && recommended.length > 0) {
130
+ setSelectedVoucherIds(recommended.map((v) => v.id));
136
131
  }
137
- });
132
+ }, [recommended]);
138
133
  (0, import_react.useEffect)(() => {
139
134
  if ((order == null ? void 0 : order.order_id) && searchValRef.current) {
140
135
  searchList(searchValRef.current, true);
@@ -145,16 +140,16 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
145
140
  setOrder(res);
146
141
  setOpen(true);
147
142
  setCurrentWalletPass(walletPass);
148
- setTimeout(() => {
149
- refreshList();
150
- });
143
+ if (recommended && recommended.length > 0) {
144
+ setSelectedVoucherIds(recommended.map((v) => v.id));
145
+ }
151
146
  };
152
147
  const searchList = async ({ code, customer_pin_key }, isSelectChange) => {
153
148
  var _a2;
154
149
  if (!(order == null ? void 0 : order.order_id)) return;
155
150
  setLoading(true);
156
151
  try {
157
- const result = await (0, import_serve.searchMachineCodeList)({
152
+ const baseResult = await (0, import_serve.searchMachineCodeList)({
158
153
  order_id: order.order_id,
159
154
  code,
160
155
  prepare_payments,
@@ -162,7 +157,7 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
162
157
  sale_channel: ((_a2 = order._order) == null ? void 0 : _a2.sale_channel) || "online-store",
163
158
  customer_pin_key
164
159
  });
165
- if (!result) {
160
+ if (!baseResult) {
166
161
  if (!isSelectChange) {
167
162
  (0, import_materials.PisellToast)({
168
163
  content: import_utils.locales.getText("tocPay.text.walletSearchEmpty")
@@ -173,6 +168,11 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
173
168
  if (isSelectChange && !searchValRef.current) {
174
169
  return;
175
170
  }
171
+ let result = walletPassEvaluator.searchVoucherFormat({
172
+ vouchers: baseResult,
173
+ orderTotalAmount: order.total_amount,
174
+ products: detail
175
+ });
176
176
  setSearchData(
177
177
  (0, import_utils2.formatMachineCodeServer2CardList)(
178
178
  [...searchSelectData.details, ...result],
@@ -235,23 +235,23 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
235
235
  });
236
236
  };
237
237
  const handleSelectOk = () => {
238
- changeWalletPass(
239
- (0, import_utils.uniqueByKey)(
240
- [
241
- ...walletPassSelectCards || [],
242
- ...searchSelectData.details
243
- ],
244
- "id"
245
- )
238
+ const otherCustomerSearchVouchers = searchSelectData.details.filter(
239
+ (item) => item.customer_id !== (order == null ? void 0 : order.customer_id)
246
240
  );
247
241
  setAddList((prevState) => {
248
242
  return (0, import_utils.uniqueByKey)(
249
- [...prevState, ...searchSelectData.details],
243
+ [...prevState, ...otherCustomerSearchVouchers],
250
244
  "id"
251
- ).filter(
252
- (item) => !(order == null ? void 0 : order.customer_id) || item.customer_id !== (order == null ? void 0 : order.customer_id)
253
245
  );
254
246
  });
247
+ const newSelectedIds = (0, import_utils.uniqueByKey)(
248
+ [
249
+ ...selectedWithDetails || [],
250
+ ...searchSelectData.details
251
+ ],
252
+ "id"
253
+ ).map((v) => v.id);
254
+ setSelectedVoucherIds(newSelectedIds);
255
255
  handleSearchModalClose();
256
256
  };
257
257
  const handleAddChange = (0, import_ahooks.useMemoizedFn)(
@@ -263,26 +263,15 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
263
263
  });
264
264
  }
265
265
  );
266
- const changeWalletPass = (cards) => {
267
- setCurrentWalletPass == null ? void 0 : setCurrentWalletPass({
268
- cards,
269
- amount: (0, import_utils3.calcWalletPassListAmount)(cards)
270
- });
271
- setTimeout(() => {
272
- refreshList();
273
- });
274
- };
275
266
  const handleSelectChange = (val, details, type) => {
276
- let cards = details.map((item) => item.originData);
277
- if (type === "other") {
278
- cards = currentCustomerWalletPass.concat(cards);
279
- } else if (type === "current") {
280
- cards = otherCustomerWalletPass.concat(cards);
281
- }
282
- changeWalletPass(cards);
267
+ setSelectedVoucherIds(val);
283
268
  };
284
269
  const handleRedeem = () => {
285
- onWalletPassChange == null ? void 0 : onWalletPassChange(currentWalletPass);
270
+ onWalletPassChange == null ? void 0 : onWalletPassChange({
271
+ ...currentWalletPass,
272
+ cards: selectedWithDetails,
273
+ amount: totalDeduction
274
+ });
286
275
  setOpen(false);
287
276
  };
288
277
  const handleWalletClose = () => {
@@ -307,16 +296,16 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
307
296
  onCancel: () => handleWalletClose(),
308
297
  cancelVisible: false,
309
298
  destroyOnClose: true,
310
- okText: /* @__PURE__ */ import_react.default.createElement("div", null, import_utils.locales.getText("tocPay.text.redeem"), " ", /* @__PURE__ */ import_react.default.createElement(Amount, { value: amount })),
299
+ okText: /* @__PURE__ */ import_react.default.createElement("div", null, import_utils.locales.getText("tocPay.text.redeem"), " ", /* @__PURE__ */ import_react.default.createElement(Amount, { value: totalDeduction })),
311
300
  onOk: handleRedeem
312
301
  },
313
302
  /* @__PURE__ */ import_react.default.createElement("div", { className: "", style: { marginTop: 24 } }, /* @__PURE__ */ import_react.default.createElement(import_MultiModeSearch.default, { onChange: handleSearch }), /* @__PURE__ */ import_react.default.createElement("div", { className: "wallet-pass-modal-multi-selection-available" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "wallet-pass-modal-multi-selection-available-title" }, /* @__PURE__ */ import_react.default.createElement(import_icons.InfoCircleOutlined, { className: "wallet-pass-modal-multi-selection-available-title-icon" }), import_utils.locales.getText("tocPay.text.multipleSelectionAvailable")), /* @__PURE__ */ import_react.default.createElement("div", { className: "wallet-pass-modal-multi-selection-available-desc" }, import_utils.locales.getText(
314
303
  "tocPay.text.youCanSelectMultipleWalletPassesToCombineForPayment"
315
- )(walletSetting.name))), otherCustomerWalletPassList.length > 0 && /* @__PURE__ */ import_react.default.createElement(
304
+ )(walletSetting.name))), displayOtherVouchers.length > 0 && /* @__PURE__ */ import_react.default.createElement(
316
305
  import_List.default,
317
306
  {
318
307
  walletSetting,
319
- data: otherCustomerWalletPassList,
308
+ data: (0, import_utils2.formatMachineCodeServer2CardList)(displayOtherVouchers, selectValue),
320
309
  title: import_utils.locales.getText("tocPay.text.couponCodesAdded"),
321
310
  onChange: handleOtherChange,
322
311
  value: selectValue,
@@ -329,9 +318,10 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
329
318
  walletSetting,
330
319
  title: walletSetting.name,
331
320
  onChange: handleCurrentChange,
332
- ref: listRef,
321
+ data: (0, import_utils2.formatMachineCodeServer2CardList)(displayVouchers, selectValue),
333
322
  value: selectValue,
334
323
  onLoadingChange: setLoading,
324
+ loading,
335
325
  customer_id: order == null ? void 0 : order.customer_id
336
326
  }
337
327
  ))
@@ -347,7 +337,7 @@ var WalletPass = (0, import_react.forwardRef)((props, ref) => {
347
337
  okText: import_utils.locales.getText("tocPay.text.select"),
348
338
  onOk: handleSelectOk,
349
339
  okButtonProps: {
350
- disabled: ((_e = searchSelectData.ids) == null ? void 0 : _e.length) === 0
340
+ disabled: ((_f = searchSelectData.ids) == null ? void 0 : _f.length) === 0
351
341
  }
352
342
  },
353
343
  /* @__PURE__ */ import_react.default.createElement("div", { className: "", style: { marginTop: 24 } }, /* @__PURE__ */ import_react.default.createElement(
@@ -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;
@@ -53,8 +53,8 @@ var formatMachineCodeServer2CardList = (data, selectId = []) => {
53
53
  showDetail: false,
54
54
  showQrCode: false,
55
55
  code: item.code,
56
- disabled: !item.unified_available_status,
57
- disabledReason: (_b = item.unified_messages) == null ? void 0 : _b.title,
56
+ disabled: (0, import_utils.isNumber)(item._unified_available_status) ? !item._unified_available_status : !item.unified_available_status,
57
+ disabledReason: (0, import_utils.isNumber)(item._unified_available_status) ? item.reason : (_b = item.unified_messages) == null ? void 0 : _b.title,
58
58
  cover: (_c = item.product) == null ? void 0 : _c.cover,
59
59
  qrCode: item.code,
60
60
  validDate: voucherTime(item),
@@ -166,7 +166,9 @@ var WalletPassBlock = (props, ref) => {
166
166
  ref: walletPassRef,
167
167
  walletSetting,
168
168
  onWalletPassChange,
169
- walletPass: payGroup == null ? void 0 : payGroup.walletPass
169
+ walletPass: payGroup == null ? void 0 : payGroup.walletPass,
170
+ orderDetail: payGroup == null ? void 0 : payGroup.orderDetail,
171
+ total_amount: payGroup == null ? void 0 : payGroup.total_amount
170
172
  }
171
173
  ), /* @__PURE__ */ import_react.default.createElement(
172
174
  import_WalletAvailable.default,
@@ -49,6 +49,7 @@ var import_usePaymentLogger = __toESM(require("../../../hooks/usePaymentLogger")
49
49
  var import_utils2 = require("../../../utils");
50
50
  var import_payGroup = require("./payGroup");
51
51
  var import_locales = __toESM(require("./locales"));
52
+ var import_serve2 = require("./PaymentMethods/WalletPass/serve");
52
53
  var import_utils3 = require("./utils");
53
54
  var import_status = require("./status");
54
55
  var import_index = require("./index.less");
@@ -154,7 +155,7 @@ var ToCPay = (props, ref) => {
154
155
  }
155
156
  };
156
157
  const _getPaymentsAndWalletPass = async (order) => {
157
- var _a2, _b2;
158
+ var _a2, _b2, _c2;
158
159
  paymentLogger.addLog({
159
160
  key: "获取支付列表开始",
160
161
  value: {
@@ -162,11 +163,22 @@ var ToCPay = (props, ref) => {
162
163
  }
163
164
  });
164
165
  try {
165
- const data = await (0, import_serve.getPaymentsAndWalletPass)({
166
- order_id: order.order_id,
167
- total_amount: order.amount,
168
- sale_channel: order.sale_channel || "online-store"
169
- });
166
+ const [data, allList, orderBasicDetail] = await Promise.all([
167
+ (0, import_serve.getPaymentsAndWalletPass)({
168
+ order_id: order.order_id,
169
+ total_amount: order.amount,
170
+ sale_channel: order.sale_channel || "online-store"
171
+ }),
172
+ (0, import_serve2.getMachineCodeList)({
173
+ order_id: order.order_id,
174
+ available: 2,
175
+ prepare_payments: [],
176
+ filter_prepare_wallet_pass: 1,
177
+ sale_channel: ((_a2 = order._order) == null ? void 0 : _a2.sale_channel) || "online-store",
178
+ other_exact_codes: []
179
+ }),
180
+ (0, import_serve.getOrderBasicDetail)(order.order_id)
181
+ ]);
170
182
  const {
171
183
  remain_amount = 0,
172
184
  wallet_pass_recommend_list,
@@ -174,39 +186,60 @@ var ToCPay = (props, ref) => {
174
186
  payment_list,
175
187
  walletPass
176
188
  } = data || {};
189
+ const products = (orderBasicDetail.detail || []).map((item) => {
190
+ var _a3;
191
+ return {
192
+ ...item,
193
+ is_price_include_tax: orderBasicDetail.is_price_include_tax,
194
+ product_bundle: (_a3 = item.product_bundle || []) == null ? void 0 : _a3.map((bundle) => {
195
+ return {
196
+ ...bundle,
197
+ is_price_include_tax: orderBasicDetail.is_price_include_tax
198
+ };
199
+ })
200
+ };
201
+ });
202
+ const res = utils.walletPassEvaluator.getRecommendedVouchers({
203
+ orderTotalAmount: Math.min(orderBasicDetail.product_unpaid_total_pay_amount, order.amount),
204
+ products,
205
+ vouchers: allList || []
206
+ });
207
+ const { recommended, transformList, noApplicableVoucher, recommendedAmount } = res;
177
208
  paymentLogger.addLog({
178
209
  key: "支付数据获取",
179
210
  value: ""
180
211
  });
181
- const withCustomerIdList = (wallet_pass_recommend_list || []).map(
182
- (item) => {
183
- return {
184
- ...item,
185
- customer_id: customer_id || item.customer_id
186
- };
187
- }
188
- );
212
+ const waitAmount2 = new import_decimal.Decimal((order == null ? void 0 : order.amount) || 0).minus(new import_decimal.Decimal(recommendedAmount)).toNumber();
189
213
  dispatch({
190
214
  type: "setPayGroup",
191
215
  payload: {
192
216
  // ...state.payGroup,
193
217
  order_id: order == null ? void 0 : order.order_id,
194
218
  // total_amount: order?.amount,
219
+ orderDetail: orderBasicDetail,
195
220
  // 原订单信息
196
221
  _order: order,
197
222
  payment_group_id: order == null ? void 0 : order.payment_group_id,
198
223
  // 支付方式没有walletPass时walletPass设置null
199
224
  walletPass: walletPass ? {
200
- ...(_a2 = state.payGroup) == null ? void 0 : _a2.walletPass,
225
+ ...(_b2 = state.payGroup) == null ? void 0 : _b2.walletPass,
201
226
  ...walletPass,
202
- amount: wallet_pass_amount,
203
- cards: withCustomerIdList
227
+ // 推荐钱包
228
+ cards: recommended,
229
+ // 推荐金额
230
+ amount: recommendedAmount,
231
+ // 不可用钱包
232
+ noApplicableVoucher,
233
+ // 转换列表
234
+ transformList
235
+ // amount: wallet_pass_amount,
236
+ // cards: wallet_pass_recommend_list,
204
237
  } : null,
205
238
  total_amount: order == null ? void 0 : order.amount,
206
- wait_amount: remain_amount
239
+ wait_amount: Math.max(0, waitAmount2)
207
240
  }
208
241
  });
209
- await ((_b2 = paymentListRef.current) == null ? void 0 : _b2.init(payment_list, remain_amount || 0));
242
+ await ((_c2 = paymentListRef.current) == null ? void 0 : _c2.init(payment_list, remain_amount || 0));
210
243
  setTimeout(() => {
211
244
  setLoading(false);
212
245
  }, 100);
@@ -29,6 +29,7 @@ export interface PayGroup {
29
29
  pay_number?: string;
30
30
  _order: any;
31
31
  front_order_uuid?: string;
32
+ orderDetail: any;
32
33
  }
33
34
  export declare const Provider: (ComponentUi: any) => any, Context: import("react").Context<{
34
35
  state: FormState;
@@ -62,3 +62,21 @@ export declare const getWalletNameAndPopupStatus: (values: {
62
62
  * @description: 获取支付结果
63
63
  */
64
64
  export declare const getPaymentResult: (values: any) => Promise<any>;
65
+ declare type OrderBasicDetail = {
66
+ id: number;
67
+ status: string;
68
+ payment_status: string;
69
+ order_time: string;
70
+ detail: any[];
71
+ product_unpaid_total_pay_amount: number;
72
+ product_paid_total_pay_amount: number;
73
+ is_price_include_tax: 1 | 0;
74
+ };
75
+ /**
76
+ * @title: 查询订单基础信息和订单商品信息
77
+ * @description: 查询订单基础信息和订单商品信息
78
+ * @param {string} order_id
79
+ * @return {*}
80
+ */
81
+ export declare const getOrderBasicDetail: (order_id: string) => Promise<OrderBasicDetail>;
82
+ export {};
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
19
19
  // src/components/pay/toC/serve.ts
20
20
  var serve_exports = {};
21
21
  __export(serve_exports, {
22
+ getOrderBasicDetail: () => getOrderBasicDetail,
22
23
  getPaymentInit: () => getPaymentInit,
23
24
  getPaymentList: () => getPaymentList,
24
25
  getPaymentResult: () => getPaymentResult,
@@ -77,8 +78,13 @@ var getWalletNameAndPopupStatus = async (values) => {
77
78
  return data;
78
79
  };
79
80
  var getPaymentResult = (values) => import_utils.request.getRequest().get(`/h5/pay/order/payment/result`, values);
81
+ var getOrderBasicDetail = async (order_id) => {
82
+ const { data } = await import_utils.request.getRequest().get(`/h5/order/order/${order_id}/basic-detail`, {});
83
+ return data;
84
+ };
80
85
  // Annotate the CommonJS export names for ESM import in node:
81
86
  0 && (module.exports = {
87
+ getOrderBasicDetail,
82
88
  getPaymentInit,
83
89
  getPaymentList,
84
90
  getPaymentResult,
@@ -22,7 +22,7 @@ export declare const formatWalletPassParams: (payGroup: PayGroup) => {
22
22
  order_id: string;
23
23
  payment_group_id: number;
24
24
  payments: {
25
- amount: string;
25
+ amount: string | number;
26
26
  wallet_pass_use_value: any;
27
27
  voucher_id: any;
28
28
  tag: any;
@@ -48,7 +48,7 @@ export declare const isFranchiseeShop: (path?: any, history?: any) => any;
48
48
  */
49
49
  export declare const getFranchiseeShopId: (path?: any, history?: any) => number;
50
50
  export declare const formatFranchiseeRoute: (url: string, history?: any) => string;
51
- export declare const getAvailableMaxAmount: (data: WalletPassDataType) => string;
51
+ export declare const getAvailableMaxAmount: (data: WalletPassDataType) => string | number;
52
52
  export declare const clientPayment: (params: {
53
53
  order_id: number;
54
54
  type: "aliPay" | "wxPay" | 'google_pay';
@@ -32,6 +32,7 @@ __export(utils_exports, {
32
32
  module.exports = __toCommonJS(utils_exports);
33
33
  var import_decimal = require("decimal.js");
34
34
  var import_status = require("./status");
35
+ var import_utils = require("@pisell/utils");
35
36
  var calcWalletPassListAmount = (list) => {
36
37
  return list.reduce((pre, cur) => pre.add(new import_decimal.Decimal(String(getAvailableMaxAmount(cur) || 0))), new import_decimal.Decimal("0")).toNumber();
37
38
  };
@@ -84,6 +85,9 @@ var formatFranchiseeRoute = (url, history) => {
84
85
  return url;
85
86
  };
86
87
  var getAvailableMaxAmount = (data) => {
88
+ if ((0, import_utils.isNumber)(data._available_max_amount)) {
89
+ return data._available_max_amount;
90
+ }
87
91
  return data.tag !== "point_card" ? data.available_max_amount : data == null ? void 0 : data.recommended_usage_amount;
88
92
  };
89
93
  var clientPayment = (params) => {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './index.less';
3
2
  declare const Empty: (props: any) => import("react").JSX.Element;
4
3
  export default Empty;
@@ -9,7 +9,7 @@ const EcoCupListMeta: ComponentMetadata = {
9
9
  "devMode": "proCode",
10
10
  "npm": {
11
11
  "package": "@pisell/private-materials",
12
- "version": "6.3.105",
12
+ "version": "6.3.106",
13
13
  "exportName": "EcoCupList",
14
14
  "main": "src/index.ts",
15
15
  "destructuring": true,
@@ -9,7 +9,7 @@ const EcoCustomerListMeta: ComponentMetadata = {
9
9
  "devMode": "proCode",
10
10
  "npm": {
11
11
  "package": "@pisell/private-materials",
12
- "version": "6.3.105",
12
+ "version": "6.3.106",
13
13
  "exportName": "EcoCustomerList",
14
14
  "main": "src/index.ts",
15
15
  "destructuring": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pisell/private-materials",
3
- "version": "6.3.106",
3
+ "version": "6.3.107",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -76,10 +76,10 @@
76
76
  "react-infinite-scroll-component": "^6.1.0",
77
77
  "react-resizable": "^3.0.5",
78
78
  "styled-components": "^6.0.0-rc.3",
79
- "@pisell/materials": "6.3.27",
80
79
  "@pisell/utils": "3.0.5",
81
- "@pisell/date-picker": "3.0.8",
82
- "@pisell/icon": "0.0.11"
80
+ "@pisell/materials": "6.3.28",
81
+ "@pisell/icon": "0.0.11",
82
+ "@pisell/date-picker": "3.0.8"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "react": "^18.0.0",