@pisell/pisellos 0.0.569 → 0.10.2
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/core/index.js +10 -6
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -3
- package/dist/model/strategy/adapter/promotion/index.js +9 -0
- package/dist/model/strategy/adapter/walletPass/evaluator.js +7 -5
- package/dist/model/strategy/adapter/walletPass/example.js +26 -3
- package/dist/model/strategy/adapter/walletPass/index.js +5 -5
- package/dist/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/dist/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/dist/model/strategy/adapter/walletPass/utils.js +17 -92
- package/dist/model/strategy/strategy-example.js +19 -5
- package/dist/modules/BaseModule.d.ts +1 -1
- package/dist/modules/BaseModule.js +8 -10
- package/dist/modules/Cart/index.js +3 -0
- package/dist/modules/Cart/utils/cartProduct.js +1 -0
- package/dist/modules/Cart/utils/cartResource.js +0 -2
- package/dist/modules/Cart/utils/changePrice.js +9 -16
- package/dist/modules/Date/index.js +5 -1
- package/dist/modules/Discount/index.d.ts +0 -1
- package/dist/modules/Discount/index.js +7 -22
- package/dist/modules/Discount/types.d.ts +0 -1
- package/dist/modules/OpenData/index.js +2 -0
- package/dist/modules/Order/index.js +70 -40
- package/dist/modules/Payment/index.js +162 -97
- package/dist/modules/Payment/types.d.ts +4 -8
- package/dist/modules/Payment/walletpass.d.ts +0 -2
- package/dist/modules/Payment/walletpass.js +5 -4
- package/dist/modules/ProductList/index.d.ts +1 -1
- package/dist/modules/ProductList/index.js +3 -12
- package/dist/modules/ProductList/types.d.ts +0 -1
- package/dist/modules/Rules/index.js +126 -427
- package/dist/modules/SalesSummary/utils.js +1 -2
- package/dist/modules/Schedule/getDateIsInSchedule.js +0 -5
- package/dist/modules/Schedule/index.js +1 -0
- package/dist/modules/Schedule/utils.js +1 -0
- package/dist/modules/Step/index.js +1 -0
- package/dist/modules/Summary/utils.js +22 -43
- package/dist/plugins/request.js +4 -1
- package/dist/plugins/window.js +6 -2
- package/dist/server/index.js +129 -97
- package/dist/server/modules/menu/index.js +41 -32
- package/dist/server/modules/order/index.js +4 -2
- package/dist/server/modules/products/index.js +42 -24
- package/dist/server/modules/quotation/index.js +38 -29
- package/dist/server/modules/resource/index.js +4 -3
- package/dist/server/modules/schedule/index.js +35 -27
- package/dist/server/utils/product.js +1 -0
- package/dist/solution/BaseSales/index.js +41 -38
- package/dist/solution/BookingByStep/index.d.ts +1 -1
- package/dist/solution/BookingByStep/index.js +60 -11
- package/dist/solution/BookingByStep/utils/capacity.js +11 -1
- package/dist/solution/BookingByStep/utils/resources.js +3 -1
- package/dist/solution/BookingByStep/utils/timeslots.js +43 -2
- package/dist/solution/BookingTicket/index.d.ts +1 -1
- package/dist/solution/BookingTicket/index.js +2 -0
- package/dist/solution/BookingTicket/utils/scan/cloudSearch.js +7 -6
- package/dist/solution/BookingTicket/utils/scan/handleScan.js +31 -25
- package/dist/solution/BookingTicket/utils/scan/index.js +10 -6
- package/dist/solution/BuyTickets/index.js +12 -9
- package/dist/solution/Checkout/index.js +252 -177
- package/dist/solution/Checkout/utils/index.js +16 -4
- package/dist/solution/RegisterAndLogin/index.js +76 -30
- package/dist/solution/ScanOrder/index.js +60 -50
- package/dist/solution/ShopDiscount/index.js +14 -15
- package/dist/solution/ShopDiscount/types.d.ts +4 -5
- package/dist/solution/ShopDiscount/utils.d.ts +0 -9
- package/dist/solution/ShopDiscount/utils.js +0 -9
- package/dist/solution/VenueBooking/index.d.ts +3 -31
- package/dist/solution/VenueBooking/index.js +496 -651
- package/dist/solution/VenueBooking/types.d.ts +1 -3
- package/dist/solution/VenueBooking/types.js +0 -1
- package/dist/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/dist/solution/VenueBooking/utils/dateSummary.js +25 -12
- package/dist/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/dist/solution/VenueBooking/utils/timeSlot.js +4 -9
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/task.js +18 -15
- package/dist/utils/watch.js +1 -0
- package/lib/apis/picoding.js +0 -2
- package/lib/core/index.js +132 -130
- package/lib/effects/index.js +57 -46
- package/lib/index.d.ts +0 -1
- package/lib/index.js +50 -92
- package/lib/model/index.js +21 -14
- package/lib/model/strategy/adapter/dataVariant/adapter.js +50 -38
- package/lib/model/strategy/adapter/dataVariant/evaluator.js +236 -162
- package/lib/model/strategy/adapter/dataVariant/examples.js +237 -229
- package/lib/model/strategy/adapter/dataVariant/index.js +34 -39
- package/lib/model/strategy/adapter/dataVariant/type.js +28 -57
- package/lib/model/strategy/adapter/index.js +64 -100
- package/lib/model/strategy/adapter/itemRule/adapter.js +144 -156
- package/lib/model/strategy/adapter/itemRule/evaluator.js +48 -36
- package/lib/model/strategy/adapter/itemRule/examples.js +225 -295
- package/lib/model/strategy/adapter/itemRule/index.js +57 -83
- package/lib/model/strategy/adapter/itemRule/type.js +36 -97
- package/lib/model/strategy/adapter/promotion/adapter.js +63 -84
- package/lib/model/strategy/adapter/promotion/evaluator.js +231 -381
- package/lib/model/strategy/adapter/promotion/examples.js +159 -139
- package/lib/model/strategy/adapter/promotion/index.js +49 -1
- package/lib/model/strategy/adapter/promotion/type.js +35 -199
- package/lib/model/strategy/adapter/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/evaluator.js +152 -180
- package/lib/model/strategy/adapter/walletPass/example.js +190 -217
- package/lib/model/strategy/adapter/walletPass/index.js +51 -75
- package/lib/model/strategy/adapter/walletPass/locales.js +58 -36
- package/lib/model/strategy/adapter/walletPass/type.d.ts +0 -3
- package/lib/model/strategy/adapter/walletPass/type.js +16 -4
- package/lib/model/strategy/adapter/walletPass/utils.d.ts +0 -26
- package/lib/model/strategy/adapter/walletPass/utils.js +383 -678
- package/lib/model/strategy/engine.js +168 -270
- package/lib/model/strategy/index.js +34 -49
- package/lib/model/strategy/strategy-example.js +239 -243
- package/lib/model/strategy/type.js +40 -100
- package/lib/modules/Account/index.js +53 -39
- package/lib/modules/Account/types.js +33 -20
- package/lib/modules/AccountList/index.js +154 -116
- package/lib/modules/AccountList/types.js +31 -30
- package/lib/modules/AccountList/utils.js +30 -18
- package/lib/modules/BaseModule.d.ts +1 -1
- package/lib/modules/BaseModule.js +46 -25
- package/lib/modules/BookingContext/index.js +136 -158
- package/lib/modules/BookingContext/types.js +32 -46
- package/lib/modules/BookingContext/utils/buildCacheItemFromOrderLine.js +143 -131
- package/lib/modules/BookingContext/utils/buildNormalProductCacheItemFromOrderLine.js +82 -75
- package/lib/modules/BookingContext/utils/cacheItemToBookingInput.js +150 -170
- package/lib/modules/BookingContext/utils/flexible.js +55 -38
- package/lib/modules/BookingContext/utils/formatResourceList.js +34 -19
- package/lib/modules/BookingContext/utils/index.js +41 -124
- package/lib/modules/BookingContext/utils/noResource.js +70 -58
- package/lib/modules/BookingContext/utils/orderLineDisplay.js +41 -14
- package/lib/modules/BookingContext/utils/productExtend.js +155 -202
- package/lib/modules/BookingContext/utils/resourceErrors.js +53 -53
- package/lib/modules/BookingContext/utils/resourceSelection.js +41 -19
- package/lib/modules/BookingContext/utils/resources.js +167 -209
- package/lib/modules/BookingContext/utils/serviceTimes.js +116 -115
- package/lib/modules/BookingContext/utils/timeSlices.js +80 -70
- package/lib/modules/Cart/index.js +124 -170
- package/lib/modules/Cart/types.js +51 -46
- package/lib/modules/Cart/utils/cartAccount.js +39 -40
- package/lib/modules/Cart/utils/cartDate.js +61 -56
- package/lib/modules/Cart/utils/cartDiscount.js +33 -28
- package/lib/modules/Cart/utils/cartNote.js +32 -27
- package/lib/modules/Cart/utils/cartProduct.js +251 -321
- package/lib/modules/Cart/utils/cartRelationForms.js +35 -29
- package/lib/modules/Cart/utils/cartResource.js +78 -72
- package/lib/modules/Cart/utils/changePrice.js +50 -28
- package/lib/modules/Cart/utils/index.js +48 -106
- package/lib/modules/Customer/constants.js +34 -13
- package/lib/modules/Customer/index.js +169 -232
- package/lib/modules/Customer/types.js +35 -38
- package/lib/modules/Date/index.js +115 -116
- package/lib/modules/Date/types.js +28 -16
- package/lib/modules/Date/utils.js +123 -174
- package/lib/modules/Discount/index.d.ts +0 -1
- package/lib/modules/Discount/index.js +128 -130
- package/lib/modules/Discount/types.d.ts +0 -1
- package/lib/modules/Discount/types.js +31 -9
- package/lib/modules/Guests/index.js +56 -30
- package/lib/modules/Guests/types.js +33 -23
- package/lib/modules/Holder/index.js +189 -209
- package/lib/modules/Holder/types.js +16 -4
- package/lib/modules/Holder/utils.js +49 -20
- package/lib/modules/OpenData/index.js +76 -69
- package/lib/modules/OpenData/types.js +16 -4
- package/lib/modules/OpenData/utils.js +78 -44
- package/lib/modules/Order/index.js +1909 -1572
- package/lib/modules/Order/types.js +35 -78
- package/lib/modules/Order/utils/bundleDiscountHydration.js +74 -41
- package/lib/modules/Order/utils/manualProductDiscount.js +123 -124
- package/lib/modules/Order/utils/orderCollectionIdentity.js +210 -148
- package/lib/modules/Order/utils.js +634 -799
- package/lib/modules/Payment/cash.js +33 -20
- package/lib/modules/Payment/cashRecommendationAlgorithm.js +76 -145
- package/lib/modules/Payment/eftpos.js +30 -16
- package/lib/modules/Payment/index.js +378 -518
- package/lib/modules/Payment/mx51.js +0 -1
- package/lib/modules/Payment/types.d.ts +4 -8
- package/lib/modules/Payment/types.js +107 -216
- package/lib/modules/Payment/utils.js +48 -51
- package/lib/modules/Payment/walletpass.d.ts +0 -2
- package/lib/modules/Payment/walletpass.js +211 -226
- package/lib/modules/Product/index.js +46 -51
- package/lib/modules/Product/types.js +16 -4
- package/lib/modules/Product/utils.js +33 -32
- package/lib/modules/ProductList/index.d.ts +1 -1
- package/lib/modules/ProductList/index.js +117 -117
- package/lib/modules/ProductList/types.d.ts +0 -1
- package/lib/modules/ProductList/types.js +31 -9
- package/lib/modules/Quotation/index.js +100 -66
- package/lib/modules/Quotation/types.js +16 -4
- package/lib/modules/Resource/index.js +59 -27
- package/lib/modules/Resource/types.js +32 -22
- package/lib/modules/Resource/utils.js +38 -30
- package/lib/modules/ResourcePlanner/index.js +61 -60
- package/lib/modules/ResourcePlanner/planner.js +384 -346
- package/lib/modules/ResourcePlanner/types.js +16 -4
- package/lib/modules/Rules/index.js +903 -1475
- package/lib/modules/Rules/types.js +40 -17
- package/lib/modules/SalesSummary/index.js +90 -85
- package/lib/modules/SalesSummary/types.js +16 -4
- package/lib/modules/SalesSummary/utils.js +427 -351
- package/lib/modules/ScanOrderLogger/index.js +79 -59
- package/lib/modules/ScanOrderLogger/providers/feishu.js +78 -54
- package/lib/modules/ScanOrderLogger/providers/grafana.js +36 -13
- package/lib/modules/ScanOrderLogger/types.js +16 -4
- package/lib/modules/Schedule/getDateIsInSchedule.js +163 -339
- package/lib/modules/Schedule/index.js +114 -100
- package/lib/modules/Schedule/type.js +16 -4
- package/lib/modules/Schedule/types.js +16 -4
- package/lib/modules/Schedule/utils.js +291 -433
- package/lib/modules/Step/index.js +52 -40
- package/lib/modules/Step/tyeps.js +16 -4
- package/lib/modules/Summary/index.js +71 -66
- package/lib/modules/Summary/types.js +16 -4
- package/lib/modules/Summary/utils.js +418 -791
- package/lib/modules/SurchargeList/index.js +60 -46
- package/lib/modules/SurchargeList/types.js +16 -4
- package/lib/modules/index.js +63 -245
- package/lib/plugins/app.js +16 -4
- package/lib/plugins/index.js +25 -36
- package/lib/plugins/request.js +126 -137
- package/lib/plugins/shopStore.js +16 -4
- package/lib/plugins/user.js +16 -4
- package/lib/plugins/window.js +179 -171
- package/lib/server/index.js +2337 -2675
- package/lib/server/modules/floor-plan/index.js +123 -102
- package/lib/server/modules/floor-plan/types.js +30 -15
- package/lib/server/modules/index.js +68 -106
- package/lib/server/modules/menu/index.js +122 -146
- package/lib/server/modules/menu/types.js +31 -18
- package/lib/server/modules/order/index.js +642 -567
- package/lib/server/modules/order/types.js +32 -117
- package/lib/server/modules/order/utils/filterBookings.js +194 -219
- package/lib/server/modules/order/utils/filterOrders.js +92 -118
- package/lib/server/modules/payment/index.js +83 -59
- package/lib/server/modules/payment/types.js +16 -4
- package/lib/server/modules/products/index.js +459 -575
- package/lib/server/modules/products/types.js +34 -44
- package/lib/server/modules/quotation/index.js +172 -137
- package/lib/server/modules/quotation/types.js +31 -21
- package/lib/server/modules/resource/index.js +184 -213
- package/lib/server/modules/resource/types.js +33 -42
- package/lib/server/modules/schedule/index.js +123 -135
- package/lib/server/modules/schedule/types.js +21 -14
- package/lib/server/modules/schedule/utils.js +163 -334
- package/lib/server/types.js +16 -4
- package/lib/server/utils/index.js +23 -25
- package/lib/server/utils/product.js +139 -196
- package/lib/server/utils/schedule.js +41 -34
- package/lib/server/utils/small-ticket.js +456 -478
- package/lib/server/utils/time.js +49 -40
- package/lib/solution/BaseSales/index.js +1016 -850
- package/lib/solution/BaseSales/types.js +37 -41
- package/lib/solution/BaseSales/utils/cartPromotion.js +460 -611
- package/lib/solution/BaseSales/utils/parseSalesResponse.js +105 -85
- package/lib/solution/BaseSales/utils/quotationPrice.js +114 -56
- package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +143 -102
- package/lib/solution/BaseSales/utils.js +140 -155
- package/lib/solution/BookingByStep/index.d.ts +1 -1
- package/lib/solution/BookingByStep/index.js +1340 -1530
- package/lib/solution/BookingByStep/types.js +99 -40
- package/lib/solution/BookingByStep/utils/capacity.js +160 -192
- package/lib/solution/BookingByStep/utils/products.js +52 -42
- package/lib/solution/BookingByStep/utils/resources.js +330 -527
- package/lib/solution/BookingByStep/utils/stock.js +44 -65
- package/lib/solution/BookingByStep/utils/timeslots.js +131 -129
- package/lib/solution/BookingTicket/index.d.ts +1 -1
- package/lib/solution/BookingTicket/index.js +459 -543
- package/lib/solution/BookingTicket/types.js +77 -99
- package/lib/solution/BookingTicket/utils/addProductDecision.js +184 -219
- package/lib/solution/BookingTicket/utils/addTimeAvailability.js +89 -58
- package/lib/solution/BookingTicket/utils/bookingStatus.js +78 -107
- package/lib/solution/BookingTicket/utils/cartView.js +94 -110
- package/lib/solution/BookingTicket/utils/exampleData.js +0 -185
- package/lib/solution/BookingTicket/utils/orderCustomer.js +41 -18
- package/lib/solution/BookingTicket/utils/resolveBestAddTimePlan.js +86 -219
- package/lib/solution/BookingTicket/utils/scan/applyGlobalScan.js +93 -144
- package/lib/solution/BookingTicket/utils/scan/cloudSearch.js +91 -79
- package/lib/solution/BookingTicket/utils/scan/formatGlobalScan.js +41 -54
- package/lib/solution/BookingTicket/utils/scan/handleScan.js +81 -84
- package/lib/solution/BookingTicket/utils/scan/index.js +104 -98
- package/lib/solution/BookingTicket/utils/scan/scanCache.js +43 -90
- package/lib/solution/BookingTicket/utils/scan/scanProductValues.js +64 -52
- package/lib/solution/BookingTicket/utils/sessionCatalogStale.js +58 -56
- package/lib/solution/BuyTickets/index.js +70 -67
- package/lib/solution/BuyTickets/types.js +38 -22
- package/lib/solution/Checkout/index.js +1158 -1451
- package/lib/solution/Checkout/types.js +61 -91
- package/lib/solution/Checkout/utils/index.js +156 -228
- package/lib/solution/PlaceOrder/index.js +0 -55
- package/lib/solution/RegisterAndLogin/config.js +460 -493
- package/lib/solution/RegisterAndLogin/index.js +630 -633
- package/lib/solution/RegisterAndLogin/types.js +76 -189
- package/lib/solution/RegisterAndLogin/utils.js +125 -183
- package/lib/solution/Sales/index.js +320 -317
- package/lib/solution/Sales/types.js +33 -27
- package/lib/solution/ScanOrder/index.js +862 -831
- package/lib/solution/ScanOrder/types.js +34 -33
- package/lib/solution/ScanOrder/utils.js +371 -406
- package/lib/solution/ShopDiscount/index.js +233 -235
- package/lib/solution/ShopDiscount/types.d.ts +4 -5
- package/lib/solution/ShopDiscount/types.js +37 -15
- package/lib/solution/ShopDiscount/utils.d.ts +0 -9
- package/lib/solution/ShopDiscount/utils.js +172 -309
- package/lib/solution/UnifiedBookingSales/index.js +405 -379
- package/lib/solution/UnifiedBookingSales/types.js +31 -12
- package/lib/solution/VenueBooking/index.d.ts +3 -31
- package/lib/solution/VenueBooking/index.js +916 -967
- package/lib/solution/VenueBooking/types.d.ts +1 -3
- package/lib/solution/VenueBooking/types.js +39 -20
- package/lib/solution/VenueBooking/utils/dateSummary.d.ts +2 -2
- package/lib/solution/VenueBooking/utils/dateSummary.js +62 -25
- package/lib/solution/VenueBooking/utils/resource.js +54 -31
- package/lib/solution/VenueBooking/utils/slotMerge.js +107 -94
- package/lib/solution/VenueBooking/utils/timeSlot.d.ts +0 -2
- package/lib/solution/VenueBooking/utils/timeSlot.js +133 -138
- package/lib/solution/VenueBooking/utils.js +67 -130
- package/lib/solution/index.js +41 -124
- package/lib/store/createStore.js +29 -32
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.js +16 -4
- package/lib/utils/task.js +36 -36
- package/lib/utils/watch.js +47 -81
- package/package.json +2 -4
- package/dist/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/dist/solution/VenueBooking/utils/smartPricing.js +0 -233
- package/lib/solution/VenueBooking/utils/smartPricing.d.ts +0 -70
- package/lib/solution/VenueBooking/utils/smartPricing.js +0 -192
|
@@ -1,46 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/server/modules/products/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
ProductsHooks: () => ProductsHooks
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(types_exports);
|
|
25
|
+
var ProductsHooks = /* @__PURE__ */ ((ProductsHooks2) => {
|
|
26
|
+
ProductsHooks2["onProductsLoaded"] = "products:onProductsLoaded";
|
|
27
|
+
ProductsHooks2["onProductsChanged"] = "products:onProductsChanged";
|
|
28
|
+
ProductsHooks2["onProductSelected"] = "products:onProductSelected";
|
|
29
|
+
ProductsHooks2["onProductsPriceApplied"] = "products:onProductsPriceApplied";
|
|
30
|
+
ProductsHooks2["onProductsSyncCompleted"] = "products:onProductsSyncCompleted";
|
|
31
|
+
return ProductsHooks2;
|
|
32
|
+
})(ProductsHooks || {});
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
ProductsHooks
|
|
5
36
|
});
|
|
6
|
-
exports.ProductsHooks = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Products 模块状态
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* 商品格式化后数据
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* 商品轻量查询范围
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* 加载报价单商品价格参数
|
|
18
|
-
*/
|
|
19
|
-
/**
|
|
20
|
-
* 加载报价单商品价格返回数据
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* 加载报价单商品价格返回数据
|
|
24
|
-
*/
|
|
25
|
-
/**
|
|
26
|
-
* Products 模块状态
|
|
27
|
-
*/
|
|
28
|
-
/**
|
|
29
|
-
* Products 模块钩子
|
|
30
|
-
*/
|
|
31
|
-
let ProductsHooks = exports.ProductsHooks = /*#__PURE__*/function (ProductsHooks) {
|
|
32
|
-
ProductsHooks["onProductsLoaded"] = "products:onProductsLoaded";
|
|
33
|
-
ProductsHooks["onProductsChanged"] = "products:onProductsChanged";
|
|
34
|
-
ProductsHooks["onProductSelected"] = "products:onProductSelected";
|
|
35
|
-
ProductsHooks["onProductsPriceApplied"] = "products:onProductsPriceApplied";
|
|
36
|
-
ProductsHooks["onProductsSyncCompleted"] = "products:onProductsSyncCompleted";
|
|
37
|
-
return ProductsHooks;
|
|
38
|
-
}({});
|
|
39
|
-
/** pubsub 商品同步消息结构 */
|
|
40
|
-
/**
|
|
41
|
-
* 商品格式化器上下文
|
|
42
|
-
*/
|
|
43
|
-
/**
|
|
44
|
-
* 商品格式化器类型
|
|
45
|
-
* 用于对商品数据进行处理和格式化(包括价格应用、字段扩展等)
|
|
46
|
-
*/
|
|
@@ -1,97 +1,109 @@
|
|
|
1
|
-
|
|
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);
|
|
2
28
|
|
|
3
|
-
|
|
4
|
-
|
|
29
|
+
// src/server/modules/quotation/index.ts
|
|
30
|
+
var quotation_exports = {};
|
|
31
|
+
__export(quotation_exports, {
|
|
32
|
+
QuotationModule: () => QuotationModule
|
|
5
33
|
});
|
|
6
|
-
exports
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* IndexDB 存储名称
|
|
20
|
-
*/
|
|
21
|
-
const INDEXDB_STORE_NAME = 'quotation';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* 报价单模块 - 用于管理报价单数据和计算商品价格
|
|
25
|
-
*/
|
|
26
|
-
class QuotationModule extends _BaseModule.BaseModule {
|
|
27
|
-
defaultName = 'quotation';
|
|
28
|
-
defaultVersion = '1.0.0';
|
|
29
|
-
request;
|
|
30
|
-
store;
|
|
31
|
-
dbManager; // IndexDBManager 实例
|
|
32
|
-
scheduleResolver;
|
|
34
|
+
module.exports = __toCommonJS(quotation_exports);
|
|
35
|
+
var import_lodash_es = require("lodash-es");
|
|
36
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
37
|
+
var import_isSameOrBefore = __toESM(require("dayjs/plugin/isSameOrBefore"));
|
|
38
|
+
var import_isSameOrAfter = __toESM(require("dayjs/plugin/isSameOrAfter"));
|
|
39
|
+
var import_BaseModule = require("../../../modules/BaseModule");
|
|
40
|
+
var import_types = require("./types");
|
|
41
|
+
var import_getDateIsInSchedule = require("../../../modules/Schedule/getDateIsInSchedule");
|
|
42
|
+
import_dayjs.default.extend(import_isSameOrBefore.default);
|
|
43
|
+
import_dayjs.default.extend(import_isSameOrAfter.default);
|
|
44
|
+
var INDEXDB_STORE_NAME = "quotation";
|
|
45
|
+
var QuotationModule = class extends import_BaseModule.BaseModule {
|
|
33
46
|
constructor(name, version) {
|
|
34
47
|
super(name, version);
|
|
48
|
+
this.defaultName = "quotation";
|
|
49
|
+
this.defaultVersion = "1.0.0";
|
|
35
50
|
}
|
|
36
51
|
async initialize(core, options) {
|
|
52
|
+
var _a;
|
|
37
53
|
this.core = core;
|
|
38
|
-
this.store = options
|
|
39
|
-
if (Array.isArray(options
|
|
40
|
-
this.store.quotationList = options
|
|
41
|
-
this.core.effects.emit(
|
|
54
|
+
this.store = options == null ? void 0 : options.store;
|
|
55
|
+
if (Array.isArray((_a = options == null ? void 0 : options.initialState) == null ? void 0 : _a.quotationList)) {
|
|
56
|
+
this.store.quotationList = options == null ? void 0 : options.initialState.quotationList;
|
|
57
|
+
this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
|
|
42
58
|
} else {
|
|
43
59
|
this.store.quotationList = [];
|
|
44
60
|
}
|
|
45
|
-
|
|
46
|
-
// 获取依赖的插件
|
|
47
|
-
this.request = core.getPlugin('request');
|
|
61
|
+
this.request = core.getPlugin("request");
|
|
48
62
|
if (!this.request) {
|
|
49
|
-
throw new Error(
|
|
63
|
+
throw new Error("QuotationModule 需要 request 插件支持");
|
|
50
64
|
}
|
|
51
|
-
|
|
52
|
-
// 获取并存储 dbManager
|
|
53
|
-
const appPlugin = core.getPlugin('app');
|
|
65
|
+
const appPlugin = core.getPlugin("app");
|
|
54
66
|
if (appPlugin) {
|
|
55
67
|
const app = appPlugin.getApp();
|
|
56
68
|
this.dbManager = app.dbManager;
|
|
57
|
-
if (this.dbManager) {
|
|
58
|
-
console.
|
|
69
|
+
if (this.dbManager) {
|
|
70
|
+
console.log("[Quotation] IndexDB Manager 已初始化");
|
|
71
|
+
} else {
|
|
72
|
+
console.warn("[Quotation] IndexDB Manager 未找到");
|
|
59
73
|
}
|
|
60
74
|
}
|
|
61
75
|
}
|
|
62
|
-
|
|
63
76
|
/**
|
|
64
77
|
* 加载报价单列表(从服务器)
|
|
65
78
|
* TODO: 接口地址待定
|
|
66
79
|
*/
|
|
67
80
|
async loadQuotationList() {
|
|
81
|
+
var _a;
|
|
68
82
|
try {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
const response = await this.request.get(
|
|
84
|
+
`/quotation`,
|
|
85
|
+
{
|
|
86
|
+
num: 999,
|
|
87
|
+
skip: 1,
|
|
88
|
+
status: "published"
|
|
89
|
+
}
|
|
90
|
+
);
|
|
91
|
+
const quotationList = ((_a = response.data) == null ? void 0 : _a.list) || [];
|
|
78
92
|
await this.saveQuotationToIndexDB(quotationList);
|
|
79
93
|
await this.setQuotationList(quotationList);
|
|
80
94
|
return quotationList;
|
|
81
95
|
} catch (error) {
|
|
82
|
-
console.error(
|
|
96
|
+
console.error("[Quotation] 加载报价单数据失败:", error);
|
|
83
97
|
return [];
|
|
84
98
|
}
|
|
85
99
|
}
|
|
86
|
-
|
|
87
100
|
/**
|
|
88
101
|
* 设置报价单列表
|
|
89
102
|
*/
|
|
90
103
|
async setQuotationList(quotationList) {
|
|
91
104
|
this.store.quotationList = quotationList;
|
|
92
|
-
await this.core.effects.emit(
|
|
105
|
+
await this.core.effects.emit(import_types.QuotationHooks.onQuotationLoaded, quotationList);
|
|
93
106
|
}
|
|
94
|
-
|
|
95
107
|
/**
|
|
96
108
|
* 获取报价单列表
|
|
97
109
|
*/
|
|
@@ -99,45 +111,52 @@ class QuotationModule extends _BaseModule.BaseModule {
|
|
|
99
111
|
return this.store.quotationList;
|
|
100
112
|
}
|
|
101
113
|
async loadQuotations(params) {
|
|
114
|
+
var _a;
|
|
102
115
|
if (Array.isArray(this.store.quotationList) && this.store.quotationList.length > 0) {
|
|
103
|
-
this.store.quotationList.sort(
|
|
116
|
+
this.store.quotationList.sort(
|
|
117
|
+
(a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0)
|
|
118
|
+
);
|
|
104
119
|
return;
|
|
105
120
|
}
|
|
106
121
|
const query = {};
|
|
107
|
-
if (params
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
122
|
+
if (params == null ? void 0 : params.channel)
|
|
123
|
+
query.channel = params.channel;
|
|
124
|
+
if ((params == null ? void 0 : params.channel) === "online_store")
|
|
125
|
+
query.channel = "online-store";
|
|
126
|
+
const res = await this.request.get(
|
|
127
|
+
"/quotation/available",
|
|
128
|
+
query,
|
|
129
|
+
{ useCache: false, osServer: true }
|
|
130
|
+
);
|
|
131
|
+
const list = ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.list) || (res == null ? void 0 : res.list) || [];
|
|
114
132
|
list.sort((a, b) => Number(a.sort ?? a.priority ?? 0) - Number(b.sort ?? b.priority ?? 0));
|
|
115
133
|
this.store.quotationList = list;
|
|
116
|
-
await this.core.effects.emit(
|
|
134
|
+
await this.core.effects.emit(import_types.QuotationHooks.onQuotationLoaded, this.store.quotationList);
|
|
117
135
|
}
|
|
118
136
|
setScheduleResolver(resolver) {
|
|
119
137
|
this.scheduleResolver = resolver;
|
|
120
138
|
}
|
|
121
139
|
getPriceForProduct(params) {
|
|
122
|
-
|
|
140
|
+
var _a;
|
|
141
|
+
return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.price) ?? null;
|
|
123
142
|
}
|
|
124
143
|
getQuotationMatchForProduct(params) {
|
|
125
|
-
const {
|
|
126
|
-
productId,
|
|
127
|
-
variantId,
|
|
128
|
-
datetime,
|
|
129
|
-
channel,
|
|
130
|
-
customer_id
|
|
131
|
-
} = params;
|
|
144
|
+
const { productId, variantId, datetime, channel, customer_id } = params;
|
|
132
145
|
for (const quotation of this.store.quotationList) {
|
|
133
|
-
if (!this.isQuotationVisibleForChannel(quotation, channel))
|
|
134
|
-
|
|
135
|
-
if (!this.
|
|
146
|
+
if (!this.isQuotationVisibleForChannel(quotation, channel))
|
|
147
|
+
continue;
|
|
148
|
+
if (!this.isQuotationVisibleForCustomer(quotation, customer_id))
|
|
149
|
+
continue;
|
|
150
|
+
if (!this.isQuotationActiveAt(quotation, datetime))
|
|
151
|
+
continue;
|
|
136
152
|
const match = this.findProductData(quotation, productId, variantId);
|
|
137
|
-
if (!match)
|
|
153
|
+
if (!match)
|
|
154
|
+
continue;
|
|
138
155
|
const value = match.value ?? match.final_price ?? match.discount_value;
|
|
139
|
-
if (Number(value) === 0)
|
|
140
|
-
|
|
156
|
+
if (Number(value) === 0)
|
|
157
|
+
continue;
|
|
158
|
+
if (value === void 0 || value === null || value === "")
|
|
159
|
+
continue;
|
|
141
160
|
return {
|
|
142
161
|
price: String(value),
|
|
143
162
|
quotationShelfId: Number(quotation.id) || 0
|
|
@@ -146,25 +165,28 @@ class QuotationModule extends _BaseModule.BaseModule {
|
|
|
146
165
|
return null;
|
|
147
166
|
}
|
|
148
167
|
getQuotationShelfId(params) {
|
|
149
|
-
|
|
168
|
+
var _a;
|
|
169
|
+
return ((_a = this.getQuotationMatchForProduct(params)) == null ? void 0 : _a.quotationShelfId) ?? 0;
|
|
150
170
|
}
|
|
151
171
|
getQuotationCustomerScopeInfo() {
|
|
152
|
-
const customerById = new Map();
|
|
153
|
-
const quotationScopes = this.store.quotationList.filter(quotation => Array.isArray(quotation
|
|
172
|
+
const customerById = /* @__PURE__ */ new Map();
|
|
173
|
+
const quotationScopes = this.store.quotationList.filter((quotation) => Array.isArray(quotation == null ? void 0 : quotation.customer) && quotation.customer.length > 0).map((quotation) => {
|
|
154
174
|
const customerIds = [];
|
|
155
175
|
const customers = [];
|
|
156
|
-
const localSeen = new Set();
|
|
157
|
-
(quotation.customer || []).forEach(customer => {
|
|
158
|
-
const customerId = this.normalizeCustomerId(customer
|
|
159
|
-
if (!customerId || localSeen.has(customerId))
|
|
176
|
+
const localSeen = /* @__PURE__ */ new Set();
|
|
177
|
+
(quotation.customer || []).forEach((customer) => {
|
|
178
|
+
const customerId = this.normalizeCustomerId(customer == null ? void 0 : customer.id);
|
|
179
|
+
if (!customerId || localSeen.has(customerId))
|
|
180
|
+
return;
|
|
160
181
|
localSeen.add(customerId);
|
|
161
182
|
customerIds.push(customerId);
|
|
162
183
|
customers.push(customer);
|
|
163
|
-
if (!customerById.has(customerId))
|
|
184
|
+
if (!customerById.has(customerId))
|
|
185
|
+
customerById.set(customerId, customer);
|
|
164
186
|
});
|
|
165
187
|
return {
|
|
166
188
|
quotationId: Number(quotation.id),
|
|
167
|
-
quotationName: String(quotation.name ||
|
|
189
|
+
quotationName: String(quotation.name || ""),
|
|
168
190
|
customerIds,
|
|
169
191
|
customers
|
|
170
192
|
};
|
|
@@ -184,72 +206,88 @@ class QuotationModule extends _BaseModule.BaseModule {
|
|
|
184
206
|
*/
|
|
185
207
|
async clear() {
|
|
186
208
|
this.store.quotationList = [];
|
|
187
|
-
|
|
188
|
-
// 同时清空 IndexDB 中的数据
|
|
189
209
|
if (this.dbManager) {
|
|
190
210
|
try {
|
|
191
211
|
await this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
212
|
+
console.log("[Quotation] IndexDB 缓存已清空");
|
|
192
213
|
} catch (error) {
|
|
193
|
-
console.error(
|
|
214
|
+
console.error("[Quotation] 清空 IndexDB 缓存失败:", error);
|
|
194
215
|
}
|
|
195
216
|
}
|
|
217
|
+
console.log("[Quotation] 缓存已清空");
|
|
196
218
|
}
|
|
197
219
|
normalizeCustomerId(customerId) {
|
|
198
|
-
if (customerId ===
|
|
220
|
+
if (customerId === void 0 || customerId === null || customerId === "")
|
|
221
|
+
return null;
|
|
199
222
|
return String(customerId);
|
|
200
223
|
}
|
|
201
224
|
hasValidCustomerId(customerId) {
|
|
202
|
-
if (customerId ===
|
|
225
|
+
if (customerId === void 0 || customerId === null || customerId === "")
|
|
226
|
+
return false;
|
|
203
227
|
return Number(customerId) > 0;
|
|
204
228
|
}
|
|
205
229
|
isQuotationVisibleForCustomer(quotation, customerId) {
|
|
206
230
|
const customers = quotation.customer || [];
|
|
207
|
-
if (!Array.isArray(customers) || customers.length === 0)
|
|
208
|
-
|
|
209
|
-
|
|
231
|
+
if (!Array.isArray(customers) || customers.length === 0)
|
|
232
|
+
return true;
|
|
233
|
+
if (!this.hasValidCustomerId(customerId))
|
|
234
|
+
return false;
|
|
235
|
+
return customers.some((customer) => String(customer.id) === String(customerId));
|
|
210
236
|
}
|
|
211
237
|
isQuotationVisibleForChannel(quotation, channel) {
|
|
212
|
-
if (!channel)
|
|
213
|
-
|
|
238
|
+
if (!channel)
|
|
239
|
+
return true;
|
|
240
|
+
const normalizedChannel = channel === "online_store" ? "online-store" : channel;
|
|
214
241
|
const channels = quotation.channel;
|
|
215
|
-
if (!Array.isArray(channels) || channels.length === 0)
|
|
216
|
-
|
|
242
|
+
if (!Array.isArray(channels) || channels.length === 0)
|
|
243
|
+
return true;
|
|
244
|
+
return channels.some((item) => String(item) === normalizedChannel);
|
|
217
245
|
}
|
|
218
246
|
isQuotationActiveAt(quotation, datetime) {
|
|
219
247
|
const quotationSchedules = Array.isArray(quotation.schedule) ? quotation.schedule : [];
|
|
220
248
|
const scheduleIds = Array.isArray(quotation.schedule_ids) ? quotation.schedule_ids : [];
|
|
221
|
-
if (!quotationSchedules.length && !scheduleIds.length)
|
|
249
|
+
if (!quotationSchedules.length && !scheduleIds.length)
|
|
250
|
+
return false;
|
|
222
251
|
const scheduleItems = [];
|
|
223
|
-
quotationSchedules.forEach(schedule => {
|
|
224
|
-
|
|
252
|
+
quotationSchedules.forEach((schedule) => {
|
|
253
|
+
var _a;
|
|
254
|
+
const full = (_a = this.scheduleResolver) == null ? void 0 : _a.call(this, schedule.id);
|
|
225
255
|
if (full) {
|
|
226
256
|
scheduleItems.push(full);
|
|
227
257
|
return;
|
|
228
258
|
}
|
|
229
|
-
if (this.scheduleResolver)
|
|
259
|
+
if (this.scheduleResolver)
|
|
260
|
+
return;
|
|
230
261
|
scheduleItems.push({
|
|
231
262
|
...schedule,
|
|
232
|
-
repeat_type: schedule.repeat_type ||
|
|
263
|
+
repeat_type: schedule.repeat_type || "none",
|
|
233
264
|
repeat_rule: schedule.repeat_rule || null,
|
|
234
265
|
time_slot: schedule.time_slot || []
|
|
235
266
|
});
|
|
236
267
|
});
|
|
237
|
-
scheduleIds.forEach(id => {
|
|
238
|
-
|
|
239
|
-
|
|
268
|
+
scheduleIds.forEach((id) => {
|
|
269
|
+
var _a;
|
|
270
|
+
const full = (_a = this.scheduleResolver) == null ? void 0 : _a.call(this, id);
|
|
271
|
+
if (full)
|
|
272
|
+
scheduleItems.push(full);
|
|
240
273
|
});
|
|
241
|
-
if (!scheduleItems.length)
|
|
242
|
-
|
|
274
|
+
if (!scheduleItems.length)
|
|
275
|
+
return false;
|
|
276
|
+
return (0, import_getDateIsInSchedule.getDateIsInSchedule)(datetime, scheduleItems);
|
|
243
277
|
}
|
|
244
278
|
findProductData(quotation, productId, variantId) {
|
|
245
279
|
const productData = Array.isArray(quotation.product_data) ? quotation.product_data : Array.isArray(quotation.product_prices) ? quotation.product_prices : [];
|
|
246
280
|
if (variantId && variantId !== 0) {
|
|
247
|
-
const variantMatch = productData.find(
|
|
248
|
-
|
|
281
|
+
const variantMatch = productData.find(
|
|
282
|
+
(item) => Number(item.product_id) === productId && Number(item.variant_id || 0) === variantId
|
|
283
|
+
);
|
|
284
|
+
if (variantMatch)
|
|
285
|
+
return variantMatch;
|
|
249
286
|
}
|
|
250
|
-
return productData.find(
|
|
287
|
+
return productData.find(
|
|
288
|
+
(item) => Number(item.product_id) === productId && Number(item.variant_id || 0) === 0
|
|
289
|
+
);
|
|
251
290
|
}
|
|
252
|
-
|
|
253
291
|
/**
|
|
254
292
|
* 从 IndexDB 加载报价单数据
|
|
255
293
|
* @private
|
|
@@ -259,15 +297,13 @@ class QuotationModule extends _BaseModule.BaseModule {
|
|
|
259
297
|
return [];
|
|
260
298
|
}
|
|
261
299
|
try {
|
|
262
|
-
// 直接获取所有报价单记录
|
|
263
300
|
const quotationList = await this.dbManager.getAll(INDEXDB_STORE_NAME);
|
|
264
301
|
return quotationList || [];
|
|
265
302
|
} catch (error) {
|
|
266
|
-
console.error(
|
|
303
|
+
console.error("[Quotation] 从 IndexDB 读取数据失败:", error);
|
|
267
304
|
return [];
|
|
268
305
|
}
|
|
269
306
|
}
|
|
270
|
-
|
|
271
307
|
/**
|
|
272
308
|
* 保存报价单数据到 IndexDB
|
|
273
309
|
* @private
|
|
@@ -277,44 +313,43 @@ class QuotationModule extends _BaseModule.BaseModule {
|
|
|
277
313
|
return;
|
|
278
314
|
}
|
|
279
315
|
try {
|
|
280
|
-
// 先清空现有的报价单数据
|
|
281
316
|
await this.dbManager.clear(INDEXDB_STORE_NAME);
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
317
|
+
const savePromises = quotationList.map(
|
|
318
|
+
(quotation) => this.dbManager.add(INDEXDB_STORE_NAME, quotation)
|
|
319
|
+
);
|
|
285
320
|
await Promise.all(savePromises);
|
|
321
|
+
console.log(`[Quotation] 已将 ${quotationList.length} 条报价单数据保存到 IndexDB`);
|
|
286
322
|
} catch (error) {
|
|
287
|
-
console.error(
|
|
323
|
+
console.error("[Quotation] 保存数据到 IndexDB 失败:", error);
|
|
288
324
|
}
|
|
289
325
|
}
|
|
290
|
-
|
|
291
326
|
/**
|
|
292
327
|
* 预加载模块数据(统一接口)
|
|
293
328
|
* 在模块注册后自动调用
|
|
294
329
|
*/
|
|
295
330
|
async preload() {
|
|
331
|
+
console.log("[Quotation] 开始预加载数据...");
|
|
296
332
|
try {
|
|
297
|
-
// 1. 尝试从 IndexDB 加载数据
|
|
298
333
|
const cachedData = await this.loadQuotationFromIndexDB();
|
|
299
334
|
if (cachedData && cachedData.length > 0) {
|
|
300
|
-
|
|
301
|
-
this.store.quotationList = (0,
|
|
302
|
-
this.core.effects.emit(
|
|
335
|
+
console.log(`[Quotation] 从 IndexDB 加载了 ${cachedData.length} 条报价单数据`);
|
|
336
|
+
this.store.quotationList = (0, import_lodash_es.cloneDeep)(cachedData);
|
|
337
|
+
this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
|
|
303
338
|
return;
|
|
304
339
|
}
|
|
340
|
+
console.log("[Quotation] IndexDB 中没有缓存数据,从服务器加载...");
|
|
305
341
|
} catch (error) {
|
|
306
|
-
console.warn(
|
|
342
|
+
console.warn("[Quotation] 从 IndexDB 加载数据失败:", error);
|
|
307
343
|
}
|
|
308
|
-
|
|
309
|
-
// 2. 如果 IndexDB 中没有数据,从服务器加载
|
|
310
344
|
const quotationList = await this.loadQuotationList();
|
|
311
|
-
|
|
312
|
-
// 3. 将服务器数据保存到 IndexDB 和 store
|
|
313
345
|
if (quotationList && quotationList.length > 0) {
|
|
314
346
|
await this.saveQuotationToIndexDB(quotationList);
|
|
315
|
-
this.store.quotationList = (0,
|
|
316
|
-
this.core.effects.emit(
|
|
347
|
+
this.store.quotationList = (0, import_lodash_es.cloneDeep)(quotationList);
|
|
348
|
+
this.core.effects.emit(import_types.QuotationHooks.onQuotationChanged, this.store.quotationList);
|
|
317
349
|
}
|
|
318
350
|
}
|
|
319
|
-
}
|
|
320
|
-
|
|
351
|
+
};
|
|
352
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
353
|
+
0 && (module.exports = {
|
|
354
|
+
QuotationModule
|
|
355
|
+
});
|
|
@@ -1,23 +1,33 @@
|
|
|
1
|
-
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
// src/server/modules/quotation/types.ts
|
|
20
|
+
var types_exports = {};
|
|
21
|
+
__export(types_exports, {
|
|
22
|
+
QuotationHooks: () => QuotationHooks
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(types_exports);
|
|
25
|
+
var QuotationHooks = /* @__PURE__ */ ((QuotationHooks2) => {
|
|
26
|
+
QuotationHooks2["onQuotationLoaded"] = "quotation:onQuotationLoaded";
|
|
27
|
+
QuotationHooks2["onQuotationChanged"] = "quotation:onQuotationChanged";
|
|
28
|
+
return QuotationHooks2;
|
|
29
|
+
})(QuotationHooks || {});
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
QuotationHooks
|
|
5
33
|
});
|
|
6
|
-
exports.QuotationHooks = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* 报价单模块状态
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* 报价单数据结构
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* 报价单商品价格配置
|
|
15
|
-
*/
|
|
16
|
-
/**
|
|
17
|
-
* 报价单模块钩子
|
|
18
|
-
*/
|
|
19
|
-
let QuotationHooks = exports.QuotationHooks = /*#__PURE__*/function (QuotationHooks) {
|
|
20
|
-
QuotationHooks["onQuotationLoaded"] = "quotation:onQuotationLoaded";
|
|
21
|
-
QuotationHooks["onQuotationChanged"] = "quotation:onQuotationChanged";
|
|
22
|
-
return QuotationHooks;
|
|
23
|
-
}({});
|