@pisell/private-materials 3.4.59 → 3.4.60

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 (230) 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 +7 -7
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +2 -2
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +10 -10
  11. package/es/components/appointmentBooking/components/Cart/index.d.ts +0 -1
  12. package/es/components/booking/components/TabProduct/productItem/index.d.ts +0 -1
  13. package/es/components/booking/components/TabProduct/selectProductItem/index.d.ts +0 -1
  14. package/es/components/booking/components/collapsibleList/utils.d.ts +0 -1
  15. package/es/components/booking/components/emptyBooking/index.d.ts +0 -1
  16. package/es/components/booking/components/footer/FooterMenus/index.d.ts +0 -1
  17. package/es/components/booking/forms/footer.d.ts +0 -1
  18. package/es/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  19. package/es/components/booking/forms/single/index.d.ts +0 -1
  20. package/es/components/booking/hooks/useClearCart.d.ts +0 -1
  21. package/es/components/booking/info/clientVariant/hooks/useClientFn.d.ts +0 -1
  22. package/es/components/booking/info/date/index.d.ts +0 -1
  23. package/es/components/booking/info/dateRange/index.d.ts +0 -1
  24. package/es/components/booking/info/notes/index.d.ts +0 -1
  25. package/es/components/booking/info/service/actions/index.d.ts +0 -1
  26. package/es/components/booking/info2/service/actions/index.d.ts +0 -1
  27. package/es/components/booking/info2/service/contactInfoMode/index.d.ts +0 -1
  28. package/es/components/booking/materiels/contacts/index.d.ts +0 -1
  29. package/es/components/booking/materiels/duration/index.d.ts +0 -1
  30. package/es/components/booking/materiels/holder/index.d.ts +0 -1
  31. package/es/components/booking/materiels/startTime/index.d.ts +0 -1
  32. package/es/components/booking/notes/NoteBlock/NoteItem/index.d.ts +0 -1
  33. package/es/components/booking/notes/NoteBlock/index.d.ts +0 -1
  34. package/es/components/eftpos/index.d.ts +0 -1
  35. package/es/components/eftpos/pos.d.ts +0 -1
  36. package/es/components/eftposPay/amount.d.ts +0 -1
  37. package/es/components/eftposPay/component/fail/network.d.ts +0 -1
  38. package/es/components/eftposPay/component/manual/index.d.ts +0 -1
  39. package/es/components/eftposPay/component/signature/index.d.ts +0 -1
  40. package/es/components/eftposPay/payo/config.d.ts +0 -1
  41. package/es/components/eftposPay/tip.d.ts +0 -1
  42. package/es/components/eftposPay/windcave/receiptAction.d.ts +0 -1
  43. package/es/components/eftposPay/windcave/windcave.d.ts +0 -1
  44. package/es/components/eventBooking/components/Provider/Cart/index.d.ts +0 -1
  45. package/es/components/eventBooking/components/Provider/EmptyHolderModal/index.d.ts +0 -1
  46. package/es/components/eventBooking/components/Provider/OrderProductModal/index.d.ts +0 -1
  47. package/es/components/eventBooking/components/Provider/RemoveOptionConfirmModal.d.ts +0 -1
  48. package/es/components/eventBooking/components/scheduleCalendar/ProductItem/index.d.ts +0 -1
  49. package/es/components/eventBooking/components/scheduleCalendar/components/ScheduleTimeItem/index.d.ts +0 -1
  50. package/es/components/kioskSkuDetail/index.d.ts +39 -0
  51. package/es/components/kioskSkuDetail/index.js +529 -0
  52. package/es/components/kioskSkuDetail/index.less +196 -0
  53. package/es/components/kioskSkuDetail/locales.d.ts +27 -0
  54. package/es/components/kioskSkuDetail/locales.js +26 -0
  55. package/es/components/login/index.d.ts +0 -1
  56. package/es/components/pay/toC/WalletPassBlock/components/WalletUseList/index.d.ts +0 -1
  57. package/es/components/pisellSelectCustomerModal/RightPanel/Add/BirthdayField/index.d.ts +0 -1
  58. package/es/components/pisellSelectCustomerModal/RightPanel/Add/GenderField/index.d.ts +0 -1
  59. package/es/components/pisellSelectCustomerModal/RightPanel/List/index.d.ts +0 -1
  60. package/es/components/productExtension/fields/SelectProducts/ProductItem/index.d.ts +0 -1
  61. package/es/components/productExtension/fields/SelectProducts/ProductItemPreview/index.d.ts +0 -1
  62. package/es/components/productExtension/fields/SelectProducts/index.d.ts +0 -1
  63. package/es/components/productExtension/fields/SelectResourcesTable/index.d.ts +0 -1
  64. package/es/components/ruleSetting/ruleBorder/index.d.ts +0 -1
  65. package/es/components/schedules/calendar/index.d.ts +0 -1
  66. package/es/components/schedules/components/CurrentDay/index.d.ts +0 -1
  67. package/es/components/schedules/components/ScheduleDetailList/index.d.ts +0 -1
  68. package/es/components/schedules/components/ScheduleList/index.d.ts +0 -1
  69. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.d.ts +0 -1
  70. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.d.ts +0 -1
  71. package/es/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  72. package/es/components/schedules/products/list/ProductItem/index.d.ts +0 -1
  73. package/es/components/schedules/products/list/index.d.ts +0 -1
  74. package/es/components/schedules/resources/list/index.d.ts +0 -1
  75. package/es/components/schedules/schedules/AllSchedules/index.d.ts +0 -1
  76. package/es/components/schedules/schedules/ScheduleDetailDrawer/index.d.ts +0 -1
  77. package/es/components/schedules/schedules/index.d.ts +0 -1
  78. package/es/components/shoppingCart/hooks/useAddService.d.ts +0 -1
  79. package/es/components/shoppingCart/hooks/useClearCart.d.ts +0 -1
  80. package/es/components/shoppingCart/index.d.ts +0 -1
  81. package/es/hooks/usePaymentLogger.d.ts +0 -1
  82. package/es/index.d.ts +2 -0
  83. package/es/index.js +2 -0
  84. package/es/plus/saasCreateOrganization/components/Header.d.ts +0 -1
  85. package/es/plus/saasRegister/components/EntryEmail.d.ts +0 -1
  86. package/es/plus/saasRegister/components/EntryInfo.d.ts +0 -1
  87. package/es/plus/saasRegister/components/GoLogin.d.ts +0 -1
  88. package/es/plus/saasRegister/components/Header.d.ts +0 -1
  89. package/es/plus/saasRegister/components/VerifyError.d.ts +0 -1
  90. package/es/plus/saasRegister/components/VerifyingLink.d.ts +0 -1
  91. package/es/plus/saasRegister/components/VertifyEmail.d.ts +0 -1
  92. package/es/plus/skuOptionsSelection/components/OptionsCard/OptionItemCard.d.ts +0 -1
  93. package/es/plus/skuOptionsSelection/components/OptionsCard/index.d.ts +0 -1
  94. package/es/plus/skuOptionsSelection/components/OptionsModal/index.d.ts +1 -0
  95. package/es/plus/skuOptionsSelection/components/TitleExtra/index.d.ts +0 -1
  96. package/es/plus/skuOptionsSelection/components/VariantCard/index.js +30 -1
  97. package/es/plus/skuOptionsSelection/components/VariantCard/index.less +10 -0
  98. package/es/plus/skuOptionsSelection/locales.d.ts +3 -0
  99. package/es/plus/skuOptionsSelection/locales.js +3 -0
  100. package/es/plus/skuOptionsSelection/store/actions.js +17 -2
  101. package/es/plus/skuOptionsSelection/types.d.ts +5 -0
  102. package/es/plus/skuOptionsSelection/types.js +2 -1
  103. package/es/plus/skuOptionsSelection/utils/transformVariantGroup.js +70 -3
  104. package/es/plus/walletEditor/components/relationProduct/index.d.ts +0 -1
  105. package/es/plus/walletPassGallery/components/timelineSection/index.d.ts +0 -1
  106. package/es/pro/Login2.0/components/LoginCodeInput.js +36 -3
  107. package/es/pro/Login2.0/steps/CodeInput.js +37 -7
  108. package/es/pro/Selector/demo.d.ts +1 -0
  109. package/es/pro/numberKeyboard/index.d.ts +28 -0
  110. package/es/pro/numberKeyboard/index.js +155 -0
  111. package/es/pro/numberKeyboard/index.less +25 -0
  112. package/es/pro/numberKeyboard/locales.d.ts +12 -0
  113. package/es/pro/numberKeyboard/locales.js +11 -0
  114. package/es/pro/pisellNumberSelector/example.d.ts +3 -0
  115. package/es/pro/pisellNumberSelector/example.js +68 -0
  116. package/es/pro/pisellNumberSelector/index.d.ts +29 -0
  117. package/es/pro/pisellNumberSelector/index.js +257 -0
  118. package/es/pro/pisellNumberSelector/index.less +235 -0
  119. package/es/pro/pisellPaymentList/example.d.ts +1 -0
  120. package/lib/components/appointmentBooking/components/Cart/index.d.ts +0 -1
  121. package/lib/components/booking/components/TabProduct/productItem/index.d.ts +0 -1
  122. package/lib/components/booking/components/TabProduct/selectProductItem/index.d.ts +0 -1
  123. package/lib/components/booking/components/collapsibleList/utils.d.ts +0 -1
  124. package/lib/components/booking/components/emptyBooking/index.d.ts +0 -1
  125. package/lib/components/booking/components/footer/FooterMenus/index.d.ts +0 -1
  126. package/lib/components/booking/forms/footer.d.ts +0 -1
  127. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  128. package/lib/components/booking/forms/single/index.d.ts +0 -1
  129. package/lib/components/booking/hooks/useClearCart.d.ts +0 -1
  130. package/lib/components/booking/info/clientVariant/hooks/useClientFn.d.ts +0 -1
  131. package/lib/components/booking/info/date/index.d.ts +0 -1
  132. package/lib/components/booking/info/dateRange/index.d.ts +0 -1
  133. package/lib/components/booking/info/notes/index.d.ts +0 -1
  134. package/lib/components/booking/info/service/actions/index.d.ts +0 -1
  135. package/lib/components/booking/info2/service/actions/index.d.ts +0 -1
  136. package/lib/components/booking/info2/service/contactInfoMode/index.d.ts +0 -1
  137. package/lib/components/booking/materiels/contacts/index.d.ts +0 -1
  138. package/lib/components/booking/materiels/duration/index.d.ts +0 -1
  139. package/lib/components/booking/materiels/holder/index.d.ts +0 -1
  140. package/lib/components/booking/materiels/startTime/index.d.ts +0 -1
  141. package/lib/components/booking/notes/NoteBlock/NoteItem/index.d.ts +0 -1
  142. package/lib/components/booking/notes/NoteBlock/index.d.ts +0 -1
  143. package/lib/components/eftpos/index.d.ts +0 -1
  144. package/lib/components/eftpos/pos.d.ts +0 -1
  145. package/lib/components/eftposPay/amount.d.ts +0 -1
  146. package/lib/components/eftposPay/component/fail/network.d.ts +0 -1
  147. package/lib/components/eftposPay/component/manual/index.d.ts +0 -1
  148. package/lib/components/eftposPay/component/signature/index.d.ts +0 -1
  149. package/lib/components/eftposPay/payo/config.d.ts +0 -1
  150. package/lib/components/eftposPay/tip.d.ts +0 -1
  151. package/lib/components/eftposPay/windcave/receiptAction.d.ts +0 -1
  152. package/lib/components/eftposPay/windcave/windcave.d.ts +0 -1
  153. package/lib/components/eventBooking/components/Provider/Cart/index.d.ts +0 -1
  154. package/lib/components/eventBooking/components/Provider/EmptyHolderModal/index.d.ts +0 -1
  155. package/lib/components/eventBooking/components/Provider/OrderProductModal/index.d.ts +0 -1
  156. package/lib/components/eventBooking/components/Provider/RemoveOptionConfirmModal.d.ts +0 -1
  157. package/lib/components/eventBooking/components/scheduleCalendar/ProductItem/index.d.ts +0 -1
  158. package/lib/components/eventBooking/components/scheduleCalendar/components/ScheduleTimeItem/index.d.ts +0 -1
  159. package/lib/components/kioskSkuDetail/index.d.ts +39 -0
  160. package/lib/components/kioskSkuDetail/index.js +393 -0
  161. package/lib/components/kioskSkuDetail/index.less +196 -0
  162. package/lib/components/kioskSkuDetail/locales.d.ts +27 -0
  163. package/lib/components/kioskSkuDetail/locales.js +50 -0
  164. package/lib/components/login/index.d.ts +0 -1
  165. package/lib/components/pay/toC/WalletPassBlock/components/WalletUseList/index.d.ts +0 -1
  166. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/BirthdayField/index.d.ts +0 -1
  167. package/lib/components/pisellSelectCustomerModal/RightPanel/Add/GenderField/index.d.ts +0 -1
  168. package/lib/components/pisellSelectCustomerModal/RightPanel/List/index.d.ts +0 -1
  169. package/lib/components/productExtension/fields/SelectProducts/ProductItem/index.d.ts +0 -1
  170. package/lib/components/productExtension/fields/SelectProducts/ProductItemPreview/index.d.ts +0 -1
  171. package/lib/components/productExtension/fields/SelectProducts/index.d.ts +0 -1
  172. package/lib/components/productExtension/fields/SelectResourcesTable/index.d.ts +0 -1
  173. package/lib/components/ruleSetting/ruleBorder/index.d.ts +0 -1
  174. package/lib/components/schedules/calendar/index.d.ts +0 -1
  175. package/lib/components/schedules/components/CurrentDay/index.d.ts +0 -1
  176. package/lib/components/schedules/components/ScheduleDetailList/index.d.ts +0 -1
  177. package/lib/components/schedules/components/ScheduleList/index.d.ts +0 -1
  178. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/MaxParticipantsModule/index.d.ts +0 -1
  179. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/ResourcesModule/index.d.ts +0 -1
  180. package/lib/components/schedules/products/ProductDetailDrawer/ProductDetail/index.d.ts +1 -0
  181. package/lib/components/schedules/products/list/ProductItem/index.d.ts +0 -1
  182. package/lib/components/schedules/products/list/index.d.ts +0 -1
  183. package/lib/components/schedules/resources/list/index.d.ts +0 -1
  184. package/lib/components/schedules/schedules/AllSchedules/index.d.ts +0 -1
  185. package/lib/components/schedules/schedules/ScheduleDetailDrawer/index.d.ts +0 -1
  186. package/lib/components/schedules/schedules/index.d.ts +0 -1
  187. package/lib/components/shoppingCart/hooks/useAddService.d.ts +0 -1
  188. package/lib/components/shoppingCart/hooks/useClearCart.d.ts +0 -1
  189. package/lib/components/shoppingCart/index.d.ts +0 -1
  190. package/lib/hooks/usePaymentLogger.d.ts +0 -1
  191. package/lib/index.d.ts +2 -0
  192. package/lib/index.js +6 -0
  193. package/lib/plus/saasCreateOrganization/components/Header.d.ts +0 -1
  194. package/lib/plus/saasRegister/components/EntryEmail.d.ts +0 -1
  195. package/lib/plus/saasRegister/components/EntryInfo.d.ts +0 -1
  196. package/lib/plus/saasRegister/components/GoLogin.d.ts +0 -1
  197. package/lib/plus/saasRegister/components/Header.d.ts +0 -1
  198. package/lib/plus/saasRegister/components/VerifyError.d.ts +0 -1
  199. package/lib/plus/saasRegister/components/VerifyingLink.d.ts +0 -1
  200. package/lib/plus/saasRegister/components/VertifyEmail.d.ts +0 -1
  201. package/lib/plus/skuOptionsSelection/components/OptionsCard/OptionItemCard.d.ts +0 -1
  202. package/lib/plus/skuOptionsSelection/components/OptionsCard/index.d.ts +0 -1
  203. package/lib/plus/skuOptionsSelection/components/OptionsModal/index.d.ts +1 -0
  204. package/lib/plus/skuOptionsSelection/components/TitleExtra/index.d.ts +0 -1
  205. package/lib/plus/skuOptionsSelection/components/VariantCard/index.js +32 -3
  206. package/lib/plus/skuOptionsSelection/components/VariantCard/index.less +10 -0
  207. package/lib/plus/skuOptionsSelection/locales.d.ts +3 -0
  208. package/lib/plus/skuOptionsSelection/locales.js +3 -0
  209. package/lib/plus/skuOptionsSelection/store/actions.js +25 -1
  210. package/lib/plus/skuOptionsSelection/types.d.ts +5 -0
  211. package/lib/plus/skuOptionsSelection/types.js +2 -1
  212. package/lib/plus/skuOptionsSelection/utils/transformVariantGroup.js +51 -5
  213. package/lib/plus/walletEditor/components/relationProduct/index.d.ts +0 -1
  214. package/lib/plus/walletPassGallery/components/timelineSection/index.d.ts +0 -1
  215. package/lib/pro/Login2.0/components/LoginCodeInput.js +26 -4
  216. package/lib/pro/Login2.0/steps/CodeInput.js +27 -5
  217. package/lib/pro/Selector/demo.d.ts +1 -0
  218. package/lib/pro/numberKeyboard/index.d.ts +28 -0
  219. package/lib/pro/numberKeyboard/index.js +182 -0
  220. package/lib/pro/numberKeyboard/index.less +25 -0
  221. package/lib/pro/numberKeyboard/locales.d.ts +12 -0
  222. package/lib/pro/numberKeyboard/locales.js +35 -0
  223. package/lib/pro/pisellNumberSelector/example.d.ts +3 -0
  224. package/lib/pro/pisellNumberSelector/example.js +93 -0
  225. package/lib/pro/pisellNumberSelector/index.d.ts +29 -0
  226. package/lib/pro/pisellNumberSelector/index.js +275 -0
  227. package/lib/pro/pisellNumberSelector/index.less +235 -0
  228. package/lib/pro/pisellPaymentList/example.d.ts +1 -0
  229. package/lowcode/kiosk-sku-detail/meta.ts +264 -0
  230. package/package.json +2 -2
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { StatusEnum } from '../const';
3
2
  export declare const POS: ({ api, onChange, }: {
4
3
  api: {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './tip.less';
3
2
  /**
4
3
  * @title: 支付状态未知页面
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * @title: 按钮操作区
4
3
  * @description: 仅包含签名
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  declare const _default: ({ api, onChange, formatAmount, }: {
3
2
  api: any;
4
3
  onChange: any;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './index.less';
3
2
  declare const Cart: ({ open, onCancel }: any) => JSX.Element;
4
3
  export default Cart;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './index.less';
3
2
  declare const EmptyHolderModal: (props: any) => JSX.Element;
4
3
  export default EmptyHolderModal;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './index.less';
3
2
  declare const OrderProductModal: (props: any) => JSX.Element;
4
3
  export default OrderProductModal;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  declare const RemoveOptionConfirmModal: (props: any) => JSX.Element;
3
2
  export default RemoveOptionConfirmModal;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './index.less';
3
2
  declare type Item = any;
4
3
  interface ProductItemProps {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import './index.less';
3
2
  declare const ScheduleTimeItem: ({ timeList }: any) => JSX.Element;
4
3
  export default ScheduleTimeItem;
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import type { SkuValue } from '../../plus/skuOptionsSelection/types';
3
+ import './index.less';
4
+ /**
5
+ * @description Kiosk 商品详情(参考 Figma: Kiosk / Launchpad screen)
6
+ * - 默认从 URL query 读取商品 id(productId / product_id / id),内部通过 getProductDetail 拉取详情
7
+ * - 中间区域用 SKUOptionsSelection 做 SKU 选择
8
+ * - 底部用 PisellNumberSelector 做数量编辑
9
+ */
10
+ declare function KioskSkuDetail(props: KioskSkuDetailProps): JSX.Element;
11
+ export default KioskSkuDetail;
12
+ /**
13
+ * @description 从原生回调 payload 中提取 productId
14
+ */
15
+ export interface KioskSkuDetailProps {
16
+ /** 商品 id(可选:目前默认从 URL 读取,props 仅作为兜底以兼容老用法) */
17
+ productId?: number | string;
18
+ /**
19
+ * 可选:用于商品报价的日期(预约类商品)
20
+ * @deprecated 目前 kiosk 详情暂时固定取当天,这个参数暂不生效
21
+ */
22
+ scheduleDate?: string;
23
+ /** 自定义类名 */
24
+ className?: string;
25
+ /** 自定义样式 */
26
+ style?: React.CSSProperties;
27
+ /** 返回 */
28
+ onBack?: () => void;
29
+ /** 加入购物车 */
30
+ onAddToCart?: (params: {
31
+ product: any;
32
+ skuValue: SkuValue;
33
+ quantity: number;
34
+ unitPrice: number;
35
+ total: number;
36
+ currencySymbol: string;
37
+ bookingConfig?: any;
38
+ }) => void;
39
+ }
@@ -0,0 +1,393 @@
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);
28
+
29
+ // src/components/kioskSkuDetail/index.tsx
30
+ var kioskSkuDetail_exports = {};
31
+ __export(kioskSkuDetail_exports, {
32
+ default: () => kioskSkuDetail_default
33
+ });
34
+ module.exports = __toCommonJS(kioskSkuDetail_exports);
35
+ var import_react = __toESM(require("react"));
36
+ var import_decimal = __toESM(require("decimal.js"));
37
+ var import_classnames = __toESM(require("classnames"));
38
+ var import_materials = require("@pisell/materials");
39
+ var import_dayjs = __toESM(require("dayjs"));
40
+ var import_utils = require("@pisell/utils");
41
+ var import_skuOptionsSelection = __toESM(require("../../plus/skuOptionsSelection"));
42
+ var import_useEngineContext = __toESM(require("../../hooks/useEngineContext"));
43
+ var import_serve = require("../booking/info/service/serve");
44
+ var import_locales = __toESM(require("./locales"));
45
+ var import_index = require("./index.less");
46
+ var import_utils2 = require("../booking/utils");
47
+ function KioskSkuDetail(props) {
48
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
49
+ const { className, style, onAddToCart } = props;
50
+ const productIdFromUrl = (0, import_react.useMemo)(() => {
51
+ return getQueryFirstMatch({ keys: ["productId", "product_id", "id"] });
52
+ }, []);
53
+ const initialProductId = productIdFromUrl ?? props.productId ?? null;
54
+ const scheduleDate = (0, import_react.useMemo)(() => (0, import_dayjs.default)().format("YYYY-MM-DD"), []);
55
+ const stageScale = useDesignStageScale({ designWidth: 1080, designHeight: 1800 });
56
+ const context = (0, import_useEngineContext.default)();
57
+ const { interaction } = ((_a = context.appHelper) == null ? void 0 : _a.utils) || {};
58
+ import_utils.locales.init(import_locales.default, ((_c = (_b = context == null ? void 0 : context.engine) == null ? void 0 : _b.props) == null ? void 0 : _c.locale) || "en");
59
+ import_utils2.request.setRequest(context.appHelper.utils.request);
60
+ const { store, getData, Toast } = ((_d = context.appHelper) == null ? void 0 : _d.utils) || {};
61
+ const state = (_e = store == null ? void 0 : store.getState) == null ? void 0 : _e.call(store);
62
+ const symbol = ((_h = (_g = (_f = store == null ? void 0 : store.getState) == null ? void 0 : _f.call(store)) == null ? void 0 : _g.global) == null ? void 0 : _h.symbol) || "$";
63
+ const currency_code = ((_k = (_j = (_i = store == null ? void 0 : store.getState) == null ? void 0 : _i.call(store)) == null ? void 0 : _j.global) == null ? void 0 : _k.currency_code) || "AUD";
64
+ const [isLoading, setIsLoading] = (0, import_react.useState)(false);
65
+ const [errorText, setErrorText] = (0, import_react.useState)(null);
66
+ const [productData, setProductData] = (0, import_react.useState)(null);
67
+ const [quantity, setQuantity] = (0, import_react.useState)(1);
68
+ const [skuValue, setSkuValue] = (0, import_react.useState)({
69
+ product_id: 0,
70
+ product_variant_id: 0,
71
+ bundle: [],
72
+ option: []
73
+ });
74
+ const [skuDefaultValue, setSkuDefaultValue] = (0, import_react.useState)({
75
+ product_id: 0,
76
+ product_variant_id: 0,
77
+ bundle: [],
78
+ option: []
79
+ });
80
+ const [isEdit, setIsEdit] = (0, import_react.useState)(false);
81
+ const skuOptionsSelectionRef = (0, import_react.useRef)(null);
82
+ const requestSeqRef = (0, import_react.useRef)(0);
83
+ const resetForInit = (0, import_react.useCallback)(() => {
84
+ setProductData(null);
85
+ setErrorText(null);
86
+ setQuantity(1);
87
+ setSkuValue({
88
+ product_id: 0,
89
+ product_variant_id: 0,
90
+ bundle: [],
91
+ option: []
92
+ });
93
+ setSkuDefaultValue({
94
+ product_id: 0,
95
+ product_variant_id: 0,
96
+ bundle: [],
97
+ option: []
98
+ });
99
+ }, []);
100
+ const loadByProductId = (0, import_react.useCallback)(async (productId, options = {}) => {
101
+ console.log("准备 load", productId);
102
+ if (productId === null || typeof productId === "undefined" || productId === "") return;
103
+ const reqId = ++requestSeqRef.current;
104
+ setIsLoading(true);
105
+ setErrorText(null);
106
+ try {
107
+ const open_deposit = (getData == null ? void 0 : getData("bookingv2_deposit")) || 0;
108
+ const params = { open_deposit };
109
+ params.schedule_date = scheduleDate;
110
+ const res = await (0, import_serve.getProductDetail)(String(productId), params);
111
+ console.log("详情接口");
112
+ console.log(JSON.stringify(res));
113
+ const apiData = ((res == null ? void 0 : res.id) ? res : res == null ? void 0 : res.data) || {};
114
+ if (reqId !== requestSeqRef.current) return;
115
+ setProductData(apiData);
116
+ console.log("已设置 productData");
117
+ const normalizedProductId = Number(
118
+ (apiData == null ? void 0 : apiData.product_id) || (apiData == null ? void 0 : apiData.id) || productId || 0
119
+ );
120
+ const minNumUnit = Number((apiData == null ? void 0 : apiData.min_num_unit) || 1);
121
+ if (options.shouldInitQuantity !== false) {
122
+ setQuantity(minNumUnit > 0 ? minNumUnit : 1);
123
+ }
124
+ const defaultVariantId = (() => {
125
+ var _a2, _b2;
126
+ const firstVariantId = Array.isArray(apiData == null ? void 0 : apiData.variant) ? Number(((_b2 = (_a2 = apiData == null ? void 0 : apiData.variant) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.id) || 0) : 0;
127
+ return Number.isFinite(firstVariantId) ? firstVariantId : 0;
128
+ })();
129
+ const initialSkuValue = {
130
+ product_id: normalizedProductId,
131
+ product_variant_id: defaultVariantId,
132
+ bundle: [],
133
+ option: []
134
+ };
135
+ if (options.shouldInitSku !== false) {
136
+ setSkuValue(initialSkuValue);
137
+ setSkuDefaultValue(initialSkuValue);
138
+ setTimeout(() => {
139
+ var _a2;
140
+ if (initialSkuValue.product_variant_id) {
141
+ (_a2 = skuOptionsSelectionRef.current) == null ? void 0 : _a2.validate();
142
+ }
143
+ }, 0);
144
+ }
145
+ } catch (error) {
146
+ console.error(error);
147
+ setErrorText("Failed to load product detail");
148
+ } finally {
149
+ if (reqId !== requestSeqRef.current) return;
150
+ setIsLoading(false);
151
+ }
152
+ }, [getData, scheduleDate]);
153
+ const loadRef = (0, import_react.useRef)(loadByProductId);
154
+ loadRef.current = loadByProductId;
155
+ (0, import_react.useEffect)(() => {
156
+ var _a2, _b2, _c2, _d2, _e2, _f2;
157
+ (_b2 = (_a2 = interaction == null ? void 0 : interaction.utils) == null ? void 0 : _a2.postMessageToApp) == null ? void 0 : _b2.call(_a2, {
158
+ module: "wallet_pass",
159
+ key: "page_load"
160
+ });
161
+ (_d2 = (_c2 = interaction == null ? void 0 : interaction.utils) == null ? void 0 : _c2.mountFunction) == null ? void 0 : _d2.call(
162
+ _c2,
163
+ "wallet_pass",
164
+ "restore_buy_wallet_pass",
165
+ (id) => {
166
+ console.log("重置状态", id);
167
+ console.log("宽", window.innerWidth);
168
+ console.log("高", window.innerHeight);
169
+ console.log("设备像素比", window.devicePixelRatio);
170
+ resetForInit();
171
+ if (id || id === 0) loadRef.current(id);
172
+ setIsEdit(false);
173
+ }
174
+ );
175
+ (_f2 = (_e2 = interaction == null ? void 0 : interaction.utils) == null ? void 0 : _e2.mountFunction) == null ? void 0 : _f2.call(
176
+ _e2,
177
+ "wallet_pass",
178
+ "edit_buy_wallet_pass",
179
+ (data) => {
180
+ console.log("编辑状态", data);
181
+ const productData2 = JSON.parse(data);
182
+ setProductData(productData2.productDetail);
183
+ loadRef.current(productData2.productDetail.id, {
184
+ shouldInitSku: false,
185
+ shouldInitQuantity: false
186
+ });
187
+ setSkuValue({
188
+ product_id: productData2.productDetail.id,
189
+ product_variant_id: Number(productData2.variantId),
190
+ bundle: [],
191
+ option: []
192
+ });
193
+ setSkuDefaultValue({
194
+ product_id: productData2.productDetail.id,
195
+ product_variant_id: Number(productData2.variantId),
196
+ bundle: [],
197
+ option: []
198
+ });
199
+ setIsEdit(true);
200
+ }
201
+ );
202
+ if (initialProductId || initialProductId === 0) loadRef.current(initialProductId);
203
+ }, []);
204
+ const coverUrl = (0, import_react.useMemo)(() => {
205
+ return (productData == null ? void 0 : productData.cover) || (productData == null ? void 0 : productData.image) || "";
206
+ }, [productData]);
207
+ const titleText = (0, import_react.useMemo)(() => {
208
+ var _a2;
209
+ return (productData == null ? void 0 : productData.title) || ((_a2 = productData == null ? void 0 : productData._extend) == null ? void 0 : _a2.product_name) || (productData == null ? void 0 : productData.product_name) || "";
210
+ }, [productData]);
211
+ const descriptionText = (0, import_react.useMemo)(() => {
212
+ var _a2;
213
+ return (productData == null ? void 0 : productData.description) || (productData == null ? void 0 : productData.sub_title) || ((_a2 = productData == null ? void 0 : productData._extend) == null ? void 0 : _a2.sub_title) || "";
214
+ }, [productData]);
215
+ const unitPrice = (0, import_react.useMemo)(() => {
216
+ const selectedVariantId = Number((skuValue == null ? void 0 : skuValue.product_variant_id) || 0);
217
+ if (selectedVariantId && Array.isArray(productData == null ? void 0 : productData.variant)) {
218
+ const matched = productData.variant.find(
219
+ (item) => Number(item == null ? void 0 : item.id) === selectedVariantId
220
+ );
221
+ const vPrice = Number((matched == null ? void 0 : matched.price) || 0);
222
+ if (!Number.isNaN(vPrice) && vPrice !== 0) return vPrice;
223
+ }
224
+ return Number((productData == null ? void 0 : productData.price) || 0);
225
+ }, [productData, skuValue == null ? void 0 : skuValue.product_variant_id]);
226
+ const priceRangeText = (0, import_react.useMemo)(() => {
227
+ const variantPrices = Array.isArray(productData == null ? void 0 : productData.variant) ? productData.variant.map((v) => Number((v == null ? void 0 : v.price) || 0)).filter((n) => !Number.isNaN(n) && n > 0) : [];
228
+ const base = Number((productData == null ? void 0 : productData.price) || 0);
229
+ const all = [...variantPrices, ...base > 0 ? [base] : []];
230
+ if (all.length === 0) return "";
231
+ const min = Math.min(...all);
232
+ const max = Math.max(...all);
233
+ if (min === max) return `${symbol}${min.toFixed(2)}`;
234
+ return `${symbol}${min.toFixed(2)}-${symbol}${max.toFixed(2)}`;
235
+ }, [productData, symbol]);
236
+ const itemTotal = (0, import_react.useMemo)(() => {
237
+ const deUnit = new import_decimal.default(unitPrice || 0);
238
+ const deQty = new import_decimal.default(quantity || 0);
239
+ return deUnit.mul(deQty).toNumber();
240
+ }, [quantity, unitPrice]);
241
+ const itemTotalText = (0, import_react.useMemo)(() => {
242
+ const deTotal = new import_decimal.default(itemTotal || 0);
243
+ const priceSign = deTotal.toNumber() < 0 ? "-" : "";
244
+ return `${priceSign}${symbol}${deTotal.abs().toNumber().toFixed(2)}`;
245
+ }, [itemTotal, symbol]);
246
+ const handleAddToCart = () => {
247
+ var _a2;
248
+ if (!productData) return;
249
+ (_a2 = skuOptionsSelectionRef.current) == null ? void 0 : _a2.validate();
250
+ if (!skuValue.product_variant_id) {
251
+ Toast.info(import_utils.locales.getText("pisell2.text.kiosk.sku.detail.toast.select.variant"));
252
+ return;
253
+ }
254
+ ;
255
+ const obj = {
256
+ productDetail: productData,
257
+ quantity,
258
+ variantId: skuValue.product_variant_id,
259
+ pricePerUnit: unitPrice,
260
+ isWebBuyWalletPass: true
261
+ };
262
+ interaction.utils.postMessageToApp({
263
+ module: "wallet_pass",
264
+ key: "buy_wallet_pass",
265
+ data: {
266
+ // 把洗好的数据放这里
267
+ productData: obj,
268
+ isEdit
269
+ }
270
+ });
271
+ };
272
+ const onBack = () => {
273
+ interaction.utils.postMessageToApp({
274
+ module: "wallet_pass",
275
+ key: "back"
276
+ });
277
+ };
278
+ const stageStyle = (0, import_react.useMemo)(() => {
279
+ return {
280
+ ...style || {},
281
+ width: 1080,
282
+ height: 1800,
283
+ transform: `translateX(-50%) scale(${stageScale})`,
284
+ transformOrigin: "top center"
285
+ };
286
+ }, [stageScale, style]);
287
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail-viewport" }, /* @__PURE__ */ import_react.default.createElement(
288
+ "div",
289
+ {
290
+ className: (0, import_classnames.default)("pisell-kiosk-sku-detail", className),
291
+ style: stageStyle
292
+ },
293
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__content" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__hero" }, coverUrl ? /* @__PURE__ */ import_react.default.createElement(
294
+ "img",
295
+ {
296
+ className: "pisell-kiosk-sku-detail__hero-img",
297
+ src: coverUrl,
298
+ alt: titleText || "product"
299
+ }
300
+ ) : /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__hero-placeholder" })), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__header" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__title" }, titleText || (isLoading ? "Loading…" : "")), !!descriptionText && /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__desc" }, /* @__PURE__ */ import_react.default.createElement(
301
+ "div",
302
+ {
303
+ dangerouslySetInnerHTML: {
304
+ __html: descriptionText
305
+ }
306
+ }
307
+ )), !!priceRangeText && /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__price-range" }, priceRangeText, " ", currency_code), !!errorText && /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__error" }, errorText)), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__options-card" }, productData && Array.isArray(productData == null ? void 0 : productData.variant) && productData.variant.length > 0 ? /* @__PURE__ */ import_react.default.createElement(
308
+ import_skuOptionsSelection.default,
309
+ {
310
+ ref: skuOptionsSelectionRef,
311
+ dataSource: productData,
312
+ value: skuDefaultValue,
313
+ skuCardConfig: {
314
+ price: {
315
+ visible: true
316
+ },
317
+ variantPriceVisible: true
318
+ },
319
+ onChange: (v) => {
320
+ setSkuValue(v);
321
+ },
322
+ customScrollParent: ".pisell-kiosk-sku-detail"
323
+ }
324
+ ) : /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__options-loading" }, isLoading ? import_utils.locales.getText(
325
+ "pisell2.text.kiosk.sku.detail.loading.options"
326
+ ) : ""))),
327
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__footer" }, /* @__PURE__ */ import_react.default.createElement(
328
+ import_materials.Button,
329
+ {
330
+ className: "pisell-kiosk-sku-detail__back-btn",
331
+ size: "large",
332
+ onClick: onBack
333
+ },
334
+ import_utils.locales.getText("pisell2.text.kiosk.sku.detail.btn.back")
335
+ ), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__footer-center" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-kiosk-sku-detail__item-total" }, import_utils.locales.getText("pisell2.text.kiosk.sku.detail.item.total"), ":", " ", itemTotalText)), /* @__PURE__ */ import_react.default.createElement(
336
+ import_materials.Button,
337
+ {
338
+ type: "primary",
339
+ className: "pisell-kiosk-sku-detail__add-btn",
340
+ size: "large",
341
+ onClick: handleAddToCart,
342
+ disabled: !productData || isLoading
343
+ },
344
+ import_utils.locales.getText(
345
+ isEdit ? "pisell2.text.kiosk.sku.detail.btn.update" : "pisell2.text.kiosk.sku.detail.btn.add.to.cart"
346
+ )
347
+ ))
348
+ ));
349
+ }
350
+ var kioskSkuDetail_default = KioskSkuDetail;
351
+ function getQueryFirstMatch(params) {
352
+ var _a;
353
+ if (typeof window === "undefined") return null;
354
+ if (!((_a = params == null ? void 0 : params.keys) == null ? void 0 : _a.length)) return null;
355
+ const keys = params.keys;
356
+ const tryRead = (raw) => {
357
+ if (!raw) return null;
358
+ const normalized = raw.startsWith("?") ? raw.slice(1) : raw;
359
+ const searchParams = new URLSearchParams(normalized);
360
+ for (const key of keys) {
361
+ const value = searchParams.get(key);
362
+ if (value) return value;
363
+ }
364
+ return null;
365
+ };
366
+ const fromSearch = tryRead(window.location.search || "");
367
+ if (fromSearch) return fromSearch;
368
+ const hash = window.location.hash || "";
369
+ const queryIndex = hash.indexOf("?");
370
+ if (queryIndex === -1) return null;
371
+ return tryRead(hash.slice(queryIndex + 1));
372
+ }
373
+ function useDesignStageScale(params) {
374
+ const designWidth = params.designWidth;
375
+ const designHeight = params.designHeight;
376
+ const [scale, setScale] = (0, import_react.useState)(1);
377
+ (0, import_react.useEffect)(() => {
378
+ const update = () => {
379
+ const viewportWidth = window.innerWidth || designWidth;
380
+ const viewportHeight = window.innerHeight || designHeight;
381
+ const nextScale = Math.min(
382
+ viewportWidth / designWidth,
383
+ viewportHeight / designHeight,
384
+ 1
385
+ );
386
+ setScale(nextScale);
387
+ };
388
+ update();
389
+ window.addEventListener("resize", update);
390
+ return () => window.removeEventListener("resize", update);
391
+ }, [designHeight, designWidth]);
392
+ return scale;
393
+ }
@@ -0,0 +1,196 @@
1
+ .pisell-kiosk-sku-detail-viewport {
2
+ position: relative;
3
+ width: 100vw;
4
+ height: 100vh;
5
+ overflow: hidden;
6
+ background: #f2f4f7;
7
+ }
8
+
9
+ .pisell-kiosk-sku-detail {
10
+ position: absolute;
11
+ top: 0;
12
+ left: 50%;
13
+ width: 1080px;
14
+ height: 1800px;
15
+ overflow-y: auto;
16
+ background: #f2f4f7;
17
+ background-size: cover;
18
+ background-position: center;
19
+ padding: 40px;
20
+ box-sizing: border-box;
21
+ }
22
+
23
+ .pisell-kiosk-sku-detail__content {
24
+ width: 100%;
25
+ margin: 0 auto;
26
+ display: flex;
27
+ flex-direction: column;
28
+ gap: 40px;
29
+ padding-bottom: 220px; // avoid overlap with footer
30
+ .pisell-pro-selector_header-content {
31
+ .pisell-pro-selector_header-content-title {
32
+ color: #101828;
33
+ font-size: 36px !important;
34
+ }
35
+ .pisell-lowcode-tag {
36
+ font-size: 22px !important;
37
+ margin-left: 20px !important;
38
+ padding-top: 5px !important;
39
+ padding-bottom: 5px !important;
40
+ }
41
+ }
42
+ .pisell-pro-selector_tip {
43
+ font-size: 36px !important;
44
+ color: #667085;
45
+ }
46
+ .pisell-sku-options-selection-variant-card__title {
47
+ font-size: 36px !important;
48
+ font-weight: 600 !important;
49
+ color: #101828;
50
+ }
51
+ .pisell-sku-options-selection-variant-card__price {
52
+ font-size: 30px !important;
53
+ }
54
+ .pisell-sku-options-selection-variant-card {
55
+ padding-top: 30px !important;
56
+ padding-bottom: 30px !important;
57
+ }
58
+ }
59
+
60
+ .pisell-kiosk-sku-detail__hero {
61
+ width: 100%;
62
+ border-radius: 40px;
63
+ overflow: hidden;
64
+ background: #ffffff;
65
+ }
66
+
67
+ .pisell-kiosk-sku-detail__hero-img {
68
+ width: 100%;
69
+ height: 633px;
70
+ object-fit: cover;
71
+ display: block;
72
+ }
73
+
74
+ .pisell-kiosk-sku-detail__hero-placeholder {
75
+ width: 100%;
76
+ height: 633px;
77
+ background: #f2f4f7;
78
+ }
79
+
80
+ .pisell-kiosk-sku-detail__header {
81
+ display: flex;
82
+ flex-direction: column;
83
+ align-items: center;
84
+ gap: 20px;
85
+ text-align: center;
86
+ }
87
+
88
+ .pisell-kiosk-sku-detail__title {
89
+ font-size: 60px;
90
+ line-height: 72px;
91
+ font-weight: 600;
92
+ color: #000;
93
+ }
94
+
95
+ .pisell-kiosk-sku-detail__desc {
96
+ font-size: 36px;
97
+ line-height: 44px;
98
+ font-weight: 400;
99
+ color: #475467;
100
+ }
101
+
102
+ .pisell-kiosk-sku-detail__price-range {
103
+ font-size: 48px;
104
+ line-height: 60px;
105
+ font-weight: 600;
106
+ color: #f79009;
107
+ }
108
+
109
+ .pisell-kiosk-sku-detail__error {
110
+ font-size: 20px;
111
+ line-height: 30px;
112
+ color: #b42318;
113
+ }
114
+
115
+ .pisell-kiosk-sku-detail__options-card {
116
+ background: #fff;
117
+ border-radius: 40px;
118
+ padding: 40px;
119
+ .pisell-pro-selector_options-container {
120
+ grid-template-columns: 1fr 1fr !important;
121
+ }
122
+ }
123
+
124
+ .pisell-kiosk-sku-detail__options-loading {
125
+ font-size: 20px;
126
+ color: #667085;
127
+ padding: 20px 0;
128
+ }
129
+
130
+ .pisell-kiosk-sku-detail__footer {
131
+ // 注意:父容器有 transform(scale),fixed 会相对该容器定位(适配小分辨率缩放舞台)
132
+ position: fixed;
133
+ left: 30px;
134
+ right: 30px;
135
+ bottom: 30px;
136
+ transform: none;
137
+ width: auto;
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: space-between;
141
+ gap: 20px;
142
+ padding: 30px;
143
+ background: #fff;
144
+ border: 1px solid #d0d5dd;
145
+ border-radius: 80px;
146
+ box-shadow:
147
+ 0px 4px 6px -2px rgba(16, 24, 40, 0.03),
148
+ 0px 12px 16px -4px rgba(16, 24, 40, 0.08);
149
+ box-sizing: border-box;
150
+ }
151
+
152
+ .pisell-kiosk-sku-detail__back-btn {
153
+ border-radius: 80px;
154
+ border: 1px solid #98a2b3 !important;
155
+ background: #fff !important;
156
+ color: #101828 !important;
157
+ height: 72px;
158
+ padding: 0 24px;
159
+ font-size: 20px;
160
+ font-weight: 600;
161
+ }
162
+
163
+ .pisell-kiosk-sku-detail__footer-center {
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 20px;
167
+ // 靠右,并与右侧主按钮保持 20px 间距
168
+ margin-left: auto;
169
+ margin-right: 20px;
170
+ }
171
+
172
+ .pisell-kiosk-sku-detail__item-total {
173
+ font-size: 20px;
174
+ line-height: 30px;
175
+ font-weight: 600;
176
+ color: #101828;
177
+ white-space: nowrap;
178
+ }
179
+
180
+ .pisell-kiosk-sku-detail__qty {
181
+ display: flex;
182
+ align-items: center;
183
+ }
184
+
185
+ .pisell-kiosk-sku-detail__add-btn {
186
+ border-radius: 80px !important;
187
+ height: 72px;
188
+ padding: 0 36px !important;
189
+ font-size: 24px !important;
190
+ font-weight: 600 !important;
191
+ background: #ffbc0d !important;
192
+ border-color: #ffbc0d !important;
193
+ color: #fff !important;
194
+ }
195
+
196
+