@pisell/private-materials 6.11.180 → 6.11.182

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 (50) 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/meta.js +1 -1
  5. package/build/lowcode/render/default/view.js +1 -1
  6. package/build/lowcode/view.js +1 -1
  7. package/es/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  8. package/es/components/checkout/PaymentModal.js +2 -1
  9. package/es/components/eftposPay/amount.d.ts +1 -1
  10. package/es/components/eftposPay/app.d.ts +1 -1
  11. package/es/components/eftposPay/device.d.ts +1 -1
  12. package/es/components/ticketBooking/components/ticketBooking/index.d.ts +16 -0
  13. package/es/plus/pisellReservation/PisellReservation.js +126 -16
  14. package/es/plus/pisellReservation/PisellVenueWallPage.d.ts +1 -0
  15. package/es/plus/pisellReservation/PisellVenueWallPage.js +1 -0
  16. package/es/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +2 -2
  17. package/es/plus/pisellReservation/floorMap/useReservationFloorPlan.d.ts +0 -1
  18. package/es/plus/pisellReservation/hooks/useReservationSalesHostData.d.ts +5 -0
  19. package/es/plus/pisellReservation/hooks/useReservationSalesHostData.js +7 -3
  20. package/es/plus/pisellReservation/hooks/useReservationWallClockFollow.d.ts +7 -4
  21. package/es/plus/pisellReservation/hooks/useReservationWallClockFollow.js +54 -15
  22. package/es/plus/pisellReservation/types.d.ts +6 -0
  23. package/es/plus/pisellSalesManagement/config/booking.d.ts +6 -7
  24. package/es/plus/pisellSalesManagement/hooks/useBookingPerspective.js +3 -1
  25. package/es/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +0 -1
  26. package/es/plus/pisellSalesManagement/index.js +1 -1
  27. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  28. package/lib/components/checkout/PaymentModal.js +2 -1
  29. package/lib/components/eftposPay/amount.d.ts +1 -1
  30. package/lib/components/eftposPay/app.d.ts +1 -1
  31. package/lib/components/eftposPay/device.d.ts +1 -1
  32. package/lib/components/ticketBooking/components/ticketBooking/index.d.ts +16 -0
  33. package/lib/plus/pisellReservation/PisellReservation.js +21 -6
  34. package/lib/plus/pisellReservation/PisellVenueWallPage.d.ts +1 -0
  35. package/lib/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +2 -2
  36. package/lib/plus/pisellReservation/floorMap/useReservationFloorPlan.d.ts +0 -1
  37. package/lib/plus/pisellReservation/hooks/useReservationSalesHostData.d.ts +5 -0
  38. package/lib/plus/pisellReservation/hooks/useReservationSalesHostData.js +4 -2
  39. package/lib/plus/pisellReservation/hooks/useReservationWallClockFollow.d.ts +7 -4
  40. package/lib/plus/pisellReservation/hooks/useReservationWallClockFollow.js +47 -16
  41. package/lib/plus/pisellReservation/types.d.ts +6 -0
  42. package/lib/plus/pisellSalesManagement/config/booking.d.ts +6 -7
  43. package/lib/plus/pisellSalesManagement/hooks/useBookingPerspective.js +2 -1
  44. package/lib/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +0 -1
  45. package/lib/plus/pisellSalesManagement/index.js +1 -1
  46. package/package.json +4 -4
  47. package/es/plus/pisellReservation/docs/booking-detail-modal-data-ui-map.html +0 -357
  48. package/es/plus/pisellReservation/docs/floor-room-card-data-ui-map.html +0 -841
  49. package/lib/plus/pisellReservation/docs/booking-detail-modal-data-ui-map.html +0 -357
  50. package/lib/plus/pisellReservation/docs/floor-room-card-data-ui-map.html +0 -841
@@ -1,357 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>预约详情弹窗 · 数据来源与 UI 对应</title>
7
- <link rel="preconnect" href="https://fonts.googleapis.com" />
8
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
- <link
10
- href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,600;0,9..40,700&family=JetBrains+Mono:wght@400;600&display=swap"
11
- rel="stylesheet"
12
- />
13
- <style>
14
- :root {
15
- --ink: #1a1f1c;
16
- --muted: #5c6560;
17
- --line: #c8d0ca;
18
- --warn-bg: #fff8f0;
19
- --warn-border: #f0c9a8;
20
- --mono: "JetBrains Mono", monospace;
21
- --sans: "DM Sans", system-ui, sans-serif;
22
- }
23
- * {
24
- box-sizing: border-box;
25
- }
26
- body {
27
- margin: 0;
28
- padding: 32px 24px 56px;
29
- font-family: var(--sans);
30
- color: var(--ink);
31
- background: linear-gradient(165deg, #eef2ef 0%, #e2e8e4 45%, #dce5df 100%);
32
- min-height: 100vh;
33
- }
34
- h1 {
35
- font-size: 1.35rem;
36
- font-weight: 700;
37
- letter-spacing: -0.02em;
38
- margin: 0 0 8px;
39
- }
40
- .lead {
41
- color: var(--muted);
42
- font-size: 0.9rem;
43
- max-width: 820px;
44
- line-height: 1.55;
45
- margin-bottom: 28px;
46
- }
47
- .panel {
48
- border: 1px solid var(--line);
49
- border-radius: 10px;
50
- background: #fff;
51
- padding: 16px 18px 18px;
52
- margin-bottom: 20px;
53
- max-width: 1100px;
54
- box-shadow: 0 4px 18px rgba(26, 31, 28, 0.06);
55
- }
56
- .panel h2 {
57
- margin: 0 0 12px;
58
- font-size: 0.72rem;
59
- font-weight: 700;
60
- text-transform: uppercase;
61
- letter-spacing: 0.08em;
62
- color: var(--muted);
63
- }
64
- .panel p {
65
- margin: 0 0 10px;
66
- font-size: 0.82rem;
67
- line-height: 1.5;
68
- color: var(--muted);
69
- }
70
- .panel p:last-child {
71
- margin-bottom: 0;
72
- }
73
- pre.flow {
74
- margin: 0;
75
- padding: 12px 14px;
76
- background: #f4f7f5;
77
- border-radius: 8px;
78
- font-family: var(--mono);
79
- font-size: 0.68rem;
80
- line-height: 1.5;
81
- color: #2a332e;
82
- overflow-x: auto;
83
- white-space: pre;
84
- }
85
- .warn {
86
- margin-top: 12px;
87
- padding: 10px 12px;
88
- background: var(--warn-bg);
89
- border: 1px solid var(--warn-border);
90
- border-radius: 8px;
91
- font-size: 0.75rem;
92
- line-height: 1.5;
93
- color: #7a4a1c;
94
- }
95
- .warn strong {
96
- font-family: var(--mono);
97
- font-size: 0.92em;
98
- }
99
- table.map {
100
- width: 100%;
101
- border-collapse: collapse;
102
- font-size: 0.72rem;
103
- margin-top: 8px;
104
- }
105
- table.map th,
106
- table.map td {
107
- border: 1px solid var(--line);
108
- padding: 8px 10px;
109
- text-align: left;
110
- vertical-align: top;
111
- }
112
- table.map th {
113
- background: #f0f4f1;
114
- font-weight: 700;
115
- color: #2a332e;
116
- width: 26%;
117
- }
118
- table.map td {
119
- font-family: var(--mono);
120
- font-size: 0.68rem;
121
- color: #2d4a3e;
122
- word-break: break-word;
123
- }
124
- table.map td.note {
125
- font-family: var(--sans);
126
- color: var(--muted);
127
- font-size: 0.7rem;
128
- }
129
- code {
130
- font-family: var(--mono);
131
- font-size: 0.92em;
132
- background: rgba(45, 106, 79, 0.1);
133
- padding: 0 4px;
134
- border-radius: 3px;
135
- }
136
- .src {
137
- font-size: 0.68rem;
138
- color: var(--muted);
139
- margin-top: 8px;
140
- }
141
- ul.files {
142
- margin: 8px 0 0;
143
- padding-left: 1.2em;
144
- font-size: 0.75rem;
145
- color: var(--muted);
146
- line-height: 1.55;
147
- }
148
- ul.files code {
149
- background: transparent;
150
- padding: 0;
151
- color: #2d4a3e;
152
- }
153
- </style>
154
- </head>
155
- <body>
156
- <h1>预约详情弹窗 · 数据来源与 UI 对应</h1>
157
- <p class="lead">
158
- 与平面图
159
- <a href="./floor-room-card-data-ui-map.html">RoomCard 数据说明</a>
160
- 同属「宿主行 → UI」对照文档。弹窗正文为<strong>单条</strong>
161
- <code>floorMapSourceBookings</code> 项(点击哪条打开哪条,不做
162
- <code>booking_id</code> 聚合)。Modal 使用 <code>footer=null</code>,无底部「应付」条。正文三块(粉头、操作格、商品)包在
163
- <code>pisell-res-booking-detail-modal__booking-card</code> 内,样式见
164
- <code>ReservationBookingDetailModal.less</code>。
165
- </p>
166
-
167
- <div class="panel">
168
- <h2>数据从哪来</h2>
169
- <p>
170
- <code>PisellReservation</code> 在平面图「详情弹窗」模式下,将当前点击解析得到的<strong>单条</strong>记录写入
171
- <code>bookingDetailRaw</code>,并传入 <code>ReservationBookingDetailModal</code> 的
172
- <code>raw</code>;当前桌位合并行(与图元一致)传入 <code>tableRow</code>。
173
- </p>
174
- <pre class="flow">平面图点击
175
- → resolveFloorMapHostCheckoutRecord(可选命中子卡片 data 属性)
176
- → setBookingDetailRaw(rec) // rec 为 floorMapSourceBookings[] 中一条
177
- → &lt;ReservationBookingDetailModal raw={bookingDetailRaw} tableRow={…} /&gt;</pre>
178
- <div class="warn">
179
- <strong>禁止</strong>使用 <code>order.products</code> 作为商品列表。商品区<strong>仅</strong>读取与
180
- <code>order</code> 同级的顶层 <code>raw.products[]</code>(与接口示例一致)。
181
- </div>
182
- <p class="src">
183
- 示例 JSON:<code>packages/private-materials/src/plus/pisellReservation/api/api-bookings-demo.json</code>(数组元素即一条
184
- booking;约第 227 行起为顶层 <code>products</code>)。
185
- </p>
186
- </div>
187
-
188
- <div class="panel">
189
- <h2>Modal 标题栏</h2>
190
- <p>
191
- 固定文案 <code>pisell-reservation.booking-detail.modal-title</code>(中/英/繁:<strong>详情</strong> / Details / 詳情;ja/pt 同步)。预约号、资源摘要、预约状态等均在下方组合卡片的粉头
192
- <code>order-strip</code> 中展示。
193
- </p>
194
- </div>
195
-
196
- <div class="panel">
197
- <h2>组合卡片 · 粉头信息条(order-strip)</h2>
198
- <p>
199
- 视图模型:<code>bookingDetailOrderStripFromRaw(raw)</code>。<strong>左上联系人</strong>:与平面图 RoomCard 同源
200
- <code>resolveFloorRoomCardHolder(raw)</code>(<code>holder</code> → <code>contacts_info</code> → 有效
201
- <code>customer_id</code> 时 <code>customer_name</code>+<code>phone</code>)。展示对齐 RoomCard
202
- <code>ContactInfo</code>:<strong>有姓名则显示姓名,有手机则并排显示脱敏尾号</strong>(<code>maskPisellReservationPhoneTail</code>);若仅有手机无姓名,整行显示脱敏手机(与
203
- <code>guestDisplayLine(holder, true)</code> 一致)。若解析不到任何联系人,则回退 <code>strip.eyebrow</code>。
204
- </p>
205
- <table class="map">
206
- <thead>
207
- <tr>
208
- <th>UI</th>
209
- <th>数据路径</th>
210
- <th class="note">备注</th>
211
- </tr>
212
- </thead>
213
- <tbody>
214
- <tr>
215
- <td>左上联系人</td>
216
- <td>
217
- <code>resolveFloorRoomCardHolder(raw)</code> → <code>guestHeadline</code>(姓名优先,否则脱敏手机);有姓名且
218
- <code>contactPhone</code> 时并排脱敏手机;无联系人时 <code>strip.eyebrow</code>
219
- </td>
220
- <td class="note">与 RoomCard <code>ContactInfo</code> / <code>guestDisplayLine</code> 一致</td>
221
- </tr>
222
- <tr>
223
- <td>右上(同一行)</td>
224
- <td>
225
- 容器 <code>pisell-res-booking-detail-modal__order-strip-top-right</code>:<strong>flex 横向</strong>,右对齐。依次为支付胶囊(<code>order.payment_status</code> /
226
- <code>raw.payment_status</code>)与预约状态徽章(<code>raw.status</code> →
227
- <code>booking-detail.status-enum.*</code>,来自 <code>bookingDetailFromRaw</code>)。
228
- </td>
229
- <td class="note">原 Modal 标题内状态已迁入粉头</td>
230
- </tr>
231
- <tr>
232
- <td>大号字(预约 ID)</td>
233
- <td><code>raw.booking_id</code> → <code>raw.id</code> → <code>order.shop_full_order_number</code> → <code>order.order_number</code></td>
234
- <td class="note"><code>strip.stripBookingId</code></td>
235
- </tr>
236
- <tr>
237
- <td>时段一行</td>
238
- <td>优先 <code>start_at</code>/<code>end_at</code>;否则 <code>start_date</code>+<code>start_time</code> 与 <code>end_date</code>+<code>end_time</code></td>
239
- <td class="note"><code>buildStripScheduleLine</code>,失败回退 <code>buildTimeRange</code></td>
240
- </tr>
241
- <tr>
242
- <td>左下「n 件 + 订单合计」</td>
243
- <td>
244
- 件数 <strong>n</strong>:优先 <code>raw.products</code> 有效行数(与下方 ProductCard 列表条数一致);若无数组再回退
245
- <code>order.summary.product_quantity</code>。合计金额仍用
246
- <code>order.summary.total_amount</code> + <code>order.currency_symbol</code>
247
- </td>
248
- <td class="note">模板键 <code>strip-items-total</code></td>
249
- </tr>
250
- <tr>
251
- <td>右下 Due</td>
252
- <td>
253
- <code>bookingDetailOrderStripFromRaw</code>:<code>dueWithSymbol</code> = <code>expect_amount</code> 或
254
- <code>total_amount</code> 经 <code>moneyWithSymbol(order.currency_symbol, …)</code>。UI 上
255
- <code>strip-due-label</code>(如「Due:」)与金额在
256
- <code>pisell-res-booking-detail-modal__order-strip-due</code> 内<strong>同一行</strong>(flex-row + baseline)。
257
- </td>
258
- <td class="note">与左下「n 件 + 合计」同一行 flex 底对齐</td>
259
- </tr>
260
- </tbody>
261
- </table>
262
- </div>
263
-
264
- <div class="panel">
265
- <h2>组合卡片 · 操作按钮(仅 UI)</h2>
266
- <p>
267
- <strong>布局</strong>:<code>…__action-grid</code> 为 <strong>2 行 × 每行 3 个</strong>(<code>grid-template-columns: repeat(3,1fr)</code>)。每格
268
- <code>…__action-cell</code> 为 <strong>横向 flex</strong>:<strong>图标在左</strong>(<code>@ant-design/icons</code>),<strong>文案在右</strong>(locales
269
- <code>booking-detail.action-edit</code> 等六键)。
270
- </p>
271
- <p>
272
- <strong>交互</strong>:点击仅 <code>preventDefault</code> + <code>stopPropagation</code>,不接宿主业务。
273
- </p>
274
- </div>
275
-
276
- <div class="panel">
277
- <h2>组合卡片 · 商品列表(ProductCard)</h2>
278
- <p>
279
- 遍历 <code>Array.isArray(raw.products) ? raw.products : []</code>,经
280
- <code>bookingProductLineToProductCardData</code> 映射为 <code>@pisell/materials</code> 的
281
- <code>ProductCard</code> <code>dataSource</code>。
282
- </p>
283
- <table class="map">
284
- <thead>
285
- <tr>
286
- <th>UI / 组件字段</th>
287
- <th>行对象字段(顶层 products[])</th>
288
- <th class="note">备注</th>
289
- </tr>
290
- </thead>
291
- <tbody>
292
- <tr>
293
- <td><code>name</code></td>
294
- <td><code>product_title</code>(多语言对象,按 auto/zh-CN/en… 回退)</td>
295
- <td class="note">—</td>
296
- </tr>
297
- <tr>
298
- <td><code>product_option_string</code></td>
299
- <td><code>product_sku.subtitle</code>(多语言对象)</td>
300
- <td class="note">—</td>
301
- </tr>
302
- <tr>
303
- <td><code>num</code></td>
304
- <td><code>product_quantity</code></td>
305
- <td class="note">—</td>
306
- </tr>
307
- <tr>
308
- <td><code>price</code> / <code>total</code></td>
309
- <td><code>selling_price</code>、<code>payment_price</code></td>
310
- <td class="note">数值解析为 number</td>
311
- </tr>
312
- <tr>
313
- <td><code>_id</code>(列表 key)</td>
314
- <td><code>order_detail_id</code> → <code>booking_uid</code> → <code>product_id</code>+index</td>
315
- <td class="note">稳定即可</td>
316
- </tr>
317
- <tr>
318
- <td><code>id</code></td>
319
- <td><code>product_id</code></td>
320
- <td class="note">—</td>
321
- </tr>
322
- </tbody>
323
- </table>
324
- <div class="warn" style="margin-top: 12px">
325
- <strong>货币符号</strong>:<code>ProductCard</code> 内部金额区读的是 <code>dataSource.symbol</code>;根上的
326
- <code>symbol</code> prop <strong>不会</strong>自动写入 <code>dataSource</code>。弹窗内写法为 JSX
327
- <code>dataSource=&#123;&#123; ...ds, symbol: currencySymbol &#125;&#125;</code>(<code>currencySymbol</code> =
328
- <code>orderCurrencySymbol(raw.order)</code>,空则 <code>$</code>)。
329
- </div>
330
- <p class="src">
331
- 只读:<code>bookingProductLineToProductCardData</code> 已设 <code>isShowAction: false</code>、<code>isShowNote: false</code>;弹窗再传
332
- <code>isShowImage</code>、<code>isShowHolder</code>、<code>isShowDelete</code>、<code>isShowPackageNote</code>、<code>isShowEditProduct</code> 均为
333
- <code>false</code>。默认最多展示 3 条,超出显示 <code>see-all</code> 按钮展开;粉头件数/合计文案键为
334
- <code>strip-items-total</code>。
335
- </p>
336
- </div>
337
-
338
- <div class="panel">
339
- <h2>tableRow(可选)</h2>
340
- <p>
341
- 类型 <code>PisellReservationTableRow</code>。当前弹窗内组合卡片<strong>未</strong>单独展示桌位行列;若后续扩展,可与
342
- <code>bookingDetailFromRaw</code> 中 <code>roomTitleLabel</code> / <code>roomCapacityLabel</code> 同源(<code>code</code>、<code>main_field</code>、<code>capacityLabel</code>)。
343
- </p>
344
- </div>
345
-
346
- <div class="panel">
347
- <h2>相关源码</h2>
348
- <ul class="files">
349
- <li><code>PisellReservation.tsx</code> — <code>bookingDetailRaw</code>、弹窗挂载</li>
350
- <li><code>components/bookingDetailModal/ReservationBookingDetailModal.tsx</code>、<code>ReservationBookingDetailModal.less</code></li>
351
- <li><code>components/bookingDetailModal/bookingDetailFromRaw.ts</code></li>
352
- <li><code>components/bookingDetailModal/bookingProductToProductCard.ts</code></li>
353
- <li><code>floorMap/floorMapHostCheckout.ts</code> — <code>resolveFloorMapHostCheckoutRecord</code></li>
354
- </ul>
355
- </div>
356
- </body>
357
- </html>