@pisell/pisellos 2.1.173 → 2.1.175
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.
- package/dist/modules/Holder/index.d.ts +48 -0
- package/dist/modules/Holder/index.js +640 -0
- package/dist/modules/Holder/types.d.ts +123 -0
- package/dist/modules/Holder/types.js +1 -0
- package/dist/modules/Holder/utils.d.ts +13 -0
- package/dist/modules/Holder/utils.js +34 -0
- package/dist/modules/OpenData/types.d.ts +1 -0
- package/dist/modules/Order/index.d.ts +1 -0
- package/dist/modules/Order/index.js +18 -1
- package/dist/modules/Order/types.d.ts +2 -0
- package/dist/modules/Order/utils.d.ts +10 -0
- package/dist/modules/Order/utils.js +35 -3
- package/dist/modules/Product/types.d.ts +7 -0
- package/dist/modules/ProductList/index.js +13 -6
- package/dist/modules/Rules/index.js +2 -1
- package/dist/modules/index.d.ts +1 -0
- package/dist/modules/index.js +2 -1
- package/dist/plugins/window.d.ts +1 -0
- package/dist/solution/BookingByStep/index.d.ts +17 -2
- package/dist/solution/BookingByStep/index.js +276 -204
- package/dist/solution/BookingByStep/types.d.ts +2 -1
- package/dist/solution/BookingByStep/types.js +3 -1
- package/dist/solution/ScanOrder/index.d.ts +5 -5
- package/dist/solution/ScanOrder/index.js +59 -6
- package/dist/solution/ScanOrder/types.d.ts +7 -0
- package/dist/solution/VenueBooking/index.d.ts +19 -0
- package/dist/solution/VenueBooking/index.js +978 -748
- package/dist/solution/VenueBooking/types.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/lib/model/strategy/adapter/promotion/index.js +49 -0
- package/lib/modules/Holder/index.d.ts +48 -0
- package/lib/modules/Holder/index.js +402 -0
- package/lib/modules/Holder/types.d.ts +123 -0
- package/lib/modules/Holder/types.js +17 -0
- package/lib/modules/Holder/utils.d.ts +13 -0
- package/lib/modules/Holder/utils.js +71 -0
- package/lib/modules/OpenData/types.d.ts +1 -0
- package/lib/modules/Order/index.d.ts +1 -0
- package/lib/modules/Order/index.js +14 -0
- package/lib/modules/Order/types.d.ts +2 -0
- package/lib/modules/Order/utils.d.ts +10 -0
- package/lib/modules/Order/utils.js +36 -5
- package/lib/modules/Product/types.d.ts +7 -0
- package/lib/modules/ProductList/index.js +8 -1
- package/lib/modules/Rules/index.js +1 -1
- package/lib/modules/index.d.ts +1 -0
- package/lib/modules/index.js +3 -1
- package/lib/plugins/window.d.ts +1 -0
- package/lib/solution/BookingByStep/index.d.ts +17 -2
- package/lib/solution/BookingByStep/index.js +39 -0
- package/lib/solution/BookingByStep/types.d.ts +2 -1
- package/lib/solution/BookingByStep/types.js +5 -0
- package/lib/solution/ScanOrder/index.d.ts +5 -5
- package/lib/solution/ScanOrder/index.js +56 -6
- package/lib/solution/ScanOrder/types.d.ts +7 -0
- package/lib/solution/VenueBooking/index.d.ts +19 -0
- package/lib/solution/VenueBooking/index.js +134 -16
- package/lib/solution/VenueBooking/types.d.ts +2 -0
- package/lib/types/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProductList, CartModule, ProductData, AccountModule, AccountListModule, DateModule, GuestListModule, OrderModule, PaymentModule, ResourceListModule, StepModule, SummaryModule, SalesSummaryModule, ScheduleModule, ScanOrderLoggerModule } from '../../modules';
|
|
1
|
+
import { ProductList, CartModule, ProductData, AccountModule, AccountListModule, DateModule, GuestListModule, OrderModule, PaymentModule, ResourceListModule, StepModule, SummaryModule, SalesSummaryModule, ScheduleModule, ScanOrderLoggerModule, HolderModule } from '../../modules';
|
|
2
2
|
export interface BookingByStepState {
|
|
3
3
|
cart: CartModule;
|
|
4
4
|
summary: SummaryModule;
|
|
@@ -16,6 +16,7 @@ export interface BookingByStepState {
|
|
|
16
16
|
schedule: ScheduleModule;
|
|
17
17
|
salesSummary?: SalesSummaryModule;
|
|
18
18
|
scanOrderLogger?: ScanOrderLoggerModule;
|
|
19
|
+
holder: HolderModule;
|
|
19
20
|
}
|
|
20
21
|
export declare function createModule<T extends keyof BookingByStepState>(moduleName: T, solutionName: string, name?: string, version?: string): BookingByStepState[T];
|
|
21
22
|
export declare enum BookingByStepHooks {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProductList, CartModule, AccountListModule, DateModule, OrderModule, PaymentModule, StepModule, SummaryModule, SalesSummaryModule, ScheduleModule, ScanOrderLoggerModule } from "../../modules";
|
|
1
|
+
import { ProductList, CartModule, AccountListModule, DateModule, OrderModule, PaymentModule, StepModule, SummaryModule, SalesSummaryModule, ScheduleModule, ScanOrderLoggerModule, HolderModule } from "../../modules";
|
|
2
2
|
export function createModule(moduleName, solutionName, name, version) {
|
|
3
3
|
switch (moduleName) {
|
|
4
4
|
case 'cart':
|
|
@@ -23,6 +23,8 @@ export function createModule(moduleName, solutionName, name, version) {
|
|
|
23
23
|
return new ScheduleModule("".concat(solutionName, "_").concat(name || moduleName), version);
|
|
24
24
|
case 'scanOrderLogger':
|
|
25
25
|
return new ScanOrderLoggerModule("".concat(solutionName, "_").concat(name || moduleName), version);
|
|
26
|
+
case 'holder':
|
|
27
|
+
return new HolderModule("".concat(solutionName, "_").concat(name || moduleName), version);
|
|
26
28
|
default:
|
|
27
29
|
throw new Error("Unknown module type: ".concat(moduleName));
|
|
28
30
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Module, ModuleOptions, PisellCore } from '../../types';
|
|
2
2
|
import { BaseModule } from '../../modules/BaseModule';
|
|
3
|
-
import { ScanOrderAddLogParams, ScanOrderAvailabilityInfo, ScanOrderAllowAddItemsInfo, ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderReservationResourceSelectInfo, ScanOrderScanCodeResult, ScanOrderSyncAdditionalOrderResult, ScanOrderTempOrder } from './types';
|
|
3
|
+
import { ScanOrderAddLogParams, ScanOrderAvailabilityInfo, ScanOrderFulfillmentModes, ScanOrderAllowAddItemsInfo, ScanOrderOrderProduct, ScanOrderOrderProductIdentity, ScanOrderReservationResourceSelectInfo, ScanOrderScanCodeResult, ScanOrderSyncAdditionalOrderResult, ScanOrderTempOrder } from './types';
|
|
4
4
|
import type { UpdateProductInOrderParams } from '../../modules/Order/types';
|
|
5
5
|
import type { Discount } from '../../modules/Discount/types';
|
|
6
6
|
import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
|
|
@@ -75,6 +75,9 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
75
75
|
service_type: 'dine_in' | '';
|
|
76
76
|
pickup_reference_mode: 'counter_pickup' | 'table_service';
|
|
77
77
|
};
|
|
78
|
+
setFulfillmentMode(mode: string): Record<string, any> & {
|
|
79
|
+
service_type?: string | undefined;
|
|
80
|
+
};
|
|
78
81
|
setPickupRef(buzzer: string): string;
|
|
79
82
|
private ensureTempOrder;
|
|
80
83
|
addNewOrder(): Promise<ScanOrderTempOrder>;
|
|
@@ -147,10 +150,7 @@ export declare class ScanOrderImpl extends BaseModule implements Module {
|
|
|
147
150
|
syncAdditionalOrderFromResource(resourceId?: string | null): Promise<ScanOrderSyncAdditionalOrderResult>;
|
|
148
151
|
getReservationResourceSelectType(): ScanOrderReservationResourceSelectInfo;
|
|
149
152
|
checkAllowAddItems(): ScanOrderAllowAddItemsInfo;
|
|
150
|
-
getFulfillmentModes():
|
|
151
|
-
enablePickup: boolean;
|
|
152
|
-
enableTableService: boolean;
|
|
153
|
-
};
|
|
153
|
+
getFulfillmentModes(): ScanOrderFulfillmentModes;
|
|
154
154
|
checkManualPickupRef(): {
|
|
155
155
|
enabled: boolean;
|
|
156
156
|
manualInputType?: string;
|
|
@@ -857,7 +857,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
857
857
|
var tempOrder = this.store.order.ensureTempOrder();
|
|
858
858
|
tempOrder.metadata = _objectSpread(_objectSpread({}, tempOrder.metadata || {}), {}, {
|
|
859
859
|
shop_service_data: _objectSpread(_objectSpread({}, (tempOrder.metadata || {}).shop_service_data || {}), {}, {
|
|
860
|
-
service_type: ((_this$otherParams4 = this.otherParams) === null || _this$otherParams4 === void 0 ? void 0 : _this$otherParams4.businessCode) === 'dine_in' ? 'dine_in' : '
|
|
860
|
+
service_type: ((_this$otherParams4 = this.otherParams) === null || _this$otherParams4 === void 0 ? void 0 : _this$otherParams4.businessCode) === 'dine_in' ? 'dine_in' : '',
|
|
861
861
|
pickup_reference_mode: mode
|
|
862
862
|
})
|
|
863
863
|
});
|
|
@@ -874,6 +874,44 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
874
874
|
}
|
|
875
875
|
}
|
|
876
876
|
|
|
877
|
+
// 新版履约方式直接保存配置值;旧取餐标识方式继续由 setPickupReferenceMode 处理。
|
|
878
|
+
}, {
|
|
879
|
+
key: "setFulfillmentMode",
|
|
880
|
+
value: function setFulfillmentMode(mode) {
|
|
881
|
+
this.logMethodStart('setFulfillmentMode', {
|
|
882
|
+
mode: mode
|
|
883
|
+
});
|
|
884
|
+
try {
|
|
885
|
+
var _this$getFulfillmentM = this.getFulfillmentModes(),
|
|
886
|
+
handoverModes = _this$getFulfillmentM.handoverModes;
|
|
887
|
+
var clearMode = mode === '' && (handoverModes === null || handoverModes === void 0 ? void 0 : handoverModes.length) === 0;
|
|
888
|
+
if (!clearMode && !(handoverModes !== null && handoverModes !== void 0 && handoverModes.includes(mode))) {
|
|
889
|
+
throw new Error('Fulfillment mode is not enabled');
|
|
890
|
+
}
|
|
891
|
+
if (!this.store.order) throw new Error('order 模块未初始化');
|
|
892
|
+
var tempOrder = this.store.order.ensureTempOrder();
|
|
893
|
+
var serviceData = _objectSpread({}, (tempOrder.metadata || {}).shop_service_data || {});
|
|
894
|
+
if (clearMode) {
|
|
895
|
+
delete serviceData.service_type;
|
|
896
|
+
} else {
|
|
897
|
+
serviceData.service_type = mode;
|
|
898
|
+
}
|
|
899
|
+
tempOrder.metadata = _objectSpread(_objectSpread({}, tempOrder.metadata || {}), {}, {
|
|
900
|
+
shop_service_data: serviceData
|
|
901
|
+
});
|
|
902
|
+
this.store.order.persistTempOrder();
|
|
903
|
+
this.logMethodSuccess('setFulfillmentMode', {
|
|
904
|
+
mode: mode
|
|
905
|
+
});
|
|
906
|
+
return tempOrder.metadata.shop_service_data;
|
|
907
|
+
} catch (error) {
|
|
908
|
+
this.logMethodError('setFulfillmentMode', error, {
|
|
909
|
+
mode: mode
|
|
910
|
+
});
|
|
911
|
+
throw error;
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
|
|
877
915
|
// 存储用户自定义取餐标识到 tempOrder.buzzer
|
|
878
916
|
}, {
|
|
879
917
|
key: "setPickupRef",
|
|
@@ -3428,7 +3466,7 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3428
3466
|
return result;
|
|
3429
3467
|
}
|
|
3430
3468
|
|
|
3431
|
-
//
|
|
3469
|
+
// 新版履约方式配置存在时优先使用,缺失时保留旧取餐/送餐开关语义。
|
|
3432
3470
|
// 依赖 checkResourceAvailable 已缓存的 dineInConfig
|
|
3433
3471
|
}, {
|
|
3434
3472
|
key: "getFulfillmentModes",
|
|
@@ -3436,10 +3474,25 @@ export var ScanOrderImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3436
3474
|
var _this$otherParams20;
|
|
3437
3475
|
this.logMethodStart('getFulfillmentModes');
|
|
3438
3476
|
var dineInConfig = ((_this$otherParams20 = this.otherParams) === null || _this$otherParams20 === void 0 ? void 0 : _this$otherParams20.dineInConfig) || {};
|
|
3439
|
-
var
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3477
|
+
var configuredModes = dineInConfig['fulfillment.handover_mode'];
|
|
3478
|
+
var result;
|
|
3479
|
+
if (Object.prototype.hasOwnProperty.call(dineInConfig, 'fulfillment.handover_mode')) {
|
|
3480
|
+
var handoverModes = Array.isArray(configuredModes) ? Array.from(new Set(configuredModes.filter(function (mode) {
|
|
3481
|
+
return typeof mode === 'string';
|
|
3482
|
+
}).map(function (mode) {
|
|
3483
|
+
return mode.trim();
|
|
3484
|
+
}).filter(Boolean))) : [];
|
|
3485
|
+
result = {
|
|
3486
|
+
enablePickup: handoverModes.includes('pick_up'),
|
|
3487
|
+
enableTableService: handoverModes.includes('table_service'),
|
|
3488
|
+
handoverModes: handoverModes
|
|
3489
|
+
};
|
|
3490
|
+
} else {
|
|
3491
|
+
result = {
|
|
3492
|
+
enablePickup: Boolean(dineInConfig['fulfillment.enable_pickup']),
|
|
3493
|
+
enableTableService: Boolean(dineInConfig['fulfillment.enable_table_service'])
|
|
3494
|
+
};
|
|
3495
|
+
}
|
|
3443
3496
|
this.logMethodSuccess('getFulfillmentModes', result);
|
|
3444
3497
|
return result;
|
|
3445
3498
|
}
|
|
@@ -27,6 +27,12 @@ export interface ScanOrderConfig {
|
|
|
27
27
|
verifyResource: boolean;
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
|
+
export interface ScanOrderFulfillmentModes {
|
|
31
|
+
enablePickup: boolean;
|
|
32
|
+
enableTableService: boolean;
|
|
33
|
+
/** Present only when fulfillment.handover_mode is configured, including an empty list. */
|
|
34
|
+
handoverModes?: string[];
|
|
35
|
+
}
|
|
30
36
|
export interface ScanOrderOrderProductIdentity {
|
|
31
37
|
product_id: number | null;
|
|
32
38
|
product_variant_id: number;
|
|
@@ -34,6 +40,7 @@ export interface ScanOrderOrderProductIdentity {
|
|
|
34
40
|
/** 参与合并/匹配;与 remove 通配语义见 isSkuOnlyDeleteIdentity */
|
|
35
41
|
product_option_item?: any[];
|
|
36
42
|
product_bundle?: any[];
|
|
43
|
+
shop_id?: number | string;
|
|
37
44
|
}
|
|
38
45
|
export interface ScanOrderOrderProduct extends ScanOrderOrderProductIdentity {
|
|
39
46
|
order_detail_id: number | null;
|
|
@@ -7,6 +7,7 @@ import type { OpenDataAvailabilityResult } from '../../modules/OpenData';
|
|
|
7
7
|
import type { ProductData } from '../../modules/Product/types';
|
|
8
8
|
import { type CartItemSummary, type PaxInfo, type QuantityCheckResult, type QuantityLimitResult } from '../../model/strategy/adapter/itemRule';
|
|
9
9
|
import type { StrategyConfig } from '../../model/strategy/type';
|
|
10
|
+
import type { IAppendFormRecordParams, IRefreshAllFormRecordsParams } from '../../modules/Holder/types';
|
|
10
11
|
export * from './types';
|
|
11
12
|
interface VenueBookingItemRuleRuntimeConfig {
|
|
12
13
|
strategyConfigs?: StrategyConfig[];
|
|
@@ -52,6 +53,12 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
52
53
|
constructor(name?: string, version?: string);
|
|
53
54
|
private normalizeCustomerId;
|
|
54
55
|
private resolveCustomerIdFromLoginPayload;
|
|
56
|
+
private resolveHolderCustomerId;
|
|
57
|
+
/**
|
|
58
|
+
* 按商品 holder_config 预加载表单数据到 holderMap。
|
|
59
|
+
* appointment_booking 在加购时触发;venueBooking 在商品加载后预加载,避免 getHolderFormMap 为空。
|
|
60
|
+
*/
|
|
61
|
+
private preloadHolderForms;
|
|
55
62
|
private clearLoginEffectListeners;
|
|
56
63
|
private registerLoginEffect;
|
|
57
64
|
private registerCustomerLoginListeners;
|
|
@@ -199,6 +206,18 @@ export declare class VenueBookingImpl extends BaseModule implements Module {
|
|
|
199
206
|
getUIState<T = any>(key: string): T | undefined;
|
|
200
207
|
deleteUIState(key: string): void;
|
|
201
208
|
setBookingHolder(bookingUid: string, holder: any): void;
|
|
209
|
+
/**
|
|
210
|
+
* 获取 holder 表单 map
|
|
211
|
+
*/
|
|
212
|
+
getHolderFormMap(): import("../../modules/Holder").HolderFormMap;
|
|
213
|
+
/**
|
|
214
|
+
* UI 层触发:按当前 holderMap 批量刷新所有表单的 records
|
|
215
|
+
*/
|
|
216
|
+
refreshAllHolderFormRecords(params?: Pick<IRefreshAllFormRecordsParams, 'customer_id' | 'useCache' | 'recordsUrl' | 'num' | 'skip'>): Promise<import("../../modules/Holder").HolderFormMap>;
|
|
217
|
+
/**
|
|
218
|
+
* 添加表单记录
|
|
219
|
+
*/
|
|
220
|
+
appendFormRecord(params: IAppendFormRecordParams): import("../../modules/Holder").IFormRecord;
|
|
202
221
|
checkOpenDataAvailability(): Promise<OpenDataAvailabilityResult>;
|
|
203
222
|
setOtherParams(params: Record<string, any>, { cover }?: {
|
|
204
223
|
cover?: boolean;
|