@pisell/pisellos 2.3.74 → 2.3.75
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.js +36 -64
- 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 +38 -41
- 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.js +1713 -2118
- package/lib/modules/Order/payment-utils.js +77 -120
- 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 +1186 -1410
- package/lib/solution/BaseSales/types.js +42 -38
- package/lib/solution/BaseSales/utils/cartPromotion.js +642 -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
|
@@ -1,122 +1,159 @@
|
|
|
1
|
-
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
28
2
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
__export(utils_exports, {
|
|
32
|
-
disableAllDates: () => disableAllDates,
|
|
33
|
-
disableDatesBeforeOneDay: () => disableDatesBeforeOneDay,
|
|
34
|
-
generateMonthDates: () => generateMonthDates,
|
|
35
|
-
handleAvailableDateByResource: () => handleAvailableDateByResource,
|
|
36
|
-
handleAvailableDatesByRules: () => handleAvailableDatesByRules
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
37
5
|
});
|
|
38
|
-
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
6
|
+
exports.handleAvailableDatesByRules = exports.handleAvailableDateByResource = exports.generateMonthDates = exports.disableDatesBeforeOneDay = exports.disableAllDates = void 0;
|
|
7
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
/**
|
|
10
|
+
* 生成当前月份的所有日期
|
|
11
|
+
* @param startDate 开始日期
|
|
12
|
+
* @param endDate 结束日期
|
|
13
|
+
* @param type 类型:按月查 | 按周查
|
|
14
|
+
* @returns 日期列表
|
|
15
|
+
*/
|
|
16
|
+
const generateMonthDates = (startDate, endDate, type) => {
|
|
17
|
+
// 如果是按月查询需要从01号开始,如果是按周查询以开始结束时间为准
|
|
18
|
+
const start = type === 'day' ? (0, _dayjs.default)(startDate).format('YYYY-MM-DD') : (0, _dayjs.default)(startDate).format('YYYY-MM-01');
|
|
19
|
+
const end = (0, _dayjs.default)(endDate).format('YYYY-MM-DD');
|
|
43
20
|
const dates = [];
|
|
44
|
-
let currentDate = (0,
|
|
45
|
-
while ((0,
|
|
21
|
+
let currentDate = (0, _dayjs.default)(start);
|
|
22
|
+
while ((0, _dayjs.default)(currentDate).isBefore((0, _dayjs.default)(end), 'day') || (0, _dayjs.default)(currentDate).isSame((0, _dayjs.default)(end), 'day')) {
|
|
46
23
|
dates.push({
|
|
47
|
-
date: (0,
|
|
48
|
-
week: (0,
|
|
49
|
-
weekNum: (0,
|
|
50
|
-
status:
|
|
24
|
+
date: (0, _dayjs.default)(currentDate).format('YYYY-MM-DD'),
|
|
25
|
+
week: (0, _dayjs.default)(currentDate).format('ddd'),
|
|
26
|
+
weekNum: (0, _dayjs.default)(currentDate).day(),
|
|
27
|
+
status: 'available'
|
|
51
28
|
});
|
|
52
|
-
currentDate = (0,
|
|
29
|
+
currentDate = (0, _dayjs.default)(currentDate).add(1, 'day');
|
|
53
30
|
}
|
|
54
31
|
return dates;
|
|
55
32
|
};
|
|
56
|
-
|
|
57
|
-
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 禁用所有日期
|
|
36
|
+
* @param dates 日期列表
|
|
37
|
+
* @returns 日期列表
|
|
38
|
+
*/
|
|
39
|
+
exports.generateMonthDates = generateMonthDates;
|
|
40
|
+
const disableAllDates = dates => {
|
|
41
|
+
return dates.map(date => ({
|
|
42
|
+
...date,
|
|
43
|
+
status: 'unavailable'
|
|
44
|
+
}));
|
|
58
45
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 禁用某一天之前的日期,如不传则默认今天
|
|
49
|
+
* @param dates 日期列表
|
|
50
|
+
* @param oneDay 日期
|
|
51
|
+
* @returns 日期列表
|
|
52
|
+
*/
|
|
53
|
+
exports.disableAllDates = disableAllDates;
|
|
54
|
+
const disableDatesBeforeOneDay = (dates, oneDay) => {
|
|
55
|
+
const day = oneDay ? (0, _dayjs.default)(oneDay).format('YYYY-MM-DD') : (0, _dayjs.default)().format('YYYY-MM-DD');
|
|
56
|
+
return dates.map(date => {
|
|
57
|
+
if ((0, _dayjs.default)(date.date).isBefore(day, 'day')) {
|
|
58
|
+
return {
|
|
59
|
+
...date,
|
|
60
|
+
status: 'unavailable'
|
|
61
|
+
};
|
|
64
62
|
} else {
|
|
65
63
|
return date;
|
|
66
64
|
}
|
|
67
65
|
});
|
|
68
66
|
};
|
|
69
|
-
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* 根据资源中的日期处理出每个日期下存在的可用资源,根据form_id进行分类
|
|
70
|
+
* @param resources 资源列表
|
|
71
|
+
* @param dates 日期列表
|
|
72
|
+
* @returns 日期列表
|
|
73
|
+
*/
|
|
74
|
+
exports.disableDatesBeforeOneDay = disableDatesBeforeOneDay;
|
|
75
|
+
const handleAvailableDateByResource = (resources, dates) => {
|
|
70
76
|
const dateMap = {};
|
|
71
|
-
resources.forEach(
|
|
72
|
-
const {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
resources.forEach(resource => {
|
|
78
|
+
const {
|
|
79
|
+
form_id,
|
|
80
|
+
id,
|
|
81
|
+
times,
|
|
82
|
+
...others
|
|
83
|
+
} = resource;
|
|
84
|
+
times.forEach(time => {
|
|
85
|
+
const {
|
|
86
|
+
start_at
|
|
87
|
+
} = time;
|
|
88
|
+
const date = (0, _dayjs.default)(start_at).format('YYYY-MM-DD');
|
|
77
89
|
if (!dateMap[date]) {
|
|
78
|
-
dateMap[date] = [{
|
|
90
|
+
dateMap[date] = [{
|
|
91
|
+
form_id,
|
|
92
|
+
id,
|
|
93
|
+
...others,
|
|
94
|
+
times: [time]
|
|
95
|
+
}];
|
|
79
96
|
} else {
|
|
80
|
-
const temp =
|
|
97
|
+
const temp = dateMap[date].filter(item => item.id === id)?.[0];
|
|
81
98
|
if (temp) {
|
|
82
99
|
temp.times.push(time);
|
|
83
100
|
} else {
|
|
84
|
-
dateMap[date].push({
|
|
101
|
+
dateMap[date].push({
|
|
102
|
+
form_id,
|
|
103
|
+
id,
|
|
104
|
+
...others,
|
|
105
|
+
times: [time]
|
|
106
|
+
});
|
|
85
107
|
}
|
|
86
108
|
}
|
|
87
109
|
});
|
|
88
110
|
});
|
|
89
|
-
return dates.map(
|
|
111
|
+
return dates.map(date => {
|
|
90
112
|
const resource = dateMap[date.date];
|
|
91
113
|
if (resource) {
|
|
92
|
-
return {
|
|
114
|
+
return {
|
|
115
|
+
...date,
|
|
116
|
+
resource
|
|
117
|
+
};
|
|
93
118
|
} else {
|
|
94
|
-
return {
|
|
119
|
+
return {
|
|
120
|
+
...date,
|
|
121
|
+
status: 'unavailable',
|
|
122
|
+
resource: []
|
|
123
|
+
};
|
|
95
124
|
}
|
|
96
125
|
});
|
|
97
126
|
};
|
|
98
|
-
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* 根据规则判定哪些日期是可用的
|
|
130
|
+
* @param dates 日期列表
|
|
131
|
+
* @param rules 提前量规则
|
|
132
|
+
* @returns 日期列表
|
|
133
|
+
*/
|
|
134
|
+
exports.handleAvailableDateByResource = handleAvailableDateByResource;
|
|
135
|
+
const handleAvailableDatesByRules = (dates, rules) => {
|
|
99
136
|
let newDates = disableDatesBeforeOneDay(dates);
|
|
100
|
-
if (!
|
|
137
|
+
if (!rules?.length) {
|
|
101
138
|
return newDates;
|
|
102
139
|
}
|
|
103
|
-
let scheduleMap = {};
|
|
104
|
-
let latestStartDate =
|
|
105
|
-
let earliestEndDate =
|
|
140
|
+
let scheduleMap = {}; // 日程列表
|
|
141
|
+
let latestStartDate = ''; // 最晚开始日期
|
|
142
|
+
let earliestEndDate = ''; // 最早结束日期
|
|
106
143
|
let resourceFormIds = [];
|
|
107
|
-
rules.forEach(
|
|
108
|
-
|
|
109
|
-
if (
|
|
144
|
+
rules.forEach(rule => {
|
|
145
|
+
// 如果有日程列表,需要将它去重加入到scheduleMap
|
|
146
|
+
if (rule?.schedule?.length) {
|
|
110
147
|
for (const item of rule.schedule) {
|
|
111
|
-
|
|
148
|
+
// 判断item.date是否在dates的开始和结束日期范围内,如果不在则跳过
|
|
149
|
+
if ((0, _dayjs.default)(item.date).isBefore((0, _dayjs.default)(newDates[0].date), 'day')) {
|
|
112
150
|
continue;
|
|
113
151
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
"day"
|
|
117
|
-
)) {
|
|
152
|
+
// 判断日程日期是否超过了dates中的最后一个日期,如果超过了则循环break
|
|
153
|
+
if ((0, _dayjs.default)(item.date).isAfter((0, _dayjs.default)(newDates[newDates.length - 1].date), 'day')) {
|
|
118
154
|
break;
|
|
119
155
|
}
|
|
156
|
+
// 在范围内的日程如果scheduleMap中不存在,则加入到scheduleMap
|
|
120
157
|
if (!scheduleMap[item.date]) {
|
|
121
158
|
scheduleMap[item.date] = item;
|
|
122
159
|
} else {
|
|
@@ -126,70 +163,91 @@ var handleAvailableDatesByRules = (dates, rules) => {
|
|
|
126
163
|
}
|
|
127
164
|
}
|
|
128
165
|
}
|
|
129
|
-
const {
|
|
166
|
+
const {
|
|
167
|
+
future_day,
|
|
168
|
+
unit,
|
|
169
|
+
unit_type
|
|
170
|
+
} = rule?.cut_off_time || {};
|
|
171
|
+
// 预定天数存在,则开始计算从当前时间开始往后推预定天数作为结束时间
|
|
130
172
|
if (future_day) {
|
|
131
|
-
const endDate = (0,
|
|
132
|
-
if (!earliestEndDate || endDate.isBefore((0,
|
|
133
|
-
earliestEndDate = endDate.format(
|
|
173
|
+
const endDate = (0, _dayjs.default)().add(future_day, 'day');
|
|
174
|
+
if (!earliestEndDate || endDate.isBefore((0, _dayjs.default)(earliestEndDate), 'day')) {
|
|
175
|
+
earliestEndDate = endDate.format('YYYY-MM-DD');
|
|
134
176
|
}
|
|
135
177
|
} else if (future_day === 0) {
|
|
136
|
-
const endDate = (0,
|
|
137
|
-
if (!earliestEndDate || endDate.isBefore((0,
|
|
138
|
-
earliestEndDate = endDate.format(
|
|
178
|
+
const endDate = (0, _dayjs.default)();
|
|
179
|
+
if (!earliestEndDate || endDate.isBefore((0, _dayjs.default)(earliestEndDate), 'day')) {
|
|
180
|
+
earliestEndDate = endDate.format('YYYY-MM-DD');
|
|
139
181
|
}
|
|
140
182
|
}
|
|
183
|
+
|
|
184
|
+
// 如果存在提前预约时间,则开始计算从当前时间开始往后推提前预约时间作为开始时间
|
|
141
185
|
if (unit && unit_type) {
|
|
142
|
-
const startDate = (0,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (!latestStartDate || startDate.isAfter((0, import_dayjs.default)(latestStartDate), "day")) {
|
|
146
|
-
latestStartDate = startDate.format("YYYY-MM-DD");
|
|
186
|
+
const startDate = (0, _dayjs.default)((0, _dayjs.default)().add(unit, unit_type).format('YYYY-MM-DD'));
|
|
187
|
+
if (!latestStartDate || startDate.isAfter((0, _dayjs.default)(latestStartDate), 'day')) {
|
|
188
|
+
latestStartDate = startDate.format('YYYY-MM-DD');
|
|
147
189
|
}
|
|
148
190
|
}
|
|
149
|
-
if (
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
];
|
|
191
|
+
if (rule?.resourceFormIds?.length) {
|
|
192
|
+
// 去重
|
|
193
|
+
resourceFormIds = [...new Set([...resourceFormIds, ...rule?.resourceFormIds])];
|
|
153
194
|
}
|
|
154
195
|
});
|
|
155
|
-
newDates = newDates.map(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
196
|
+
newDates = newDates.map(date => {
|
|
197
|
+
const disabledDate = {
|
|
198
|
+
...date,
|
|
199
|
+
status: 'unavailable'
|
|
200
|
+
};
|
|
201
|
+
const hasScheduleConfig = rules.find(n => n.schedule?.length);
|
|
202
|
+
// 如果外面穿了 schedule,但是这个时候scheduleMap为空,则设置为不可用
|
|
203
|
+
// 这种情况为,商品设置了 5.1-5.31 可用,资源设置了 5.1-6.30 可用,session 类商品详情弹窗里里看到的6 月以后的日期都应该是不可用的
|
|
162
204
|
if (Object.keys(scheduleMap).length === 0 && hasScheduleConfig) {
|
|
163
|
-
return {
|
|
205
|
+
return {
|
|
206
|
+
...date,
|
|
207
|
+
color: '',
|
|
208
|
+
status: 'unavailable'
|
|
209
|
+
};
|
|
164
210
|
}
|
|
211
|
+
// 根据日程判断日期是否可用
|
|
165
212
|
if (Object.keys(scheduleMap).length) {
|
|
166
213
|
const schedule = scheduleMap[date.date];
|
|
167
|
-
|
|
168
|
-
|
|
214
|
+
// 如果日程不存在 或者 日程存在但是需要排除,则设置为不可用
|
|
215
|
+
if (!schedule || schedule?.isExcluded) {
|
|
216
|
+
return {
|
|
217
|
+
...date,
|
|
218
|
+
color: schedule?.color,
|
|
219
|
+
status: 'unavailable'
|
|
220
|
+
};
|
|
169
221
|
} else {
|
|
170
|
-
date.color = schedule
|
|
171
|
-
disabledDate.color = schedule
|
|
222
|
+
date.color = schedule?.color;
|
|
223
|
+
disabledDate.color = schedule?.color;
|
|
172
224
|
}
|
|
173
225
|
}
|
|
174
|
-
|
|
226
|
+
|
|
227
|
+
// 如果资源不存在,则设置为不可用
|
|
228
|
+
if (!date?.resource?.length) {
|
|
175
229
|
return disabledDate;
|
|
176
230
|
}
|
|
177
231
|
if (latestStartDate || earliestEndDate) {
|
|
178
|
-
|
|
232
|
+
// 如果时间在最早开始时间之前,则设置为不可用
|
|
233
|
+
if (latestStartDate && (0, _dayjs.default)(date.date).isBefore(latestStartDate, 'day')) {
|
|
179
234
|
return disabledDate;
|
|
180
235
|
}
|
|
181
|
-
|
|
236
|
+
// 如果时间在最早结束时间之后,则设置为不可用
|
|
237
|
+
if (earliestEndDate && (0, _dayjs.default)(date.date).isAfter(earliestEndDate, 'day')) {
|
|
182
238
|
return disabledDate;
|
|
183
239
|
}
|
|
184
240
|
}
|
|
185
|
-
|
|
241
|
+
|
|
242
|
+
// 如果存在资源form_id,则开始计算资源form_id在日期上是否全部存在
|
|
243
|
+
if (resourceFormIds?.length) {
|
|
186
244
|
let hasReourceCount = 0;
|
|
187
|
-
resourceFormIds.forEach(
|
|
188
|
-
|
|
189
|
-
if (((_a2 = date == null ? void 0 : date.resource) == null ? void 0 : _a2.find((item) => item.form_id === formId)) !== void 0) {
|
|
245
|
+
resourceFormIds.forEach(formId => {
|
|
246
|
+
if (date?.resource?.find(item => item.form_id === formId) !== undefined) {
|
|
190
247
|
hasReourceCount++;
|
|
191
248
|
}
|
|
192
249
|
});
|
|
250
|
+
// 如果所需要的资源在日期上不足,则设置为不可用
|
|
193
251
|
if (hasReourceCount < resourceFormIds.length) {
|
|
194
252
|
return disabledDate;
|
|
195
253
|
}
|
|
@@ -198,11 +256,4 @@ var handleAvailableDatesByRules = (dates, rules) => {
|
|
|
198
256
|
});
|
|
199
257
|
return newDates;
|
|
200
258
|
};
|
|
201
|
-
|
|
202
|
-
0 && (module.exports = {
|
|
203
|
-
disableAllDates,
|
|
204
|
-
disableDatesBeforeOneDay,
|
|
205
|
-
generateMonthDates,
|
|
206
|
-
handleAvailableDateByResource,
|
|
207
|
-
handleAvailableDatesByRules
|
|
208
|
-
});
|
|
259
|
+
exports.handleAvailableDatesByRules = handleAvailableDatesByRules;
|