@pisell/pisellos 0.0.128 → 0.0.130
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/Discount/index.d.ts +1 -0
- package/dist/modules/Discount/index.js +15 -7
- package/dist/modules/Rules/index.js +48 -19
- package/dist/solution/BookingByStep/index.js +54 -43
- package/dist/solution/ShopDiscount/index.js +9 -9
- package/lib/modules/Discount/index.d.ts +1 -0
- package/lib/modules/Discount/index.js +18 -6
- package/lib/modules/Rules/index.js +48 -17
- package/lib/solution/BookingByStep/index.js +20 -12
- package/lib/solution/ShopDiscount/index.js +7 -5
- package/package.json +1 -1
|
@@ -17,6 +17,7 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
|
|
|
17
17
|
loadPrepareConfig(params: {
|
|
18
18
|
action?: 'create';
|
|
19
19
|
with_good_pass: 0 | 1;
|
|
20
|
+
with_discount_card: 0 | 1;
|
|
20
21
|
customer_id: number;
|
|
21
22
|
}): Promise<Discount[]>;
|
|
22
23
|
batchSearch(code: string): Promise<Discount[]>;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
7
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
2
8
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
9
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
10
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
@@ -18,6 +24,7 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
18
24
|
import { uniqueById } from "../../solution/ShopDiscount/utils";
|
|
19
25
|
import { BaseModule } from "../BaseModule";
|
|
20
26
|
import { DiscountHooks } from "./types";
|
|
27
|
+
import Decimal from 'decimal.js';
|
|
21
28
|
export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
22
29
|
_inherits(DiscountModule, _BaseModule);
|
|
23
30
|
var _super = _createSuper(DiscountModule);
|
|
@@ -113,7 +120,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
113
120
|
key: "loadPrepareConfig",
|
|
114
121
|
value: function () {
|
|
115
122
|
var _loadPrepareConfig = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(params) {
|
|
116
|
-
var _prepareConfig$data;
|
|
123
|
+
var _prepareConfig$data, _prepareConfig$data2;
|
|
117
124
|
var prepareConfig, goodPassList;
|
|
118
125
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
119
126
|
while (1) switch (_context3.prev = _context3.next) {
|
|
@@ -122,9 +129,10 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
122
129
|
return this.request.post("/order/prepare/config", params);
|
|
123
130
|
case 2:
|
|
124
131
|
prepareConfig = _context3.sent;
|
|
125
|
-
goodPassList = this.filterEnabledDiscountList((prepareConfig === null || prepareConfig === void 0 || (_prepareConfig$data = prepareConfig.data) === null || _prepareConfig$data === void 0 ? void 0 : _prepareConfig$data.good_pass_list) || []) || [];
|
|
132
|
+
goodPassList = this.filterEnabledDiscountList([].concat(_toConsumableArray((prepareConfig === null || prepareConfig === void 0 || (_prepareConfig$data = prepareConfig.data) === null || _prepareConfig$data === void 0 ? void 0 : _prepareConfig$data.good_pass_list) || []), _toConsumableArray((prepareConfig === null || prepareConfig === void 0 || (_prepareConfig$data2 = prepareConfig.data) === null || _prepareConfig$data2 === void 0 ? void 0 : _prepareConfig$data2.discount_card_list) || []))) || [];
|
|
133
|
+
this.setDiscountList(goodPassList);
|
|
126
134
|
return _context3.abrupt("return", goodPassList);
|
|
127
|
-
case
|
|
135
|
+
case 6:
|
|
128
136
|
case "end":
|
|
129
137
|
return _context3.stop();
|
|
130
138
|
}
|
|
@@ -147,7 +155,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
147
155
|
return this.request.get("/machinecode/batch-search", {
|
|
148
156
|
code: code,
|
|
149
157
|
translate_flag: 1,
|
|
150
|
-
|
|
158
|
+
tags: ['good_pass', 'product_discount_card'],
|
|
151
159
|
available: 1,
|
|
152
160
|
relation_product: 1
|
|
153
161
|
});
|
|
@@ -170,7 +178,7 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
170
178
|
key: "filterEnabledDiscountList",
|
|
171
179
|
value: function filterEnabledDiscountList(discountList) {
|
|
172
180
|
return discountList.filter(function (discount) {
|
|
173
|
-
return discount.limit_status === 'enable' &&
|
|
181
|
+
return discount.limit_status === 'enable' && new Decimal((discount === null || discount === void 0 ? void 0 : discount.par_value) || 0).minus(new Decimal((discount === null || discount === void 0 ? void 0 : discount.used_par_value) || 0)).greaterThan(0);
|
|
174
182
|
});
|
|
175
183
|
}
|
|
176
184
|
|
|
@@ -198,8 +206,8 @@ export var DiscountModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
198
206
|
}
|
|
199
207
|
if (discount.appliedProductDetails) {
|
|
200
208
|
return discount.appliedProductDetails.reduce(function (total, product) {
|
|
201
|
-
var price =
|
|
202
|
-
return total
|
|
209
|
+
var price = new Decimal((product === null || product === void 0 ? void 0 : product.amount) || 0);
|
|
210
|
+
return new Decimal(total).plus(price).toNumber();
|
|
203
211
|
}, 0);
|
|
204
212
|
}
|
|
205
213
|
}
|
|
@@ -27,6 +27,7 @@ import { BaseModule } from "../BaseModule";
|
|
|
27
27
|
import { RulesHooks } from "./types";
|
|
28
28
|
import { uniqueById } from "../../solution/ShopDiscount/utils";
|
|
29
29
|
import { getProductOriginTotalPrice, getProductTotalPrice } from "../Cart/utils";
|
|
30
|
+
import Decimal from 'decimal.js';
|
|
30
31
|
export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
31
32
|
_inherits(RulesModule, _BaseModule);
|
|
32
33
|
var _super = _createSuper(RulesModule);
|
|
@@ -163,24 +164,49 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
163
164
|
return !discount.isManualSelect;
|
|
164
165
|
});
|
|
165
166
|
|
|
166
|
-
//
|
|
167
|
+
// 优惠力度排序,传进来的数据里可能有商品券,也可能有优惠券
|
|
168
|
+
// 商品券(n.tag=good_pass)视为最优惠(免费),折扣券(n.tag=product_discount_card)按照n.par_value排序
|
|
169
|
+
// 如果最后拍出来商品券有多个,或者说没有商品券,但是有多个相同折扣的折扣券(比如 6 折券有 3张),则按照过期时间(n.expire_time)排序
|
|
167
170
|
var sortedDiscountList = _toConsumableArray(filteredDiscountList).sort(function (a, b) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
// 1. 商品券优先级最高
|
|
172
|
+
if (a.tag === 'good_pass' && b.tag !== 'good_pass') return -1;
|
|
173
|
+
if (b.tag === 'good_pass' && a.tag !== 'good_pass') return 1;
|
|
174
|
+
|
|
175
|
+
// 2. 如果都是商品券或都不是商品券,按照类型和折扣力度排序
|
|
176
|
+
if (a.tag === 'good_pass' && b.tag === 'good_pass') {
|
|
177
|
+
// 都是商品券,按照过期时间排序
|
|
178
|
+
return compareByExpireTime(a, b);
|
|
179
|
+
} else if (a.tag === 'product_discount_card' && b.tag === 'product_discount_card') {
|
|
180
|
+
// 都是折扣券,按照par_value排序(折扣越大越优先,即par_value越小越优先)
|
|
181
|
+
if (a.par_value !== b.par_value) {
|
|
182
|
+
var valueA = new Decimal(a.par_value || 0);
|
|
183
|
+
var valueB = new Decimal(b.par_value || 0);
|
|
184
|
+
return valueA.minus(valueB).toNumber();
|
|
185
|
+
}
|
|
186
|
+
// 相同折扣的情况下,按照过期时间排序
|
|
187
|
+
return compareByExpireTime(a, b);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// 3. 其他情况按照过期时间排序
|
|
191
|
+
return compareByExpireTime(a, b);
|
|
192
|
+
function compareByExpireTime(itemA, itemB) {
|
|
193
|
+
if (itemA.expire_time && itemB.expire_time) {
|
|
194
|
+
var timeA = new Date(itemA.expire_time).getTime();
|
|
195
|
+
var timeB = new Date(itemB.expire_time).getTime();
|
|
196
|
+
return timeA - timeB;
|
|
197
|
+
}
|
|
198
|
+
// 有过期时间的优先级高于永久的
|
|
199
|
+
return itemA.expire_time ? -1 : itemB.expire_time ? 1 : 0;
|
|
172
200
|
}
|
|
173
|
-
// 有过期时间的优先级高于永久的
|
|
174
|
-
return a.expire_time ? -1 : b.expire_time ? 1 : 0;
|
|
175
201
|
});
|
|
176
202
|
|
|
177
203
|
// 对productList按价格降序排序(用于应用优惠券时优先选择高价商品)
|
|
178
204
|
var sortedProductList = _toConsumableArray(productList).sort(function (a, b) {
|
|
179
205
|
var aProduct = _this3.hooks.getProduct(a);
|
|
180
206
|
var bProduct = _this3.hooks.getProduct(b);
|
|
181
|
-
var priceA =
|
|
182
|
-
var priceB =
|
|
183
|
-
return priceB
|
|
207
|
+
var priceA = new Decimal(aProduct.price || '0');
|
|
208
|
+
var priceB = new Decimal(bProduct.price || '0');
|
|
209
|
+
return priceB.minus(priceA).toNumber();
|
|
184
210
|
});
|
|
185
211
|
|
|
186
212
|
// 标记已使用的优惠券
|
|
@@ -233,7 +259,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
233
259
|
discount: {
|
|
234
260
|
resource_id: discount.id,
|
|
235
261
|
title: discount.format_title,
|
|
236
|
-
original_amount: product.origin_total
|
|
262
|
+
original_amount: product.origin_total,
|
|
263
|
+
pre_value: discount.par_value
|
|
237
264
|
}
|
|
238
265
|
});
|
|
239
266
|
discountApplicableProducts.set(discount.id, applicableProducts);
|
|
@@ -321,14 +348,16 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
321
348
|
|
|
322
349
|
// 记录实际应用了优惠券的商品信息
|
|
323
350
|
var appliedProducts = appliedDiscountProducts.get(selectedDiscount.id) || [];
|
|
351
|
+
var targetProductPrice = selectedDiscount.tag === 'good_pass' ? '0' : new Decimal(selectedDiscount.par_value || 0).div(100).mul(new Decimal(product.price || 0)).toFixed(2);
|
|
324
352
|
var discountDetail = {
|
|
325
|
-
amount: product.price,
|
|
326
|
-
type: selectedDiscount.tag,
|
|
353
|
+
amount: selectedDiscount.tag === 'product_discount_card' ? new Decimal(product.price || 0).minus(new Decimal(targetProductPrice)).toNumber() : product.price,
|
|
354
|
+
type: selectedDiscount.tag === 'product_discount_card' ? 'discount_card' : selectedDiscount.tag,
|
|
327
355
|
discount: {
|
|
328
356
|
resource_id: selectedDiscount.id,
|
|
329
357
|
title: selectedDiscount.format_title,
|
|
330
|
-
original_amount: product.
|
|
331
|
-
product_id: selectedDiscount.product_id
|
|
358
|
+
original_amount: product.price,
|
|
359
|
+
product_id: selectedDiscount.product_id,
|
|
360
|
+
percent: selectedDiscount.par_value
|
|
332
361
|
}
|
|
333
362
|
};
|
|
334
363
|
appliedProducts.push(discountDetail);
|
|
@@ -339,7 +368,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
339
368
|
if (product.isClient) {
|
|
340
369
|
processedProductsMap.set(product._id, _this3.hooks.setProduct(originProduct, {
|
|
341
370
|
discount_list: [discountDetail],
|
|
342
|
-
price:
|
|
371
|
+
price: new Decimal(targetProductPrice).toNumber(),
|
|
343
372
|
origin_total: getProductOriginTotalPrice({
|
|
344
373
|
product: {
|
|
345
374
|
original_price: product.original_price
|
|
@@ -349,7 +378,7 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
349
378
|
}),
|
|
350
379
|
total: getProductTotalPrice({
|
|
351
380
|
product: {
|
|
352
|
-
price:
|
|
381
|
+
price: targetProductPrice
|
|
353
382
|
},
|
|
354
383
|
bundle: product.bundle,
|
|
355
384
|
options: product.options
|
|
@@ -358,8 +387,8 @@ export var RulesModule = /*#__PURE__*/function (_BaseModule) {
|
|
|
358
387
|
} else {
|
|
359
388
|
processedProductsMap.set(product._id, _this3.hooks.setProduct(originProduct, {
|
|
360
389
|
discount_list: [discountDetail],
|
|
361
|
-
price:
|
|
362
|
-
total: (product.origin_total || product.total)
|
|
390
|
+
price: new Decimal(targetProductPrice).toNumber(),
|
|
391
|
+
total: new Decimal(product.origin_total || product.total || 0).minus(new Decimal(product.price || 0)).toNumber(),
|
|
363
392
|
origin_total: product.origin_total || product.total
|
|
364
393
|
}));
|
|
365
394
|
}
|
|
@@ -2019,7 +2019,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2019
2019
|
};
|
|
2020
2020
|
}
|
|
2021
2021
|
if (recordTimeSlots) {
|
|
2022
|
-
var _item$_productOrigin4, _item$_productOrigin5;
|
|
2022
|
+
var _item$_productOrigin4, _item$_productOrigin5, _item$_productOrigin6;
|
|
2023
2023
|
// 同一账号下,如果当前商品不是第一个,则需要根据上一个商品的 end_time 和 duration 计算出当前商品的 start_time 和 end_time
|
|
2024
2024
|
// 前提:当前资源是单个预约才需要这么做
|
|
2025
2025
|
var currentResourceConfig = (_item$_productOrigin4 = item._productOrigin) === null || _item$_productOrigin4 === void 0 || (_item$_productOrigin4 = _item$_productOrigin4.product_resource) === null || _item$_productOrigin4 === void 0 || (_item$_productOrigin4 = _item$_productOrigin4.resources) === null || _item$_productOrigin4 === void 0 ? void 0 : _item$_productOrigin4.find(function (n) {
|
|
@@ -2027,10 +2027,10 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2027
2027
|
});
|
|
2028
2028
|
var resourceBookingType = (currentResourceConfig === null || currentResourceConfig === void 0 ? void 0 : currentResourceConfig.type) || 'single';
|
|
2029
2029
|
// 只有 duration 类商品需要这个操作
|
|
2030
|
-
if (index !== 0 && recordTimeSlots &&
|
|
2031
|
-
var _item$
|
|
2032
|
-
var start_at = dayjs(recordTimeSlots.end_time).add(((_item$
|
|
2033
|
-
var end_at = start_at.add(((_item$
|
|
2030
|
+
if (index !== 0 && recordTimeSlots && (currentResourceConfig === null || currentResourceConfig === void 0 ? void 0 : currentResourceConfig.type) === 'single' && (_item$_productOrigin5 = item._productOrigin) !== null && _item$_productOrigin5 !== void 0 && _item$_productOrigin5.duration && ((_item$_productOrigin6 = item._productOrigin) === null || _item$_productOrigin6 === void 0 || (_item$_productOrigin6 = _item$_productOrigin6.duration) === null || _item$_productOrigin6 === void 0 ? void 0 : _item$_productOrigin6.type) !== 'flexible') {
|
|
2031
|
+
var _item$_productOrigin7, _item$_productOrigin8;
|
|
2032
|
+
var start_at = dayjs(recordTimeSlots.end_time).add(((_item$_productOrigin7 = item._productOrigin) === null || _item$_productOrigin7 === void 0 || (_item$_productOrigin7 = _item$_productOrigin7.duration) === null || _item$_productOrigin7 === void 0 ? void 0 : _item$_productOrigin7.value) || 10, 'minutes');
|
|
2033
|
+
var end_at = start_at.add(((_item$_productOrigin8 = item._productOrigin) === null || _item$_productOrigin8 === void 0 || (_item$_productOrigin8 = _item$_productOrigin8.duration) === null || _item$_productOrigin8 === void 0 ? void 0 : _item$_productOrigin8.value) || 10, 'minutes');
|
|
2034
2034
|
recordTimeSlots = {
|
|
2035
2035
|
start_time: start_at.format('HH:mm'),
|
|
2036
2036
|
end_time: end_at.format('HH:mm'),
|
|
@@ -2078,12 +2078,12 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2078
2078
|
errorList.push(item._id);
|
|
2079
2079
|
}
|
|
2080
2080
|
} else {
|
|
2081
|
-
var _item$
|
|
2081
|
+
var _item$_productOrigin9, _productResources$fin;
|
|
2082
2082
|
// 这里必须每次循环重新读,避免前一次循环操作了购物车,导致数据变更
|
|
2083
2083
|
var allCartItems = cloneDeep(_this10.store.cart.getItems());
|
|
2084
2084
|
// 如果没有传递 timeSlots,代表是第一种资源,则直接拿商品的 duration,到资源列表里找一个公共可用的
|
|
2085
2085
|
var selectedResources = [];
|
|
2086
|
-
var _resources = cloneDeep(((_item$
|
|
2086
|
+
var _resources = cloneDeep(((_item$_productOrigin9 = item._productOrigin) === null || _item$_productOrigin9 === void 0 || (_item$_productOrigin9 = _item$_productOrigin9.product_resource) === null || _item$_productOrigin9 === void 0 ? void 0 : _item$_productOrigin9.resources) || []);
|
|
2087
2087
|
var currentResourcesRenderList = [];
|
|
2088
2088
|
_resources.forEach(function (n) {
|
|
2089
2089
|
var _n$renderList;
|
|
@@ -2198,8 +2198,8 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2198
2198
|
var maxCutOffTime = undefined;
|
|
2199
2199
|
var maxCutOffTimeValue = dayjs();
|
|
2200
2200
|
cartItems.forEach(function (item) {
|
|
2201
|
-
var _item$
|
|
2202
|
-
(_item$
|
|
2201
|
+
var _item$_productOrigin10, _item$_productOrigin11, _item$_productOrigin12, _item$_productOrigin13;
|
|
2202
|
+
(_item$_productOrigin10 = item._productOrigin) === null || _item$_productOrigin10 === void 0 || (_item$_productOrigin10 = _item$_productOrigin10.product_resource) === null || _item$_productOrigin10 === void 0 || (_item$_productOrigin10 = _item$_productOrigin10.resources) === null || _item$_productOrigin10 === void 0 || _item$_productOrigin10.forEach(function (n) {
|
|
2203
2203
|
// TODO: 少了个 status 的判断
|
|
2204
2204
|
if (n.code === resources_code) {
|
|
2205
2205
|
resources.push.apply(resources, _toConsumableArray(n.renderList || []));
|
|
@@ -2212,10 +2212,10 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2212
2212
|
if (item.resource_id) {
|
|
2213
2213
|
resourceIds.push(item.resource_id);
|
|
2214
2214
|
}
|
|
2215
|
-
resourcesTypeId = item === null || item === void 0 || (_item$
|
|
2215
|
+
resourcesTypeId = item === null || item === void 0 || (_item$_productOrigin11 = item._productOrigin) === null || _item$_productOrigin11 === void 0 || (_item$_productOrigin11 = _item$_productOrigin11.product_resource) === null || _item$_productOrigin11 === void 0 || (_item$_productOrigin11 = _item$_productOrigin11.resources) === null || _item$_productOrigin11 === void 0 || (_item$_productOrigin11 = _item$_productOrigin11.find(function (n) {
|
|
2216
2216
|
return n.code === resources_code;
|
|
2217
|
-
})) === null || _item$
|
|
2218
|
-
if ((_item$
|
|
2217
|
+
})) === null || _item$_productOrigin11 === void 0 ? void 0 : _item$_productOrigin11.id;
|
|
2218
|
+
if ((_item$_productOrigin12 = item._productOrigin) !== null && _item$_productOrigin12 !== void 0 && _item$_productOrigin12.cut_off_time && ((_item$_productOrigin13 = item._productOrigin) === null || _item$_productOrigin13 === void 0 ? void 0 : _item$_productOrigin13.cut_off_time.type) === 'advance') {
|
|
2219
2219
|
var currentCutOffTime = dayjs().add(item._productOrigin.cut_off_time.unit, item._productOrigin.cut_off_time.unit_type);
|
|
2220
2220
|
if (currentCutOffTime.isAfter(maxCutOffTimeValue, 'minute')) {
|
|
2221
2221
|
maxCutOffTimeValue = currentCutOffTime;
|
|
@@ -2243,13 +2243,13 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2243
2243
|
cartItems.forEach(function (item) {
|
|
2244
2244
|
// 单个预约累加账号 多个预约取最大值
|
|
2245
2245
|
if (isSingleResource) {
|
|
2246
|
-
var _item$_productOrigin13;
|
|
2247
|
-
accountDuration += ((_item$_productOrigin13 = item._productOrigin) === null || _item$_productOrigin13 === void 0 || (_item$_productOrigin13 = _item$_productOrigin13.duration) === null || _item$_productOrigin13 === void 0 ? void 0 : _item$_productOrigin13.value) || 10;
|
|
2248
|
-
} else {
|
|
2249
2246
|
var _item$_productOrigin14;
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2247
|
+
accountDuration += ((_item$_productOrigin14 = item._productOrigin) === null || _item$_productOrigin14 === void 0 || (_item$_productOrigin14 = _item$_productOrigin14.duration) === null || _item$_productOrigin14 === void 0 ? void 0 : _item$_productOrigin14.value) || 10;
|
|
2248
|
+
} else {
|
|
2249
|
+
var _item$_productOrigin15;
|
|
2250
|
+
if (accountDuration < (((_item$_productOrigin15 = item._productOrigin) === null || _item$_productOrigin15 === void 0 || (_item$_productOrigin15 = _item$_productOrigin15.duration) === null || _item$_productOrigin15 === void 0 ? void 0 : _item$_productOrigin15.value) || 10)) {
|
|
2251
|
+
var _item$_productOrigin16;
|
|
2252
|
+
accountDuration = ((_item$_productOrigin16 = item._productOrigin) === null || _item$_productOrigin16 === void 0 || (_item$_productOrigin16 = _item$_productOrigin16.duration) === null || _item$_productOrigin16 === void 0 ? void 0 : _item$_productOrigin16.value) || 10;
|
|
2253
2253
|
}
|
|
2254
2254
|
}
|
|
2255
2255
|
});
|
|
@@ -2286,8 +2286,8 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2286
2286
|
}
|
|
2287
2287
|
var resourcesUseableMap = {};
|
|
2288
2288
|
var hasFlexibleDuration = cartItems.some(function (item) {
|
|
2289
|
-
var _item$
|
|
2290
|
-
return ((_item$
|
|
2289
|
+
var _item$_productOrigin17;
|
|
2290
|
+
return ((_item$_productOrigin17 = item._productOrigin) === null || _item$_productOrigin17 === void 0 || (_item$_productOrigin17 = _item$_productOrigin17.duration) === null || _item$_productOrigin17 === void 0 ? void 0 : _item$_productOrigin17.type) === 'flexible';
|
|
2291
2291
|
});
|
|
2292
2292
|
var operating_day_boundary = (_this$shopStore$get = this.shopStore.get('core')) === null || _this$shopStore$get === void 0 || (_this$shopStore$get = _this$shopStore$get.core) === null || _this$shopStore$get === void 0 || (_this$shopStore$get = _this$shopStore$get.operating_day_boundary) === null || _this$shopStore$get === void 0 ? void 0 : _this$shopStore$get.time;
|
|
2293
2293
|
var timeSlots = getTimeSlicesByResources({
|
|
@@ -2338,9 +2338,9 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2338
2338
|
var _newResources$;
|
|
2339
2339
|
var newResources = cloneDeep(item._origin.resources);
|
|
2340
2340
|
newResources.forEach(function (resource) {
|
|
2341
|
-
var _item$
|
|
2341
|
+
var _item$_productOrigin18;
|
|
2342
2342
|
// 如果商品配置的是灵活时长,开始时间设置为提交的时间,结束时间从资源的可用最晚时间和店铺营业结束时间里取一个最早的
|
|
2343
|
-
if (((_item$
|
|
2343
|
+
if (((_item$_productOrigin18 = item._productOrigin) === null || _item$_productOrigin18 === void 0 || (_item$_productOrigin18 = _item$_productOrigin18.duration) === null || _item$_productOrigin18 === void 0 ? void 0 : _item$_productOrigin18.type) === 'flexible') {
|
|
2344
2344
|
var _allResources$find;
|
|
2345
2345
|
item.duration = {
|
|
2346
2346
|
type: 'minutes',
|
|
@@ -2366,9 +2366,9 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2366
2366
|
}
|
|
2367
2367
|
resource.endTime = formattedEndTime.format('YYYY-MM-DD HH:mm');
|
|
2368
2368
|
} else {
|
|
2369
|
-
var _item$
|
|
2369
|
+
var _item$_productOrigin19;
|
|
2370
2370
|
resource.startTime = currentStartTime;
|
|
2371
|
-
resource.endTime = dayjs(currentStartTime).add(((_item$
|
|
2371
|
+
resource.endTime = dayjs(currentStartTime).add(((_item$_productOrigin19 = item._productOrigin) === null || _item$_productOrigin19 === void 0 || (_item$_productOrigin19 = _item$_productOrigin19.duration) === null || _item$_productOrigin19 === void 0 ? void 0 : _item$_productOrigin19.value) || 10, 'minutes').format('YYYY-MM-DD HH:mm');
|
|
2372
2372
|
}
|
|
2373
2373
|
// delete resource.times;
|
|
2374
2374
|
});
|
|
@@ -2592,7 +2592,8 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2592
2592
|
_ref11$quantity = _ref11.quantity,
|
|
2593
2593
|
quantity = _ref11$quantity === void 0 ? 1 : _ref11$quantity;
|
|
2594
2594
|
var productData = _objectSpread(_objectSpread({}, origin), {}, {
|
|
2595
|
-
product_variant_id: product_variant_id
|
|
2595
|
+
product_variant_id: product_variant_id,
|
|
2596
|
+
rowKey: rowKey
|
|
2596
2597
|
});
|
|
2597
2598
|
if (!account) {
|
|
2598
2599
|
var activeAccount = this.getActiveAccount();
|
|
@@ -2611,7 +2612,10 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2611
2612
|
_id: targetCartItem._id,
|
|
2612
2613
|
product: _objectSpread(_objectSpread({}, targetCartItem._productOrigin), {}, {
|
|
2613
2614
|
quantity: (targetCartItem.num || 1) + quantity
|
|
2614
|
-
})
|
|
2615
|
+
}),
|
|
2616
|
+
bundle: targetCartItem._bundleOrigin,
|
|
2617
|
+
options: targetCartItem._optionsOrigin,
|
|
2618
|
+
quantity: (targetCartItem.num || 1) + quantity
|
|
2615
2619
|
});
|
|
2616
2620
|
return;
|
|
2617
2621
|
}
|
|
@@ -2949,6 +2953,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2949
2953
|
startDate,
|
|
2950
2954
|
endDate,
|
|
2951
2955
|
endDateAfterMonth,
|
|
2956
|
+
tempEndDate,
|
|
2952
2957
|
tempProducts,
|
|
2953
2958
|
schedule,
|
|
2954
2959
|
filteredSchedule,
|
|
@@ -2976,17 +2981,23 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2976
2981
|
// 优化策略:
|
|
2977
2982
|
// 在 endDate 添加完一个月以后,如果 endDate 还小于 startDate + 7 天,则还需要 endDate+7 天
|
|
2978
2983
|
endDateAfterMonth = dayjs().add(1, 'month').format('YYYY-MM-DD');
|
|
2984
|
+
tempEndDate = endDateAfterMonth;
|
|
2979
2985
|
if (dayjs(startDate).add(7, 'day').isAfter(dayjs(endDateAfterMonth), 'day')) {
|
|
2980
|
-
|
|
2986
|
+
tempEndDate = dayjs(startDate).add(7, 'day').format('YYYY-MM-DD');
|
|
2981
2987
|
} else {
|
|
2982
|
-
|
|
2988
|
+
tempEndDate = endDateAfterMonth;
|
|
2989
|
+
}
|
|
2990
|
+
// 如果这么算出来的 tempEndDate 还小于 endDate,则需要把 endDate 置为 tempEndDate
|
|
2991
|
+
if (dayjs(tempEndDate).isBefore(dayjs(endDate), 'day')) {
|
|
2992
|
+
tempEndDate = endDate || '';
|
|
2983
2993
|
}
|
|
2994
|
+
endDate = tempEndDate;
|
|
2984
2995
|
// 如果当前打开了某个的商品详情弹窗,则应该默认用这个商品
|
|
2985
2996
|
tempProducts = (_this$store$currentPr3 = this.store.currentProduct) === null || _this$store$currentPr3 === void 0 ? void 0 : _this$store$currentPr3.getData();
|
|
2986
2997
|
schedule = (_this$store$currentPr4 = this.store.currentProduct) === null || _this$store$currentPr4 === void 0 ? void 0 : _this$store$currentPr4.getOtherParams()['schedule'];
|
|
2987
2998
|
filteredSchedule = filterScheduleByDateRange(schedule, startDate || '', endDate || ''); // 1.后端返回的数据,确定资源在每一天的可用和使用情况
|
|
2988
2999
|
tempResourceIds = getResourcesIdsByProduct(tempProducts);
|
|
2989
|
-
_context32.next =
|
|
3000
|
+
_context32.next = 14;
|
|
2990
3001
|
return this.store.date.fetchResourceDates({
|
|
2991
3002
|
query: {
|
|
2992
3003
|
start_date: startDate || '',
|
|
@@ -2994,17 +3005,17 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
2994
3005
|
resource_ids: tempResourceIds
|
|
2995
3006
|
}
|
|
2996
3007
|
});
|
|
2997
|
-
case
|
|
3008
|
+
case 14:
|
|
2998
3009
|
res = _context32.sent;
|
|
2999
3010
|
// 先去读缓存结果,因为正常 UI 调用的是 7 天,而下面我会直接计算 30 天(最少也是 14 天),所以先去读缓存结果,如果缓存结果存在,则直接返回
|
|
3000
3011
|
// TODO 优化关于为什么要放在接口后,因为在获取时间切片的时候还需要读一次接口数据,其实可以直接从这个结果里拿了,需要优化
|
|
3001
3012
|
cache = (_this$store$currentPr5 = this.store.currentProduct) === null || _this$store$currentPr5 === void 0 ? void 0 : _this$store$currentPr5.getOtherParams()['timeSlotBySchedule'];
|
|
3002
3013
|
if (!cache) {
|
|
3003
|
-
_context32.next =
|
|
3014
|
+
_context32.next = 20;
|
|
3004
3015
|
break;
|
|
3005
3016
|
}
|
|
3006
3017
|
if (!(dayjs(params.startDate).isSameOrAfter(dayjs(cache.startDate), 'day') && dayjs(params.endDate).isSameOrBefore(dayjs(cache.endDate), 'day'))) {
|
|
3007
|
-
_context32.next =
|
|
3018
|
+
_context32.next = 20;
|
|
3008
3019
|
break;
|
|
3009
3020
|
}
|
|
3010
3021
|
this.store.date.setDateList(cache.dateList);
|
|
@@ -3012,7 +3023,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3012
3023
|
dateList: cache.dateList,
|
|
3013
3024
|
firstAvailableDate: cache.firstAvailableDate
|
|
3014
3025
|
});
|
|
3015
|
-
case
|
|
3026
|
+
case 20:
|
|
3016
3027
|
// 2. 商品 schedule 数据,确定日程在每一天的时间片
|
|
3017
3028
|
// 3. 把后端返回的和 schedule 的数据进行合并,确定每一天的可用和使用情况
|
|
3018
3029
|
dates = [];
|
|
@@ -3139,22 +3150,22 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3139
3150
|
}
|
|
3140
3151
|
}, _loop3);
|
|
3141
3152
|
});
|
|
3142
|
-
case
|
|
3153
|
+
case 28:
|
|
3143
3154
|
if (!(dayjs(currentDate).isBefore(dayjs(endDate), 'day') || dayjs(currentDate).isSame(dayjs(endDate), 'day'))) {
|
|
3144
|
-
_context32.next =
|
|
3155
|
+
_context32.next = 34;
|
|
3145
3156
|
break;
|
|
3146
3157
|
}
|
|
3147
|
-
return _context32.delegateYield(_loop3(), "t0",
|
|
3148
|
-
case
|
|
3158
|
+
return _context32.delegateYield(_loop3(), "t0", 30);
|
|
3159
|
+
case 30:
|
|
3149
3160
|
if (!_context32.t0) {
|
|
3150
|
-
_context32.next =
|
|
3161
|
+
_context32.next = 32;
|
|
3151
3162
|
break;
|
|
3152
3163
|
}
|
|
3153
|
-
return _context32.abrupt("break",
|
|
3154
|
-
case
|
|
3155
|
-
_context32.next =
|
|
3164
|
+
return _context32.abrupt("break", 34);
|
|
3165
|
+
case 32:
|
|
3166
|
+
_context32.next = 28;
|
|
3156
3167
|
break;
|
|
3157
|
-
case
|
|
3168
|
+
case 34:
|
|
3158
3169
|
// 最终把资源数据也加到日期内
|
|
3159
3170
|
dates = handleAvailableDateByResource(res.data, dates);
|
|
3160
3171
|
this.store.date.setDateList(dates);
|
|
@@ -3170,7 +3181,7 @@ export var BookingByStepImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
3170
3181
|
dateList: dates,
|
|
3171
3182
|
firstAvailableDate: firstAvailableDate
|
|
3172
3183
|
});
|
|
3173
|
-
case
|
|
3184
|
+
case 38:
|
|
3174
3185
|
case "end":
|
|
3175
3186
|
return _context32.stop();
|
|
3176
3187
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
var _excluded = ["wallet_pass_list"];
|
|
2
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
|
-
function
|
|
4
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
2
|
+
function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure " + obj); }
|
|
5
3
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
6
4
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
7
5
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
@@ -196,7 +194,8 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
196
194
|
_this2.loadPrepareConfig({
|
|
197
195
|
customerId: customer.id,
|
|
198
196
|
action: 'create',
|
|
199
|
-
with_good_pass: 1
|
|
197
|
+
with_good_pass: 1,
|
|
198
|
+
with_discount_card: 1
|
|
200
199
|
});
|
|
201
200
|
});
|
|
202
201
|
}
|
|
@@ -473,14 +472,14 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
473
472
|
key: "getCustomerWallet",
|
|
474
473
|
value: function () {
|
|
475
474
|
var _getCustomerWallet = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(id) {
|
|
476
|
-
var result,
|
|
475
|
+
var result, customer;
|
|
477
476
|
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
478
477
|
while (1) switch (_context7.prev = _context7.next) {
|
|
479
478
|
case 0:
|
|
480
479
|
_context7.prev = 0;
|
|
481
480
|
_context7.next = 3;
|
|
482
|
-
return this.request.get("/customer/info/
|
|
483
|
-
|
|
481
|
+
return this.request.get("/customer/info/".concat(id), {
|
|
482
|
+
with_trashed: 1
|
|
484
483
|
});
|
|
485
484
|
case 3:
|
|
486
485
|
result = _context7.sent;
|
|
@@ -488,7 +487,7 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
488
487
|
_context7.next = 9;
|
|
489
488
|
break;
|
|
490
489
|
}
|
|
491
|
-
|
|
490
|
+
customer = Object.assign({}, (_objectDestructuringEmpty(result.data), result.data));
|
|
492
491
|
this.setCustomer(customer);
|
|
493
492
|
_context7.next = 9;
|
|
494
493
|
return this.core.effects.emit(ShopDiscountHooks.onScanCustomerChange, customer);
|
|
@@ -526,7 +525,8 @@ export var ShopDiscountImpl = /*#__PURE__*/function (_BaseModule) {
|
|
|
526
525
|
return (_this$store$discount7 = this.store.discount) === null || _this$store$discount7 === void 0 ? void 0 : _this$store$discount7.loadPrepareConfig({
|
|
527
526
|
customer_id: customerId,
|
|
528
527
|
action: 'create',
|
|
529
|
-
with_good_pass: 1
|
|
528
|
+
with_good_pass: 1,
|
|
529
|
+
with_discount_card: 1
|
|
530
530
|
});
|
|
531
531
|
case 4:
|
|
532
532
|
goodPassList = _context8.sent;
|
|
@@ -17,6 +17,7 @@ export declare class DiscountModule extends BaseModule implements Module, Discou
|
|
|
17
17
|
loadPrepareConfig(params: {
|
|
18
18
|
action?: 'create';
|
|
19
19
|
with_good_pass: 0 | 1;
|
|
20
|
+
with_discount_card: 0 | 1;
|
|
20
21
|
customer_id: number;
|
|
21
22
|
}): Promise<Discount[]>;
|
|
22
23
|
batchSearch(code: string): Promise<Discount[]>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
7
|
var __export = (target, all) => {
|
|
6
8
|
for (var name in all)
|
|
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
16
|
}
|
|
15
17
|
return to;
|
|
16
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
|
+
));
|
|
17
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
28
|
|
|
19
29
|
// src/modules/Discount/index.ts
|
|
@@ -25,6 +35,7 @@ module.exports = __toCommonJS(Discount_exports);
|
|
|
25
35
|
var import_utils = require("../../solution/ShopDiscount/utils");
|
|
26
36
|
var import_BaseModule = require("../BaseModule");
|
|
27
37
|
var import_types = require("./types");
|
|
38
|
+
var import_decimal = __toESM(require("decimal.js"));
|
|
28
39
|
var DiscountModule = class extends import_BaseModule.BaseModule {
|
|
29
40
|
constructor(name, version) {
|
|
30
41
|
super(name, version);
|
|
@@ -68,21 +79,22 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
|
|
|
68
79
|
return this.store.discountList;
|
|
69
80
|
}
|
|
70
81
|
async loadPrepareConfig(params) {
|
|
71
|
-
var _a;
|
|
82
|
+
var _a, _b;
|
|
72
83
|
const prepareConfig = await this.request.post(
|
|
73
84
|
`/order/prepare/config`,
|
|
74
85
|
params
|
|
75
86
|
);
|
|
76
87
|
const goodPassList = this.filterEnabledDiscountList(
|
|
77
|
-
((_a = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _a.good_pass_list) || []
|
|
88
|
+
[...((_a = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _a.good_pass_list) || [], ...((_b = prepareConfig == null ? void 0 : prepareConfig.data) == null ? void 0 : _b.discount_card_list) || []]
|
|
78
89
|
) || [];
|
|
90
|
+
this.setDiscountList(goodPassList);
|
|
79
91
|
return goodPassList;
|
|
80
92
|
}
|
|
81
93
|
async batchSearch(code) {
|
|
82
94
|
const result = await this.request.get(`/machinecode/batch-search`, {
|
|
83
95
|
code,
|
|
84
96
|
translate_flag: 1,
|
|
85
|
-
|
|
97
|
+
tags: ["good_pass", "product_discount_card"],
|
|
86
98
|
available: 1,
|
|
87
99
|
relation_product: 1
|
|
88
100
|
});
|
|
@@ -91,7 +103,7 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
|
|
|
91
103
|
}
|
|
92
104
|
filterEnabledDiscountList(discountList) {
|
|
93
105
|
return discountList.filter(
|
|
94
|
-
(discount) => discount.limit_status === "enable" &&
|
|
106
|
+
(discount) => discount.limit_status === "enable" && new import_decimal.default((discount == null ? void 0 : discount.par_value) || 0).minus(new import_decimal.default((discount == null ? void 0 : discount.used_par_value) || 0)).greaterThan(0)
|
|
95
107
|
);
|
|
96
108
|
}
|
|
97
109
|
// 根据productIds去重
|
|
@@ -110,8 +122,8 @@ var DiscountModule = class extends import_BaseModule.BaseModule {
|
|
|
110
122
|
}
|
|
111
123
|
if (discount.appliedProductDetails) {
|
|
112
124
|
return discount.appliedProductDetails.reduce((total, product) => {
|
|
113
|
-
const price =
|
|
114
|
-
return total
|
|
125
|
+
const price = new import_decimal.default((product == null ? void 0 : product.amount) || 0);
|
|
126
|
+
return new import_decimal.default(total).plus(price).toNumber();
|
|
115
127
|
}, 0);
|
|
116
128
|
}
|
|
117
129
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
7
|
var __export = (target, all) => {
|
|
6
8
|
for (var name in all)
|
|
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
16
|
}
|
|
15
17
|
return to;
|
|
16
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
|
+
));
|
|
17
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
28
|
|
|
19
29
|
// src/modules/Rules/index.ts
|
|
@@ -26,6 +36,7 @@ var import_BaseModule = require("../BaseModule");
|
|
|
26
36
|
var import_types = require("./types");
|
|
27
37
|
var import_utils = require("../../solution/ShopDiscount/utils");
|
|
28
38
|
var import_utils2 = require("../Cart/utils");
|
|
39
|
+
var import_decimal = __toESM(require("decimal.js"));
|
|
29
40
|
var RulesModule = class extends import_BaseModule.BaseModule {
|
|
30
41
|
constructor(name, version) {
|
|
31
42
|
super(name, version);
|
|
@@ -107,19 +118,36 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
107
118
|
return !discount.isManualSelect;
|
|
108
119
|
});
|
|
109
120
|
const sortedDiscountList = [...filteredDiscountList].sort((a, b) => {
|
|
110
|
-
if (a.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return
|
|
121
|
+
if (a.tag === "good_pass" && b.tag !== "good_pass")
|
|
122
|
+
return -1;
|
|
123
|
+
if (b.tag === "good_pass" && a.tag !== "good_pass")
|
|
124
|
+
return 1;
|
|
125
|
+
if (a.tag === "good_pass" && b.tag === "good_pass") {
|
|
126
|
+
return compareByExpireTime(a, b);
|
|
127
|
+
} else if (a.tag === "product_discount_card" && b.tag === "product_discount_card") {
|
|
128
|
+
if (a.par_value !== b.par_value) {
|
|
129
|
+
const valueA = new import_decimal.default(a.par_value || 0);
|
|
130
|
+
const valueB = new import_decimal.default(b.par_value || 0);
|
|
131
|
+
return valueA.minus(valueB).toNumber();
|
|
132
|
+
}
|
|
133
|
+
return compareByExpireTime(a, b);
|
|
134
|
+
}
|
|
135
|
+
return compareByExpireTime(a, b);
|
|
136
|
+
function compareByExpireTime(itemA, itemB) {
|
|
137
|
+
if (itemA.expire_time && itemB.expire_time) {
|
|
138
|
+
const timeA = new Date(itemA.expire_time).getTime();
|
|
139
|
+
const timeB = new Date(itemB.expire_time).getTime();
|
|
140
|
+
return timeA - timeB;
|
|
141
|
+
}
|
|
142
|
+
return itemA.expire_time ? -1 : itemB.expire_time ? 1 : 0;
|
|
114
143
|
}
|
|
115
|
-
return a.expire_time ? -1 : b.expire_time ? 1 : 0;
|
|
116
144
|
});
|
|
117
145
|
const sortedProductList = [...productList].sort((a, b) => {
|
|
118
146
|
const aProduct = this.hooks.getProduct(a);
|
|
119
147
|
const bProduct = this.hooks.getProduct(b);
|
|
120
|
-
const priceA =
|
|
121
|
-
const priceB =
|
|
122
|
-
return priceB
|
|
148
|
+
const priceA = new import_decimal.default(aProduct.price || "0");
|
|
149
|
+
const priceB = new import_decimal.default(bProduct.price || "0");
|
|
150
|
+
return priceB.minus(priceA).toNumber();
|
|
123
151
|
});
|
|
124
152
|
const usedDiscounts = /* @__PURE__ */ new Map();
|
|
125
153
|
const discountApplicability = /* @__PURE__ */ new Map();
|
|
@@ -146,7 +174,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
146
174
|
discount: {
|
|
147
175
|
resource_id: discount.id,
|
|
148
176
|
title: discount.format_title,
|
|
149
|
-
original_amount: product.origin_total
|
|
177
|
+
original_amount: product.origin_total,
|
|
178
|
+
pre_value: discount.par_value
|
|
150
179
|
}
|
|
151
180
|
});
|
|
152
181
|
discountApplicableProducts.set(discount.id, applicableProducts);
|
|
@@ -220,14 +249,16 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
220
249
|
}
|
|
221
250
|
usedDiscounts.set(selectedDiscount.id, true);
|
|
222
251
|
const appliedProducts = appliedDiscountProducts.get(selectedDiscount.id) || [];
|
|
252
|
+
const targetProductPrice = selectedDiscount.tag === "good_pass" ? "0" : new import_decimal.default(selectedDiscount.par_value || 0).div(100).mul(new import_decimal.default(product.price || 0)).toFixed(2);
|
|
223
253
|
const discountDetail = {
|
|
224
|
-
amount: product.price,
|
|
225
|
-
type: selectedDiscount.tag,
|
|
254
|
+
amount: selectedDiscount.tag === "product_discount_card" ? new import_decimal.default(product.price || 0).minus(new import_decimal.default(targetProductPrice)).toNumber() : product.price,
|
|
255
|
+
type: selectedDiscount.tag === "product_discount_card" ? "discount_card" : selectedDiscount.tag,
|
|
226
256
|
discount: {
|
|
227
257
|
resource_id: selectedDiscount.id,
|
|
228
258
|
title: selectedDiscount.format_title,
|
|
229
|
-
original_amount: product.
|
|
230
|
-
product_id: selectedDiscount.product_id
|
|
259
|
+
original_amount: product.price,
|
|
260
|
+
product_id: selectedDiscount.product_id,
|
|
261
|
+
percent: selectedDiscount.par_value
|
|
231
262
|
}
|
|
232
263
|
};
|
|
233
264
|
appliedProducts.push(discountDetail);
|
|
@@ -237,7 +268,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
237
268
|
product._id,
|
|
238
269
|
this.hooks.setProduct(originProduct, {
|
|
239
270
|
discount_list: [discountDetail],
|
|
240
|
-
price:
|
|
271
|
+
price: new import_decimal.default(targetProductPrice).toNumber(),
|
|
241
272
|
origin_total: (0, import_utils2.getProductOriginTotalPrice)({
|
|
242
273
|
product: {
|
|
243
274
|
original_price: product.original_price
|
|
@@ -247,7 +278,7 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
247
278
|
}),
|
|
248
279
|
total: (0, import_utils2.getProductTotalPrice)({
|
|
249
280
|
product: {
|
|
250
|
-
price:
|
|
281
|
+
price: targetProductPrice
|
|
251
282
|
},
|
|
252
283
|
bundle: product.bundle,
|
|
253
284
|
options: product.options
|
|
@@ -259,8 +290,8 @@ var RulesModule = class extends import_BaseModule.BaseModule {
|
|
|
259
290
|
product._id,
|
|
260
291
|
this.hooks.setProduct(originProduct, {
|
|
261
292
|
discount_list: [discountDetail],
|
|
262
|
-
price:
|
|
263
|
-
total: (product.origin_total || product.total)
|
|
293
|
+
price: new import_decimal.default(targetProductPrice).toNumber(),
|
|
294
|
+
total: new import_decimal.default(product.origin_total || product.total || 0).minus(new import_decimal.default(product.price || 0)).toNumber(),
|
|
264
295
|
origin_total: product.origin_total || product.total
|
|
265
296
|
})
|
|
266
297
|
);
|
|
@@ -1295,7 +1295,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1295
1295
|
const selectForCartResources = (cartItems2) => {
|
|
1296
1296
|
let recordTimeSlots = (0, import_lodash_es.cloneDeep)(timeSlots);
|
|
1297
1297
|
cartItems2.forEach((item, index) => {
|
|
1298
|
-
var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
|
|
1298
|
+
var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
1299
1299
|
const formatCapacity = (0, import_resources.formatDefaultCapacitys)({
|
|
1300
1300
|
capacity: (_a2 = item._productOrigin) == null ? void 0 : _a2.capacity,
|
|
1301
1301
|
product_bundle: item._origin.product.product_bundle
|
|
@@ -1314,13 +1314,13 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1314
1314
|
(n) => n.code === resources_code
|
|
1315
1315
|
);
|
|
1316
1316
|
const resourceBookingType = (currentResourceConfig == null ? void 0 : currentResourceConfig.type) || "single";
|
|
1317
|
-
if (index !== 0 && recordTimeSlots &&
|
|
1317
|
+
if (index !== 0 && recordTimeSlots && (currentResourceConfig == null ? void 0 : currentResourceConfig.type) === "single" && ((_e = item._productOrigin) == null ? void 0 : _e.duration) && ((_g = (_f = item._productOrigin) == null ? void 0 : _f.duration) == null ? void 0 : _g.type) !== "flexible") {
|
|
1318
1318
|
let start_at = (0, import_dayjs.default)(recordTimeSlots.end_time).add(
|
|
1319
|
-
((
|
|
1319
|
+
((_i = (_h = item._productOrigin) == null ? void 0 : _h.duration) == null ? void 0 : _i.value) || 10,
|
|
1320
1320
|
"minutes"
|
|
1321
1321
|
);
|
|
1322
1322
|
let end_at = start_at.add(
|
|
1323
|
-
((
|
|
1323
|
+
((_k = (_j = item._productOrigin) == null ? void 0 : _j.duration) == null ? void 0 : _k.value) || 10,
|
|
1324
1324
|
"minutes"
|
|
1325
1325
|
);
|
|
1326
1326
|
recordTimeSlots = {
|
|
@@ -1374,7 +1374,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1374
1374
|
const allCartItems = (0, import_lodash_es.cloneDeep)(this.store.cart.getItems());
|
|
1375
1375
|
let selectedResources = [];
|
|
1376
1376
|
const resources2 = (0, import_lodash_es.cloneDeep)(
|
|
1377
|
-
((
|
|
1377
|
+
((_m = (_l = item._productOrigin) == null ? void 0 : _l.product_resource) == null ? void 0 : _m.resources) || []
|
|
1378
1378
|
);
|
|
1379
1379
|
const currentResourcesRenderList = [];
|
|
1380
1380
|
resources2.forEach((n) => {
|
|
@@ -1422,11 +1422,11 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1422
1422
|
return recordCount >= currentCapacity;
|
|
1423
1423
|
});
|
|
1424
1424
|
});
|
|
1425
|
-
const targetRenderList = (
|
|
1425
|
+
const targetRenderList = (_n = productResources.find(
|
|
1426
1426
|
(n) => n.code === resources_code
|
|
1427
|
-
)) == null ? void 0 :
|
|
1427
|
+
)) == null ? void 0 : _n.renderList;
|
|
1428
1428
|
if (targetRenderList && targetRenderList.length > 0) {
|
|
1429
|
-
if ((
|
|
1429
|
+
if ((_o = item._origin.resources) == null ? void 0 : _o.some(
|
|
1430
1430
|
(n) => n.form_id === targetRenderList[0].form_id
|
|
1431
1431
|
)) {
|
|
1432
1432
|
return;
|
|
@@ -1796,7 +1796,7 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1796
1796
|
account
|
|
1797
1797
|
}) {
|
|
1798
1798
|
const { bundle, options, origin, product_variant_id, rowKey, quantity = 1 } = product || {};
|
|
1799
|
-
const productData = { ...origin, product_variant_id };
|
|
1799
|
+
const productData = { ...origin, product_variant_id, rowKey };
|
|
1800
1800
|
if (!account) {
|
|
1801
1801
|
const activeAccount = this.getActiveAccount();
|
|
1802
1802
|
if (activeAccount) {
|
|
@@ -1815,7 +1815,10 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
1815
1815
|
product: {
|
|
1816
1816
|
...targetCartItem._productOrigin,
|
|
1817
1817
|
quantity: (targetCartItem.num || 1) + quantity
|
|
1818
|
-
}
|
|
1818
|
+
},
|
|
1819
|
+
bundle: targetCartItem._bundleOrigin,
|
|
1820
|
+
options: targetCartItem._optionsOrigin,
|
|
1821
|
+
quantity: (targetCartItem.num || 1) + quantity
|
|
1819
1822
|
});
|
|
1820
1823
|
return;
|
|
1821
1824
|
}
|
|
@@ -2076,11 +2079,16 @@ var BookingByStepImpl = class extends import_BaseModule.BaseModule {
|
|
|
2076
2079
|
startDate = (0, import_dayjs.default)().format("YYYY-MM-DD");
|
|
2077
2080
|
}
|
|
2078
2081
|
const endDateAfterMonth = (0, import_dayjs.default)().add(1, "month").format("YYYY-MM-DD");
|
|
2082
|
+
let tempEndDate = endDateAfterMonth;
|
|
2079
2083
|
if ((0, import_dayjs.default)(startDate).add(7, "day").isAfter((0, import_dayjs.default)(endDateAfterMonth), "day")) {
|
|
2080
|
-
|
|
2084
|
+
tempEndDate = (0, import_dayjs.default)(startDate).add(7, "day").format("YYYY-MM-DD");
|
|
2081
2085
|
} else {
|
|
2082
|
-
|
|
2086
|
+
tempEndDate = endDateAfterMonth;
|
|
2087
|
+
}
|
|
2088
|
+
if ((0, import_dayjs.default)(tempEndDate).isBefore((0, import_dayjs.default)(endDate), "day")) {
|
|
2089
|
+
tempEndDate = endDate || "";
|
|
2083
2090
|
}
|
|
2091
|
+
endDate = tempEndDate;
|
|
2084
2092
|
let tempProducts;
|
|
2085
2093
|
tempProducts = (_a = this.store.currentProduct) == null ? void 0 : _a.getData();
|
|
2086
2094
|
const schedule = (_b = this.store.currentProduct) == null ? void 0 : _b.getOtherParams()["schedule"];
|
|
@@ -118,7 +118,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
118
118
|
this.loadPrepareConfig({
|
|
119
119
|
customerId: customer.id,
|
|
120
120
|
action: "create",
|
|
121
|
-
with_good_pass: 1
|
|
121
|
+
with_good_pass: 1,
|
|
122
|
+
with_discount_card: 1
|
|
122
123
|
});
|
|
123
124
|
}
|
|
124
125
|
);
|
|
@@ -303,11 +304,11 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
303
304
|
// 获取客户钱包信息
|
|
304
305
|
async getCustomerWallet(id) {
|
|
305
306
|
try {
|
|
306
|
-
const result = await this.request.get(`/customer/info
|
|
307
|
-
|
|
307
|
+
const result = await this.request.get(`/customer/info/${id}`, {
|
|
308
|
+
with_trashed: 1
|
|
308
309
|
});
|
|
309
310
|
if (result == null ? void 0 : result.data) {
|
|
310
|
-
const {
|
|
311
|
+
const { ...customer } = result.data;
|
|
311
312
|
this.setCustomer(customer);
|
|
312
313
|
await this.core.effects.emit(
|
|
313
314
|
import_types.ShopDiscountHooks.onScanCustomerChange,
|
|
@@ -326,7 +327,8 @@ var ShopDiscountImpl = class extends import_BaseModule.BaseModule {
|
|
|
326
327
|
const goodPassList = await ((_b = this.store.discount) == null ? void 0 : _b.loadPrepareConfig({
|
|
327
328
|
customer_id: customerId,
|
|
328
329
|
action: "create",
|
|
329
|
-
with_good_pass: 1
|
|
330
|
+
with_good_pass: 1,
|
|
331
|
+
with_discount_card: 1
|
|
330
332
|
}));
|
|
331
333
|
const scanDiscount = (_c = this.getDiscountList()) == null ? void 0 : _c.filter(
|
|
332
334
|
(item) => item.isScan
|