@pisell/private-materials 6.11.181 → 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 (35) 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 +113 -12
  14. package/es/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +2 -2
  15. package/es/plus/pisellSalesManagement/config/booking.d.ts +6 -7
  16. package/es/plus/pisellSalesManagement/hooks/useBookingPerspective.js +3 -1
  17. package/es/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +0 -1
  18. package/es/plus/pisellSalesManagement/index.js +1 -1
  19. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  20. package/lib/components/checkout/PaymentModal.js +2 -1
  21. package/lib/components/eftposPay/amount.d.ts +1 -1
  22. package/lib/components/eftposPay/app.d.ts +1 -1
  23. package/lib/components/eftposPay/device.d.ts +1 -1
  24. package/lib/components/ticketBooking/components/ticketBooking/index.d.ts +16 -0
  25. package/lib/plus/pisellReservation/PisellReservation.js +8 -3
  26. package/lib/plus/pisellReservation/components/bookingDetailModal/ReservationBookingDetailModal.js +2 -2
  27. package/lib/plus/pisellSalesManagement/config/booking.d.ts +6 -7
  28. package/lib/plus/pisellSalesManagement/hooks/useBookingPerspective.js +2 -1
  29. package/lib/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +0 -1
  30. package/lib/plus/pisellSalesManagement/index.js +1 -1
  31. package/package.json +4 -4
  32. package/es/plus/pisellReservation/docs/booking-detail-modal-data-ui-map.html +0 -357
  33. package/es/plus/pisellReservation/docs/floor-room-card-data-ui-map.html +0 -841
  34. package/lib/plus/pisellReservation/docs/booking-detail-modal-data-ui-map.html +0 -357
  35. 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>