@pisell/pisellos 2.3.73 → 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.
Files changed (296) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +111 -71
  3. package/dist/model/strategy/adapter/promotion/index.js +9 -0
  4. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  5. package/dist/model/strategy/strategy-example.js +5 -19
  6. package/dist/modules/Cart/index.js +0 -3
  7. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  8. package/dist/modules/Date/index.js +1 -5
  9. package/dist/modules/Discount/index.js +2 -4
  10. package/dist/modules/OpenData/index.js +0 -2
  11. package/dist/modules/Order/index.d.ts +1 -1
  12. package/dist/modules/Order/index.js +36 -64
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/Quotation/index.d.ts +6 -0
  15. package/dist/modules/Quotation/index.js +75 -19
  16. package/dist/modules/Rules/index.js +1 -4
  17. package/dist/modules/Schedule/index.js +0 -1
  18. package/dist/modules/Schedule/utils.js +0 -1
  19. package/dist/modules/Step/index.js +0 -1
  20. package/dist/plugins/request.d.ts +1 -0
  21. package/dist/plugins/request.js +1 -4
  22. package/dist/plugins/window.js +2 -6
  23. package/dist/server/index.d.ts +8 -2
  24. package/dist/server/index.js +303 -269
  25. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  26. package/dist/server/modules/floor-plan/index.js +240 -98
  27. package/dist/server/modules/menu/index.js +75 -59
  28. package/dist/server/modules/order/index.d.ts +17 -7
  29. package/dist/server/modules/order/index.js +421 -211
  30. package/dist/server/modules/products/index.d.ts +8 -2
  31. package/dist/server/modules/products/index.js +191 -117
  32. package/dist/server/modules/quotation/index.js +29 -38
  33. package/dist/server/modules/resource/index.js +24 -17
  34. package/dist/server/modules/schedule/index.js +27 -35
  35. package/dist/server/utils/product.js +0 -1
  36. package/dist/solution/BaseSales/index.js +38 -41
  37. package/dist/solution/BookingByStep/index.d.ts +1 -1
  38. package/dist/solution/BookingByStep/index.js +7 -59
  39. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  40. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  41. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  42. package/dist/solution/BookingTicket/index.js +0 -2
  43. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  44. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  45. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  46. package/dist/solution/BuyTickets/index.js +9 -12
  47. package/dist/solution/Checkout/index.js +177 -252
  48. package/dist/solution/Checkout/utils/index.js +4 -16
  49. package/dist/solution/RegisterAndLogin/index.js +30 -76
  50. package/dist/solution/ScanOrder/index.js +50 -60
  51. package/dist/solution/ShopDiscount/index.js +2 -7
  52. package/dist/solution/VenueBooking/index.js +45 -55
  53. package/dist/utils/task.js +15 -18
  54. package/dist/utils/watch.js +0 -1
  55. package/lib/apis/picoding.js +2 -0
  56. package/lib/core/index.d.ts +7 -0
  57. package/lib/core/index.js +149 -131
  58. package/lib/effects/index.js +46 -57
  59. package/lib/index.js +82 -49
  60. package/lib/model/index.js +14 -21
  61. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  62. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  63. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  64. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  65. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  66. package/lib/model/strategy/adapter/index.js +100 -64
  67. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  68. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  69. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  70. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  71. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  72. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  73. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  74. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  75. package/lib/model/strategy/adapter/promotion/index.js +1 -0
  76. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  77. package/lib/model/strategy/adapter/type.js +4 -16
  78. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  79. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  80. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  81. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  82. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  83. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  84. package/lib/model/strategy/engine.js +270 -168
  85. package/lib/model/strategy/index.js +49 -34
  86. package/lib/model/strategy/strategy-example.js +243 -239
  87. package/lib/model/strategy/type.js +100 -40
  88. package/lib/modules/Account/index.js +39 -53
  89. package/lib/modules/Account/types.js +20 -33
  90. package/lib/modules/AccountList/index.js +116 -154
  91. package/lib/modules/AccountList/types.js +30 -31
  92. package/lib/modules/AccountList/utils.js +18 -30
  93. package/lib/modules/BaseModule.js +23 -42
  94. package/lib/modules/BookingContext/index.js +158 -136
  95. package/lib/modules/BookingContext/types.js +46 -32
  96. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  97. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  98. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  99. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  100. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  101. package/lib/modules/BookingContext/utils/index.js +124 -41
  102. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  103. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  104. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  105. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  106. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  107. package/lib/modules/BookingContext/utils/resources.js +209 -167
  108. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  109. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  110. package/lib/modules/Cart/index.js +170 -124
  111. package/lib/modules/Cart/types.js +46 -51
  112. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  113. package/lib/modules/Cart/utils/cartDate.js +56 -61
  114. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  115. package/lib/modules/Cart/utils/cartNote.js +27 -32
  116. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  117. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  118. package/lib/modules/Cart/utils/cartResource.js +70 -78
  119. package/lib/modules/Cart/utils/changePrice.js +22 -50
  120. package/lib/modules/Cart/utils/index.js +106 -48
  121. package/lib/modules/Customer/constants.js +13 -34
  122. package/lib/modules/Customer/index.js +235 -172
  123. package/lib/modules/Customer/types.js +38 -35
  124. package/lib/modules/Date/index.js +116 -115
  125. package/lib/modules/Date/types.js +16 -28
  126. package/lib/modules/Date/utils.js +174 -123
  127. package/lib/modules/Discount/index.js +122 -127
  128. package/lib/modules/Discount/types.js +9 -31
  129. package/lib/modules/Guests/index.js +30 -56
  130. package/lib/modules/Guests/types.js +23 -33
  131. package/lib/modules/Holder/index.js +209 -189
  132. package/lib/modules/Holder/types.js +4 -16
  133. package/lib/modules/Holder/utils.js +20 -49
  134. package/lib/modules/OpenData/index.js +70 -76
  135. package/lib/modules/OpenData/types.js +4 -16
  136. package/lib/modules/OpenData/utils.js +44 -78
  137. package/lib/modules/Order/index.d.ts +1 -1
  138. package/lib/modules/Order/index.js +1713 -2118
  139. package/lib/modules/Order/payment-utils.js +77 -120
  140. package/lib/modules/Order/types.js +88 -35
  141. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  142. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  143. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  144. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  145. package/lib/modules/Order/utils.js +814 -647
  146. package/lib/modules/Payment/cash.js +20 -33
  147. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  148. package/lib/modules/Payment/eftpos.js +16 -30
  149. package/lib/modules/Payment/index.js +532 -399
  150. package/lib/modules/Payment/mx51.js +1 -0
  151. package/lib/modules/Payment/types.js +230 -108
  152. package/lib/modules/Payment/utils.js +52 -51
  153. package/lib/modules/Payment/walletpass.js +485 -660
  154. package/lib/modules/Product/index.js +51 -46
  155. package/lib/modules/Product/types.js +4 -16
  156. package/lib/modules/Product/utils.js +32 -33
  157. package/lib/modules/ProductList/index.js +113 -123
  158. package/lib/modules/ProductList/types.js +9 -31
  159. package/lib/modules/Quotation/index.d.ts +6 -0
  160. package/lib/modules/Quotation/index.js +110 -103
  161. package/lib/modules/Quotation/types.js +4 -16
  162. package/lib/modules/Resource/index.js +27 -59
  163. package/lib/modules/Resource/types.js +22 -32
  164. package/lib/modules/Resource/utils.js +30 -38
  165. package/lib/modules/ResourcePlanner/index.js +25 -23
  166. package/lib/modules/ResourcePlanner/localClock.js +54 -119
  167. package/lib/modules/ResourcePlanner/planner.js +589 -770
  168. package/lib/modules/ResourcePlanner/types.js +10 -29
  169. package/lib/modules/Rules/index.js +1218 -959
  170. package/lib/modules/Rules/types.js +17 -40
  171. package/lib/modules/SalesSummary/index.js +85 -90
  172. package/lib/modules/SalesSummary/types.js +4 -16
  173. package/lib/modules/SalesSummary/utils.js +355 -430
  174. package/lib/modules/ScanOrderLogger/index.js +59 -79
  175. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  176. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  177. package/lib/modules/ScanOrderLogger/types.js +4 -16
  178. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  179. package/lib/modules/Schedule/index.js +100 -114
  180. package/lib/modules/Schedule/type.js +4 -16
  181. package/lib/modules/Schedule/types.js +4 -16
  182. package/lib/modules/Schedule/utils.js +433 -291
  183. package/lib/modules/Step/index.js +40 -52
  184. package/lib/modules/Step/tyeps.js +4 -16
  185. package/lib/modules/Summary/index.js +66 -71
  186. package/lib/modules/Summary/types.js +4 -16
  187. package/lib/modules/Summary/utils.js +773 -418
  188. package/lib/modules/SurchargeList/index.js +46 -60
  189. package/lib/modules/SurchargeList/types.js +4 -16
  190. package/lib/modules/index.js +245 -63
  191. package/lib/plugins/app.js +4 -16
  192. package/lib/plugins/index.js +36 -25
  193. package/lib/plugins/request.d.ts +1 -0
  194. package/lib/plugins/request.js +137 -126
  195. package/lib/plugins/shopStore.js +4 -16
  196. package/lib/plugins/user.js +4 -16
  197. package/lib/plugins/window.js +171 -179
  198. package/lib/server/index.d.ts +8 -2
  199. package/lib/server/index.js +3083 -2663
  200. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  201. package/lib/server/modules/floor-plan/index.js +159 -127
  202. package/lib/server/modules/floor-plan/types.js +15 -30
  203. package/lib/server/modules/index.js +106 -68
  204. package/lib/server/modules/menu/index.js +170 -124
  205. package/lib/server/modules/menu/types.js +18 -31
  206. package/lib/server/modules/order/index.d.ts +17 -7
  207. package/lib/server/modules/order/index.js +916 -977
  208. package/lib/server/modules/order/types.js +122 -33
  209. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  210. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  211. package/lib/server/modules/payment/index.js +59 -83
  212. package/lib/server/modules/payment/types.js +4 -16
  213. package/lib/server/modules/products/index.d.ts +8 -2
  214. package/lib/server/modules/products/index.js +656 -471
  215. package/lib/server/modules/products/types.js +44 -34
  216. package/lib/server/modules/quotation/index.js +137 -172
  217. package/lib/server/modules/quotation/types.js +21 -31
  218. package/lib/server/modules/resource/index.js +225 -186
  219. package/lib/server/modules/resource/types.js +42 -33
  220. package/lib/server/modules/schedule/index.js +135 -123
  221. package/lib/server/modules/schedule/types.js +14 -21
  222. package/lib/server/modules/schedule/utils.js +334 -163
  223. package/lib/server/types.js +4 -16
  224. package/lib/server/utils/index.js +25 -23
  225. package/lib/server/utils/product.js +196 -139
  226. package/lib/server/utils/schedule.js +34 -41
  227. package/lib/server/utils/small-ticket.js +479 -456
  228. package/lib/server/utils/time.js +40 -49
  229. package/lib/solution/BaseSales/index.js +1186 -1410
  230. package/lib/solution/BaseSales/types.js +42 -38
  231. package/lib/solution/BaseSales/utils/cartPromotion.js +642 -498
  232. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  233. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  234. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  235. package/lib/solution/BaseSales/utils.js +158 -143
  236. package/lib/solution/BookingByStep/index.d.ts +1 -1
  237. package/lib/solution/BookingByStep/index.js +1527 -1340
  238. package/lib/solution/BookingByStep/types.js +40 -99
  239. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  240. package/lib/solution/BookingByStep/utils/products.js +42 -52
  241. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  242. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  243. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  244. package/lib/solution/BookingTicket/index.js +607 -522
  245. package/lib/solution/BookingTicket/types.js +99 -77
  246. package/lib/solution/BookingTicket/utils/addProductDecision.js +226 -189
  247. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  248. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  249. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  250. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  251. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  252. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  253. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  254. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  255. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  256. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  257. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  258. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  259. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  260. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  261. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  262. package/lib/solution/BuyTickets/index.js +67 -70
  263. package/lib/solution/BuyTickets/types.js +22 -38
  264. package/lib/solution/Checkout/index.js +1451 -1158
  265. package/lib/solution/Checkout/types.js +91 -61
  266. package/lib/solution/Checkout/utils/index.js +228 -156
  267. package/lib/solution/PlaceOrder/index.js +55 -0
  268. package/lib/solution/RegisterAndLogin/config.js +493 -460
  269. package/lib/solution/RegisterAndLogin/index.js +633 -630
  270. package/lib/solution/RegisterAndLogin/types.js +189 -76
  271. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  272. package/lib/solution/Sales/index.js +328 -324
  273. package/lib/solution/Sales/types.js +27 -33
  274. package/lib/solution/ScanOrder/index.js +832 -864
  275. package/lib/solution/ScanOrder/types.js +33 -34
  276. package/lib/solution/ScanOrder/utils.js +409 -374
  277. package/lib/solution/ShopDiscount/index.js +226 -232
  278. package/lib/solution/ShopDiscount/types.js +15 -37
  279. package/lib/solution/ShopDiscount/utils.js +300 -172
  280. package/lib/solution/UnifiedBookingSales/index.js +1035 -1201
  281. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +99 -159
  282. package/lib/solution/UnifiedBookingSales/types.js +10 -32
  283. package/lib/solution/VenueBooking/index.js +811 -879
  284. package/lib/solution/VenueBooking/types.js +19 -39
  285. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  286. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  287. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  288. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  289. package/lib/solution/VenueBooking/utils.js +130 -67
  290. package/lib/solution/index.js +124 -41
  291. package/lib/store/createStore.js +32 -29
  292. package/lib/types/index.js +4 -16
  293. package/lib/utils/payment-number.js +26 -46
  294. package/lib/utils/task.js +36 -36
  295. package/lib/utils/watch.js +81 -47
  296. package/package.json +2 -1
@@ -1,122 +1,159 @@
1
- var __create = Object.create;
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
- // src/modules/Date/utils.ts
30
- var utils_exports = {};
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
- module.exports = __toCommonJS(utils_exports);
39
- var import_dayjs = __toESM(require("dayjs"));
40
- var generateMonthDates = (startDate, endDate, type) => {
41
- const start = type === "day" ? (0, import_dayjs.default)(startDate).format("YYYY-MM-DD") : (0, import_dayjs.default)(startDate).format("YYYY-MM-01");
42
- const end = (0, import_dayjs.default)(endDate).format("YYYY-MM-DD");
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, import_dayjs.default)(start);
45
- while ((0, import_dayjs.default)(currentDate).isBefore((0, import_dayjs.default)(end), "day") || (0, import_dayjs.default)(currentDate).isSame((0, import_dayjs.default)(end), "day")) {
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, import_dayjs.default)(currentDate).format("YYYY-MM-DD"),
48
- week: (0, import_dayjs.default)(currentDate).format("ddd"),
49
- weekNum: (0, import_dayjs.default)(currentDate).day(),
50
- status: "available"
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, import_dayjs.default)(currentDate).add(1, "day");
29
+ currentDate = (0, _dayjs.default)(currentDate).add(1, 'day');
53
30
  }
54
31
  return dates;
55
32
  };
56
- var disableAllDates = (dates) => {
57
- return dates.map((date) => ({ ...date, status: "unavailable" }));
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
- var disableDatesBeforeOneDay = (dates, oneDay) => {
60
- const day = oneDay ? (0, import_dayjs.default)(oneDay).format("YYYY-MM-DD") : (0, import_dayjs.default)().format("YYYY-MM-DD");
61
- return dates.map((date) => {
62
- if ((0, import_dayjs.default)(date.date).isBefore(day, "day")) {
63
- return { ...date, status: "unavailable" };
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
- var handleAvailableDateByResource = (resources, dates) => {
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((resource) => {
72
- const { form_id, id, times, ...others } = resource;
73
- times.forEach((time) => {
74
- var _a;
75
- const { start_at } = time;
76
- const date = (0, import_dayjs.default)(start_at).format("YYYY-MM-DD");
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] = [{ form_id, id, ...others, times: [time] }];
90
+ dateMap[date] = [{
91
+ form_id,
92
+ id,
93
+ ...others,
94
+ times: [time]
95
+ }];
79
96
  } else {
80
- const temp = (_a = dateMap[date].filter((item) => item.id === id)) == null ? void 0 : _a[0];
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({ form_id, id, ...others, times: [time] });
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((date) => {
111
+ return dates.map(date => {
90
112
  const resource = dateMap[date.date];
91
113
  if (resource) {
92
- return { ...date, resource };
114
+ return {
115
+ ...date,
116
+ resource
117
+ };
93
118
  } else {
94
- return { ...date, status: "unavailable", resource: [] };
119
+ return {
120
+ ...date,
121
+ status: 'unavailable',
122
+ resource: []
123
+ };
95
124
  }
96
125
  });
97
126
  };
98
- var handleAvailableDatesByRules = (dates, rules) => {
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 (!(rules == null ? void 0 : rules.length)) {
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((rule) => {
108
- var _a, _b;
109
- if ((_a = rule == null ? void 0 : rule.schedule) == null ? void 0 : _a.length) {
144
+ rules.forEach(rule => {
145
+ // 如果有日程列表,需要将它去重加入到scheduleMap
146
+ if (rule?.schedule?.length) {
110
147
  for (const item of rule.schedule) {
111
- if ((0, import_dayjs.default)(item.date).isBefore((0, import_dayjs.default)(newDates[0].date), "day")) {
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
- if ((0, import_dayjs.default)(item.date).isAfter(
115
- (0, import_dayjs.default)(newDates[newDates.length - 1].date),
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 { future_day, unit, unit_type } = (rule == null ? void 0 : rule.cut_off_time) || {};
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, import_dayjs.default)().add(future_day, "day");
132
- if (!earliestEndDate || endDate.isBefore((0, import_dayjs.default)(earliestEndDate), "day")) {
133
- earliestEndDate = endDate.format("YYYY-MM-DD");
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, import_dayjs.default)();
137
- if (!earliestEndDate || endDate.isBefore((0, import_dayjs.default)(earliestEndDate), "day")) {
138
- earliestEndDate = endDate.format("YYYY-MM-DD");
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, import_dayjs.default)(
143
- (0, import_dayjs.default)().add(unit, unit_type).format("YYYY-MM-DD")
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 ((_b = rule == null ? void 0 : rule.resourceFormIds) == null ? void 0 : _b.length) {
150
- resourceFormIds = [
151
- .../* @__PURE__ */ new Set([...resourceFormIds, ...rule == null ? void 0 : rule.resourceFormIds])
152
- ];
191
+ if (rule?.resourceFormIds?.length) {
192
+ // 去重
193
+ resourceFormIds = [...new Set([...resourceFormIds, ...rule?.resourceFormIds])];
153
194
  }
154
195
  });
155
- newDates = newDates.map((date) => {
156
- var _a;
157
- const disabledDate = { ...date, status: "unavailable" };
158
- const hasScheduleConfig = rules.find((n) => {
159
- var _a2;
160
- return (_a2 = n.schedule) == null ? void 0 : _a2.length;
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 { ...date, color: "", status: "unavailable" };
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
- if (!schedule || (schedule == null ? void 0 : schedule.isExcluded)) {
168
- return { ...date, color: schedule == null ? void 0 : schedule.color, status: "unavailable" };
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 == null ? void 0 : schedule.color;
171
- disabledDate.color = schedule == null ? void 0 : schedule.color;
222
+ date.color = schedule?.color;
223
+ disabledDate.color = schedule?.color;
172
224
  }
173
225
  }
174
- if (!((_a = date == null ? void 0 : date.resource) == null ? void 0 : _a.length)) {
226
+
227
+ // 如果资源不存在,则设置为不可用
228
+ if (!date?.resource?.length) {
175
229
  return disabledDate;
176
230
  }
177
231
  if (latestStartDate || earliestEndDate) {
178
- if (latestStartDate && (0, import_dayjs.default)(date.date).isBefore(latestStartDate, "day")) {
232
+ // 如果时间在最早开始时间之前,则设置为不可用
233
+ if (latestStartDate && (0, _dayjs.default)(date.date).isBefore(latestStartDate, 'day')) {
179
234
  return disabledDate;
180
235
  }
181
- if (earliestEndDate && (0, import_dayjs.default)(date.date).isAfter(earliestEndDate, "day")) {
236
+ // 如果时间在最早结束时间之后,则设置为不可用
237
+ if (earliestEndDate && (0, _dayjs.default)(date.date).isAfter(earliestEndDate, 'day')) {
182
238
  return disabledDate;
183
239
  }
184
240
  }
185
- if (resourceFormIds == null ? void 0 : resourceFormIds.length) {
241
+
242
+ // 如果存在资源form_id,则开始计算资源form_id在日期上是否全部存在
243
+ if (resourceFormIds?.length) {
186
244
  let hasReourceCount = 0;
187
- resourceFormIds.forEach((formId) => {
188
- var _a2;
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
- // Annotate the CommonJS export names for ESM import in node:
202
- 0 && (module.exports = {
203
- disableAllDates,
204
- disableDatesBeforeOneDay,
205
- generateMonthDates,
206
- handleAvailableDateByResource,
207
- handleAvailableDatesByRules
208
- });
259
+ exports.handleAvailableDatesByRules = handleAvailableDatesByRules;