@pisell/pisellos 2.2.283 → 2.2.285

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 (283) hide show
  1. package/dist/core/index.js +6 -10
  2. package/dist/model/strategy/adapter/walletPass/example.js +3 -26
  3. package/dist/model/strategy/strategy-example.js +5 -19
  4. package/dist/modules/Cart/index.js +0 -3
  5. package/dist/modules/Cart/utils/cartProduct.js +0 -1
  6. package/dist/modules/Date/index.js +1 -5
  7. package/dist/modules/Discount/index.js +2 -4
  8. package/dist/modules/OpenData/index.js +0 -2
  9. package/dist/modules/Order/index.d.ts +1 -1
  10. package/dist/modules/Order/index.js +64 -86
  11. package/dist/modules/Order/types.d.ts +3 -1
  12. package/dist/modules/Order/types.js +1 -0
  13. package/dist/modules/Payment/index.js +97 -162
  14. package/dist/modules/ProductList/index.js +91 -65
  15. package/dist/modules/Rules/index.js +1 -4
  16. package/dist/modules/Schedule/index.js +0 -1
  17. package/dist/modules/Schedule/utils.js +0 -1
  18. package/dist/modules/Step/index.js +0 -1
  19. package/dist/plugins/request.js +1 -4
  20. package/dist/plugins/window.js +2 -6
  21. package/dist/server/index.js +97 -129
  22. package/dist/server/modules/menu/index.js +32 -41
  23. package/dist/server/modules/order/index.js +2 -4
  24. package/dist/server/modules/products/index.js +24 -42
  25. package/dist/server/modules/quotation/index.js +29 -38
  26. package/dist/server/modules/resource/index.js +3 -4
  27. package/dist/server/modules/schedule/index.js +27 -35
  28. package/dist/server/utils/product.js +0 -1
  29. package/dist/solution/BaseSales/index.js +115 -76
  30. package/dist/solution/BookingByStep/index.d.ts +1 -1
  31. package/dist/solution/BookingByStep/index.js +7 -59
  32. package/dist/solution/BookingByStep/utils/capacity.js +1 -11
  33. package/dist/solution/BookingByStep/utils/resources.js +1 -3
  34. package/dist/solution/BookingByStep/utils/timeslots.js +2 -43
  35. package/dist/solution/BookingTicket/index.d.ts +6 -16
  36. package/dist/solution/BookingTicket/index.js +13 -6
  37. package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +6 -7
  38. package/dist/solution/BookingTicket/utils/scan/handleScan.js +25 -31
  39. package/dist/solution/BookingTicket/utils/scan/index.js +6 -10
  40. package/dist/solution/BuyTickets/index.js +9 -12
  41. package/dist/solution/Checkout/index.js +177 -252
  42. package/dist/solution/Checkout/utils/index.js +4 -16
  43. package/dist/solution/RegisterAndLogin/index.js +30 -76
  44. package/dist/solution/ScanOrder/index.js +50 -60
  45. package/dist/solution/ShopDiscount/index.js +2 -7
  46. package/dist/solution/VenueBooking/index.js +45 -55
  47. package/dist/utils/task.js +15 -18
  48. package/dist/utils/watch.js +0 -1
  49. package/lib/apis/picoding.js +2 -0
  50. package/lib/core/index.js +131 -132
  51. package/lib/effects/index.js +46 -57
  52. package/lib/index.js +82 -49
  53. package/lib/model/index.js +14 -21
  54. package/lib/model/strategy/adapter/dataVariant/adapter.js +38 -50
  55. package/lib/model/strategy/adapter/dataVariant/evaluator.js +162 -236
  56. package/lib/model/strategy/adapter/dataVariant/examples.js +229 -237
  57. package/lib/model/strategy/adapter/dataVariant/index.js +39 -34
  58. package/lib/model/strategy/adapter/dataVariant/type.js +57 -28
  59. package/lib/model/strategy/adapter/index.js +100 -64
  60. package/lib/model/strategy/adapter/itemRule/adapter.js +156 -144
  61. package/lib/model/strategy/adapter/itemRule/evaluator.js +36 -48
  62. package/lib/model/strategy/adapter/itemRule/examples.js +295 -225
  63. package/lib/model/strategy/adapter/itemRule/index.js +83 -57
  64. package/lib/model/strategy/adapter/itemRule/type.js +97 -36
  65. package/lib/model/strategy/adapter/promotion/adapter.js +91 -69
  66. package/lib/model/strategy/adapter/promotion/evaluator.js +444 -310
  67. package/lib/model/strategy/adapter/promotion/examples.js +222 -234
  68. package/lib/model/strategy/adapter/promotion/index.js +46 -0
  69. package/lib/model/strategy/adapter/promotion/type.js +243 -36
  70. package/lib/model/strategy/adapter/type.js +4 -16
  71. package/lib/model/strategy/adapter/walletPass/evaluator.js +180 -150
  72. package/lib/model/strategy/adapter/walletPass/example.js +217 -190
  73. package/lib/model/strategy/adapter/walletPass/index.js +75 -51
  74. package/lib/model/strategy/adapter/walletPass/locales.js +36 -58
  75. package/lib/model/strategy/adapter/walletPass/type.js +4 -16
  76. package/lib/model/strategy/adapter/walletPass/utils.js +588 -378
  77. package/lib/model/strategy/engine.js +270 -168
  78. package/lib/model/strategy/index.js +49 -34
  79. package/lib/model/strategy/strategy-example.js +243 -239
  80. package/lib/model/strategy/type.js +100 -40
  81. package/lib/modules/Account/index.js +39 -53
  82. package/lib/modules/Account/types.js +20 -33
  83. package/lib/modules/AccountList/index.js +116 -154
  84. package/lib/modules/AccountList/types.js +30 -31
  85. package/lib/modules/AccountList/utils.js +18 -30
  86. package/lib/modules/BaseModule.js +23 -42
  87. package/lib/modules/BookingContext/index.js +158 -136
  88. package/lib/modules/BookingContext/types.js +46 -32
  89. package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +138 -146
  90. package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +78 -83
  91. package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +170 -150
  92. package/lib/modules/BookingContext/utils/flexible.js +38 -55
  93. package/lib/modules/BookingContext/utils/formatResourceList.js +19 -34
  94. package/lib/modules/BookingContext/utils/index.js +124 -41
  95. package/lib/modules/BookingContext/utils/noResource.js +58 -70
  96. package/lib/modules/BookingContext/utils/orderLineDisplay.js +14 -41
  97. package/lib/modules/BookingContext/utils/productExtend.js +202 -155
  98. package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
  99. package/lib/modules/BookingContext/utils/resourceSelection.js +19 -41
  100. package/lib/modules/BookingContext/utils/resources.js +209 -167
  101. package/lib/modules/BookingContext/utils/serviceTimes.js +115 -116
  102. package/lib/modules/BookingContext/utils/timeSlices.js +76 -86
  103. package/lib/modules/Cart/index.js +170 -124
  104. package/lib/modules/Cart/types.js +46 -51
  105. package/lib/modules/Cart/utils/cartAccount.js +40 -39
  106. package/lib/modules/Cart/utils/cartDate.js +56 -61
  107. package/lib/modules/Cart/utils/cartDiscount.js +28 -33
  108. package/lib/modules/Cart/utils/cartNote.js +27 -32
  109. package/lib/modules/Cart/utils/cartProduct.js +321 -251
  110. package/lib/modules/Cart/utils/cartRelationForms.js +29 -35
  111. package/lib/modules/Cart/utils/cartResource.js +70 -78
  112. package/lib/modules/Cart/utils/changePrice.js +22 -50
  113. package/lib/modules/Cart/utils/index.js +106 -48
  114. package/lib/modules/Customer/constants.js +13 -34
  115. package/lib/modules/Customer/index.js +235 -172
  116. package/lib/modules/Customer/types.js +38 -35
  117. package/lib/modules/Date/index.js +116 -115
  118. package/lib/modules/Date/types.js +16 -28
  119. package/lib/modules/Date/utils.js +174 -123
  120. package/lib/modules/Discount/index.js +122 -127
  121. package/lib/modules/Discount/types.js +9 -31
  122. package/lib/modules/Guests/index.js +30 -56
  123. package/lib/modules/Guests/types.js +23 -33
  124. package/lib/modules/Holder/index.js +209 -189
  125. package/lib/modules/Holder/types.js +4 -16
  126. package/lib/modules/Holder/utils.js +20 -49
  127. package/lib/modules/OpenData/index.js +70 -76
  128. package/lib/modules/OpenData/types.js +4 -16
  129. package/lib/modules/OpenData/utils.js +44 -78
  130. package/lib/modules/Order/index.d.ts +1 -1
  131. package/lib/modules/Order/index.js +1728 -2123
  132. package/lib/modules/Order/payment-utils.js +77 -120
  133. package/lib/modules/Order/types.d.ts +3 -1
  134. package/lib/modules/Order/types.js +88 -35
  135. package/lib/modules/Order/utils/bundleDiscountHydration.js +41 -74
  136. package/lib/modules/Order/utils/discountProductLineIdentity.js +142 -100
  137. package/lib/modules/Order/utils/manualProductDiscount.js +124 -123
  138. package/lib/modules/Order/utils/orderCollectionIdentity.js +184 -244
  139. package/lib/modules/Order/utils.js +814 -647
  140. package/lib/modules/Payment/cash.js +20 -33
  141. package/lib/modules/Payment/cashRecommendationAlgorithm.js +145 -76
  142. package/lib/modules/Payment/eftpos.js +16 -30
  143. package/lib/modules/Payment/index.js +532 -399
  144. package/lib/modules/Payment/mx51.js +1 -0
  145. package/lib/modules/Payment/types.js +230 -108
  146. package/lib/modules/Payment/utils.js +52 -51
  147. package/lib/modules/Payment/walletpass.js +485 -660
  148. package/lib/modules/Product/index.js +51 -46
  149. package/lib/modules/Product/types.js +4 -16
  150. package/lib/modules/Product/utils.js +32 -33
  151. package/lib/modules/ProductList/index.js +119 -123
  152. package/lib/modules/ProductList/types.js +9 -31
  153. package/lib/modules/Quotation/index.js +66 -100
  154. package/lib/modules/Quotation/types.js +4 -16
  155. package/lib/modules/Resource/index.js +27 -59
  156. package/lib/modules/Resource/types.js +22 -32
  157. package/lib/modules/Resource/utils.js +30 -38
  158. package/lib/modules/ResourcePlanner/index.js +60 -61
  159. package/lib/modules/ResourcePlanner/planner.js +346 -384
  160. package/lib/modules/ResourcePlanner/types.js +4 -16
  161. package/lib/modules/Rules/index.js +1218 -959
  162. package/lib/modules/Rules/types.js +17 -40
  163. package/lib/modules/SalesSummary/index.js +85 -90
  164. package/lib/modules/SalesSummary/types.js +4 -16
  165. package/lib/modules/SalesSummary/utils.js +355 -430
  166. package/lib/modules/ScanOrderLogger/index.js +59 -79
  167. package/lib/modules/ScanOrderLogger/providers/feishu.js +54 -78
  168. package/lib/modules/ScanOrderLogger/providers/grafana.js +13 -36
  169. package/lib/modules/ScanOrderLogger/types.js +4 -16
  170. package/lib/modules/Schedule/getDateIsInSchedule.js +334 -163
  171. package/lib/modules/Schedule/index.js +100 -114
  172. package/lib/modules/Schedule/type.js +4 -16
  173. package/lib/modules/Schedule/types.js +4 -16
  174. package/lib/modules/Schedule/utils.js +433 -291
  175. package/lib/modules/Step/index.js +40 -52
  176. package/lib/modules/Step/tyeps.js +4 -16
  177. package/lib/modules/Summary/index.js +66 -71
  178. package/lib/modules/Summary/types.js +4 -16
  179. package/lib/modules/Summary/utils.js +773 -418
  180. package/lib/modules/SurchargeList/index.js +46 -60
  181. package/lib/modules/SurchargeList/types.js +4 -16
  182. package/lib/modules/index.js +245 -63
  183. package/lib/plugins/app.js +4 -16
  184. package/lib/plugins/index.js +36 -25
  185. package/lib/plugins/request.js +137 -126
  186. package/lib/plugins/shopStore.js +4 -16
  187. package/lib/plugins/user.js +4 -16
  188. package/lib/plugins/window.js +171 -179
  189. package/lib/server/index.js +3027 -2655
  190. package/lib/server/modules/floor-plan/index.js +102 -123
  191. package/lib/server/modules/floor-plan/types.js +15 -30
  192. package/lib/server/modules/index.js +106 -68
  193. package/lib/server/modules/menu/index.js +146 -122
  194. package/lib/server/modules/menu/types.js +18 -31
  195. package/lib/server/modules/order/index.js +758 -956
  196. package/lib/server/modules/order/types.js +122 -33
  197. package/lib/server/modules/order/utils/filterBookings.js +219 -194
  198. package/lib/server/modules/order/utils/filterOrders.js +118 -92
  199. package/lib/server/modules/payment/index.js +59 -83
  200. package/lib/server/modules/payment/types.js +4 -16
  201. package/lib/server/modules/products/index.js +575 -459
  202. package/lib/server/modules/products/types.js +44 -34
  203. package/lib/server/modules/quotation/index.js +137 -172
  204. package/lib/server/modules/quotation/types.js +21 -31
  205. package/lib/server/modules/resource/index.js +213 -184
  206. package/lib/server/modules/resource/types.js +42 -33
  207. package/lib/server/modules/schedule/index.js +135 -123
  208. package/lib/server/modules/schedule/types.js +14 -21
  209. package/lib/server/modules/schedule/utils.js +334 -163
  210. package/lib/server/types.js +4 -16
  211. package/lib/server/utils/index.js +25 -23
  212. package/lib/server/utils/product.js +196 -139
  213. package/lib/server/utils/schedule.js +34 -41
  214. package/lib/server/utils/small-ticket.js +479 -456
  215. package/lib/server/utils/time.js +40 -49
  216. package/lib/solution/BaseSales/index.js +1220 -1412
  217. package/lib/solution/BaseSales/types.js +42 -38
  218. package/lib/solution/BaseSales/utils/cartPromotion.js +650 -502
  219. package/lib/solution/BaseSales/utils/parseSalesResponse.js +85 -105
  220. package/lib/solution/BaseSales/utils/quotationPrice.js +56 -114
  221. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +108 -145
  222. package/lib/solution/BaseSales/utils.js +158 -143
  223. package/lib/solution/BookingByStep/index.d.ts +1 -1
  224. package/lib/solution/BookingByStep/index.js +1527 -1340
  225. package/lib/solution/BookingByStep/types.js +40 -99
  226. package/lib/solution/BookingByStep/utils/capacity.js +192 -160
  227. package/lib/solution/BookingByStep/utils/products.js +42 -52
  228. package/lib/solution/BookingByStep/utils/resources.js +527 -330
  229. package/lib/solution/BookingByStep/utils/stock.js +65 -44
  230. package/lib/solution/BookingByStep/utils/timeslots.js +129 -131
  231. package/lib/solution/BookingTicket/index.d.ts +6 -16
  232. package/lib/solution/BookingTicket/index.js +608 -517
  233. package/lib/solution/BookingTicket/types.js +99 -77
  234. package/lib/solution/BookingTicket/utils/addProductDecision.js +225 -187
  235. package/lib/solution/BookingTicket/utils/addTimeAvailability.js +58 -89
  236. package/lib/solution/BookingTicket/utils/bookingStatus.js +107 -78
  237. package/lib/solution/BookingTicket/utils/cartView.js +114 -99
  238. package/lib/solution/BookingTicket/utils/exampleData.js +185 -0
  239. package/lib/solution/BookingTicket/utils/orderCustomer.js +18 -41
  240. package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +219 -86
  241. package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +168 -116
  242. package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +79 -91
  243. package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +54 -41
  244. package/lib/solution/BookingTicket/utils/scan/handleScan.js +84 -81
  245. package/lib/solution/BookingTicket/utils/scan/index.js +98 -104
  246. package/lib/solution/BookingTicket/utils/scan/scanCache.js +90 -43
  247. package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +52 -64
  248. package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +56 -58
  249. package/lib/solution/BookingTicket/utils/weighingProductSku.js +34 -48
  250. package/lib/solution/BuyTickets/index.js +67 -70
  251. package/lib/solution/BuyTickets/types.js +22 -38
  252. package/lib/solution/Checkout/index.js +1451 -1158
  253. package/lib/solution/Checkout/types.js +91 -61
  254. package/lib/solution/Checkout/utils/index.js +228 -156
  255. package/lib/solution/PlaceOrder/index.js +55 -0
  256. package/lib/solution/RegisterAndLogin/config.js +493 -460
  257. package/lib/solution/RegisterAndLogin/index.js +633 -630
  258. package/lib/solution/RegisterAndLogin/types.js +189 -76
  259. package/lib/solution/RegisterAndLogin/utils.js +183 -125
  260. package/lib/solution/Sales/index.js +328 -324
  261. package/lib/solution/Sales/types.js +27 -33
  262. package/lib/solution/ScanOrder/index.js +832 -864
  263. package/lib/solution/ScanOrder/types.js +33 -34
  264. package/lib/solution/ScanOrder/utils.js +409 -374
  265. package/lib/solution/ShopDiscount/index.js +226 -232
  266. package/lib/solution/ShopDiscount/types.js +15 -37
  267. package/lib/solution/ShopDiscount/utils.js +300 -172
  268. package/lib/solution/UnifiedBookingSales/index.js +437 -487
  269. package/lib/solution/UnifiedBookingSales/types.js +12 -31
  270. package/lib/solution/VenueBooking/index.js +811 -879
  271. package/lib/solution/VenueBooking/types.js +19 -39
  272. package/lib/solution/VenueBooking/utils/dateSummary.js +27 -56
  273. package/lib/solution/VenueBooking/utils/resource.js +31 -54
  274. package/lib/solution/VenueBooking/utils/slotMerge.js +94 -107
  275. package/lib/solution/VenueBooking/utils/timeSlot.js +132 -132
  276. package/lib/solution/VenueBooking/utils.js +130 -67
  277. package/lib/solution/index.js +124 -41
  278. package/lib/store/createStore.js +32 -29
  279. package/lib/types/index.js +4 -16
  280. package/lib/utils/payment-number.js +26 -46
  281. package/lib/utils/task.js +36 -36
  282. package/lib/utils/watch.js +81 -47
  283. 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;