@pisell/private-materials 3.3.95 → 3.3.97

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 (249) 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 +13 -13
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +11 -11
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +11 -11
  11. package/es/components/Sales/Cart/index.js +5 -1
  12. package/es/components/Sales/Cart/utils.d.ts +40 -0
  13. package/es/components/Sales/Cart/utils.js +167 -0
  14. package/es/components/Sales/Checkout/index.d.ts +4 -0
  15. package/es/components/Sales/Checkout/index.js +52 -8
  16. package/es/components/Sales/Checkout/serve.d.ts +13 -0
  17. package/es/components/Sales/Checkout/serve.js +16 -2
  18. package/es/components/Sales/Checkout/utils.js +7 -1
  19. package/es/components/Sales/Summary/index.d.ts +10 -0
  20. package/es/components/Sales/Summary/index.js +17 -2
  21. package/es/components/Sales/Summary/serve.d.ts +1 -0
  22. package/es/components/Sales/Summary/serve.js +6 -0
  23. package/es/components/Sales/Summary/utils.d.ts +15 -0
  24. package/es/components/Sales/Summary/utils.js +43 -1
  25. package/es/components/appointmentBooking/components/Cart/Item/index.less +3 -3
  26. package/es/components/appointmentBooking/components/Content/index.js +15 -1
  27. package/es/components/appointmentBooking/components/Content/index.less +1 -1
  28. package/es/components/appointmentBooking/components/Deposit/index.d.ts +6 -0
  29. package/es/components/appointmentBooking/components/Deposit/index.js +27 -7
  30. package/es/components/appointmentBooking/components/Services/index.js +23 -27
  31. package/es/components/appointmentBooking/deposit/components/PolicyModal/index.js +25 -20
  32. package/es/components/appointmentBooking/deposit/index.js +4 -2
  33. package/es/components/appointmentBooking/index.js +14 -0
  34. package/es/components/appointmentBooking/index.less +1 -1
  35. package/es/components/booking/addons/model.d.ts +1 -10
  36. package/es/components/booking/components/TabProduct/tabs/index.js +5 -1
  37. package/es/components/booking/components/browserSelect/index.js +1 -1
  38. package/es/components/booking/components/voucher/index.js +2 -2
  39. package/es/components/booking/forms/model.d.ts +1 -10
  40. package/es/components/booking/forms/model.js +5 -5
  41. package/es/components/booking/info/index.d.ts +0 -1
  42. package/es/components/booking/info/model.d.ts +1 -10
  43. package/es/components/booking/info/model.js +5 -0
  44. package/es/components/booking/info/service/Lists.d.ts +1 -0
  45. package/es/components/booking/info/service/addService/utils.d.ts +1 -1
  46. package/es/components/booking/info/service/like/index.js +1 -1
  47. package/es/components/booking/info/service2/Lists.d.ts +1 -0
  48. package/es/components/booking/info2/service/addService/utils.d.ts +1 -1
  49. package/es/components/booking/materiels/holder/index.d.ts +1 -0
  50. package/es/components/booking/materiels/startTime/index.d.ts +1 -0
  51. package/es/components/booking/materiels/startTime/index.js +1 -1
  52. package/es/components/booking/model.d.ts +1 -9
  53. package/es/components/booking/notes/NoteBlock/NoteItem/index.js +1 -1
  54. package/es/components/booking/notes/NoteBlock/index.js +11 -11
  55. package/es/components/booking/notes/model.d.ts +1 -10
  56. package/es/components/booking/notes/model.js +5 -5
  57. package/es/components/booking/payments/model.d.ts +1 -10
  58. package/es/components/booking/payments/model.js +5 -5
  59. package/es/components/booking/utils.d.ts +2 -2
  60. package/es/components/eftposPay/amount.d.ts +1 -1
  61. package/es/components/eftposPay/app.d.ts +1 -0
  62. package/es/components/eftposPay/component/step/index.d.ts +1 -0
  63. package/es/components/eftposPay/const.d.ts +4 -1
  64. package/es/components/eftposPay/const.js +3 -1
  65. package/es/components/eftposPay/device.d.ts +1 -1
  66. package/es/components/eftposPay/hooks.d.ts +2 -2
  67. package/es/components/eftposPay/hooks.js +3 -1
  68. package/es/components/eftposPay/index.js +1 -1
  69. package/es/components/eftposPay/linkly/const.d.ts +23 -0
  70. package/es/components/eftposPay/linkly/const.js +82 -0
  71. package/es/components/eftposPay/linkly/hooks/index.d.ts +2 -0
  72. package/es/components/eftposPay/linkly/hooks/index.js +2 -0
  73. package/es/components/eftposPay/linkly/hooks/normal.d.ts +30 -0
  74. package/es/components/eftposPay/linkly/hooks/normal.js +321 -0
  75. package/es/components/eftposPay/linkly/hooks/useTimeQuery.d.ts +4 -0
  76. package/es/components/eftposPay/linkly/hooks/useTimeQuery.js +273 -0
  77. package/es/components/eftposPay/linkly/index.d.ts +2 -0
  78. package/es/components/eftposPay/linkly/index.js +197 -0
  79. package/es/components/eftposPay/linkly/service.d.ts +32 -0
  80. package/es/components/eftposPay/linkly/service.js +81 -0
  81. package/es/components/eftposPay/manufacturer.d.ts +1 -0
  82. package/es/components/eftposPay/manufacturer.js +4 -0
  83. package/es/components/eftposPay/pay.d.ts +1 -1
  84. package/es/components/eftposPay/pay.js +6 -2
  85. package/es/components/eftposPay/payo/config.js +30 -3
  86. package/es/components/eftposPay/store/index.d.ts +4 -4
  87. package/es/components/eventBooking/components/Provider/Cart/ContinueButton/index.js +29 -17
  88. package/es/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +3 -0
  89. package/es/components/eventBooking/components/Provider/Cart/Deposit/index.js +17 -0
  90. package/es/components/eventBooking/components/Provider/Cart/Item/Total.js +10 -6
  91. package/es/components/eventBooking/components/Provider/Cart/Item/index.js +4 -2
  92. package/es/components/eventBooking/components/bookingDetailModal/index.js +3 -1
  93. package/es/components/eventBooking/locales.d.ts +24 -0
  94. package/es/components/eventBooking/locales.js +27 -3
  95. package/es/components/listComponent/index.js +5 -5
  96. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +0 -1
  97. package/es/components/pay/toC/PaymentMethods/index.js +5 -4
  98. package/es/components/pay/toC/model.d.ts +1 -9
  99. package/es/components/productExtension/card/index.js +3 -3
  100. package/es/components/productExtension/fields/Actor/CutOffTime/index.js +1 -1
  101. package/es/components/productExtension/fields/Forms/index.js +12 -12
  102. package/es/components/productExtension/fields/SelectProducts/ProductItemPreview/index.js +1 -1
  103. package/es/components/productExtension/fields/SelectProducts/server.js +2 -2
  104. package/es/components/productExtension/fields/SelectResourcesTable/server.js +2 -2
  105. package/es/components/productExtension/server.js +2 -2
  106. package/es/components/ruleSetting/ruleBorder/index.js +1 -1
  107. package/es/components/schedules/calendar/index.js +4 -4
  108. package/es/components/schedules/calendar/serve.js +2 -2
  109. package/es/components/schedules/components/CurrentDay/index.d.ts +1 -0
  110. package/es/components/schedules/components/CurrentDay/index.js +5 -5
  111. package/es/components/schedules/components/CurrentDay/serve.js +2 -2
  112. package/es/components/schedules/components/DropdownSort/index.js +1 -1
  113. package/es/components/schedules/components/ResourceList/index.js +1 -1
  114. package/es/components/schedules/components/Search/index.js +5 -5
  115. package/es/components/schedules/model.d.ts +1 -9
  116. package/es/components/schedules/model.js +5 -5
  117. package/es/components/schedules/openHours/index.js +1 -1
  118. package/es/components/schedules/openHours/serve.js +2 -2
  119. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.js +1 -1
  120. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.js +5 -5
  121. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/SchedulesModule/index.js +4 -4
  122. package/es/components/schedules/products/ProductDetailDrawer/index.js +3 -3
  123. package/es/components/schedules/products/index.d.ts +1 -0
  124. package/es/components/schedules/products/serve.js +2 -2
  125. package/es/components/schedules/products/utils.js +5 -5
  126. package/es/components/schedules/resources/detail/detailContent.js +2 -2
  127. package/es/components/schedules/resources/detail/index.js +10 -10
  128. package/es/components/schedules/resources/list/index.js +2 -2
  129. package/es/components/schedules/resources/relationProduct/index.js +1 -1
  130. package/es/components/schedules/resources/serve.js +2 -2
  131. package/es/components/schedules/schedules/ScheduleDetailDrawer/index.js +9 -9
  132. package/es/components/schedules/utils.d.ts +1 -1
  133. package/es/components/schedules/utils.js +4 -4
  134. package/es/components/selectModal/index.js +2 -2
  135. package/es/components/ticketBooking/components/addServiceVariant/addService.js +1 -1
  136. package/es/components/ticketBooking/components/ticketBooking/index.js +120 -1
  137. package/es/components/ticketBooking/locales.d.ts +164 -146
  138. package/es/components/ticketBooking/locales.js +195 -147
  139. package/es/components/ticketBooking/utils/formatProductMessage.d.ts +2 -0
  140. package/es/components/ticketBooking/utils/formatProductMessage.js +62 -0
  141. package/es/components/ticketBooking/utils/formatTime.d.ts +31 -0
  142. package/es/components/ticketBooking/utils/formatTime.js +144 -0
  143. package/es/components/wallet/Detail/model.d.ts +1 -13
  144. package/es/components/wallet/DiscountCard/model.d.ts +1 -14
  145. package/es/components/wallet/PointCard/model.d.ts +1 -13
  146. package/es/components/wallet/RechargeableCard/model.d.ts +1 -29
  147. package/es/components/wallet/Voucher/model.d.ts +1 -13
  148. package/es/components/wallet/model.d.ts +1 -9
  149. package/es/hooks/useComponents.js +1 -1
  150. package/es/utils/index.d.ts +1 -1
  151. package/lib/components/Sales/Cart/index.js +1 -0
  152. package/lib/components/Sales/Cart/utils.d.ts +40 -0
  153. package/lib/components/Sales/Cart/utils.js +117 -0
  154. package/lib/components/Sales/Checkout/index.d.ts +4 -0
  155. package/lib/components/Sales/Checkout/index.js +39 -7
  156. package/lib/components/Sales/Checkout/serve.d.ts +13 -0
  157. package/lib/components/Sales/Checkout/serve.js +7 -2
  158. package/lib/components/Sales/Checkout/utils.js +2 -0
  159. package/lib/components/Sales/Summary/index.d.ts +10 -0
  160. package/lib/components/Sales/Summary/index.js +7 -1
  161. package/lib/components/Sales/Summary/serve.d.ts +1 -0
  162. package/lib/components/Sales/Summary/serve.js +32 -0
  163. package/lib/components/Sales/Summary/utils.d.ts +15 -0
  164. package/lib/components/Sales/Summary/utils.js +30 -1
  165. package/lib/components/appointmentBooking/components/Cart/Item/index.less +3 -3
  166. package/lib/components/appointmentBooking/components/Content/index.js +6 -1
  167. package/lib/components/appointmentBooking/components/Content/index.less +1 -1
  168. package/lib/components/appointmentBooking/components/Deposit/index.d.ts +6 -0
  169. package/lib/components/appointmentBooking/components/Deposit/index.js +36 -4
  170. package/lib/components/appointmentBooking/components/Services/index.js +6 -11
  171. package/lib/components/appointmentBooking/deposit/components/PolicyModal/index.js +8 -4
  172. package/lib/components/appointmentBooking/deposit/index.js +4 -2
  173. package/lib/components/appointmentBooking/index.js +11 -0
  174. package/lib/components/appointmentBooking/index.less +1 -1
  175. package/lib/components/booking/addons/model.d.ts +1 -10
  176. package/lib/components/booking/components/voucher/index.js +2 -2
  177. package/lib/components/booking/forms/model.d.ts +1 -10
  178. package/lib/components/booking/info/index.d.ts +0 -1
  179. package/lib/components/booking/info/model.d.ts +1 -10
  180. package/lib/components/booking/info/model.js +3 -0
  181. package/lib/components/booking/info/service/Lists.d.ts +1 -0
  182. package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
  183. package/lib/components/booking/info/service2/Lists.d.ts +1 -0
  184. package/lib/components/booking/info2/service/addService/utils.d.ts +1 -1
  185. package/lib/components/booking/materiels/holder/index.d.ts +1 -0
  186. package/lib/components/booking/materiels/startTime/index.d.ts +1 -0
  187. package/lib/components/booking/model.d.ts +1 -9
  188. package/lib/components/booking/notes/model.d.ts +1 -10
  189. package/lib/components/booking/payments/model.d.ts +1 -10
  190. package/lib/components/booking/utils.d.ts +2 -2
  191. package/lib/components/eftposPay/amount.d.ts +1 -1
  192. package/lib/components/eftposPay/app.d.ts +1 -0
  193. package/lib/components/eftposPay/component/step/index.d.ts +1 -0
  194. package/lib/components/eftposPay/const.d.ts +4 -1
  195. package/lib/components/eftposPay/const.js +2 -0
  196. package/lib/components/eftposPay/device.d.ts +1 -1
  197. package/lib/components/eftposPay/hooks.d.ts +2 -2
  198. package/lib/components/eftposPay/hooks.js +11 -4
  199. package/lib/components/eftposPay/index.js +1 -1
  200. package/lib/components/eftposPay/linkly/const.d.ts +23 -0
  201. package/lib/components/eftposPay/linkly/const.js +102 -0
  202. package/lib/components/eftposPay/linkly/hooks/index.d.ts +2 -0
  203. package/lib/components/eftposPay/linkly/hooks/index.js +25 -0
  204. package/lib/components/eftposPay/linkly/hooks/normal.d.ts +30 -0
  205. package/lib/components/eftposPay/linkly/hooks/normal.js +242 -0
  206. package/lib/components/eftposPay/linkly/hooks/useTimeQuery.d.ts +4 -0
  207. package/lib/components/eftposPay/linkly/hooks/useTimeQuery.js +222 -0
  208. package/lib/components/eftposPay/linkly/index.d.ts +2 -0
  209. package/lib/components/eftposPay/linkly/index.js +208 -0
  210. package/lib/components/eftposPay/linkly/service.d.ts +32 -0
  211. package/lib/components/eftposPay/linkly/service.js +55 -0
  212. package/lib/components/eftposPay/manufacturer.d.ts +1 -0
  213. package/lib/components/eftposPay/manufacturer.js +6 -0
  214. package/lib/components/eftposPay/pay.d.ts +1 -1
  215. package/lib/components/eftposPay/pay.js +13 -2
  216. package/lib/components/eftposPay/payo/config.js +22 -2
  217. package/lib/components/eftposPay/store/index.d.ts +4 -4
  218. package/lib/components/eventBooking/components/Provider/Cart/ContinueButton/index.js +16 -3
  219. package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +3 -0
  220. package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.js +55 -0
  221. package/lib/components/eventBooking/components/Provider/Cart/Item/Total.js +8 -5
  222. package/lib/components/eventBooking/components/Provider/Cart/Item/index.js +4 -2
  223. package/lib/components/eventBooking/components/bookingDetailModal/index.js +1 -1
  224. package/lib/components/eventBooking/locales.d.ts +24 -0
  225. package/lib/components/eventBooking/locales.js +27 -3
  226. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/index.d.ts +0 -1
  227. package/lib/components/pay/toC/PaymentMethods/index.js +10 -9
  228. package/lib/components/pay/toC/model.d.ts +1 -9
  229. package/lib/components/schedules/components/CurrentDay/index.d.ts +1 -0
  230. package/lib/components/schedules/model.d.ts +1 -9
  231. package/lib/components/schedules/products/index.d.ts +1 -0
  232. package/lib/components/schedules/utils.d.ts +1 -1
  233. package/lib/components/schedules/utils.js +1 -1
  234. package/lib/components/ticketBooking/components/addServiceVariant/addService.js +1 -1
  235. package/lib/components/ticketBooking/components/ticketBooking/index.js +120 -1
  236. package/lib/components/ticketBooking/locales.d.ts +164 -146
  237. package/lib/components/ticketBooking/locales.js +22 -4
  238. package/lib/components/ticketBooking/utils/formatProductMessage.d.ts +2 -0
  239. package/lib/components/ticketBooking/utils/formatProductMessage.js +84 -0
  240. package/lib/components/ticketBooking/utils/formatTime.d.ts +31 -0
  241. package/lib/components/ticketBooking/utils/formatTime.js +139 -0
  242. package/lib/components/wallet/Detail/model.d.ts +1 -13
  243. package/lib/components/wallet/DiscountCard/model.d.ts +1 -14
  244. package/lib/components/wallet/PointCard/model.d.ts +1 -13
  245. package/lib/components/wallet/RechargeableCard/model.d.ts +1 -29
  246. package/lib/components/wallet/Voucher/model.d.ts +1 -13
  247. package/lib/components/wallet/model.d.ts +1 -9
  248. package/lib/utils/index.d.ts +1 -1
  249. package/package.json +3 -3
@@ -22,7 +22,7 @@ import { checkBeforeAddToCartApi } from "./serve";
22
22
  import { useCustomer } from "../Customer";
23
23
  import { useRequest } from 'ahooks';
24
24
  import { formatValues } from "../Checkout/utils";
25
- import { handleCartItemOrigin, handleProductInfo } from "./utils";
25
+ import { handleCartItemOrigin, handleProductDeposit, handleProductInfo } from "./utils";
26
26
  var defaultState = {
27
27
  cartItems: [],
28
28
  currentCartItem: null
@@ -324,6 +324,10 @@ export var CartProvider = function CartProvider(_ref) {
324
324
  }),
325
325
  _productDetail: eventDetail.productDetail
326
326
  };
327
+
328
+ // 处理定金
329
+ newCartItem.deposit = handleProductDeposit(newCartItem, eventDetail, num);
330
+ // 处理提交给接口的数据
327
331
  var originData = handleCartItemOrigin(newCartItem, eventDetail);
328
332
  newCartItem._originData = originData;
329
333
  if (_holderItem !== null && _holderItem !== void 0 && _holderItem._originData) {
@@ -1,3 +1,4 @@
1
+ import Decimal from 'decimal.js';
1
2
  import { ICalculatePriceParams } from './types';
2
3
  export declare const handleProductInfo: (eventDetail: any, num: number) => {
3
4
  totalPrice: number;
@@ -21,3 +22,42 @@ export declare const getOriginTotalPrice: (params: ICalculatePriceParams) => num
21
22
  export declare const handleCartItemOrigin: (cartItem: any, eventDetail: any) => any;
22
23
  export declare const formatBundleToOrigin: (bundle: any) => any;
23
24
  export declare const formatOptionsToOrigin: (options: any) => any;
25
+ export declare const handleProductDeposit: (cartItem: any, eventDetail: any, num: number) => {
26
+ total: number;
27
+ protocols: any;
28
+ } | null;
29
+ /**
30
+ * 获取商品定金
31
+ * @description 定金基于商品售价来算,最终乘商品数量
32
+ * 1、如果套餐主商品有定金规则,则定金为:(套餐商品总售价 * 定金百分比 + 定金固定金额)* 商品数量
33
+ * 2、如果套餐主商品没有定金规则,子商品有定金规则,则定金为:(套餐子商品售价 * 套餐子商品定金百分比 + 套餐子商品定金固定金额)* 商品数量,最终将所有子商品定金相加
34
+ * 3、普通商品/单规格商品/组合规则商品,定金规则:(商品总售价 * 定金百分比 + 定金固定金额)* 商品数量
35
+ * @param params 参数
36
+ * @returns 商品定金
37
+ */
38
+ export declare const getProductDeposit: (params: {
39
+ cartItem: any;
40
+ product: any;
41
+ bundle?: any;
42
+ options?: any;
43
+ num?: number;
44
+ }) => {
45
+ total: number;
46
+ protocols: any;
47
+ } | null;
48
+ /**
49
+ * 计算商品定金
50
+ * @param params 参数
51
+ * @returns 商品定金
52
+ */
53
+ export declare const calculateProductDeposit: (params: {
54
+ depositData: {
55
+ deposit_fixed?: string;
56
+ deposit_percentage?: string;
57
+ };
58
+ total: string | number;
59
+ num: number;
60
+ }) => {
61
+ result: boolean;
62
+ depositTotal: Decimal;
63
+ };
@@ -1,3 +1,10 @@
1
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
+ 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."); }
3
+ 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); }
4
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
5
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
6
+ 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; }
7
+ import Decimal from 'decimal.js';
1
8
  export var handleProductInfo = function handleProductInfo(eventDetail, num) {
2
9
  var productDetail = eventDetail.productDetail,
3
10
  bookingOptionItem = eventDetail.bookingOptionItem;
@@ -158,4 +165,164 @@ export var formatOptionsToOrigin = function formatOptionsToOrigin(options) {
158
165
  option_group_id: d.option_group_id
159
166
  };
160
167
  });
168
+ };
169
+ export var handleProductDeposit = function handleProductDeposit(cartItem, eventDetail, num) {
170
+ var _origin$custom_deposi;
171
+ var productDetail = eventDetail.productDetail;
172
+ var origin = productDetail.origin,
173
+ bundle = productDetail.bundle,
174
+ options = productDetail.options,
175
+ product_variant_id = productDetail.product_variant_id;
176
+ var deposit = null;
177
+ var product = origin;
178
+ if (product_variant_id) {
179
+ product.product_variant_id = product_variant_id;
180
+ }
181
+ if ((origin === null || origin === void 0 || (_origin$custom_deposi = origin.custom_deposit_data) === null || _origin$custom_deposi === void 0 ? void 0 : _origin$custom_deposi.has_deposit) == 1) {
182
+ deposit = getProductDeposit({
183
+ cartItem: cartItem,
184
+ product: product,
185
+ bundle: bundle,
186
+ options: options,
187
+ num: num
188
+ });
189
+ }
190
+ return deposit;
191
+ };
192
+
193
+ /**
194
+ * 获取商品定金
195
+ * @description 定金基于商品售价来算,最终乘商品数量
196
+ * 1、如果套餐主商品有定金规则,则定金为:(套餐商品总售价 * 定金百分比 + 定金固定金额)* 商品数量
197
+ * 2、如果套餐主商品没有定金规则,子商品有定金规则,则定金为:(套餐子商品售价 * 套餐子商品定金百分比 + 套餐子商品定金固定金额)* 商品数量,最终将所有子商品定金相加
198
+ * 3、普通商品/单规格商品/组合规则商品,定金规则:(商品总售价 * 定金百分比 + 定金固定金额)* 商品数量
199
+ * @param params 参数
200
+ * @returns 商品定金
201
+ */
202
+ export var getProductDeposit = function getProductDeposit(params) {
203
+ var _product$custom_depos;
204
+ var cartItem = params.cartItem,
205
+ product = params.product,
206
+ bundle = params.bundle,
207
+ options = params.options;
208
+ var num = (params === null || params === void 0 ? void 0 : params.num) || 1;
209
+
210
+ // 判定商品是否有定金规则
211
+ if ((product === null || product === void 0 || (_product$custom_depos = product.custom_deposit_data) === null || _product$custom_depos === void 0 ? void 0 : _product$custom_depos.has_deposit) == 1) {
212
+ var total = new Decimal(0);
213
+ var _ref = (product === null || product === void 0 ? void 0 : product.custom_deposit_data) || {},
214
+ deposit_fixed = _ref.deposit_fixed,
215
+ deposit_percentage = _ref.deposit_percentage,
216
+ deposit_policy_data = _ref.deposit_policy_data,
217
+ self_deposit_policy_ids = _ref.self_deposit_policy_ids;
218
+ // 所有协议数据
219
+ var allProtocols = deposit_policy_data || [];
220
+ // 是否存在定金,主商品has_deposit为1,但是自身没有定金设置,需要判定子商品是否存在定金,如果不存在最终判定也是不存在定金
221
+ var productHasDeposit = false;
222
+ // 关联的定金协议id
223
+ var protocolIds = [];
224
+
225
+ // 判断主商品是否有定金规则
226
+ if (typeof deposit_fixed === 'string' && typeof deposit_percentage === 'string') {
227
+ var _calculateProductDepo = calculateProductDeposit({
228
+ depositData: product === null || product === void 0 ? void 0 : product.custom_deposit_data,
229
+ total: (cartItem === null || cartItem === void 0 ? void 0 : cartItem.total) || 0,
230
+ num: num
231
+ }),
232
+ depositTotal = _calculateProductDepo.depositTotal,
233
+ result = _calculateProductDepo.result;
234
+ if (result) {
235
+ total = depositTotal;
236
+ protocolIds.push.apply(protocolIds, _toConsumableArray(self_deposit_policy_ids || []));
237
+ productHasDeposit = true;
238
+ }
239
+ } else {
240
+ // 组合规格商品
241
+ if (product !== null && product !== void 0 && product.product_variant_id) {
242
+ var _product$variant;
243
+ var variantProduct = product === null || product === void 0 || (_product$variant = product.variant) === null || _product$variant === void 0 ? void 0 : _product$variant.find(function (item) {
244
+ return (item === null || item === void 0 ? void 0 : item.id) === (product === null || product === void 0 ? void 0 : product.product_variant_id);
245
+ });
246
+ if (variantProduct) {
247
+ var depositData = variantProduct === null || variantProduct === void 0 ? void 0 : variantProduct.custom_deposit_data;
248
+ var _calculateProductDepo2 = calculateProductDeposit({
249
+ depositData: depositData,
250
+ total: (cartItem === null || cartItem === void 0 ? void 0 : cartItem.total) || 0,
251
+ num: num
252
+ }),
253
+ _depositTotal = _calculateProductDepo2.depositTotal,
254
+ _result = _calculateProductDepo2.result;
255
+ if (_result) {
256
+ total = _depositTotal;
257
+ protocolIds.push.apply(protocolIds, _toConsumableArray((depositData === null || depositData === void 0 ? void 0 : depositData.self_deposit_policy_ids) || []));
258
+ productHasDeposit = true;
259
+ }
260
+ }
261
+ }
262
+ if (bundle !== null && bundle !== void 0 && bundle.length) {
263
+ total = bundle.reduce(function (accumulator, currBundleProduct) {
264
+ var depositData = currBundleProduct === null || currBundleProduct === void 0 ? void 0 : currBundleProduct.custom_deposit_data;
265
+ var _calculateProductDepo3 = calculateProductDeposit({
266
+ depositData: depositData,
267
+ total: currBundleProduct === null || currBundleProduct === void 0 ? void 0 : currBundleProduct.price,
268
+ num: (currBundleProduct === null || currBundleProduct === void 0 ? void 0 : currBundleProduct.num) || 1
269
+ }),
270
+ depositTotal = _calculateProductDepo3.depositTotal,
271
+ result = _calculateProductDepo3.result;
272
+ if (result) {
273
+ protocolIds.push.apply(protocolIds, _toConsumableArray((depositData === null || depositData === void 0 ? void 0 : depositData.self_deposit_policy_ids) || []));
274
+ productHasDeposit = true;
275
+ return accumulator.plus(depositTotal);
276
+ }
277
+ return accumulator;
278
+ }, new Decimal(0));
279
+ }
280
+ }
281
+ if (productHasDeposit) {
282
+ var ids = new Set(protocolIds);
283
+ var protocols = allProtocols.filter(function (item) {
284
+ return ids.has(item.id);
285
+ });
286
+ return {
287
+ total: total.toNumber(),
288
+ protocols: protocols
289
+ };
290
+ }
291
+ return null;
292
+ }
293
+ return null;
294
+ };
295
+
296
+ /**
297
+ * 计算商品定金
298
+ * @param params 参数
299
+ * @returns 商品定金
300
+ */
301
+ export var calculateProductDeposit = function calculateProductDeposit(params) {
302
+ var depositData = params.depositData,
303
+ total = params.total,
304
+ num = params.num;
305
+ if (!depositData) {
306
+ return {
307
+ result: false,
308
+ depositTotal: new Decimal(0)
309
+ };
310
+ }
311
+ var _ref2 = depositData || {},
312
+ deposit_fixed = _ref2.deposit_fixed,
313
+ deposit_percentage = _ref2.deposit_percentage;
314
+ if (typeof deposit_fixed === 'string' && typeof deposit_percentage === 'string') {
315
+ var depositFixed = new Decimal(deposit_fixed || 0);
316
+ var depositPercent = new Decimal(deposit_percentage || 0);
317
+ var productTotalPrice = new Decimal(total || 0);
318
+ var deposit = depositFixed.plus(depositPercent.times(productTotalPrice));
319
+ return {
320
+ depositTotal: deposit.times(num),
321
+ result: true
322
+ };
323
+ }
324
+ return {
325
+ result: false,
326
+ depositTotal: new Decimal(0)
327
+ };
161
328
  };
@@ -5,6 +5,9 @@ interface PayProps {
5
5
  order_id: string;
6
6
  amount: number;
7
7
  sale_channel?: string;
8
+ is_deposit?: number;
9
+ deposit_amount?: number;
10
+ total_amount?: number;
8
11
  }
9
12
  interface CheckoutContextType {
10
13
  onCheckBeforeBooking: (data: any) => Promise<{
@@ -15,6 +18,7 @@ interface CheckoutContextType {
15
18
  onPay: (payProps: PayProps) => void;
16
19
  createBooking: any;
17
20
  checkBeforeBooking: any;
21
+ freePay: any;
18
22
  }
19
23
  interface CheckoutProviderProps {
20
24
  children: React.ReactNode;
@@ -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,8 +11,9 @@ import React, { createContext, useRef } from 'react';
6
11
  import { useSales } from "../../../businessModel/SalesModel";
7
12
  import useEngineContext from "../../../hooks/useEngineContext";
8
13
  import { useRequest } from 'ahooks';
9
- import { checkBeforeBookingApi, createBookingApi } from "./serve";
14
+ import { checkBeforeBookingApi, createBookingApi, freePayApi } from "./serve";
10
15
  import { useCart } from "../Cart";
16
+ import { Toast } from "../../appointmentBooking/utils";
11
17
 
12
18
  // 定义上下文接口
13
19
 
@@ -27,6 +33,7 @@ export var CheckoutProvider = function CheckoutProvider(_ref) {
27
33
  updateDisabledCartItem = _useCart.updateDisabledCartItem;
28
34
  var checkoutCallback = useRef(null);
29
35
  var checkRef = useRef(null);
36
+ var payRef = useRef(null);
30
37
  var checkBeforeBooking = useRequest(checkBeforeBookingApi, {
31
38
  manual: true,
32
39
  onSuccess: function onSuccess(res) {
@@ -61,6 +68,17 @@ export var CheckoutProvider = function CheckoutProvider(_ref) {
61
68
  });
62
69
  }
63
70
  });
71
+ var freePay = useRequest(freePayApi, {
72
+ manual: true,
73
+ onSuccess: function onSuccess(res) {
74
+ if (res !== null && res !== void 0 && res.status) {
75
+ var _payRef$current, _payRef$current2;
76
+ goPaymentFinish((_payRef$current = payRef.current) === null || _payRef$current === void 0 ? void 0 : _payRef$current.order_id, (_payRef$current2 = payRef.current) === null || _payRef$current2 === void 0 ? void 0 : _payRef$current2.total_amount);
77
+ } else {
78
+ Toast(res === null || res === void 0 ? void 0 : res.message);
79
+ }
80
+ }
81
+ });
64
82
 
65
83
  /**
66
84
  * @title: 下单前校验
@@ -106,6 +124,11 @@ export var CheckoutProvider = function CheckoutProvider(_ref) {
106
124
  return _ref2.apply(this, arguments);
107
125
  };
108
126
  }();
127
+ var goPaymentFinish = function goPaymentFinish(order_id, amount) {
128
+ var _utils$history;
129
+ var url = "/payment-finish/success?order_id=".concat(order_id, "&amount=").concat(Number(amount));
130
+ utils === null || utils === void 0 || (_utils$history = utils.history) === null || _utils$history === void 0 || _utils$history.replace(url);
131
+ };
109
132
 
110
133
  /**
111
134
  * @title: 支付
@@ -115,20 +138,41 @@ export var CheckoutProvider = function CheckoutProvider(_ref) {
115
138
  * @Author: zhiwei.Wang
116
139
  */
117
140
  var onPay = function onPay(payProps) {
118
- utils.action({
119
- type: 'pisell1.payment',
120
- data: payProps,
121
- callback: function callback(e) {
122
- checkoutCallback.current && checkoutCallback.current(e);
141
+ payRef.current = payProps;
142
+ var is_deposit = payProps.is_deposit,
143
+ deposit_amount = payProps.deposit_amount,
144
+ total_amount = payProps.total_amount;
145
+
146
+ // 如果有定金,则支付定金金额,否则订单金额
147
+ var _total = is_deposit ? deposit_amount || 0 : total_amount || 0;
148
+ if (_total > 0) {
149
+ utils.action({
150
+ type: 'pisell1.payment',
151
+ data: _objectSpread(_objectSpread({}, payProps), {}, {
152
+ total_amount: _total
153
+ }),
154
+ callback: function callback(e) {
155
+ checkoutCallback.current && checkoutCallback.current(e);
156
+ }
157
+ });
158
+ } else {
159
+ // 定金为0则直接跳转结果页面
160
+ if (is_deposit) {
161
+ goPaymentFinish(payProps.order_id, _total);
162
+ return;
123
163
  }
124
- });
164
+
165
+ // 金额为0则需要调用免费支付接口,接口调用成功后跳转结果页面
166
+ freePay.runAsync(payProps.order_id);
167
+ }
125
168
  };
126
169
  var contextValue = {
127
170
  onCheckBeforeBooking: onCheckBeforeBooking,
128
171
  onCheckout: onCheckout,
129
172
  onPay: onPay,
130
173
  createBooking: createBooking,
131
- checkBeforeBooking: checkBeforeBooking
174
+ checkBeforeBooking: checkBeforeBooking,
175
+ freePay: freePay
132
176
  };
133
177
  return /*#__PURE__*/React.createElement(CheckoutContext.Provider, {
134
178
  value: contextValue
@@ -1,2 +1,15 @@
1
+ /**
2
+ * @title: 下单前置校验接口
3
+ * @param {any} data
4
+ */
1
5
  export declare const checkBeforeBookingApi: (data: any) => Promise<any>;
6
+ /**
7
+ * @title: 创建订单
8
+ * @param {any} data
9
+ */
2
10
  export declare const createBookingApi: (data: any) => Promise<any>;
11
+ /**
12
+ * @title: 免费支付
13
+ * @param {string} orderId
14
+ */
15
+ export declare const freePayApi: (orderId: string) => Promise<any>;
@@ -1,11 +1,25 @@
1
1
  import { request } from "../../../utils";
2
2
 
3
- // 下单前置校验接口
3
+ /**
4
+ * @title: 下单前置校验接口
5
+ * @param {any} data
6
+ */
4
7
  export var checkBeforeBookingApi = function checkBeforeBookingApi(data) {
5
8
  return request.getRequest().post('/h5/eventbookingv2/order/check-config', data);
6
9
  };
7
10
 
8
- // 创建
11
+ /**
12
+ * @title: 创建订单
13
+ * @param {any} data
14
+ */
9
15
  export var createBookingApi = function createBookingApi(data) {
10
16
  return request.getRequest().post('/h5/eventbookingv2/order', data);
17
+ };
18
+
19
+ /**
20
+ * @title: 免费支付
21
+ * @param {string} orderId
22
+ */
23
+ export var freePayApi = function freePayApi(orderId) {
24
+ return request.getRequest().post("/h5/pay/order/free-pay/".concat(orderId), {});
11
25
  };
@@ -104,6 +104,12 @@ export var formatValues = function formatValues(state, excludeDisabled, otherVal
104
104
  data = state.cartData.cartItems;
105
105
  }
106
106
 
107
+ // 定金
108
+ var is_deposit = data.find(function (v) {
109
+ return v.deposit;
110
+ }) ? 1 : 0;
111
+ values.is_deposit = is_deposit;
112
+
107
113
  // 服务
108
114
  values.bookings = formatBookings(data);
109
115
  return values;
@@ -121,6 +127,6 @@ export var getFormParams = function getFormParams(state) {
121
127
  });
122
128
  return {
123
129
  product_id: product_id,
124
- appointment_type: "event_booking_v2"
130
+ appointment_type: 'event_booking_v2'
125
131
  };
126
132
  };
@@ -7,6 +7,16 @@ interface SummaryContextType {
7
7
  taxTitle?: string;
8
8
  totalTaxFee?: string;
9
9
  isPriceIncludeTax?: 0 | 1;
10
+ deposit?: {
11
+ total: string;
12
+ protocols: any[];
13
+ hasDeposit: boolean;
14
+ };
15
+ isAgreeDepositPolicy: boolean;
16
+ setIsAgreeDepositPolicy: (value: boolean) => void;
17
+ getDepositProtocol: (params: {
18
+ id: string;
19
+ }) => Promise<any>;
10
20
  }
11
21
  interface SummaryProviderProps {
12
22
  children: React.ReactNode;
@@ -1,7 +1,14 @@
1
- import React, { createContext, useMemo } from 'react';
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import React, { createContext, useMemo, useState } from 'react';
2
8
  import { useCart } from "../Cart";
3
9
  import { calculatePriceDetails } from "./utils";
4
10
  import { useInit } from "../Init";
11
+ import { getDepositProtocolApi } from "./serve";
5
12
 
6
13
  // 定义上下文接口
7
14
 
@@ -16,6 +23,10 @@ export var SummaryProvider = function SummaryProvider(_ref) {
16
23
  cartData = _useCart.cartData;
17
24
  var _useInit = useInit(),
18
25
  initData = _useInit.initData;
26
+ var _useState = useState(false),
27
+ _useState2 = _slicedToArray(_useState, 2),
28
+ isAgreeDepositPolicy = _useState2[0],
29
+ setIsAgreeDepositPolicy = _useState2[1];
19
30
  var summaryData = useMemo(function () {
20
31
  return calculatePriceDetails((initData === null || initData === void 0 ? void 0 : initData.shop) || {}, cartData.cartItems);
21
32
  }, [cartData.cartItems, initData === null || initData === void 0 ? void 0 : initData.shop]);
@@ -26,7 +37,11 @@ export var SummaryProvider = function SummaryProvider(_ref) {
26
37
  total: summaryData.total,
27
38
  taxTitle: summaryData.taxTitle,
28
39
  totalTaxFee: summaryData.totalTaxFee,
29
- isPriceIncludeTax: summaryData.isPriceIncludeTax
40
+ isPriceIncludeTax: summaryData.isPriceIncludeTax,
41
+ deposit: summaryData.deposit,
42
+ isAgreeDepositPolicy: isAgreeDepositPolicy,
43
+ setIsAgreeDepositPolicy: setIsAgreeDepositPolicy,
44
+ getDepositProtocol: getDepositProtocolApi
30
45
  };
31
46
  return /*#__PURE__*/React.createElement(SummaryContext.Provider, {
32
47
  value: contextValue
@@ -0,0 +1 @@
1
+ export declare const getDepositProtocolApi: (id: string) => Promise<any>;
@@ -0,0 +1,6 @@
1
+ import { request } from "../../../utils";
2
+
3
+ // 获取定金协议
4
+ export var getDepositProtocolApi = function getDepositProtocolApi(id) {
5
+ return request.getRequest().get("/h5/shop-policy/".concat(id), {});
6
+ };
@@ -10,6 +10,11 @@ interface PriceDetail {
10
10
  taxTitle?: string;
11
11
  totalTaxFee?: string;
12
12
  isPriceIncludeTax?: 0 | 1;
13
+ deposit?: {
14
+ total: string;
15
+ protocols: any[];
16
+ hasDeposit: boolean;
17
+ };
13
18
  }
14
19
  /**
15
20
  * 计算商品小计(不含其他费用)
@@ -33,4 +38,14 @@ export declare const calculateTaxFee: (shopInfo: any, items: CartItem[]) => "0.0
33
38
  * @returns 价格明细对象
34
39
  */
35
40
  export declare const calculatePriceDetails: (shopInfo: any, items: CartItem[]) => PriceDetail;
41
+ /**
42
+ * @title: 计算定金
43
+ * @param items - 购物车商品数组
44
+ * @returns 定金字符串,保留2位小数
45
+ */
46
+ export declare const calculateDeposit: (items: CartItem[]) => {
47
+ total: string;
48
+ protocols: any[];
49
+ hasDeposit: never;
50
+ } | undefined;
36
51
  export {};
@@ -54,11 +54,53 @@ export var calculatePriceDetails = function calculatePriceDetails(shopInfo, item
54
54
 
55
55
  // 计算总价
56
56
  var total = shopInfo !== null && shopInfo !== void 0 && shopInfo.is_price_include_tax ? subtotal : subtotal.plus(totalTaxFee);
57
+
58
+ // 计算定金
59
+ var deposit = calculateDeposit(items);
57
60
  return {
58
61
  subtotal: subtotal.toFixed(2),
59
62
  total: total.toFixed(2),
60
63
  taxTitle: shopInfo === null || shopInfo === void 0 ? void 0 : shopInfo.tax_title,
61
64
  totalTaxFee: totalTaxFee.toFixed(2),
62
- isPriceIncludeTax: shopInfo === null || shopInfo === void 0 ? void 0 : shopInfo.is_price_include_tax
65
+ isPriceIncludeTax: shopInfo === null || shopInfo === void 0 ? void 0 : shopInfo.is_price_include_tax,
66
+ deposit: deposit
63
67
  };
68
+ };
69
+
70
+ /**
71
+ * @title: 计算定金
72
+ * @param items - 购物车商品数组
73
+ * @returns 定金字符串,保留2位小数
74
+ */
75
+ export var calculateDeposit = function calculateDeposit(items) {
76
+ if (!(items !== null && items !== void 0 && items.length)) {
77
+ return undefined;
78
+ }
79
+ var protocols = [];
80
+ var hasDeposit = false;
81
+ var total = items.reduce(function (sum, item) {
82
+ if (item !== null && item !== void 0 && item.deposit) {
83
+ var _item$deposit, _item$deposit2;
84
+ hasDeposit = true;
85
+ var cartItemTotalPrice = new Decimal((item === null || item === void 0 || (_item$deposit = item.deposit) === null || _item$deposit === void 0 ? void 0 : _item$deposit.total) || 0);
86
+ // 将协议数据去重合并
87
+ item === null || item === void 0 || (_item$deposit2 = item.deposit) === null || _item$deposit2 === void 0 || (_item$deposit2 = _item$deposit2.protocols) === null || _item$deposit2 === void 0 || _item$deposit2.forEach(function (protocol) {
88
+ if (protocols.findIndex(function (p) {
89
+ return p.id === protocol.id;
90
+ }) === -1) {
91
+ protocols.push(protocol);
92
+ }
93
+ });
94
+ return sum.plus(cartItemTotalPrice);
95
+ }
96
+ return sum;
97
+ }, new Decimal(0));
98
+ if (hasDeposit) {
99
+ return {
100
+ total: total.toFixed(2),
101
+ protocols: protocols,
102
+ hasDeposit: hasDeposit
103
+ };
104
+ }
105
+ return undefined;
64
106
  };
@@ -1,5 +1,5 @@
1
1
  .appointment-cart-item-wrap {
2
- height: calc(100vh - 100px);
2
+ height: calc(var(--vh, 1vh) * 100 - 100px);
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
 
@@ -39,7 +39,7 @@
39
39
  flex-direction: column;
40
40
  align-items: start;
41
41
 
42
- >div {
42
+ > div {
43
43
  display: flex;
44
44
  align-items: center;
45
45
  justify-content: space-between;
@@ -105,4 +105,4 @@
105
105
  flex: none;
106
106
  z-index: 10;
107
107
  }
108
- }
108
+ }
@@ -213,6 +213,19 @@ var Layout = function Layout() {
213
213
  if (isDateSelectedFirst && key === 'select-date') return false;
214
214
  return key !== 'confirm-information';
215
215
  }, [isDateSelectedFirst, currentStep === null || currentStep === void 0 || (_currentStep$step8 = currentStep.step) === null || _currentStep$step8 === void 0 ? void 0 : _currentStep$step8.key]);
216
+
217
+ /**
218
+ * @title: 获取协议方法需要在组件中定义才能传递给子组件,子组件无法获取到context中的方法
219
+ * @description:
220
+ * @param {string} id
221
+ * @return {*}
222
+ * @Author: WangHan
223
+ * @Date: 2025-07-07 10:06
224
+ */
225
+ var depositProtocolRequest = function depositProtocolRequest(id) {
226
+ var _appointmentBooking$g;
227
+ return appointmentBooking === null || appointmentBooking === void 0 || (_appointmentBooking$g = appointmentBooking.getProtocol) === null || _appointmentBooking$g === void 0 ? void 0 : _appointmentBooking$g.call(appointmentBooking, id);
228
+ };
216
229
  return /*#__PURE__*/React.createElement(React.Fragment, null, !isRetailTemplate ? /*#__PURE__*/React.createElement(Header, null) : null, /*#__PURE__*/React.createElement("div", {
217
230
  className: "parallel-content-wrap ".concat(isMobile() ? 'parallel-content-mobile-wrap' : '', " ").concat(isRetailTemplate ? 'parallel-content-retail-wrap' : '')
218
231
  }, /*#__PURE__*/React.createElement("div", {
@@ -237,7 +250,8 @@ var Layout = function Layout() {
237
250
  onChange: function onChange() {
238
251
  return setLoading(false);
239
252
  },
240
- isHideCheckout: false
253
+ isHideCheckout: false,
254
+ depositProtocolRequest: depositProtocolRequest
241
255
  }) : null);
242
256
  };
243
257
  export default Layout;