@pisell/private-materials 6.3.138 → 6.3.140

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 (329) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +2 -2
  6. package/build/lowcode/preview.js +153 -426
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +8 -8
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +10 -10
  11. package/es/businessModel/SalesModel/index.d.ts +0 -1
  12. package/es/components/authentication/admin/ChannelAuthSetting/OnlineShopAuth/index.js +24 -5
  13. package/es/components/authentication/admin/ChannelAuthSetting/index.js +1 -1
  14. package/es/components/booking/addons/model.d.ts +10 -1
  15. package/es/components/booking/components/TabProduct/selectProductItem/index.d.ts +1 -0
  16. package/es/components/booking/components/collapsibleList/utils.d.ts +1 -0
  17. package/es/components/booking/components/emptyBooking/index.d.ts +1 -0
  18. package/es/components/booking/components/footer/FooterMenus/index.d.ts +1 -0
  19. package/es/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  20. package/es/components/booking/components/reloadResourceModal/index.d.ts +1 -0
  21. package/es/components/booking/deposit/index.d.ts +0 -1
  22. package/es/components/booking/forms/model.d.ts +10 -1
  23. package/es/components/booking/forms/table/index.d.ts +1 -0
  24. package/es/components/booking/info/addServiceVariant/index.d.ts +0 -1
  25. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  26. package/es/components/booking/info/hooks/useInfoHolder.d.ts +0 -1
  27. package/es/components/booking/info/index.d.ts +0 -1
  28. package/es/components/booking/info/model.d.ts +10 -1
  29. package/es/components/booking/info/service/Lists.d.ts +0 -1
  30. package/es/components/booking/info/service/addService/index.d.ts +0 -1
  31. package/es/components/booking/info/service/addTimeModal/index.d.ts +0 -1
  32. package/es/components/booking/info/service/like/index.d.ts +1 -0
  33. package/es/components/booking/info/service/serviceList/index.d.ts +0 -1
  34. package/es/components/booking/info/service2/Lists.d.ts +0 -1
  35. package/es/components/booking/info2/service/addTimeModal/index.d.ts +0 -1
  36. package/es/components/booking/info2/service/serviceList/index.d.ts +0 -1
  37. package/es/components/booking/materiels/contacts/index.d.ts +1 -0
  38. package/es/components/booking/model.d.ts +9 -1
  39. package/es/components/booking/notes/NoteBlock/NoteItem/index.d.ts +1 -0
  40. package/es/components/booking/notes/model.d.ts +10 -1
  41. package/es/components/booking/payments/model.d.ts +10 -1
  42. package/es/components/booking/utils.d.ts +2 -2
  43. package/es/components/ecocup/components/CupInfoCard/index.d.ts +1 -0
  44. package/es/components/ecocup/components/CustomerCard/index.d.ts +1 -0
  45. package/es/components/eftpos/deviceList/index.d.ts +1 -0
  46. package/es/components/eftpos/form/index.d.ts +1 -0
  47. package/es/components/eftpos/group/index.d.ts +1 -0
  48. package/es/components/eftpos/icon/apiKey.d.ts +1 -0
  49. package/es/components/eftpos/icon/device.d.ts +1 -0
  50. package/es/components/eftpos/pos.d.ts +1 -0
  51. package/es/components/eftpos/receipt/index.d.ts +1 -0
  52. package/es/components/eftposPay/app.d.ts +0 -1
  53. package/es/components/eftposPay/component/alert/warn.d.ts +1 -0
  54. package/es/components/eftposPay/component/fail/failCustom.d.ts +0 -1
  55. package/es/components/eftposPay/component/fail/network.d.ts +1 -0
  56. package/es/components/eftposPay/component/fail/unknow.d.ts +1 -0
  57. package/es/components/eftposPay/component/header/titlebar.d.ts +1 -0
  58. package/es/components/eftposPay/component/signature/index.d.ts +1 -0
  59. package/es/components/eftposPay/component/step/index.d.ts +1 -0
  60. package/es/components/eftposPay/component/step/step.d.ts +1 -0
  61. package/es/components/eftposPay/device.d.ts +0 -1
  62. package/es/components/eftposPay/index.d.ts +0 -1
  63. package/es/components/eftposPay/linkly/index.d.ts +0 -1
  64. package/es/components/eftposPay/pay.d.ts +0 -1
  65. package/es/components/eftposPay/payo/config.d.ts +1 -0
  66. package/es/components/eftposPay/tip.d.ts +1 -0
  67. package/es/components/eftposPay/tyro/hooks.d.ts +1 -0
  68. package/es/components/eftposPay/windcave/receiptAction.d.ts +1 -0
  69. package/es/components/eftposPay/windcave/windcave.d.ts +1 -0
  70. package/es/components/eventBooking/components/Provider/Content/index.d.ts +0 -1
  71. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  72. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  73. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  74. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  75. package/es/components/eventBooking/components/scheduleCalendar/ProductItem/index.d.ts +1 -0
  76. package/es/components/eventBooking/index.d.ts +0 -1
  77. package/es/components/login/index.d.ts +1 -0
  78. package/es/components/pay/toC/PaymentMethods/MWCreditCard/tds2.js +7 -5
  79. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  80. package/es/components/pay/toC/model.d.ts +9 -1
  81. package/es/components/pisellSelectCustomerModal/RightPanel/Add/BirthdayField/index.d.ts +1 -0
  82. package/es/components/pisellSelectCustomerModal/RightPanel/Add/GenderField/index.d.ts +1 -0
  83. package/es/components/pisellSelectCustomerModal/RightPanel/Add/PhoneField/index.d.ts +0 -1
  84. package/es/components/pisellSelectCustomerModal/RightPanel/index.d.ts +0 -1
  85. package/es/components/productExtension/fields/SelectProducts/ProductItemPreview/index.d.ts +1 -0
  86. package/es/components/productExtension/index.d.ts +0 -1
  87. package/es/components/ruleSetting/index.d.ts +0 -1
  88. package/es/components/ruleSetting/ruleBorder/index.d.ts +1 -0
  89. package/es/components/scanOrder/components/Cart/index.d.ts +2 -0
  90. package/es/components/scanOrder/components/Cart/index.js +181 -76
  91. package/es/components/scanOrder/components/Cart/index.less +72 -13
  92. package/es/components/scanOrder/components/Check/index.js +261 -75
  93. package/es/components/scanOrder/components/Check/index.less +30 -0
  94. package/es/components/scanOrder/components/Content/index.js +382 -144
  95. package/es/components/scanOrder/components/Footer/index.d.ts +2 -0
  96. package/es/components/scanOrder/components/Footer/index.js +4 -2
  97. package/es/components/scanOrder/components/Footer/index.less +16 -7
  98. package/es/components/scanOrder/components/FulfillmentMode/index.d.ts +11 -0
  99. package/es/components/scanOrder/components/FulfillmentMode/index.js +90 -0
  100. package/es/components/scanOrder/components/FulfillmentMode/index.less +40 -0
  101. package/es/components/scanOrder/components/ManualPickupRefModal/index.d.ts +16 -0
  102. package/es/components/scanOrder/components/ManualPickupRefModal/index.js +87 -0
  103. package/es/components/scanOrder/components/ManualPickupRefModal/index.less +61 -0
  104. package/es/components/scanOrder/components/Menu/index.d.ts +11 -0
  105. package/es/components/scanOrder/components/Menu/index.js +140 -169
  106. package/es/components/scanOrder/components/Voucher/index.d.ts +8 -0
  107. package/es/components/scanOrder/components/Voucher/index.js +250 -0
  108. package/es/components/scanOrder/context.js +123 -3
  109. package/es/components/scanOrder/hooks.js +4 -1
  110. package/es/components/scanOrder/locales.d.ts +120 -0
  111. package/es/components/scanOrder/locales.js +120 -0
  112. package/es/components/scanOrder/types.d.ts +33 -0
  113. package/es/components/scanOrder/utils/toShoppingCartProducts.d.ts +1 -0
  114. package/es/components/scanOrder/utils/toShoppingCartProducts.js +137 -9
  115. package/es/components/scanOrder/utils/transformProductDetail.js +21 -4
  116. package/es/components/schedules/calendar/calendarItem.d.ts +1 -0
  117. package/es/components/schedules/calendar/index.d.ts +1 -0
  118. package/es/components/schedules/components/CurrentDay/index.d.ts +1 -0
  119. package/es/components/schedules/components/ScheduleDetailList/index.d.ts +1 -0
  120. package/es/components/schedules/components/ScheduleList/index.d.ts +1 -0
  121. package/es/components/schedules/model.d.ts +9 -1
  122. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.d.ts +1 -0
  123. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.d.ts +1 -0
  124. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  125. package/es/components/schedules/products/ProductDetailDrawer/ProductDetailByDate/index.d.ts +1 -0
  126. package/es/components/schedules/products/ProductDetailDrawer/index.d.ts +1 -0
  127. package/es/components/schedules/products/index.d.ts +1 -0
  128. package/es/components/schedules/products/list/ProductItem/index.d.ts +1 -0
  129. package/es/components/schedules/products/list/index.d.ts +1 -0
  130. package/es/components/schedules/resources/index.d.ts +1 -0
  131. package/es/components/schedules/resources/list/index.d.ts +1 -0
  132. package/es/components/schedules/resources/relationProduct/index.d.ts +1 -0
  133. package/es/components/schedules/schedules/AllSchedules/index.d.ts +1 -0
  134. package/es/components/schedules/schedules/ScheduleDetailDrawer/index.d.ts +1 -0
  135. package/es/components/schedules/schedules/index.d.ts +1 -0
  136. package/es/components/systemSettings/registry/components/GroupModal.js +8 -1
  137. package/es/components/systemSettings/registry/components/ItemModal.js +3 -0
  138. package/es/components/systemSettings/registry/index.js +3 -1
  139. package/es/components/systemSettings/registry/services.d.ts +2 -0
  140. package/es/components/systemSettings/registry/types.d.ts +3 -0
  141. package/es/components/ticketBooking/components/addServiceVariant/index.d.ts +0 -1
  142. package/es/components/venueBooking/components/Addons/index.js +42 -33
  143. package/es/components/venueBooking/components/Cart/index.js +26 -14
  144. package/es/components/venueBooking/components/VenueSelection/components/TimeGrid.js +129 -17
  145. package/es/components/venueBooking/context.js +6 -6
  146. package/es/components/venueBooking/hooks.d.ts +16 -3
  147. package/es/components/venueBooking/hooks.js +16 -4
  148. package/es/components/venueBooking/types.d.ts +19 -2
  149. package/es/hooks/usePaymentLogger.d.ts +1 -0
  150. package/es/index.d.ts +1 -1
  151. package/es/index.js +1 -1
  152. package/es/plus/clientName/index.d.ts +1 -0
  153. package/es/plus/clinetSearch/Add/BirthdayField/index.d.ts +1 -0
  154. package/es/plus/clinetSearch/Add/GenderField/index.d.ts +1 -0
  155. package/es/plus/pisellReservation/floorRoomCard/views/RoomCardIcons.d.ts +1 -0
  156. package/es/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +1 -0
  157. package/es/plus/saasCreateOrganization/components/Header.d.ts +1 -0
  158. package/es/plus/saasRegister/components/EntryEmail.d.ts +1 -0
  159. package/es/plus/saasRegister/components/EntryInfo.d.ts +1 -0
  160. package/es/plus/saasRegister/components/GoLogin.d.ts +1 -0
  161. package/es/plus/saasRegister/components/Header.d.ts +1 -0
  162. package/es/plus/saasRegister/components/VerifyError.d.ts +1 -0
  163. package/es/plus/saasRegister/components/VerifyingLink.d.ts +1 -0
  164. package/es/plus/skuOptionsSelection/components/NormalCard/index.d.ts +1 -0
  165. package/es/plus/skuOptionsSelection/components/TitleExtra/index.d.ts +1 -0
  166. package/es/plus/skuOptionsSelection/components/VariantCard/index.d.ts +1 -0
  167. package/es/plus/walletEditor/components/relationProduct/index.d.ts +1 -0
  168. package/es/pro/Selector/demo.d.ts +1 -0
  169. package/lib/businessModel/SalesModel/index.d.ts +0 -1
  170. package/lib/components/authentication/admin/ChannelAuthSetting/OnlineShopAuth/index.js +19 -4
  171. package/lib/components/authentication/admin/ChannelAuthSetting/index.js +1 -1
  172. package/lib/components/booking/addons/model.d.ts +10 -1
  173. package/lib/components/booking/components/TabProduct/selectProductItem/index.d.ts +1 -0
  174. package/lib/components/booking/components/collapsibleList/utils.d.ts +1 -0
  175. package/lib/components/booking/components/emptyBooking/index.d.ts +1 -0
  176. package/lib/components/booking/components/footer/FooterMenus/index.d.ts +1 -0
  177. package/lib/components/booking/components/formItemChildrenWrap/index.d.ts +1 -0
  178. package/lib/components/booking/components/reloadResourceModal/index.d.ts +1 -0
  179. package/lib/components/booking/deposit/index.d.ts +0 -1
  180. package/lib/components/booking/forms/model.d.ts +10 -1
  181. package/lib/components/booking/forms/table/index.d.ts +1 -0
  182. package/lib/components/booking/info/addServiceVariant/index.d.ts +0 -1
  183. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  184. package/lib/components/booking/info/hooks/useInfoHolder.d.ts +0 -1
  185. package/lib/components/booking/info/index.d.ts +0 -1
  186. package/lib/components/booking/info/model.d.ts +10 -1
  187. package/lib/components/booking/info/service/Lists.d.ts +0 -1
  188. package/lib/components/booking/info/service/addService/index.d.ts +0 -1
  189. package/lib/components/booking/info/service/addTimeModal/index.d.ts +0 -1
  190. package/lib/components/booking/info/service/like/index.d.ts +1 -0
  191. package/lib/components/booking/info/service/serviceList/index.d.ts +0 -1
  192. package/lib/components/booking/info/service2/Lists.d.ts +0 -1
  193. package/lib/components/booking/info2/service/addTimeModal/index.d.ts +0 -1
  194. package/lib/components/booking/info2/service/serviceList/index.d.ts +0 -1
  195. package/lib/components/booking/materiels/contacts/index.d.ts +1 -0
  196. package/lib/components/booking/model.d.ts +9 -1
  197. package/lib/components/booking/notes/NoteBlock/NoteItem/index.d.ts +1 -0
  198. package/lib/components/booking/notes/model.d.ts +10 -1
  199. package/lib/components/booking/payments/model.d.ts +10 -1
  200. package/lib/components/booking/utils.d.ts +2 -2
  201. package/lib/components/ecocup/components/CupInfoCard/index.d.ts +1 -0
  202. package/lib/components/ecocup/components/CustomerCard/index.d.ts +1 -0
  203. package/lib/components/eftpos/deviceList/index.d.ts +1 -0
  204. package/lib/components/eftpos/form/index.d.ts +1 -0
  205. package/lib/components/eftpos/group/index.d.ts +1 -0
  206. package/lib/components/eftpos/icon/apiKey.d.ts +1 -0
  207. package/lib/components/eftpos/icon/device.d.ts +1 -0
  208. package/lib/components/eftpos/pos.d.ts +1 -0
  209. package/lib/components/eftpos/receipt/index.d.ts +1 -0
  210. package/lib/components/eftposPay/app.d.ts +0 -1
  211. package/lib/components/eftposPay/component/alert/warn.d.ts +1 -0
  212. package/lib/components/eftposPay/component/fail/failCustom.d.ts +0 -1
  213. package/lib/components/eftposPay/component/fail/network.d.ts +1 -0
  214. package/lib/components/eftposPay/component/fail/unknow.d.ts +1 -0
  215. package/lib/components/eftposPay/component/header/titlebar.d.ts +1 -0
  216. package/lib/components/eftposPay/component/signature/index.d.ts +1 -0
  217. package/lib/components/eftposPay/component/step/index.d.ts +1 -0
  218. package/lib/components/eftposPay/component/step/step.d.ts +1 -0
  219. package/lib/components/eftposPay/device.d.ts +0 -1
  220. package/lib/components/eftposPay/index.d.ts +0 -1
  221. package/lib/components/eftposPay/linkly/index.d.ts +0 -1
  222. package/lib/components/eftposPay/pay.d.ts +0 -1
  223. package/lib/components/eftposPay/payo/config.d.ts +1 -0
  224. package/lib/components/eftposPay/tip.d.ts +1 -0
  225. package/lib/components/eftposPay/tyro/hooks.d.ts +1 -0
  226. package/lib/components/eftposPay/windcave/receiptAction.d.ts +1 -0
  227. package/lib/components/eftposPay/windcave/windcave.d.ts +1 -0
  228. package/lib/components/eventBooking/components/Provider/Content/index.d.ts +0 -1
  229. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  230. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  231. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  232. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  233. package/lib/components/eventBooking/components/scheduleCalendar/ProductItem/index.d.ts +1 -0
  234. package/lib/components/eventBooking/index.d.ts +0 -1
  235. package/lib/components/login/index.d.ts +1 -0
  236. package/lib/components/pay/toC/PaymentMethods/MWCreditCard/tds2.js +2 -0
  237. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  238. package/lib/components/pay/toC/model.d.ts +9 -1
  239. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/BirthdayField/index.d.ts +1 -0
  240. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/GenderField/index.d.ts +1 -0
  241. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/PhoneField/index.d.ts +0 -1
  242. package/lib/components/pisellSelectCustomerModal/RightPanel/index.d.ts +0 -1
  243. package/lib/components/productExtension/fields/SelectProducts/ProductItemPreview/index.d.ts +1 -0
  244. package/lib/components/productExtension/index.d.ts +0 -1
  245. package/lib/components/ruleSetting/index.d.ts +0 -1
  246. package/lib/components/ruleSetting/ruleBorder/index.d.ts +1 -0
  247. package/lib/components/scanOrder/components/Cart/index.d.ts +2 -0
  248. package/lib/components/scanOrder/components/Cart/index.js +117 -28
  249. package/lib/components/scanOrder/components/Cart/index.less +72 -13
  250. package/lib/components/scanOrder/components/Check/index.js +109 -15
  251. package/lib/components/scanOrder/components/Check/index.less +30 -0
  252. package/lib/components/scanOrder/components/Content/index.js +175 -48
  253. package/lib/components/scanOrder/components/Footer/index.d.ts +2 -0
  254. package/lib/components/scanOrder/components/Footer/index.js +2 -2
  255. package/lib/components/scanOrder/components/Footer/index.less +16 -7
  256. package/lib/components/scanOrder/components/FulfillmentMode/index.d.ts +11 -0
  257. package/lib/components/scanOrder/components/FulfillmentMode/index.js +96 -0
  258. package/lib/components/scanOrder/components/FulfillmentMode/index.less +40 -0
  259. package/lib/components/scanOrder/components/ManualPickupRefModal/index.d.ts +16 -0
  260. package/lib/components/scanOrder/components/ManualPickupRefModal/index.js +116 -0
  261. package/lib/components/scanOrder/components/ManualPickupRefModal/index.less +61 -0
  262. package/lib/components/scanOrder/components/Menu/index.d.ts +11 -0
  263. package/lib/components/scanOrder/components/Menu/index.js +23 -36
  264. package/lib/components/scanOrder/components/Voucher/index.d.ts +8 -0
  265. package/lib/components/scanOrder/components/Voucher/index.js +162 -0
  266. package/lib/components/scanOrder/context.js +91 -2
  267. package/lib/components/scanOrder/hooks.js +4 -1
  268. package/lib/components/scanOrder/locales.d.ts +120 -0
  269. package/lib/components/scanOrder/locales.js +120 -0
  270. package/lib/components/scanOrder/types.d.ts +33 -0
  271. package/lib/components/scanOrder/utils/toShoppingCartProducts.d.ts +1 -0
  272. package/lib/components/scanOrder/utils/toShoppingCartProducts.js +88 -6
  273. package/lib/components/scanOrder/utils/transformProductDetail.js +10 -3
  274. package/lib/components/schedules/calendar/calendarItem.d.ts +1 -0
  275. package/lib/components/schedules/calendar/index.d.ts +1 -0
  276. package/lib/components/schedules/components/CurrentDay/index.d.ts +1 -0
  277. package/lib/components/schedules/components/ScheduleDetailList/index.d.ts +1 -0
  278. package/lib/components/schedules/components/ScheduleList/index.d.ts +1 -0
  279. package/lib/components/schedules/model.d.ts +9 -1
  280. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.d.ts +1 -0
  281. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.d.ts +1 -0
  282. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  283. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetailByDate/index.d.ts +1 -0
  284. package/lib/components/schedules/products/ProductDetailDrawer/index.d.ts +1 -0
  285. package/lib/components/schedules/products/index.d.ts +1 -0
  286. package/lib/components/schedules/products/list/ProductItem/index.d.ts +1 -0
  287. package/lib/components/schedules/products/list/index.d.ts +1 -0
  288. package/lib/components/schedules/resources/index.d.ts +1 -0
  289. package/lib/components/schedules/resources/list/index.d.ts +1 -0
  290. package/lib/components/schedules/resources/relationProduct/index.d.ts +1 -0
  291. package/lib/components/schedules/schedules/AllSchedules/index.d.ts +1 -0
  292. package/lib/components/schedules/schedules/ScheduleDetailDrawer/index.d.ts +1 -0
  293. package/lib/components/schedules/schedules/index.d.ts +1 -0
  294. package/lib/components/systemSettings/registry/components/GroupModal.js +71 -72
  295. package/lib/components/systemSettings/registry/components/ItemModal.js +2 -1
  296. package/lib/components/systemSettings/registry/index.js +3 -1
  297. package/lib/components/systemSettings/registry/services.d.ts +2 -0
  298. package/lib/components/systemSettings/registry/types.d.ts +3 -0
  299. package/lib/components/ticketBooking/components/addServiceVariant/index.d.ts +0 -1
  300. package/lib/components/venueBooking/components/Addons/index.js +15 -8
  301. package/lib/components/venueBooking/components/Cart/index.js +8 -2
  302. package/lib/components/venueBooking/components/VenueSelection/components/TimeGrid.js +118 -18
  303. package/lib/components/venueBooking/context.js +2 -1
  304. package/lib/components/venueBooking/hooks.d.ts +16 -3
  305. package/lib/components/venueBooking/hooks.js +8 -2
  306. package/lib/components/venueBooking/types.d.ts +19 -2
  307. package/lib/hooks/usePaymentLogger.d.ts +1 -0
  308. package/lib/index.d.ts +1 -1
  309. package/lib/index.js +2 -0
  310. package/lib/plus/clientName/index.d.ts +1 -0
  311. package/lib/plus/clinetSearch/Add/BirthdayField/index.d.ts +1 -0
  312. package/lib/plus/clinetSearch/Add/GenderField/index.d.ts +1 -0
  313. package/lib/plus/pisellReservation/floorRoomCard/views/RoomCardIcons.d.ts +1 -0
  314. package/lib/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +1 -0
  315. package/lib/plus/saasCreateOrganization/components/Header.d.ts +1 -0
  316. package/lib/plus/saasRegister/components/EntryEmail.d.ts +1 -0
  317. package/lib/plus/saasRegister/components/EntryInfo.d.ts +1 -0
  318. package/lib/plus/saasRegister/components/GoLogin.d.ts +1 -0
  319. package/lib/plus/saasRegister/components/Header.d.ts +1 -0
  320. package/lib/plus/saasRegister/components/VerifyError.d.ts +1 -0
  321. package/lib/plus/saasRegister/components/VerifyingLink.d.ts +1 -0
  322. package/lib/plus/skuOptionsSelection/components/NormalCard/index.d.ts +1 -0
  323. package/lib/plus/skuOptionsSelection/components/TitleExtra/index.d.ts +1 -0
  324. package/lib/plus/skuOptionsSelection/components/VariantCard/index.d.ts +1 -0
  325. package/lib/plus/walletEditor/components/relationProduct/index.d.ts +1 -0
  326. package/lib/pro/Selector/demo.d.ts +1 -0
  327. package/lowcode/admin-auth-channel-auth/meta.ts +116 -0
  328. package/lowcode/admin-auth-online-shop-auth/meta.ts +81 -5
  329. package/package.json +1 -1
@@ -821,6 +821,7 @@ var Registry = function Registry(_ref) {
821
821
  section_code: currentSection.code,
822
822
  code: formData.code,
823
823
  title: formData.title,
824
+ description: formData === null || formData === void 0 ? void 0 : formData.description,
824
825
  sort: newSort
825
826
  });
826
827
  case 10:
@@ -838,7 +839,8 @@ var Registry = function Registry(_ref) {
838
839
  return handleUpdateGroup({
839
840
  id: editingGroup.id,
840
841
  code: formData.code,
841
- title: formData.title
842
+ title: formData.title,
843
+ description: formData === null || formData === void 0 ? void 0 : formData.description
842
844
  });
843
845
  case 17:
844
846
  // 只有在保存成功后才关闭模态框
@@ -4,11 +4,13 @@ export interface CreateGroupParams {
4
4
  code: string;
5
5
  title: MultiLanguageText;
6
6
  sort: number;
7
+ description?: MultiLanguageText;
7
8
  }
8
9
  export interface UpdateGroupParams {
9
10
  id: number;
10
11
  code: string;
11
12
  title: MultiLanguageText;
13
+ description?: MultiLanguageText;
12
14
  }
13
15
  export interface DeleteGroupParams {
14
16
  id: number;
@@ -36,6 +36,8 @@ export interface SettingGroup extends BaseItem {
36
36
  items: SettingItem[];
37
37
  expanded?: boolean;
38
38
  sort: number;
39
+ description?: MultiLanguageText;
40
+ title?: MultiLanguageText;
39
41
  }
40
42
  export interface Section extends BaseItem {
41
43
  icon?: string;
@@ -90,6 +92,7 @@ export interface SettingsTableProps {
90
92
  export interface GroupFormData {
91
93
  title: MultiLanguageText;
92
94
  code: string;
95
+ description?: MultiLanguageText;
93
96
  }
94
97
  export interface ItemFormData {
95
98
  name: MultiLanguageText;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  interface AddServiceVariantProps {
3
2
  globalState: any;
4
3
  setGlobalState: any;
@@ -131,17 +131,19 @@ export default function Addons() {
131
131
  // ── 从订单移除商品 ──
132
132
  var removeOrderProduct = /*#__PURE__*/function () {
133
133
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(params) {
134
- var product_id, product_variant_id, sourceData;
134
+ var product_id, product_variant_id, identity_key, sourceData;
135
135
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
136
136
  while (1) switch (_context3.prev = _context3.next) {
137
137
  case 0:
138
- product_id = params.product_id, product_variant_id = params.product_variant_id, sourceData = params.sourceData;
138
+ product_id = params.product_id, product_variant_id = params.product_variant_id, identity_key = params.identity_key, sourceData = params.sourceData;
139
139
  _context3.prev = 1;
140
140
  _context3.next = 4;
141
- return runModuleAction('removeProductFromOrder', {
141
+ return runModuleAction('removeProductFromOrder', _objectSpread({
142
142
  product_id: product_id,
143
143
  product_variant_id: product_variant_id
144
- });
144
+ }, identity_key ? {
145
+ identity_key: identity_key
146
+ } : {}));
145
147
  case 4:
146
148
  _context3.next = 6;
147
149
  return refreshViewModel();
@@ -155,7 +157,8 @@ export default function Addons() {
155
157
  error: _context3.t0,
156
158
  sourceData: sourceData,
157
159
  product_id: product_id,
158
- product_variant_id: product_variant_id
160
+ product_variant_id: product_variant_id,
161
+ identity_key: identity_key
159
162
  });
160
163
  case 11:
161
164
  case "end":
@@ -171,18 +174,21 @@ export default function Addons() {
171
174
  // ── 更新订单中商品数量 ──
172
175
  var updateOrderProduct = /*#__PURE__*/function () {
173
176
  var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(params) {
174
- var product_id, product_variant_id, updates, sourceData;
177
+ var product_id, product_variant_id, identity_key, updates, sourceData;
175
178
  return _regeneratorRuntime().wrap(function _callee4$(_context4) {
176
179
  while (1) switch (_context4.prev = _context4.next) {
177
180
  case 0:
178
- product_id = params.product_id, product_variant_id = params.product_variant_id, updates = params.updates, sourceData = params.sourceData;
181
+ product_id = params.product_id, product_variant_id = params.product_variant_id, identity_key = params.identity_key, updates = params.updates, sourceData = params.sourceData;
179
182
  _context4.prev = 1;
180
183
  _context4.next = 4;
181
- return runModuleAction('updateProductInOrder', {
184
+ return runModuleAction('updateProductInOrder', _objectSpread(_objectSpread({
182
185
  product_id: product_id,
183
- product_variant_id: product_variant_id,
186
+ product_variant_id: product_variant_id
187
+ }, identity_key ? {
188
+ identity_key: identity_key
189
+ } : {}), {}, {
184
190
  updates: updates
185
- });
191
+ }));
186
192
  case 4:
187
193
  _context4.next = 6;
188
194
  return refreshViewModel();
@@ -197,6 +203,7 @@ export default function Addons() {
197
203
  sourceData: sourceData,
198
204
  product_id: product_id,
199
205
  product_variant_id: product_variant_id,
206
+ identity_key: identity_key,
200
207
  updates: updates
201
208
  });
202
209
  case 11:
@@ -218,13 +225,13 @@ export default function Addons() {
218
225
  */
219
226
  var handleSelectProduct = /*#__PURE__*/function () {
220
227
  var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(item, clickType, meta) {
221
- var sourceItem, _item$option, _item$bundle, _item$price, _item$product_id, _ref7, _meta$quantity, _orderProduct$product, _orderProduct$product4, quantityData, orderProduct, nextQuantity, productVariantId, normalizedQuantity, _orderProduct$product2, cartItems, existedCartItem;
228
+ var sourceItem, _item$option, _item$bundle, _item$price, _item$product_id, _ref7, _meta$quantity, _orderProduct$product, _orderProduct$product4, quantityData, orderProduct, nextQuantity, productVariantId, normalizedQuantity, cartItems, existedCartItem, existedIdentityKey, _orderProduct$product3;
222
229
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
223
230
  while (1) switch (_context6.prev = _context6.next) {
224
231
  case 0:
225
232
  sourceItem = (meta === null || meta === void 0 ? void 0 : meta.product) || item;
226
233
  if (!((meta === null || meta === void 0 ? void 0 : meta.intent) === 'quantity')) {
227
- _context6.next = 27;
234
+ _context6.next = 28;
228
235
  break;
229
236
  }
230
237
  // ── 数量变更模式 ──
@@ -259,54 +266,56 @@ export default function Addons() {
259
266
  });
260
267
  return _context6.abrupt("return");
261
268
  case 12:
262
- normalizedQuantity = Number.isNaN(nextQuantity) ? 0 : Math.max(0, Math.floor(nextQuantity)); // 数量为 0 → 移除商品
269
+ normalizedQuantity = Number.isNaN(nextQuantity) ? 0 : Math.max(0, Math.floor(nextQuantity)); // 检查购物车中是否已存在该商品(优先取 SDK 回灌的 identity_key 做精确删改)
270
+ cartItems = Array.isArray(viewModel === null || viewModel === void 0 ? void 0 : viewModel.cartItems) ? viewModel.cartItems : [];
271
+ existedCartItem = cartItems.find(function (cartItem) {
272
+ var _cartItem$product_id, _orderProduct$product2, _cartItem$product_var;
273
+ return String((_cartItem$product_id = cartItem === null || cartItem === void 0 ? void 0 : cartItem.product_id) !== null && _cartItem$product_id !== void 0 ? _cartItem$product_id : null) === String((_orderProduct$product2 = orderProduct === null || orderProduct === void 0 ? void 0 : orderProduct.product_id) !== null && _orderProduct$product2 !== void 0 ? _orderProduct$product2 : null) && Number((_cartItem$product_var = cartItem === null || cartItem === void 0 ? void 0 : cartItem.product_variant_id) !== null && _cartItem$product_var !== void 0 ? _cartItem$product_var : 0) === productVariantId;
274
+ });
275
+ existedIdentityKey = typeof (existedCartItem === null || existedCartItem === void 0 ? void 0 : existedCartItem.identity_key) === 'string' && existedCartItem.identity_key.length > 0 ? existedCartItem.identity_key : undefined; // 数量为 0 → 移除商品
263
276
  if (!(normalizedQuantity <= 0)) {
264
- _context6.next = 17;
277
+ _context6.next = 20;
265
278
  break;
266
279
  }
267
- _context6.next = 16;
280
+ _context6.next = 19;
268
281
  return removeOrderProduct({
269
- product_id: (_orderProduct$product2 = orderProduct === null || orderProduct === void 0 ? void 0 : orderProduct.product_id) !== null && _orderProduct$product2 !== void 0 ? _orderProduct$product2 : null,
282
+ product_id: (_orderProduct$product3 = orderProduct === null || orderProduct === void 0 ? void 0 : orderProduct.product_id) !== null && _orderProduct$product3 !== void 0 ? _orderProduct$product3 : null,
270
283
  product_variant_id: productVariantId,
284
+ identity_key: existedIdentityKey,
271
285
  sourceData: quantityData
272
286
  });
273
- case 16:
287
+ case 19:
274
288
  return _context6.abrupt("return");
275
- case 17:
276
- // 检查购物车中是否已存在该商品
277
- cartItems = Array.isArray(viewModel === null || viewModel === void 0 ? void 0 : viewModel.cartItems) ? viewModel.cartItems : [];
278
- existedCartItem = cartItems.find(function (cartItem) {
279
- var _cartItem$product_id, _orderProduct$product3, _cartItem$product_var;
280
- return String((_cartItem$product_id = cartItem === null || cartItem === void 0 ? void 0 : cartItem.product_id) !== null && _cartItem$product_id !== void 0 ? _cartItem$product_id : null) === String((_orderProduct$product3 = orderProduct === null || orderProduct === void 0 ? void 0 : orderProduct.product_id) !== null && _orderProduct$product3 !== void 0 ? _orderProduct$product3 : null) && Number((_cartItem$product_var = cartItem === null || cartItem === void 0 ? void 0 : cartItem.product_variant_id) !== null && _cartItem$product_var !== void 0 ? _cartItem$product_var : 0) === productVariantId;
281
- }); // 不存在 → 新增;已存在 → 更新数量
289
+ case 20:
282
290
  if (existedCartItem) {
283
- _context6.next = 23;
291
+ _context6.next = 24;
284
292
  break;
285
293
  }
286
- _context6.next = 22;
294
+ _context6.next = 23;
287
295
  return addOrderProduct({
288
296
  orderProduct: _objectSpread(_objectSpread({}, orderProduct), {}, {
289
297
  num: normalizedQuantity
290
298
  }),
291
299
  sourceData: quantityData
292
300
  });
293
- case 22:
294
- return _context6.abrupt("return");
295
301
  case 23:
296
- _context6.next = 25;
302
+ return _context6.abrupt("return");
303
+ case 24:
304
+ _context6.next = 26;
297
305
  return updateOrderProduct({
298
306
  product_id: (_orderProduct$product4 = orderProduct === null || orderProduct === void 0 ? void 0 : orderProduct.product_id) !== null && _orderProduct$product4 !== void 0 ? _orderProduct$product4 : null,
299
307
  product_variant_id: productVariantId,
308
+ identity_key: existedIdentityKey,
300
309
  updates: {
301
310
  num: normalizedQuantity,
302
311
  _origin: orderProduct === null || orderProduct === void 0 ? void 0 : orderProduct._origin
303
312
  },
304
313
  sourceData: quantityData
305
314
  });
306
- case 25:
307
- _context6.next = 28;
315
+ case 26:
316
+ _context6.next = 29;
308
317
  break;
309
- case 27:
318
+ case 28:
310
319
  // ── 打开商品详情弹窗 ──
311
320
  utils === null || utils === void 0 || utils.action({
312
321
  type: 'pisell1.productDetail',
@@ -362,7 +371,7 @@ export default function Addons() {
362
371
  return callback;
363
372
  }()
364
373
  });
365
- case 28:
374
+ case 29:
366
375
  case "end":
367
376
  return _context6.stop();
368
377
  }
@@ -147,7 +147,10 @@ export default function Cart(props) {
147
147
  var isVenueBookingCartItem = function isVenueBookingCartItem(target) {
148
148
  if (!target || _typeof(target) !== 'object') return false;
149
149
  if (target !== null && target !== void 0 && target.start_date && target !== null && target !== void 0 && target.end_date) return true;
150
- var identity = String((target === null || target === void 0 ? void 0 : target.identity_key) || (target === null || target === void 0 ? void 0 : target.rowKey) || (target === null || target === void 0 ? void 0 : target._id) || '');
150
+
151
+ // 不透明 identity 契约下,venueBooking 行的 identity_key 形如 `venue:<resourceId>:<groupIndex>:<uuid>`,
152
+ // 仅依据 SDK 回灌的 identity_key 判断;不再回退 rowKey / _id。
153
+ var identity = String((target === null || target === void 0 ? void 0 : target.identity_key) || '');
151
154
  if (identity.startsWith('venue:')) return true;
152
155
  return false;
153
156
  };
@@ -176,39 +179,48 @@ export default function Cart(props) {
176
179
  return _context.abrupt("return");
177
180
  case 6:
178
181
  productId = (_ref6 = (_targetItem$product_i = targetItem === null || targetItem === void 0 ? void 0 : targetItem.product_id) !== null && _targetItem$product_i !== void 0 ? _targetItem$product_i : targetItem === null || targetItem === void 0 ? void 0 : targetItem.id) !== null && _ref6 !== void 0 ? _ref6 : null;
179
- productVariantId = Number((_targetItem$product_v = targetItem === null || targetItem === void 0 ? void 0 : targetItem.product_variant_id) !== null && _targetItem$product_v !== void 0 ? _targetItem$product_v : 0);
180
- identityKey = (targetItem === null || targetItem === void 0 ? void 0 : targetItem.identity_key) || (targetItem === null || targetItem === void 0 ? void 0 : targetItem.rowKey) || undefined;
182
+ productVariantId = Number((_targetItem$product_v = targetItem === null || targetItem === void 0 ? void 0 : targetItem.product_variant_id) !== null && _targetItem$product_v !== void 0 ? _targetItem$product_v : 0); // 不透明 identity 契约:删除只信任 SDK 回灌的 identity_key,禁用 rowKey 回退。
183
+ identityKey = targetItem === null || targetItem === void 0 ? void 0 : targetItem.identity_key;
181
184
  if (!(productId === null && Number.isNaN(productVariantId))) {
182
185
  _context.next = 11;
183
186
  break;
184
187
  }
185
188
  return _context.abrupt("return");
186
189
  case 11:
187
- _context.prev = 11;
188
- _context.next = 14;
190
+ if (!(typeof identityKey !== 'string' || identityKey.length === 0)) {
191
+ _context.next = 14;
192
+ break;
193
+ }
194
+ console.error('[venueBooking] removeProductFromOrder skipped: missing identity_key', {
195
+ item: targetItem
196
+ });
197
+ return _context.abrupt("return");
198
+ case 14:
199
+ _context.prev = 14;
200
+ _context.next = 17;
189
201
  return runModuleAction('removeProductFromOrder', {
190
202
  product_id: productId,
191
203
  product_variant_id: Number.isNaN(productVariantId) ? 0 : productVariantId,
192
204
  identity_key: identityKey
193
205
  });
194
- case 14:
195
- _context.next = 16;
206
+ case 17:
207
+ _context.next = 19;
196
208
  return refreshViewModel();
197
- case 16:
198
- _context.next = 21;
209
+ case 19:
210
+ _context.next = 24;
199
211
  break;
200
- case 18:
201
- _context.prev = 18;
202
- _context.t0 = _context["catch"](11);
212
+ case 21:
213
+ _context.prev = 21;
214
+ _context.t0 = _context["catch"](14);
203
215
  console.error('[venueBooking] removeProductFromOrder failed', {
204
216
  error: _context.t0,
205
217
  item: targetItem
206
218
  });
207
- case 21:
219
+ case 24:
208
220
  case "end":
209
221
  return _context.stop();
210
222
  }
211
- }, _callee, null, [[11, 18]]);
223
+ }, _callee, null, [[14, 21]]);
212
224
  }));
213
225
  return function handleCartChange(_x, _x2, _x3) {
214
226
  return _ref5.apply(this, arguments);
@@ -4,6 +4,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
12
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
13
  /**
8
14
  * 时段网格
9
15
  * 核心交互组件:横轴为时间(每 30 分钟一格),纵轴为资源/场地
@@ -16,11 +22,11 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
16
22
  * 首个可用时段。
17
23
  * - 同步方向单向:body.scrollLeft -> headerInner.style.transform。
18
24
  */
19
- import React, { useEffect, useMemo, useRef, useCallback } from 'react';
25
+ import React, { useEffect, useMemo, useRef, useCallback, useState } from 'react';
20
26
  import { Iconfont, PisellText } from '@pisell/materials';
21
27
  import { locales, isIos } from '@pisell/utils';
22
28
  import { useVenueBookingContext } from "../../../context";
23
- import { isSlotSelected as checkSlotSelected, useVenueBookingSymbol } from "../../../hooks";
29
+ import { isSlotSelected as checkSlotSelected, isSlotDisabledBySelection, useVenueBookingSymbol } from "../../../hooks";
24
30
  import { formatHourHeader, isHourBoundary, buildHourGroups, buildSlotPriceInfo, getPriceColor, getSlotTag, getColumnTag, getTimeMetaFromGrid, getResourceCourtMeta, getTableGridStyle, getFirstAvailableSlotIndex, FIRST_COLUMN_WIDTH } from "../../../utils";
25
31
  export default function TimeGrid() {
26
32
  var symbol = useVenueBookingSymbol();
@@ -206,13 +212,24 @@ export default function TimeGrid() {
206
212
  return scroller.removeEventListener('wheel', onWheel);
207
213
  };
208
214
  }, []);
209
- function handleSlotClick(resourceId, slot) {
215
+
216
+ /** 记录哪些多商品资源是展开态(resourceId -> expanded) */
217
+ var _useState = useState({}),
218
+ _useState2 = _slicedToArray(_useState, 2),
219
+ expandedResources = _useState2[0],
220
+ setExpandedResources = _useState2[1];
221
+ var toggleExpanded = useCallback(function (resourceId) {
222
+ setExpandedResources(function (prev) {
223
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, String(resourceId), !prev[String(resourceId)]));
224
+ });
225
+ }, []);
226
+ function handleSlotClick(resourceId, productId, slot) {
210
227
  if (dragStateRef.current.moved) {
211
228
  dragStateRef.current.moved = false;
212
229
  return;
213
230
  }
214
231
  if (slot.status !== 'available') return;
215
- toggleSlot(resourceId, slot);
232
+ toggleSlot(resourceId, productId, slot);
216
233
  }
217
234
 
218
235
  // 网格加载中(周数据拉取 / 切换日期过渡 / 数据未就绪):渲染骨架屏
@@ -292,43 +309,79 @@ export default function TimeGrid() {
292
309
  key: grid.date
293
310
  }, visibleResources.map(function (resource) {
294
311
  var courtMeta = getResourceCourtMeta(resource);
295
- return /*#__PURE__*/React.createElement("div", {
296
- key: "".concat(resource.resourceId, "-").concat(grid.date),
312
+ var isMultiProduct = !!resource.hasMultipleProducts && Array.isArray(resource.products);
313
+ var expanded = !!expandedResources[String(resource.resourceId)];
314
+ return /*#__PURE__*/React.createElement(React.Fragment, {
315
+ key: "".concat(resource.resourceId, "-").concat(grid.date)
316
+ }, /*#__PURE__*/React.createElement("div", {
297
317
  className: "grid border-b border-black/6",
298
318
  style: tableGridStyle
299
319
  }, /*#__PURE__*/React.createElement("div", {
300
320
  className: "sticky left-0 z-10 border-r border-black/6 px-2 py-2 shadow-[10px_0_16px_-14px_rgba(0,0,0,0.2)] md:px-4 ".concat(courtMeta.soldOut ? 'bg-zinc-50' : 'bg-white')
301
321
  }, /*#__PURE__*/React.createElement("div", {
302
322
  className: "flex items-start justify-between gap-2"
303
- }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
323
+ }, /*#__PURE__*/React.createElement("div", {
324
+ className: "flex items-center gap-1.5"
325
+ }, isMultiProduct ? /*#__PURE__*/React.createElement("button", {
326
+ type: "button",
327
+ "data-cart-button": "true",
328
+ onClick: function onClick(e) {
329
+ e.stopPropagation();
330
+ toggleExpanded(resource.resourceId);
331
+ },
332
+ className: "flex h-5 w-5 items-center justify-center rounded text-zinc-500 hover:bg-black/5",
333
+ "aria-label": expanded ? 'collapse' : 'expand'
334
+ }, /*#__PURE__*/React.createElement(Iconfont, {
335
+ type: expanded ? 'pisell2-chevron-down' : 'pisell2-chevron-right',
336
+ style: {
337
+ fontSize: 12
338
+ }
339
+ })) : null, /*#__PURE__*/React.createElement("div", {
304
340
  className: "text-[13px] font-extrabold leading-5 md:text-[15px] ".concat(courtMeta.soldOut ? 'text-zinc-400' : 'text-zinc-900')
305
341
  }, resource.resourceName)))), resource.slots.map(function (slot, slotIndex) {
306
342
  var isAvailable = slot.status === 'available';
307
- // unavailable:该时段不提供服务(如非营业时段);occupied/past 同样不可选
308
343
  var isUnavailable = slot.status === 'occupied' || slot.status === 'past' || slot.status === 'unavailable';
309
- var selected = isAvailable && checkSlotSelected(venueBookingModule, resource.resourceId, slot.startTime);
344
+ var timeLabel = timeLabels[slotIndex] || '';
310
345
  var priceInfo = buildSlotPriceInfo(slot);
311
346
  var priceClass = getPriceColor(_objectSpread(_objectSpread({}, priceInfo), {}, {
312
347
  courtType: resource.productTitle
313
348
  }));
314
- var timeLabel = timeLabels[slotIndex] || '';
315
349
  var tag = getSlotTag(priceInfo);
316
350
  var tagText = (tag === null || tag === void 0 ? void 0 : tag.text) === 'pisell2.venue.label.promo' ? locales.getText('pisell2.venue.label.promo') || '促销' : (tag === null || tag === void 0 ? void 0 : tag.text) === 'pisell2.venue.label.off.peak' ? locales.getText('pisell2.venue.label.off.peak') || '非高峰' : null;
351
+
352
+ // 单商品:保持原选中/禁用判定;多商品:外层 slot 不可直接选,点击仅触发展开
353
+ var productIdForSingle = resource.productId;
354
+ var disabledBySelection = !isMultiProduct && !isUnavailable ? isSlotDisabledBySelection(venueBookingModule, {
355
+ resourceId: resource.resourceId,
356
+ productId: productIdForSingle,
357
+ startTime: slot.startTime
358
+ }) : false;
359
+ // 跨行互斥禁用视觉上与 unavailable 一致(灰底 + ×),用户能明确看到冲突
360
+ var isBlocked = isUnavailable || disabledBySelection;
361
+ var selected = !isMultiProduct && isAvailable && checkSlotSelected(venueBookingModule, resource.resourceId, slot.startTime, productIdForSingle);
362
+ var interactive = !isMultiProduct && !isBlocked;
363
+ var showPlusLabel = isMultiProduct && !isBlocked;
317
364
  return /*#__PURE__*/React.createElement("button", {
318
365
  "data-slot-button": "true",
319
- key: "".concat(resource.resourceId, "-").concat(slot.startTime),
366
+ key: "".concat(resource.resourceId, "-outer-").concat(slot.startTime),
320
367
  onClick: function onClick() {
321
- return handleSlotClick(resource.resourceId, slot);
368
+ if (isMultiProduct) {
369
+ if (isBlocked) return;
370
+ toggleExpanded(resource.resourceId);
371
+ return;
372
+ }
373
+ if (isBlocked) return;
374
+ handleSlotClick(resource.resourceId, productIdForSingle, slot);
322
375
  },
323
- disabled: isUnavailable,
324
- className: "px-1 py-2 text-center transition md:px-2 ".concat(isUnavailable ? 'cursor-not-allowed bg-zinc-100 text-zinc-400' : selected ? 'text-white' : 'bg-white hover:bg-[#fff6f6]'),
376
+ disabled: isBlocked,
377
+ className: "px-1 py-2 text-center transition md:px-2 ".concat(isBlocked ? 'cursor-not-allowed bg-zinc-100 text-zinc-400' : selected ? 'text-white' : 'bg-white hover:bg-[#fff6f6]'),
325
378
  style: _objectSpread({
326
379
  borderLeft: isHourBoundary(timeLabel) ? '1px solid rgba(0,0,0,0.08)' : '1px solid rgba(0,0,0,0.03)',
327
380
  borderBottom: '1px solid rgba(0,0,0,0.04)'
328
- }, selected && !isUnavailable ? {
381
+ }, selected && interactive ? {
329
382
  backgroundColor: 'var(--vb-primary)'
330
383
  } : null)
331
- }, isUnavailable ? /*#__PURE__*/React.createElement("div", {
384
+ }, isBlocked ? /*#__PURE__*/React.createElement("div", {
332
385
  className: "flex flex-col items-center justify-center gap-1 text-zinc-400"
333
386
  }, /*#__PURE__*/React.createElement("div", {
334
387
  className: "text-lg font-bold leading-none"
@@ -342,6 +395,8 @@ export default function TimeGrid() {
342
395
  className: "text-[13px] font-extrabold leading-4 text-white md:text-sm"
343
396
  })) : /*#__PURE__*/React.createElement("div", {
344
397
  className: "space-y-0.5"
398
+ }, /*#__PURE__*/React.createElement("div", {
399
+ className: "flex items-baseline justify-center gap-0.5"
345
400
  }, /*#__PURE__*/React.createElement(PisellText.Amount, {
346
401
  value: Number(slot.price || 0),
347
402
  symbol: symbol,
@@ -349,9 +404,66 @@ export default function TimeGrid() {
349
404
  showCurrencySymbol: true,
350
405
  hideDecimalForWholeNumbers: true,
351
406
  className: "text-[13px] font-normal leading-4 ".concat(priceClass, " md:text-sm")
352
- }), tag ? /*#__PURE__*/React.createElement("div", {
407
+ }), showPlusLabel ? /*#__PURE__*/React.createElement("span", {
408
+ className: "text-[13px] font-semibold leading-4 ".concat(priceClass, " md:text-sm")
409
+ }, "+") : null), tag ? /*#__PURE__*/React.createElement("div", {
353
410
  className: "inline-flex rounded-full px-1.5 py-0 text-[8px] font-semibold leading-4 ring-1 md:text-[9px] ".concat(tag.className)
354
411
  }, tagText) : null));
412
+ })), isMultiProduct && expanded && resource.products.map(function (subRow) {
413
+ return /*#__PURE__*/React.createElement("div", {
414
+ key: "".concat(resource.resourceId, "-sub-").concat(subRow.productId),
415
+ className: "grid border-b border-black/6 bg-zinc-50/60",
416
+ style: tableGridStyle
417
+ }, /*#__PURE__*/React.createElement("div", {
418
+ className: "sticky left-0 z-10 border-r border-black/6 bg-zinc-50/60 px-2 py-2 pl-8 shadow-[10px_0_16px_-14px_rgba(0,0,0,0.2)] md:px-4 md:pl-10"
419
+ }, /*#__PURE__*/React.createElement("div", {
420
+ className: "text-[12px] font-semibold leading-5 text-zinc-700 md:text-[13px]"
421
+ }, subRow.productTitle)), subRow.slots.map(function (slot, slotIndex) {
422
+ var isAvailable = slot.status === 'available';
423
+ var isUnavailable = slot.status === 'occupied' || slot.status === 'past' || slot.status === 'unavailable';
424
+ var timeLabel = timeLabels[slotIndex] || '';
425
+ var disabledBySelection = !isUnavailable && isSlotDisabledBySelection(venueBookingModule, {
426
+ resourceId: resource.resourceId,
427
+ productId: subRow.productId,
428
+ startTime: slot.startTime
429
+ });
430
+ var isBlocked = isUnavailable || disabledBySelection;
431
+ var selected = isAvailable && checkSlotSelected(venueBookingModule, resource.resourceId, slot.startTime, subRow.productId);
432
+ var interactive = !isBlocked;
433
+ var priceInfo = buildSlotPriceInfo(slot);
434
+ var priceClass = getPriceColor(_objectSpread(_objectSpread({}, priceInfo), {}, {
435
+ courtType: subRow.productTitle
436
+ }));
437
+ return /*#__PURE__*/React.createElement("button", {
438
+ "data-slot-button": "true",
439
+ key: "".concat(resource.resourceId, "-").concat(subRow.productId, "-").concat(slot.startTime),
440
+ onClick: function onClick() {
441
+ if (!interactive) return;
442
+ handleSlotClick(resource.resourceId, subRow.productId, slot);
443
+ },
444
+ disabled: !interactive,
445
+ className: "px-1 py-2 text-center transition md:px-2 ".concat(isBlocked ? 'cursor-not-allowed bg-zinc-100 text-zinc-400' : selected ? 'text-white' : 'bg-white hover:bg-[#fff6f6]'),
446
+ style: _objectSpread({
447
+ borderLeft: isHourBoundary(timeLabel) ? '1px solid rgba(0,0,0,0.08)' : '1px solid rgba(0,0,0,0.03)',
448
+ borderBottom: '1px solid rgba(0,0,0,0.04)'
449
+ }, selected && interactive ? {
450
+ backgroundColor: 'var(--vb-primary)'
451
+ } : null)
452
+ }, isBlocked ? /*#__PURE__*/React.createElement("div", {
453
+ className: "flex flex-col items-center justify-center gap-1 text-zinc-400"
454
+ }, /*#__PURE__*/React.createElement("div", {
455
+ className: "text-lg font-bold leading-none"
456
+ }, "\xD7")) : /*#__PURE__*/React.createElement("div", {
457
+ className: "space-y-0.5"
458
+ }, /*#__PURE__*/React.createElement(PisellText.Amount, {
459
+ value: Number(slot.price || 0),
460
+ symbol: symbol,
461
+ precision: 2,
462
+ showCurrencySymbol: true,
463
+ hideDecimalForWholeNumbers: true,
464
+ className: "text-[13px] leading-4 ".concat(selected ? 'font-extrabold text-white' : "font-normal ".concat(priceClass), " md:text-sm")
465
+ })));
466
+ }));
355
467
  }));
356
468
  }))));
357
469
  }
@@ -548,7 +548,7 @@ export function VenueBookingProvider(_ref) {
548
548
  * 调用 OS venueBooking.toggleSlot 后刷新 grid + 购物车
549
549
  */
550
550
  var toggleSlot = useCallback( /*#__PURE__*/function () {
551
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(resourceId, slot) {
551
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(resourceId, productId, slot) {
552
552
  return _regeneratorRuntime().wrap(function _callee4$(_context5) {
553
553
  while (1) switch (_context5.prev = _context5.next) {
554
554
  case 0:
@@ -562,12 +562,12 @@ export function VenueBookingProvider(_ref) {
562
562
  _context5.next = 5;
563
563
  return toggleSlotAction(venueBookingModule, {
564
564
  resourceId: resourceId,
565
+ productId: productId,
565
566
  startTime: slot.startTime,
566
567
  endTime: slot.endTime,
567
568
  price: slot.price
568
569
  });
569
570
  case 5:
570
- // toggleSlot 后刷新 grid 获取最新选中状态
571
571
  refreshTimeSlotGrid();
572
572
  _context5.next = 8;
573
573
  return refreshViewModel();
@@ -584,7 +584,7 @@ export function VenueBookingProvider(_ref) {
584
584
  }
585
585
  }, _callee4, null, [[2, 10]]);
586
586
  }));
587
- return function (_x5, _x6) {
587
+ return function (_x5, _x6, _x7) {
588
588
  return _ref5.apply(this, arguments);
589
589
  };
590
590
  }(), [venueBookingModule, refreshTimeSlotGrid, refreshViewModel]);
@@ -606,7 +606,7 @@ export function VenueBookingProvider(_ref) {
606
606
  }
607
607
  }, _callee5);
608
608
  }));
609
- return function (_x7) {
609
+ return function (_x8) {
610
610
  return _ref6.apply(this, arguments);
611
611
  };
612
612
  }(), [venueBookingModule, refreshViewModel]);
@@ -631,7 +631,7 @@ export function VenueBookingProvider(_ref) {
631
631
  }
632
632
  }, _callee6);
633
633
  }));
634
- return function (_x8) {
634
+ return function (_x9) {
635
635
  return _ref7.apply(this, arguments);
636
636
  };
637
637
  }(), [venueBookingModule]);
@@ -936,7 +936,7 @@ export function VenueBookingProvider(_ref) {
936
936
  }
937
937
  }, _callee11);
938
938
  }));
939
- return function onGlobalLoginSuccess(_x9) {
939
+ return function onGlobalLoginSuccess(_x10) {
940
940
  return _ref12.apply(this, arguments);
941
941
  };
942
942
  }();
@@ -27,15 +27,28 @@ export declare function fetchResourceAvailability(module: any, startDate: string
27
27
  export declare function getDateRangeSummary(module: any, startDate: string, endDate: string): VenueDateSummaryItem[];
28
28
  /** 获取某天的时段网格(纯计算不发请求,切换日期时调用) */
29
29
  export declare function getTimeSlotGrid(module: any, date: string): VenueTimeSlotGrid | null;
30
- /** 切换选中/取消一个时段 */
30
+ /** 切换选中/取消一个时段(同一资源下多商品场景必须携带 productId) */
31
31
  export declare function toggleSlotAction(module: any, params: {
32
32
  resourceId: number;
33
+ productId: number;
33
34
  startTime: string;
34
35
  endTime: string;
35
36
  price: string;
36
37
  }): Promise<any>;
37
- /** 查询某个时段是否已被选中 */
38
- export declare function isSlotSelected(module: any, resourceId: number, startTime: string): boolean;
38
+ /**
39
+ * 查询某个时段是否已被选中
40
+ * 不传 productId 时:该资源下任一商品选中即 true;传了则精确匹配
41
+ */
42
+ export declare function isSlotSelected(module: any, resourceId: number, startTime: string, productId?: number): boolean;
43
+ /**
44
+ * 询问 OS:该 (resourceId, productId, startTime) 格子是否因其它已选项而应禁用
45
+ * 覆盖:同场地多商品互斥、组合资源 ↔ 子资源联动
46
+ */
47
+ export declare function isSlotDisabledBySelection(module: any, params: {
48
+ resourceId: number;
49
+ productId: number;
50
+ startTime: string;
51
+ }): boolean;
39
52
  /** 获取全部已选时段(按资源分组) */
40
53
  export declare function getAllSelectedSlots(module: any): any[];
41
54
  /** 查询 otherParams */