@pisell/private-materials 3.3.86 → 3.3.87
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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.js +13 -13
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +2 -2
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +8 -8
- package/es/components/Sales/Cart/index.js +5 -1
- package/es/components/Sales/Cart/utils.d.ts +40 -0
- package/es/components/Sales/Cart/utils.js +167 -0
- package/es/components/Sales/Checkout/index.d.ts +4 -0
- package/es/components/Sales/Checkout/index.js +52 -8
- package/es/components/Sales/Checkout/serve.d.ts +13 -0
- package/es/components/Sales/Checkout/serve.js +16 -2
- package/es/components/Sales/Checkout/utils.js +7 -1
- package/es/components/Sales/Summary/index.d.ts +10 -0
- package/es/components/Sales/Summary/index.js +17 -2
- package/es/components/Sales/Summary/serve.d.ts +1 -0
- package/es/components/Sales/Summary/serve.js +6 -0
- package/es/components/Sales/Summary/utils.d.ts +15 -0
- package/es/components/Sales/Summary/utils.js +43 -1
- package/es/components/appointmentBooking/components/Deposit/index.d.ts +6 -0
- package/es/components/appointmentBooking/components/Deposit/index.js +27 -7
- package/es/components/appointmentBooking/components/Voucher/index.js +1 -1
- package/es/components/appointmentBooking/deposit/components/PolicyModal/index.js +25 -20
- package/es/components/appointmentBooking/deposit/index.js +4 -2
- package/es/components/appointmentBooking/locales.d.ts +3 -0
- package/es/components/appointmentBooking/locales.js +3 -0
- package/es/components/booking/addons/model.d.ts +1 -10
- package/es/components/booking/components/TabProduct/tabs/index.js +5 -1
- package/es/components/booking/components/browserSelect/index.js +1 -1
- package/es/components/booking/components/footer/utils.js +4 -5
- package/es/components/booking/forms/model.d.ts +1 -10
- package/es/components/booking/forms/model.js +5 -5
- package/es/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
- package/es/components/booking/info/model.d.ts +1 -10
- package/es/components/booking/info/service/addService/index.js +3 -3
- package/es/components/booking/info/service/like/index.js +1 -1
- package/es/components/booking/materiels/startTime/index.js +1 -1
- package/es/components/booking/model.d.ts +1 -9
- package/es/components/booking/notes/NoteBlock/NoteItem/index.js +1 -1
- package/es/components/booking/notes/NoteBlock/index.js +11 -11
- package/es/components/booking/notes/model.d.ts +1 -10
- package/es/components/booking/notes/model.js +5 -5
- package/es/components/booking/payments/model.d.ts +1 -10
- package/es/components/booking/payments/model.js +5 -5
- package/es/components/eventBooking/components/Provider/Cart/ContinueButton/index.js +29 -17
- package/es/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +2 -0
- package/es/components/eventBooking/components/Provider/Cart/Deposit/index.js +17 -0
- package/es/components/eventBooking/components/Provider/Cart/Item/Total.js +10 -6
- package/es/components/eventBooking/components/Provider/Cart/Item/index.js +4 -2
- package/es/components/eventBooking/components/bookingDetailModal/index.js +3 -1
- package/es/components/eventBooking/locales.d.ts +24 -0
- package/es/components/eventBooking/locales.js +27 -3
- package/es/components/listComponent/index.js +5 -5
- package/es/components/pay/toC/model.d.ts +1 -9
- package/es/components/productExtension/card/index.js +3 -3
- package/es/components/productExtension/fields/Actor/CutOffTime/index.js +1 -1
- package/es/components/productExtension/fields/Forms/index.js +12 -12
- package/es/components/productExtension/fields/SelectProducts/ProductItemPreview/index.js +1 -1
- package/es/components/productExtension/fields/SelectProducts/server.js +2 -2
- package/es/components/productExtension/fields/SelectResourcesTable/server.js +2 -2
- package/es/components/productExtension/server.js +2 -2
- package/es/components/ruleSetting/ruleBorder/index.js +1 -1
- package/es/components/schedules/calendar/index.js +4 -4
- package/es/components/schedules/calendar/serve.js +2 -2
- package/es/components/schedules/components/CurrentDay/index.js +5 -5
- package/es/components/schedules/components/CurrentDay/serve.js +2 -2
- package/es/components/schedules/components/DropdownSort/index.js +1 -1
- package/es/components/schedules/components/ResourceList/index.js +1 -1
- package/es/components/schedules/components/Search/index.js +5 -5
- package/es/components/schedules/model.d.ts +1 -9
- package/es/components/schedules/model.js +5 -5
- package/es/components/schedules/openHours/index.js +1 -1
- package/es/components/schedules/openHours/serve.js +2 -2
- package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.js +1 -1
- package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.js +5 -5
- package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/SchedulesModule/index.js +4 -4
- package/es/components/schedules/products/ProductDetailDrawer/index.js +3 -3
- package/es/components/schedules/products/serve.js +2 -2
- package/es/components/schedules/products/utils.js +5 -5
- package/es/components/schedules/resources/detail/detailContent.js +2 -2
- package/es/components/schedules/resources/detail/index.js +10 -10
- package/es/components/schedules/resources/list/index.js +2 -2
- package/es/components/schedules/resources/relationProduct/index.js +1 -1
- package/es/components/schedules/resources/serve.js +2 -2
- package/es/components/schedules/schedules/ScheduleDetailDrawer/index.js +9 -9
- package/es/components/schedules/utils.d.ts +1 -1
- package/es/components/schedules/utils.js +4 -4
- package/es/components/selectModal/index.js +2 -2
- package/es/components/ticketBooking/components/addServiceVariant/addService.js +3 -4
- package/es/components/wallet/Detail/model.d.ts +1 -13
- package/es/components/wallet/DiscountCard/model.d.ts +1 -14
- package/es/components/wallet/PointCard/model.d.ts +1 -13
- package/es/components/wallet/RechargeableCard/model.d.ts +1 -29
- package/es/components/wallet/Voucher/model.d.ts +1 -13
- package/es/components/wallet/model.d.ts +1 -9
- package/es/hooks/useComponents.js +1 -1
- package/es/utils/index.d.ts +1 -1
- package/lib/components/Sales/Cart/index.js +1 -0
- package/lib/components/Sales/Cart/utils.d.ts +40 -0
- package/lib/components/Sales/Cart/utils.js +117 -0
- package/lib/components/Sales/Checkout/index.d.ts +4 -0
- package/lib/components/Sales/Checkout/index.js +39 -7
- package/lib/components/Sales/Checkout/serve.d.ts +13 -0
- package/lib/components/Sales/Checkout/serve.js +7 -2
- package/lib/components/Sales/Checkout/utils.js +2 -0
- package/lib/components/Sales/Summary/index.d.ts +10 -0
- package/lib/components/Sales/Summary/index.js +7 -1
- package/lib/components/Sales/Summary/serve.d.ts +1 -0
- package/lib/components/Sales/Summary/serve.js +32 -0
- package/lib/components/Sales/Summary/utils.d.ts +15 -0
- package/lib/components/Sales/Summary/utils.js +30 -1
- package/lib/components/appointmentBooking/components/Deposit/index.d.ts +6 -0
- package/lib/components/appointmentBooking/components/Deposit/index.js +36 -4
- package/lib/components/appointmentBooking/components/Voucher/index.js +1 -1
- package/lib/components/appointmentBooking/deposit/components/PolicyModal/index.js +8 -4
- package/lib/components/appointmentBooking/deposit/index.js +4 -2
- package/lib/components/appointmentBooking/locales.d.ts +3 -0
- package/lib/components/appointmentBooking/locales.js +3 -0
- package/lib/components/booking/addons/model.d.ts +1 -10
- package/lib/components/booking/components/footer/utils.js +2 -5
- package/lib/components/booking/components/voucher/index.js +21 -9
- package/lib/components/booking/forms/model.d.ts +1 -10
- package/lib/components/booking/forms/sendModal/useSendModal.d.ts +1 -1
- package/lib/components/booking/info/model.d.ts +1 -10
- package/lib/components/booking/info/service/addService/index.js +1 -1
- package/lib/components/booking/model.d.ts +1 -9
- package/lib/components/booking/notes/model.d.ts +1 -10
- package/lib/components/booking/payments/model.d.ts +1 -10
- package/lib/components/eventBooking/components/Provider/Cart/ContinueButton/index.js +16 -3
- package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.d.ts +2 -0
- package/lib/components/eventBooking/components/Provider/Cart/Deposit/index.js +55 -0
- package/lib/components/eventBooking/components/Provider/Cart/Item/Total.js +8 -5
- package/lib/components/eventBooking/components/Provider/Cart/Item/index.js +4 -2
- package/lib/components/eventBooking/components/bookingDetailModal/index.js +1 -1
- package/lib/components/eventBooking/locales.d.ts +24 -0
- package/lib/components/eventBooking/locales.js +27 -3
- package/lib/components/pay/toC/model.d.ts +1 -9
- package/lib/components/schedules/model.d.ts +1 -9
- package/lib/components/schedules/utils.d.ts +1 -1
- package/lib/components/schedules/utils.js +1 -1
- package/lib/components/ticketBooking/components/addServiceVariant/addService.js +5 -3
- package/lib/components/wallet/Detail/model.d.ts +1 -13
- package/lib/components/wallet/DiscountCard/model.d.ts +1 -14
- package/lib/components/wallet/PointCard/model.d.ts +1 -13
- package/lib/components/wallet/RechargeableCard/model.d.ts +1 -29
- package/lib/components/wallet/Voucher/model.d.ts +1 -13
- package/lib/components/wallet/model.d.ts +1 -9
- package/lib/utils/index.d.ts +1 -1
- package/package.json +4 -4
|
@@ -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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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:
|
|
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
|
-
|
|
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>;
|
|
@@ -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,3 +1,9 @@
|
|
|
1
1
|
import './index.less';
|
|
2
|
+
export declare const DepositContent: (props: {
|
|
3
|
+
isAgreeDepositPolicy: boolean;
|
|
4
|
+
setIsAgreeDepositPolicy: (value: boolean) => void;
|
|
5
|
+
deposit: any;
|
|
6
|
+
depositProtocolRequest?: any;
|
|
7
|
+
}) => JSX.Element;
|
|
2
8
|
declare const Deposit: () => JSX.Element;
|
|
3
9
|
export default Deposit;
|