@pisell/pisellos 2.3.74 → 2.3.76
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/dist/core/index.js +6 -10
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/example.js +3 -26
- package/dist/model/strategy/strategy-example.js +5 -19
- package/dist/modules/Cart/index.js +0 -3
- package/dist/modules/Cart/utils/cartProduct.js +0 -1
- package/dist/modules/Date/index.js +1 -5
- package/dist/modules/Discount/index.js +2 -4
- package/dist/modules/OpenData/index.js +0 -2
- package/dist/modules/Order/index.d.ts +1 -1
- package/dist/modules/Order/index.js +75 -91
- package/dist/modules/Order/types.d.ts +3 -1
- package/dist/modules/Payment/index.js +97 -162
- package/dist/modules/Rules/index.js +1 -4
- package/dist/modules/Schedule/index.js +0 -1
- package/dist/modules/Schedule/utils.js +0 -1
- package/dist/modules/Step/index.js +0 -1
- package/dist/plugins/request.js +1 -4
- package/dist/plugins/window.js +2 -6
- package/dist/server/index.js +97 -129
- package/dist/server/modules/menu/index.js +32 -41
- package/dist/server/modules/order/index.js +2 -4
- package/dist/server/modules/products/index.js +24 -42
- package/dist/server/modules/quotation/index.js +29 -38
- package/dist/server/modules/resource/index.js +3 -4
- package/dist/server/modules/schedule/index.js +27 -35
- package/dist/server/utils/product.js +0 -1
- package/dist/solution/BaseSales/index.js +100 -72
- package/dist/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/dist/solution/BaseSales/utils/cartPromotion.js +15 -6
- package/dist/solution/BookingByStep/index.js +7 -59
- package/dist/solution/BookingByStep/utils/capacity.js +1 -11
- package/dist/solution/BookingByStep/utils/resources.js +1 -3
- package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
- package/dist/solution/BookingTicket/index.js +0 -2
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
- package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
- package/dist/solution/BuyTickets/index.js +9 -12
- package/dist/solution/Checkout/index.js +177 -252
- package/dist/solution/Checkout/utils/index.js +4 -16
- package/dist/solution/RegisterAndLogin/index.js +30 -76
- package/dist/solution/ScanOrder/index.js +50 -60
- package/dist/solution/ShopDiscount/index.js +2 -7
- package/dist/solution/VenueBooking/index.js +45 -55
- package/dist/utils/task.js +15 -18
- package/dist/utils/watch.js +0 -1
- package/lib/apis/picoding.js +2 -0
- package/lib/core/index.js +134 -134
- package/lib/effects/index.js +46 -57
- package/lib/index.js +82 -49
- package/lib/model/index.js +14 -21
- package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
- package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
- package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
- package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
- package/lib/model/strategy/adapter/index.js +100 -64
- package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
- package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
- package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
- package/lib/model/strategy/adapter/itemRule/index.js +83 -57
- package/lib/model/strategy/adapter/itemRule/type.js +97 -36
- package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
- package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
- package/lib/model/strategy/adapter/promotion/examples.js +222 -234
- package/lib/model/strategy/adapter/promotion/index.js +1 -0
- package/lib/model/strategy/adapter/promotion/type.js +243 -36
- package/lib/model/strategy/adapter/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
- package/lib/model/strategy/adapter/walletPass/example.js +217 -190
- package/lib/model/strategy/adapter/walletPass/index.js +75 -51
- package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
- package/lib/model/strategy/adapter/walletPass/type.js +4 -16
- package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
- package/lib/model/strategy/engine.js +270 -168
- package/lib/model/strategy/index.js +49 -34
- package/lib/model/strategy/strategy-example.js +243 -239
- package/lib/model/strategy/type.js +100 -40
- package/lib/modules/Account/index.js +39 -53
- package/lib/modules/Account/types.js +20 -33
- package/lib/modules/AccountList/index.js +116 -154
- package/lib/modules/AccountList/types.js +30 -31
- package/lib/modules/AccountList/utils.js +18 -30
- package/lib/modules/BaseModule.js +23 -42
- package/lib/modules/BookingContext/index.js +158 -136
- package/lib/modules/BookingContext/types.js +46 -32
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
- package/lib/modules/BookingContext/utils/flexible.js +38 -55
- package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
- package/lib/modules/BookingContext/utils/index.js +124 -41
- package/lib/modules/BookingContext/utils/noResource.js +58 -70
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
- package/lib/modules/BookingContext/utils/productExtend.js +202 -155
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
- package/lib/modules/BookingContext/utils/resources.js +209 -167
- package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
- package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
- package/lib/modules/Cart/index.js +170 -124
- package/lib/modules/Cart/types.js +46 -51
- package/lib/modules/Cart/utils/cartAccount.js +40 -39
- package/lib/modules/Cart/utils/cartDate.js +56 -61
- package/lib/modules/Cart/utils/cartDiscount.js +28 -33
- package/lib/modules/Cart/utils/cartNote.js +27 -32
- package/lib/modules/Cart/utils/cartProduct.js +321 -251
- package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
- package/lib/modules/Cart/utils/cartResource.js +70 -78
- package/lib/modules/Cart/utils/changePrice.js +22 -50
- package/lib/modules/Cart/utils/index.js +106 -48
- package/lib/modules/Customer/constants.js +13 -34
- package/lib/modules/Customer/index.js +235 -172
- package/lib/modules/Customer/types.js +38 -35
- package/lib/modules/Date/index.js +116 -115
- package/lib/modules/Date/types.js +16 -28
- package/lib/modules/Date/utils.js +174 -123
- package/lib/modules/Discount/index.js +122 -127
- package/lib/modules/Discount/types.js +9 -31
- package/lib/modules/Guests/index.js +30 -56
- package/lib/modules/Guests/types.js +23 -33
- package/lib/modules/Holder/index.js +209 -189
- package/lib/modules/Holder/types.js +4 -16
- package/lib/modules/Holder/utils.js +20 -49
- package/lib/modules/OpenData/index.js +70 -76
- package/lib/modules/OpenData/types.js +4 -16
- package/lib/modules/OpenData/utils.js +44 -78
- package/lib/modules/Order/index.d.ts +1 -1
- package/lib/modules/Order/index.js +1733 -2121
- package/lib/modules/Order/payment-utils.js +77 -120
- package/lib/modules/Order/types.d.ts +3 -1
- package/lib/modules/Order/types.js +88 -35
- package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
- package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
- package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
- package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
- package/lib/modules/Order/utils.js +814 -647
- package/lib/modules/Payment/cash.js +20 -33
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
- package/lib/modules/Payment/eftpos.js +16 -30
- package/lib/modules/Payment/index.js +532 -399
- package/lib/modules/Payment/mx51.js +1 -0
- package/lib/modules/Payment/types.js +230 -108
- package/lib/modules/Payment/utils.js +52 -51
- package/lib/modules/Payment/walletpass.js +485 -660
- package/lib/modules/Product/index.js +51 -46
- package/lib/modules/Product/types.js +4 -16
- package/lib/modules/Product/utils.js +32 -33
- package/lib/modules/ProductList/index.js +113 -123
- package/lib/modules/ProductList/types.js +9 -31
- package/lib/modules/Quotation/index.js +81 -118
- package/lib/modules/Quotation/types.js +4 -16
- package/lib/modules/Resource/index.js +27 -59
- package/lib/modules/Resource/types.js +22 -32
- package/lib/modules/Resource/utils.js +30 -38
- package/lib/modules/ResourcePlanner/index.js +25 -23
- package/lib/modules/ResourcePlanner/localClock.js +54 -119
- package/lib/modules/ResourcePlanner/planner.js +589 -770
- package/lib/modules/ResourcePlanner/types.js +10 -29
- package/lib/modules/Rules/index.js +1218 -959
- package/lib/modules/Rules/types.js +17 -40
- package/lib/modules/SalesSummary/index.js +85 -90
- package/lib/modules/SalesSummary/types.js +4 -16
- package/lib/modules/SalesSummary/utils.js +355 -430
- package/lib/modules/ScanOrderLogger/index.js +59 -79
- package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
- package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
- package/lib/modules/ScanOrderLogger/types.js +4 -16
- package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
- package/lib/modules/Schedule/index.js +100 -114
- package/lib/modules/Schedule/type.js +4 -16
- package/lib/modules/Schedule/types.js +4 -16
- package/lib/modules/Schedule/utils.js +433 -291
- package/lib/modules/Step/index.js +40 -52
- package/lib/modules/Step/tyeps.js +4 -16
- package/lib/modules/Summary/index.js +66 -71
- package/lib/modules/Summary/types.js +4 -16
- package/lib/modules/Summary/utils.js +773 -418
- package/lib/modules/SurchargeList/index.js +46 -60
- package/lib/modules/SurchargeList/types.js +4 -16
- package/lib/modules/index.js +245 -63
- package/lib/plugins/app.js +4 -16
- package/lib/plugins/index.js +36 -25
- package/lib/plugins/request.js +137 -126
- package/lib/plugins/shopStore.js +4 -16
- package/lib/plugins/user.js +4 -16
- package/lib/plugins/window.js +171 -179
- package/lib/server/index.js +3050 -2665
- package/lib/server/modules/floor-plan/index.js +118 -134
- package/lib/server/modules/floor-plan/types.js +15 -30
- package/lib/server/modules/index.js +106 -68
- package/lib/server/modules/menu/index.js +142 -122
- package/lib/server/modules/menu/types.js +18 -31
- package/lib/server/modules/order/index.js +784 -1002
- package/lib/server/modules/order/types.js +122 -33
- package/lib/server/modules/order/utils/filterBookings.js +219 -194
- package/lib/server/modules/order/utils/filterOrders.js +118 -92
- package/lib/server/modules/payment/index.js +59 -83
- package/lib/server/modules/payment/types.js +4 -16
- package/lib/server/modules/products/index.js +583 -471
- package/lib/server/modules/products/types.js +44 -34
- package/lib/server/modules/quotation/index.js +137 -172
- package/lib/server/modules/quotation/types.js +21 -31
- package/lib/server/modules/resource/index.js +220 -186
- package/lib/server/modules/resource/types.js +42 -33
- package/lib/server/modules/schedule/index.js +135 -123
- package/lib/server/modules/schedule/types.js +14 -21
- package/lib/server/modules/schedule/utils.js +334 -163
- package/lib/server/types.js +4 -16
- package/lib/server/utils/index.js +25 -23
- package/lib/server/utils/product.js +196 -139
- package/lib/server/utils/schedule.js +34 -41
- package/lib/server/utils/small-ticket.js +479 -456
- package/lib/server/utils/time.js +40 -49
- package/lib/solution/BaseSales/index.js +1220 -1412
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.d.ts +5 -0
- package/lib/solution/BaseSales/utils/cartPromotion.js +652 -498
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
- package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
- package/lib/solution/BaseSales/utils.js +158 -143
- package/lib/solution/BookingByStep/index.js +1527 -1340
- package/lib/solution/BookingByStep/types.js +40 -99
- package/lib/solution/BookingByStep/utils/capacity.js +192 -160
- package/lib/solution/BookingByStep/utils/products.js +42 -52
- package/lib/solution/BookingByStep/utils/resources.js +527 -330
- package/lib/solution/BookingByStep/utils/stock.js +65 -44
- package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
- package/lib/solution/BookingTicket/index.js +607 -522
- package/lib/solution/BookingTicket/types.js +99 -77
- package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
- package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
- package/lib/solution/BookingTicket/utils/cartView.js +114 -99
- package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
- package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
- package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
- package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
- package/lib/solution/BuyTickets/index.js +67 -70
- package/lib/solution/BuyTickets/types.js +22 -38
- package/lib/solution/Checkout/index.js +1451 -1158
- package/lib/solution/Checkout/types.js +91 -61
- package/lib/solution/Checkout/utils/index.js +228 -156
- package/lib/solution/PlaceOrder/index.js +55 -0
- package/lib/solution/RegisterAndLogin/config.js +493 -460
- package/lib/solution/RegisterAndLogin/index.js +633 -630
- package/lib/solution/RegisterAndLogin/types.js +189 -76
- package/lib/solution/RegisterAndLogin/utils.js +183 -125
- package/lib/solution/Sales/index.js +328 -324
- package/lib/solution/Sales/types.js +27 -33
- package/lib/solution/ScanOrder/index.js +832 -864
- package/lib/solution/ScanOrder/types.js +33 -34
- package/lib/solution/ScanOrder/utils.js +409 -374
- package/lib/solution/ShopDiscount/index.js +226 -232
- package/lib/solution/ShopDiscount/types.js +15 -37
- package/lib/solution/ShopDiscount/utils.js +300 -172
- package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
- package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
- package/lib/solution/UnifiedBookingSales/types.js +10 -32
- package/lib/solution/VenueBooking/index.js +811 -879
- package/lib/solution/VenueBooking/types.js +19 -39
- package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
- package/lib/solution/VenueBooking/utils/resource.js +31 -54
- package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
- package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
- package/lib/solution/VenueBooking/utils.js +130 -67
- package/lib/solution/index.js +124 -41
- package/lib/store/createStore.js +32 -29
- package/lib/types/index.js +4 -16
- package/lib/utils/payment-number.js +26 -46
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +81 -47
- package/package.json +2 -1
package/lib/server/types.js
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
14
2
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __copyProps = (to, from, except, desc) => {
|
|
6
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
-
for (let key of __getOwnPropNames(from))
|
|
8
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
-
}
|
|
11
|
-
return to;
|
|
12
|
-
};
|
|
13
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
15
2
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
module.exports = __toCommonJS(utils_exports);
|
|
19
|
-
__reExport(utils_exports, require("./time"), module.exports);
|
|
20
|
-
__reExport(utils_exports, require("./schedule"), module.exports);
|
|
21
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
22
|
-
0 && (module.exports = {
|
|
23
|
-
...require("./time"),
|
|
24
|
-
...require("./schedule")
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
25
5
|
});
|
|
6
|
+
var _time = require("./time");
|
|
7
|
+
Object.keys(_time).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _time[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _time[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _schedule = require("./schedule");
|
|
18
|
+
Object.keys(_schedule).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _schedule[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _schedule[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -1,90 +1,105 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(product_exports, {
|
|
22
|
-
applyDetailValueToProducts: () => applyDetailValueToProducts,
|
|
23
|
-
applyI18nToProducts: () => applyI18nToProducts,
|
|
24
|
-
applyPriceDataToProducts: () => applyPriceDataToProducts,
|
|
25
|
-
getIsSessionProduct: () => getIsSessionProduct,
|
|
26
|
-
perfMark: () => perfMark
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
27
5
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
6
|
+
exports.applyDetailValueToProducts = applyDetailValueToProducts;
|
|
7
|
+
exports.applyI18nToProducts = applyI18nToProducts;
|
|
8
|
+
exports.applyPriceDataToProducts = applyPriceDataToProducts;
|
|
9
|
+
exports.getIsSessionProduct = void 0;
|
|
10
|
+
exports.perfMark = perfMark;
|
|
11
|
+
var _utils = require("../modules/schedule/utils");
|
|
12
|
+
var _utils2 = require("../../modules/Cart/utils");
|
|
31
13
|
function perfMark(label, durationMs, meta) {
|
|
32
14
|
try {
|
|
33
|
-
const w = typeof window !==
|
|
34
|
-
if (!w)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
w.__PERF__.records.push({
|
|
39
|
-
|
|
40
|
-
|
|
15
|
+
const w = typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : null;
|
|
16
|
+
if (!w) return;
|
|
17
|
+
if (!w.__PERF__) w.__PERF__ = {
|
|
18
|
+
records: []
|
|
19
|
+
};
|
|
20
|
+
w.__PERF__.records.push({
|
|
21
|
+
label,
|
|
22
|
+
duration: Math.round(durationMs * 100) / 100,
|
|
23
|
+
ts: Date.now(),
|
|
24
|
+
...meta
|
|
25
|
+
});
|
|
26
|
+
} catch {/* noop */}
|
|
41
27
|
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 构建价格数据的 Map 索引结构
|
|
31
|
+
* 使用三层 Map 实现 O(1) 查询,大幅提升性能
|
|
32
|
+
* @param priceData 价格数据数组
|
|
33
|
+
* @returns 三层 Map 索引:商品、variant、bundle
|
|
34
|
+
*/
|
|
42
35
|
function buildPriceIndexMap(priceData) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
// 1. 商品主价格 Map: productId -> priceInfo
|
|
37
|
+
const priceMap = new Map(priceData.map(p => [p.id, p]));
|
|
38
|
+
|
|
39
|
+
// 2. Variant 价格 Map: productId -> (variantId -> variantPriceInfo)
|
|
40
|
+
const variantMap = new Map();
|
|
41
|
+
priceData.forEach(p => {
|
|
48
42
|
if (p.variant && p.variant.length > 0) {
|
|
49
|
-
const variantById = new Map(p.variant.map(
|
|
43
|
+
const variantById = new Map(p.variant.map(v => [v.id, v]));
|
|
50
44
|
variantMap.set(p.id, variantById);
|
|
51
45
|
}
|
|
52
46
|
});
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
|
|
48
|
+
// 3. Bundle 价格 Map: productId -> (groupId -> (itemId -> itemPriceInfo))
|
|
49
|
+
const bundleMap = new Map();
|
|
50
|
+
priceData.forEach(p => {
|
|
55
51
|
if (p.bundle_group && p.bundle_group.length > 0) {
|
|
56
|
-
const groupMap =
|
|
57
|
-
p.bundle_group.forEach(
|
|
58
|
-
const itemMap = new Map((bg.bundle_item || []).map(
|
|
52
|
+
const groupMap = new Map();
|
|
53
|
+
p.bundle_group.forEach(bg => {
|
|
54
|
+
const itemMap = new Map((bg.bundle_item || []).map(bi => [bi.id, bi]));
|
|
59
55
|
groupMap.set(bg.id, itemMap);
|
|
60
56
|
});
|
|
61
57
|
bundleMap.set(p.id, groupMap);
|
|
62
58
|
}
|
|
63
59
|
});
|
|
64
|
-
return {
|
|
60
|
+
return {
|
|
61
|
+
priceMap,
|
|
62
|
+
variantMap,
|
|
63
|
+
bundleMap
|
|
64
|
+
};
|
|
65
65
|
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* 将价格数据应用到商品列表(高性能版本)
|
|
69
|
+
* 通过预构建 Map 索引,将时间复杂度从 O(n×m) 优化到 O(n+m)
|
|
70
|
+
* @param products 商品列表
|
|
71
|
+
* @param priceData 价格数据
|
|
72
|
+
* @returns 应用价格后的商品列表
|
|
73
|
+
*/
|
|
66
74
|
function applyPriceDataToProducts(products, priceData) {
|
|
67
75
|
const t0 = performance.now();
|
|
68
76
|
if (!priceData || priceData.length === 0) {
|
|
69
|
-
console.log("[applyPriceDataToProducts] 没有价格数据,返回原商品");
|
|
70
77
|
return products;
|
|
71
78
|
}
|
|
72
79
|
const t1 = performance.now();
|
|
73
|
-
const {
|
|
74
|
-
|
|
80
|
+
const {
|
|
81
|
+
priceMap,
|
|
82
|
+
variantMap,
|
|
83
|
+
bundleMap
|
|
84
|
+
} = buildPriceIndexMap(priceData);
|
|
85
|
+
perfMark('buildPriceIndexMap', performance.now() - t1, {
|
|
86
|
+
priceCount: priceData.length
|
|
87
|
+
});
|
|
75
88
|
const t2 = performance.now();
|
|
76
|
-
const updatedProducts = products.map(
|
|
89
|
+
const updatedProducts = products.map(product => {
|
|
77
90
|
const priceInfo = priceMap.get(product.id);
|
|
78
91
|
if (!priceInfo) {
|
|
79
92
|
return product;
|
|
80
93
|
}
|
|
81
|
-
const updatedProduct = {
|
|
94
|
+
const updatedProduct = {
|
|
95
|
+
...product
|
|
96
|
+
};
|
|
82
97
|
updatedProduct.price = priceInfo.price;
|
|
83
98
|
updatedProduct.base_price = priceInfo.base_price;
|
|
84
99
|
if (updatedProduct.variant && updatedProduct.variant.length > 0) {
|
|
85
100
|
const productVariantMap = variantMap.get(product.id);
|
|
86
101
|
if (productVariantMap) {
|
|
87
|
-
updatedProduct.variant = updatedProduct.variant.map(
|
|
102
|
+
updatedProduct.variant = updatedProduct.variant.map(v => {
|
|
88
103
|
const priceVariant = productVariantMap.get(v.id);
|
|
89
104
|
if (priceVariant) {
|
|
90
105
|
return {
|
|
@@ -100,127 +115,155 @@ function applyPriceDataToProducts(products, priceData) {
|
|
|
100
115
|
if (updatedProduct.bundle_group && updatedProduct.bundle_group.length > 0) {
|
|
101
116
|
const productBundleMap = bundleMap.get(product.id);
|
|
102
117
|
if (productBundleMap) {
|
|
103
|
-
updatedProduct.bundle_group = updatedProduct.bundle_group.map(
|
|
104
|
-
(bg)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
);
|
|
118
|
+
updatedProduct.bundle_group = updatedProduct.bundle_group.map(bg => {
|
|
119
|
+
const groupItemMap = productBundleMap.get(bg.id);
|
|
120
|
+
if (!groupItemMap) return bg;
|
|
121
|
+
return {
|
|
122
|
+
...bg,
|
|
123
|
+
bundle_item: bg.bundle_item.map(bi => {
|
|
124
|
+
const priceBi = groupItemMap.get(bi.id);
|
|
125
|
+
if (priceBi) {
|
|
126
|
+
let price = priceBi.price;
|
|
127
|
+
return {
|
|
128
|
+
...bi,
|
|
129
|
+
price: String(price),
|
|
130
|
+
base_price: String(priceBi.base_price)
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return bi;
|
|
134
|
+
})
|
|
135
|
+
};
|
|
136
|
+
});
|
|
125
137
|
}
|
|
126
138
|
}
|
|
127
139
|
return updatedProduct;
|
|
128
140
|
});
|
|
129
|
-
perfMark(
|
|
130
|
-
|
|
141
|
+
perfMark('applyPriceDataToProducts.mapProducts', performance.now() - t2, {
|
|
142
|
+
count: products.length
|
|
143
|
+
});
|
|
144
|
+
perfMark('applyPriceDataToProducts', performance.now() - t0, {
|
|
131
145
|
productCount: products.length,
|
|
132
146
|
priceCount: priceData.length
|
|
133
147
|
});
|
|
134
148
|
return updatedProducts;
|
|
135
149
|
}
|
|
136
|
-
|
|
137
|
-
return [
|
|
150
|
+
const getIsSessionProduct = product => {
|
|
151
|
+
return ['session_product', 'session_ticket'].includes(product.extension_type);
|
|
138
152
|
};
|
|
139
|
-
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* 获取是否打开详情弹窗
|
|
156
|
+
* @param product 商品
|
|
157
|
+
* @param context 格式化器上下文
|
|
158
|
+
* @returns 是否打开详情弹窗
|
|
159
|
+
*/
|
|
160
|
+
exports.getIsSessionProduct = getIsSessionProduct;
|
|
161
|
+
const getIsOpenDetailModal = (product, context) => {
|
|
162
|
+
/** 是否为套餐组商品 */
|
|
140
163
|
const isBundleProduct = product.bundle_group_count > 0;
|
|
164
|
+
|
|
165
|
+
/** 是否为选项组商品 */
|
|
141
166
|
const isOptionProduct = product.option_group_count > 0;
|
|
167
|
+
|
|
168
|
+
/** 是否为组合规格商品 */
|
|
142
169
|
const isVariantProduct = product.is_variant > 0;
|
|
170
|
+
|
|
171
|
+
/** 是否为日程商品 */
|
|
143
172
|
const isSessionProduct = getIsSessionProduct(product);
|
|
173
|
+
|
|
174
|
+
// 获取商品关联的日程时间段
|
|
144
175
|
let scheduleTimeSlots = [];
|
|
145
|
-
if (isSessionProduct && product[
|
|
146
|
-
const scheduleIds = product[
|
|
176
|
+
if (isSessionProduct && product['schedule.ids'] && context.scheduleModule) {
|
|
177
|
+
const scheduleIds = product['schedule.ids'];
|
|
178
|
+
// 从 context 中获取完整的 scheduleList,然后过滤出商品关联的 schedule
|
|
147
179
|
const productSchedules = context.scheduleModule.getScheduleByIds(scheduleIds);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
productSchedules
|
|
151
|
-
);
|
|
180
|
+
// 获取当前日期的所有时间段
|
|
181
|
+
scheduleTimeSlots = (0, _utils.getScheduleStartEndTimePoints)(context.schedule_date, productSchedules);
|
|
152
182
|
}
|
|
183
|
+
|
|
184
|
+
// 是否打开详情弹窗 套餐组、选项组、组合规格、日程商品、日程时间段大于1个 打开详情弹窗
|
|
153
185
|
const isOpenDetailModal = isBundleProduct || isOptionProduct || isVariantProduct || scheduleTimeSlots.length > 1;
|
|
154
186
|
return {
|
|
155
187
|
isOpenDetailModal,
|
|
156
188
|
scheduleTimeSlots
|
|
157
189
|
};
|
|
158
190
|
};
|
|
159
|
-
|
|
160
|
-
title_i18n:
|
|
161
|
-
subtitle_i18n:
|
|
162
|
-
description_i18n:
|
|
163
|
-
cover_i18n:
|
|
191
|
+
const I18N_FIELD_MAP = {
|
|
192
|
+
title_i18n: 'title',
|
|
193
|
+
subtitle_i18n: 'subtitle',
|
|
194
|
+
description_i18n: 'description',
|
|
195
|
+
cover_i18n: 'cover'
|
|
164
196
|
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* 根据 locale 将商品的 i18n 字段覆盖到对应原始字段
|
|
200
|
+
*/
|
|
165
201
|
function applyI18nToProducts(products, locale) {
|
|
166
|
-
if (!locale)
|
|
167
|
-
|
|
168
|
-
return products.map((product) => {
|
|
202
|
+
if (!locale) return products;
|
|
203
|
+
return products.map(product => {
|
|
169
204
|
let patched = null;
|
|
170
205
|
for (const [i18nKey, originalKey] of Object.entries(I18N_FIELD_MAP)) {
|
|
171
206
|
const i18nDict = product[i18nKey];
|
|
172
|
-
if (!i18nDict)
|
|
173
|
-
continue;
|
|
207
|
+
if (!i18nDict) continue;
|
|
174
208
|
const localizedValue = i18nDict[locale];
|
|
175
209
|
if (localizedValue) {
|
|
176
|
-
if (!patched)
|
|
177
|
-
|
|
210
|
+
if (!patched) patched = {
|
|
211
|
+
...product
|
|
212
|
+
};
|
|
178
213
|
patched[originalKey] = localizedValue;
|
|
179
214
|
}
|
|
180
215
|
}
|
|
181
216
|
return patched ?? product;
|
|
182
217
|
});
|
|
183
218
|
}
|
|
184
|
-
|
|
185
|
-
var _a, _b, _c, _d;
|
|
219
|
+
const formatDataKey = data => {
|
|
186
220
|
const _data = {
|
|
187
221
|
...data
|
|
188
222
|
};
|
|
189
223
|
let key = `${_data.product_id}`;
|
|
190
224
|
let rowKey = key;
|
|
225
|
+
|
|
226
|
+
// 组合规格
|
|
191
227
|
if (_data.product_variant_id) {
|
|
192
228
|
let str = `_${_data.product_variant_id}`;
|
|
193
229
|
key += str;
|
|
194
230
|
rowKey += str;
|
|
195
231
|
}
|
|
196
|
-
|
|
232
|
+
|
|
233
|
+
// 单规格
|
|
234
|
+
if (_data?.option?.length) {
|
|
197
235
|
for (const item of _data.option) {
|
|
198
236
|
let str = `_${item.option_group_id}_${item.option_group_item_id}`;
|
|
199
237
|
key += str;
|
|
200
238
|
rowKey += `${str}_${item.quantity || item.num}`;
|
|
201
239
|
}
|
|
202
240
|
}
|
|
203
|
-
|
|
241
|
+
|
|
242
|
+
// 套餐
|
|
243
|
+
if (_data?.bundle?.length) {
|
|
204
244
|
for (const item of _data.bundle) {
|
|
205
245
|
let str = `_${item.group_id}_${item.bundle_product_id}`;
|
|
206
246
|
key += str;
|
|
207
247
|
rowKey += `${str}_${item.quantity || item.num}`;
|
|
208
|
-
|
|
248
|
+
// 如果有单规格
|
|
249
|
+
if (item?.option) {
|
|
209
250
|
for (const opt of item.option) {
|
|
210
|
-
let
|
|
211
|
-
key +=
|
|
212
|
-
rowKey += `${
|
|
251
|
+
let str = `_${opt.option_group_id}_${opt.option_group_item_id}`;
|
|
252
|
+
key += str;
|
|
253
|
+
rowKey += `${str}_${opt.quantity || opt.num}`;
|
|
213
254
|
}
|
|
214
255
|
}
|
|
215
256
|
}
|
|
216
257
|
}
|
|
217
|
-
|
|
218
|
-
|
|
258
|
+
|
|
259
|
+
// session time
|
|
260
|
+
if (_data?.session) {
|
|
261
|
+
let str = `_${_data?.session?.key}`;
|
|
219
262
|
key += str;
|
|
220
263
|
rowKey += str;
|
|
221
264
|
}
|
|
222
|
-
if (_data
|
|
223
|
-
let str = `_${
|
|
265
|
+
if (_data?.schedule) {
|
|
266
|
+
let str = `_${_data?.schedule?.key}`;
|
|
224
267
|
key += str;
|
|
225
268
|
rowKey += str;
|
|
226
269
|
}
|
|
@@ -228,46 +271,66 @@ var formatDataKey = (data) => {
|
|
|
228
271
|
_data.rowKey = rowKey;
|
|
229
272
|
return _data;
|
|
230
273
|
};
|
|
231
|
-
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* 生成购物车详情值
|
|
277
|
+
* @param product 商品
|
|
278
|
+
* @param context 格式化器上下文
|
|
279
|
+
* @returns 购物车详情值
|
|
280
|
+
*/
|
|
281
|
+
const genCartDetailValue = (product, scheduleTimeSlots) => {
|
|
232
282
|
const params = {
|
|
233
|
-
product_id: product
|
|
283
|
+
product_id: product?.id,
|
|
234
284
|
option: [],
|
|
235
285
|
bundle: [],
|
|
236
286
|
product_variant_id: 0,
|
|
237
287
|
quantity: 1,
|
|
238
|
-
unique: (0,
|
|
288
|
+
unique: (0, _utils2.getUniqueId)(),
|
|
239
289
|
session: null
|
|
240
290
|
};
|
|
241
291
|
if (scheduleTimeSlots.length) {
|
|
242
|
-
params.session = scheduleTimeSlots.map(
|
|
292
|
+
params.session = scheduleTimeSlots.map(item => ({
|
|
243
293
|
...item,
|
|
244
|
-
unique: (0,
|
|
294
|
+
unique: (0, _utils2.getUniqueId)()
|
|
245
295
|
}))[0];
|
|
246
296
|
}
|
|
247
|
-
if (product
|
|
248
|
-
params.service_times = product
|
|
297
|
+
if (product?.service_times) {
|
|
298
|
+
params.service_times = product?.service_times;
|
|
249
299
|
}
|
|
250
|
-
|
|
300
|
+
|
|
301
|
+
// 票务订单需要返回对应的扩展属性
|
|
302
|
+
if (product?.machine_code) {
|
|
251
303
|
params.machine_code = product.machine_code;
|
|
252
304
|
}
|
|
253
|
-
if (product
|
|
254
|
-
params.schedule_id = product[
|
|
305
|
+
if (product?.['schedule.ids']) {
|
|
306
|
+
params.schedule_id = product['schedule.ids'];
|
|
255
307
|
}
|
|
256
|
-
|
|
257
|
-
|
|
308
|
+
|
|
309
|
+
// 协议id
|
|
310
|
+
if (product?.policy) {
|
|
311
|
+
params.policy_id = product?.policy;
|
|
258
312
|
}
|
|
259
|
-
|
|
313
|
+
|
|
314
|
+
// appointment预约商品
|
|
315
|
+
if (product?.duration) {
|
|
260
316
|
params.duration = product.duration;
|
|
261
317
|
}
|
|
262
318
|
return formatDataKey(params);
|
|
263
319
|
};
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* 将详情值数据应用到商品列表
|
|
323
|
+
* @param products 商品列表
|
|
324
|
+
* @param context 格式化器上下文
|
|
325
|
+
* @returns 应用详情值后的商品列表
|
|
326
|
+
*/
|
|
264
327
|
function applyDetailValueToProducts(products, context) {
|
|
265
328
|
const t0 = performance.now();
|
|
266
|
-
const newProducts = products.map(
|
|
267
|
-
const {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
);
|
|
329
|
+
const newProducts = products.map(product => {
|
|
330
|
+
const {
|
|
331
|
+
isOpenDetailModal,
|
|
332
|
+
scheduleTimeSlots
|
|
333
|
+
} = getIsOpenDetailModal(product, context);
|
|
271
334
|
let cartDetailValue = null;
|
|
272
335
|
if (!isOpenDetailModal) {
|
|
273
336
|
cartDetailValue = genCartDetailValue(product, scheduleTimeSlots);
|
|
@@ -278,14 +341,8 @@ function applyDetailValueToProducts(products, context) {
|
|
|
278
341
|
cartDetailValue
|
|
279
342
|
};
|
|
280
343
|
});
|
|
281
|
-
perfMark(
|
|
344
|
+
perfMark('applyDetailValueToProducts', performance.now() - t0, {
|
|
345
|
+
count: products.length
|
|
346
|
+
});
|
|
282
347
|
return newProducts;
|
|
283
|
-
}
|
|
284
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
285
|
-
0 && (module.exports = {
|
|
286
|
-
applyDetailValueToProducts,
|
|
287
|
-
applyI18nToProducts,
|
|
288
|
-
applyPriceDataToProducts,
|
|
289
|
-
getIsSessionProduct,
|
|
290
|
-
perfMark
|
|
291
|
-
});
|
|
348
|
+
}
|
|
@@ -1,29 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
__export(schedule_exports, {
|
|
22
|
-
extractScheduleIdsFromMenus: () => extractScheduleIdsFromMenus,
|
|
23
|
-
extractTimePointsFromSchedules: () => extractTimePointsFromSchedules
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
24
5
|
});
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
exports.extractScheduleIdsFromMenus = extractScheduleIdsFromMenus;
|
|
7
|
+
exports.extractTimePointsFromSchedules = extractTimePointsFromSchedules;
|
|
8
|
+
var _time = require("./time");
|
|
9
|
+
/**
|
|
10
|
+
* 从餐牌列表中提取所有 schedule IDs
|
|
11
|
+
* @param menus 餐牌列表
|
|
12
|
+
* @returns 去重后的日程ID数组
|
|
13
|
+
*/
|
|
27
14
|
function extractScheduleIdsFromMenus(menus) {
|
|
28
15
|
const scheduleIds = menus.reduce((ids, menu) => {
|
|
29
16
|
if (menu.schedule && Array.isArray(menu.schedule)) {
|
|
@@ -31,25 +18,33 @@ function extractScheduleIdsFromMenus(menus) {
|
|
|
31
18
|
}
|
|
32
19
|
return ids;
|
|
33
20
|
}, []);
|
|
21
|
+
|
|
22
|
+
// 去重
|
|
34
23
|
return Array.from(new Set(scheduleIds));
|
|
35
24
|
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* 从日程列表中提取所有时间点
|
|
28
|
+
* @param schedules 日程列表
|
|
29
|
+
* @returns 排序后的时间点数组,格式为 ["10:00", "12:00", "14:00", "18:00"]
|
|
30
|
+
*/
|
|
36
31
|
function extractTimePointsFromSchedules(schedules) {
|
|
37
|
-
const timePointsSet =
|
|
32
|
+
const timePointsSet = new Set();
|
|
38
33
|
for (const schedule of schedules) {
|
|
39
34
|
switch (schedule.type) {
|
|
40
|
-
case
|
|
35
|
+
case 'standard':
|
|
36
|
+
// 标准类型:从 start_time 和 end_time 中提取时间部分
|
|
41
37
|
if (schedule.start_time) {
|
|
42
|
-
const startTime = (0,
|
|
43
|
-
if (startTime)
|
|
44
|
-
timePointsSet.add(startTime);
|
|
38
|
+
const startTime = (0, _time.extractTimeFromDateTime)(schedule.start_time);
|
|
39
|
+
if (startTime) timePointsSet.add(startTime);
|
|
45
40
|
}
|
|
46
41
|
if (schedule.end_time) {
|
|
47
|
-
const endTime = (0,
|
|
48
|
-
if (endTime)
|
|
49
|
-
timePointsSet.add(endTime);
|
|
42
|
+
const endTime = (0, _time.extractTimeFromDateTime)(schedule.end_time);
|
|
43
|
+
if (endTime) timePointsSet.add(endTime);
|
|
50
44
|
}
|
|
51
45
|
break;
|
|
52
|
-
case
|
|
46
|
+
case 'time-slots':
|
|
47
|
+
// 时间段类型:从 time_slot 数组中提取时间
|
|
53
48
|
if (schedule.time_slot && Array.isArray(schedule.time_slot)) {
|
|
54
49
|
for (const slot of schedule.time_slot) {
|
|
55
50
|
if (slot.start_time) {
|
|
@@ -61,7 +56,8 @@ function extractTimePointsFromSchedules(schedules) {
|
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
58
|
break;
|
|
64
|
-
case
|
|
59
|
+
case 'designation':
|
|
60
|
+
// 指定日期类型:从 designation 中提取时间
|
|
65
61
|
if (schedule.designation) {
|
|
66
62
|
const designations = Array.isArray(schedule.designation) ? schedule.designation : [schedule.designation];
|
|
67
63
|
for (const des of designations) {
|
|
@@ -78,11 +74,8 @@ function extractTimePointsFromSchedules(schedules) {
|
|
|
78
74
|
console.warn(`[ScheduleUtils] 未知的日程类型: ${schedule.type}`);
|
|
79
75
|
}
|
|
80
76
|
}
|
|
77
|
+
|
|
78
|
+
// 转换为数组并排序
|
|
81
79
|
const timePoints = Array.from(timePointsSet);
|
|
82
|
-
return (0,
|
|
83
|
-
}
|
|
84
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
-
0 && (module.exports = {
|
|
86
|
-
extractScheduleIdsFromMenus,
|
|
87
|
-
extractTimePointsFromSchedules
|
|
88
|
-
});
|
|
80
|
+
return (0, _time.sortTimePoints)(timePoints);
|
|
81
|
+
}
|